2015-07-13 76 views
0

执行睡眠(10)或等效语句时,CPU将执行什么操作。当CPU也执行上下文切换a将此过程带入等待状态时,它将如何精确等待60秒。CPU如何处理睡眠功能?

+0

http://stackoverflow.com/questions/1858640/how-can-i-create-a-sleep-function-in-16bit-masm-assembly-x86 –

+0

这不包括任何关于计划延迟@TymoteuszPaul可以如果可能的话,请你指点我的话 – user2144976

回答

0

睡眠函数通常要求操作系统将cpu分配给另一个进程。实际上,有一个特殊的进程(通常命名为'idle'),如果没有其他进程在等待cpu,它将获得cpu。在英特尔处理器上,空闲进程执行特殊指令(等待),该指令停止处理器(然后它不执行更多指令)。无论处理器是否分配给空闲进程,它都会响应硬件中断(在硬件希望通知处理器某些事件时由其他计算机硬件产生的特殊信号)。其中一个中断源是一个定时器 - 它每10ms左右发送一次中断给CPU(取决于具体的计算机和操作系统)。作为对定时器事件的响应,操作系统可以将cpu分配回执行睡眠的进程 - 如果经过了指定的时间。

由于操作系统能够以1个计时器刻度的精度来测量时间,因此您的过程将在指定时间内准备好+ - 2个刻度。如果您的cpu此刻正忙,您的进程将被分配给CPU,并有一些额外的延迟。