虚拟存储器

虚拟存储器

虚拟存储器的存储管理方法是在伴随分页式管理办法(包括段式管理、页式管理和段页式管理)的基础上发展起来的。1961年英国曼彻斯特大学的KILBURN等人首次提出虚拟存储器的想法,到目前为止这种设计思想被广泛地应用于大、中、小、微型机系统之中。

虚拟存储器的设计思想与Cache的设计思想类似,同样利用程序访问的局部性原理,采用按需调页的办法(所谓“按需调页”就是进程中所涉及的数据页/(或称)数据块,只有在需要时才被调入到主存之中)。一道程序虽然可以很长,所涉及的数据页可能会很多,但在执行时并不需要把所有的数据页都装入主存,装入少数几页即可,其余各页仍在辅助存储器之中。当程序执行到某一时刻,程序需要转到没有放到主存中的数据页时,计算机通过产生“缺页”中断,由操作系统自动把所需要的页,从辅助存储器中调到主存。

这种按需调页的办法可以使一个容量并不大的内存中同时运行多道程序。如果操作系统调动得当,页面的I/O次数不会很频繁,一个总长度超过内存总容量的程序照样可以正常执行。这样,程序员或用户会感觉到他所用的内存容量比实际使用的容量大得多,这个虚幻的存储器就叫做虚拟存储器,简称“虚存”。实际上虚存的容量就是辅助存储空间的大小,其内容就放在辅助存储器之中,但程序实际上还是只能放在主存中才能执行,因此也就把主存称为实存了。

虚拟存储器系统中有两种地址空间:虚存地址空间(虚地址)和实存地址空间(实地址)。虚地址就是CPU在执行程序的过程中产生的逻辑地址,而实地址就是内存的实际物理地址。虚拟存储器的实现过程是在硬件和操作系统的共同支持下协同完成的。硬件主要负责虚/实地址的转换,操作系统主要负责数据页的调入/换出,及主存的管理等。

在虚拟存储器系统的实现过程中,与Cache的调度实现过程类似,同样存在数据页替换算法和写入策略的问题。具体的实现过程和策略,可参照Cache部分的内容。

1.请求分页存储管理方式

请求分页存储管理方式是建立在纯分页基础上的,是目前常用的一种实现虚拟存储器的方式。为了实现请求分页,系统必须提供一定的硬件支持。它需要有页表机制、缺页中断机制及地址变换机构等硬件实现的逻辑电路系统等。

(1)页表机制

在请求分页系统中所需要的主要数据结构是页表。页表的基本作用是将用户地址空间中的逻辑地址变换为内存空间的物理地址。每一个页表项的数据结构如图4.22所示。

下面对其中的几项作出说明。

①状态位P:用于指示该页是否已经调入内存之中,供程序访问时参考。

②访问字段A:用于记录该页在一段时间内被访问的次数,或最近已有多长时间没有被访问,提供给置换算法用于确定将要替换出的数据页。

③修改位M:表示该页在调入内存后是否被修改过。

④外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时使用。

(2)缺页中断机构

每当所要访问的页面不在内存时,都要产生一个缺页中断,请求操作系统将所缺之页调入内存。作为中断,它同样需要保护CPU当前执行环境,分析中断原因,转入缺页中断处理及恢复CPU中断之前的环境等过程。但是缺页中断又与一般的中断有所不同。主要表现在:

①缺页中断在指令执行期间产生和处理中断。而一般性的中断在CPU执行一条指令之后才去检查是否有中断请求,有则响应,无则继续。

②一条指令在执行期间,可能会产生多次缺页中断。

(3)地址变换机构

请求分页系统的地址变换过程,可用图4.23所示来说明。在进行地址变换时,首先去检索块表,试图从中找出所要访问的数据页。若找到,便修改页表项中的访问位。对于写指令,还需将修改位置成“1”,然后利用页表项中给出的物理块号和页内地址,形成物理地址。如果在块表中未找到该页的页表项,则应到内存中去查找页表,再根据找到的页表项中的状态位P,来了解该页是否已调入内存。如图4.23所示说明了在请求分页系统中的地址变换过程。

豫ICP备19006514号 网站地图 免责声明:如果侵犯了你的权益,请发邮件至:419017772@qq.com,我们会及时删除侵权内容,谢谢合作!
error: Content is protected !!