文章目錄
- 1,先來看看進程
- 2,處理機管理
- 2.1 處理機分配策略
- 3,各種進程調度演算法簡單介紹
- 4,到哪裡,住哪去?
作業系統的一個重要任務就是管理處理機,大白話點就是:管理CPU的分配。如何分配CPU資源,才能使使用者得到儘快的響應,提高CPU的利用率,這是作業系統中處理機管理部分的工作。
1,先來看看進程
進程的定義也有好幾種。同樣地,這些定義描述了進程的不同側面。比如:
*進程是資源分派的單元
*進程是正在執行的指令段
1.1 進程是資源分派的單元
CPU時間,I/O連接埠,TCP/IP連接埠等電腦資源均是以進程為配置單位。簡單些講進程就是個資源的最終“消費者”。
1.2 進程是正在執行的指令段
這句定義有些籠統,其實還為發執行,控制這些指令段,還有需要很多附加資訊的支援。比如程式計數器,進程堆棧等等。
進程是有狀態的,看圖:
現實實現比這個要複雜,但原理還是一樣的。
2,處理機管理
我們上面說過,進程是資源分派的單元。處理機(CPU)資源的分配,體現在進程調度上,即讓哪個進程獲得CPU時間,得以執行。
2.1 處理機分配策略
進程的調度有些策略,即常見的調度演算法。但這些策略通常都會帶著一些優缺點。一個媽幾個孩子,餵奶的時候怎麼樣都不會做到100%公平。我們來看看常的調度演算法:
*先來先服務(First Come First Service)
*短作業優先(Sort Job First)
*時間片輪轉
*基於優先權
3,各種進程調度演算法簡單介紹
每種調度演算法都基於一些簡單地思想,同時也具有一定的優缺點。
3.1 先來先服務演算法
演算法:進程按照提交的時間依次被調度執行
隱喻:銀行的領號排除服務。現在稍大一些的銀行,當你準備辦理業務時,你得先領個號碼紙。紙號寫著你的排除的編號和前面還有未服務使用者的數目。類似於:
使用者按照號碼,依次排隊辦理服務。
優點:讓人感覺很公平(實現起來簡單)
缺點:試想,在等待了幾分鐘後,你的前面只有一位使用者了,快輪到你了,你正竊喜。誰知,你前面那位是個大嬸。手中拿了幾毛錢,存取和查看一共用了半天時間。等輪到你的時候,銀行下班了。這時你不崩潰才怪。
官方術語這樣講的:對於一些小作業,等待時間過長。
3.2 短作業優先
演算法:對於佔用CPU時間較少的作業,優先執行
隱喻:打飯的時候,總是有人插隊,口裡說:我打一個菜就好了——短作業優先(具體講是搶先)執行了。
優點:理論上講這個演算法是最優的,每個人平均等待時間最短。
缺點:嘔心的是,你往往不知道別人真的是打一個菜呢,還是指一分菜(四菜一湯)呢?
3.3 時間片輪轉
演算法:將CPU劃分為一個個時間片,每個作業執行一個時間片後,換下一個作業
隱喻:(暫缺)
優點:每進程都有機會執行
缺點:頻繁地進程切換太浪費時間了
3.4 基於優先權
演算法:根據對資源的使用方式,將進程劃分三六九等,層級越高,越早被調度
隱喻:根據學曆那人劃分三六九等,層級越高,收入越高。
優點:較高的CPU利用率
缺點:當層級太低時,容易產生無窮等待現象
4,到哪裡,住哪去?
本節主要引入了進程的概念和處理管理主要任務:進程調度的主要策略。
講到了進程,就不得不說說進程同步。
這便是下一篇的內容。