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内存管理 福州大学 刘延华 本文介绍内存管理方面的内容,如虚拟内存的抽象模型和共享、按需调入页面、页面交换等。 1.1 内存管理的作用 2 1.2 虚拟内存的抽象模型 3 1.3 按需装入页面 4 1.4 交换 6 1.5 共享虚拟内存 6 1.6 存取控制 6 1.7 高速缓存 7 1.7.1 缓冲区高速缓存 7 1.7.2 页面高速缓存 7 1.7.3 交换高速缓存 7 1.7.4 硬件高速缓存 7 1.8 系统页面表 8 1.9 页面的分配和释放 9 1.9.1 页面的分配 10 1.9.2 页面的释放 10 1.10 内存映射 11 1.11 请求调页 12 1.12 页面高速缓存 12 1.13 内核交换守护进程 13 1.1 内存管理的作用 内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。 虚拟内存可以提供以下的功能: 广阔的地址空间 系统的虚拟内存可以比系统的实际内存大很多倍。 进程的保护 系统中的每一个进程都有自己的虚拟地址空间。这些虚拟地址空间是完全分开的,这样一个进程的运行不会影响其他进程。并且,硬件上的虚拟内存机制是被保护的,内存不能被写入,这样可以防止迷失的应用程序覆盖代码的数据。 内存映射 内存映射用来把文件映射到进程的地址空间。在内存映射中,文件的内容直接连接到进程的虚拟地址空间。 公平的物理内存分配。 内存管理系统允许系统中每一个运行的进程都可以公平地得到系统的物理内存。 共享虚拟内存。 虽然虚拟内存允许进程拥有自己单独的虚拟地址空间,但有时可能会希望进程共享内存。 1.2 虚拟内存的抽象模型 在讨论Linux系统虚拟内存的实现方法之前,让我们先看看虚拟内存的抽象模型。 当处理器执行一个程序时,它从内存中读取指令并解码执行。当执行这条指令时,处理器将还会需要在内存的某一个位置读取或存储数据。在一个虚拟内存系统中,所有程序涉及到的内存地址均为虚拟内存地址而不是机器的物理地址。处理器根据操作系统保存的一些信息将虚拟内存地址转换为物理地址。 为了让这种转换更为容易进行,虚拟内存和物理内存都分为大小固定的块,叫做页面。每一个页面有一个唯一的页面号,叫做 PFN(page frame number)。 在这种分页方式下,一个虚拟内存地址由两部分组成:一部分是位移地址,另一部分是 P F N。每当处理器遇到一个虚拟内存地址时,它都将会分离出位移地址和 P F N地址。然后再将 P F N地址翻译成物理地址,以便正确地读取其中的位移地址。处理器利用页面表来完成上述的工作。 图1- 1是两个进程,进程 X和进程 Y的虚拟内存示意图。两个进程分别有自己的页面表。这些页面表用来将进程的虚拟内存页映射到物理内存页中。 可以看出进程X的虚拟内存页0映射到了物理内存页1,进程Y的虚拟内存页1映射到了物理内存页4。 图1-1 虚拟内存示意图 页面表的每个入口一般都包括以下的内容: ?有效标志。此标志用于表明页面表入口是否可以使用。 ?物理页面号。页面表入口描述的物理页面号。 ?存取控制信息。用来描述页面如何使用,例如,是否可写,是否包括可执行代码等。处理器读取页面表时,使用虚拟内存页号作为页面表的位移,例如,虚拟内存页5是页面表的第6个元素。 在将虚拟内存地址转换成物理内存地址时,处理器首先将虚拟内存地址分解为PFN和位移值。例如,在上图中,一个页面的大小是 0x2000 字节 (十进制的8 1 9 2 ),那么进程Y的一个虚拟内存地址0 x 2 1 9 4将被分解成虚拟内存页号PFN为1和位移0 x 1 9 4。 然后处理器使用PFN作为进程页面表的位移值来查找页面表的入口。如果该入口是有效入口,处理器则从中取出物理内存的页面号。如果入口是无效入口,处理器则产生一个页面错误给操作系统,并将控制权交给操作系统。 假定此处是一个有效入口,则处理器取出物理页面号,并乘以物理页面的大小以便得到此物理页面在内存中的地址,最后加上位移值。再看上面的例子:进程Y的P F N为1,映射到物理内存页号为4,则此页从0×8000 (4×0×2000)开始,再加上位移0×194,得到最终的物理地址为0×8194。 1.3 按需装入页面 由于物理内存要比虚拟内存小很多,所以操作系统一定要十分有效地利用系统的物理内存。一种节约物理内存的方法是只将执行程序时正在使用到的虚拟内存页面装入到系统的物理页面中。 当一个进程试图存取一个不在物理内存中的虚拟内存页面时,处理器将会产生一个页面错误给操作系统。如果发生页面错误的虚拟内存地址为无效的地址,说明处理器正在存取一

文档评论(0)

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

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

1亿VIP精品文档

相关文档