進程是一個具備必定獨立功能的程序的一次運行活動算法
三種狀態併發
進程id(PID):標識進程的惟一數字函數
父進程的ID:PPIDblog
進程互斥:指當有若干進程都要使用某一共享資源時,任什麼時候刻最多容許一個進程使用,其餘要使用該資源的進程必須等待,直到佔用該資源者釋放了該資源爲止隊列
進程同步:一組併發進程按必定的順序執行的過程稱爲進程間的同步。具備同步關係的一組併發進程稱爲合做進程,合做進程間互相發送的信號稱爲消息或事件進程
進程調度:按必定算法,從一組待運行的進程中選出一個來佔有CPU運行事件
經常使用算法:先來先服務調度算法、短進程優先調度算法、高優先級優秀調度算法、時間片輪轉法ip
死鎖:多個進程因競爭資源而造成一種僵局,若無外力做用,這些進程都將永遠不能再向前推動內存
獲取ID資源
獲取本進程ID getpid(void)
獲取父進程ID getppid(void)
進程建立-fork
三種返回值
一、在父進程中,fork返回新建立的子進程的PID
二、在子進程中,fork返回0
三、若是出現錯誤,fork返回一個負值
注意:子進程的數據空間、堆棧空間都會從父進程獲得一個拷貝,而不是共享。int count=0,在子進程中對count進行加1的操做,並不會影響到父進程的中的count值,父進程中的count值仍爲0
進程建立-vfork
於fork區別
一、fork:子進程拷貝父進程的數據段
vfork:子進程和父進程共享數據段
二、fork:父、子進程的執行次序不肯定
vfork:子進程先運行,父進程後運行
exec函數族
啓動一個新程序,替換原有的進程,所以進程的PID不會改變
進程等待
wait(int *status)//pt=wiat(NULL);
阻塞該進程,直到某個子進程退出
進程通訊
目的
一、數據傳輸
二、資源共享
三、通知事件
四、進程控制
經常使用進程間通訊方式
一、管道(pipe)和有名管道(FIFO)
二、信號(signal)
三、消息隊列
四、共享內存
五、信號量
六、套接字