程序排程
概念:按一定的演算法,從一組待執行的程序中選出乙個來占用cpu的執行。
排程方法: 搶占式 、 非搶占式
排程演算法:1)先來先服務 2)短程序優先 3)高優先順序優先 4)時間片輪轉法
死鍵:多個程序因競爭資源而形成一種僵局,若無外力作用,這些程序將永遠不能向前推進。
獲取id的標頭檔案:#include 、
pid_t.getpid(void) 獲取本程序id
pid_t. getppid(void) 獲取父程序id
程序的建立: 建立子程序 pid_t fork(void)
一次呼叫,返回兩個程序,可能有三種返回值;
1)返回 失敗 < 0
2)父程序 返回子程序id
3)子 返回0
init---------始祖程序:所有程序的源頭
fork與vfork的區別:
1)fork:子程序拷貝父程序的資料段或資源(一模一樣), 呼叫的標頭檔案
vfork:子程序與父程序共享資料段
2)fork:父、子程序的執行順序不確定
vfork:子程序先執行,父程序後執行
exce函式族: #include
1 int execl(const char *path, const char *arg1,..............)
引數: path:被執行程式名(包含完整的路徑)
arg1......argn:被執行的程式所需的命令列引數,含程式名,以空指標(null)結束
2 int main(int argc, char **argv) .......命令列引數 sleep( );
exec用被執行的程式替換呼叫它的程式
區別:fork:建立乙個新的程序,產生乙個新的pid
exec啟動乙個新的程式,替換原有的程序,因此程序的pid不會發生改變 ............俗稱 借屍還魂
程序的等待: #include #include
pid_t wait(int status)
功能: 阻塞該程序,直到其某個子程序退出。
程序排程 模擬程序排程的過程
通過這次實驗,理解程序排程的過程,進一步掌握程序狀態的轉變 程序排程的策略,進一步體會多道程式併發執行的特點,並分析具體的排程演算法的特點,掌握對系統效能的評價方法。編寫程式模擬實現程序的輪轉法排程過程,模擬程式只對pcb進行相應的排程模擬操作,不需要實際程式。假設初始狀態為 有n個程序處於就緒狀態...
程序的排程
在我的作業系統還未進入程序之前,應該好好學習一下程序的排程。下面就來討論一下。1 先來先服務 fcfs 顧名思意,就是嚴格按照程序在佇列中的順序依次執行。沒有太多可說的。2 迴圈法 round robin 基本思想是讓每個程序在就緒佇列中的等待時間與享受服務的時間成比例。基本概念是將cpu的處理時間...
程序的排程
程序的排程策略 排程策略 一組規則,決定什麼時候以怎樣的方式選擇乙個新程序執行。linux的排程基於分時和優先順序,程序根據優先順序來排隊 優先順序是動態的 程序排程的時機 核心執行緒是只有核心態沒有使用者態的特殊程序。程序的切換 程序的切換 掛起正在cpu上正在執行的程序,並恢復以前掛起的某個程序...