1:虚拟存储器
常规存储器的管理方式:要求一个作业全部装入内存后才可以运行。
导致问题:大的作业无法装入,导致无法运行。 大量作业需要运行时,只能运行一部分,另一部分需要在外存等待。
解决方案:
- 增加内存容量。
- 逻辑上扩充:覆盖(单一连续),交换,虚拟存储器。
虚拟存储器: 指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。
虚拟存储器特征: 虚拟存储的基础是程序执行的局部性。
- 离散性:
- 多次性:一个作业被分为多次调入内存。
- 对换性:作业运行过程中进行换进换出。
- 虚拟性:逻辑上扩充内存容量。
2:虚拟存储器实现方式
分页请求系统 | 请求分段系统 | |
---|---|---|
在分页存储系统上添加请求调页功能,页面置换功能,形成页式虚拟存储器系统。 | 在分段存储系统上添加请求调段功能,分段置换功能,形成段式虚拟存储器系统。 | |
硬件 | 请求分页的页表机制,缺页中断机构,地址变换机构。 | 请求分段的段表机制,缺段中断机构,地址变换机构。 |
软件 | 请求调页功能,页面置换功能。 | 请求调段功能,分段置换功能。 |
3:请求分页存储管理方式
页表机制:
- 状态位P:表示当前页是否在主存中。1/0
- 访问字段A:记录本页在最近一段时间内的访问次数,或多长时间未被访问。
- 修改位M:该页在调入内存时是否被修改过。内存中的每一页都在外存有副本,若未被修改,则置换时不需要写回外存,减少系统开销和启动磁盘次数。若被修改,则需要重新写回外存,从而保证外存最新副本。
缺页中断机构:
在请求分页系统中,当访问的页面不在内存,则发生一次缺页中断,请求OS将所缺页调入内存。
- 缺页中断在指令执行期间产生和处理中断信号。
- 缺页中断返回该指令的开始,重新执行该指令。
- 一条指令在执行期间,可能发生多次缺页中断。
地址变换机构:
4:请求分页系统的内存分配策略和算法
1:最小物理块确定: 系统分配到物理块少于此数,则进程无法运行。
2:物理块分配策略:
- 固定分配局部置换:进程分配的物理块在运行期间不变,出现缺页则置换。
- 可变分配全局配置:分配固定的物理块,但OS自留空闲块对列。发生缺页时,分配空闲块并调入缺页。当空闲块用完时,OS才会置换页面。
- 可变分配局部置换:分配一定数量的物理块,发生缺页则置换一页。根据进程缺页率的高低,从而减少或增加物理块。
3:物理块分配算法:
- 平均分配法:平均分配给各个进程。
- 按比例分配法:根据进程大小比例进行分配。
- 考虑优先权的分配算法:一部分按照大小比例分配,剩余部分按照各进程的优先级适当增加物理块。
5:请求分页存储管理方式的页面置换策略
调入策略决定什么时候将一个页面由外存调入内存,从何处将页面调入内存。
- 预调页策略:将不久后预计被访问的页预先调入内存。
- 请求调页策略:当进程发生缺页中断时,提出请求调页,通过OS将所需页调入内存。
抖动:如果页面置换算法选择不当,那么进程的大部分时间花费在页面置换,则该进程发生抖动。
缺页率=缺页次数/页面访问次数
页面置换算法:选择换出页面的算法。 页面的换入换出需要磁盘的I/O,存在较大的开销。因此需要追求最小缺页率。
- 最佳置换算法:理想化算法,将永不使用或者最长时间内不使用的页面置换出去。但需要确定最长时间不被访问的页面,算法难以实现。
- 先到先换置换算法:选择在内存中滞留最久的页面换出。产生Belady异常,即物理块增多,缺页次数不减少。
- 最近最久未使用置换算法:选择离当前时间最久未使用的页面换出。
- 简单时钟置换算法:将内存内的页面排成循环队列,当循环时,第一次碰到访问位为0的换。并在遍历后让访问位由1-0。
- 改进型时钟置换算法:RU两个标志,R访问,U修改。第一次找R=0,U=0,第二次找R=0,U=1。