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

vis*_*ish 1 cpu operating-system process

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

Gil*_*il' 5

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

当进程在CPU上执行时,内核不会执行.它的状态保存在内存中.内核的执行可以恢复:

如果操作系统提供抢占式多任务处理,它将在一段时间(称为时间片)之后安排中断.在非抢占式操作系统上,如果不产生CPU,该进程将永远运行.请参阅哪些机制可以阻止进程永远接管处理器?解释先发制人如何运作.

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

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