虚拟存储技术,虚拟存储系统

一、虚拟内存的基本概念在虚存管理中,虚拟地址空间是指逻辑地址空间,实地址空间是指物理地址空间;前者的大小受机器的指令地址长度的限制,而后者的大小受物理内存大小的限制。

常见存储管理不足的原因:

1)一次性)工作在执行前一次全部加载到内存中

)常驻性)作业加载到内存中后,驻留在内存中直到作业执行完毕。

局部性原理

1)程序执行特点:

顺序执行。

部分转移和过程调用指令将程序的执行从部分区域转移到另一区域。 但是,根据研究,调用的深度往往在5以下) )。

由少数指令构成的循环结构多次执行。

大多数数据结构的处理序列等)往往局限在狭窄的范围内。

)2)上述所有情况表明了程序执行的局部性。

时间局部性temporal locality ) )。

被引用过一次的存储器的位置很可能在不远的将来被多次引用。 循环结构)

空间局部性spatial locality ) ) ) )。

内存位置被引用一次时,程序在不久的将来很可能会引用附近的内存位置。 数组)

交换技术与虚存使用的调入调出技术有何相同和不同之处?相同点:内存和外部内存之间必须交换信息

区别:

交换技术的交换通常是整个进程,进程大小受物理内存限制

调用技术传递到存储页面或存储段,以提高流程映射的灵活性,并使流程的大小大大大于可用的物理存储空间。

定义虚拟内存

1)虚拟存储器)是具有请求调入功能和置换功能,在逻辑上能够扩展存储器容量的存储器系统

)2)优势:

存储器逻辑容量由存储器容量和外部存储器容量之和决定

以接近存储器速度的速度动作

人均成本接近外部存储器

虚拟内存实现

1)作用)允许将一个工作分多次调入内存

)虚拟化的实现基于离散的存储分配管理

*方式:分页/请求分割系统

*详细信息:分页/分段机制、中断机制、地址转换机制、软件支持

虚拟内存特征

1)多次性)一个工作分多次被调用到存储器中执行

2)更换性)允许在工作执行过程中更换、更换。 整个过程的更换不是虚拟的。)

3)虚拟性)逻辑上可以扩展内存容量,使用户看到的内存容量远远大于实际内存容量。

二、要求分页存储管理方式功能:基本分页“分页请求”和“页面替换”功能。

入和出的基本单位是长度固定的页面

请求分页技术的基本思想是如果内存中尚未找到运行中使用的页面,请动态交换它们。 这样可以减少交换时间和所需的内存量,并增加程序的磁道数

要求寻呼技术是在简单寻呼技术的基础上发展起来的。 两者根本区别请求寻呼以提供虚拟存储,但简单寻呼系统不提供虚拟存储。

硬件支持:具有一定容量内部/外部内存的计算机页面表机制页面错误机制的地址转换机制

a .页表机制

页面表的基本功能不变。 逻辑地址映射到物理地址

添加了状态位、访问字段、更改位和外部地址

存储器中状态位为1,被访问的访问字段为1,或者通过算法为时间,修正后的修正位为1

b .缺页中断机制

1)作为中断,必须经过几个步骤

保护CPU环境分析中断原因转至缺页中断处理程序恢复CPU环境

)2)作为特殊中断,明显区别于一般中断:

指令执行中产生中断信号并进行处理

在执行一个指令的过程中,可能会发生多次页面错误

缺页不是块,而是流程管理的一种方法

c .地址转换机制

基于寻呼系统地址转换机制增加

缺页的发生和处理调入要求) ) ) ) ) )。

从内存中替换1页的功能替换) ) ) ) ) ) )。

内存分配

如果作业不是一次加载而是部分加载,如何为进程分配内存涉及以下三个问题:

1)最小物理块数的确定

不能执行少于此数的进程

与计算机硬件结构有关,取决于指令的格式、功能、寻址方式

)2)物理块分配策略

固定分配、局部置换

困难:难以为每个进程分配“适量”物理块数

可变分配、全局置换

最容易实现,但会提高其他过程的页面错误率,影响运行

可变分配、局部置换若频繁缺页中断,则系统再为进程分配若干物理快;若缺页率特别低,则适当减少分配给该进程的物理块。

)3)物理块的分配算法

平均分配算法

比例分配算法

考虑优先级的分配算法:部分成比例

分配给各进程;另一部分根据各进程优先权,适当地为其增加份额,分配给各进程

调页策略
(1)何时调入页面
①预调页策略
优点:一次调入若干页,效率较好
缺点:预测不一定准确,预调入的页面可能根本不被执行到。主要用于进程的首次调入,由程序员指出应该先调入哪些页。
②请求调页策略
优点:由请求调页策略所确定调入的页,一定会被访问;比较容易实现。
缺点:每次仅调入一页,需花费较大的系统开销,增加了磁盘I/O的启动频率。
(2)从何处调入页面
在请求分页系统中的外存分为:
对换区:连续存放数据,读写速度较快
文件区:离散分配方式,I/O速度相对慢

