- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 程序的编写方法对缺页率的影响: 例子:页面大小为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,用来指向第二级页表当中所对应的页表项。 * 第一级页表 第二级页表 逻辑地址 Stack … Data Code 0 4M 8M 4G 有效地减少 页表项数。 * 虽然地址空间有220个页面,但实际上只需要4张页表: 在一级页表中,只有3个页表项被映射; 每张二级页表代表4MB; 代码段、数据段和栈都是4MB,用一个一级页表项和一张二级页表来描述。 问题: 如果在一级页表中发生了一次缺页中断,如何处理? * 32位逻辑地址、二级页表结构当中的地址映射过程。 (本图摘自Silberschatz, Galvin and Gagne: “Operating System Concepts”) 一级页表 二级页表 * 【例题】 Gribble公司正在开发一款64位的计算机体系结构,也就是说,在访问内存的时候,最多可以使用64位的地址。假设我们采用的是虚拟页式存储管理,现在我们要为这款机器设计相应的地址映射机制。 * (1)假设页面的大小是4K(即4096字节),每个页表项(Page Table Entry,PTE)的长度是4个字节,而且我们必须采用三级页表结构,每一级页表结构当中的每个页表都必须正好存放在一个物理页面当中,请问在这种情形下,如何来实现地址的映射?具体来说,对于给定的一个虚拟地址,应该把它划分为几部分,每部分的长度分别是多少,功能是什么?另外,在采用了这种地址映射机制后,可以访问的虚拟地址空间有多大?(提示:64位地址并不一定全部用上了) * (2)假设每个页表项的长度变成了8个字节,而且我们必须采用四级页表结构,每级页表结构当中的页表
原创力文档


文档评论(0)