1. 程式人生 > >對於多程序,子程序繼承了父程序的內容

對於多程序,子程序繼承了父程序的內容

  • 子程序繼承父程序
    • 使用者號UIDs和使用者組號GIDs
    • 環境Environment
    • 堆疊
    • 共享記憶體
    • 開啟檔案的描述符
    • 執行時關閉(Close-on-exec)標誌
    • 訊號(Signal)控制設定
    • 程序組號
    • 當前工作目錄
    • 根目錄
    • 檔案方式建立遮蔽字
    • 資源限制
    • 控制終端
  • 子程序獨有

    • 程序號PID
    • 不同的父程序號
    • 自己的檔案描述符和目錄流的拷貝
    • 子程序不繼承父程序的程序正文(text),資料和其他鎖定記憶體(memory locks)
    • 不繼承非同步輸入和輸出
  • 父程序和子程序擁有獨立的地址空間和PID引數。

  • 子程序從父程序繼承了使用者號和使用者組號,使用者資訊,目錄資訊,環境(表),開啟的檔案描述符,堆疊,(共享)記憶體等。
  • 經過fork()以後,父程序和子程序擁有相同內容的程式碼段、資料段和使用者堆疊,就像父程序把自己克隆了一遍。事實上,父程序只複製了自己的PCB塊。而程式碼段,資料段和使用者堆疊記憶體空間並沒有複製一份,而是與子程序共享。只有當子程序在執行中出現寫操作時,才會產生中斷,併為子程序分配記憶體空間。由於父程序的PCB和子程序的一樣,所以在PCB中斷中所記錄的父程序佔有的資源,