Linux 程序學習 一

2021-06-26 18:28:39 字數 1432 閱讀 2318

知識點1 程序概念

程序是作業系統最核心的概念之一。程序簡單而言是作業系統中執行的程式,它是作業系統資源管理的最小單元。程序是乙個動態的實體,是程式的一次執行過程。程序和程式的區別在於:程序是動態的,程式是靜態的,程序是執行中的程式,而程式是儲存在硬碟上的可執行的**。

知識點2 程序三態

(1)執行:

乙個程序在處理機上執行,則稱該程序處於執行狀態。處於執行狀態的程序數目不大於處理器的數目。

(2)就緒:

程序得到了除處理機以外的所有資源,一旦得到處理機便可執行,則稱該程序處於就緒狀態。就緒態程序可按多個優先順序來劃分佇列。

(3)阻塞

:阻塞態也稱睡眠或等待態,乙個程序在等待另乙個時間的發生(如請求i/o而等待i/o完成)而暫時停止執行,這時即便程序得到處理機也無法          執行,故稱該程序處於阻塞狀態。

知識點3 程序id

程序id稱為pid,是程序的標號

知識點4 程序互斥

程序互斥是兩個或兩個以上的程序同時訪問某個共享變數而導致。發生能夠訪問共享變數的程式**稱為臨界區,而實現共享的資源稱為臨界資源。

知識點5 程序同步

多個相關程序在執行次序上的協調稱為程序同步。用於保證多個程序在執行次序上的協調關係的相應機制稱為程序同步機制。

知識點6 程序排程(單獨寫)

知識點7 死鎖

多個程序占有對方需要的資源同時請求對方的資源,而他們在得到請求之前不會釋放所占有的資源,會導致死鎖的發生。

知識點1  

如何獲取程序id

使用函式getpid()可獲取當前程序的pid,而getppid()獲取該程序的父程序的pid

知識點2 如何建立程序

可以通過fork、vfork、exec函式族以及system函式來建立程序。

知識點3 fork與vfork的區別

vfork函式建立程序後子程序先執行,而fork建立程序父、子程序執行次序不定;vfork建立子程序與父程序共享資料段,而fork建立子程序複製父程序的**段,之後兩者不共享**段。

知識點4 exec函式族

exec函式族是啟用乙個新程序然後替換之前的程序,新程序的pid不會發生變化。exec函式中字尾不同具有不同的操作能力 字尾

操作能力

l希望接收以逗號分隔的引數列表,列表以null指標作為結束標誌

v希望接收到乙個以null結尾的字串陣列的指標

p是乙個以null結尾的字串陣列指標,函式可以dos的path變數查詢子程式檔案

e函式傳遞指定引數envp,允許改變子程序的環境,無字尾e時,子程序使用當前程式的環境

知識點5 system函式

system函式會呼叫fork函式建立乙個子程序,有子程序來實現system中的命令(舉例)

Linux程序學習(一)

程序是乙個動態的實體,是程式執行的一次過程。程序是作業系統資源分配的基本單位。區分程序和程式,程序是動態的,程式是靜態的 程序是執行中的程式,程式是一些可執行的 linux下可通過命令ps或pstree或ps af檢視當前系統中的程序。如圖所示 再認識幾個id 在unistd.h標頭檔案中,以下是獲...

Linux學習記錄之程序(一)

程序是unix作業系統的最重要的抽象之一,它是處於執行期的程式,但是它不僅僅包括 還包括相關的檔案,掛起訊號等資源。執行緒是程序活動的物件,每個執行緒都有乙個程式計數器,程序棧和一組程序計數器。linux中線程是程序的一種特例。程序提供兩種虛擬機制,虛擬處理器和虛擬記憶體。linux系統中通過for...

例項學習Linux程序通訊(一)

1 實驗一 訊號通訊 說明 利用訊號通訊在父子程序及兄弟程序之間進行通訊 解決方案 讓子程序在結束時,向父程序傳送sigchld訊號,父程序通過signal 或sigaction 函式來響應子程序的結束。在乙個程序終止或者停止時,將sigchld訊號傳送給其父程序。原始碼1 阻塞型通訊 includ...