【问题标题】:Does page fault necessarily cause context switch in Linux?页面错误是否一定会导致 Linux 中的上下文切换?
【发布时间】:2014-04-03 17:51:23
【问题描述】:

虽然我了解某些上下文切换是由页面错误引起的,但页面错误是否一定会导致上下文切换?

【问题讨论】:

  • 我认为是的。从磁盘读取页面的时间太长,不能让处理器浪费它。
  • 内存管理保护级别上下文切换,是的。线程上下文切换,如果没有其他东西要运行,则不会。如果没有准备好切换到的线程,则不会发生上下文切换。
  • 假设我们总是有准备好的线程。
  • @MartinJames 总是有另一个线程要切换到:空闲线程。

标签: linux multithreading linux-kernel


【解决方案1】:

是的。如果发生这种情况是因为您的用户模式下的程序导致“page_fault”,则运行它的 CPU 会收到“page_fault”的中断,并且当前执行的上下文必须保存在系统的堆栈空间中(通常是固件这样做)以便将控件传递给“page_fault”的处理程序(/kernel/entry.S 中定义的“ENTRY(page_fault)”)。

【讨论】:

    【解决方案2】:

    页面错误可能发生在用户模式或内核模式。如果它发生在用户模式下,无论结果如何,都会导致上下文切换。并且发生在内核模式,除了上下文切换,访问地址 0 会导致内核恐慌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 2020-05-30
      • 1970-01-01
      相关资源
      最近更新 更多