進程(cheng)詳(xiang)解,由淺(qian)入深的進程(cheng)學習筆記
時間:2018-08-02 來源:未知
1.進程
進(jin)程是(shi)程序的一(yi)次動(dong)態執行;
進程是程序(xu)執行和(he)系統(tong)資源管(guan)理的最小單位,存在資源的分(fen)配;
2.程序
程序是若干(gan)指令的集(ji)合;
程序是靜態存儲在(zai)文件中;
3.進程控(kong)制塊
保存創建進(jin)程的(de)信息;
4.進(jin)程號(hao)和進(jin)程狀態(tai)
系(xi)統標(biao)識進(jin)程;S阻塞(sai) Z 僵尸 R運行
5.進程的分類(lei)
1.交(jiao)互進程:由shell創建,依(yi)賴于終端,
終端退(tui)出,進程退(tui)出;
2.批處(chu)理進(jin)程:不受終端控制。進(jin)入隊列,順序執(zhi)行
3.守護進程:在后臺運(yun)行(xing),獨立(li)于終端(duan),
6.進程的拷貝
子(zi)進(jin)程對父(fu)進(jin)程進(jin)行的(de)地址資源的(de)基本(ben)全(quan)部拷貝;
(數據段,代碼段(fork后),緩沖區);
各個進程擁有獨立的虛擬地址空間0-4G;
7.Fork函數理(li)解
Fork父進(jin)程執行一次(ci),但是操作系統會給父子進(jin)程不(bu)同的返回值;
8.孤兒進程
父進(jin)程先于子進(jin)程退出;被(bei)init收養;
9.終止(zhi)進程
Exit; _exit; return (main);fflush緩沖(chong)區(qu)區(qu)別
10. 僵尸進程(cheng)defunct(Z)
子進(jin)(jin)程已經退(tui)出,父進(jin)(jin)程沒有回(hui)收子進(jin)(jin)程的資(zi)源PCB(進(jin)(jin)程控(kong)制塊);
11. 阻塞(sai)非阻塞(sai)
阻塞:信號的喚(huan)醒;等待(dai)進程(cheng)退出,回收子進程(cheng)資源;
非(fei)阻塞:立即返回,時刻輪詢;
12. 退出狀態(tai)返(fan)回wait
Wait返回保(bao)存子進程(cheng)exit退(tui)(tui)出時的退(tui)(tui)出狀態(tai);
Exit()退出狀(zhuang)態;
實(shi)際編程(cheng)時,可(ke)以通過wait系統調用接收子進程(cheng)的退(tui)出狀態,來(lai)進行(xing)相應(ying)的處理。
13. Wait和waitpid
Wait阻塞父(fu)進(jin)(jin)(jin)程等待(dai)任意子進(jin)(jin)(jin)程結束,返回(hui)結束進(jin)(jin)(jin)程的進(jin)(jin)(jin)程號
Waitpid
Waitpid(-1,int *status,0);=== wait(int *status)
非阻塞:
如果(guo)沒(mei)有等(deng)到結果(guo),則返(fan)回(hui)0;
如果等(deng)到,則(ze)返回退出進(jin)程的PID
14. Exec函數族(概(gai)念)
通過調用(yong)exec函數(shu)來取代原有進程(cheng)的數(shu)據段(duan)(duan),代碼段(duan)(duan),堆棧(zhan)段(duan)(duan)來執行另外(wai)一(yi)個程(cheng)序。
在(zai)形式(shi)上實現了程序間的調(diao)用;
15. Exec函(han)數的總(zong)結
1.可執行(xing)文件的查找(zhao)方式 :
帶路徑execl/execv
省略路(lu)徑execlp/execvp
指(zhi)定路徑execle/execve
2.參數的傳遞v
Char * 列(lie)舉; char * [] 指(zhi)針數(shu)組;
3.環境變量的使用e
指定環境變量,可執行文件的查找路徑(jing)
16. 進程的內(nei)存空間
進程(cheng)的虛(xu)擬內(nei)存(cun)是操作(zuo)系統在(zai)邏輯上(shang)假想(xiang)的一片內(nei)存(cun)
進(jin)(jin)程(cheng)的(de)虛(xu)擬內(nei)存(cun)(cun)只會在程(cheng)序實際(ji)運(yun)行過程(cheng)中(zhong),需(xu)要被(bei)(bei)訪問(wen)到的(de)部分(fen)被(bei)(bei)映射(she)到實際(ji)的(de)物理內(nei)存(cun)(cun),映射(she)通(tong)過頁表的(de)實現;虛(xu)擬內(nei)存(cun)(cun)空間大,只是代表了(le)他能訪問(wen)的(de)內(nei)存(cun)(cun)空間比較大,不(bu)帶表他占用的(de)實際(ji)的(de)物理內(nei)存(cun)(cun)大;通(tong)過TOP命令(ling)來查看;進(jin)(jin)程(cheng)之間通(tong)過。

進程的內存圖


