2.2.1 調度
一. 概念
從就緒隊列中按照一定的算法選擇一個進程,並給他分配處理機,從而實現進程的併發執行。
二. 調度的三個層次
一個作業的提交開始直到完成需要經歷三種調度。
- 高級調度(作業調度):按照一定原則,從外存中挑選作業,給他們分配內存等資源,並建立相應進程。
- 中級調度(內存調度):將暫時不能運行的進程調至外存等待,即掛起態(稍後講解),此時進程在外存,但是該進程的PCB在內存。
作用:提高內存利用率和系統吞吐量。 - 低級調度(進程調度):按照某種方法從就緒隊列中選取一個進程,將CPU分配給它。進程調度是操作系統最基本的一種調度
三. 三級調度的區別與聯繫
調度 | 幹什麼 | 位置 | 頻率 | 狀態 |
---|---|---|---|---|
高級調度 | 選擇合適作業調入內存,創建進程 | 外存 – 內存 | 最低 | 無 – 創建態 – 就緒態 |
高級調度 | 按某種規則,將進程調回內存 | 外存 – 內存 | 中等 | 掛起態 – 就緒態 |
高級調度 | 按照某種規則爲進程分配CPU | 內存 – CPU | 最高 | 就緒態 – 運行態 |
四. 七狀態模型
- 之前我們學了五狀態,分別是:創建態,終止態,阻塞態,運行態和就緒態。
- 但是在自主命題的研究生考試中,還有掛起態,它分爲就緒掛起和阻塞掛起。
- 若系統負載高,則會進入掛起狀態,掛起則表示進程放到了外存。
五. 進程的調度與切換
- 應該進行進程的調度和切換:
(1)主動放棄
(2)被動放棄(中斷或者陷入時) - 不應進程調度與切換
(1)在處理中斷時
(2)進程在操作系統內核程序臨界區時
(3)進行原子操作時
切換過程要求保留原進程當前切換點的現場信息,恢復被調度進程的現場信息。
進程調度的切換都是有代價的,經常切換不好。
六. 進程的調度方式(兩種)
- 非搶佔式方式
實現簡單,系統開銷小,但是無法執行緊急進程。 - 搶佔式方式
提高系統吞吐量和響應效率。
我們下一節講,調度的評價指標 和 經典調度算法。