gpt4 book ai didi

memory-management - 当在页表中找不到时,内核如何转换虚拟地址?

转载 作者:行者123 更新时间:2023-12-04 08:59:07 25 4
gpt4 key购买 nike

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

谢谢

最佳答案

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

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

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

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

Swap page from disk to memory:如果 OS 发现,这个页面已经被分配并且它已经被交换到磁盘(这可以通过一个位标志来跟踪)。它迅速要求页面文件管理器(在磁盘上)检索内容。当它被检索时,操作系统将其复制到新的页面框架并在页表中创建适当的条目。

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

关于memory-management - 当在页表中找不到时,内核如何转换虚拟地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37965451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com