我们如何上下文切换?

时间:2012-12-16 17:42:41

标签: operating-system process

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

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

答案是:

  1. 步骤1:保存流程A的上下文
  2. 步骤2:恢复流程B的上下文
  3. 步骤3:继续执行流程B
  4. 我想知道保存和恢复进程A和B的上下文意味着什么?

    我打算说保存内存映射A,在查看答案之前恢复B的内存映射,但是除了内存映射到保存和恢复之外还有什么东西吗?

3 个答案:

答案 0 :(得分:2)

简单地说,可以分两部分查看过程切换,首先切换当前运行PCB上下文寄存器(已保存和通用)的电流,然后从队列中查找优先级最高的进程,并继续从其复制寄存器之前切换并返回其返回地址。如果队列没有其他进程要运行,则核心将移动空闲或运行节能循环。如果是多处理器,也应该小心,这意味着当前进程的上下文切换发生在一个核心上,并且切换到在其他核心上运行。

关于SOlink

上下文切换的非常好的信息

答案 1 :(得分:1)

AFAIK保存的数据是所谓的PCB(过程控制块)。存储的确切内容及其存储方式取决于操作系统。但通常在“存储器映射”旁边,PCB还包含寄存器值(尤其是指令指针),指向父进程的指针,I / O信息等。

答案 2 :(得分:0)

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

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

当你编写一个程序时,你写的就像你的程序没有任何障碍一样。

只需刷新您理解的操作系统概念(http://en.wikipedia.org/wiki/Operating_system)。