操作系统原理——存储管理.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文档。上传文档
查看更多
操作系统原理——存储管理

程序的编写方法对缺页率的影响: 例子:页面大小为4K,分配给每个进程的 物理页面数为1。在一个进程中,定义了 如下的二维数组int A[1024][1024],该数组 按行存放在内存,每一行放在一个页面中。 程序编制方法1: for (j = 0; j 1024; j++) for (i = 0; i 1024; i++) A[i][j] = 0; 程序编制方法2: for (i=0; i1024; i++) for (j=0; j1024; j++) A[i][j] = 0; a0,0 a0,1 a0,2 …………………….. a0,1023 1 a1,0 a1,1 a1,2 …………………….. a1,1023 2 ……………………………. ……………………………. a1023,0 a1023,1 ………………….. a1023,1023 1024 访问页面的序列为: 解法1: 1,2,3,………1024,1,2,………,共1024组 共发生了1024×1024次缺页中断 解法2: 1,1,1,………,2,2,………,3,3,……. 共发生了1024次缺页中断 2. 页面大小 页面大小的选择需要平衡各种相互竞争的因素,没 有一个全局性的最优解。 有的因素要求较小的页面大小: 页面越小,内碎片越少(最后一页有内碎片); 页面越小,内存中暂不使用的程序部分越少; 有的因素要求较大的页面大小: 页面越大,页表就越小; 页面越大,在内存与磁盘间传送相同大小的内容时,所需的I/O开销越小。 3. 页表结构 页表的功能是把逻辑页面号映射为物理页面号,但 是在虚拟存储技术当中,虚拟内存空间往往大于实 际的物理内存,现代计算机所使用的虚拟地址至少 为32位,如果每个页面的大小为4K,那么逻辑页面 的个数为220,这就意味着在页表里有220个页表项, 而每一个进程都有自己的虚拟地址空间,都需要自 己的页表,因而占用了大量的内存空间。为解决此 问题,需提出新的页表结构: 多级页表 (Multilevel Page Tables); 反置页表(Inverted Page Tables)。 4. 多级页表 由于不是所有的虚拟地址都会用到,所以不必把所 有的页表项都保存在内存当中。以二级页表为例: 假设逻辑地址为32位,页面大小为4K。把逻辑地址划分为两个部分: 逻辑页面号为20位; 页内偏移地址为12位; 把逻辑页面号再进一步地划分为两个部分: 10位的字段PT1,用来指向第一级页表当中所对应的页表项; 10位的字段PT2,用来指向第二级页表当中所对应的页表项。 第一级页表 第二级页表 逻辑地址 Code Data … Stack 0 4M 8M 4G 虽然地址空间有220个页面,但实际上只需要4张页表: 在一级页表中,只有3个页表项被映射; 每张二级页表代表4MB; 代码段、数据段和栈都是4MB,用一个一级页表项和一张二级页表来描述。 问题: 如果在一级页表中发生了一次缺页中断,这意味着什么? 如何处理一级页表中的缺页中断? 32位逻辑地址、二级页表结构当中的地址映射过程。 (本图摘自Silberschatz, Galvin and Gagne: “Operating System Concepts”) 一级页表 二级页表 5. 反置页表 以前的页表方案都是根据进程的逻辑页面号来组织,以逻辑页面号来作为访问页表的索引。如果逻辑地址位数较多,如64位,那么逻辑地址空间将是264字节,如果页面大小为4K,那么每个进程的页表项的个数为252。 一种解决方案是反置页表,即根据内存中的物理页面号来组织页表,用物理页面号来作为访问页表的索引。页表项的个数仅与物理内存的大小和页面大小有关,与逻辑空间大小和进程数无关。 每个页表项记录了在相应的物理页面中,保存的是哪个进程的哪一个逻辑页面。 反置页表节省了大量内存空间,但逻辑页面号到物理页面号的转换变得更复杂,一种方法是Hash表。 (本图摘自Silberschatz, Galvin and Gagne: “Operating System Concepts”) 反置页表示意图 OS与虚拟页式存储管理 在进程运行的各个阶段,OS需要做哪些与页式存储管理有关的事情? 进程创建时; 进程运行时; 进程切换时; 缺页中断时; 进程结束时。 4.5.8 虚拟段式存储管理 需要在进程的段表中添加若干项: 标志位:驻留位(present bit), 修改位(modified/dirty bit), 增长位(该段是否增长过,在虚拟页式中没有该位) 访问统计:如访问位(use bit) 存取权限:如读R,写W,执行X 缺段中断处理:

文档评论(0)

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

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

1亿VIP精品文档

相关文档