【操作系统复习】第6章 虚拟存储器 1

前面所介绍的各种存储器管理方式,有一个共同特点作业全部装入内存后方能运行

问题: 大作业装不下 少量作业得以运行

解决办法:

方法一:从物理上增加内存容量,成本高

方法二:从逻辑上扩充内存容量->虚拟存储技术

程序的局部性的应用

1. 部分装入:在程序装入时,不必将其全部读入到内存,而只需将当前需要执行的部分页或段读入到内存,就可让程序开始执行。

2. 请求调页(段):在程序执行过程中,如果需执行的指令或访问的数据尚未在内存(称为缺页或缺段),利用OS提供的请求调页(段)功能,将相应的页或段调入到内存,然后继续执行程序。

3. 置换:如果此时内存已满,无法装入新的页(段),则还必须调用页(段)置换功能。

4. 大作业+多并发:这样,便可使一个大的用户程序,在较小的内存空间运行; 也可在内存中同时装入更多进程并发运行。

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

多次性:作业中的程序和数据允许被分成多次调入内存允许

对换性:作业运行时无须常驻内存,允许作业在运行过程中换进换出

虚拟性:从逻辑上扩充了内存容量,使用户看到的内存容量远大于实际内存容量

离散性:在内存分配时采用离散分配方式

实现原理:进程运行只装入部分程序和数据,在外存保留完整副本,运行中动态调整进程在内存中的部署

优点: 利用率高,方便用户,对多道程序运行有较强的支持

实现方式:两种典型虚拟存储器实现方式

 

页式虚拟存储

1. 页式虚拟存储:在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储系统

2. 基本思想:分页管理,装入少量页运行,缺页故障后调整

3. 页表结构: 页号+ 标志位+ 块号+ 外存地址

4. 地址转换: 正常地址转换,缺页时产生缺页中断

段式虚拟存储

1. 段式虚拟存储:在分段系统的基础上,增加请求调段及分段置换功能后,所形成的段式虚拟存储

2. 基本思想:装入部分段,动态装入调出

3. 段表结构:段号+ 主存起址+ 长度+ 辅存起址+标志位+扩充位…

4. 缺段中断:缺段时产生缺段中断

5. 地址变换机构:逻辑地址->物理地址,增加缺段中断

请求分页中的硬件支持

请求页表机制

缺页中断机构

在指令执行期间产生和处理中断信号

一条指令在执行期间,可能产生多次缺页中断

地址变换机构

与分页内存管理方式类似

为了实现请求分页,系统要提供一定的硬件支持。除了一定容量的内存和外存,还需要有:页表机制、缺页中断机构和地址变换机构

扩充表(以前页表结构只包含页号和块号两个信息,这是进行地址变换机构所必须的,为了判断页面在不在主存,可在原页表上扩充)

页表机制

用于将用户逻辑地址空间变换为物理地址空间。在页表中增加若干项,以便于标志程序或数据的状态。页表项:

 

状态位(存在位)P:表示该页是否调入内存

访问字段A:用于记录该页在某段时间内被访问的次数

修改位M:表示该页在调入内存后是否被修改过

外存地址:该页在外存上的地址,通常是物理块号

缺页中断机构

缺页中断:在地址映射过程中,在页表中发现所要访问的页不在内存,则产生缺页中断。操作系统接到此中断信号后,就调出缺页中断处理程序,根据页表中给出的外存地址,将该页调入内存,使进程继续运行下去

2. 分配:如果内存中有空闲块,则分配一页,将新调入页装入内存,并修改页表中相应页表项目的状态位及相应的内存块号

3. 淘汰:若此时内存中没有空闲块,则要淘汰某页,若该页在内存期间被修改过,则要将其写回外存

处理过程:保护CPU现场、分析中断原因、转入缺页中断处理程序、恢复CPU环境

特点:缺页中断发生在指令执行期间,而通常情况下,CPU是在一条指令执行完后,才检查是否有中断请求到达;一条指令在执行期间,可能产生多次缺页中断。

 

地址变换机构

