- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LINUX操作系统的存储管理 1.Linux的虚拟存储空间 Linux的虚拟存储空间大小 多级页表的地址转换 2.管理虚拟存储空间的结构 管理分区虚拟区间的数据结构VMA 管理VMA的数据结构 mm_struct 3.管理内存空间的数据结构 4.内存区的分配和页面淘汰策略 1 Linux的虚拟存储空间 1.1 Linux的虚拟存储空间 虚拟存储空间大小:由系统提供的地址结构决定。 在Linux中,虚拟地址用32个二进制位表示,则系统可为每进程提供的虚存空间,最多高达232=4GB. Linux内核把此4GB空间划分为两个部分:系统空间和用户空间 虚拟地址的空间结构,如图所示 进程A的用户空间(3GB) 进程A的用户空间(3GB) 进程A的用户空间(3GB) ……. 4GB的虚拟空间 共享的系统空间的 任何一个进程都有自己的正文段、数据段、堆栈段等。 Linux就按照这种用户认可的逻辑单位,把虚拟空间划分为若干个分区,然后进行分页。 特点: 1,进程每一个分区段位于一个连续虚拟空间里,这里出现的内容,其特性相同,故位于一个分区里所有的页面,都具有相同的访问权限,所以有利于对它们分别实行存储保护和共享。 2,虚拟空间在各个分区之间可以不连续,即进程所用的虚拟地址并不一定是连城一片的,可以有空洞存在。 1.2 多级页表的地址转换 要进行多级页表转换的原因: 由于Linux的虚拟地址是32位,因此向用户提供的最大虚拟空间可以达到4GB。又由于其内存块的长度是4KB,因此一个虚拟地址空间,最多可以有220 个页面。那么一个用户虚拟地址空间的页表,最多要用一百万个表项来记录页面与物理块的对应关系。显然,把这么大的一个页表放在连续内存区里的做法,是不可取的,不利于存储空间利用。 Linux操作系统的解决方法: Linux在对虚拟地址空间进行分页时,采用两级页表的机制:先是对虚拟地址空间进行分页,形成页表;再对页表进行分页,形成分页,形成页表的页表。这样一来,不仅虚拟地址空间里的页,可以存放在内存的不连续块中;页表中的页,也能够存放在不连续的内存块里,从而提高了内存的利用率,也就是多级页表结构,即“页表索引”。 例: 在分页式存储管理时,按照内存块的长度是4KB,那么一个32位的虚拟地址里,原先要用20位表示页号p,用12位表示页内的位移量d。Linux采用的二级分页式存储管理时,页内的位移量d仍旧占用12位,把20位的页号p,细分为10位的“页表索引号”p1和10位的“页号”p2,如图所示: 页表索引号 页号 位移量 P1 d P2 10位 10位 12位 这意味着32位的虚拟地址空间,最多可以划分为1M个页面,它的页表就有1M个表项。 如果每个表项占用4GB,那么这个页表就占用4MB大小的存储空间,可以被划分为1024个页面,为这1024个页面建立一个索引,从而形成了有1024个表现的页表索引。如图所示: 用户虚拟 地址空间 页表 页表索引 ... 1个 页面 1个 页面 1M个页面 1个 页面 1个 页面 1M个表项 (1024个页面) ... 1024个表项 在知道一个虚拟地址后,就可以根据地址的前10位,先去查页表索引,以便得到该索引所对应的内存块的起始地址,最后,与位移量d相加后,就得到最终所需要的物理地址。整个地址转换的过程,如下图所示 P1 P2 d .... 索引项 .... 表项 .... .... p1 d p2 1块 1页 1块 1页 页表索引 页表 内存 物理 地址 当虚拟地址用64位表示时,虚拟地址空间的页面更多,用二级索引后的页表仍然很大。因此,Linux还可以提供三级页表式的分页式结构。这时的做法实际与二级页表做法一样,只是再增加了一级:第1级为页表索引,第2级为页表中间索引,第3级才是页表。毋庸置疑,三级页表式的分页式结构,其地址变换将更为复杂,速度会降低。 2 管理虚拟存储空间的数据结构 Linux进程的各个分区可以是不连续的,因此形成了若干个离散的虚拟区间。为了对它们加以管理,定义了vm_area_struct型及mm_struct型数据结构。 vm_area_stuct:用于管理进程的每一个虚拟空间。 mm_struct用于管理进程的整个虚拟空间、页表索引和页表。 task_stuct mm_struct vm_area_struct vm_area_struct ... mmm ... map_count *pgd *m
您可能关注的文档
最近下载
- 疾病康复学课程标准(2020整理).pdf VIP
- 好书推荐《我胆小如鼠》导读阅读分享读后感PPT课件.pptx VIP
- 骨外科三基题库.pdf VIP
- 2023_昆仑技创_用户手册_TPC1071Ni_V1.1_0705.pdf VIP
- 造价人生:专访某建设单位造价人员赵工(真实).pdf VIP
- 大学生职业生涯发展展示.pptx VIP
- wiscontrol变频器说明书 .pdf VIP
- 500强企业绩效考核指标汇总(非常实用的)(精品).doc VIP
- 中图版(新教材2019版)高中地理 选择性必修1地理知识点总结.pdf VIP
- 《大学生职业生涯规划与就业指导》 项目七 不忘初心,怀梦笃行.pptx
原创力文档


文档评论(0)