《操作系统》第六章 虚拟存储器

第六章 虚拟存储器

1.引入

实存管理:具有一次性、驻留性的存储器管理方法称为实存管理

1、作业(进程)逻辑空间不能超过实际内存大小
2、同时存在的进程数目受限较大

虚拟存储器:是指对内存的虚拟,是一种实际并不存在的内存空间,它包括两个方面的概念:
1、一级存储器概念:将大容量的外存作为内存的直接延伸,对内存、外存(交换区)实施统一管理
2、作业(进程)地址空间概念:虚存统一编址,按需要将作业(进程)放在内存或外存上

多次性:一个进程被分成多次调入内存运行
对换性:允许进程在运行过程中进行换进、换出
虚拟性:从逻辑上扩充内存容量
(容量上接近于外存,运行速度上接近于内存)

虚拟存储器的容量主要取决于:
1、计算机的地址结构
2、外存储器的空间

分页请求管理:基本分页上增加调入和置换功能,硬件设备
页面置换算法:最佳置换、先进先出、LRU、改进型Clock
请求分段管理:基本分段上增加调入和置换功能,硬件设备

2.页面置换算法

在这里插入图片描述

2.1最佳置换算法OPT

选择被置换的页面,将是永不使用的页面,或最长时间不使用的页面
优点:可保证最低的缺页率
缺点:不可能真正实现,只可作为其它算法的评价参考

假定系统为进程固定分配三个物理块,且页面被访问顺序为(p163):7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1

在这里插入图片描述

第一次置换,7最长时间不使用,被置换

需要6次页面置换

2.2先进先出置换算法FIFO

选择最先进入内存的页面,即选择在内存中驻留时间最长的页面予以淘汰
优点:算法简单
缺点:性能不佳(p163)

在这里插入图片描述

需要12次页面置换

2.3最近最久未使用LRU

选择最近最久未被使用的页面淘汰
优点:性能较好
缺点:需要较多的硬件支持

在这里插入图片描述

需要9次页面置换

2.4时钟置换算法CLOCK/最近未用算法NRU

Clock置换算法是LRU算法的近似算法
Clock算法也称最近未用算法(NRU)(p166)
Clock算法中,设置1位访问位,记录页面是否被访问过(访问过为1,未访问为0)

实现原理:
⑴、将内存所有页面用指针链成一个循环队列
⑵、Clock算法沿链查找页面
⑶、如果访问位为0,则换出
⑷、如果访问位为1,则将访问位复0;并继续沿链查找下一个页面,直到找到一个访问位为0的页面换出

在这里插入图片描述

2.5改进型Clock置换算法

改进型Clock置换算法除设置1位访问位(A),还设置1位修改位(M)
将页面分成四类:
⑴、1类:A=0,M=0,最佳淘汰页
⑵、2类:A=0,M=1
⑶、3类:A=1,M=0
⑷、4类:A=1,M=1,最不应淘汰页

实现原理:(p167)
⑴.查找指针前进一步,判断当前页是否为第1类页(A=0,M=0),是则选择该页淘汰
⑵.否则,继续沿链向下查找
⑶.如果沿链查找一周,没有第1类页面,则查找第2类页(A=0,M=1),找到后淘汰,并将访问过的页面访问位置为0(A=0)
⑷.如果沿链查找一周后,未找到第2类页面,则将所有页面的访问位置0,重新从第⑴步开始
在这里插入图片描述

### 关于操作系统第六章虚拟存储器的知识导图 以下是基于已有引用内容以及专业知识整理的操作系统第六章虚拟存储器的核心知识点及其结构化表示: #### 1. **虚拟存储器概述** - 虚拟存储器是一种通过硬件和软件相结合的技术来扩展物理内存容量的方法[^1]。 - 它的主要目的是提供比实际物理内存更大的逻辑地址空间。 #### 2. **虚拟存储器的关键特性** - **虚拟性**: 提供了一个看似无限大的地址空间,使程序能够运行在远大于实际可用物理内存的空间中[^1]。 - **离散性**: 将程序的逻辑地址划分为多个独立的部分(如页或段),并将其映射到不连续的物理内存区域[^1]。 - **共享性**: 支持不同进程之间共享某些部分的内存数据[^1]。 #### 3. **页面置换算法** 页面置换算法决定了当发生缺页中断时,哪些页面应该被替换掉。常见的算法包括但不限于: - FIFO (First In First Out): 替换最早进入内存的页面。 - LRU (Least Recently Used): 替换最近最少使用的页面[^2]。 - OPT (Optimal Page Replacement Algorithm): 基于未来访问情况的最佳替换策略(理论上不可实现)。 #### 4. **缺页中断与性能分析** 缺页中断是指当CPU试图访问不在内存中的页面时发生的事件。频繁的缺页会显著降低系统的整体性能[^2]。 #### 示例计算 对于给定的页面访问序列 `1, 8, 1, 7, 8, 2, 7, 2, 1, 8, 3, 8, 2, 1, 3, 1, 7, 1, 3, 7` 和分配给某个进程的4个内存页面,在LRU算法下会发生6次缺页中断。 ```python def lru_page_replacement(pages, frame_size): memory = [] page_faults = 0 for page in pages: if page not in memory: if len(memory) < frame_size: memory.append(page) else: # Replace the least recently used page memory.pop(0) memory.append(page) page_faults += 1 # Update access order by moving accessed page to end of list if page in memory: memory.remove(page) memory.append(page) return page_faults pages_sequence = [1, 8, 1, 7, 8, 2, 7, 2, 1, 8, 3, 8, 2, 1, 3, 1, 7, 1, 3, 7] frame_count = 4 faults = lru_page_replacement(pages_sequence, frame_count) print(f"Total number of page faults using LRU: {faults}") ``` #### 5. **抖动现象** 抖动(Thrashing)是虚拟存储系统中的一种异常状态,通常发生在过多的时间花费在页面交换而非实际工作上[^3]。 - 当系统处于抖动状态时,处理器利用率接近零,因为大部分时间都用于页面的换入换出操作[^3]。 --- ### 思维导图建议结构 以下是一个可能的知识导图框架,帮助理解虚拟存储器的相关概念: ``` 虚拟存储器 ├── 概述 │ ├── 定义 │ └── 特征 │ ├── 虚拟性 │ ├── 离散性 │ └── 共享性 ├── 地址转换机制 │ ├── 逻辑地址 vs 物理地址 │ └── TLB缓存优化 ├── 页面管理 │ ├── 分页技术 │ │ ├── 页面大小的选择 │ │ └── 内部/外部碎片 │ └── 分段技术 └── 页面置换算法 ├── FIFO ├── LRU └── OPT ``` 此思维导图可以进一步细化为更具体的子节点,以便更好地掌握各部分内容之间的联系。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值