多程序程式設計
實驗名稱:
多程序程式設計
實驗目的:理解多程序的概念和程式設計方法
1 掌握乙個資料型別
pid_t
程序標識
2 掌握兩個函式:
getpid(),getppid()
,前者是獲得自己的程序號,後者是獲得父程序
的程序號
3 掌握
fork()
函式的功能,理解在程式設計中如何使用
fork()
的返回值來控制哪些**4是
父程序應該執行的,哪些是子程序應該執行的。
程式1 多程序程式設計基礎
#include
#include
#include
int main()
else
return 0; }
程式2:
主程序,建立
4 個子程序,這
4 個子程序分別列印
100
個』a』
,100
個』b』,100
個』c』
和100
個』d』。
請自己完成該實驗
程式3 殭屍程序
fork3.c
#include
#include
int main() .
編譯並且執行
輸入命令
ps –a –o pid ,ppid ,command
觀察原因分析:
在unix
系統中,乙個程序結束了,但是他的父程序沒有等待(呼叫
wait / waitpid)
他, 那麼他將變成乙個殭屍程序。通過
ps 命令檢視其帶有
defunct
的標誌。殭屍程序是乙個早已
死亡的程序,但在程序表
(processs
table)
中仍佔了乙個位置
(slot)
。 但是如果該程序的父程序已經先結束了,那麼該程序就不會變成殭屍程序。因為每個進
程結束的時候,系統都會掃瞄當前系統中所執行的所有程序,看看有沒有哪個程序是剛剛結
束的這個程序的子程序,如果是的話,就由
init
程序來接管他,成為他的父程序,從而保證
每個程序都會有乙個父程序。
init
程序會自動
wait
其子程序,而因此被
init
接管的所有程序
都不會變成殭屍程序。
程式4 fork4.c
如果乙個程序通過
fork
,產生了乙個子程序,這個子程序又通過
fork
產生乙個孫程序,然
後子程序很快結束,這時候孫程序的父程序就退出系統了,因此孫程序就將
init
程序作為父
程序 要求,編寫乙個這樣的程式,並且通過
pstree
命令顯示該孫程序的父程序。
請完成該程式並且用
pstree
命令觀察
併發程式設計 多程序1
實現原理 統一時間,載入多個任務到記憶體中,多個程序之間記憶體區域需要相互隔離,這種隔離是物理層面的隔離,其目的是為了保證數安全 指的是,作業系統會在多個程序之間做切換執行 切換任務的兩種情況 1.當乙個程序遇到了io操作 時會自動切換 2.當乙個任務執行時間超過閾值會強制切換 注意 在切換前必須儲...
多程序程式設計
linux下乙個程序在記憶體裡有三部份的資料,就是 資料段 堆疊段 和 段 其實學過組合語言的人一定知道,一般的cpu象i386,都有上述三種段暫存器,以方便作業系統的執行。段 顧名思義,就是存放了程式 的資料,假如機器中有數個程序執行相同的乙個程式,那麼它們就可以使用同一 個 段。堆疊段存放的就是...
多程序程式設計
一。多程序程式設計 1.函式學習 1 建立程序 1.函式名 fork 函式原型 pid t fork void 函式功能 建立乙個子程序 所屬標頭檔案 返回值 成功時 在父程序中返回子程序的pid 在子程序中返回是0 失敗時 子程序返回的 1 引數說明 無引數 2.函式名 vfork 函式原型 pi...