cpu之進程調度

一、進程狀態:

執行態(run):進程正在使用CPU

等待態(wait):進程正在等待I/O完成,不在使用也不能使用CPU

就緒態(ready):進程不在使用CPU,但已經純備好用使用CPU

二、CPU調度算法

  衡量CPU調度算法的標準有:CPU利用率、用戶程序響應時間、系統吞吐量、公平合理性、設備利用率等。

  常見的調度算法有:先來先服務FIFO、輪轉調度法RR(時間片法)、優先級調度法、短作業優先SJF、最短剩餘事件優先、最高相應比優先、多級反饋法、策略驅動法、最晚時間限調度、二級調度法。

三:常見調度算法:

linux常用:

  時間片算法:所有的進程排成一個隊列。操作系統按照他們的順序,給每個進程分配一段時間(一般爲20ms~250ms

  如果在時間片結束時進程還在運行,則CPU將被剝奪,重新調度此時,退出的進程轉換爲就緒態,等待屬於它的時間片的到來。

  如果進程在時間片結束前阻塞或結束,則CPU當即進行切換。調度程序所要做的就是維護一張就緒進程列表,當進程用完它的時間片後,它被移到隊列的末尾。

windows常用:

  搶佔式操作系統:假設有若干進程,操作系統會根據他們的優先級、飢餓時間,給他們算出一個總的優先級來。操作系統就會把 CPU 交給總優先級最高的這個進程。

  當進程執行完畢或者自己主動掛起後,操作系統就會重新計算一次所有進程的總優先級,然後再挑一個優先級最高的把CPU控制權交給他。

  操作系統會監控進程霸佔CPU的情況,如果發現某個線程長時間霸佔CPU,會強制使這個線程掛起。


注:Thread.Sleep(0):觸發操作系統立刻重新進行一次CPU競爭




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章