王道操作系统考研笔记——2.1.7 进程调度的时机、切换与过程、方式
文章目錄
- 2.1.7 進程調度的時機、切換與過程、方式
- 2.1.7.1 進程調度的時機
- 2.1.7.2 進程調度的方式
- 2.1.7.3 進程的切換和過程
- 2.1.7.4 小結
2.1.7 進程調度的時機、切換與過程、方式
知識總覽
2.1.7.1 進程調度的時機
進程調度(低級調度),就是按照某種算法從就緒隊列中選擇一個進程為其分配處理機。
需要注意的是一些表述的問題。
進程在操作系統內核程序臨界區中不能進行調度和切換。√
進程處于臨界區不能進行處理機調度。×
這里兩個表述的差異就在于名詞:內核程序臨界區和臨界區的區別。
臨界資源:一個時間段只允許一個進程使用的資源。各進程需要互斥地訪問臨界資源。
臨界區:訪問臨界資源的那段代碼。
內核程序臨界區一般是用來訪問某種內核數據結構的,比如進程的就緒隊列。這個時候一般來說快點訪問完快點結束。這涉及到封鎖表的問題,在數據庫中我們也曾經談過這個上鎖的問題,實際上操作系統也有上鎖,也就是說,當你的進程1在訪問內核程序的臨界資源的時候,其他進程例如進程2無法同時訪問,因為該內核程序臨界資源被進程1上鎖了,也就是說,此時如果你還去做進程的調度和切換,勢必會導致占用該資源時間過長,拖延了其他進程使用該資源的時間;如果不是內核程序的臨界資源倒也無所謂,但是如果是內核程序臨界區訪問的臨界資源不盡快釋放的話,極有可能影響到操作系統內核的其他管理工作。因此在訪問內核程序臨界區期間不能進行調度和切換。
而如果不是內核程序,是普通的臨界區如打印機打印,那么在打印機打印完成之前,進程一直處于臨界區內,臨界資源不會解鎖。但打印機又是慢速設備,CPU幫操作系統把進程對應的資源塞到打印機門口了,然后一直在等待打印完,這是不合理的,此時如果一直不允許進程調度的話就會導致CPU一直空閑。
普通臨界區訪問的臨界資源不會直接影響操作系統內核的管理工作。因此在訪問普通臨界區時可以進行調度和切換。
回到前面講的進程調度的時機。有的系統中,只允許進程主動放棄處理機;有的系統中,進程可以主動放棄處理機,當有更緊急的任務需要處理時,也會強行剝奪處理機(被動放棄)。由此我們引出了下一小節:進程調度的方式。
2.1.7.2 進程調度的方式
進程調度的方式可以分為兩種:非剝奪調度方式和剝奪調度方式。
非剝奪調度方式,也稱為非搶占方式。即只允許進程主動放棄處理機。在運行過程中即便有更緊迫的任務到達,當前進程依然會繼續使用處理機,直到該進程終止或主動要求進入阻塞態。
這種方式實現簡單,系統開銷小但是無法及時處理緊急任務,適合早期的批處理系統。
剝奪調度方式,又稱為搶占方式。當一個進程正在處理機上執行時,如果有一個更重要或更緊迫的進程需要使用處理機,則立即暫停正在執行的進程,將處理機分配給更重要緊迫的那個進程。
這種方式可以優先處理更緊急的過程,也可以實現讓各進程按時間片輪流執行的功能(通過時鐘中斷)。適合于分時操作系統、實時操作系統。
2.1.7.3 進程的切換和過程
這里需要知道的是兩個每次的區別:狹義進程調度和進程切換的區別。
狹義的進程調度指的是從就緒隊列中選中一個要運行的進程。這個進程可以是剛剛被暫停執行的進程,也可能是另一個進程。
進程切換是指一個進程讓出處理機,由另一個進程占用處理機的過程。
廣義的進程調度包含了選擇一個進程和進程切換兩個步驟。
進程切換的過程主要完成了:
如:程序計數器、程序狀態字、各種數據寄存器等處理機現場信息,這些信息一般保存在進程控制塊。
注意:進程切換是有代價的,因此如果過于頻繁地進行進程調度、切換,比如會使整個系統的效率降低,使系統大部分時間都花在了進程切換上,而真正用于執行過程的時間減少。
2.1.7.4 小結
該小節含有的知識較多,不是考試的重點,但是也需要理解。
總結
以上是生活随笔為你收集整理的王道操作系统考研笔记——2.1.7 进程调度的时机、切换与过程、方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.5.2 在IIS上配置ASP.NET
- 下一篇: 解决vista/win7安装window