ลินุกซ์“ ฆ่า” กระบวนการอย่างไร?
บ่อยครั้งที่ทำให้ฉันงงงันแม้ว่าฉันจะทำงานกับคอมพิวเตอร์เป็นเวลาหลายสิบปีและลีนุกซ์เป็นเวลาสิบปี แต่ฉันก็ยังใช้งานฟังก์ชั่นส่วนใหญ่ของระบบปฏิบัติการได้เหมือนกล่องดำ วันนี้ฉันคิดเกี่ยวกับkillคำสั่งและในขณะที่ฉันใช้มันหลายครั้งต่อวัน (ทั้งใน "ปกติ" และ-9รสชาติ) ฉันต้องยอมรับว่าฉันไม่รู้ว่ามันใช้งานได้อย่างไรอยู่เบื้องหลัง จากมุมมองของฉันหากกระบวนการทำงานเป็น "หยุด" ฉันเรียกkillใช้ PID ของมันและจากนั้นจะไม่ทำงานอีกต่อไป มายากล! เกิดอะไรขึ้นจริง ๆ หน้าพูดคุยเกี่ยวกับ "สัญญาณ" แต่แน่นอนว่าเป็นเพียงนามธรรม การส่งkill -9ไปยังกระบวนการไม่ต้องการความร่วมมือของกระบวนการ (เช่นการจัดการสัญญาณ) มันแค่ฆ่ามันออกไป Linux หยุดกระบวนการไม่ให้ใช้เวลา CPU ต่อไปอย่างไร มันถูกลบออกจากการตั้งเวลา? มันยกเลิกการเชื่อมต่อกระบวนการจากตัวจัดการไฟล์ที่เปิดอยู่หรือไม่? หน่วยความจำเสมือนของกระบวนการเปิดตัวอย่างไร มีบางสิ่งที่เหมือนตารางทั่วโลกในหน่วยความจำที่ลีนุกซ์อ้างอิงทรัพยากรทั้งหมดที่เกิดขึ้นจากกระบวนการและเมื่อฉัน "ฆ่า" กระบวนการลีนุกซ์จะผ่านตารางนั้นและปลดปล่อยทรัพยากรทีละตัว? ฉันอยากรู้ทุกอย่างจริงๆ!