程序的建立
作業系統通常是提供庫來建立程序。一般有兩種模式去建立程序。在unix社群程序建立有
2個函式
:fork(2c)
和exec(2c).
在unix大部分程序建立都是通過shell。shell是使用者和作業系統互動的中間點。當乙個命令(不是shell的一部分)輸入,shell會產生
(fork)
乙個程序。
fork(2c
)是unix系統呼叫(在libc庫),它允許複製自己。當呼叫fork時,會產生乙個與父程序一樣的子程序。它從父程序處繼承了整個程序的位址空間,包括程序上下文、程序堆疊、記憶體資訊等。父程序與子程序併發同時執行。可以通過fork返回來判斷是否子程式。如果返回
0,表示執行在子程序,大於
0執行在父程序。
另外乙個系統呼叫是
exec(2c)
,把乙個新程式裝入呼叫程序的記憶體空間,來改變呼叫程序的執行**,從而形成新程序。呼叫程序將被覆蓋,然後從新程式的入口開始執行,這樣就產生了乙個新的程序,但是它的程序識別符號與呼叫程序相同。
exec
沒有建立乙個與呼叫程序併發的新程序,而是用新程序取代了原來的程序。
如圖,s
hell用fork來建立乙個新的程序,然後用exec來引導程式的內容。
windows
與macosx
macosx
與unix/ posix
基本是一致,windows是有一點不同的。在windows
(nt)
你可以用unix的語法或者用方法createprocess。windows術語也與unix不一樣。
任務,就是程序。
程序,資源的容器。
程序的階層
就像檔案系統一樣,作業系統也把程序定義它的規則。當建立乙個程序,這個程序叫子程序,作業系統會把子程序和父程序關聯起來的。子程序通常會獲得父程序資源的子集。
當unix啟動,通常會啟動init程序。init程序的任務就是衍生(spawn)其他服務的程序。例如:
ps命令可以檢視的打牌
pid(process
id's)和
ppid
(parent
processid)
參考:(linux
中的用fork
如何由乙個父程序建立同時多個子程序
),中的用fork%28%29
如何由乙個父程序建立同時多個子程序
.html
(windows
任務管理器是怎麼工作的
),任務管理器是怎麼工作的?
.html
作業系統 程序排程
程序排程程序排程室作業系統必不可少的一種排程。因此在三種型別的os dos windows linux 都無一例外地配置了程序排程。此外它也是對系統效能影響最大的一種處理機排程。程序排程的任務 儲存處理機的現場資訊。在進行排程時首先需要儲存當前程序的處理機的現場資訊,如程式計數器 多個通用暫存器中的...
作業系統程序排程
華中農業大學 學生實驗報告 課程名稱 計算機作業系統 實驗名稱 程序排程 實驗型別 驗證 設計 綜合 創新 實驗目的 實驗目的 1 通過編寫程式實現程序或作業先來先服務 高優先權 按時間片輪轉排程演算法,使 學生進一步掌握程序排程的概念和演算法,加深對處理機分配的理解。2 了解程序 執行緒 的排程機...
作業系統 程序排程
對於單處理器系統,同一時間只有乙個程式可以執行 其他程序都應等待,直到cpu空閒並可排程為止。多道程式的目標是,始終允許某個程序執行以最大化cpu利用率。cpu的程序屬性 週期進行cpu執行和i o等待。程序在這兩個狀態之間不斷交替。程序執行從cpu執行開始,之後i o執行 接著另乙個cpu執行,接...