【问题标题】:Difference between an interrupt and a page fault中断和页面错误之间的区别
【发布时间】:2017-09-13 11:25:47
【问题描述】:

在操作系统中,缺页和中断有什么区别?我知道页面错误是当 MMU(内存管理单元)在虚拟内存中找不到分配的位置时

【问题讨论】:

  • 页面错误始终是一个异常,一个错误,而中断不是这种情况。
  • @ForceBru 页面错误并非总是错误,页面可能已被换出,操作系统可以通过换入和映射页面来处理页面错误。
  • 两位尽可能简短地回答您的问题 - 页面错误是硬件可以创建的众多中断之一。

标签: c linux operating-system


【解决方案1】:

页面错误和中断是两个截然不同的概念。

来自OSdev wiki

当进程试图访问未映射到任何物理内存的虚拟内存区域时,当尝试在只读页面上写入时,当使用保留位或权限不足时。

关于中断:

中断是从设备(例如键盘)到 CPU 的信号,告诉它立即停止当前正在执行的操作并执行其他操作。例如,键盘控制器在按键被按下时发送中断。

所以基本上,页面错误是一个错误,中断是一个信号,您可以使用中断来检测页面错误。

有关该主题的更多信息:

【讨论】:

  • 页面错误不一定是错误。这只是来自硬件的指示,所需的虚拟地址未映射到页表中。该页面可能已被换出。在这种情况下,操作系统可以为页面错误提供服务,并且执行无法继续,就好像什么都没发生一样,换句话说,没有错误。
  • 当然,我没有说页面错误总是错误,我说“基本上”是为了向操作人员轻松解释页面错误背后的主要思想;)
  • 好的,我明白你的意思了。你的意思是硬件错误。程序没有错误。
【解决方案2】:

处理器旨在处理两种特殊类型的事件。

  1. 例外情况
  2. 中断

两者的处理方式相同。 CPU 知道的每个异常和中断都有一个编号。该数字用作操作系统维护的处理程序例程调度表的索引。当异常或中断发生时,CPU 进入内核模式,然后定位相应的处理程序并调用它。 (希望处理程序将返回到系统在事件发生之前所处的任何模式)。

异常和中断的区别在于前者由指令流触发,后者由与指令流无关的事件触发。

异常分为两类:错误和陷阱。前者允许重新启动当前指令,而后者不允许。

页面错误是一个异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 2017-05-25
    相关资源
    最近更新 更多