操作系統的系統開銷比率怎麼計算?

如題:就緒隊列中有10個進程,時間片設置為200ms,CPU進程切換要花費10ms,則系統開銷所佔比率是多少?

下面的講解是這樣計算的:2x10/(2*200)=5%

為什麼不這樣算呢?10/(10+200)


我猜題主你的理解操作系統調度應該是這樣的:

時鐘中斷 時鐘中斷
|----任務執行200ms----&>|-操作系統調度10ms-&>|----任務執行200ms----&>|-....

可是實際上是這樣的:

時鐘中斷 時鐘中斷
|-操作系統調度10ms-&>|----任務執行(200-10)ms----&>|-....

也就是說,操作系統調度耗時本身要算到時鐘的時間片里的

因為操作系統的調度邏輯是:發生中斷-&>處理調度-&>發生中斷-&>處理調度...

一個時間片長度就是兩次中斷的時間長度。

所以操作系統開銷可以大概理解為:

調度耗時/時間片長度:10/200 = 5%


推薦閱讀:

為什麼要了解進程與線程的區別,了解二者的區別有什麼意義呢?
安卓系統的通病後台啟動進程過多,待機狀態下就占內存一半,怎麼解決這種問題呢?
如何看待針對 Windows 系統的 "AtomBombing" 內存注入攻擊 ?
在單線程的情況下,NodeJs是如何分發子任務去執行的?
操作系統用戶級線程能夠調用內核嗎?

TAG:操作系統 | 線程 | 進程 |