页式虚拟存储管理

页式存储的基本原理

      将程序的逻辑地址空间划分为固定大小的页(page),而物理内存划分为同样大小的页框(pageframe)。程序加载时,可将任意一页放人内存中任意一个页框,这些页框不必连续,从而实现了离散分配。也就是把内存等分成N份,存放运行的程序时,按分成的快放置即可。但放置时要考虑主存里哪些块已经被占用,这个用主存分配表(位示图)来表示。

页表

      分页式存储器的逻辑地址由两部分组成:页号和业内地址页表和地址转换

      系统为每个程序都建立一张页表,用于记录程序的逻辑页面与内存物理页面之间的对应关系。


多级页表

      二级页表如下图所示,一级页表指出二级页表的存放地址,二级页表指出页的存放地址。

 页式虚拟存储管理_第1张图片

地址映射

 页式虚拟存储管理_第2张图片

      绝对地址=块号*块长 + 业内地址

 

虚拟存储器

      根据程序执行的互斥性和局部性两个特点,我们允许作业装入的时候只装入一部分,另一部分放在磁盘上,当需要的时候再装入到主存,这样以来,在一个小的主存空间就可以运行一个比它大的作业。同时,用户编程的时候也摆脱了一定要编写小于主存容量的作业的限制。也就是说,用户的逻辑地址空间可以比主存的绝对地址空间要大。对用户来说,好象计算机系统具有一个容量很大的主存储器,称为“虚拟存储器”。

页式虚拟存储器的实现

      把未执行的程序放在辅助存储器中。

 页式虚拟存储管理_第3张图片

调度算法

<1> 先进先出调度算法

      先进先出调度算法根据页面进入内存的时间先后选择淘汰页面,先进入内存的页面先淘汰,后进入内存的后淘汰。本算法实现时需要将页面按进入内存的时间先后组成一个队列,每次调度队首页面予以淘汰。

 

<2>最近最少调度算法

      先进先出调度算法没有考虑页面的使用情况,大多数情况下性能不佳。根据程序执行的局部性特点,程序一旦访问了某些代码和数据,则在一段时间内会经常访问他们,因此最近最少用调度在选择淘汰页面时会考虑页面最近的使用,总是选择在最近一段时间以来最少使用的页面予以淘汰。算法实现时需要为每个页面设置数据结构记录页面自上次访问以来所经历的时间。

 页式虚拟存储管理_第4张图片

<3>最近最不常用调度算法

      由于程序设计中经常使用循环结构,根据程序执行的局部性特点,可以设想在一段时间内经常被访问的代码和数据在将来也会经常被访问,显然这样的页面不应该被淘汰。最近最不常用调度算法总是根据一段时间内页面的访问次数来选择淘汰页面,每次淘汰访问次数最少的页面。算法实现时需要为每个页面设置计数器,记录访问次数。计数器由硬件或操作系统自动定时清零。

你可能感兴趣的:(页式虚拟存储管理)