Page 77 - สถาปัตยกรรมคอมพิวเตอร์และระบบปฏิบัติการ
P. 77
การจ ัดเวลาซ ีพียูแ ละก ารต ิดต าย 11-67
ถ้าระบบไม่ปฏิเสธการร้องขอจะเกิดวงจรรอคอยเกิดขึ้นทันที เพราะไม่มีทรัพยากร C ที่ว่างให้โพรเซส
ใด ๆ ครอบครองเพื่อท ำ�งานได้ โพรเซสท ี่รอข อใช้ท รัพยากร C ได้แก่ โพรเซส P1, P2, P4 สำ�หรับโพรเซส P3 ต้องการ
ทรัพยากร C อีก 1 ตัวเพื่อส ามารถทำ�งานให้เสร็จสมบูรณ์ได้ ดังนั้นระบบต้องมีความสามารถในก ารส ืบค้นแ ละปฏิเสธ
เหตุการณ์ที่โพรเซสใด ๆ ร้องขอก ารใช้ท รัพยากรเพิ่มเติมแ ล้วส่งผลให้ร ะบบเกิดวงจรร อคอย เพื่อไม่ให้ระบบเกิดก าร
ติดตายเกิดข ึ้น
5. การกคู้ นื ก ารต ิดต าย
การกู้คืนการติดตาย (recovery from deadlock) เกิดขึ้นเมื่อตรวจพบวงจรรอคอยเกิดขึ้นในระบบ ผู้คุม
เครื่องคอมพิวเตอร์ต้องจัดการการหยุดชะงักของระบบด้วยตนเอง หรืออาจให้ระบบปฏิบัติการทำ�การคืนสภาพให้
ระบบโดยอัตโนมัติ โดยระบบสามารถแก้ไขการติดตายนี้ได้ 2 วิธีคือ การยกเลิกโพรเซส (process termination)
ระบบจ ะท ำ�การย กเลิกบ างโพรเซส หร ือท ุกโพรเซสท ีต่ ิดอ ยูใ่นว งจรร อค อย หรือก ารแ ทรกก ลางค ันท รัพยากร (resource
preemtion) ระบบจ ะท ำ�การต ัดตอนก ารใช้ท รัพยากรข องโพรเซส โดยต ัดตอนก ารใช้ท รัพยากรบ างส ่วนข องโพรเซสท ี่
ติดอ ยู่ในว งจรร อค อย ดังม ีร ายล ะเอียดต ่อไปน ี้
5.1 การยกเลิกโพรเซส (process termination) เป็นวิธีการหนึ่งในการแก้ไขวงจรรอคอยที่เกิดขึ้นในระบบ
สามารถก ระทำ�ได้ 2 วิธีคือ
วธิ แี รกเปน็ การย กเลกิ โพรเซสท ัง้ หมดท ตี่ ดิ อ ยใู่ นว งจรร อค อย ซึง่ ร ะบบส ามารถท �ำ งานเปน็ ป กตไิ ดอ้ ยา่ งร วดเรว็
แต่วิธีการนี้ส่งผลต่อโพรเซสที่เข้ามาทำ�งานในระบบเป็นระยะเวลานานซึ่งต้องร้องขอการใช้ทรัพยากรของระบบใหม่
เนื่องจากผลลัพธ์จากการทำ�งานในช่วงที่ผ่านมาจะถูกยกเลิกทั้งหมด เช่น โพรเซสหนึ่งกำ�ลังใช้เครื่องพิมพ์เพื่อ
พิมพข์ ้อมูลอ ยูเ่มื่อย กเลิกโพรเซส นี้ ระบบต ้องม คี วามส ามารถในก ารก ำ�หนดส ถานะข องเครื่องพิมพใ์หมใ่หถ้ ูกต ้องก ่อน
พมิ พง์ านต ่อไป หรอื ถ ้าโพรเซส หน ึง่ ก �ำ ลังแ ก้ไขข ้อมลู ในแ ฟม้ ข อ้ มลู ห นึ่ง เมือ่ โพรเซส นถี้ ูกย กเลิกในข ณะท ยี่ ังแ ก้ไขข ้อมูล
ไม่เสร็จ การย กเลิกนี้อาจก่อให้เกิดความผิดพลาดข องข ้อมูลในแฟ้มข้อมูลน ี้ได้เป็นต้น
สำ�หรับว ธิ ที สี่ องน ัน้ ระบบจ ะท ำ�การย กเลิกบ างโพรเซสท ีท่ ำ�ใหเ้ กดิ ว งจรร อค อยโดยค ัดเลอื กโพรเซสเพือ่ ท �ำ การ
ยกเลิกทีละโพรเซสจนกระทั่งระบบกลับสู่สภาวะปกติ วิธีการนี้มีค่าใช้จ่ายสูงเช่นเดียวกันกับวิธีแรก เพราะในขณะที่
ระบบยกเลิกโพรเซส หนึ่ง ๆ ระบบต้องส ืบค้นก ารติดต าย (deadlock detection) ของร ะบบอีกค รั้งเพื่อต รวจส อบว ่า
เมื่อยกเลิกโพรเซสแล้วร ะบบเกิดวงจรรอคอยห รือไม่ ถ้ายังเกิดว งจรร อค อยอยู่ ระบบจ ะท ำ�การคัดเลือกโพรเซสใหม่
เพื่อย กเลิก และส ืบค้นว งจรร อค อยในร ะบบห มุนเวียนก ันไป โดยก ารย กเลิกโพรเซสจ ะก ระทำ�อ ย่างต ่อเนื่องจ นก ระทั่ง
ไม่เกิดวงจรรอคอยเกิดขึ้นในระบบ ซึ่งการตัดสินใจคัดเลือกโพรเซสที่ต้องการยกเลิกนี้ระบบคัดเลือกจากโพรเซสที่
ทำ�ให้ระบบเกิดค ่าใช้จ ่ายตํ่าท ี่สุด แต่อ าจพ ิจารณาค ัดเลือกจ ากป ัจจัยอ ื่น ๆ ที่ม ีผ ลต ่อโพรเซส ได้แก่
a) พิจารณาจ ากค วามส ำ�คัญข องโพรเซส (priority) โดยโพรเซสท ี่ม ีค วามส ำ�คัญน ้อยก ว่าจ ะถ ูกย กเลิก
ก่อนโพรเซสที่ม ีความส ำ�คัญมากกว่า
b) พิจารณาจากระยะเวลาทั้งหมดที่โพรเซสต้องการประมวลผล และระยะเวลาที่เหลือที่โพรเซส
ต้องการป ระมวลผ ลจ นเสร็จส มบูรณ์ โดยท ั่วไปร ะบบจ ะเลือกโพรเซสท ีเ่พิ่งเริ่มป ระมวลผ ลเนื่องจากเกิดค วามเสียห าย
น้อยกว่าโพรเซสท ี่ง านใกล้เสร็จสมบูรณ์
c) พิจารณาจากความต้องการในการใช้ทรัพยากรชนิดต่าง ๆ ทั้งหมดของโพรเซส และจำ�นวนที่
ต้องการ
d) พิจารณาจากความต้องการทรัพยากรเพิ่มเติมเพื่อให้โพรเซสสามารถทำ�งานจนเสร็จสมบูรณ์ได้
ระบบจะเลือกยกเลิกโพรเซสที่ร้องขอทรัพยากรและอยู่ในสถานะรอทรัพยากรจำ�นวนมาก เนื่องจากโพรเซสเหล่านี้มี