pcb結構鍊錶 程序1 0 程序的概念與PCB

2021-10-13 22:42:59 字數 1560 閱讀 3072

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

在學習程序之前,我們首先應該對作業系統有乙個初步的了解

任何計算機系統都包含乙個基本的程式集合,稱為作業系統(operator system),作業系統的乙個主要功能就是管理所有的軟硬體資源,我們可以通過乙個例子來理解「管理」的含義:

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

這個例子和作業系統管理程序的方式異曲同工,簡單的說,程序其實是乙個抽象的概念,所以當作業系統想要管理記憶體時,就先需要對其進行描述,將每個程序所需要用到的資訊儲存起來,然後就可以對這些不再抽象的資訊進行組織,這就是作業系統管理程序時「先描述,再組織」的過程

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

程序資訊被放在乙個叫做程序控制塊的資料結構中,也就是pcb(process control block),linux作業系統下的pcb是task_struct,重點需要掌握的就是這個結構體中的部分內容

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

要理解上面這些資訊,首先需要知道,cpu在任何乙個時間點都只能執行乙個程序,但是對於現代作業系統來說,「同時」都有很多程序在執行,比如我們可以在聊qq的同時聽**,這是如何做到的?答案就是cpu的執行機制之一——時間片輪轉機制(rr排程):

時間片輪轉法(round-robin,rr)主要用於分時系統中的程序排程。為了實現輪轉排程,系統把所有就緒程序按先入先出的原則排成乙個佇列。新來的程序加到就緒佇列末尾。每當執行程序排程時,程序排程程式總是選出就緒佇列的隊首程序,讓它在cpu上執行乙個時間片的時間。時間片是乙個小的時間單位,通常為10~100ms數量級。當程序用完分給它的時間片後,系統的計時器發出時鐘中斷,排程程式便停止該程序的執行,把它放入就緒佇列的末尾;然後,把cpu分給就緒佇列的隊首程序,同樣也讓它執行乙個時間片,如此往復。
通過這種機制,每個程序都只在cpu上執行很短的一段時間,之後執行下乙個程序,由於時間片非常的短,所以對於使用者來說,就好像是所有的程序都在一起執行一樣,其實當時間精確到任何乙個毫秒,cpu都只在處理乙個程序

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

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

就像校長眼裡學生的學籍資訊就代表著學生本人一樣,對作業系統來說,程序的描述(pcb)就是程序,在形成了對程序的描述後,作業系統通過乙個雙向鍊錶將pcb組織起來,所有執行在系統裡的程序都以task_struct鍊錶的形式存在核心裡,這就完成了對程序的管理

程序控制塊 PCB 結構

一 程序控制塊 pcb 結構 程序控制塊 pcb 是系統為了管理程序設定的乙個專門的資料結構。系統用它來記錄程序的外部特徵,描述程序的運動變化過程。同時,系統可以利用pcb來控制和管理程序,所以說,pcb 程序控制塊 是系統感知程序存在的唯一標誌。linux系統的pcb包括很多引數,每個pcb約佔1...

程序控制塊PCB表

程式本來是儲存在磁碟的,當我們需要執行它的時候,先把它讀取到記憶體當中,再然後放入到暫存器中,最後讓cpu執行程式,這個時候程式就變成了乙個程序.每個程序直接肯定都擁有自己獨有的乙份管理自己的單獨的任務結果 而這個任務結果就是我們今天的pcb.每個程序執行的時候都會拿到4g的虛擬記憶體.其中3g是交...

程序控制塊 PCB 的結構

程序控制塊 pcb 的結構 程序控制塊 pcb process control block 存放程序的管理和控制資訊的資料結構稱為程序控制塊。它是程序管理和控制的最重要的資料結構,每乙個程序均有乙個pcb,在建立程序時,建立pcb,伴隨程序執行的全過程,直到程序撤消而撤消。在不同的作業系統中對程序的...