進程控制原理

進程是一個具備必定獨立功能的程序的一次運行活動算法

三種狀態併發

 

 

 

 

進程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)

三、消息隊列

四、共享內存

五、信號量

六、套接字

相關文章
相關標籤/搜索