UNIX中的進程基本概念

《the Linux programming interface》讀書筆記,瞭解了進程和進程通信的
一些基本概念,稍加整理。

Linux中的進程管理:

每個進程都有進程號,稱之爲PID.每個進程都屬於一個組,這個組也有一個
組號(GID),其中有個進程是組長,組號就是這個組長進程的進程號。

父進程通過fork()命令創建子進程,子進程會繼承父進程的系統資源,也就是
可以使用訪問父進程的內存頁等等,子進程也會用PPID記錄自己父親的進程號。子進程的這裏的繼承是複製新的一份,包括父進程的堆,棧,數據段等,
可以理解爲fork()之後,子進程被創造之後,就是父進程該執行fork()代碼的下一行的開始狀態。

當然,子進程如果只能靠父進程接濟就太撈了,通過execve()系統調用,子進程可以執行全新的程序。

兩個特殊的進程:
init進程是不能被殺死kill90的,除非down機。init進程是所有進程的父進程,一般
進程號是1,看車牌號就直到這個進程很牛x,它是特權進程。

Daemon守護進程是做一些系統運行中日常更新任務的,比如日誌進程syslogd,httpd

進程間通信

進程間通信簡稱IPC
進程間通信用的數據結構,我就翻譯以下:
在這裏插入圖片描述

進程間通信就拿用telnet登陸系統開始吧,登陸之後就稱爲一個會話(session),通過終端指揮一個會話進行工作控制,輸入命令的終端命令行
稱爲控制終端,負責讀入用戶輸入命令的進程稱爲前景進程,一個會話由
一個前臺進程和多組後臺進程組成。

多組進程之間通過管道進行通信,一組進程的運行結果(輸出)作爲另一組
進程的輸入,最終完成全部工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章