南通中学届高二地理选修班导学案 ...pptVIP

南通中学届高二地理选修班导学案 ...ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
南通中学届高二地理选修班导学案 ..

嵌入式操作系统 陈香兰 Fall 2009 内存管理 内存管理 二级页表 动态存储器 Slab算法 非连续存储区 内存管理 RAM的某些部分永久地分配给内核,用以存放内核代码以及静态数据 RAM的其余部分称为动态存储器(dynamic memory) Arm存储系统之粗粒度的2级页表 第一级页表: 每一项描述1MB空间的映射关系 每个条目4B 页表大小:16KB 第二级页表: 页框大小4KB 每个条目大小4B 页表大小:1KB Linux中 虚拟地址空间: KERNEL_RAM_VADDR: 3GB以上+TEXT_OFFSET(大多为0x8000) swapper_pg_dir KERNEL_RAM_VADDR-0x4000,大小为16KB Head.S中:__create_page_tables __create_page_tables 动态存储器 进程和内核都需要动态存储器 属于稀缺资源 整个系统的性能取决于如何有效地管理动态存储器 对于动态存储器要尽可能做到: 按需分配,不需要时释放 主要内容 内核如何给自己分配动态存储器 页框管理 小内存管理 非连续存储区管理 页框管理 Linux采用页作为内存管理的基本单位 Linux采用的标准的页框大小为4KB 4KB是大多数磁盘块大小的倍数 传输效率高 管理方便 例如:512M的物理内存对应于128K个页框 算法:伙伴算法 请求页框 内核实现了一种底层的内存分配机制,并提供了几个接口供其他内核函数调用。 分配: alloc_pages/alloc_page __get_free_pages/__get_free_page/__get_dma_pages/get_zeroed_page 释放 free_pages/__free_pages/free_page__free_page 页框数据结构 内核必须记录每个页框当前的状态 哪些属于进程,哪些存放了内核代码/数据 是否空闲,即是否可用 如果不可用,内核需要知道是谁在用这个页框 这个页框可能的使用者有用户态进程、动态分配的内核数据结构、静态的内核代码、页面cache、设备驱动程序缓冲的数据等等 页描述符 页描述符:struct page 每个物理页框都用一个页描述符表示 count:页的使用引用计数器 0:空闲 0:页已经分配给一个或多个进程或用户某些内核数据结构 flags:页框状态,最多可以有32个,每个使用一个位表示 参见枚举类型pageflags 当内核调用一个页框分配函数时,必须指明请求页框所在的区。这个一般是通过一些flag标志来指定的 关于NUMA 不考虑 物理内存被划分为若干个node 存取时间不等 考虑CPU局部性 Node使用数据结构pg_data_t描述 每个node被划分成若干个zone 存储区(Memory Zones) 在一个理想的体系结构中,一个页框就是一个物理存储单元,可以用于任何事情,例如 存放内核数据/用户数据/缓存磁盘数据等 实际上存在硬件制约:一些页框由于自身的物理地址的原因不能被一些任务所使用,例如 ISA总线的DMA控制器只能对ram的前16M寻址 在一些具有大容量ram的32位计算机中,CPU不能直接访问所有的物理存储器,因为线性地址空间不够 zone 为了应付这种限制,Linux把具有同样性质的物理内存划分成——区(zones) Linux把物理存储器划分为4个区 ZONE_DMA ZONE_DMA32 (未见用) ZONE_NORMAL ZONE_HIGHMEM 参见枚举类型zone_type ZONE_DMA 和ZONE_NORMAL区 包含存储器的“常规”页,通过把它们映射到线性地址空间的3GB以上,内核就可直接访问 而ZONE_HIGHMEN区 中包含的存储器页面不能由内核直接访问 每个zone使用struct zone表示 关键:free_area mem_map数组 mem_map的定义和初始化 start_kernel?setup_arch?paging_init?bootmem_init ?bootmem_init_node?free_area_init_node ?alloc_node_mem_map 页描述符将会占用很大的一段空间 Mem_map、node、zone之间的关系 请求页框 内核实现了一种底层的内存分配机制,并提供了几个接口供其他内核函数调用。 分配: alloc_pages/alloc_page/alloc_pages_node/alloc_pages_current/… __get_free_pages/__get_free_page/__get_dma_pages/get_zeroed_page 释放 free_p

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档