新聞中心
id為0的進(jìn)程通常是調(diào)度進(jìn)程,常常被稱為交換進(jìn)程(swapper),該進(jìn)程為內(nèi)核的一部分,它并不執(zhí)行任何磁盤上的程序,因此也被稱為系統(tǒng)進(jìn)程。

id為1 init進(jìn)程,在自舉過程結(jié)束后由內(nèi)核調(diào)用。
id為2 頁守護(hù)進(jìn)程。
對于父進(jìn)程已經(jīng)終止的所有進(jìn)程,他們的父進(jìn)程都改變?yōu)閕nit。
在一個進(jìn)程終止時,內(nèi)核逐個檢查所有活動的進(jìn)程,以判斷他是否是正要終止進(jìn)程的子進(jìn)程,如果是,則將該進(jìn)程id更改為1,這種方法保證了每個進(jìn)程都有一個父進(jìn)程。
如果子進(jìn)程在父進(jìn)程終止之前終止,父進(jìn)程如何能做相應(yīng)檢驗(yàn)得到子進(jìn)程的終止?fàn)顟B(tài)呢?對此的回答是:內(nèi)核為每個子進(jìn)程保存了一定量的信息,所以當(dāng)終止進(jìn)程的父進(jìn)程調(diào)用wait或waitpid時,可以得到這些信息。
僵死進(jìn)程:一個已經(jīng)終止,但是其父進(jìn)程尚未對其進(jìn)行善后處理(獲取終止子進(jìn)程的有關(guān)信息,釋放它仍占有的資源)的進(jìn)程
一個由init進(jìn)程領(lǐng)養(yǎng)的進(jìn)程終止時會發(fā)生什么?他會不會變?yōu)橐粋€僵死進(jìn)程?
否!因?yàn)閕nit被編寫為無論何時只要有一個子進(jìn)程終止,init就會調(diào)用一個wait函數(shù)取得其終止?fàn)顟B(tài)。這樣就防止了系統(tǒng)中有很多僵死進(jìn)程。
Swapper 進(jìn)程:
進(jìn)程0 :
所有進(jìn)程的祖先叫做進(jìn)程0 ,idle 進(jìn)程或因?yàn)闅v史的原因叫做swapper 進(jìn)程。它是在 linux 的初始化階段從無到有的創(chuàng)建的一個內(nèi)核線程。這個祖先進(jìn)程使用靜態(tài)分配的數(shù)據(jù)結(jié)構(gòu)。
在多處理器系統(tǒng)中,每個CPU都有一個進(jìn)程0,主要打開機(jī)器電源,計算機(jī)的BIOS就啟動一個CPU,同時禁用其他CPU。運(yùn)行的CPU 上的swapper進(jìn)程初初始化內(nèi)核數(shù)據(jù)結(jié)構(gòu),然后激活其他的并且使用copy_process()函數(shù)創(chuàng)建另外的swapper進(jìn)程,把0 傳遞給新創(chuàng)建的swapper進(jìn)程作為他們進(jìn)程的PID.
進(jìn)程1 :
由進(jìn)程0創(chuàng)建的內(nèi)核線程執(zhí)行init() 函數(shù),init() 一次完成內(nèi)核的初始化。init()調(diào)用execve()系統(tǒng)調(diào)用裝入可執(zhí)行程序init ,結(jié)果 ,init 內(nèi)核線程變成一個普通的進(jìn)程,且擁有自己的每個進(jìn)程內(nèi)核數(shù)據(jù)結(jié)構(gòu)。在系統(tǒng)關(guān)閉之前,init 進(jìn)程一直存活,因?yàn)樗鼊?chuàng)建和監(jiān)控在操作系統(tǒng)外層執(zhí)行的所有進(jìn)程的活動。
眾多python培訓(xùn)視頻,盡在python學(xué)習(xí)網(wǎng),歡迎在線學(xué)習(xí)!
網(wǎng)站欄目:創(chuàng)新互聯(lián)Python教程:pythonswapper是什么
當(dāng)前網(wǎng)址:http://fisionsoft.com.cn/article/dhjsheo.html


咨詢
建站咨詢
