Skip to main content

กระบวนการซอมบี้คืออะไร?

กระบวนการซอมบี้เป็นอินสแตนซ์ของโปรแกรมคอมพิวเตอร์ที่เก็บบันทึกตารางกระบวนการแม้จะมีการดำเนินการเสร็จสิ้นกระบวนการที่หมดอายุเช่นนี้มักจะเกี่ยวข้องกับ unix reg;และระบบปฏิบัติการอื่น ๆ ที่คล้ายกันเนื่องจากวิธีที่พวกเขาจัดการกับกระบวนการเด็กเมื่อกระบวนการเด็กดำเนินการเสร็จสิ้นโดยทั่วไปแล้วผู้ปกครองจะรับผิดชอบในการลบออกจากตารางกระบวนการโดยปกติแล้วจะเป็นไปไม่ได้ที่จะลบกระบวนการซอมบี้โดยตรงด้วยคำสั่งฆ่าแม้ว่าผู้ปกครองมักจะสามารถลบออกได้หากผู้ปฏิบัติงานใช้การแจ้งเตือนสัญญาณเด็ก (Sigchld)ความล้มเหลวนี้กระบวนการซอมบี้อาจถูกลบออกทางอ้อมโดยการฆ่าผู้ปกครอง

กระบวนการซอมบี้เป็นคำเชิงพรรณนาเชิงเปรียบเทียบที่อ้างอิงถึงคนตายกระบวนการหมดอายุใน Unix reg;และระบบปฏิบัติการที่คล้ายกันสามารถมองเห็นได้ว่าคล้ายกับซอมบี้ในการที่พวกเขารักษาสถานะของตารางกระบวนการแม้จะไม่ได้ทำหน้าที่ตามที่ตั้งใจไว้อีกต่อไปเมื่อกระบวนการดำเนินการเสร็จสิ้นบางครั้งก็มีการกล่าวกันว่าเสียชีวิตในขณะที่วิธีการที่ระบบปฏิบัติการกู้คืนการจัดสรรตารางกระบวนการอาจเรียกว่าการเก็บเกี่ยวกระบวนการหลักของซอมบี้นั้นควรจะเก็บเกี่ยวลูก ๆ ได้ในทางเทคนิคแม้ว่าสิ่งนี้จะไม่เกิดขึ้นเสมอไป

มีบางกรณีที่การดำรงอยู่ของกระบวนการซอมบี้อาจเป็นความตั้งใจหรือต้องการหลังจากกระบวนการเด็กหยุดดำเนินการแล้วผู้ปกครองอาจต้องเรียกใช้อินสแตนซ์อื่นของโปรแกรมเดียวกันในภายหลังหากซอมบี้ไม่ได้ถูกลบออกจากตารางกระบวนการเด็กใหม่จะไม่ได้รับการกำหนดบัตรประจำตัวเดียวกัน (ID) เป็นเด็กเก่าโปรแกรมบางอย่างอาจได้รับประโยชน์จากหรือต้องการความแตกต่างแบบนี้

หากกระบวนการหลักไม่ได้ดำเนินการคำสั่งรอเพื่อเก็บเกี่ยวซอมบี้ที่ต้องรับผิดชอบอาจเป็นไปได้ที่จะบังคับปัญหาโดยทั่วไปจะทำผ่านคำสั่ง Kill และส่งสัญญาณ Sigchld ไปยังกระบวนการหลักหากทุกอย่างทำงานอย่างถูกต้องกระบวนการหลักที่ได้รับสัญญาณนี้ควรเก็บเกี่ยวเด็กซอมบี้เพื่อให้สามารถนำ IDS และตำแหน่งตารางกระบวนการของพวกเขากลับมาใช้ใหม่

ภายใต้สถานการณ์บางอย่างกระบวนการหลักอาจเพิกเฉยต่อสัญญาณ Sigchldหากสิ่งนี้เกิดขึ้นและผู้ปฏิบัติงานยังคงต้องการให้ล้างตารางกระบวนการกระบวนการหลักอาจถูกฆ่าซอมบี้ใด ๆ ที่กระบวนการหลักที่สร้างขึ้นจะได้รับการกำหนดให้เป็นเด็กเข้าสู่กระบวนการเริ่มต้นเนื่องจาก init เริ่มต้นคำสั่งรอให้ลูก ๆ เป็นระยะ ๆ ซอมบี้ใด ๆ ที่รับผิดชอบในที่สุดจะถูกลบออกจากตารางกระบวนการ