Linux程式設計 程序的建立

2021-07-24 16:58:29 字數 674 閱讀 6143

1.系統呼叫fork()允許乙個程序(父程序)建立一新程序(子程序)。具體做法是:新的子程序幾乎是父程序的翻版,子程序獲得了父程序的棧、資料段、堆和執行文字段的拷貝。可視作將父程序一分為二,術語fork由此得名。(fork()無需引數)

2.庫函式exit(status)終止乙個程序,將程序占用的所有資源(記憶體,檔案描述符等)歸還給核心,交其進行再次分配。引數status為一盒整形變數,標識程序的退出狀態。父程序可使用系統呼叫wait()來獲取該狀態。

3.庫函式exit()位於系統呼叫_exit()之上。在呼叫fork()之後,父子程序中一般只有乙個會通過exit()退出,另乙個程序則應使用_exit()終止。

4.系統呼叫wait(&status)的目的有兩個:

ps:

掛起:一般是主動的,由系統或程式發出,甚至於輔存中去。(不釋放cpu,可能釋放記憶體,放在外存)

阻塞:一般是被動的,在搶占資源中得不到資源,被動的掛起在記憶體,等待某種資源或訊號量(即有了資源)將他喚醒。(釋放cpu,不釋放記憶體)

5.系統呼叫execve(pathname, argv, envp)載入乙個新程式(路徑名為pathname,引數列表為argv,環境變數列表為exvp)到當前程序的記憶體。這將丟棄現存的程式文字段,並為程式重新建立棧、資料段以及堆。(fork()出乙個子程序後,在呼叫execve()修改子程序使其和父程序不同)

Linux程序 程序的建立

今天學習了linux的程序建立的基本原理,是基於0.11版本核心的。下面對其作一下簡單的總結。一 linux程序在記憶體中的相關資源 很容易理解,linux程序的建立過程就是記憶體中程序相關資源產生的過程,那麼linux程序在記憶體中有哪些相關資源呢?1 task陣列中的一項 乙個指標指向程序的ta...

linux程式設計之程序建立的內部實現

在linux中,程序建立實際上是通過do fork函式處理的。do fork函式的功能相對簡單 在 kernel fork.c 1.檢查是否或者哪個事件應該匯報給ptracer。2.通過copy process建立程序描述符和子程序執行所需要的其它資料結構。3.執行wake up new task函...

併發程式設計 程序 程序理論的建立

程式並不能單獨執行,只有將程式裝載到記憶體中,系統為它分配資源才能執行,而這種執行的程式就稱之為程序。程序 process 是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。簡單的說,程序就是乙個正在進行的乙個過程或者說乙個任務,負責執行任務的...