進程1.0——進程的概念與PCB

進程是什麼?

進程就是運行中的程序,但這個概念是抽象的,我們應該更深入、更具體的學習進程

在學習進程之前,我們首先應該對操作系統有一個初步的瞭解

任何計算機系統都包含一個基本的程序集合,稱爲操作系統(Operator System),操作系統的一個主要功能就是管理所有的軟硬件資源,我們可以通過一個例子來理解“管理”的含義:

比如說在學校裏,校長是管理者而學生是被管理者,校長是怎樣管理學生的呢?假如一個學生犯了非常嚴重的錯誤,校長要開除他,這個時候校長不一定非要當面見到這個學生跟他說你被開除了,即使是口頭上告訴學生他被開除了其實也並沒有實際意義。真正的管理是,校長先採用一種方式來“描述”被管理的學生,比如給每個學生建立學籍檔案,學籍檔案中包含了學生的姓名學號年齡年級班級等等非常多的信息,當完成了“描述”之後,校長再用某種方式將這些描述信息“組織”起來,比如按學號排序後將所有學生檔案放進檔案室中。校長通過“先描述,再組織”的方式就完成了對學生的管理,現在他再想開除一個學生,只需要刪除學生的檔案就好了

這個例子和操作系統管理進程的方式異曲同工,簡單的說,進程其實是一個抽象的概念,所以當操作系統想要管理內存時,就先需要對其進行描述,將每個進程所需要用到的信息保存起來,然後就可以對這些不再抽象的信息進行組織,這就是操作系統管理進程時“先描述,再組織”的過程

PCB——對進程的描述

學生檔案是對每個學生的描述,其中含有學生的姓名學號年齡年級班級等信息,那麼操作系統對進程的描述是什麼,其中又包含哪些信息?

進程信息被放在一個叫做進程控制塊的數據結構中,也就是PCB(process control block),Linux操作系統下的PCB是task_struct,重點需要掌握的就是這個結構體中的部分內容

在task_struct中,內容被大致分成幾類:

  • 標示符: 描述本進程的唯一標示符,用來區別其他進程
  • 狀態: 任務狀態,退出代碼,退出信號等
  • 優先級: 相對於其他進程的優先級
  • 程序計數器: 程序中即將被執行的下一條指令的地址
  • 內存指針: 包括程序代碼和進程相關數據的指針,還有和其他進程共享的內存塊的指針
  • 上下文數據: 進程執行時處理器的寄存器中的數據
  • I/O狀態信息: 包括顯示的I/O請求,分配給進程的I/O設備和被進程使用的文件列表
  • 記賬信息: 可能包括處理器時間總和,使用的時鐘數總和,時間限制,記賬號等
  • 其他信息

要理解上面這些信息,首先需要知道,CPU在任何一個時間點都只能運行一個進程,但是對於現代操作系統來說,“同時”都有很多進程在運行,比如我們可以在聊QQ的同時聽音樂,這是如何做到的?答案就是CPU的運行機制之一——時間片輪轉機制(RR調度):

時間片輪轉法(Round-Robin,RR)主要用於分時系統中的進程調度。爲了實現輪轉調度,系統把所有就緒進程按先入先出的原則排成一個隊列。新來的進程加到就緒隊列末尾。每當執行進程調度時,進程調度程序總是選出就緒隊列的隊首進程,讓它在CPU上運行一個時間片的時間。時間片是一個小的時間單位,通常爲10~100ms數量級。當進程用完分給它的時間片後,系統的計時器發出時鐘中斷,調度程序便停止該進程的運行,把它放入就緒隊列的末尾;然後,把CPU分給就緒隊列的隊首進程,同樣也讓它運行一個時間片,如此往復。

通過這種機制,每個進程都只在CPU上運行很短的一段時間,之後運行下一個進程,由於時間片非常的短,所以對於用戶來說,就好像是所有的進程都在一起運行一樣,其實當時間精確到任何一個毫秒,CPU都只在處理一個進程

現在我們可以理解一些描述信息的作用了:

  • 內存指針:當CPU拿到內存指針時就能知道要運行的進程的數據的數據、代碼的位置
  • 上下文數據、程序計數器:相當於辦理一個休學手續,保存休學前的各種學籍信息以及學業進度,便於再次上學時從進度處繼續學業,上下文數據保存上一次運行時的數據,程序計數器保存上一次運行到的指令
  • 記賬信息:通過一個進程在CPU上運行的時間就可以知道一個進程是否處於飢餓狀態(長時間沒有運行)
  • 標識符:並非進程的名稱而是一個唯一的ID,就像學生的學號而不是名字

進程的描述信息是很詳細的當然不止這些,是一個龐大的結構體,如果將task_struct完全展開,可能就有好幾千行那麼多

就像校長眼裏學生的學籍信息就代表着學生本人一樣,對操作系統來說,進程的描述(PCB)就是進程,在形成了對進程的描述後,操作系統通過一個雙向鏈表將PCB組織起來,所有運行在系統裏的進程都以task_struct鏈表的形式存在內核裏,這就完成了對進程的管理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章