熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 操作系統 >> 正文

操作系統課程第三章-進程和線程的描述與控制[9]

2013-11-15 15:54:07  來源: 操作系統 

  如果合適則將區裝入內存(loadreg);

  }

  將exec參數拷貝到新的用戶棧區;

  對setuid程序和進程跟蹤做特別處理;

  為返回用戶態初始化用戶寄存器保護區;

  釋放文件的索引節點(算法iput);

  }

  系統調用exit

  系統調用exit實現進程的自我終止

  exit的語法格式如下

  void exit(status);

  int status;

  其中status是返回給父進程的一個整數以備父進程檢查

  exit的算法描述

  算法 exit輸入參數是給父進程的返回碼無輸出

  { 忽略所有軟中斷信號;

  if (是與控制終端關聯的進程組組長)

  { 向該進程組的所有組員發送掛起信號;

  將所有組員的進程組號置為;}

  關閉所有打開的文件(算法close的內部形式);

  釋放當前目錄(算法iput);

  釋放改變的根目錄(如果存在的話)(算法iput)

  釋放區及與該進程有關的內存(算法freereg);

  寫記賬記錄;

  exit的算法描述(續)

  使進程狀態為僵死狀態;

  將所有子進程的父進程置為init進程();

  若任何子進程僵死則向init發送子進程死信號;

  向父進程發送子進程死信號;

  上下文切換;

  }

  系統調用wait

  系統調用wait用於將調用進程掛起直至其子進程因暫停或終止而發來軟中斷信號為止

  wait調用的語法格式如下

  int wait(stat_loc);

  int stat_loc;

  其中stat_loc是用戶空間的一個地址它含有子進程的退出狀態碼

  wait的算法描述

  算法 wait輸入參數是存放退出進程狀態的變量地址返回子進程標識號子進程退出碼

  { if (等待進程沒有子進程) return(錯);

  for (;;) /*該循環直到從循環內返回時結束*/

  { if (等待進程有僵死子進程)

  { 取任一僵死子進程;

  將子進程的CPU使用量加到父進程;

  釋放子進程的進程表項;

  return(子進程標識號子進程退出碼);

  }

  wait的算法描述(續)

  if (該進程沒有子進程) return(錯);

  睡眠於可中斷的優先級上(事件子進程退出);

  }

  }

[]  []  []  []  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/czxt/201311/24165.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.