天天看點

程序的基礎知識

程序是一個具有一定獨立功能的程式關于某個資料集合的一次運作活動,是系統進行資源配置設定和排程運作的基本機關。

程序資訊被放在一個叫做程序控制塊的資料結構中,可以了解為程序屬性的集合 linux作業系統下的pcb是: task_struct

task_struct-pcb的一種

在linux中描述程序的結構體叫做task_struct task_struct是linux核心的一種資料結構,它會被裝載到ram(記憶體)裡并且包含着程序的資訊

task_struct内容分類

辨別符:描述本程序的唯一辨別符,用來差別其他程序 狀态:任務狀态,退出代碼,退出信号等 優先級:相對與其它程序的優先級 程式計數器:程式中即将被執行的下一條指令的位址 記憶體指針:包括程式代碼和程序相關資料的指針,還有和其他程序共享的記憶體塊的指針 上下文資料: 程序執行時處理器的寄存器中的資料[休學例子]。 i/o狀态資訊: 包括顯示的i/o請求,配置設定給程序的i/o裝置和被程序使用的檔案清單。 記賬資訊: 可能包括處理器時間總和,使用的時鐘數總和,時間限制,記賬号等。 其他資訊
動态特征:程序對應于程式的運作,動态産生、消亡,在其生命周期中程序也是動态的。 并發特征:任何程序都可以同其他程序一起向前推進。 獨立特征:程序是相對完整的排程機關,可以獲得cpu,參與并發執行。 交往特征:一個程序在執行過程中可與其他程序産生直接或間接關系。 異步特征:每個程序都以相對獨立、不可預知的速度向前推進。 結構特征:每個程序都有一個pcb作為他的資料結構。

程序最基本的特征是并發,異步和共享特征。

r運作狀态(running):并不意味着一定在運作中,它表明程序要麼是在運作中要麼在運作隊列裡 s睡眠狀态(sleeping):意味着程序在等待事件完成(這裡的睡眠有時候叫做可中斷睡眠) d磁盤休眠狀态(disk sleep):有時候也叫不可中斷睡眠狀态(uninterruptible sleep),在這個狀态的 程序通常會等待io的結束。 t停止狀态(stopped): 可以通過發送 sigstop 信号給程序來停止(t)程序。這個被暫停的程序可 以通過發送 sigcont 信号讓程序繼續運作。 x死亡狀态(dead):這個狀态隻是一個傳回狀态,你不會在任務清單裡看到這個狀态

程序的三種基本狀态

程序狀态轉換

程序的類型

運作 man fork 認識fork fork 有兩個傳回值 父子程序代碼共享,資料各自開辟空間,私有一份(采用寫時拷貝) fork 之後通常要用 if 進行分流
程式的基礎知識

繼續閱讀