📜  操作系统中的缺页处理

📅  最后修改于: 2021-09-27 06:25:02             🧑  作者: Mango

当程序尝试访问位于其地址空间中但当前不在系统 RAM 中的数据或代码时,会发生页面错误。因此,当发生页面错误时,会发生以下事件序列:

  • 计算机硬件陷阱到内核和程序计数器 (PC) 保存在堆栈中。当前指令状态信息保存在 CPU 寄存器中。
  • 启动汇编程序以保存通用寄存器和其他易失性信息,以防止操作系统对其进行破坏。
  • 操作系统发现发生了页面错误并尝试找出需要哪个虚拟页面。有时硬件寄存器包含这些必需的信息。如果没有,操作系统必须检索PC,获取指令并找出故障发生时它在做什么。
  • 一旦知道虚拟地址导致页面错误,系统会检查地址是否有效,并检查是否没有保护访问问题。
  • 如果虚拟地址有效,系统会检查页面框架是否空闲。如果没有可用的帧,则运行页面替换算法以删除页面。
  • 如果选定的帧是脏的,则安排页面传输到磁盘,发生上下文切换,挂起故障进程并运行另一个进程,直到磁盘传输完成。
  • 一旦页框干净,操作系统就会在需要的页面所在的位置查找磁盘地址,并安排磁盘操作将其引入。
  • 当磁盘中断指示页已到达时,更新页表以反映其位置,并将帧标记为处于正常状态。
  • 故障指令被备份到它在它开始时的状态并且 PC 被重置。故障被调度,操作系统返回到调用它的例程。
  • 汇编程序重新加载寄存器和其他状态信息,返回用户空间继续执行。

参考 –
cs.uttyler.edu
默温教授.wordpress.com