操作系统导论习题解答(21. Swapping: Mechanisms)

Beyond Physical Memory: Mechanisms

效率就是金钱。为了提高效率,一台计算机肯定不能一次只运行一个程序,而是一次运行多个程序。但是这样的话,page肯定不能全部存在内存中,所以就需要将page存在磁盘中。

1. Swap Space

首先我们要做的就是在磁盘中预留出一些空间给page,方便page存入和取出,这样的空间就叫做交换空间(swap space)
OS要对磁盘中的page进行读和写,那么肯定要知道每个page对应的磁盘地址吧。
磁盘中交换空间的大小应该很重要吧,这就决定了每次能够进行多少个page交换(进程运行)。
下图所示4页物理内存,8页交换空间
在这里插入图片描述
上图表明,进程0、1、2共享物理内存。这三个中的每个仅在内存中有一些有效page,其余都位于磁盘的交换空间中。进程3没有运行,所有page都在磁盘的交换空间中。

2. The Present Bit

我们需要present bit来表示是否所需要的page存在于物理内存中。present bit = 1,表示存在;present bit = 0,表示不存在(发生page fault)。
对于page fault,OS有个专门处理这个情况的page-fault handler

3. The Page Fault

当OS收到一个page的page fault时,它会在PTE中查找地址,然后向磁盘发出请求以将该页面读取到内存中。磁盘I/O完成后,OS将更新page table标记page存在,更新PTE的PFN字段以记录新获取的page在内存中的位置。(注意:当I/O正在运行时,该过程处于阻塞状态。OS可以在为page fault提供服务时自由运行其他准备就绪的进程。

其实我们在前面就说过,硬件设计者很不愿意相信OS可以完成所有事情。但是为什么对于page fault,硬件设计师他们相信OS会很好的处理它呢
原因有以下几点:

  1. 磁盘的page fault很慢。即使OS也需要很长时间来处理故障,执行大量指令,磁盘操作本身在传统上就很缓慢,所以如果硬件处理page fault的话,效率极其低下。
  2. 为了能够处理page fault,硬件就必须了解交换空间,这又增加了硬件的设计复杂性。

故出于性能简便性的考虑,OS处理page fault。

4. What If Memory Is Full?

我们上面所说的都是基于足够的内存空间,但是如果内存空间满了呢?
我们从磁盘中调用新的page加入到内存空间中就需要移出内存空间中的一个page。这就需要page-replacement policy(需要非常小心,移除错误的page可能会导致程序性能损失巨大)。

5. Page Fault Control Flow

在这里插入图片描述
在这里插入图片描述

6. When Replacements Really Occur

为了使少量内存可用,大多数OS具有某种 high watermark (HW) low watermark (LW)。工作方式如下:当OS注意到可用的page少于LW时,将运行负责释放内存的后台进程。该进程逐出page,直到有可用的HW为止。随后该后台进程进入休眠状态。

通过一次执行许多page替换(许多系统将多个页面分成集群或分组并将它们立即写入交换空间),磁盘的效率得到提高,新的性能优化成为可能。

posted @   astralcon  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示