操作系统概念——第9章 虚拟内存

虚拟内存允许程序大于内存大小,提高了CPU利用率和运行速度。按需调页只在执行时加载页面,减少I/O次数。页面置换算法如FIFO、LRU和二次机会用于处理缺页,其中LRU效果较好但硬件支持复杂。系统颠簸是由于频繁的页面调度,工作集合模型和页错误频率控制有助于避免此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 背景

之前的内存管理方法需要进程在执行之前将整个进程放在内存中。虚拟内存技术允许执行进程不必完全在内存中。这使得程序可以大于内存的大小。
特点
① 将逻辑内存和物理内存分开
② 允许文件或内存通过共享页为多个进程共享

(1)虚拟地址空间
进程如何在内存中存放的逻辑视图
(起始仔细看看,它很像进程的PCB)
在这里插入图片描述
理解:
① 栈堆之间的空白空间为虚拟地址的一部分,只有栈和堆生长时,才需要实际的物理页
② 稀地址空间:包含空白的虚拟地址空间

(2)共享页
① 通过将共享对象映射到虚拟地址空间,系统库可为多个进程共享。库按照只读的方式链接每个进程。
② 虚拟内存允许进程共享内存。允许进程创建内存区域,用于进程间共享
③ 允许系统调用for()创建进程进行期间的共享页
在这里插入图片描述

问题:为什么使用虚拟内存,它的优点是什么?

程序大小不受内存的限制进程不必完全装入内存
CPU利用率提高: 每个程序占用的物理内存减少,更多的进程可以同时进行
运行速度加快: 载入或交换程序到内存的I/O次数减少
允许文件或内存通过共享页为两个或多个进程共享

2. 按需调页

定义
对于按需调用虚拟内存,只有程序执行需要时才载入页,那些从未访问的页不会调入物理内存。

按需调页系统
① 进程驻留在第二级存储器上(通常是磁盘)
② 当需要执行进程时,使用懒惰交换。将进程执行需要页调入内存

纯粹按需调页
所有的页都不在内存中,就开始执行进程。会不断出现页错误直到所有的页均在内存中

问题:交换程序与调页程序的区别

① 交换程序是对整个进程进行操作
② 调页程序是对单个页进行操作。

2.1 基本概念

调页程序不是调入整个进程,而是把那些必须的页调入内存。
(1)调页程序的优点
① 减少了交换时间
② 减少了所需的物理内存空间

当换入进程时,调页程序推测在该进程再次换出之前会用到那些页。因此需要一定形式的硬件支持来区分哪些页在内存里,哪些页在磁盘中。
(2)有效位-无效位
在页表中同时存储有效/无效位。
有效:相关页有效且在内存中
无效:相关页无效(不在进程的逻辑空间内)、页有效但在磁盘上
页错误陷阱:当进程需要执行和访问不在内存中的页时(分页硬件发现页设置为无效),会产生页错误陷阱,陷入操作系统。
当进程执行和访问驻留在内存中的页时,执行会正常进行。对标记无效的访问会产生“页错误陷阱(page-fault trap)”,陷入操作系统。

问题:如何处理页错误?

(3)处理页错误的步骤
①访问:进程执行和访问未装入内存的页时,分页硬件发现已设置了无效位,产生页错误陷阱
②捕获页错误:产生中断,陷入操作系统,检查内部页表引用是否合法。若引用非法则终止进程,否则需要调入页面。
③装入失效页:找到一个空闲帧,调度一个磁盘操作,以便将所需的页调入刚分配的帧。
④重置页表
重启因陷阱而中断的指令:这种重复的工作不会很多(小于一个完整指令)
在这里插入图片描述

问题:从局部性的角度说明按需调用的合理性

背景: 单个指令可能访问多个页的内存,从而一个指令可能产生多个页错误。这会产生无法接收的系统性能。

分析: 这种情况是极为少见的。
① 局部模型说明,进程执行时是从一个局部移向另一个局部。局部是一个经常使用页的集合。
② 在同一局部内,进程只会在所需页均装入内存之前发生页错误。

2.2 按需调页的性能

(1)有效内存访问时间
对于绝大数计算机系统而言,内存访问时间(ma)的范围为 10~200ns.
有 效 访 问 时 间 = ( 1 − p ) × m a + p × 页 错 误 时 间 有效访问时间 = (1-p)\times ma+p\times 页错误时间 访=(1p)×ma+p×

其中,p为页错误的概率。
(2)页错误时间
主要有三部分组成:①处理页错误中断、②读入页、③重新启动进程。

问题:有效内存访问时间的计算方法

举例
设平均页错误处理时间为8ms,内存访问时间为200ns,则有效内存访问时间为
= ( 1 − p ) × 200 + p × 8000000 = 200 + 7999800 × p =(1-p) \times 200 + p \times 8 000 000 \\ =200+7999800 \times p =(1p)×

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冠long馨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值