1. 在地址变换时,首先检索快表,试图从中找到要访问的页。如找到,修改其访问位。对于“写”指令,还要设置修改位的值。如未找到则转3。

2. 利用页表项中的物理块号和页内地址,形成物理地址。

3. 查找页表,找到页表项后,判断其状态位P,查看该页是否在内存中。如果在,则将该页写入快表(若快表已满,则应该先调出某个或某些页表项)。如果不在,则产生缺页中断,由OS从外存将该页调入内存

请求分页中的内存分配

在为进程分配物理块时,要解决下列的三个问题:

1. 保证进程可正常运行所需要的最少物理块数

2. 每个进程的物理块数,是固定值还是可变值(分配策略)

3. 不同进程所分配的物理块数,是采用平均分配算法还是根据进程的大小按照比例予以分配(分配算法)

内存分配策略

1、固定分配局部置换

思路

– 分配固定数目的内存空间,在整个运行期间都不改变

策略

– 如果缺页,则先从该进程在内存的页面中选中一页,进行换出操作,然后再调入一页

特点

– 为每个进程分配多少页是合适的值难以确定

2、可变分配全局置换

思路

– 每个进程预先分配一定数目的物理块,同时OS也保持一个空闲物理块队列

策略

– 当缺页时,首先将对OS所占有的空闲块进行分配,从而增加了各进程的物理块数。当OS的空闲块全部用完,将引起换出操作

3、可变分配局部置换

思路

– 系统根据缺页率动态调整各进程占有的物理块数目,使其保持在一个比较低的缺页率状态下

特点

– 使大部分进程可以达到比较近似的性能

物理块分配算法

在采用固定分配策略时,可使用下列方法来分配:

1. 平均分配算法:将系统中所有可供分配的物理块,平均分配给各个进程。

2. 按比例分配算法:按照进程的大小比例分配物理块。

3. 考虑优先权的分配算法:为了对于紧迫的作业,能够尽快完成。可以将内存的物理块分成两部分,一部分按比例地分配给各进程;另一部分则根据各进程的优先权,适当增加其相应的份额,分配给各进程。

页面调入策略

何时调入页面

预调页策略:预先调入一些页面到内存

请求调页策略:发现需要访问的页面不在内存时,调入内存

从何处调入页面

如系统拥有足够的对换区空间,全部从对换区调入所需页面

如系统缺少足够的对换区空间,凡是不会被修改的文件,都直接从文件区调入;当换出这些页面时,由于未被修改而不必再将它们重写磁盘,以后再调入时,仍从文件区直接调入

UNIX方式:未运行过的页面,从文件区调入;曾经运行过但又被换出的页面,从对换区调入

① 进程需要的页面不在内存,引起缺页中断

② 中断处理程序保留现场环境,转入缺页中断处理程序

③ 中断处理程序查找页表,得到对应的外存物理块号。如果内存有空闲,则启动磁盘操作,将所缺的页面读入,并修改页表。否则,到4。

④ 执行置换算法,选出要换出的页面,如果该页修改过,应将其写入磁盘,然后将所缺页调入内存,修改相应表项,将其存在位置为‘1’,并放入快表。

⑤ 利用修改后的页表,形成物理地址,访问内存数据。

缺页率

访问页面成功(在内存)的次数为S

访问页面失败(不在内存)的次数为F

总访问次数为A=S+F

缺页率为 f= F/A

影响因素:页面大小、分配内存块的数目、页面置换算法、程序固有属性

缺页中断处理的时间:假设被置换页面被修改的概率是β

 

请求分页存储管理方式

优点:

– 可提供多个大容量的虚拟存储器:作业的地址空间不再受主存大小的限制

– 主存利用率大大提高:作业中不常用的页不会长期驻留在主存,当前运行用不到的信息也不必调入主存

– 能实现多道作业同时运行

– 方便用户:大作业也无须考虑覆盖问题

缺点:

– 缺页中断处理增加系统开销

– 页面的调入调出增加I/O系统的负担

– 此外页表等占用空间且需要管理,存在页内零头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆水獭_(:_」∠)_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值