2013-01-14 37 views

回答

3

當調度程序決定切換到空閒任務時,此時動態滴答開始工作,通過禁用週期性滴答直到下一個定時器到期。在此時間段之後或者在某個時間發生中斷時,tick將被重新啓用。

與此同時,CPU將按照架構特定的方式進行當之無愧的睡眠,從而節省您的能量。看看arch/x86/kernel/process.c中的cpu_idle()的定義。

/* 
* The idle thread. There's no useful work to be 
* done, so just try to conserve power and have a 
* low exit latency (ie sit in a loop waiting for 
* somebody to say that they'd like to reschedule) 
*/ 
void cpu_idle(void) 
2

你是什麼意思「無所事事」?

當CPU通電時,會發生一系列相當長的事情。一旦通電,CPU不能「無所事事」。由於存在電壓和週期性時鐘信號,它必須做一些事情。你可以再次關閉它,絕對不會做任何事情,但是當你再次需要時,你必須通過一長串事情來獲得穩定的時鐘信號。

所以空閒線程是一個線程,它是最小的。即如果乘以兩個浮點數需要最少的週期數和最少的電子電路數;那麼空閒線程會一直乘以兩個浮點數。另外,正如Wang所說,Linux內核(在某些配置中)會監視內核開始執行空閒線程並將其切換到較低頻率時禁用任何類型的定期OS內部維護。當需要內核時,這會導致一些延遲,但這樣會導致使用的功率更低。

相關問題