聽到有人說讓要寫乙個程式,讓使用者來決定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...