操作系统笔记

操作系统第五章

2018-12-09  本文已影响4人  小公举凡

5.1虚拟存储器概述

1.各种存储器管理方式有一个共同特点:

都要求将一个作业都装入内存后才能运行

(产生作业过大,内存不够用的情况,虚拟存储器解决该问题)

2.常规存储器管理方式不足的原因:

(1)特征:

*一次性。作业必须一次性全部装入内存后方能运行

*驻留性。作业被装入内存后,整个作业被驻留在内存中,直到运行结束

(2)程序运行是有局部性的,一次性和驻留性不必要

(3)程序执行特点:

*程序执行少部分是转移和过程调用,大多数情况下是顺序执行

*程序中存在许多循环结构,对少数指令进行多次执行

*程序中包括许多对数据结构的处理(如数组),这些处理往往局限在小范围内

(4)在(3)中表现局限性两个方面:

*时间局限性

*空间局限性

3.虚拟存储器基本工作情况:

程序运行前不需将全部存入内存,少数页面和段装入,运行访问页或段时,在内存的直接用,不在的未调入,发出缺页(段)中断请求,OS调入,如果内存满了,置换(允许将一个作业分多次调入内存)

4.虚拟存储器定义:

虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统

5.虚拟存储器特征:

(1)多次性:一个作业被分成多次调入内存运行

(2)对换性:允许在作业的运行过程中进行换进、换出

(3)虚拟性:能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量

6.虚拟存储器实现方法:

离散分配方式是基础

[if !supportLists](1)       [endif]分页请求系统:

分页系统基础上增加请求调页功能和页面置换功能

[if !supportLists](2)       [endif]请求分段系统:

在分段系统基础上,增加请求调段及分段置换功能

5.2请求分页存储管理方式

1.硬件支持

*请求页表:

(1)状态位P :指示该页是否已调入内存

(2)访问字段A :用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问。(置换时考量的参数)

(3)修改位M :该页在调入内存后是否被修改过。(关系到置换时调出的具体操作)

修改过的换出要重写入外存

(4)外存地址:用于指出该页在外存上的地址

*缺页中断机制:

步骤:

保护CPU环境

分析中断原因

转入缺页中断处理程序

恢复CPU环境

缺页中断是一种特殊的中断,与一般中断有明显区别,主要表现在:

[if !supportLists](1)       [endif]在指令执行期间产生和处理中断信号

[if !supportLists](2)       [endif]一条指令在执行期间可能产生多次却也中断

2.最小物理块:

能保证程序正常运行所需的最小物理块,少于此值进程将无法运行。大小与计算机硬件结构有关,取决于指令的格式。功能和寻址方式

3.内存分配策略:

(1)固定分配局部配换

每个进程分配一组固定数目物理块,在进程运行期间不再改变

(2)可变分配全局配换(用的多)

先为每个进程分配一定数目物理块,进行运行期间,可根据情况适当增减或减少

(3)可变分配局部置换

4.物理块分配算法:

(1)平均分配

(2)按比例分配算法

(3)考虑优先权的分配算法

5.调页策略

(1)何时调入:

*预调页策略

以预测为基础,将预计不久后便会被访问的若干页面,预先调入内存

优点:一次调入若干页,效率较好

缺点:预测不一定准确,预调入的页面可能根本不被执行到。主要用于进程的首次调入,由程序员指出应该先调入哪些页

*请求调页策略

运行中需要的页面不在内存,便立即提出请求,由OS将其调入内存

优点:由请求调页策略所确定调入的页,一定会被访问;比较容易实现

缺点:每次仅调入一页,需花费较大的系统开销,增加了磁盘I/O的启动频率

(2)从何处调入页面

在请求分页系统中的外存分为:对换区和文件区

发生缺页时,系统应从何处将缺页调入内存,分成三种情况:

*系统拥有足够的对换区空间:进程运行前所有页面由文件区拷贝到对换区

*系统缺少足够的对换区空间

* UNIX方式

(3)缺页率:

页面调入次数(缺页次数)/总的页面使用次数

f=F/A

5.3页面置换算法

1. 最佳(Optimal)置换算法

优点:实现简单,把一进程已调入内存的页面按先后次序组织成一个队列,并设置一个指针(替换指针),使它总是指向队首最老的页面。

不足:与进程实际运行规律不相适应(较早调入的页往往是经常被访问的页,频繁被对换造成运行性能降低)

2. 先进先出置换算法(FIFO)

选择内存中驻留时间最久的页面予以淘汰

优点:实现简单,把一进程已调入内存的页面按先后次序组织成一个队列,并设置一个指针(替换指针),使它总是指向队首最老的页面。

不足:与进程实际运行规律不相适应(较早调入的页往往是经常被访问的页,频繁被对换造成运行性能降低)

3.最近最久未使用(LRU)置换算法

不足:

有时页面过去和未来的走向之间并无必然的联系。

相应的需较多的硬件支持:用寄存器或栈

4.轮转算法(clock)

又称最近未使用算法,与LRU(最近最久未使用算法)近似算法

原理:

(1)每个页设一个使用标志位(use bit),若该页被访问则将其置为1。

(2)设置一个指针,从当前指针位置开始按地址先后检查各页,寻找use bit=0的页面作为被置换页。

(3)若指针经过的页use bit=1,修改use bit=0(暂不凋出,给被用过的页面驻留的机会 ),指针继续向下。到所有页面末尾后再返回队首检查。

*改进CLOCK:

主要考虑对没访问过的页面再细分是否修改过的不同情况,减少因修改造成的频繁I/O操作

每页除记录是否用过A,还记录是否修改的标志M。置换时根据两个标志的值有4种不同情况的处理

上一篇下一篇

猜你喜欢

热点阅读