Process management(程序管理) Computer Science & Information Management Process management(程序管理)
程式與程序 「執行一個程式或指令」就可以『觸發』 事件而取得PID。
程式與程序 程式 (program):通常為 binary program , 放置在儲存媒體中 (如硬碟、光碟、軟碟、 磁帶等)。 程序 (process):程式被觸發後,執行者的 權限與屬性、程式的程式碼與所需資料等 都會被載入記憶體中, 作業系統並給予這 個記憶體內的單元一個識別碼 (PID),可以 說,程序就是一個正在運作中的程式。
查看process狀態 指令ps可查看process狀態 ps –l可查看更進階的狀態內容。(如父程序)
process專用函式 函式 用途 getpid() 取得pid getppid() 取得父程序(parent)的pid fork() 產生子程序(child)
練習 撰寫p1.c程式,印出執行程式的pid以及父 程序pid(ppid)。 #include<stdio.h> main(){ printf(“PID: %d, PPID: %d”, , ); } 編譯:gcc p1.c (-o 檔名) 執行:a.out (執行檔檔名)
Child 1 (PID=4) Child 2 (PID=5) Child 3 (PID=6) 產生子程序(child process) Unix啟動時剛開始只有一個程序(init),其 pid為1。 使用fork指令可以產生子程序 Parent, init (PID 1) Child 1 (PID=4) Child 2 (PID=5) Child 3 (PID=6)
產生子程序(child process) fork 重製一份程序(process) 當fork執行成功 回傳子程序(child)的PID給父程序(parent)。 回傳數值0給子程序(child)。
練習 撰寫p2.c程式並在程式中fork出子程序。 利用if判斷該程序為parent 或 child,並印出 其pid。 #include<stdio.h> main(){ printf(“PID: %d”, getpid()); int child = fork(); if(…) }
process排程 若有兩個以上的程序(parent, child)在執行, 且皆會使用大量的電腦資源(CPU運算、IO)。 則電腦會按照作業系統的排程法則來運作。 試撰寫大量迴圈運算,並利用父子程序搶 奪資源,查看執行狀態。