第五章-虚拟存储器

虚拟存储器

由操作系统提供一个比实际内存大的,假想的特大存储器,实现用小的内存在大的虚空间中进行程序运行
基本概念: 程序运行具有局部性
☞时间局部性:被引用过一次的存储器位置可能在不远的将来被再次引用
☞空间局部性:如果一个存储器被引用了一次,程序可能在不远的将来引用其附近位置的一个存储器
定义
具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的存储器系统

  • 运行
    (1)逻辑容量由内外存容量之和决定
    (2)运行速度接近于内存速度
    (3)每位的成本接近于外存

特征
(1)离散分配方式
(2)多次行:作业被分成多次调入内存
(3)对换性:运行作业运行时换行换进换出(进程整体对换不算)
(4)虚拟性:逻辑上扩容,使用户所看到的内存容量远大于实际内存

请求分页存储管理方式

基本结构

  • 页表项信息

在这里插入图片描述

  • 缺页中断机构
    当被访问页面不在内存中时产生缺页中断通知OS,由OS将所缺页调入内存
    (1)保护CPU环境
    (2)分析中断原因
    (3)转入缺页中断处理程序
    (4)恢复CPU环境
    在这里插入图片描述
  • 地址变换机构
    ☞产生和处理缺页中断(请求调入)
    ☞从内存中换出一页的功能(置换)

内存分配

☞ 最小物理块数确定:少于此数量则进程无法运行
☞物理块的分配策略

  • 固定分配,局部置换
    物理块分好后整个运行期间不再改变,缺页时从该进程n个页面中选一个换出,然后再调入一页
    难点:难以把握分配到合适的物理块数

  • 可变分配,全局置换(最易实现)
    (1)为每个进程分配一定数目的物理块
    (2)OS管理一个空闲物理块队列,发生缺页时取出一块分配给进程,装入欲调入页
    (3)空闲空间不足时可与其他任何进程页面置换(会使其他进程缺页率提高,影响运行)

☞物理块的分配算法

  • 平均分配算法
    将所有可供分配物理块平均分配
    不足:未考虑进程本身大小,利用率不均
  • 按比例分配算法
    设共有n个进程,则每个进程分到的物理块
    在这里插入图片描述
    在这里插入图片描述
    b应取整且大于最小物理块数
  • 考虑优先权的分配算法
    物理块分为两部分。一份按比例分给各进程,另一部分根据优先权适当分给各进程

调页策略
☞何时调入页面

  • 欲调页策略
    通过预测,将不久后可能被访问的页面预先调入内存(主要用于首次调入,由程序员指出)
    优点:一次性调入若干页,效率较好
    缺点:无法保证准确性

  • 请求调页策略
    运行需要的页面不在内存中,提出请求让OS将其调入内存
    优点:容易实现;确定调入的页一定会被访问
    缺点:每次仅调入一页,需花费较大系统开销,增加磁盘I/O的启动频率

☞从何处调入页面

  • 有足够对换区空间:对换区->内存
  • 缺少足够对换区空间
    文件区:操作不会被修改的部分(无需进行写入操作的部分)
    对换区:操作可能被修改的部分
  • UNIX方式:
    首次请求(未运行过):文件区->内存
    再次请求调用:对换区->内存

☞调入过程
(1)开始运行:先预调入一部分页面
(2)运行中:需要的页面不存在时
在这里插入图片描述

页面置换算法

进程运行时请求的页面不在内存中,且进行调入时内存无空闲空间,须将内存中的页面调入外存
算法应具有较低缺页率
※缺页率=页面调入次数(缺页次数)/页面使用总次数
最佳置换算法OPT
页面换出后永不再用,或未来不会再访问

  • 优点:保证获得最低缺页率
  • 不足:无法实现
  • 作用:作为评价其他算法的标准

先进先出置换算法FIFIO
已调入页面按先后次序组成队列,设置指针指向队首最老页面,内存中驻留最久的页面先被置换

  • 优点:实现简单
  • 不足:与进程实际运行规律不相适应,出现Belady现象

最近最久未使用置换算法LRU

  • 不足:
    (1)有时页面过去和未来走向无必然联系
    (2)需较多硬件支持:记录每个页面距上次访问所过时间t,淘汰是选择页面t值最大的。需要利用寄存器或栈快速得出哪页最久未使用
  • 寄存器记录时间的原理
    每个页面设置位数与进程页面总数相同的移位寄存器R
    在这里插入图片描述
    页面被访问后将对应寄存器的Rn-1置为1,被用到的标志1逐渐由低位向高位积累
    (1)系统发送定时信号,每隔一段时间所有寄存器右移一位
    (2)计较寄存器的值,最小的即为最久未用的
  • 栈记录时间的原理
    页面被访问后将页号从栈中移出再压入栈顶。栈底页号即为最久未使用页面

轮转算法clock(最近未使用算法)
(1)每页设置使用标志位use bit,页面被访问后将其置为1
(2)设置指针在需要置换时从当前指针位置按地址向后检索,寻找use bit=0的页面作为被置换页,若指针则再返回队首检查
(3)将经过的use bit =1的页面bit值置为0(暂不调出)

  • 改进
    (1)进一步将未访问过的页面细分为是否修改过,减少因修改造成的频繁I/O操作
    (2)除使用标志a,增加是否修改标志m
    (3)置换优先级:先a=0,m=0,没有时选择a=0,m-1

在这里插入图片描述
特殊现象

  • Belady现象:可分配的页面数增多,缺页率反而提高
    产生原因:FIFO算法的置换特征与进程访问内存的动态特征矛盾
  • 系统抖动:处理器的大部分时间用于来回的页面调度
    ☞产生原因:页面淘汰算法不合理;分配给进程的物理页面数过少
    ☞后果:
    (1)缺页率急剧增加
    (2)内存有效存取时间变长
    (4)系统吞吐量骤减,CPU效率降低
    ☞预防方法
    (1)局部置换策略
    (2)页面调入内存前检查各进程工作集,为缺页率高的作业增加有限物理块
    (3)缺页平均时间(S)=置换一个页面所需时间(L)时,磁盘和cpu达到最大利用率
    (4)在抖动发生时选择暂停部分进程,调节多道程序度

请求分段存储管理方式

程序在运行前只需调动若干分段便可成功启动,当所需段不在内存中时,请求OS将所缺段调入
硬件支持

  • 段表机制
    在这里插入图片描述
  • 缺段中断机制
    (1)由缺段中断机构产生缺段中断信号
    (2)进入OS,由缺段中断处理程序将所需段调入内存
    在这里插入图片描述
  • 地址变换机构
    段调入内存->修改段表->利用段表进行地址变换
    增加缺段中断的请求及处理功能

分段的共享

  • 实现方式:共享段表
    段表记录内容:
    (1)共享计数count:记录共享该段的进程数目
    (2)存取控制字段:记录分给不同进程的存取权限
    (3)段号:不同的进程使用不同的段号
  • 分享过程 在这里插入图片描述
  • 共享段的回收
    (1)撤销在进程段表中对应的表项,执行count:=count-1
    (2)count=0时,系统回收共享段表的物理内存,并撤销共享段表中对应的表项

分段保护

  • 越界检查
    比较:(1)段号和段表长度(2)段内地址和段长
  • 存取控制检查
    检查不同进程对共享段的使用。设置存取控制字段,规定:只读,只执行,读/写
  • 环保护机制
    访问相同/低特权环的数据;调用相同/高特权环的服务
    低编号的环具有高优先权
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值