程序控制塊 PCB

2021-09-01 19:25:06 字數 2594 閱讀 3056

程序控制塊(pcb)是系統為了管理程序設定的乙個專門的資料結構。系統用它來記錄程序的外部特徵,描述程序的運動變化過程。同時,系統可以利用pcb來管理和控制程序,所以說,pcb是系統感知程序存在的唯一標識。

linux系統下的pcb包含了很多引數,每個pcb約佔1kb的記憶體空間大小。

主要包含的內容:

1程序識別符號(唯一)

2程序的當前狀態,通常同乙個狀態的程序會被放到同乙個佇列中(五種狀態)

3程序的程式和資料位址

4程序的資源清單。列出所擁有的除了cpu外的資源記錄

5程序優先順序,反映程序的緊迫程度

6cpu現場保護。記錄中斷時的cpu狀態

7程序佇列中的pcb的鏈結字

8程序的其他相關資訊。記賬用的,如佔cpu多長時間等。

9用於表示pcb的結構task_struck簡要描述如下:

​include/linux/sched.h

struct task_struct ;​

排程資料成員:1》volatile long state:表示程序當前的執行狀態①task running(可執行)②task interrupt ible(可中斷的等待狀態)③task uninterruptible(不可中斷的等待狀態)④task zombie(僵死狀態)⑤task stopped(暫停狀態)等五種。

2》long priority程序優先順序,priority的值給出了每個程序每次獲得cpu後,可使用的時間片長度(單位jiffies)。

3》unsigned long rt_priority rt_priority的值給出了實時程序的優先順序。

4》long counter在輪轉法排程是counter表示當前程序還可以執行多久。在程序剛開始時其被賦值為priority,以後每個乙個時鐘中斷遞減1,減到0引起新一輪排程。

5》unsigned long policy表示該程序的程序排程策略。有:scked_other 0,非實時程序,用基於優先權的輪轉法;sched_fifo 1實時程序,用先進先出演算法;sched-rr 2實時程序,用基於優先權的輪轉法。

程序佇列指標:1》struct task_struct* next_task,*prev_task 在linux中所有程序(以pcb的形式)組成乙個雙向鍊錶。

2》struct task_struct* p_opptr,*p_pptr,*p_cptr,*p_ysptr,*p_osptr分別指向該程序的原始父程序,父程序,子程序和新老兄弟程序的指標。

3》struct task_struct* pidhash_next;struct task_struct** pidhash_pprev用於鏈入程序hash表的前後指標。系統程序除了鏈入雙向鍊錶外,還被加到了hash表中。

程序標識:1》uid  gid 分別為執行程序的使用者標識和使用者組標識。

2》pid pgrp分別是執行程序的程序標識號和程序組標識號。

3》時間資料成員:long per_cpu_utime[nr_cpus]是使用者程序執行時間,per_cpu_stime[nr_cpus]核心程序執行的時間,程序建立時間unsigned long start_time

檔案系統結構成員:1》struct fs_struct* fs;fs儲存了程序本身與vfs(虛擬檔案系統)的關係資訊。

struct fs-struct

內部資料成員:1》struct mm_stuct* mm;在linux中,採用按需分頁的策略解決程序的記憶體要求。mm是指向關於儲存管理的mm_truct結構。

2》struct mm_struct* active_mm;指向活動位址空間。

4》spinlock_t alloc_lock;用於申請空間時用的自旋鎖。自旋鎖的主要功能是臨界區保護。

頁面管理:

2》unsigned long min_flt,maj_flt;該程序累計minor缺頁次數和major缺頁次數。

3》unsigned long nswap該程序累計換出頁面數

4》unsigned long swap_cnt下一次迴圈最多可換出的頁數。

程序控制塊(PCB)

為了描述和控制程序的執行,系統為每乙個程序定義了乙個資料結構 程序控制塊。它是程序實體的一部分,是作業系統中最重要的記錄型資料結構。或者說,os是根據pcb來對併發程式的程序進行控制和管理的。總而言之,pcb是程序存在的唯一標誌。程序控制塊中的資訊包括程序識別符號 處理機狀態 程序排程資訊 程序控制...

程序控制塊 PCB

程序控制塊是作業系統中最重要的資料結構,每個程序控制塊包含了作業系統在排程 資源分配 中斷處理 效能監控和分析所需的關於程序的所有資訊。程序控制塊資訊可以分為三類 程序標識資訊 處理器狀態資訊 程序控制資訊。程序識別符號主要包括 當前程序的識別符號 process id,pid 建立這個程序的父程序...

關於程序控制塊PCB

1.unix為了節省pcb所佔主存,pcb分為2部分 a.常駐記憶體部分 proc結構。包含程序排程所必需的資訊 b.非常駐記憶體部分 user結構。包含程序執行時才要用到的更多其他資訊,它隨著使用者程式和資料部分換進 換出主存 c.user區的字段只能由正在執行的程序cun去。即只有占用cpu的程...