อ่าน 1 นาที
กระบวนการเด็กกำพร้า
กระบวนการ กำพร้า คือ กระบวนการคอมพิวเตอร์ ที่ กระบวนการแม่ ได้สิ้นสุดหรือ ยุติลงแล้ว แต่ตัวมันเองยังคงทำงานอยู่
กระบวนการเด็กกำพร้า
กระบวนการกำพร้าคือกระบวนการคอมพิวเตอร์ที่กระบวนการแม่ได้สิ้นสุดหรือยุติลงแล้วแต่ตัวมันเองยังคงทำงานอยู่
เหมือนยูนิก
ในระบบปฏิบัติการแบบ Unix กระบวนการที่ถูกทิ้งร้างใดๆ จะถูกรับเลี้ยงโดยกระบวนการระบบที่กำหนดโดยการใช้งานทันที: เคอร์เนลจะกำหนดกระบวนการแม่ให้กับกระบวนการนี้ การดำเนินการนี้เรียกว่าการเปลี่ยนผู้ปกครองและเกิดขึ้นโดยอัตโนมัติ แม้ว่าในทางเทคนิคแล้วกระบวนการจะมีกระบวนการระบบเป็นผู้ปกครอง แต่ก็ยังเรียกว่ากระบวนการที่ถูกทิ้งร้างเนื่องจากกระบวนการที่สร้างมันขึ้นมาแต่เดิมไม่มีอยู่อีกต่อไป ในระบบอื่นๆ กระบวนการที่ถูกทิ้งร้างจะถูกยุติโดยเคอร์เนลทันที ระบบ Unix ส่วนใหญ่ในอดีตใช้initเป็นกระบวนการระบบที่กระบวนการที่ถูกทิ้งร้างจะถูกเปลี่ยนผู้ปกครองไป แต่ใน ระบบ DragonFly BSD , FreeBSD และ Linux สมัยใหม่ กระบวนการที่ถูกทิ้งร้างอาจถูกเปลี่ยนผู้ปกครองไปยังกระบวนการ " subreaper " แทนที่จะเป็นinit [ 1 ] [ 2 ]
กระบวนการอาจถูกทิ้งร้างโดยไม่ตั้งใจ เช่น เมื่อกระบวนการแม่สิ้นสุดลงหรือเกิดข้อผิดพลาด กลไก กลุ่มกระบวนการในระบบปฏิบัติการแบบ Unix ส่วนใหญ่สามารถใช้เพื่อช่วยป้องกันการทิ้งร้างโดยไม่ตั้งใจ โดยจะทำงานร่วมกับเชลล์ ของผู้ใช้ เพื่อพยายามยุติกระบวนการลูกทั้งหมดด้วยสัญญาณ "hangup" ( SIGHUP ) แทนที่จะปล่อยให้พวกมันทำงานต่อไปในฐานะกระบวนการที่ถูกทิ้งร้าง กล่าวคือ ในส่วนของการควบคุมงานเมื่อเชลล์ปิดตัวลง เนื่องจากเป็น "ผู้นำเซสชัน" (รหัสเซสชันเท่ากับรหัสกระบวนการ) เซสชันการเข้าสู่ระบบ ที่เกี่ยวข้อง จะสิ้นสุดลง และเชลล์จะส่ง SIGHUP ไปยังงานทั้งหมด (การแสดงกลุ่มกระบวนการภายใน)
บางครั้งอาจเป็นที่พึงปรารถนาที่จะทิ้งกระบวนการหนึ่งไว้โดยไม่มีผู้ดูแล โดยปกติแล้วเพื่ออนุญาตให้งานที่ใช้เวลานานเสร็จสมบูรณ์โดยไม่ต้องมีการดูแลจากผู้ใช้เพิ่มเติม หรือเพื่อเริ่มต้นบริการหรือเอเจนต์ที่ทำงานอย่างไม่มีกำหนด กระบวนการดังกล่าว (ที่ไม่มีเซสชันที่เกี่ยวข้อง) เรียกว่าเดมอนโดยเฉพาะอย่างยิ่งหากมันทำงานอย่างไม่มีกำหนด วิธีการระดับต่ำคือ การสร้างกระบวนการ ลูกสองครั้ง โดยเรียกใช้กระบวนการที่ต้องการในกระบวนการลูก และยุติกระบวนการลูกทันที กระบวนการลูกนั้นจะไม่มีผู้ดูแลแล้ว และจะไม่ถูกรับเลี้ยงโดยกระบวนการปู่ย่าตายาย แต่จะถูกรับเลี้ยงโดย init แทน ทางเลือกในระดับที่สูงกว่าจะหลีกเลี่ยงการจัดการการวางสายของเชลล์ โดยบอกให้กระบวนการลูกเพิกเฉยต่อ SIGHUP (โดยใช้nohup ) หรือลบงานออกจากตารางงาน หรือบอกให้เชลล์ไม่ส่ง SIGHUP เมื่อสิ้นสุดเซสชัน (โดยใช้disownในทั้งสองกรณี) ไม่ว่าในกรณีใด รหัสเซสชัน (รหัสกระบวนการของผู้นำเซสชัน หรือเชลล์) จะไม่เปลี่ยนแปลง และรหัสกระบวนการของเซสชันที่สิ้นสุดลงแล้วจะยังคงถูกใช้งานต่อไปจนกว่ากระบวนการที่ไม่มีเจ้าของทั้งหมดจะยุติลงหรือเปลี่ยนรหัสเซสชัน (โดยการเริ่มต้นเซสชันใหม่ผ่านทางsetsid(2))
เพื่อลดความซับซ้อนในการบริหารจัดการระบบ มักเป็นที่พึงปรารถนาที่จะใช้ตัวห่อบริการ (service wrapper)เพื่อให้กระบวนการที่ไม่ได้ออกแบบมาเพื่อใช้งานเป็นบริการตอบสนองต่อสัญญาณของระบบได้อย่างถูกต้อง ทางเลือกอื่นในการทำให้กระบวนการทำงานต่อไปโดยไม่ทิ้งกระบวนการเหล่านั้นไว้โดยไม่มีผู้ดูแล คือการใช้ตัวจัดการเทอร์มินัล (terminal multiplexer ) และเรียกใช้กระบวนการในเซสชันที่แยกจากกัน (หรือเซสชันที่แยกจากกันในภายหลัง) เพื่อไม่ให้เซสชันถูกยุติและกระบวนการจะไม่ถูกทิ้งไว้โดยไม่มีผู้ดูแล
กระบวนการเซิร์ฟเวอร์จะถูกเรียกว่าเป็นกระบวนการที่ถูกทิ้งร้างได้เช่นกัน เมื่อไคลเอนต์ที่เริ่มต้นการร้องขอเกิดขัดข้องอย่างไม่คาดคิดหลังจากทำการร้องขอแล้ว แต่กระบวนการเซิร์ฟเวอร์ยังคงทำงานอยู่
กระบวนการที่ไม่มีเจ้าของเหล่านี้ทำให้สิ้นเปลืองทรัพยากรของเซิร์ฟเวอร์และอาจทำให้เซิร์ฟเวอร์ขาดแคลนทรัพยากรได้ อย่างไรก็ตาม มีหลายวิธีในการแก้ปัญหากระบวนการที่ไม่มีเจ้าของ:
- การยุติเป็นเทคนิคที่ใช้กันมากที่สุด ในกรณีนี้ เด็กกำพร้าถูกฆ่าตาย
- การกลับชาติมาเกิดเป็นเทคนิคที่เครื่องจะพยายามค้นหากระบวนการแม่ของการคำนวณระยะไกลเป็นระยะๆ และเมื่อพบกระบวนการที่ไม่มีแม่แล้ว กระบวนการนั้นก็จะถูกยุติลง
- การหมดเวลาเป็นเทคนิคที่แต่ละกระบวนการจะได้รับเวลาที่กำหนดไว้ในการทำงานให้เสร็จสิ้นก่อนที่จะถูกยุติ หากจำเป็น กระบวนการอาจ "ขอ" เวลาเพิ่มเพื่อทำงานให้เสร็จสิ้นก่อนที่เวลาที่กำหนดจะหมดลง
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ กระบวนการเด็กกำพร้า
กระบวนการ กำพร้า คือ กระบวนการคอมพิวเตอร์ ที่ กระบวนการแม่ ได้สิ้นสุดหรือ ยุติลงแล้ว แต่ตัวมันเองยังคงทำงานอยู่
เหมือนยูนิก
ใน ระบบปฏิบัติการ แบบ Unix กระบวนการที่ถูกทิ้งร้างใดๆ จะถูกรับเลี้ยงโดยกระบวนการระบบที่กำหนดโดยการใช้งานทันที: เคอร์เนลจะกำหนดกระบวนการแม่ให้กับกระบวนการนี้ การดำเนินการนี้เรียกว่า การเปลี่ยนผู้ปกครอง และเกิดขึ้นโดยอัตโนมัติ...
ดูเพิ่มเติม
กระบวนการซอมบี้ กระบวนการเดมอน ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Orphan_process&oldid=1348062684 "