Linux程式控制程式設計

mf1crystal發表於2017-12-06

一 程式控制理論基礎
程式的狀態:
程式是一個具有一定獨立功能的程式的一次執行活動,同時也是資源分配的最小單元;
程式是放到磁碟的可執行檔案;
程式是指程式執行的例項;

程式是動態的,程式是靜態的:程式是有序程式碼的集合;程式是程式的執行。通常程式不可在計算機之間遷移;而程式通常對應著檔案、靜態和可以複製
程式是暫時的,程式使長久的:程式是一個狀態變化的過程,程式可長久儲存
程式與程式組成不同:程式的組成包括程式、資料和程式控制塊(即程式狀態資訊)
程式與程式的對應關係:通過多次執行,一個程式可對應多個程式;通過呼叫關係,一個程式可包括多個程式。

建立: 每個程式都是由其父程式建立,程式可以建立子程式,子程式又可以建立子程式的子程式
執行: 多個程式可以同時存在,程式間可以通訊
撤銷: 程式可以被撤銷,從而結束一個程式的執行

Linux程式:
Linux系統是一個多程式的系統,它的程式之間具有並行性、互不干擾等特點。
也就是說,每個程式都是一個獨立的執行單位,擁有各自的權利和責任。其中,各個程式都執行在獨立的虛擬地址空間,因此,即使一個程式發生異常,它也不會影響到系統中的其他程式
Linux中的程式包含3個段,分別為“資料段”、“程式碼段”和“堆疊段”。

“資料段”存放的是全域性變數、常數以及動態資料分配的資料空間;
“程式碼段”存放的是程式程式碼的資料。
“堆疊段”存放的是子程式的返回地址、子程式的引數以及程式的區域性變數等。

程式ID:
程式ID(PID):標識程式的唯一數字
父程式的ID(PPID)
啟動程式的使用者ID(UID)

程式互斥:
程式互斥是指當有若干程式都要使用某一共享資源時,任何時刻最多允許一個程式使用,其他要使用該資源的程式必須等待,直到佔用該資源者釋放了該資源為止
作業系統中將一次只允許一個程式訪問的資源稱為臨界資源
程式中訪問臨界資源的那段程式程式碼稱為臨界區,為實現對臨界資源的互斥訪問,應保證諸程式互斥地進入各自的臨界區
一組併發程式按一定的順序執行的過程稱為程式間的同步;
具有同步關係一組併發程式稱為合作程式;
合作程式間互相傳送的訊號稱為訊息或事件。
概念:
按一定演算法,從一組待執行的程式中選出一個來佔有CPU執行。
排程方式:
• 搶佔式
• 非搶佔式
先來先服務排程演算法
短程式優先排程演算法
高優先順序優先排程演算法
時間片輪轉法
多個程式因競爭資源而形成一種僵局若無外力作用,這些程式都將永遠不能再向前推進

程式建立:
在pid=fork()之前,只有一個程式在執行,但在這條語句執行之後,就變成兩個程式在執行了,這兩個程式的共享程式碼段,將要執行的下一條語句都是if(pid==0).

兩個程式中,原來就存在的那個程式被稱作“父程式”,新出現的那個程式被稱作“子程式”,父子程式的區別在於程式識別符號(PID)不同.
表標頭檔案: #include

相關文章