บทท่ี 5 การติดตาย (Deadlocks)
การตดิ ตาย (Deadlocks)• การทางานรว่ มกนั ของโปรเซสหลายโปรเซส (ในระบบมลั ติโปรแกรมมงิ่ ) เมื่อ โปรเซสต้องการใชท้ รพั ยากร จะต้องร้องขอทรพั ยากรจากระบบ โดยสามารถ ขอใช้ทรพั ยากรใหไ้ ดจ้ านวนมากทส่ี ุด เพอ่ื ใหโ้ ปรเซสสามารถทางานได้เสร็จส้ิน แตไ่ ม่สามารถร้องขอทรพั ยากรมากเกินกว่าทร่ี ะบบมีอย่จู ริง• เมอ่ื โปรเซสตอ้ งการใช้ทรพั ยากรของระบบ โปรเซสต้องทาตามลาดับขัน้ ตอน ต่างๆ ตอ่ ไปนี้ o การร้องขอ (Request) o การใช้งาน (Use) o การคนื (Release)
การตดิ ตาย (Deadlocks)o การร้องขอ (Request) เมือ่ โปรเซสต้องการใช้ทรัพยากรใดๆ จะต้องทาการร้องขอทรัพยากรนนั้ จาก ระบบ โดยระบบจะตรวจสอบวา่ ทรัพยากรที่ถกู รอ้ งขอวา่ งหรอื ไม่ กรณีทที่ รัพยากรวา่ ง โปรเซสจะได้รับการจดั สรรทรพั ยากรทันที แตถ่ า้ ทรพั ยากรไมว่ ่าง (ถูกใชง้ านโดยโปรเซสอื่น) โปรเซสที่รอ้ งขอจะต้อง รอจนกวา่ จะไดร้ บั ทรัพยากรที่ตอ้ งการ
การตดิ ตาย (Deadlocks)o การใชง้ าน (Use) เมื่อโปรเซสไดร้ ับทรัพยากรท่ตี อ้ งการแลว้ โปรเซสสามารถใช้งานทรพั ยากร ท่ีไดร้ บั เชน่ เครื่องพมิ พ์ เมอื่ ได้รับการจดั สรรเคร่ืองพิมพ์แล้ว โปรเซส สามารถพิมพข์ อ้ มลู ออกทางเครอ่ื งพมิ พไ์ ด้o การคนื (Release) โปรเซสตอ้ งคนื ทรัพยากรที่ใช้เสร็จแล้วกลบั สรู่ ะบบ เพอื่ เปดิ โอกาสให้ โปรเซสอนื่ ทีต่ อ้ งการใชท้ รพั ยากรน้นั ไดร้ ับการจดั สรรทรัพยากรต่อไป
การตดิ ตาย (Deadlocks) บางครง้ั เมอ่ื โปรเซสตอ้ งการใช้ทรัพยากร และร้องขอทรัพยากรจากระบบแตท่ รัพยากรท่โี ปรเซสต้องการใช้ไม่ว่าง เนอื่ งจากโปรเซสอ่นื กาลังใชง้ านอยู่ ทาใหโ้ ปรเซสนั้นๆ ตอ้ งรอคอย และเป็นการรอคอยทไ่ี มม่ ีท่สี น้ิ สดุ (โปรเซสไม่มีโอกาสได้รบั การจัดสรรทรพั ยากร) เรียกเหตกุ ารณ์น้วี า่ การติดตาย(Deadlocks) เช่น โปรเซส A ต้องการใช้เครื่องพมิ พ์ แต่เครอ่ื งพมิ พถ์ ูกใชโ้ ดยโปรเซสB ทาใหโ้ ปรเซส A ต้องรอจนกวา่ เครือ่ งพิมพ์จะว่าง ส่วนโปรเซส B อยูใ่ นสถานะรอให้ทรพั ยากรอื่นวา่ งเช่นกัน ทาให้โปรเซส A ไมม่ โี อกาสได้รบั จัดสรรใหใ้ ชเ้ คร่ืองพมิ พ์ ซง่ึ เปน็ การรอคอยอยา่ งไม่มที ีส่ ิ้นสดุ
ตวั อยา่ งของการตดิ ตาย ตวั อย่างของเหตกุ ารณ์ที่เกดิ การตดิ ตาย เช่น การตดิ ตายในการจราจรการตดิ ตายในการใชท้ รพั ยากร• การตดิ ตายในการจราจร
ตัวอยา่ งของการติดตาย• การตดิ ตายในการใชท้ รพั ยากร การติดตายในการใชท้ รพั ยากร เกดิ ขนึ้ เนอ่ื งจากแต่ละโปรเซสรอทรัพยากร ทถี่ ูกครอบครองโดยอกี โปรเซสหน่ึง โดยทท่ี รัพยากรเหลา่ นน้ั เปน็ ทรัพยากร ทไี่ มส่ ามารถใชง้ านร่วมกนั ได้
ลกั ษณะของการตดิ ตาย• การไมเ่ กดิ รว่ ม (Mutual Exclusion) o ในกรณีทีเ่ ปน็ ทรพั ยากรทีไ่ ม่สามารถใช้รว่ มกันได้ ทาให้ทรัพยากรถูกใช้งานไดเ้ พยี งคร้งั ละ 1 โปรเซส คอื ขณะเวลาหน่ึงจะมเี พียงโปรเซสเดยี วทใี่ ช้งานทรพั ยากรได้ ไม่ สามารถมโี ปรเซสอ่นื ใช้งานทรพั ยากรพร้อมกันได้• การครอบครองและการรอใชท้ รพั ยากร (Hold and Wait) o โปรเซสที่ได้ครอบครอง (hold) ทรพั ยากรอยู่แล้ว ต้องการใช้ทรัพยากรอื่นเพมิ่ เติม และร้องขอทรพั ยากรท่มี สี ถานะไมว่ า่ ง ทาใหโ้ ปรเซสต้องรอ (Wait)• การไมแ่ ยง่ ชงิ ทรพั ยากร (No Preemptive) o โปรเซสท่รี อใชท้ รพั ยากรตอ่ จากโปรเซสอน่ื (ท่กี าลังใช้ทรัพยากรนนั้ อยู่) จะต้องรอ จนกว่าโปรเซสน้นั ๆ ทางานเสร็จ และปลดปลอ่ ยทรัพยากร โปรเซสไม่สามารถแยง่ ชิง ทรพั ยากรจากโปรเซสอื่นได้
ลักษณะของการตดิ ตาย• การรอแบบวงกลม (Circulate Wait) o โปรเซสเกดิ การรอเปน็ วฏั จักร (P0, P1, P2, …, Pn) โดย P0 รอทรพั ยากรทถ่ี กู ครอบครองโดย P1 P1 รอทรพั ยากรทีถ่ ูกครอบครองโดย P2 … Pn-1 รอทรัพยากรท่ถี ูกครอบครองโดย Pn Pn รอทรพั ยากรทถ่ี กู ครอบครองโดย P0 การเกดิ ตดิ ตายจะต้องมคี รบทงั้ 4 เง่ือนไข โดยเงอื่ นไขท้ัง 4 ขอ้ น้ี ไมไ่ ด้เปน็ อิสระต่อกัน คอื ถา้ เกดิ การรอแบบวงกลมแลว้ จะทาใหเ้ กดิ การครอบครองและรอ เป็นต้น
การปอ้ งกนั การตดิ ตาย (Deadlock Prevention)การป้องกนั ไมใ่ หเ้ กิดการตดิ ตายข้ึน จะต้องทาใหเ้ งือ่ นไขอย่างนอ้ ย 1 ขอ้ ไมเ่ ป็นจรงิ• ปฏิเสธการไมเ่ กดิ รว่ ม (Denying the Mutual Exclusion condition) การไมเ่ กิดร่วมเกิดข้ึนในกรณที ี่มหี ลายโปรเซสต้องการใช้ทรัพยากรทีไ่ ม่ สามารถใชร้ ่วมกนั ได้พร้อมๆ กัน เชน่ เคร่อื งพิมพ์ แตถ่ า้ ทรพั ยากรทโ่ี ปรเซสต้องการใช้พร้อมกนั เป็นทรพั ยากรทีใ่ ชร้ ่วมกนั ได้ เชน่ การอา่ นแฟม้ โปรเซสสามารถเปดิ และอ่านแฟม้ ข้อมูลได้พรอ้ มกนั โดย ไมต่ ้องรอ ดังนน้ั จะไมเ่ กดิ สภาวะการไม่เกดิ ร่วม
การปอ้ งกนั การตดิ ตาย (Deadlock Prevention)• การปอ้ งกนั การตดิ ตายด้วยการปฏเิ สธการไมเ่ กดิ ร่วม สามารถทาได้ดว้ ยการให้ ระบบเลอื กใช้เฉพาะทรัพยากรทส่ี ามารถใช้ร่วมกันได้ ซ่ึงเปน็ ไปไดย้ ากในทาง ปฏิบัติ เน่ืองจากทรพั ยากรหลายชนิดไม่สามารถใช้รว่ มกันได้ และระบบมคี วาม ตอ้ งการใชท้ รัพยากรเหล่าน้ัน• บางระบบไดก้ าหนดให้สง่ คาร้องขอใช้ทรัพยากรทไี่ ม่สามารถใชร้ ่วมกันไดข้ องแต่ ละโปรเซสเก็บไวใ้ นท่พี กั (spool) บนทรพั ยากรทสี่ ามารถใช้รว่ มกนั ได้แทน เชน่ ดสิ ก์ ทาใหห้ ลายโปรเซสของระบบรูส้ กึ เหมือนว่า สามารถเรยี กใช้ ทรัพยากรทีไ่ มส่ ามารถใชร้ ่วมกนั ได้พรอ้ มกัน
การปอ้ งกนั การตดิ ตาย (Deadlock Prevention)• ตวั อยา่ งเชน่ ระบบคอมพวิ เตอร์มเี ครอ่ื งพมิ พ์ 1 เครอื่ ง ถา้ ระบบมี 3 โปรเซส คอื โปรเซส A, B และ C ที่ทางานร่วมกัน และทง้ั 3 โปรเซสร้องขอ เคร่ืองพมิ พ์พร้อมกัน• โปรเซส A ได้รับจัดสรรเคร่อื งพิมพ์ ดังนนั้ คาร้องขอใช้เคร่อื งพมิ พ์ของโปรเซส B และ C ต้องถกู สง่ เขา้ ทีเ่ กบ็ พกั บนดสิ ก์• เม่อื โปรเซส A ใชเ้ ครอ่ื งพิมพ์เสรจ็ เรียบรอ้ ย จะปล่อยเครื่องพมิ พก์ ลบั คนื ให้ ระบบ ระบบจะเรียกโปรเซสต่อไปที่รออยูบ่ นที่เกบ็ พกั ให้ไดร้ ับจดั สรรเครอื่ งพมิ พ์ ต่อไป• จะเหน็ วา่ ทั้ง 3 โปรเซสสามารถเรยี กใชเ้ คร่ืองพิมพไ์ ดพ้ ร้อมๆ กนั
การปอ้ งกนั การตดิ ตาย (Deadlock Prevention)• ปฏเิ สธการครอบครองและการรอ (Denying the Hold and Wait) เพ่ือไม่ให้เกิดเงื่อนไขน้ีในระบบ ระบบจาเป็นต้องรับประกันได้ว่า ขณะที่ โปรเซสรอ้ งขอทรัพยากร โปรเซสตอ้ งไม่ได้ครอบครองทรพั ยากรใดๆ ทงั้ ส้ิน วิธีการทที่ าไดค้ อื ก่อนทโี่ ปรเซสจะเริม่ ต้นการทางาน ให้แต่ละโปรเซสร้อง ขอทรัพยากรท้ังหมดที่ตอ้ งการใช้จากระบบพร้อมกนั ในครั้งเดยี ว ถ้าระบบตรวจสอบได้ว่า ทรัพยากรที่โปรเซสร้องขอว่าง ระบบจะจัดสรร ทรัพยากรนนั้ ให้แก่โปรเซส ถ้าทรัพยากรนัน้ ๆ ไม่ว่าง โปรเซสก็จาเป็นต้องรอ โดยท่ีโปรเซสจะเริ่มต้น การทางานได้ก็ต่อเมื่อ โปรเซสได้รับจัดสรรทรัพยากรท่ีต้องการครบถ้วน และ ระหว่างการทางานโปรเซสไม่สามารถร้องขอทรัพยากรเพมิ่ เตมิ ได้อีก
การปอ้ งกนั การตดิ ตาย (Deadlock Prevention) ตัวอย่างเช่น โปรเซสต้องการคัดลอกข้อมูลจากเทปลงดิสก์ แล้วเรียงลาดับ และพิมพ์ ดังน้ันทรัพยากรที่โปรเซสต้องการ คือ ตัวอ่านเทปดสิ ก์ และเครอ่ื งพิมพ์ ในการป้องกันการติดตายด้วยการปฏิเสธการครอบครองและการรอระบบจะต้องกาหนดให้โปรเซสร้องขอทรัพยากรท้ัง 3 ก่อนเร่ิมต้นการทางานแต่ในการทางานนน้ั ทรัพยากรแตล่ ะชนดิ ไม่จาเปน็ ตอ้ งถูกเรียกใชง้ านพร้อมกนั โดยท่ัวไปการพิมพ์ผลลัพธ์ออกทางเครื่องพิมพ์จะเกิดข้ึนท้ายสุด แต่เครื่องพิมพ์ต้องถูกโปรเซสครอบครองต้ังแต่เร่ิมต้น แม้ว่าเครื่องพิมพ์จะเป็นทรพั ยากรท่ถี ูกใชง้ านทา้ ยสดุ ก็ตาม
การปอ้ งกนั การตดิ ตาย (Deadlock Prevention) การแก้ปญั หาการตดิ ตายวธิ ีน้ี เป็นผลให้ปริมาณการใช้งานของทรัพยากรลดต่าลงมาก และยังเป็นไปได้ท่ีจะเกิดปัญหาการอดตาย เน่ืองจากโปรเซสต้องการใช้ทรัพยากรหลายชนิด แต่อาจมีทรัพยากรบางชนิดที่ไม่ว่าง ทาให้โปรเซสตอ้ งรอจนกว่าทรพั ยากรนัน้ จะวา่ ง แต่ปัญหาจะเกิดข้ึนถ้าโปรเซสอื่นท่ีได้ทรัพยากรไป ไม่ยอมคืนทรัพยากรใหร้ ะบบ ทาใหโ้ ปรเซสท่ีต้องการใชท้ รพั ยากรตอ้ งรออย่างไมม่ ีท่ีสิ้นสุด
การปอ้ งกนั การตดิ ตาย (Deadlock Prevention)• ปฏิเสธการไม่แย่งชิงทรัพยากร (Denying the No-Preemption condition) วธิ นี ้ีจะยอมให้โปรเซสสามารถแย่งชงิ ทรัพยากรท่ถี ูกครอบครองโดยโปรเซสอื่นได้ วิธีที่ 1 ถ้ามีโปรเซสท่ีได้ครอบครองทรัพยากรบางอย่าง ร้องขอทรัพยากรอ่ืนเพิ่มเติมจาก ระบบ แต่ทรัพยากรท่ีโปรเซสร้องขอน้ันไม่ว่าง ให้โปรเซสปลดปล่อยทรัพยากรทั้งหมดท่ี ครอบครองอยู่กลับคืนสรู่ ะบบ จากนน้ั โปรเซสจึงร้องขอทรพั ยากรใหม่ทงั้ หมด จนกว่าจะได้ ทรัพยากรท่ตี อ้ งการครบ โปรเซสจงึ จะเริ่มต้นทางานได้ ตัวอย่างเช่น เมื่อเริ่มต้นทางาน โปรเซส A ได้รับจัดสรรทรัพยากร R1 และ R2 ในเวลาต่อมา โปรเซสร้องขอทรัพยากร R3 ระบบตรวจสอบแล้วพบว่า ทรัพยากร R3 ถูกครอบครองโดยโปรเซส B ดงั น้ัน โปรเซส A ต้องปลอ่ ยทรัพยากร R1 และ R2 คืน ใหร้ ะบบ
การปอ้ งกนั การตดิ ตาย (Deadlock Prevention)วธิ ีที่ 2 ถา้ มโี ปรเซสร้องขอทรพั ยากรบางอย่างจากระบบ ให้ระบบตรวจสอบว่าทรัพยากรท่ีถูกร้องขอน้ันว่างหรือไม่ กรณีท่ีทรัพยากรนั้นไม่ว่าง ระบบต้องตรวจสอบต่อไปว่าทรัพยากรน้ันถูกครอบครองโดยโปรเซสใด และโปรเซสน้ันกาลังรอทรัพยากรชนิดอ่ืนหรอื ไม่ (โปรเซสอยูใ่ นสถานะรอ) o ถ้าใช่ ให้ระบบแย่งชิงทรัพยากรน้ันจากโปรเซสที่กาลังครอบครอง และนา ทรัพยากรนั้นมอบใหโ้ ปรเซสทีร่ อ้ งขอ o ถ้าไม่ใช่ ก็ให้โปรเซสท่ีร้องขอทรัพยากรนั้น รอจนกว่าทรัพยากรที่ต้องการว่าง (โปรเซสไมส่ ามารถแยง่ ชงิ ทรพั ยากรได้)
การปอ้ งกนั การตดิ ตาย (Deadlock Prevention) ตัวอย่างเช่น โปรเซส A ร้องขอทรัพยากร R1 ให้พิจารณาว่า ระบบจะจัดสรรทรัพยากรให้โปรเซส A หรือไม่ ในการพิจารณาน้ันระบบต้องตรวจสอบก่อนว่าทรัพยากร R1 ว่างหรอื ไม่ o ถา้ ทรพั ยากร R1 ว่าง ระบบจะจดั สรรทรัพยากร R1 ให้โปรเซส A oคถรอ้าทบครัพรอยงาโกดรยโปRร1เซสใไดม่ว่าง ระบบจะตรวจสอบต่อไปว่า ทรัพยากร R1 ถูกo (โถปา้ รเซRส1 ถูกครอบครองโดยโปรเซส B และโปรเซส B รอ้ งขอทรพั ยากร BR2แลซะ่ึงจไัดมส่วร่ารง B อยู่ในสถานะรอ) ให้ระบบแย่งทรัพยากร R1 จากโปรเซส ทรัพยากร R1 ใหก้ ับโปรเซส Ao วม่าถางใ้าห(้โRปโป1รรเซถเซสูกสคAรBอบดคงั ไรนมอ้ัน่ไดงโ้อดโปยยู่รใโนปเซสรสถเซาสAนะBตรออ้ แ)งลระอรโะจปบนรบกเซวจส่าะทไมBร่สพั ายไมมาาไ่กดรร้รถ้อแRงยข1่งอวทRา่ รง1พั ยจาากกรโปอ่ืนรเๆซสที่ไBม่
การปอ้ งกนั การตดิ ตาย (Deadlock Prevention)• ปฏเิ สธการรอแบบวงกลม (Denying the Circular Wait condition) เพอื่ ไม่ให้เกิดการรอแบบวงกลม ระบบจะกาหนดหมายเลขประจา ใหแ้ ตล่ ะทรพั ยากร และเมอ่ื มกี ารรอ้ งขอทรัพยากรจากโปรเซสใดๆ จะ ต้องเป็นการร้องขอเรียงตามลาดับหมายเลขประจาทรพั ยากรจากนอ้ ยไป มากเสมอ จากรูป โปรเซส P1 ได้ครอบครองทรัพยากร R3, R4, R6, R7 และได้ขอใช้ทรัพยากร R8 ซ่งึ จะไม่เกดิ การรอแบบวงกลม เพราะ การขอใชท้ รพั ยากรเปน็ การขอแบบเรียงลาดับหมายเลขทรัพยากรจาก น้อยไปหามาก และถา้ โปรเซสต้องการทรพั ยากรทีม่ ีหมายเลขทรัพยากร กอ่ นหนา้ โปรเซสจะตอ้ งคนื ทรัพยากรคืนสรู่ ะบบทกุ ตวั เสยี ก่อน
การกคู้ นื จากการตดิ ตาย (Deadlock Recovery) ระบบท่ีเกิดการติดตายจะไม่สามารถทางานใดๆ ต่อไปได้ จาเป็นต้องมีวิธีการกาจัดการติดตายท่ีเกิดข้ึน เพื่อกู้ระบบกลับคืนสู่สภาพท่ีใกล้เคียงกับสภาพกอ่ นที่จะเกิดการตดิ ตาย เพ่ือให้ระบบสามารถทางานทย่ี ังคา้ งอยตู่ ่อไปได้ วธิ กี ารทใี่ ช้กาจดั การตดิ ตายสามารถทาได้ 2 วธิ ี คือ 1. การยกเลกิ โปรเซส (Process Termination) 2. การแยง่ ชิงทรพั ยากรจากโปรเซส (Process Preemption)
การกคู้ นื จากการตดิ ตาย (Deadlock Recovery)1. การยกเลิกโปรเซส (Process Termination) การกาจัดการติดตายดว้ ยการยกเลิกโปรเซส สามารถทาได้ 2 วิธี ซึ่งแต่ละวิธีนั้นระบบจะเรียกทรัพยากร (ที่ได้จัดสรรไปแล้ว) คืนจากโปรเซส จากนั้นจงึ ยกเลกิ โปรเซส1.1 การยกเลิกทกุ โปรเซสทเี่ กดิ การติดตาย วิธีน้ีเป็นการกาจัดการติดตายด้วยการยกเลิกโปรเซสท่ีเกิดการติดตายท้ังหมด แต่มีข้อเสียที่อาจมีบางโปรเซสท่ีทางานมาเป็นเวลานานแล้ว และงานใกล้จะเสร็จสิ้นแล้ว แต่โปรเซสต้องถูกยกเลิกไป ทาให้โปรเซสต้องเสียเวลาและเสียค่าใชจ้ ่าย เนือ่ งจากโปรเซสท่ถี ูกยกเลิกไปน้นั ตอ้ งเริ่มตน้ ทางานใหม่
การกคู้ นื จากการตดิ ตาย (Deadlock Recovery)1.2 การยกเลกิ ทีละหนึ่งโปรเซส วิธีนี้เป็นการยกเลิกโปรเซสทีละหนึ่งโปรเซส จนกว่าการติดตายจะถูกกาจดั ออกไป โดยที่หลังจากแต่ละโปรเซสถูกยกเลิกหรือกาจัดไปนั้น ระบบต้องเรียกอัลกอริทึมตรวจสอบการติดตาย เพ่ือตรวจสอบว่า ระบบยังคงมีการติดตายอยหู่ รอื ไม่ ทาใหเ้ ปลอื งค่าใช้จ่ายอนื่ (overhead) มาก
การกคู้ นื จากการตดิ ตาย (Deadlock Recovery) การยกเลิกโปรเซสออกจากระบบไม่ไดเ้ ปน็ สง่ิ ที่ทาไดง้ า่ ย ถ้าโปรเซสทางานไปได้ระยะหน่ึง แล้วสถานะของทรัพยากรต่างๆ ถูกเปลี่ยนแปลงไป เช่นโปรเซสกาลังปรับปรุงแฟ้มข้อมูลให้เป็นปัจจุบัน และถูกยกเลิก ทาให้แฟ้มข้อมูลถูกทิ้งค้างอยู่ในสถานะไม่สมบูรณ์ หรือโปรเซสกาลังพิมพ์งานและถูกยกเลิกระบบต้องกาหนดสถานะของเครือ่ งพมิ พ์ใหม่ กอ่ นท่ีจะพมิ พ์งานอนื่ ตอ่ ไป นอกจากนี้การยกเลิกแต่ละโปรเซสนั้น ระบบต้องสามารถตัดสินใจได้ว่าจะเลือกยกเลิกโปรเซสใด จึงจะทาให้ระบบต้องเสียค่าใช้จ่ายน้อยที่สุด และกาจัดการติดตายออกไปได้
การกคู้ นื จากการตดิ ตาย (Deadlock Recovery) ปจั จัยทรี่ ะบบใช้ในการพจิ ารณาเลอื กว่าระบบจะยกเลกิ โปรเซสใดo ลาดบั ความสาคญั (priority) ของโปรเซส โดยโปรเซสท่มี ีลาดับความสาคัญ นอ้ ยจะถกู ยกเลกิ กอ่ นโปรเซสท่มี ลี าดับความสาคัญมากกวา่o ระยะเวลาที่โปรเซสถูกประมวลผลไปแล้ว และระยะเวลาท่ีโปรเซสต้องการใช้ เพอ่ื ให้งานเสรจ็ ส้นิ โดยทรี่ ะบบจะเลอื กยกเลิกโปรเซสท่ีเร่ิมประมวลผลเป็นเวลา ไม่นาน (ยังต้องใช้เวลาในการโปรเซสอกี มากเพอ่ื ให้งานเสร็จ) การที่ระบบเลือก ยกเลิกโปรเซสลักษณะนี้ เนื่องจาก จะเกิดความเสียหายน้อยกว่าการเลือก ยกเลิกโปรเซสท่ีถูกประมวลผลไปเป็นระยะเวลานาน และงานของโปรเซสน้ัน ใกล้เสรจ็ สมบรู ณแ์ ลว้
การกคู้ นื จากการตดิ ตาย (Deadlock Recovery)o จานวนทรัพยากรทโี่ ปรเซสต้องการเพ่มิ เตมิ เพ่อื ใช้ในการประมวลผลใหง้ านของ โปรเซสเสร็จสมบูรณ์ โดยระบบจะพิจารณาเลือกยกเลิกโปรเซสท่ีร้องขอ ทรพั ยากร และอย่ใู นสถานะรอทรัพยากรเป็นจานวนมาก เน่ืองจากโปรเซสน้ัน มีโอกาสทางานเสร็จสมบูรณ์น้อยกว่าโปรเซสท่ีได้ครอบครองทรัพยากรเป็น จานวนมาก และยังคงเหลอื ทรัพยากรทีต่ อ้ งการอกี เป็นจานวนน้อยกว่า
การกคู้ นื จากการตดิ ตาย (Deadlock Recovery)2. การแย่งชิงทรพั ยากรจากโปรเซส วธิ นี ้รี ะบบพยายามกาจดั การติดตายด้วยการแย่งชิงทรัพยากรจากโปรเซสหนึ่ง เพ่ือนาทรัพยากรนั้นไปมอบให้อีกโปรเซสหนึ่ง ทาเช่นนี้เร่ือยไป จนกว่าการติดตายจะถูกกาจัดออกไปได้ โดยที่การแย่งชิงทรัพยากรน้ี ระบบจาเป็นต้องพิจารณาเร่อื งตอ่ ไปน้ี 2.1 การเลอื กเหย่ือ (Selecting a victim) 2.2 การถอยกลบั (Rollback) 2.3 การอดตาย (Starvation)
การกคู้ นื จากการตดิ ตาย (Deadlock Recovery)2.1 การเลือกเหยื่อ (Selecting a victim) ระบบจาเป็นต้องพิจารณาว่าจะแย่งชิงทรัพยากรชนิดใด จากโปรเซสใด โดยปัจจัยท่ีนามาพิจารณาคือ ค่าใช้จ่าย ซ่ึงเป็นค่าใช้จ่ายท่ีเกิดจากการยกเลิก โปรเซสใดโปรเซสหนงึ่ ดงั นน้ั ถา้ ระบบจาเปน็ ต้องพิจารณาเพ่อื ยกเลกิ โปรเซสหน่ึงโปรเซส ระบบ อาจเลือกยกเลิกโปรเซสท่ีครอบครองทรัพยากรเป็นจานวนน้อยที่สุด และเป็น โปรเซสท่ีทางานไปแลว้ เปน็ เวลาไมน่ านนกั
การกคู้ นื จากการตดิ ตาย (Deadlock Recovery)2.2 การถอยกลับ (Rollback) ถา้ ระบบแย่งชงิ ทรัพยากรจากโปรเซสใดก็ตาม จะทาให้โปรเซสที่ถูกแย่งชิง ทรัพยากรไปนนั้ ไม่สามารถประมวลผลตอ่ ไปได้ ระบบจาเป็นต้องให้โปรเซสถอย หลังกลบั ไปอยใู่ นสถานะปลอดภยั และเร่ิมตน้ ทางานจากสถานะน้นั วิธีท่ีง่ายที่สุดในการพิจารณาให้โปรเซสถอยกลับไปอยู่ในสถานะท่ี ปลอดภยั คือ ใหโ้ ปรเซสถอยหลังกลับไปยังสถานะท่ีอยู่ห่างจากสถานะท่ีทาให้ เกิดการตดิ ตายมากทส่ี ุด
การกคู้ นื จากการตดิ ตาย (Deadlock Recovery)2.3 การอดตาย (Starvation) ในระบบท่ีใช้วิธีการเลือกเหยื่อโดยพิจารณาจากค่าใช้จ่ายเป็นสาคัญ ใน การแย่งชิงทรัพยากรของโปรเซสนั้น เป็นไปได้ว่า อาจเกิดการแย่งชิงทรัพยากร จากโปรเซสเดิมอยู่ตลอดเวลา ทาให้โปรเซสท่ีถูกแย่งชิงน้ันไม่สามารถทางานได้ เสรจ็ สิน้ คอื โปรเซสอย่ใู นสถานะอดตาย
Search
Read the Text Version
- 1 - 29
Pages: