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

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

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

  算法 fork無輸入參數父進程返回子進程PID子進程返回

  { 檢查可用的內核資源;

  取一個空閒的進程表項和惟一的PID號;

  檢查用戶沒有過多運行進程;

  將子進程的狀態設置為創建狀態;

  將父進程進程表項的數據拷貝到子進程進程表項中;

  當前目錄和根目錄的索引節點引用計數加;

  文件表中打開文件的引用計數加;

  在內存中作父進程上下文的拷貝;

  fork的算法描述(續)

  在子進程的系統級上下文中壓入虛設系統級上下文層;

  if (正在執行的進程是父進程)

  { 將子進程的狀態設置為就緒狀態;

  return(子進程的PID);

  }

  else {

  初始化U區的計時域;

  return();

  }}

  系統調用exec

  exec系列中的系統調用都完成同樣的功能它們把一個新的程序裝入調用進程的內存空間以改變調用進程的執行代碼從而使調用進程執行新引入的程序功能

  這一組系統調用的主要差別在於給出參數的數目和形式不同下面給出兩種基本的exec調用格式說明

  int execl(path arg [argargn]);

  char *path*arg*arg*argn ;

  int execv(pathargv);

  char *path*argv[ ];

  exec算法描述

  算法 exec輸入參數有文件名參數表環境變量無輸出

  { 取文件的索引節點(算法namei);

  驗證文件可被執行用戶有執行許可權;

  讀文件頭檢查它是否為裝入模塊;

  將exec參數從老地址空間拷貝到系統空間;

  for (與該進程附接的每個區)

  使區與進程斷接(算法detachreg);

  for (裝入模塊中指定的每個區);

  { 分配新區(算法alloreg);

  exec算法描述(續)

  將新區附接到進程(算法attachreg);

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


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