【发布时间】:2015-07-13 12:11:02
【问题描述】:
执行 sleep(10) 或等效语句时 CPU 会做什么。当 CPU 也进行上下文切换时,它将如何准确地等待 60 秒 a 使该进程进入等待状态。
【问题讨论】:
-
这不包括任何有关安排延迟的内容@TymoteuszPaul,如果可能的话,请您指点我与此的任何对话
执行 sleep(10) 或等效语句时 CPU 会做什么。当 CPU 也进行上下文切换时,它将如何准确地等待 60 秒 a 使该进程进入等待状态。
【问题讨论】:
sleep 函数通常要求操作系统将 cpu 分配给另一个进程。实际上,有一个特殊的进程(通常称为'idle'),如果没有其他进程在等待cpu,它会获取cpu。在英特尔处理器上,空闲进程执行特殊指令(等待),这会停止处理器(然后,它不会执行更多指令)。无论处理器是否分配给空闲进程,它仍然响应硬件中断(由其他计算机硬件产生的特殊信号,以防硬件想要通知处理器某些事件)。中断源之一是计时器 - 它每 10 毫秒左右向 cpu 发送中断(取决于具体的计算机和操作系统)。作为对计时器事件的响应,操作系统可能会将 cpu 分配回执行睡眠的进程 - 如果指定的时间已过。
由于操作系统能够以 1 个计时器滴答的精度测量时间,因此您的进程将在指定的时间 +- 2 个滴答内准备就绪。如果您的 cpu 目前很忙,您的进程会被分配 cpu,但会有一些额外的延迟。
【讨论】: