计算机操作系统笔记(5)

第五章虚拟存储器

5.1虚拟存储器概述

解决问题:从逻辑上扩充内存容量

传统存储器管理特征(虚拟存储不必要):

  1. 一次性(全部装入)
  2. 驻留性(驻留在内存不换出)

局部性原理:

  • 时间局部性
  • 空间局部性

虚拟存储器:

  • 概念:具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储系统
  • 实质:以时间换空间(但时间牺牲不大)

实现方式:

  1. 请求分页系统:以页为单位对换
    需要硬件:
    1)请求分页的页表机制
    2)缺页中断
    2)地址变换机构
    需要软件:
    实现请求分页机制
  2. 请求分段系统:以段位单位对换
    需要硬件:
    1)请求分段的段表结构
    2)缺段中断
    3)地址变换机构
    需要软件:
    实现请求分段机制

特征:

  1. 离散型(部分装入)
  2. 多次性(局部装入,多次装入)
  3. 对换性
  4. 虚拟性

虚拟存储器的调入需要动态重定位

5.2请求分页系统

硬件支持

页表机制:

  • 中断位:也称状态位,表示该页是否已调入内存
  • 访问位:记录本页在一段时间内被访问次数
  • 修改位:表示该页调入内存后是否修改过
  • 辅存地址(外存地址):指出该页在辅存上的地址

缺页中断机构:当所要页面不在内存时产生,缺页中断

  • 可在指令执行期间产生,转入缺页中断处理程序
  • 一条指令在执行期间可能产生多次缺页中断

地址变换机构:

(请求分页中的地址变换过程)

内存分配策略和分配算法

最小物理块数:能保证进程正常运行所需的最小物理块数
(不同的作业要求不同,比如间接寻址至少要三个物理块)

页面分配和置换策略:

  1. 固定分配局部置换
    给每个进程分配一组固定数目的物理块,每次置换只能从这些页面(物理块)中置换
    缺点:难以确定固定分配的页数
  2. 可变分配全局置换
  3. 可变分配局部置换
    根据进程的缺页率进行页面数的调整,进程之间相互不会影响

物理块分配算法:

  1. 平均分配算法(不好)
    将物理块平均分配给各个进程
  2. 按进程大小比例分配算法
    s=i=1n,bi=SiS×m
  3. 考虑优先权分配算法

页面调入策略

  1. 调入时机
    预调:根据空间局部性(成功率<=50%)
    请求时调入:100%成功,但较费系统开销
  2. 从何处调页
    对换区(系统有足够的对换区空间):全部从对换区调入所需页面(快)
    文件区(系统缺少足够的对换区空间):修改过的页面换出到对换区(稍慢)
    UNIX方式:未运行过的页面,都应从文件区调入。曾经运行过但又被换出的页面,从对换区调入。对共享页,应判断其是否在内存区。
  3. 页面调入过程

缺页率

缺页:要访问的页不在内存
f=FA=1,F为访问页面失败次数,A为进程总的页面访问次数
缺页率受影响因素

  1. 页面大小(操作系统可干预)
  2. 进程所分配物理块数目(操作系统可干预)
  3. 页面置换算法(操作系统可干预)
  4. 程序固有特性(操作系统不可干预)

5.3页面置换算法

最佳置换算法(OPT)

描述:调出的页面是以后永不使用的,或是在最长(未来)时间内不再访问的页面
特点:缺页率第,但不可实现

先进先出页面置换算法(FIFO)

描述:调出最先进入内存的页面(调出则在内存驻留时间久的页面)

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

描述:选择最近最久未使用的页面调出(利用“最近的过去”作为“最近的将来”的近似)
特点:FIFO的改进

硬件支持:

  1. 寄存器:为每个在内存中的进程配置一个移位寄存器,记录每个进程在内存中各页的使用情况
    R=Rn1Rn2Rn3...R2R1R0
    过程:
    每次被访问到的高位置1
    定时将寄存器右移一位
    把最小数值的寄存器所对应的页面当成最近最久未使用页面
  2. 栈:栈顶是最新被访问页面的编号,栈底是最近最久未使用页面的页面号
    过程:进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶

Clock置换算法

描述:

特点:性能近似LRU

改进型Clock置换算法

描述
由访问为A和修改位M可以组合成四种类型的页面:

  • 1类:A=0,M=0
    该页最近即未被访问又未被修改,是最佳淘汰页
  • 2类:A=0,M=1
    该页最近未被访问,但被修改,是次好淘汰页
  • 3类:A=1,M=0
    该页最近被访问,未被修改,不需要重写
  • 4类:A=1,M=1
    该页最近即被访问又被修改,很可能再次被访问

特点:目前主流,性能接近LRU,开销比LRU小

*过程:

  1. 从指针指向位置为起始,进行一轮扫描,寻找1类,找到则淘汰结束
  2. 从起始开始,进行第二轮扫描,寻找2类,找到则淘汰结束,扫描过的访问位置0
  3. 所有访问位置0,回到步骤1、2

请求分页系统的性能分析

分页系统是目前最常用的一种存储方式,其性能受缺页率影响,缺页率与进程所占用的物理块数有关
缺页率与有效访问时间:

  • 有效访问时间=(1-p)t+pf
    (p为缺页率,t为内存访问时间,f为缺页中断时间)
  • 结论:
    有效访问时间直接比例于缺页率,改善请求分页系统的性能,需要保持非常低的缺页率,同时提高I/O速度

抖动

概念:一种系统状态,系统花在页面替换上的时间远远大于执行进程的时间
原因:分配给进程的页面数少于进程所需要的最低页面数,导致不断的缺页中断
结论:可以利用CPU利用率与多道程序度检测消除抖动

5.4请求分段系统

段表机制:

  • 存取方式:根据段中信息的属性实施的保护(只执行、只读、可读/写)
  • 增补位:本段在运行过程中是否做过动态增长

缺段中断机构:

地址变换机构:

*分段的共享与保护

共享段表:多了一个共享段表项,记录进程计数count和共享进程清单
共享段的分配:进程段表增加表项记录共享段信息,共享段表项中count++、进程清单增加进程信息
共享段的回收:count--,回收进程段表中记录共享段的表项
分段保护:越界检查、存取控制检查、环保护机构

纯调入和请求调入

区别:
纯调入:只考虑内存分配问题,不考虑缺页情况(越界肯定就是越界)
请求调入:纯调入基础上还要考虑缺页情况,以及考虑缺页后的调度或置换问题(越界可能是作业在虚存上需要缺页中断请求调入)

posted @   kksk43  阅读(267)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
特效
黑夜
侧边栏隐藏
点击右上角即可分享
微信分享提示