一、進程控制
1、進程與程序:
2、進程的特性:動態性、併發性、獨立性、異步性
3、進程的狀態:阻塞、就緒、運行
4、進程互斥、臨界資源、臨界區
5、進程調度
6、死鎖
7、進程創建函數fork()
fork()被調用一次,卻返回兩次:在父進程中,fork返回新創建的子進程的PID;在子進程中,fork返回0。fork()產生的子進程的數據區、堆棧區都是父進程的一個拷貝,而不是共享。
vfork與fork的區別;
wait(),指導某個子進程退出,返回值爲退出的子進程。
二、進程通信
1、無名管道(pipe)和有名管道(fifo)
管道:單向的、先進先出,讀進程從頭部讀出數據,寫進程從尾部寫入數據
無名管道:父子進程的通信
有名管道:任意進程間的通信,本質上是文件,先運行讀進程後運行寫進程。
2、消息隊列:不受進程同步的影響
3、共享內存:
4、信號通信(軟件中斷)
信號的處理:
(1)忽略該信號、(2)使用用戶定義的處理函數signal(signal, func)、(3)使用系統默認的方式
5、信號量:描述共享資源 或者 用於進程同步
6、socket