linux process management

來源:互聯網
上載者:User

標籤:linux   核心   kernel   

CREAT PROCESS
fork()|clone(參數,決定父子函數的共用內容)|do_fork()|copy_process()|dup_task_struct()建立子進程的核心堆棧,複製父進程的進程描述符(task_struct)進程描述符的很多成員被清除或者設為初值設定子進程的狀態task_struct-->state設定子進程的許可權task_struct-->flags設定子進程的進程號task_struct-->PID根據clone的參數,拷貝或共用: 開啟的檔案(task_struct-->fd),
檔案系統資訊(task_struct),訊號處理函數(task_struct-->struct signal_struct *signal;)進程的地址空間(task_struct-->struct mm_struct *mm, *active_mm;)
讓父子進程平分剩餘的時間片。|子進程被喚醒,調用exec()並執行!NOTE進程幾點要注意的:1,進程可以執行一個或者多個程式,一個程式可以被多個進程執行。2,受到共用資源的約束,進程會產生約束關係,造成進程會處於不同的狀態,比如等待沒有一個資源如IO請求,或造成阻塞,直到資源被滿足才會釋放該進程,進入執行狀態。對於時間片用完的進程會進入就緒狀態。
3,臨界資源一次只允許一個進程使用。EXIT PROCESSexit()
|do_exit()|對task_struct的state(設為PF_EXITING)、mm(調用__exit__mm())、segment(調用sem_exit),file(__exit_files),fs(__exit_fs),signal(exit_sighand),exit_code,notify等資源進行釋放。然後調用schedule()調用其他的進程,此時進程處於殭屍狀態,進程描述符存在於鏈表中,直到父進程調用wait4(),才完全釋放進程,刪除鏈表中的進程描述符task_struct和共用的資源。

linux process management

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.