第二章虚拟内存管理的硬件机制.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文档。上传文档
查看更多

分页机制-线性地址结构这个结构的伪代码描述如下typedefstruct{unsignedintdir:10;/*用作页目录中的下标,对应的目录项指向一个页表*/unsignedintpage:10/*用作页表的下标,对应的页表项指向一个物理页面*/unsignedintoffset:12/*在4K字物理页面内的偏移量*/}LinearAddr页目录页页内偏移量3122120第29页,共43页,星期日,2025年,2月5日分页机制-硬件保护机制对于页表,页的保护是由属性部分的U/S标志和R/W标志来控制的。当U/S标志为0时,只有处于内核态的操作系统才能对此页或页表进行寻址。当这个标志为1时,则不管在内核态还是用户态,总能对此页进行寻址。此外,与段的三种存取权限(读、写、执行)不同,页的存取权限只有两种(读、写)。如果页目录项或页表项的读写标志为0,说明相应的页表或页是只读的,否则是可读写的。第30页,共43页,星期日,2025年,2月5日分页机制-线性地址到物理地址的转换第31页,共43页,星期日,2025年,2月5日分页机制-分页示例假如操作系统给一个正在运行的进程分配的线性地址空间范围是0到0x2003ffff。这个空间由64页组成。我们从分配给进程的线性地址的最高10位(分页硬件机制把它自动解释成页目录域)开始。这两个地址都以2开头,后面跟着0,因此高10位有相同的值,即十六进制的0x080或十进制的128。因此,这两个地址的页目录域都指向进程页目录的第129项。相应的目录项中必须包含分配给进程的页表的物理地址,如图2.13。如果给这个进程没有分配其它的线性地址,则页目录的其余1023项都为0,也就是这个进程在页目录中只占一项。第32页,共43页,星期日,2025年,2月5日分页机制-分页示例1023(0x3ff)128(0x80)1023(0x3ff)64(0x040)63(0x03f)页目录页表假设进程需要读线性地址0的内容。这个地址由分页机制如何进行处理?第33页,共43页,星期日,2025年,2月5日分页机制-页面高速缓存第34页,共43页,星期日,2025年,2月5日分页机制-Linux中的分页Linux主要采用分页机制来实现虚拟存储器管理,因为:Linux的分段机制使得所有的进程都使用相同的段寄存器值,这就使得内存管理变得简单,也就是说,所有的进程都使用同样的线性地址空间(0~4G)。Linux设计目标之一就是能够把自己移植到绝大多数流行的处理器平台。但是,许多RISC处理器支持的段功能非常有限。为了保持可移植性,Linux采用三级分页模式而不是两级第35页,共43页,星期日,2025年,2月5日分页机制-Linux中的分页第36页,共43页,星期日,2025年,2月5日Linux中的C语言和汇编语言GNU的C语言/docs/learnc/ATT的汇编:参见书第37页,共43页,星期日,2025年,2月5日Linux系统地址映射示例Linux采用分页存储管理。虚拟地址空间划分成固定大小的“页”,由MMU在运行时将虚拟地址映射(变换)成某个物理页面中的地址IA32的MMU对程序中的虚拟地址先进行段式映射(虚拟地址转换为线性地址),然后才能进行页式映射(线性地址转换为物理地址)Linux巧妙地使段式映射实际上不起什么作用第38页,共43页,星期日,2025年,2月5日Linux系统地址映射示例假定我们有一个简单的C程序Hello.c#includestdio.hgreeting(){ printf(“Hello,world!\n”);}main(){greeting();}第39页,共43页,星期日,2025年,2月5日Linux系统地址映射示例用Linux的实用程序o

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档