- 1、本文档共110页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图8-8 MULTICS的虚拟内存 8.3.2 分段和分页结合:MULTICS 因为物理地址是24位,并且页面是按照64字节的边界对齐的(这隐含着页面地址的低6位是000000),所以在描述符中只需要18位来存储页表地址。段描述符中还包含了段大小、保护位以及其他的一些条目。图8-8 b)是一个MULTICS段描述符的示例。段在辅助存储器中的地址不在段描述符中,而是在缺段处理程序使用的另一个表中。每个段都是一个普通的虚拟地址空间,用非分段式分页存储相同的方式进行分页,一般的页面大小是1024字节。 8.3.2 分段和分页结合:MULTICS MULTICS中一个地址由两部分构成:段号和段内地址。段内地址又进一步分为页号和页内偏移量,如图8-9所示。在进行内存访问时,执行下面的算法。 图8-9 一个34位的MULTICS虚拟地址 8.3.2 分段和分页结合:MULTICS 1)根据段号找到段描述符。 2)检查该段的页表是否在内存中。如果在,则找到它的位置;如果不在,则产生一个段错误。如果访问违反了段的保护要求就发出一个越界错误(陷阱)。 3)检查所请求虚拟页面的页表项,如果该页面不在内存中则产生一个缺页中断,如果在内存就从页表项中取出这个页面在内存中的起始地址。 4)把偏移量加到页面的起始地址上,得到要访问的字在内存中的地址。 5)最后进行读或写操作。 8.3.2 分段和分页结合:MULTICS 这个过程如图8-10所示。为了简单起见,我们忽略了描述符段自己也要分页的事实。实际的过程是通过一个寄存器(描述符基址寄存器)找到描述符段的页表,这个页表指向描述符段的页面。一旦找到了所需段的描述符,寻址过程就如图8-10所示。 图8-10 两部分组成的MULTICS地址到内存地址的转换 8.3.2 分段和分页结合:MULTICS 如果对于每条指令都由操作系统来运行上面所述的算法,那么程序就会运行得很慢。实际上,MULTICS硬件包含了16个字的高速TLB,对给定的关键字它能并行搜索所有的表项。当一个地址被送到计算机时,寻址硬件首先检查虚拟地址是不是在TLB中。如果在,就直接从TLB中取得页框号并生成要访问的字的实际地址,而不必到描述符段或页表中去查找。 8.3.2 分段和分页结合:MULTICS TLB中保存着16个最近访问的页的地址,工作集小于TLB容量的程序将随着整个工作集的地址被装入TLB中而逐渐达到稳定,开始高效地运行。如果页面不在TLB中,才会访问描述符和页表以找出页框号,并更新TLB使它包含这个页面,最近最少使用的页面被淘汰出TLB。生存时间位跟踪哪个表项是最近最少使用的。之所以使用TLB是为了并行地比较所有表项的段号和页号。 8.3.3 分段和分页结合:Intel Pentium Pentium处理器的虚拟内存在许多方面都与MULTICS类似,既有分段机制又有分页机制。MULTICS有256K个独立的段,每个段最长可以有64K个36位字。Pentium处理器有16K个独立的段,每个段最多可以容纳10亿个32位字。这里虽然段的数目较少,但是相比之下Pentium较大的段大小特征比更多的段个数要重要得多,因为几乎没有程序需要1000个以上的段,但是有很多程序需要大段。 8.3.3 分段和分页结合:Intel Pentium Pentium处理器中虚拟内存的核心是两张表,即LDT(Local Descriptor Table,局部描述符表)和GDT(Global Descriptor Table,全局描述符表)。每个程序都有自己的LDT,但是同一台计算机上的所有程序共享一个GDT。LDT描述每个程序的段,包括其代码、数据、堆栈等,GDT描述系统段,包括操作系统本身。 Pentium处理器的设计者面对的是互相冲突的目标:实现纯的分页、纯的分段和段页式管理,同时还要与286兼容,而他们高效地实现了所有的目标,最终的设计非常简洁。 8.3.3 分段和分页结合:Intel Pentium 和虚拟内存一样,Pentium处理器的保护系统与MULTICS很类似。它支持4个保护级,0级(内核,处理I/O、存储管理和其他关键的操作)权限最高,1级系统调用,2级共享库,3级(用户程序)最低。在任何时刻,运行程序都处在由PSW中的两位域所指出的某个保护级上,系统中的每个段也有一个级别。 8.3.3 分段和分页结合:Intel Pentium 当程序只使用与它同级的段时,一切都会很正常。对更高级别数据的存取是允许的,但是对更低级别的数据的存取是非法的并会引起陷阱。调用不同级别(更高或更低)的过程是允许的,但是要通过一种被严格控制的方式来进行。为执行越级调用,CALL指令必须包含一个选择字而不单单是一个地址。选择子指向一个称为调
文档评论(0)