『壹』 Linux進程通信實驗報告
一、實驗目的:
進一步認識並發(並行)執行的概念,區別順序執行和並發(並行)執行。
分析進程爭用臨界資源的現象,學習解決進程排斥的方法。
二、實驗環境:
一台至少具有256MB內存的計算機,並安裝Red Hat Linux 9的Linux操作系統。
三、實驗內容:
1. 預備知識
fork函數調用:創建一個新進程。
getpid函數調用:獲得一個進程的pid。
lockf系統的調用:在進程同步控制中為進程加鎖。
2. 編寫一段程序(程序名為fork1.c),使用系統調用fork()創建兩個子進程。當此程序運行時,在系統中有一個父進程和兩個子進程活動。讓每一個進程在屏幕上顯示一個字元:父進程顯示字元「a」,子進程分別顯示字元「b」和字元「c」。試觀察記錄屏幕上的顯示結果,並分析原因。
(1)進入Linux操作系統。
(2)打開終端。進入vi編譯器。
(3)輸入源程序代碼。
(4)按Esc鍵,進入命令模式後,輸入「: wq文件名」就可以運行該程序了。
『貳』 操作系統管理Linux 系統進程實驗報告
什麼是進程
比如:windows上安裝的QQ,我們會將其稱為QQ程序,那麼當QQ運行之後,在任務管理器中,我們可以看到QQ程序在運行著,此時,我們稱其為:QQ進程。
言簡意賅總結:當我們運行一個程序,那麼我們將該程序叫進程
注意:
1.當程序運行為進程後,系統會為該進程分配內存,以及運行的身份和許可權。
2.在進程運行的過程中,伺服器上回有各種狀態來表示當前進程的指標信息。
進程是已啟動的可執行程序的運行實例,進程有以下組成部分:
分配內存, 已分配內存的地址空間
安全屬性, 進程的運行身份和許可權
進程代碼, 運行一個或多個的線程
進程狀態, 進程運行後的多種狀態
靜態程序, 二進制文件, 靜態/bin/ls, /usr/sbin/sshd
動態進程, 程序運行的過程, 有生命周期及運行狀態
進程的運行環境,包括以下幾個部分:
局部和全局變數
當前的調度上下文
分配給進程使用的系統資源,例如文件描述符、網路埠等
給進程分配對應的pid,ppid
程序和進程的區別
1.程序是數據和指令的集合,是一個靜態的概念,比如/bin/ls、/bin/cp等二進制文件,同事程序可以長期存在系統中。
2.進程是一個程序的運行過程,是一個動態概念,進程是存在生命周期概念的,也就是說進程會隨著程序的終止而銷毀,不會永遠在系統中存在。
進程的生命周期
程序運行時進程的狀態關系:
1.當父進程接收到任務調度時,會通過fork派生子進程來處理,那麼子進程會集成父進程的衣缽。
2.子進程在處理任務代碼時,父進程會進入等待的狀態...
3.如果子進程在處理任務過程中,父進程退出了,子進程沒有退出,那麼這些子進程就沒有父進程來管理了,就變成了僵屍進程。
4.每個進程都會有自己的PID號,(process id)子進程則PPID