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
操作來釋放他們的資源。
孤兒程序:父程序結束,但是子程序並未結束,那麼子程序就是孤兒程序3、程序的狀態模型圖將所有的孤兒程序都直接掛載到init下
父程序 建立 子程序 init--》所有程序的祖先 pid=1
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,指令等 作業系統 驅動程式 硬體 作業系統管理硬體 系統呼叫 在開發者角度,作業系統會對外表現為乙個整體,但是會暴露自己的一部分介面供上層開發者使用,這部分由作...