當前位置:編程學習大全網 - 編程語言 - 什麽是python swapper?

什麽是python swapper?

id為0的進程通常是壹個調度進程,通常稱為交換進程。這個進程是內核的壹部分,它不執行磁盤上的任何程序,所以也叫系統進程。

內核在引導進程後調用的id為1 init的init進程。

id為2的頁面守護程序。

對於其父進程已被終止的所有進程,它們的父進程被更改為init。

當壹個進程終止時,內核逐個檢查所有活動的進程,以確定它是否是要終止的進程的子進程。如果是,它將進程id更改為1,這確保了每個進程都有壹個父進程。

如果子進程在父進程終止之前終止,父進程如何做相應的檢查才能得到子進程的終止狀態?這個問題的答案是,內核為每個子進程保存了壹定量的信息,所以當終止進程的父進程調用wait或waitpid時,它可以獲得這些信息。

死進程(Dead process):壹個已經被終止的進程,但是它的父進程還沒有處理它(獲取被終止的子進程的信息,釋放它仍然占用的資源)。

當init進程采用的進程終止時會發生什麽?他會變成僵屍過程嗎?

不要!因為init是這樣編寫的,無論子進程何時終止,init都會調用壹個等待函數來獲取它的終止狀態。這可以防止系統中出現許多死進程。

交換過程:

流程0:?

所有進程的祖先稱為進程0,空閑進程或由於歷史原因,它被稱為swapper進程。它是linux初始化階段從零開始創建的內核線程。這個祖先進程使用靜態分配的數據結構。

在多處理器系統中,每個CPU都有壹個進程0,主要是打開機器的電源,計算機的BIOS啟動壹個CPU,同時禁用其他CPU。正在運行的CPU上的包裝器進程最初初始化內核數據結構,然後通過使用copy_process()函數激活其他進程並創建另壹個包裝器進程,並將0作為其進程的PID傳遞給新創建的包裝器進程。

流程1:

進程0創建的內核線程執行init()函數,init()壹次性初始化內核。Init()調用executable()系統加載可執行程序init。結果,init內核線程變成了壹個普通的進程,每個進程內核都有自己的數據結構。init進程在系統關閉之前壹直存在,因為它創建並監視在操作系統之外執行的所有進程的活動。

python學習網上有很多python培訓視頻。歡迎在線學習!

  • 上一篇:warzone2100的遊戲秘籍
  • 下一篇:機器人的演講稿
  • copyright 2024編程學習大全網