程式設計之美 1 1 讓CPU佔用率曲線聽你指揮

2022-01-28 20:04:44 字數 1087 閱讀 2205

聽到有人說讓要寫乙個程式,讓使用者來決定windows任務管理器的cpu佔用率。

覺得很好奇。但第乙個想法就是寫個死迴圈。哈哈。不知道具體的佔用率是多少,但至少能保證在程式執行時,cpu的佔用率終會穩定在乙個值上(可能是100呢)。

在《程式設計之美》上看到了這個,就順手記下來吧。

原題是這樣的:

寫乙個程式,讓使用者來決定windows任務管理器(task manager)的cpu佔用率。程式越精簡越好,計算機語言不限。例如,可以實現下面三種情況:

1.cpu的佔用率固定在50&,為一條直線;

2.cpu的佔用率為一條直線,具體佔用率由命令列引數決定(引數範圍1~100);

3.cpu的佔用率狀態是一條正弦曲線。

簡析:cpu佔用率:在任務管理器的乙個重新整理周期內,cpu執行應用程式的時間和重新整理周期總時間的比率

任務管理器中顯示的是每個重新整理周期內cpu佔用率的統計平均值。

任務管理器報告cpu的使用率為0的時候,system idle process占用了cpu空閒的時間。

程式在等待使用者的輸入,或者在等待特定事件的發生(waitforsingleobject())時,系統中的程序可能會空閒下來。

小結:在任務管理器的重新整理期間內,使得cpu一會忙,一會閒,調節忙/閒的比例,就可以控制任務管理器中顯示的cpu佔用率。

解法一:

使cpu在一iduan時間內跑busy和idle兩個不同的迴圈,通過不同的時間比例,調節cpu使用率。

int main()

sleep(10);

}}

說明:960000000為cpu一秒種可以執行的空迴圈(p4 2.4ghz 時鐘週期)

若迴圈一一秒為週期,則波形可能為鋸齒狀。

10ms接近於windows的排程時間片。

調整迴圈引數,可以調整佔用率曲線。

注意點:

1.儘量減少sleep/awake的頻率,以減少作業系統核心排程程式的干擾;

2.盡量不要呼叫system call(比如i/o這些privilege instruction),因為它也會導致很多不可控的核心執行時間。

先記錄一下。稍後補充。。。

參考《程式設計之美》

程式設計之美 1 1讓cpu佔用率曲線聽你指揮

嘗試了書中的幾種方式,發現都不明顯,只有下面這種方法,而且要把時間片調到7ms的時候,才大致是在百分之50 讓cpu佔用率曲線聽你指揮 寫乙個程式,讓使用者來決定windows任務管理器的cpu佔用率,程式越精簡越好,計算機語言不限。實現下面三種情況 1 cpu的佔用率固定在50 為一條直線 2 c...

程式設計之美 讓CPU佔用率曲線聽你指揮

author fox 前兩天在買 計算機程式設計藝術 中文版的時候,偶然發現 程式設計之美 這本書,當時翻了一下,看到 讓cpu佔用率曲線聽你指揮 這樣的題目確實讓人為之一動。寫一段 可以讓cpu占有率曲線畫出平滑的正弦曲線,有點意思 當然,最後沒有買這本書,雖然我可以肯定這是本好書。我從csdn讀...

程式設計之美 CPU佔用率

寫乙個程式,讓使用者決定windows任務管理器的cpu佔用率。1.50 cpu佔用率。2.任意比例。3.正弦曲線。假設cpu是2.4ghz 2.4 10的9次方個時鐘週期每秒 cpu執行的是機器指令,最接近機器指令的語言是組合語言,如下空迴圈翻譯成5條彙編 2 400 000 000 2 5 96...