調用fork()函數執行的操作

來源:互聯網
上載者:User

使用者建立一個進程唯一的方法是使用系統調用fork。核心為完成系統調用fork要進行幾步操作: 
1:為新進程在進程表中分配一個表項,系統對一個使用者可以同時啟動並執行進程數是有限的,對超級使用者沒有該限制,但也不能超過進程表的最大表項的數目。 
2:給子進程一個唯一的進程標識符PID,該進程標識符號其實就是該表項在進程表中的索引號。 
3:複製一個父進程的進程表項的副本給子進程。核心初始化子進程的進程表項時,是從父進程處拷貝的。所以子進程擁有與父進程一樣的uid、euid、gid、用於計算優先權的nice值、目前的目錄、當前根、使用者檔案描述符表等。 

4:把與父進程相連的檔案和索引節點表的引用數加1.這些檔案自動的與該子進程相連。 

5:核心為子進程建立使用者級上下文,核心為子進程的u區、區及輔助頁表分配記憶體,並複製父進程的區內容。這樣產生的是進程的靜態部分; 

6:產生進程的動態部分,核心複製父進程的內容相關的第一層,即寄存器上下文和核心棧,核心再為子進程虛設一個上下文層,這是為了子進程能“恢複”它的上下文。這時,該調用會對父進程返回子進程的pid,對子進程返回0.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.