Linux 程序的概念

2021-10-06 14:37:27 字數 2097 閱讀 3374

1、程序的概念:正在執行的程式(由一條條指令構成 資料 資源)

2、作業系統對程序的管理:

僵死程序(殭屍程序)

程序實體已經釋放,但pcb結點並沒有被釋放  

退出碼(在pcb)--有退出碼才會退出

(1)概念:乙個程序執行結束,但是程序的pcb沒有被系統釋放程序結束後,

在pcb中還要儲存程序的退出碼,以備其父程序獲取其退出碼

父程序未結束,子程序結束,並且父程序沒有獲取子程序的退出碼

(2)如何處理僵死程序的產生:

父程序獲取子程序的退出狀態:pid_t wait(int *result);

//wait 本身會阻塞,直到任意乙個子程序退出

返回處理的程序的pid,result獲取的程序的退出碼

waitpid:直接獲取pid      status:狀態

處理辦法:

a) 父程序中呼叫

wait

或 waitpid

獲取子程序的退出狀態,這種方式可能導致

父程序在

wait

或 waitpid

呼叫出阻塞執行,直到子程序退出。

b) 父程序呼叫

signal(sigchld,sig_ign)

,來忽略

sigchld

訊號,這樣子程序結

束后會由核心釋放資源。

c) 對子程序的退出捕獲他們的退出訊號

sigchld,

父退出訊號時,在訊號處理

函式中呼叫

wait

或 waitpid

操作來釋放他們的資源。

孤兒程序:父程序結束,但是子程序並未結束,那麼子程序就是孤兒程序

將所有的孤兒程序都直接掛載到init下

父程序  建立   子程序    init--》所有程序的祖先  pid=1

3、程序的狀態模型圖

4、併發 並行(由硬體支援)   時間片輪轉---》模擬併發

5、記憶體 (簡單分頁)以及程式載入

簡單分頁:將記憶體劃分成大小相等的(4k)的塊---》頁幀,對頁幀進行編號

注意:

(1)在程式中直接訪問的是邏輯位址,在cpu訪問此邏輯位址時,

需要通過位址對映到其實體地址,才能訪問此位址上的資料或指令。

printf(「&a = 0x%x\n」,&a);  ---->  a的邏輯位址

要訪問實體地址----》通過頁表將a的邏輯位址轉化為實體地址

(2)如果在兩個程序中列印的變數的位址相等,並不能說明這兩個變數是同乙個變數

(3)交換分割槽:在磁碟上開闢一塊空間,以記憶體管理方式來管理,作為對記憶體的補充

程序管理命令時 top:mem:記憶體的使用情況

swap:交換分割槽的使用情況

(乙個程序的所有頁不一定非得在記憶體上儲存。)

頁面置換演算法:將記憶體上的頁換到交換分割槽上,將交換分割槽上的頁換上來載入到記憶體上

Linux 程序的概念

程序根據字面意思,無非就是正在執行或者正在執行的程式。但是在核心觀點上理解,它就是擔任分配系統資源的實體。在linux中,每乙個程序都由task struct 資料結構來定義,而它就是我們常說的pcb process control block 它是對程序控制的唯一手段,也是最有效的手段,他對被裝載...

Linux程序的概念

呼叫fork函式後,會建立乙個子程序,並且父子兩個程序都從fork處執行,fork函式有兩個返回值,對於父程序會返回子程序的pid,此時pid會大於0,對於子程序來說,pid會等於0。include 獲取子程序的狀態 include 獲取子程序的狀態 include 程序標頭檔案 include i...

Linux 程序概念

任何計算機系統都包含乙個基本的程式集合,成為作業系統 os 它包括 作業系統是管管理的軟體 使用者操作 使用者操作介面 shell,lib,指令等 作業系統 驅動程式 硬體 作業系統管理硬體 系統呼叫 在開發者角度,作業系統會對外表現為乙個整體,但是會暴露自己的一部分介面供上層開發者使用,這部分由作...