存储器管理(三)

虚拟存储器的基本概念
在实际运行过程中,没有必要将进程一次性全部装入内存,因为装入进程后,会长期占用在内存,而进程的运行一班是局部性的。
1. 局部性原理。进程在执行时,将呈现出局部性规律,即在很短的时间内,进程的执行仅限于某个部分。相应的,它所访问的存储空间仅限于某个区域。进程执行时,除少部分的转移和过程调用外,大多数程序顺序执行;过程调用将使进程的执行轨迹从一部分区域转到另一部分区域,进程将在一段时间内在这些过程内运行;程序中存在许多循环结构,有少数之灵组成,却执行多次;程序中还包括许多对数据结构的处理,党对数组进行操作时,往往局限于很小的范围。
局限性表现在:时间的局限性,某条指令在一段周期之后再次被访问;空间的局限性,某个存储单元在一段周期之后再次被访问。
2. 虚拟存储器的概念。基于局部性原理,将进程中当前要运行的部分装入内存,其余的存放在磁盘,进程访问某页时,若不在内存中,则调入,如果内存已满,则进行替换。从用户角度看来,系统所具有的内存容量比实际上拥有的要多,把这种方式下的存储器称为虚拟存储器。
虚拟存储器是进程运行时,只把运行的部分代码和数据装入内存便可运行的虚拟存储系统。虚拟存储器是指具有请求调入功能和置换功能,并能从逻辑上对内存空间进行扩充的一种存储器系统。
虚拟存储器的实现方法及其特征
虚拟存储器的实现方法包括请求分页系统和请求分段系统两大类。
1. 请求分页系统
请求分页系统是在分页存储管理方式的基础上增加了请求调页的功能、页面置换功能所形成的页式虚拟存储系统。请求调页和置换时,需要请求分页的页表机构;缺页中断机构;地址变换机构。
2. 请求分段系统
请求分段系统是在分段存储管理方式的基础上增加了请求调段即分段置换功能而形成的段式虚拟存储系统,它允许只装入部分进程代码和数据,运行时动态调入。实现请求分段,需要请求分段的段表机制;缺段中断机构;地址变换机构。
3. 虚拟存储器的特征
虚拟存储器具有虚拟新、离散型、多次性及对换性等特征。
虚拟性:虚拟性是指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际的内存容量。
离散性:离散性是指内存分配时采用离散分配的方式。
多次性:是指一个进程被分成多次调入内存运行。进程运行时,只将当前需要的代码和数据装入内存。
对换性:是指允许在进程运行过程中换进换出。
请求分页的实现
请求分页式存储管理是建立在页式存储管理的基础上,结合虚拟存储系统原理实现的,是目前常用的一种实现虚拟存储器的方式,它需要软件和硬件的支持。换进换出的基本单位是固定长度的页面。
1. 页表机制
分页系统中地址映像是通过页表实现的。在请求分页系统中,页表包括下列信息:状态位;访问字段A;修改位M;外存地址。
2. 缺页中断机构
在请求分页系统中,若所访问的页不在主存,便产生一缺页中断。缺页中断和一般中断相比具有明显的区别,主要表现在以下几个方面:
在指令执行期间产生和处理中断信号。通常CPU是在一条指令执行完成后,再去判断是否有中断。若有,则响应中断,没有,则顺序执行。
一条指令在执行期间可能产生多次中断。系统中的硬件能保存多次中断时的状态,并保存最后能返回到西中断前的缺页中断的指令处,继续执行。
3. 地址变换过程
请求分页系统中的地址变换机构是在分页系统的地址变换基础上,为实现虚拟存储器而增加某些功能实现的。当出现缺页中断时,保留当前CPU的状态,在外存找到所需页面,按照一定的页面转换算法,将新的页面调入内存,然后恢复CPU的状态,继续执行。
页面置换算法
进程运行过程中,若其所要访问的页面不在内存,则需要将它调入内存。当内存没有空闲空间时,必须从内存空间中调出一页。调出页面的原则必须根据一定的算法进行,该算法成为页面置换算法,置换算法的好坏直接影响到系统的性能。
1. 先进先出页面置换算法(FIFO)
该算法总是置换最先进入内存的那个页面。实现时只需将调入内存的页面按先后顺序排成一个队列。当置换时,将驻留时间最长的页面换出即可。但是该算法存在异常,在相同页面走向下当分给某一进程的页面数增多时,页面失效不但不降,反而更加严重。
2. 最近最久未使用页面置换算法(LRU)
该算法出现缺页中断时,总是选择最近一段时间内,最长时间没有被访问过的页面,将它换出外存。所需要解决的问题是一个进程在内存中的各个页面有多长时间未被进程使用;如何快速知道那一页是最近最久未使用的页面。为此,需要两类硬件支持。
寄存器,用于记录某进程在内存中各页的使用情况。为每个内存中页面配置一个意味寄存器,可表示为R=R(N-1)R(N-1)…R2R1R0。当进程访问物理块时,将对应的Ri置1。定时信号随后会隔一定时间将寄存器左移一位。一段时间后,寄存器中出现过的最小数则是将被切换的页号。
栈。利用一个特殊的栈来保存当前使用的各个页面的页号。每当进程访问某页面时,便将该页面的页号从栈中移除,将它压入栈顶。因此栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页号。
3. 最佳置换算法(OPT)
最佳置换算法所选择的被淘汰的页面将是最长时间不被使用的。对于固定分配页面方式,采用最佳置换算法可以保证随地的缺页率。但该算法是一种理论上的理想算法。

猜你喜欢

转载自blog.csdn.net/sinat_34467747/article/details/79994728