【2021/7/19 更新】【梳理】简明操作系统原理 第六章 交换(docx)

本文主要梳理了操作系统中的交换概念,参考了Operating Systems: Three Easy Pieces等教材。内容涵盖交换区的分配与回收,与内存管理的相似性。适合作为《操作系统原理》课程的学习资料,重点概念以蓝色标记,附带Linux命令和代码示例,并提供了文档的下载链接。
摘要由CSDN通过智能技术生成

配套教材:
Operating Systems: Three Easy Pieces Remzi H. Arpaci-Dusseau Andrea C. Arpaci-Dusseau Peter Reiher
参考书目:
1、计算机操作系统(第4版) 汤小丹 梁红兵 哲凤屏 汤子瀛 编著 西安电子科技大学出版社

在线阅读:
http://pages.cs.wisc.edu/~remzi/OSTEP/
University of Wisconsin Madison 教授 Remzi Arpaci-Dusseau 认为课本应该是免费的
————————————————————————————————————————
这是专业必修课《操作系统原理》的复习指引。
需要掌握的概念在文档中以蓝色标识,并用可读性更好的字体显示 Linux 命令和代码。代码部分语法高亮。
文档下载地址:
链接:https://pan.baidu.com/s/1bo5CoLYPmBeVZ9i_9nOPMA
提取码:0000

六 交换

当内存不足以放置所有进程的地址空间时,就需要将一部分页面移动到硬盘上。早期的系统中,程序员需要手动移动暂时不需要的页面。也就是说,每次调用函数或访问数据时,都要手工检查被访问的内容是否在内存中。现代操作系统会自动帮我们完成这项工作。硬盘上的一部分空间被保留下来,专门用于暂存不太紧要的内存页,这部分空间称为交换区(swap space)。

页表中有一位存在位(present bit),用于刻画该页是否正位于内存中。如果试图访问一个不在内存中的页,就会发生页错误(page fault),也称页缺失。OS会运行页错误处理程序(page-fault handler)进行处理。一般地,OS会把位于交换区的页移回内存。
为了确保顺利进行页交换,OS就需要记录处于交换区的页的磁盘地址(disk address)。这个地址可以记在页表里,也可以在磁盘上建立类似于页表的结构来记录。页从磁盘回到内存时,OS就更新页表中相应虚拟地址的物理页号,然后重试指令。这次重试可能会引发TLB缺失,于是TLB中的相应内容也被更新。再一次重试时,就能直接从TLB中取得回到内存中的页的物理地址了。I / O的开销相比内存内的操作大得多,因此OS一般会将进程I / O和进程切换尽量同时处理,以充分利用硬件。
页缺失的代价是非常大的,可达数百万个CPU周期。

顺带说一下,虚拟内存中的一些术语可能有些令人迷惑。例如,page fault有时可能也会指非法访问(尝试写入受保护的页面,等等)。尝试访问一个在硬盘交换区而不在内存中的页面,并不是非法操作,所以称之为page fault有些奇怪。我们怀疑,使用page fault而不是page miss的原因可能是,当尝试访问被移入交换区的页面时,硬件不知道怎么处理,只是产生异常,并简单地将控制权交给操作系统。这与进程做出非法操作时的处理方法相同,所以说,使用page fault这个术语也有一定道理。

硬件一般不处理页错误。虽然硬件工程师对操作系统包揽大部分事务这一点常常持有不信任的态度,但页错误仍被交由操作系统处理。这是因为:
(1)磁盘相比内存是非常慢的。就算OS执行处理页错误的其它命令花费很长时间,一般也远远少于比将请求的页从磁盘调回到内存花费的时间,所以对总体的运行性能影响十分小,无需通过硬件进行专门的加速。
(2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值