执行sleep(10)或等效语句时CPU会做什么。当CPU也执行上下文切换时,它将如何等待60秒才能使此进程进入等待状态。
答案 0 :(得分:0)
sleep函数通常要求操作系统将cpu分配给另一个进程。实际上,有一个特殊的进程(通常名为'idle'),如果没有其他进程在等待cpu,它将获取cpu。在intel处理器上,空闲进程执行特殊指令(等待),停止处理器(然后,它不执行更多指令)。无论处理器是否分配给空闲进程,它仍然响应硬件中断(如果硬件想要通知处理器某些事件,则由其他计算机硬件产生的特殊信号)。其中一个中断源是一个定时器 - 它每隔10ms左右向cpu发送一次中断(取决于具体的计算机和操作系统)。作为对计时器事件的响应,操作系统可以将cpu分配回进程,该进程执行睡眠 - 如果指定的时间已过去。
由于操作系统能够精确测量1个计时器滴答的时间,您的过程将在指定的时间内准备好+ - 2个滴答。如果您的cpu目前处于繁忙状态,您的进程会被分配cpu,但会有一些额外的延迟。