進程控制1——關於進程控制的一些基礎知識

進程是一個具有一定獨立功能的程序的一次運行活動
程序是放到磁盤的可執行文件,進程是指程序執行的實例。
進程執行的狀態:
這裏寫圖片描述
每個進程都有一個ID(ID是一個正整數),唯一標識了系統中的這個進程。
每個進程都有一個創建它的進程,叫父進程(Parent Process)
通過以下代碼可以獲取進程的ID,

printf ("當前進程 Id:  %d\n", getpid());
printf ("當前父進程Id: %d\n", getppid());
printf ("當前用戶  Id: %d\n", getuid());

所有進程的祖先(ancestor)是init進程,其PID爲1,當一個子進程(child process)變爲孤兒時(由於其父進程終止),此時該子進程會被init進程領養(adopted)。
一個進程的生命週期一般包括創建,運行,終止。

進程幾大特點:
動態性:進程的實質是程序的一次執行過程,進程是動態產生,動態消亡的
併發性:任何進程都可以同其他進程一起併發執行
獨立性:進程是一個能獨立運行的基本單位,同時也是系統分配資源和調度的獨立單位
異步性:由於進程間的相互制約,使進程具有執行的間斷性,即進程按各自獨立的、不可預知的速度向前推進
結構特徵:進程由程序、數據和進程控制塊三部分組成.

進程互斥:進程互斥是指當有若干進程都要使用某一共享資源時,任何時候最多允許一個進程使用,其他要使用該資源的進程必須等待,直到佔用該資源者釋放了該資源爲止。
臨界資源:操作系統中將一次只允許一個進程訪問的資源稱爲臨界資源
臨界區:進程中訪問臨界資源的那段程序代碼稱爲臨界區。爲實現對臨界資源的互斥訪問,應保證諸進程互斥的進入各自的臨界區。
進程同步:一組併發進程按一定的順序執行的過程稱爲進程間的同步。

幾種進程調度的算法:
先來先服務調度算法First-Come,First-ServedScheduling(FCFS)
最短作業優先調度Shortest-Job-FirstScheduling(SJF)
基於優先級調度 Priority Scheduling
循環調度Round-RobinScheduling(RR)或時間片輪轉法

進程死鎖:多個進程因競爭資源而形成一種僵局,若無外力作用,這些進程都將永遠不能再向前推進。

發佈了53 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章