應用程序設計-進程管理

進程ID

進程ID的分配

進程的層次結構

運行新進程

exec系列調用:加載指定的程序到內存

fork:寫了copy,不共享。

vfork:共享數據段,並且子進程先執行。子進程必須立即發出一個成功的exec調用或是調用_exit()以便結束執行。

終止進程

exit():先完成進程的用戶空間中所需進行的所有工作,接着調用_exit()系統調用

_exit():內核處理終止進程的其餘工作

......
 

等待已終止子進程

unix的原設計者決定,若子進程的死亡時間先於它的父進程,則內核應該讓子進程進入一個特殊的進程狀態(zombie). (包含有用數據的基本內核數據結構),父進程取得子進程信息,正式結束。

pid_t wait(int *status)

pid_t waitpid(pid_t 皮的, int* status, int options)

int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options)

int system(const char *command)

 

殭屍進程

父進程先於子進程死亡,子進程會重新指派給init進程(pid爲1)。 init會週期性的等待它的所有的子進程,這樣確保殭屍進程不會停留太久的時間。

 

守護進程

必須是init的子進程,而其不的鏈接到一個終端。

int daemon(intnochdir,noclose)

 

 高級進程管理

進程調度:搶佔多任務,多處處理器。。。。。。。

查看kernel/sched.c

時段

i0密集型與處理器密集型進程

線程

讓出處理器

進程主動讓出執行權

int sched_yield(void)

實時系統

軟硬實時

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章