在进程执行时,操作系统如何处理其职责?

时间:2014-08-23 18:04:18

标签: process operating-system cpu

我长时间记住了这个问题,可能听起来很小。我们知道操作系统负责处理内存分配,进程管理等.CPU一次只能执行一项任务(假设它是单核)。假设操作系统已将CPU周期分配给某个用户启动的进程,并且CPU正在执行该操作。现在操作系统在哪里运行?如果某个其他进程正在使用CPU,那么操作系统是否正在运行?因为操作系统本身必须要运行CPU。如果OS没有运行,那么谁在处理那段时间的流程管理,设备管理等?

3 个答案:

答案 0 :(得分:5)

问题在于混淆谁控制了内存以及谁控制了CPU。措辞“运行”是不精确的:在单个CPU上,在处理器正在执行其指令的意义上,在任何给定时间运行单个任务;但是许多任务正在执行,因为它们的状态存储在内存中,并且它们的执行可以随时恢复。

当一个进程在CPU上执行时,内核没有执行。它的状态保存在内存中。内核的执行可以恢复:

如果操作系统提供preemptive multitasking,它将安排在一段时间后发生中断(称为time slice)。在非抢占式操作系统上,如果不产生CPU,该进程将永远运行。有关抢占如何运作的说明,请参阅What mechanisms prevent a process from taking over the processor forever?

某些事件会触发流程管理和设备管理等任务。如果事件是进程的请求,则请求将采用系统调用的形式,该系统调用执行内核代码。如果事件是从硬件触发的,则它将采用执行内核代码的中断形式。

(注意:在这个答案中,我同义地使用“CPU”和“处理器”来表示单个执行线程:单个核心,或者任何硬件体系结构。)

答案 1 :(得分:4)

在通过中断输入之前,OS内核根本不执行任何操作。可能因为硬件中断导致驱动程序运行而驱动程序选择通过操作系统退出,或者正在运行的线程可能产生syscall中断而进入。

除非发生中断,否则操作系统内核根本不执行任何操作。它不需要做任何事情。

编辑:

DMA(通常)用于批量I / O,由处理系统调用(软件中断)发出的请求的硬件子系统处理。当DMA操作完成时,DMA硬件会引发硬件中断,因此运行一个可以进一步向操作系统发出完成信号的驱动程序,可能会更改正在运行的线程集,因此DMA由中断管理。

新进程/线程只能由已发出系统调用的现有线程(软件中断)加载,因此新进程由中断启动。

它的中断,一路下来:)

答案 2 :(得分:0)

这取决于您使用的CPU调度类型:(在单核的情况下) 如果您的进程使用抢占式调度执行,那么您可以在一段时间内中断该进程,并且可以将CPU用于其他一些进程或O.S. 如果非抢占式调度进程在完成执行之前不会产生CPU。

如果是单个Core,如果有一个进程,那么它将使用给定的指令执行,如果有多个进程,则存储在 PCB 中的状态。如果没有中断发生,它会使进程队列一个接一个地执行。 PCB负责任何流程管理。

当进程初始化时,调用库函数系统调用并执行内核如果某些进程在执行期间失败或中断发生。