操作系统(八)进程状态的转换以及进程组织方式
2.1.2 進程狀態的轉換以及進程組織方式
目錄
2.1.2 進程狀態的轉換以及進程組織方式
2.1.2.1 進程的狀態
2.1.2.2 進程的組織方式
2.1.2.1 進程的狀態
? 因為進程的執行在時間上是不連貫的,所以進程就會有多種狀態,其中就緒態、執行態、阻塞態是三種最基本的狀態。除此之外進程還可能會有創建態以及終止態。
(1)創建態:在進程被創建時他的狀態是創建態,這個時候操作系統為進程分配了一些資源,初始化了PCB。但是因為資源不完整所以還不能運行。
(2)就緒態(Ready):創建態結束后,進程便進入“就緒態”,處于就緒態的進程已經具備運行條件,但由于沒有空閑CPU,就暫時不能運行。
(3)執行態:當CPU空閑時,他會在就緒隊列中選擇一個就緒態的進程讓他上處理機運行,這時程序就進入了執行態。
(4)阻塞態:正在執行的進程可能會遇到一些事件(請求IO,申請緩存空間等)而無法繼續執行下去,此時進程進入了阻塞態,這個時候CPU會讓這個進程下處理機并運行另一個處于就緒態的進程。
(5)終止態:一個進程可以執行 exit 系統調用,請求操作系統終止該進程。此時該進程會進入“終止態”,操作系統會讓該進程下CPU,并回收內存空間等資源,最后還要回收該進程的PCB。當終止進程的工作完成之后,這個進程就徹底消失了。
? 下面用一張圖說明這幾種狀態之間的轉化情況:
? 這里我們需要注意一下:就緒態沒有辦法變為阻塞態,阻塞態也沒有辦法變為執行態,因為阻塞態是主動請求發生的,必須要進程在運行中才能發出這種請求。
2.1.2.2 進程的組織方式
?進程PCB中,會有一個變量 state 來表示進程的當前狀態。如:1表示創建態、2表示就緒態、3表示運行態…為了對同一個狀態下的各個進程進行統一的管理,操作系統會將各個進程的PCB組織起來。主要的進程組織方式有鏈接方式以及索引方式兩種。
? 鏈接方式:這是把具有同一狀態的 PCB,用其中的鏈接字鏈接成一個隊列。這樣,可以形成緒隊列、若干個阻塞隊列和空白隊列等。對其中的就緒隊列常按進程優先級的高低排列,把優先級高的進程的 PCB 排在隊列前面。此外,也可根據阻塞原因的不同而把處于阻塞狀態的進程的 PCB 排成等待 I/O 操作完成的隊列和等待分配內存的隊列等。
? ? ? ??
? 索引方式:系統根據所有進程的狀態建立幾張索引表。例如,就緒索引表、阻塞索引表等,并把各索引表在內存的首地址記錄在內存的一些專用單元中。在每個索引表的表目中,記錄具有相應狀態的某個 PCB 在 PCB 表中的地址。
? ? ? ? ? ? ? ? ??
總結
以上是生活随笔為你收集整理的操作系统(八)进程状态的转换以及进程组织方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年互联网租房行业洞察报告
- 下一篇: 操作系统(九)进程控制