如果在页面表中找不到虚拟地址,内核如何转换?

Lio*_*lan 3 operating-system kernel memory-management tlb page-tables

如果在页面表中找不到虚拟地址,内核如何转换?该页面位于磁盘上,但内核究竟知道在哪里?(磁盘中的特定地址)

谢谢

ama*_*eka 5

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

  1. 将PF发送到程序(分段故障)
  2. 分配记忆
  3. 将页面从磁盘切换到内存

将PF发送到程序(分段故障):只有当程序非法访问内存地址时,处理程序才会选择此项.

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

将磁盘从磁盘切换到内存:如果操作系统找到,则此页面已经分配,​​并且已经交换到磁盘(这可以通过位标志进行跟踪).它会快速询问页面文件管理器(在磁盘上)以检索内容.当检索它时,OS会复制它新的页面框架并在页面表中进行适当的输入.

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