作業系統 如何建立子程序?

2021-07-06 05:34:57 字數 3956 閱讀 3894

實驗環境:linux fedora13

需要用到的命令:

top        動態檢視程序運**況,包括殭屍程序的數量

ps         靜態檢視程序執行清情況pstree  檢視程序樹kill        清除乙個正在執行的程序

./hello-loop.out&   hello-loop.out是用gcc hello-loop.c後產生的檔案,前後加上   ./   和   &以後使程序在後台執行。

cat /proc/15485/maps  15485是pid號

第一列代表記憶體段的虛擬位址。

第二列代表執行許可權,r=可讀,w=可寫,x=可執行,p=私有 s=共享

第三列代表在程序位址裡的偏移量

第四列對映檔案的主裝置號和次裝置號

第五列映像檔案的節點號

第六列是映像檔案的路徑

首先我們可以看到hello-loop.out

的程序有兩個

1.      

08048000-08049000 r-xp 00000000 fd:00264898 /home/  root  /hello-loop.out

2.      

08049000-0804a000 rw-p 00000000 fd:00264898 /home/

root 

/hello-loop.out

我們可以看到第乙個中的許可權是

r-xp

,第二個是

rw-p

說明第乙個是唯讀的,是**段,而第二個是可讀寫的,是資料段。

需要了解的名詞:

pid       程序號user   使用者名稱pr        核心排程優先順序ni         程序優先順序(預設為0)virt     程序「需要的」虛擬記憶體大小。

res      程序使用的、未被換出的物理記憶體大小shr共享記憶體

s           程序狀態

需要了解的函式:

fork()   

呼叫fork()的當前程序作為父程序,建立乙個子程序。父程序返回子程序的編號,子程序返回0。標頭檔案是unistd.h。

**一 fork()入門:

#include#include int main()

else if(pid==0)

else

}

1.  父程序首先執行到pid_t pid = fork()。2.  此時並沒有子程序。3.  然後父程序呼叫fork(),產生了乙個子程序。4.  此時有兩個程序在pid_t pid = fork();這一行上。

5.  然後父程序得到pid的值是子程序的pid號,而子程序的pid值是0。

6.  然後通過判斷pid的值,就可以把父程序和子程序區分開,呼叫不同的**。

**二:連續呼叫fork()  (別執行)

#include #include int main()
你會發現,程序數量呈細胞**的速度增長。

原因:

1.  呼叫第乙個fork()的時候產生乙個子程序,總共兩個程序。

2.  呼叫第二個fork()產生兩個子程序,總共四個程序。

3.  產生四個子程序,共八個程序。

4.  產生八個子程序,共十六個程序。

……

**三:乙個父程序建立十個子程序。

**四:建立乙個鏈表型的十個子程序

fedora13用個+號來省略接下來的程序。

**五:建立二叉樹型的十五個程序

孤兒程序:

乙個三個結點的二叉樹,乙個父節點帶著兩個子節點,把父節點kill掉,兩個子節點會跑到init那裡。這兩個子節點就是孤兒程序。

殭屍程序:

父節點停止,子節點休眠,孫節點沒事做(zombie)。

程序(一) 作業系統 程序建立

馮諾依曼體系結構 認識作業系統 程序概念 程序狀態 環境變數 程式位址空間 進度排程 現代計算機硬體體系結構 輸入裝置 採集獲取資料 鍵盤 輸出裝置 資料輸出 顯示器 儲存器 記憶體 運算器 處理器cpu 控制器 硬體結構決定軟體行為 qq聊天 所有的硬體都是圍繞著記憶體工作的 為什麼不使用更大的硬...

作業系統之程序建立

作業系統基於某種原因決定建立乙個新程序時,會按如下步驟操作 為新程序分配乙個唯一的程序識別符號。此時,主程序表中會新增乙個新表項,每個程序乙個表項。為程序分配空間。這包括程序映像中的所有元素。因此,作業系統必須知道私有使用者位址空間 程式和資料 和使用者棧需要多少空間。預設情況下會根據程序的型別分配...

作業系統 程序排程演算法程序物件建立

首先我們要清楚在程序物件中需要擁有哪些資訊 程序識別符號 程序進入時間 程序結束時間 其次,在程序執行時,我們又需要哪些中間值來輔助程序進行 服務剩餘時間 時間線 優先順序 最後,在程序執行結束後,我們需要得到哪些資訊 程序開始時間 程序結束時間 程序周轉時間 程序帶權周轉時間 在上述中我們可以發現...