我有一个问题集问题,我得到了解决方案,但不太了解细节。
问题是: 我们如何进行上下文切换?
答案是:
- 第 1 步:保存进程 A 的上下文
- 步骤 2:恢复进程 B 的上下文
- 第三步:继续执行进程B
我想知道保存和恢复进程 A 和 B 的上下文是什么意思?
在看答案之前,我要说的是保存 A 的内存映射,恢复 B 的内存映射,但是除了保存和恢复的内存映射之外,还有什么东西吗?
我有一个问题集问题,我得到了解决方案,但不太了解细节。
问题是: 我们如何进行上下文切换?
答案是:
我想知道保存和恢复进程 A 和 B 的上下文是什么意思?
在看答案之前,我要说的是保存 A 的内存映射,恢复 B 的内存映射,但是除了保存和恢复的内存映射之外,还有什么东西吗?
简而言之,进程切换可以分为两部分,首先切换当前运行的PCB
上下文寄存器(已保存和通用),然后从队列中找到最高优先级的进程并恢复它,复制它之前切换的寄存器并返回到它的返回地址. 如果队列之间没有其他进程要运行,则核心处于空闲状态或运行节电周期。如果它是多处理器,也应该注意,这意味着当前进程的上下文切换发生在一个内核上,然后切换到其他内核上运行。
SOlink上有关上下文切换的非常好的信息
AFAIK 保存的数据是所谓的 PCB(过程控制块)。究竟存储什么以及如何存储取决于操作系统。但通常除了“内存映射”之外,PCB 还包含寄存器值(尤其是指令指针)、指向父进程的指针、I/O 信息等。
上下文切换仅由主机操作系统负责,它对进程或代码编写者是透明的,除非您正在编写一些设备驱动程序等。
假设有 100 个进程正在运行,操作系统会根据其优先级算法自动选择适当的进程,并在多 CPU 可用的情况下调度一个或多个进程。
当您编写程序时,您编写的程序就好像您的程序可以毫无障碍地运行一样。
只需复习操作系统概念(http://en.wikipedia.org/wiki/Operating_system) 你就会明白。