- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 2.4.1 页式虚拟存储器 2.4.2 段式虚拟存储器 2.4.3 段页式虚拟存储器 2.4虚拟存储器 2.4.1 页式虚拟存储器 以页为基本单位的虚拟存储器叫页式虚拟存储器。将主存和虚存的空间都划分为等长的固定区域,称为页面。系统的基本信息传送单位是定长的页,通过地址变换机构实现访存过程,当访问的页面不在主存时,通过页面置换算法将需要的页面调入主存。程序虚地址分为两个字段:高位字段为虚页号(逻辑页号),低位字段为页内偏移地址。虚地址到实地址之间的变换由页表来实现 。 * 2.4.1 页式虚拟存储器 某程序的逻辑地址空间为5个虚页,其中0、1和3号虚页装入物理地址空间(主存),成为2、1和4号实页。它们之间通过页表实现地址映射,在对应的页表表项的装入位均为1,而那些没有装入物理地址空间的对应表项的装入位为0。 页式虚拟存储器的地址映像 1.地址映像 * 2.4.1 页式虚拟存储器 所有运行中的程序的页表起始地址(页表基地址)构成一张页基址表,其中,n为对应程序的页表表长,PA为对应程序的页表起始地址。在进行地址变换时,先根据基号(用户号、程序号或进程号)从页基址表中找到对应程序的页表起始地址,再根据虚地址的虚页号从对应的页表中查找,以确认该页是否已装入主存,即判断装入位是否为1,若装入位为1,则取出对应实页号,与虚地址的页内偏移地址拼接成实地址;若装入位为0,则说明要访问的页不在主存中,即缺页,需要由操作系统进行缺页处理。 页式虚拟存储器的地址变换 2.地址变换 * 2.4.1 页式虚拟存储器 在地址变换时,首先到快表中查页表项,如果命中,则无须访问主存中的慢表;否则,再到主存的慢表中查找页表项。快表只是慢表的一个副本,而且只存放了慢表中很少的一部分。这种快慢表的结构使得访存速度接近于快表的速度,从而提高整个虚存的速度。 经快表和慢表进行地址变换 * 2.4.2 段式虚拟存储器 * 由于通常程序都具有一定的模块性,一个复杂的大程序都可以划分成多个逻辑上相对独立的模块,模块间的界面和调用关系是可以清楚定义的。这些模块可以是主程序、过程,也可以是某类元素的集合。因此,分段管理是按用户的要求提出来的。 在段式虚拟存储器中,系统的基本信息单位是不定长的段,通过地址变换机构实现访存过程,当访问的段不在主存时,通过段置换算法将需要的段调入主存。每段的虚地址都从0开始,每段都有自己的段号。为了把程序虚地址变换成主存实地址,需要一个表来指明各段在主存中的位置,这个表就是段表,一般驻留在主存中。每段在主存的起始位置由段表或段寄存器来标明。段表中每一行记录了某个段对应的若干信息,包括段号、装入位、段起点和段长等,根据需要还可以在段表中增加其它信息。在程序运行时,CPU通过访问对应的段表,判断该段是否已调入主存,并完成逻辑地址与物理地址之间的转换。 * 2.4.2 段式虚拟存储器 某程序的虚拟地址空间有5个段,其中的3个段装入主存,通过段表实现地址映像。段表中,装入位为1表示该段已调入主存,为0则表示该段不在主存中。因段的长度不同,所以段表需要有记录段长度的表项。 段式虚拟存储器的地址映像 1.地址映像 * 2.4.2 段式虚拟存储器 在段式虚拟存储器中,编程使用的虚地址包含两部分:高位是段号,低位是段内地址。每个运行的程序有一个段表起点(段表基地址),存放其段表在主存的首地址。根据虚地址中的段号,找到对应段表项,检查是否存在以下三种情况: (1)缺段(该段不在主存中):装入位为0; (2)地址越界:偏移量超出最大段长; (3)保护违例:操作方式与指定访问权限不符。 段式虚拟存储器的地址变换 2.地址变换 * 2.4.3 段页式虚拟存储器 页式和段式虚拟存储器各有优缺点,因此可结合使用,形成段页式虚拟存储器。将虚拟存储空间按段式管理,而主存空间按页式管理,存在虚空间的程序按逻辑关系分段,每一段又可分成固定大小的页。主存则只分成若干相同大小的页。 * 2.4.3 段页式虚拟存储器 一个用户程序由3个独立的程序段组成。0号程序段的长度为12KB,由于页的长度是4KB,因此,正好分成3页。1号程序段的长度为10KB,也分成3页,其中最后一页有2KB是浪费的。2号程序段的长度为5KB,分成2页,其中第二页浪费3KB。 段页式虚拟存储器的地址映像 1.地址映像 * 2.4.3 段页式虚拟存储器 在多用户系统中的段页式虚拟存储器中,需要三层表,记录相关信息,包括段表基址表、段表、页表,如图所示,按照如下过程进行地址变换: (1)先查段表基址表,得到对应程序的段基址; (2)再查段表,得到该程序段的页表起始地址和页表长度; (3)再查页表找到要访问的主存实页号; (4)最后把实页号p与页内偏移d拼接得到主存的实地址。 段页式
文档评论(0)