【问题标题】:How do we context switch? [closed]我们如何进行上下文切换? [关闭]
【发布时间】:2012-12-16 17:42:41
【问题描述】:

我有一个问题集问题,我得到了解决方案,但不太了解细节。

问题是: 我们如何进行上下文切换?

答案是:

  1. 第 1 步:保存进程 A 的上下文
  2. 第 2 步:恢复进程 B 的上下文
  3. 第三步:继续执行进程B

我想知道保存和恢复进程 A 和 B 的上下文是什么意思?

在看答案之前我是想说保存A的内存映射,恢复B的内存映射,但是除了内存映射之外还有什么可以保存和恢复的吗?

【问题讨论】:

  • 这和C标签有什么关系?
  • @Omkant,是的,我的标签不好,抱歉。

标签: operating-system process


【解决方案1】:

简而言之,进程切换可以分为两部分,首先切换当前运行的PCB上下文寄存器(已保存和通用),然后从队列中找到最高优先级的进程并继续复制它之前切换的寄存器并返回其返回地址。如果队列之间没有其他进程要运行,则核心处于空闲状态或运行节电周期。如果它是一个多处理器,也应该注意,这意味着当前进程的上下文切换发生在一个内核上,然后切换到其他内核上运行。

关于上下文切换的非常好的信息SOlink

【讨论】:

    【解决方案2】:

    AFAIK 保存的数据是所谓的 PCB(过程控制块)。究竟存储什么以及如何存储取决于操作系统。但通常除了“内存映射”之外,PCB 还包含寄存器值(尤其是指令指针)、指向父进程的指针、I/O 信息等。

    【讨论】:

      【解决方案3】:

      上下文切换仅由主机操作系统负责,它对进程或代码编写者是透明的,除非您正在编写一些设备驱动程序等。

      假设有 100 个进程正在运行,操作系统会根据其优先级算法自动选择适当的进程,并在多 CPU 可用的情况下调度一个或多个进程。

      当您编写程序时,您编写的程序就好像您的程序会毫无障碍地运行。

      只要复习一下操作系统概念(http://en.wikipedia.org/wiki/Operating_system) 你就会明白的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-20
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 2011-12-04
        • 1970-01-01
        • 2018-09-22
        相关资源
        最近更新 更多