2015-07-13 151 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,並有一些額外的延遲。