Linux 程序詳解

2021-09-07 07:29:59 字數 975 閱讀 9838

linux核心的七大區間

1.程序管理(程序建立,程序的三種狀態,程序間的排程,排程演算法...)

2.記憶體管理(段式管理(linux所有段都從0開始),頁式管理--位址偏移量)

3.系統呼叫(c語言庫函式的區別)

4.網路協議(tcp/ip協議)

5.ufs--虛擬檔案系統==》linux驅動匯流排模型

6.驅動管理(網路裝置,塊裝置,字元裝置...)

7arch(對各個硬體平台的支援...ram x86 power pc)

程序資料結構

程序的靜態描述:由三部分組成:pcb,有關程式段和該程式段對其進行操作的資料結構集

程序控制塊(pcb):用於描述程序情況及控制程序執行所需的全部資訊

**段:是程序中能被程序排程程式在cpu上執行的程式**段。

資料段:乙個程序的資料段,可以是程序對應的程式加工處理的原始資料,也可以是程式執行後產生的中間或最終資料

程序是作業系統對資源的一種抽象:乙個程序:**段、資料段,堆疊段(記憶體四區)+程序控制塊(pcb)

pcb是作業系統感知程序存在的乙個重要資料結構。

fork函式和vfork函式

vfork()函式有個限制,子程序必須立刻執行_exit或者exec函式,

即使fork實現了copy on write,效率也沒有vfork高,但是我們不推薦使用vfork,因為幾乎每乙個vfork的實現,

都或多或少存在一定的問題

結論:1

.fork子程序會寫時拷貝父程序的資料段;vfork子程序與父程序共享資料段

2.fork父子程序的執行次序不確定;vfork子程序先執行,父程序後執行

vfork和exec函式在一起

execve替換程序映像(引導程式),注意execve是乙個系統呼叫;替換意味著:**段,資料段,堆疊段,程序控制塊pcb全部替換

Linux 程序 詳解

程序 已經啟動的可執行程式的執行實力 1.pid 程序的 i d 每乙個新程序都有乙個唯一的pid 2.ppid 父程序的id 3.任何乙個程序都可以建立乙個子程序 4.在redhat 7以上,所有程序的父程序 systemd 在redhat 5,6中,所有程序的父程序 init ps 用於顯示當前...

Linux殭屍程序詳解

1.殭屍程序概念 殭屍程序 zombie process 就是已經結束了的程序,但是沒有從程序表中刪除。太多了會導致程序表裡面條目滿了,進而導致系統崩潰,倒是不占用其他系統資源。在linux 程序的狀態中,殭屍程序是非常特殊的一種,它已經放棄了幾乎所有記憶體空間,沒有任何可執行 也不能被排程,僅僅在...

Linux程序狀態詳解

linux是乙個多使用者 多工的系統,可以同時執行多個使用者的多個程式,就必然會產生很多的程序,每個程序會有不同的狀態。linux程序狀態 r task running 可執行狀態 只有在該狀態的程序才有可能在cpu上執行。而同一時刻可能有多個程序在可執行狀態,這些程序的task struct結構 ...