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存储器管理分析 摘要: 本文首先从介绍linux开始,以存储器管理下的内存管理为主要线索详细分析了linux下存储器管理系统的设计原理。内存管理是存储器管理的重点,因此本文重点分析的内存管理主要包括虚拟内存、磁盘缓存的相关结构体系及其存储方式,地址映射以及空间分布等等。最后介绍在此基础上介绍一些相关命令的语义及其用法等。 关键词: Linux操作系统、虚拟内存、磁盘缓存、页表管理、物理内存、内存映射Linux存储管理的主要功能包括如下三方面: 虚拟存储器功能:为每个进程提供4GB的虚拟内存空间 存储保护:各个进程的虚拟存储空间彼此独立、相互隔离 存储共享:进程之间可以共享存储器内存(Main Memory或Primary Memory或Real Memory)也称主存是指CPU能直接存取指令和数据的存储器。 磁盘、 磁鼓和磁带等存储器, 一般称为外存或辅存(Secondary Storage)。 内存是现代计算机系统进行操作的中心, CPU和I/O系统都要和内存打交道,Linux内核采用虚拟页式存储管理,采用三次映射机制实现从线性地址到物理地址的映射。其中PGD为页面目录,PMD为中间目录,PT为页面表。 32位的微机平台如Intel的X86采用段页式的两层映射机制,而64位的微处理器采用三级分页。对于传统的32位平台,Linux采用让PMD(中间目录)全0来消除中间目录域,这样就把Linux逻辑上的三层映射模型落实到X86结构物理上的二层映射,从而保证了Linux对多种硬件平台的支持。 Linux的虚拟内存管理需要各种机制的支持,首先内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时如果发现程序中要用的虚拟地址没有对应的物理地址,就发出请页要求:如果有空闲的内存可供分配,就请求分配内存,并把正在使用的物理页记录在页缓存中,如果没有足够的内存分配,就调用交换机制,腾出一部分内存。另外在地址映射中要通过TLB(后援存储器)来寻找物理页,交换机制中要用到交换缓存,并且把物理页内容交换到交换文件中也要修改页表来映射文件地址。 ?? Linux在管理进程虚存空间时定义了虚存段(vma)。虚存段是进程一段持续的虚存空间,在这段虚存里,所有单元拥有相同的特征。这样分割是因为每个虚拟内存区域可能来源不同,因此,Linux把虚存分割管理。 Linux采用页式存储管理机制,每个页面的大小随处理机芯片而异。例如Intel 386处理机页面大小可为4KB和2MB两种,而Alpha处理机页面大小可为8KB、16KB、32KB和64KB。页面大小的选择对地址变换算法和页表结构会有一定的影响,如Alpha的虚地址和物理地址的有效长度随页面尺寸的变化而变化,这种变化必将在地址变换和页表项中有所反映。在Linux中,每一个进程都有一个比实际物理空间大得多的进程虚拟空间,为了建立虚拟空间和物理空间之间的映射,每个进程还保留一张页表,用于将本进程空间中的虚地址变换成物理地址。页表还对物理页的访问权限作出了规定,定义了哪些页可读写,哪些页是只读页,在进行虚实变换时,Linux将根据页表中规定的访问权限来判定进程对物理地址的访问是否合法,从而达到存储保护的目的。Linux的存储管理使用了三层页表来处理逻辑地址到物理地址的转换,分别是PGD(页表目录)、PMD(中间页表目录)和PT(页表) Linux将存储管理分为物理内存管理、内核内存管理、虚拟内存管理、内核虚拟内存管理和用户级内存管理。Linux是为多用户多任务设计的操作系统, 所以存储资源要被多个进程有效共享且由于程序规模的不断膨胀,要求的内存空间比从前大得多 Linux内存管理的设计充分利用了计算机系统所提供的虚拟存储技术,真正实现了虚拟存储器管理。Linux的内存管理主要体现在对虚拟内存的管理我们可以把Linux虚拟内存管理功能概括为以下几点:大地址空间进程保护内存映射公平的物理内存分配共享虚拟内存Linux虚拟内存的实现结我们从整体结构上看一下Linux对虚拟内存的实现结构,如图所示。 图 Linux虚存的实现结构 从图中可看到实现虚拟内存的组成模块其实现的原代码大部分放在/mm目录下。 1). 内存映射模块(mmap)—负责把磁盘文件的逻辑地址映射到虚拟地址,以及把虚拟地址映射到物理地址。 2).交换模块(swap)—负责控制内存内容的换入和换出,它通过交换机制,使得在物理内存的页面(RAM页)中保留有效的页 ,即从主存中淘汰最近没被访问的页,保存近来访问过的页。 3).核心内存管理模块(core)—负责核心内存管理功能,即对页的分配、回收、释放及请页处理等,这些功能将被别的内核子系统(如文件系统)使用。 4). 结构特定的模块—负责给各种硬件平

文档评论(0)

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

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

1亿VIP精品文档

相关文档