簡述程式與程序

2021-06-22 03:42:57 字數 497 閱讀 8679

以前,一直覺得程式很奇妙,**經過編譯之後執行,變為程序,執行想得到想要的效果。

最近,瀏覽了一下linux0.11核心原始碼,對程式和程序有了新的認識。

程式本不會直接變為程序,**經編譯後變為包含鏈結資訊、段資訊的可執行的二進位制檔案。程式只不過是一串可以執行的指令而已。

當我們在控制台下執行./a.out,作業系統便建立乙個當前shell的的子程序,這個新程序實際上是乙個task_struct物件,task_struct中包含程序在執行中所有的資源。新程序的cpu指令暫存器eip指向a.out的入口位址,程式a.out就像被「掛載」在task_struct上,與新程序成為乙個整體。

每執行乙個程式,作業系統便會建立乙個新的task_struct物件,這個物件指向這個程式,構成乙個完整的程序。所以,沒有作業系統,程式是沒有辦法執行的。

作業系統中的所有程序被存放在乙個task[n]的陣列中,每次時鐘中斷時,cpu通過排程對這些程序輪詢執行。

所以說乙個程序是由核心和程式兩部分組成的。

Linux程序簡述

對於程序的建立,系統呼叫fork 允許乙個程序 父程序 建立乙個新程序 子程序 新的程序幾乎就等於父程序的翻版,子程序獲得了父程序的棧,資料段,堆和執行文字段的拷貝。對於程序的終止,則是使用exit status 函式,此函式會將程序所占用的所有資源 記憶體,檔案描述符等 歸還核心,交給核心進行再次...

程式與程序

通俗的說,程式是乙個包含可執行 的檔案,是乙個靜態的檔案,而程序是乙個開始執行但是還沒有結束的程式的例項 就是可執行檔案的具體實現,乙個程式可能有許多程序,而每乙個程序又有許多子程序,依次迴圈下去,而產生子孫程序,當程式被系統呼叫到記憶體以後,系統會給程式分配一定的資源 記憶體,裝置等 然後,進行 ...

程式與程序

程式可以簡單的理解為 的集合 而程序是程式執行之後在記憶體中的狀態,執行的程式會產生乙個或多個程序。cpu時間片是cpu分配給各個程式的時間 比如說 把一秒分為100份,每乙份占十毫秒,a程式執行占用cup乙個時間片,b程式接著執行 此時a程式從執行狀態切換至就緒狀態,b程式處於執行狀態 計算機中執...