虚拟存储器引入
存储器管理方式
要求将作业全部装入内存才能运行
缺点
1)作业很大时无法运行
2)内存不能容纳大量作业
原因
内存不够大
解决办法
1)物理扩充
2)逻辑扩充 VM
虚拟存储器(VM)
从逻辑上实现内存扩充功能
优点
1)可运行大作业和更多道数作业
2)改善系统性能
传统存储器管理方式
特点
1)一次性:全部加入到内存中才可以运行,限制作业道数和作业大小,无必要
2)驻留性:作业被装入内存后,整个作业都一直驻留在内存中,其中任何部分都不会背换出。例如,有点进程阻塞态也占内存,另外部分程序根本用不上(如错误处理
程序局部性
程序运行存在局部性现象
局限性表现在两个方面
1时间局限性:存在大量循环
2空间局限性:如程序顺序执行、数组访问等
虚拟存储器基本工作情况
VM工作原理
1)根据局部性原理,只装入部分程序就开始运行,其余在磁盘
2)若访问的页(段)不在内存,产生缺页(段)中断
3)由0S请求调页功能调入内存再运行
4)若内存满则置换再调入
优点
小内存运行大程序,
更多作业并发执行
虚拟存储器的定义
虚拟存储器)简称VM
是指具有请求调入和置换功能,能从逻辑上对存储器容量进行扩充的一种存储器
VM容量(逻辑容量)由内存容量和外存容量之和决定,速度接近于内存速度,位成本接近于外存
VM是性能优越的存储器管理技术,广泛用于各种机型
虚拟存储器特征
多次性 传统存储器是一次性 VM多次调入
对换性 传统存储器是常驻性,VM多次对换,允许作业在执行过程中换入、换出,提高内存利用率
虚拟性 从逻辑上扩充容量,运行更大程序
虚拟性是以多次性和对换性为基础的,仅当系统允许将作业分多次调入内存,并能将内存中暂时不运行的程序或数据对换到外存,才可能实现虚拟存储器系统;多次性和对换性则必须建立在离散分配的基础上
所有VM都采离散式分配可提高CPU和M(内存)的利用率,提高系统并发能力和吞吐量
虚拟存储器的实现方法
1分页请求系统,也称为页式虚拟存储器
2分段请求系统,也称为段式虚拟存储器
3段页式虚拟存储器
大多数CPU集成有实现虚拟存储器功能的硬件,称为MMU
X86系列从80386开始支持段页式VM
分页请求系统
基本分页的基础上
+请求调页:将需要的页面调入内存
+页置换:将算法选择的淘汰页换出,换入需要的页
硬件支持
①请求分页的页表机制:纯分页基础上增加若干表项
②缺页中断机构
③地址变换机构
软件支持
实现请求分页的软件和页面置换的软件
分段请求系统
在分段系统基础上增加请求调段和分段置换功能的段式VM
以段为单位置换(简单讲解工作过程)
硬件支持
①请求分段的段表机制:纯分段基础上增加若干表项
②缺段中断机构
③地址变换机构
软件支持
实现请求分段的软件和分段置换的软件
请求分页存储管理方式
请求分页软件支持
请求分页的实现:基础分页+请求调页+页面置换
基本分页
内存划分为固定大小的物理块、作业划分成与物理块大小相等的页面
逻辑上相邻的页面可装入到不相邻的物理块中
在装入过程中使用页表记录逻辑页号和物理块之间的映射关系
由硬件地址转换机构将逻辑地址转换成物理地址
请求调页:将当前访问的且不在内存的页面调入内存
页面置换:若给该进程分配的物理块用完,使用算法选择一个淘汰的页面换出,然后将需要的页面换入内存
请求分页硬件支持
请求分页系统的硬件支持:
1一定容量的内存和外存
2请求页表机制、缺页中断机构以及地址变换机构
请求页表机制
请求页表作用
请求分页系统页表增加四个表项:
1状态位(存在位)P,指示是否在内存中
2访问字段A,访问次数或者未访问时间,供置换算法参考
3修改位M,是否修改过,供页面置换时参考
4外存地址,磁盘地址,如柱面、磁道、扇区
页号 物理块号 状态位P 访问字段A 修改位M 外存地址
缺页中断机构
访问的页不在内存时缺页中断,请求OS调入该页
和常规中断一样处理,
相同之处:
都要保护CPU环境(现场)
分析中断原因:轮询谁发出的中断请求
转入相应的中断处理程序进行处理
处理完后恢复CPU环境
特别之处:
①在指令执行期间产生和处理缺页中断信号
②一条指令执行期间可能产生多次缺页中断
地址变换机构
在分页系统地址变换机构的基础上,为实现虚拟存储器,再增加了某些功能所形成的,如产生和处理缺页中断,以及从内存中换出一页的功能等
将逻辑地址转换成物理地址
地址转换过程:具有快表(理解成缓冲)的地址变换过程+缺页中断处理过程
例:CPU执行指令LoadR1,3A5CH
请求分页中的内存分配
:以物理块为单位进行分配,遇到的问题:
为保证进程能正常运行,需要确定最小物理块数
为每个进程分配物理块,需要确定分配策略,即分配的物理块是固定的,还是可变的
为不同进程分配的物理块数,采取平均分配算法,还是根据进程大小按比例分配
最小物理块数确定
进程分配的物理块减少,则缺页率上升,执行速度降低
最小物理块数量指能保证进程正常运行所需的最小物理块数
最小物理块数与计算机硬件结构有关,取决于指令的格式、功能和寻址方式
例如
单地址指令月采用直接寻址方式:最小物理块数为2,一块放指令、一块放数据
单地址指令且采用间接寻址方式:最小物理块数为3
若指令或数据跨多个页面,则最小物理块数更多
内存物理块的分配策略
所谓固定分配,就是指每个进程分配一组固定数目的物理块,在进程运行期间不再改变。可变分配就是物理块数可以改变
局部置换就是指在运行中发现缺页,则只能从分配给该进程的n个页面中选出一页换出,然后再调入一页,以保证分配给该进程的内存空间不变。全局置换是指在发现缺页的时候,将os中所保留的空闲物理块取出一块分给该进程,或者以所有进程的全部物理课为标的,选择一块换出,然后将所缺之页调入。
固定分配局部置换
系统为进程分配固定数目的物理块
当该进程发生缺页时,仅从自己分到的物理块中选择淘汰的页面,将缺的页面调入淘汰页面所在的物理块中
进程分到的物理块数是固定不变的
最佳、先进先出、最近最久未使用页面置换算法均采用此种分配策略
驻留集:进程分配到的物理块数称为该进程的“驻留集
可变分配全局置换
先给进程分配一定数目的物理块,操作系统保留一定数量的空闲物理块
当发现某进程缺页时,就从系统中拿出一部分空闲物理块分配给该进程——只要缺页就分配
系统储备的空闲物理块分配完毕,若再缺页,则随机从内存中选择一页淘汰
因随机选择的物理块有可能是其它进程的物理块,因此会导致被抢夺物理块进程的缺页率增加
可变分配局部置换
先为进程分配一定数目的物理块,操作系统保留一定数量的空闭物理块
当某进程发生缺页时,先从自己的物理块中选择页面淘汰一—先自行解决,局部置换不会影响其他进程
当系统观测到该进程频繁缺页时,就会从系统储备的物理块中拿出部分物理块分配给该进程,直至该进程的缺页率减少到适度
若系统观测到某进程缺页率特别低,则适当收回分配给该进程的部分物理块
内存物理块的分配算法
平均分配算法
:系统中每个进程分配到的物理块数是相同的
假设系统中并发进程数为n
物理块=系统拥有的物理块总数/n
优点:实现简单
缺点:小作业会闲置很多物理块,长作业存在物理块数量不足的问题
按比例分配算法
:根据作业的页面数,按比例为每个进程分配物理块
假设系统中并发进程数为n
优点:考虑了作业的大小,因而长作业获得了较多的物理块
缺点:小作业获得的物理块较少,需要注意进程分配到的物理块数必须大于最小物理块数
考虑优先权的分配算法
系统将所有的物理块分成两部分,一部分按比例分配给系统中的并发进程,一部分根据各进程的优先权进行分配
可以为重要的、紧迫的任务分配较多的物理块,使之能尽快地完成
有些重要的实时控制系统,则可能是完全按优先权为各进程分配其物理块的
页面调入策略
为使进程能够正常运行,必须事先将要执行的那部分程序和数据所在的页面调入内存,现在的问题是:
系统应在何时调入所需页面
系统应从何处调入这些页面
是如何进行调入的
何时调入页面
预调页策略
用户作业初始运行时,程序员采用预调页策略将部分页面装入内存,使程序能够运行起来
根据系统采集到的工作集(5.4节介绍),把工作集中的所有页面调入内存
特点:一次性调入多个页面,可以节省调度时间,但是很难预测有用的页面
请求调页策略
进程在执行过程中,发现需要的页面不在内存,则通过请求调页策略将需要的页调入内存
特点:每次调入一个页面,易于实现,但频繁启动磁盘进行/0操作,故系统开销比较大
何处调入页面
系统将磁盘分成文件区和对换区
对换区采用连续分配方式存储数据,IO速度快
文件区采用离散分配方式存储数据,IO速度慢
系统发生缺页时,从何处调入缺页,分三种情况
系统对换区足够大:进程运行前将所有页面接贝到对换区,全部页面均从对换区快速换入
系统缺少足够的对换区:凡是不会修改的页面均从文件区换入,因不会被修改,所以无需写回磁盘,再次使用仍从文件区换入;可能被修改的页面,则需要换出到对换区,以后需要时从对换区换入
UNIX方式
凡是未运行过的页面都从文件区调入
换出的页面存放在对换区,再次使用时从对换区换入
若某进程请求页面是共享的页面,该页面有可能已经被其它进程调入内存,因此无需换入
如何调入页面
当访问的页面未在内存(状态位为0),则向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后转入缺页中断处理程序
如果内存有空闲,则选择一个物理块,将外存的页面调入,修改表项中的状态位等值
如果内存没有空闲,则启动页面置换算法,将内存中的一页与外存的页面进行置换,并且写入快表
如果被换出的页面被修改过,则需要重新存入外存,否则,不需要再写回到外存