【问题标题】:Does there have to be a mode switch for something to qualify as a context switch?是否必须有一个模式切换才能成为上下文切换?
【发布时间】:2011-11-29 09:27:39
【问题描述】:

是否必须有一个模式切换,即从user modekernel mode,才能将操作称为context switch

【问题讨论】:

  • 它们没有直接关系。 “模式切换”发生在一个进程内。上下文切换涉及多个进程(或线程或其他)。上下文切换并不意味着模式切换(可以单独由硬件完成)。模式切换也不需要上下文切换。

标签: language-agnostic process operating-system context-switch


【解决方案1】:

没有。并非所有处理器都有privilege levels

上下文切换通常意味着从Process Control Block 恢复执行状态。但是,context 的概念是实现定义的。来自Wikipedia

构成上下文的内容由处理器和操作系统决定。
...
当操作系统需要在用户模式和内核模式之间转换时, 不需要上下文切换;模式转换本身并不是上下文切换。但是,根据操作系统的不同,此时也可能会发生上下文切换

【讨论】:

  • '当操作系统需要用户模式和内核模式之间的转换时,不需要上下文切换。'如果反过来呢?我的意思是上下文切换需要模式切换吗?
【解决方案2】:

上下文切换仅在内核模式下发生。如果上下文切换发生在两个用户模式进程之间,首先 cpu 必须切换到内核模式,执行上下文切换,返回用户模式等等。 所以必须有一个与上下文切换相关的模式切换。

【讨论】:

    【解决方案3】:

    模式切换 - 当单个进程模式从用户级切换到内核级或相反时。它通过系统调用发生。当进程调用系统调用时,进程模式将变为内核模式,内核将开始代表用户进程执行操作。一旦系统调用返回,进程模式将从内核模式变为用户模式。 “模式”是与过程相关的属性。所以,模式切换就是单个进程的模式切换。

    上下文切换-当正在运行的进程当前状态被存储在某个地方并且选择一个新进程来运行并且它已经存储的状态被加载到CPU寄存器中时。现在新进程开始运行。这整个“上下文切换”过程由“进程调度程序”完成。

    【讨论】:

    • 很好的解释,我在找这个。
    猜你喜欢
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2011-07-27
    相关资源
    最近更新 更多