- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux memory management i386保护模式的分段与分页 Linux分页 线性地址空间分布 用户地址空间 内核地址空间 空闲物理内存管理 内核物理内存分配接口 共享存储 Intel x86保护模式的地址映射 Intel x86的分段 Linux在i386上的分页 页目录表项和页表项 Linux的线性地址空间分配 4G线性地址空间分为用户空间和内核空间,内核空间又分为物理内存区、虚拟内存分配区、高端页面映射区、专用页面映射区和系统保留映射区 线性地址从00xBFFFFFFF的3G为用户和内核共同访问,0xC0000000以上的1G由内核独享,用户态无法访问 因此所有进程的页目录的后四分之一均指向内核页目录的相应目录项。为减小同步的开销,内核只在处理page_fault时同步用户进程的页目录项,因此页目录项不一致的情况是有的 Linux的线性地址空间分配 Linux的线性地址空间分布 Linux的用户地址空间分布 利用/proc查看进程的用户地址空间 文件映射举例 #include unistd.h #include sys/mman.h #include sys/types.h #include sys/stat.h #include fcntl.h /* mmap.c - a program that uses mmap to copy itself to stdout */ int main() { struct stat stat; int i, fd, size; char *bufp; /* open the file get its size*/ fd = open(./mmap.c, O_RDONLY); fstat(fd, stat); size = stat.st_size; /* map the file to a new VM area */ bufp = mmap(0, size, PROT_READ, MAP_PRIVATE, fd, 0); /* write the VM area to stdout */ write(1, bufp, size); } 用户地址空间管理-虚存段VMA Linux的用户地址空间分布 进程描述符中的struct mm_struct *mm用来管理已分配给该进程的线性地址空间 每一个连续的线性地址区间由一个vm_area_struct管理,简称vma mm中的vma按地址排序由线性链表连接起来,当vma的数量相当大的时候启用avl树,与线性链表同时管理vma以提高访问效率 随着vma的动态改变,vma之间存在归并和拆分等操作 分配vma并不立即分配页帧 Linux的内核地址空间分布 物理映射区最大为896M,如果实际物理内存不足896M,则该区与实际物理内存大小相等 两个隔离区的作用是防止越界造成的致命损害 Linux的物理内存映射 一般情况下,对物理内存的访问可通过预映射机制方便的实现,Linux保留了128M的虚拟内存映射区,因此最多可以有1G-128M=896M的物理内存直接映射到0xC0000000开始的一段内核空间中 当物理内存大于896M时,超过物理区的那部分内存称为高端内存,内核在存取高端内存时必须将它们映射到高端页面映射区,长度为4M的高端内存映射区正好占用1帧页表所表示的物理内存总量,它可以缓冲1024个高端页面的映射 初始化后的物理内存分布 物理页管理(mem_map表) 空闲物理页管理 bitmap表 在物理内存低端,紧跟mem_map表的bitmap表以位示图方式记录了所有物理内存的空闲状况。与mem_map一样,bitmap在系统初始化时由free_area_init()函数创建(mm/page_alloc.c)。 与一般性位图不同,bitmap表分割成NR_MEM_LISTS组。 buddy算法 将空闲内存管理为一对对的伙伴;(2^k)页面大小 伙伴算法与空闲物理页位图 内存分配的三种内核接口 __get_free_pages:从buddy system中申请大小为2^k个page的连续的物理页帧,分配内核空间的物理映射区中的一段连续的线性地址 kmalloc(kfree):从slab cache中申请连续的物理内存,通常用于专用对象 vmalloc(vfree):申请线性地址连续的内存空间,分配内核空间的虚拟内存映射区中的一段连续的线性地址,而实际对应的物理地址可以是不连续的,为检测越界,vmalloc的区域之间是有空洞的,且为保证效率,页面不会被swap out 共享存储 * * 段选择子16bits 段内偏移32bits
您可能关注的文档
- PCB入门 印制电路板的设计.ppt
- QuickPass系统排队问题(谢瑶).ppt
- 第三篇 生物及中药、化学药品的命名 第十一课.ppt
- 促进“有效教学”的思考与实践 关注教师教学行为 提升课堂教学效果.ppt
- 建筑设备 第三章 供暖工程2.ppt
- 化学与哲学 1~4节.ppt
- 国民收入核算与国际收支 Chapter 13 National Income Accounting and the Balance of Payments.ppt
- 教师专业标准解读(饶从满).ppt
- 新闻标题制作(中国人民大学新闻学院 高贵武).ppt
- 养殖场环境控制与动物疾病(吉林农业大学).ppt
- 2025年外科手术机器人行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年医用球囊导管行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年旅游帐篷行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年HI-FI攻放行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年商品有机肥行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年散热器恒温控制阀行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年纯天然护肤品行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年铜铝复合散热器行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年社群商业行业洞察报告及未来五至十年发展趋势预测报告.docx
- 2025年MTV合成机行业洞察报告及未来五至十年发展趋势预测报告.docx
文档评论(0)