王琪-Linux下的虚拟内存管理.docVIP

  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文档。上传文档
查看更多
王琪-Linux下的虚拟内存管理

Linux下的虚拟内存管理 王琪 成都信息工程学院计算机学院,成都,中国,610200 444687196@ 摘要:一般来说,计算机内存容量是有限制的,但是某些比较大的进程在运行的时候所需要的内存空间可能超过内存的总量,这可能会导致这种情况:运行的某个进程,物理内存容纳不下该进程的全部代码,数据和堆栈,只能容纳一部分。于是,产生了虚拟存储器技术。 Abstract: Generally, a computer memory capacity is limited., but some relatively large processes is running with the memory required which may exceed the total amount of memory. This may result in this case: For running process, the process of physical memory can’t fit all the code, data and stack. It can fit only a fraction. Thus virtual memory technology generates. 关 键 字:linux;虚拟内存;进程;虚拟内存技术 虚拟存储器的思想 一个进程的代码,数据,对象的总量可能会超过所使用的物理内存的容量,操作系统负责把现在使用的那部分资源保存在内存中,而把其他部分保存在磁盘上,当需要用到不在内存中的某一部分的时候,由操作系统把那部分调入内存,同时把已经在内存中的但是暂时用不到的部分调出。这些操作对于用户来说都是透明的。 Linux支持的虚拟内存(virtual memory) 虚拟内存是指使用磁盘当做RAM的扩展,这样可用的内存的大小就增大了。内核会将暂时不用的内存块的内容孝道硬盘上去,这样内存就可以腾出空间了。这些操作对于用户来说是完全透明的。当然,读写硬盘的速度比读取内存的速度慢的多,所以程序部会想直接在内存中运行那么快,但是用户一般不会感觉出来。用作虚拟内存的硬盘部分被陈为交换空间。 地址映射 进程的线性地址分为四部分:页面目录索引(PGD)、页面中间目录索引(PMD)、页面表索引(PT)和偏移量。线性地址到物理地址的映射采用的是三级转换方式。(l)从CR3寄存器中找到页目录的基址。(2)以线性地址的最高位段作为下标,在PGD中找到确定中间目录的表项的指针。(3)以线性地址的次位段作为下标,在PMD中找到确定页面表的表项的指针。(4)在线性地址的接下来位段为下标,在PTE中找到页的指针。(5)在线性地址最后的位段,为在此页中偏移量。这样,最终完成了线性地址到物理地址的转换。但是,就1386微处理器来说,CPU实际上不是按三层而是按两层的模型来进行地址映射,这就需要将虚拟的三层映射落实到具体的两层映射,跳过中间的PMD层次。 进程的内存组织 4.1线性区描述符(VMA) 内核使用一个或者多个VMA来跟踪进程使用的内存区间。每个VMA代表进程地址空间的一块单独连续的区间。但是进程的两个VMA可以不连续,区间的划分并不仅取决于地址的连续性,也取决于对虚拟页面的访问权,如果一个地址范围内的前半段和后半页有不同的访问权或者其他属性,就要分成两个区间。进程所用的VMA以链表的形式存储,但是VMA数目较大的话,会创建以个AVL树来存储他们,因为AVL树中的有哪些信誉好的足球投注网站速度很更快。 4.2内出描述符(mm_struct) 内存描述符管理一个进程的所有的VMA。每一个进程包含一个mm成员。Mm成员可以用来判断两个任务是否在同一线程组中。因为两个具有相同mm成员的任务管理者同一块全局内存区域。mm_struct结构体的mmap成员指向VMA链表。若进程的VMA以AVL树的形式存储,则mmap_avl成员指向树的根节点,加快查找速度。 4.3 vm_operations_struct 一个VMA可能代表一个普通的内存空间,也可能是对应于一个文件,共享内存、交换设备等特别的对象而建立的一块内存区域。对象类型vm_operations_struct抽象了各种可能提供给被映射对象的操作,比如打开、关闭之类。一旦VMA映射为一个对象,那未它的vm_ops成员就会使一个非空指针,指向仪个表示被映射对象所提供操作的vm_operations_struct结构体。 页面交换 5.1 页面换出 Linux使用最近最少使用(LRU)算法来选择要抛弃的页面。交换后台进程(kswapd)依次检查系统中的每个进程以确定谁最合适交换出去。从内存中换出的页存放在交换区中。每个交换区都由一个页插槽序列组成,也就是说,使用4096字节大小的块来包

文档评论(0)

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

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

1亿VIP精品文档

相关文档