====》发生缺页时,系统应从何处将缺页调入内存,分成三种情况:
①系统拥有足够的对换区空间:对换区
②系统缺少足够的对换区空间:对换区/文件区
③UNIX方式:随运行数据逐渐从文件区转到对换区
(3)页面调入过程

三、页面置换算法☆☆☆☆☆

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

最佳(Optimal)置换算法
优点:保证获得最低的缺页率
不足:无法实现,因为无法预知一进程将来的运行情况
作用:作为参照标准,评价其他算法

先进先出FIFO置换算法
优点:实现简单,把一进程已调入内存的页面按先后次序组织成一个队列,并设置一个指针替换指针),使它总是指向队首最老的页面。
不足:与进程实际运行规律不相适应(较早调入的页往往是经常被访问的页,频繁被对换造成运行性能降低)
例题:假设一个作业,运行中依次使用的页面情况如下,分配给该进程的内存物理块只有3个,按最佳置换算法,内存中的页面如何变化,缺页率是多少?

总结:
*系统用队列对先进先出的页面次序进行记录
*队列最长等于分配的物理块数
*始终置换队首的最老页面

==>Belady现象:出现分配的页面数增多,缺页率反而提高的异常现象
产生原因:FIFO算法的置换特征与进程访问内存的动态特征矛盾,即被置换的页面并不是进程不会访问的。

最近最久未使用LRU)置换算法
对上述例题用LRU算法计算:

不足:
*有时页面过去和未来的走向之间并无必然的联系。
*相应的需较多的硬件支持:记录每个页面自上次被访问以来所经历的时间t,淘汰时选择页面t值最大的;以及需要快速地知道哪一页是最近最久未使用的页面,用寄存器或栈。

1)寄存器实现:
页面被访问后将寄存器最高为置1,每隔一段时间将所有寄存器右移1位,寄存器值最小的值被换出
2)栈实现:
栈底是最先访问的页面,栈顶是最近访问的页面,若页面在栈中被重新访问,则将它置于栈顶,栈底页面被换出

例题:
某程序在内存中分配三个页面,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,5。
试分别利用OPT、FIFO及LRU算法计算缺页次数。

CLOCK置换算法
①简单的CLOCK置换算法
找未被访问过的页面作为置换页,若指针经过的页use bit=1,修改use bit=0(暂不凋出,给被用过的页面驻留的机会 ),指针继续向下。到所有页面末尾后再返回队首检查。
②改进CLOCK置换算法
置换时根据修改位m和访问位a的值有4种不同情况的处理。
第一轮,搜索a=0,m=0
第二轮,搜索a=0,m=1,在找的过程中将a=1的置为0,若没有找到进行第三轮
第三轮,搜索a=0,m=0,将a=1置0,若没有找a=0,m=1的,此时一定可以找到

上述四种方法比较,LRU较为合适

其他置换方法 四、请求分段存储管理方式☆☆ 请求分段中的硬件支持
(1)段表机制

①存取方式 :用于标识本分段的存取属性。R,R/W,W
②访问字段A :用于记录本段被访问的频繁程度。
③修改位M :表示该段在调入内存后是否被修改过。
④存在状态位P :指示该段是否已调入内存。
⑤增补位 :特有字段,表示该段运行中是否做过动态增长
⑥外存地址:用于指出该段在外存上的起始地址盘块号)。
(2)缺段中断机构
请求掉段策略:虚段不在内存,阻塞请求进程,若内存中有合适的空闲区则从外存中读入段,修改段表及内存空闲链,唤醒请求进程,若内存没有合适的空闲区,则判断空闲分区之和是否≥段,若是,则空区拼接,形成一个合适的空区,若不是,则淘汰一个或几个实段,以形成一个合适的空区。
(3)地址变换机构
访问某段,判断是否大于段长,若是,则分段越界中断处理,若不是则判断是否符合存取方式,若不是,则分段保护中断处理,若是则判断是否在主存中,若段不在主存中则缺段中断处理,若段在主存中修改访问字段,如写访问,置修改位为1,形成访问主存地址,访问主存。分段的共享和保护
(1)共享段表:共享计数count,若为0则回收共享段表空间
(2)分段保护
①越界检查
段表寄存器存放了段表长度;段表中存放了每个段的段长。
在进行存储访问时,将段号与段表长度比较,段内地址与段长比较。
②存取控制检查
尤其表现在不同进程对共享段的不同使用上。段表每个表项都设置“存取控制”字段,规定该段的访问方式:只读,只执行,读/写
③环保护机构
规定:低编号的环具有高优先权
遵循的原则:一个程序可以访问驻留在相同环或较低特权环中的数据。一个程序可以调用驻留在相同环或较高特权环中的服务。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平