2.2.2進程調度


進程調度

image-20210918213139550

一、進程調度的時機

進程調度(低級調度),就是按照某種算法從就緒隊列中選擇一個進程為其分配處理機。

image-20210918213339100

不能進行進程調度與切換的情況:

​ 1.在處理中斷的過程中。中斷處理過程復雜,與硬件密切相關,很難1.在處理中斷的過程中。中斷處理過程復雜,與硬件密切相關,很難

​ 2.進程在操作系統內核程序臨界區中。

​ 3.在原子操作過程中(原語)。原子操作不可中斷,要一氣呵成(如之前講過的修改PCB中進程狀態標志,並把PCB放到相應隊列)


​ 進程在操作系統內核程序臨界區不能進行調度與切換⭕

​ (2012年聯考真題)進程處於臨界區不能進行處理機調度❌

​ 臨界資源:一個時間段內只允許一個進程使用的資源。各進程需要互斥地訪問臨界資源。

​ 臨界區:訪問臨界資源的那段代碼。

內核程序臨界區一般是用來訪問某種內核數據結構的,比如進程的就緒隊列(由各就緒進程的PCB組成)

image-20210918213951359

​ 如果還沒退出臨界區(還沒解鎖)就進行進程調度,但是進程調度相關的程序也需要訪問就緒隊列,但此時就緒隊列被鎖住了,因此又無法順利進行進程調度

​ 內核程序臨界區訪問的臨界資源如果不盡快釋放的話,極有可能影響到操作系統內核的其他管理工作。因此在訪問內核程序臨界區期間不能進行調度與切換

image-20210918214134358

​ 在打印機打印完成之前,進程一直處於臨界區內,臨界資源不會解鎖。但打印機又是慢速設備,此時如果一直不允許進程調度的話就會導致CPU一直空閑

​ 普通臨界區訪問的臨界資源不會直接影響操作系統內核的管理工作。因此在訪問普通臨界區時可以進行調度與切換。


​ 有的系統中,只允許進程主動放棄處理機

​ 有的系統中,進程可以主動放棄處理機,當有更緊急的任務需要處理時,也會強行剝奪處理機(被動放棄)

​ 但是進程在普通臨界區中是可以進行調度、切換的



二、進程調度的方式

非剝奪調度方式,又稱非搶占方式。即,只允許進程主動放棄處理機。在運行過程中即便有更緊迫的任務到達,當前進程依然會繼續使用處理機,直到該進程終止或主動要求進入阻塞態。(實現簡單,系統開銷小但是無法及時處理緊急任務,適合於早期的批處理系統)

剝奪調度方式,又稱搶占方式。當一個進程正在處理機上執行時,如果有一個更重要或更緊迫的進程需要使用處理機,則立即暫停正在執行的進程,將處理機分配給更重要緊迫的那個進程。(可以優先處理更緊急的進程,也可實現讓各進程按時間片輪流執行的功能(通過時鍾中斷)。適合於分時操作系統、實時操作系統)



三、進程的切換與過程

​ “狹義的進程調度”與“進程切換”的區別:

狹義的進程調度指的是從就緒隊列中選中一個要運行的進程。(這個進程可以是剛剛被暫停執行的進程,也可能是另一個進程,后一種情況就需要進程切換)

進程切換是指一個進程讓出處理機,由另一個進程占用處理機的過程。

廣義的進程調度包含了選擇一個進程和進程切換兩個步驟。

​ 進程切換的過程主要完成了:

​ 1.對原來運行進程各種數據的保存

​ 2.對新的進程各種數據的恢復(如:程序計數器、程序狀態字、各種數據寄存器等處理機現場信息,這些信息一般保存在進程控制塊)

​ 注意:進程切換是有代價的,因此如果過於頻繁的進行進程調度、切換,必然會使整個系統的效率降低,使系統大部分時間都花在了進程切換上,而真正用於執行進程的時間減少。



image-20210918220915325


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM