3

当在页表中找不到虚拟地址时,内核如何转换它?该页面位于磁盘上,但内核如何知道具体在哪里?(磁盘中的具体地址)

谢谢

4

1 回答 1

5

每当程序命中一个地址并且它不在页表中时,CPU 异常 14 (Page Fault) 会中断内核。
控制权转移到内核 IDT 处理程序,该处理程序调用页面错误处理程序。
Page Fault 检查 CR2 寄存器并确定是否需要

  1. 发送 PF 到程序(分段错误)
  2. 分配内存
  3. 将页面从磁盘交换到内存

Send PF to Program (Segmentation Fault) : 仅当程序对内存地址进行非法访问时,处理程序才选择此选项。

分配内存:这通常发生在程序访问已分配给它的内存区域(通过 sbrk)但操作系统没有分配任何页框时。

将页面从磁盘交换到内存:如果操作系统找到,则该页面已分配并且已交换到磁盘(可以通过位标志跟踪)。它快速要求页面文件管理器(在磁盘上)检索内容。当它被检索到时,操作系统将它复制到新的页框并在页表中进行适当的条目。

注意:答案专门针对 x86/x86_64 处理器。

于 2016-06-22T16:56:08.853 回答