日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux进程全解6——进程的诞生和消亡

發(fā)布時間:2023/12/20 linux 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux进程全解6——进程的诞生和消亡 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以下內(nèi)容源于朱有鵬《物聯(lián)網(wǎng)大講堂》的課程學習整理,如有侵權(quán),請告知刪除。


1、進程的誕生

(1)進程0和進程1

  • 進程0,是操作系統(tǒng)在啟動過程中,由內(nèi)核一點點構(gòu)建起來;
  • 內(nèi)核態(tài)下的進程1,是由進程0利用內(nèi)核內(nèi)部的“fork”創(chuàng)建出來,然后才轉(zhuǎn)變?yōu)橛脩魬B(tài)下的進程1;

(2)fork

(3)vfork


2、進程的消亡

(1)正常終止和異常終止;

(2)進程在運行時需要消耗系統(tǒng)資源(內(nèi)存、IO),進程終止時,應(yīng)該完全釋放這些資源(如果進程消亡后仍然沒有釋放,相應(yīng)資源會丟失)。

(3)linux系統(tǒng)設(shè)計時規(guī)定

  • 每一個進程退出時,操作系統(tǒng)會自動回收這個進程涉及到的所有的資源;
  • 譬如malloc申請的內(nèi)容沒有free時,當前進程結(jié)束時這個內(nèi)存會被釋放;
  • 譬如open打開的文件沒有close的在程序終止時也會被關(guān)閉;
  • 但是操作系統(tǒng)只是回收了這個進程工作時消耗的內(nèi)存和IO,而并沒有回收這個進程本身占用的內(nèi)存(8KB,主要是task_struct和棧內(nèi)存)。

(3)操作系統(tǒng)不能回收進程本身的8KB內(nèi)存,需要別人來輔助回收。

  • 因此每個進程都需要一個幫助它收尸的人,這個人就是這個進程的父進程。

3、僵尸進程

(1)子進程先于父進程結(jié)束

  • 子進程結(jié)束后,父進程此時并不一定立即就能幫子進程“收尸”;
  • 在這一段時間內(nèi)(子進程已經(jīng)結(jié)束,而父進程尚未幫其收尸),子進程就被稱為僵尸進程。

(2)子進程除task_struct和棧外,其余內(nèi)存空間皆已清理。

(3)父進程可以使用wait或waitpid,顯式地回收子進程(剩余待回收的)內(nèi)存資源并且獲取子進程退出狀態(tài)。

(4)父進程也可以不使用wait或者waitpid回收子進程,父進程結(jié)束時一樣會回收子進程(剩余待回收的)內(nèi)存資源。

  • 這樣設(shè)計是為了防止父進程忘記顯式調(diào)用wait/waitpid來回收子進程從而造成內(nèi)存泄漏

4、孤兒進程

(1)父進程先于子進程結(jié)束,子進程成為一個孤兒進程。

(2)linux系統(tǒng)規(guī)定,所有的孤兒進程都自動成為一個特殊進程(進程1,也就是init進程)的子進程。



總結(jié)

以上是生活随笔為你收集整理的Linux进程全解6——进程的诞生和消亡的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。