- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图 4-14 两级页表结构 图 4-15 具有两级页表的地址变换机构 二级页表地址转换过程示意图 2. 多级页表 对于32位的机器,采用两级页表结构是合适的;但对于64位的机器,如果页面大小仍采用4 KB即212 B,那么还剩下52位, 假定仍按物理块的大小(212位)来划分页表,则将余下的42位用于外层页号。此时在外层页表中可能有4096 G个页表项, 要占用16384 GB的连续内存空间。 必须采用多级页表,将外层页表再进行分页,也是将各分页离散地装入到不相邻接的物理块中,再利用第2级的外层页表来映射它们之间的关系。 对于64位的计算机,如果要求它能支持264(=1844744 TB)规模的物理存储空间,则即使是采用三级页表结构也是难以办到的;而在当前的实际应用中也无此必要。 例题一 一个由8个页面,每页有1024个字节组成的逻辑空间,把它装入有32个物理块的存储器中,问: (1)逻辑地址需要多少位二进制来表示? (2)绝对地址需要多少位二进制来表示? 解:页面数:8=23 块数:32= 25 页面长度:1024=210 页号 页内地址 页面长度决定了页内地址的长度0~9,10位; 页面数决定了页号的地址长度0~2,3位; 块数决定了块号的地址程度0~4,5位; 块内地址与页内地址的长度相等; 故: 逻辑地址需要用13位来表示; 绝对地址需要用15位来表示; 习题二: 设有一分页管理系统,向用户提供的逻辑地址空间 最大为16页,每页2048字节,内存总共有8个存储 块,试问逻辑地址至少应为多少位?物理地址至少 应为多少位?内存空间共有多大? 答案: 逻辑地址至少15位; 物理地址至少14位; 内存空间共有8*2048=214 习题三: 现有一分页管理系统,其页表存放在内存中。 若对内存的一次存取需要1.5ms,试问实现一次页 面访问的存取时间是多少? 现有一个加有快表的系统,快表的平均命中率为 80%,当页表项在快表中时,其查找时间忽略为0, 试问此时的存取时间是多少?若快表的平均命中率 为90%时,存取时间又为多少呢? 解: 若页表存在内存,则一个页面访问需要访问内存2 次,已知一次存取时间为1.5ms,则一次页面访问 的存取时间为3ms. 若系统中有快表,则两种情况: 需要访问的页面在快表中:访问内存1次; 需要访问的页面不在快表中:访问内存2次; 若快表的命中率为80%则: 访问时间:0.8*1.5+(1-0.8)*2*1.5 * 2. 内存分配 :为了便于内存分配,将分区按照大小排队,并建立一个分区表。如图所示。当为作业分配空间时,分配程序按照此表检索以合适分区分配;否则,拒绝分配。缺点:空间浪费。 图 4-4 固定分区使用表 4.2.3 动态分区分配 1. 分区分配中的数据结构 空闲分区表。 (2) 空闲分区链。 图 4-5 空闲链结构 分配思想:根据进程的实际需要,动态的为进程分配(切分)内存空间,及需要多大,分配多大。提高内存的利用率。 未分配区表用空闲区链表表示: 0 0 10k 10k 270k ∧ 0 0 730k 730k 100k 100k 100k 270k 空闲区链 head ∧ ∧ 空闲区大小 2. 分区分配算法 首次适应算法FF:空闲分区按地址递增成链表;每次分配从链首依次查找一空间首次满足作业的空闲分区;再从该分区中切出与作业等量的空间分之,余者挂到链表中;若找不到满足作业空间要求的空闲分区,分配失败。 优缺点:低地址部分将产生多个较小的空闲分区(碎片),增加分配开销。 问题:如何从空闲分区表或链表中,选择一分区分配个作业,常用的算法如下: 循环首次适应算法:该算法是由首次适应算法演变而成的,区别仅是从上次已分配分区的下一个分区依次查找首次满足作业的空闲分区,并从中划分出作业需要的分区。 实现方法:起始循环指针+循环空闲分区(链)表 2. 分区分配算法 最佳适应算法:空闲链表依照空间大小排列,每次从链首(小的在前)为作业找一个大小最合适的分区分配。 缺点:最佳适应必将产生最小的空闲碎片。 ④ 最坏适应算法(worst fit):总是挑选一个最大的空闲区分割给作业使用,其优点是可使剩下的空闲区不至于太小,产生碎片的几率最小, 对中、小作业有利,同时最坏适应分配算法查找效率很高。 3. 分区分配操作 分配内存操作 分配操作如左图所示 回收内存操作 回收的分区有4种情况:与前、后、前后空分区相邻,如下图所示。 图 4-7 内存回收时的情况 当回收分区与前后空闲分区均不相邻时,为回收分区建立一个空闲分区结点,并插入链表适当位置。 回收分区 …
文档评论(0)