殭屍程序與孤兒程序(了解)
殭屍程序(有害):
殭屍程序的含義是在子程序死亡後的乙個過程。殭屍程序本意是為了讓父程序可以在任意時刻去檢視子程序的狀態資訊,因此在子程序死亡後不會直接清除他的所有資料,會保留他的部分資料以及埠號。
但是這也導致了若是父程序是乙個不斷迴圈的程序的時候,埠被占用的情況會越來越多,這也導致我們可以使用的埠會變的越來越少。那麼我們應該如何解決這個問題。
1.父程序死亡的時候,系統會讓init接管這些子程序,並殺死這些殭屍程序,因此我們可以使用把父程序結束的方式去解決這個問題
2.父程序呼叫wait/waitpid方法解決,在python中我們可以呼叫join方法,join方法會呼叫wait方法
孤兒程序(無害):
孤兒程序的含義是在子程序還未結束的時候,父程序優先子程序結束的情況。因為父程序死亡的情況下,子程序會由init接管,因此孤兒程序是無害的
殭屍程序與孤兒程序
殭屍程序 如果乙個程序通過fork 建立子了乙個程序,當子程序退出而父程序還沒有呼叫wait waitpid來儲存子程序的狀態且 它,此時子程序的狀態描述資訊仍然保留在系統中,稱這類程序為殭屍程序 殭屍程序的優點是方便上層程序得知子程序的退出狀態,但是如果不及時 會造成記憶體洩露 孤兒程序 當乙個父...
殭屍程序與孤兒程序
孤兒程序是指在程序還未退出之前它的父程序就已經先退出了,簡單來說就是乙個沒有父程序的子程序就是孤兒程序。既然所有的程序都必須在退出之後被父程序的wait 或waitpid 以釋放其遺留在系統中的一些資源,那麼孤兒程序的這些東西又誰來處理呢?這個任務就落到了init程序的身上,init程序就好像乙個收...
殭屍程序與孤兒程序
在父程序執行wait 之前,其子程序就已終止,即使子程序終止,系統也允許父程序在以後的某個時刻去執行wait 以確定子程序是如何終止。核心通過將子程序轉為殭屍程序,以釋放其占用的系統資源,供其他程序使用,該程序唯一保留的是系統pcb中的一條記錄,其中包含了子程序的id,終止狀態,和資源使用的資料。當...