如果合適
}
將exec參數拷貝到新的用戶棧區;
對setuid程序和進程跟蹤做特別處理;
為返回用戶態
釋放文件的索引節點(算法iput);
}
系統調用exit
系統調用exit實現進程的自我終止
exit的語法格式如下
void exit(status);
int status;
其中
exit的算法描述
算法 exit
{ 忽略所有軟中斷信號;
if (是與控制終端關聯的進程組組長)
{ 向該進程組的所有組員發送掛起信號;
將所有組員的進程組號置為
關閉所有打開的文件(算法close的內部形式);
釋放當前目錄(算法iput);
釋放改變的根目錄(如果存在的話)(算法iput)
釋放區及與該進程有關的內存(算法freereg);
寫記賬記錄;
exit的算法描述(續)
使進程狀態為僵死狀態;
將所有子進程的父進程置為init進程(
若任何子進程僵死
向父進程發送子進程死信號;
上下文切換;
}
系統調用wait
系統調用wait用於將調用進程掛起
wait調用的語法格式如下
int wait(stat_loc);
int stat_loc;
其中
wait的算法描述
算法 wait
{ if (等待進程沒有子進程) return(錯);
for (;;) /*該循環直到從循環內返回時結束*/
{ if (等待進程有僵死子進程)
{ 取任一僵死子進程;
將子進程的CPU使用量加到父進程;
釋放子進程的進程表項;
return(子進程標識號
}
wait的算法描述(續)
if (該進程沒有子進程) return(錯);
睡眠於可中斷的優先級上(事件
}
}
[
From:http://tw.wingwit.com/Article/program/czxt/201311/24165.html