1

我正在阅读有关需求分页中的页面错误的信息。页面错误发生在 1)被访问的内存是非法的 2)页面是有效的但不存在于主内存中

我读到使用有效-无效位可以判断内存是否不在逻辑地址空间中,因为相应的位将被标记为无效。

相同的有效-无效位用于识别上述2个条件。

我的问题是操作系统如何知道被访问的内存是非法的,或者页面是否有效但不在主内存中,只有一个有效-无效位?谢谢你!

4

1 回答 1

1

Demand Paging中,如果valid-invalid bit设置了(1),则表示关联page是合法的并且在内存中。但是,如果valid-invalid bit未设置(0),则意味着以下内容:

  1. 要么page无效。这意味着该页面不在进程中logical address space或者
  2. 对应page 的是 on disk

无效页面访问会导致页面错误陷阱。我们通过以下方式处理它。引用Silberschatz、Galvin、Gagne 的操作系统原则

  1. 我们检查该进程的内部表(通常与进程控制块一起保存)以确定引用是有效还是无效的内存访问。
  2. 如果引用无效,我们终止进程。如果它是有效的,但我们还没有引入该页面,我们现在将它引入。
  3. 我们找到一个空闲帧(例如,从空闲帧列表中取出一个)。
  4. 我们安排一个磁盘操作来将所需的页面读入新分配的帧中。
  5. 当磁盘读取完成时,我们修改与进程和页表一起保存的内部表,以指示该页现在在内存中。
  6. 我们重新启动被陷阱中断的指令。该进程现在可以访问该页面,就好像它一直在内存中一样。
于 2017-04-15T08:40:19.077 回答