- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3讲 Linux内存管理 学习内容 Linux的分页管理机制 内存的共享和保护 内存空间管理 页交换进程与页面换出 1、Linux的分页管理机制 Linux存储管理采用分页式存储管理方法,支持三层管理策略。 由于Inter CPU在硬件提供了段式存储管理和二层页式存储管理功能,Linux操作系统作为一种软件,必须与之兼容。Linux根据 CPU的要求,最低限度的设置与段相关的结构和初始化程序,将第二层上的页式管理与第一层上的页式管理合并,因此真正发挥作用的是以页目录和页表为中心的数据结构和函数。 线性虚拟空间 在Linux中,每个用户进程都可以访问4GB的线性虚拟内存空间。其中,0~3GB的虚拟地址空间是用户空间,用户进程可以直接对其访问;3GB~4GB的虚拟内存空间地址为内核态空间或系统空间,存放仅供内核态进程访问的代码和数据,用户不可直接访问。 所有进程从3GB到4GB的虚拟空间是一样的,有相同的页目录项和页表,对应同样的物理内存段。Linux以此方式让内核进程共享代码和数据段。 内核态虚拟空间从3GB到3GB+4MB的一段被映射到物理空间0~4MB。 线性虚拟空间 Linux对线性虚拟内存空间的的采用“按需调页”的方式进行管理,也即将整个线性空间通过分页的方式映射到物理内存空间。 标准Linux的虚存页表应为三级页表,依次为页目录(PGD,Page Dierectory),中间页目录(PMD,Page Middle Directory)和页表(PTE,PageTable),在Inter微机上,Linux的页表结构采用两级页索引,页目录PGD和页中间PMD目录合二为一,也即为页目录PGD和页表PTE。 线性空间的划分 对线性虚拟空间的划分是这样的,每页大小为4KB,因此整个4GB的线性空间可以分为1024*1024个页(page);物理空间的基本单位为页面(Page frame),线性空间的页和物理空间的页面之间存在对应关系,这种关系用页表(Page Table)来描述;每个页在页表中占一项,每一项为4字节,要描述整个线性空间,页表要4MB。把所有页表也划分为4KB为单位的页,共有1K个这样的页,这些页的地址采用页目录来记录,页目录的每一项描述存放页表的一个页与实际页面的对应关系,每一项也占用4字节。这样,描述整个线性地址空间需要的页目录占用一页。 线性虚拟地址 线性虚拟地址由三个部分组成,分别为页目录索引、页表索引和页内偏移地址。 第一部分页目录索引描述要访问地址在页目录表中的位置,通过这个索引,就可以得到一个记录页表的内存单元;第二部分页表索引描述待访问地址在页表中的位置,通过查找页表,就得到待访问地址所在的页面;第三个部分页内偏移地址,描述待访问地址相对于页面基地址的偏移量。根据这三部分资料,就可以访问到内存中相应的内容。 Linux在I386平台的地址变换 用户进程中与内存管理有关的数据结构mm_struct struct mm_struct{ int count; pgd_t *pgd: //进程页目录的起始地址 unsigned long context; unsigned long start_code,ene_code,start_data,end_data; //进程代码段、数据段的起始地址和结束地址 unsigned long start_brk,brk,start_stack,start_mmap; unsigned long arg_start.srg_end.env_start..,env_end; //进程环境区的起始地址和结束地址 unsigned long rss, total_vm, locked_vm; //rss进程内容驻留在物理内存的页面总数 unsigned long def_flags; struct vm_area_struct *mmap; //指向vma段双向链表的指针 struct vm_area_struct *mmap_avl; //指向vma段AVL树的指针 struct semaphore mmap_sem; //对mmap操作的互斥信号量,由down()和up()更改 } vma虚存段的组织和管理 用户共有4GB的虚存空间,但并不是4GB空间都可以让用户进程读写或申请使用。用户进程实际可以申请的虚存空间为0~3GB。 在用户进程创建时,已由系统调用fork()的执行函数do_fork()将内核的代码段和数据段映射到3GB以后的虚拟空间,
您可能关注的文档
最近下载
- 第五章热模锻压力机.ppt VIP
- 拼搏初三,决胜中考 开学第一课主题班会课件.pptx VIP
- 20190821合法合规催收承诺书.docx VIP
- 抗日战争胜利80周年阅兵.pptx VIP
- (正式版)D-L∕ T 620-1997 交流电气装置的过电压保护和绝缘配合.docx VIP
- 《显示技术原理》课件:液晶基础知识详解.ppt VIP
- 汉字练习字帖(可编辑打印).docx VIP
- 心衰患者的容量管理.pptx VIP
- 2025湖北潜江市面向退役军人专项招聘教师2人笔试参考题库附答案解析.docx VIP
- 2025广西现代物流集团第三次公开招聘109人笔试备考题库及答案解析.docx VIP
文档评论(0)