Linux 操作系统chap8.pptVIP

  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存储管理/设备管理 地址空间 地址空间(address space)是一段表示内存位置的地址范围。地址空间有两种: 物理地址空间 逻辑地址空间,也被称为虚拟地址空间 在逻辑地址和物理地址之间相互转换的工作是由内核和硬件内存管理单元(MMU—memory management unit)共同完成的。MMU是被集成进现代的CPU里的,它们都是同一块CPU芯片内的一个部分。内核告诉MMU如何为每个进程把某逻辑页面映射到某特定物理页面,而MMU在进程提出内存请求时完成实际的转换工作。 Linux操作系统采用请求式分页虚拟存储管理方法。 系统为每个进程提供了4GB的虚拟内存空间。各个进程的虚拟内存彼此独立。 虚拟内存的抽象模型 内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。 虚拟内存可以提供以下的功能: ? 广阔的地址空间。 ? 进程的保护。 ? 内存映射。 ? 公平的物理内存分配。 ? 共享虚拟内存(动态库、IPC )。 进程虚存空间的管理 进程运行时能访问的存储空间只是它的虚拟内存空间。对当前该进程而言只有属于它的虚拟内存是可见的。 在进程的虚拟内存包含着进程本身的程序代码和数据。 进程在运行中还必须得到操作系统的支持。进程的虚拟内存中还包含着操作系统内核。 Linux把进程的虚拟内存分成两部分,内核区和用户区。 操作系统内核的代码和数据等被映射到内核区。 进程的可执行映像(代码和数据)映射到虚拟内存的用户区。 进程虚拟内存的内核区的访问权限设置为0级,用户区为3级。 内核访问虚存的权限为0级,而进程的访问权限为3级 Linux的存储管理主要是管理进程虚拟内存的用户区。 进程虚拟内存的用户区分成代码段、数据段、堆栈以及进程运行的环境变量、参数传递区域等 虚拟内存的抽象模型 当处理器执行一个程序时,它从内存中读取指令并解码执行。当执行这条指令时,处理器将还会需要在内存的某一个位置读取或存储数据。在一个虚拟内存系统中,所有程序涉及到的内存地址均为虚拟内存地址而不是机器的物理地址。处理器根据操作系统保存的一些信息将虚拟内存地址转换为物理地址。 为了让这种转换更为容易进行,虚拟内存和物理内存都分为大小固定的块,叫做页面。每一个页面有一个唯一的页面号,叫做PFN(page frame number)在这种分页方式下,一个虚拟内存地址由两部分组成:一部分是位移地址,另一部分是PFN。每当处理器遇到一个虚拟内存地址时,它都将会分离出位移地址和PFN地址。然后再将PFN地址翻译成物理地址,以便正确地读取其中的位移地址。处理器利用页面表来完成上述的工作。 LINUX的虚拟地址划分 每一个用户进程都可以访问4GB的线性虚拟内存空间。 从0到3GB的虚拟内存地址是用户空间,用户进程可以直接对其进行访问。 从3GB到4GB的虚拟内存地址为核心态空间,存放仅供核心态访问的代码和数据,用户态进程不可访问。 所有进程从3GB到4GB的虚拟空间都是一样的,有同样的页目录项,同样的页表,对应到同样的物理内存段。LINUX以此方式让内核态进程共享代码段和数据段。 内核态虚拟空间从3GB到3GB+4M的一段(也就是进程页目录第768项所管辖的范围),被映射到物理空间0到4M段。因此,进程处于核心态时,只要通过访问虚拟空间3GB到3GB+4M段,偏移地址0到4M,即访问了物理空间0到4M段。 Linux的三级分页结构 页表是从线性地址向物理地址转换中不可缺少的数据结构,而且它使用的频率较高。页表必须存放在物理存储器中。 虚存空间有4GB,按4KB页面划分页表可以有1M页。 若采用一级页表机制,页表有1M个表项,每个表项4字节,这个页面就要占用4MB的内存空间。 由于系统中每个进程都有自己的页表,如果每个页表占用4MB,对于多个进程而言就要占去大量的物理内存,这是不现实的。 在目前用户的进程不可能需要使用4GB这么庞大的虚存空间,若使用1M个表项的一级页表,势必造成物理内存极大的浪费。为此,Linux采用了三级页表结构,以利于节省物理内存。 三级分页管理把虚拟地址分成四个位段:页目录、页中间目录、页表、页内偏移地址。 系统设置三级页表系列: 页目录PGD(PaGe Directory)、 页中间目录PMD(Page Middle Directory) 页表PTE(Page TablE)。 Linux的三级分页结构 三级分页结构是Linux提供的与硬件无关的分页管理方式。 当Linux运行在某种机器上时,需要利用该种机器硬件的存储管理机制来实现分页存储。 Linux内核中

文档评论(0)

海川电子书城 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档