Transcript Water
Deadlock deadlock คือการทีค ่ อมพิวเตอร์เกิดอาการ hang เนือ ่ งจาก ้ พยากรซงึ่ ไม่วา่ งอยูใ่ นขณะ การรอใชทรั สภาวะทีโ่ ปรเซสบางตัวหรือทุกตัว ไม่สามารถ ้ พยากร ทำางานต่อไปได ้ สว่ นใหญ่เกิดจากการใชทรั ร่วมกัน แล ้วมีการแย่งทรัพยากรกันในระบบ Deadlock จะเกิด Deadlock เมือ ่ ทรัพยากรเป็ นแบบใชร่้ วมกันไม่ ได ้ (Mutual Exclusion) ้ พยากรได ้ อีกโปรเซสต ้อง 1 โปรเซสเท่านัน ้ ทีจ ่ ะใชทรั รอถือครองแล ้วรอคอย (Hold and Wait) ้ พยากรอยู่ โดยทีก โปรเซสตัวหนึง่ ใชทรั ่ ำาลังรอคอย ทรัพยากรอีกตัวหนึง่ ซงึ่ ทรัพยากรตัวนีก ้ ็ถก ู ครอบครองโดยอีกโปรเซสหนึง่ ไม่มก ี ารแทรกกลางคัน (No Preemption)ทรัพยากรจะถูกคืนเมือ ่ โปรเซส ต ้องการคืน หากไม่คน ื OS ทำาอะไรไม่ได ้รอคอยเป็ น วงกลม เป็ นการรอคอยแบบงูกน ิ หาง Deadlock ี เสถียรภาพ การเกิด Deadlock จะทำาให ้ระบบเสย ไประบบควรจะมีการตรวจสอบ (Monitor) อยูอ ่ ย่าง สม่าำ เสมอทางทีด ่ ก ี ็ควรป้ องกันไว ้ก่อน (Preventive Maintenance) Deadlock เงือ ่ นไขทีท ่ ำาให ้เกิดวงจรอับ วงจรอับ เป็ นสถานการณ์ทท ี่ เี่ ราไม่ต ้องการให ้เกิด ขึน ้ ในระบบ เพราะว่าเมือ ่ เกิดวงอับขึน ้ มา จะไม่มโี ปร เซสใดสามารถทำางานจนสำาเร็จสมบูรณ์ และ ทรัพยากรของระบบจะถูกครอบตรองจนหมด ดัง นัน ้ เราจะกล่าวลึกลงในรายละเอียดเกีย ่ วกับการ จัดการวงจรอับนัน ้ เราเรียนรู ้เกีย ่ วกับสาเหตุสำาคัญ ทีท ่ ำาให ้วงจรอับ Deadlock วงจรอับอาจจะเกิดขึน ้ ก็ตอ ่ เมือ ่ เงือ ่ นไขทัง้ สามข ้อ ต่อไปนีเ้ กิดขึน ้ 1. เมือ ่ มีทรัพยากรทีไ่ ม่สามารถใชร่้ วมกันหลายๆ โปรเซสพร ้อมกันได ้ ถ ้ามีทรัพยากรอย่างน ้อย 1 ตัว ในระบบทีจ ่ ะยอมให ้โปรเซสเพียง 1 ตัว ในงานมัน ้ ได ้เท่านัน ้ ถ ้ามีโปรเซสอืน ่ เข ้ามาร ้องขอใชงาน โปรเซส นัน ้ จะต ้องรอจนกว่าโปรเซสดังกล่าวได ้ใช ้ ้ งานดังกล่าวได ้ใชงานและปล่ อยทรัพยากรนัว้ า่ ง Deadlock 2. เมือ ่ มีการถือครองและรอ ถ ้าโปเซสถือ ครองทรัพยากรทีไ่ ด ้รับ และในขณะเดียวกันก็สมา รถทำาการร ้องขอทรัพยากรเพิม ่ เติมได ้ Deadlock 3. เมือ ่ ทำางานในระบบไม่มก ี ารแทรกกลางคัน ้ ถ ้าโปรเซสกำาลังใชงานทรั พยากรอยู่ และระบบไม่ สามารถบังคับโปรเซสนัน ้ ปลดปล่อยทรัพยการกร นัน ้ เป็ นอิสระได ้ โดยทรัพยากรเป็ นอิสระได ้ก็ตอ ่ เมือ ่ โปรเซสยกเลิกการถือครองเท่านัน ้ Deadlock เงือ ่ นไขทัง้ สามข ้อด ้านบนนัน ้ เป็ นสงิ่ ทีร่ ะบบ ้ ่ เพือ ปฏิบต ั ก ิ ารทั่วไปต ้องการและใชอยู ่ ให ้ระบบทำา ่ การทีท งานอย่างต่อเนือ ่ ง ตัวอย่างเชน ่ รัพยากรไม่ สามารถใชร่้ วมกันหลายๆ โปรเซสได ้นัน ้ ้ มีความจำาเป็ นสำาหรับการใชฐานข ้อมูลให ้เกิดความ ่ เดียวกับการแทรก ถูกต ้องและตรงกัน เชน ลงคันของระบบนัน ้ Deadlock ไม่ควรเกิดขึน ้ อันปราศจากเหตุผลอันควร โดย เมือ ่ ระบบทำางานเกีย ่ วกับทรัพยากรทีเ่ ป็ นข ้อมูล เหล่านัน ้ ได ้ นัน ้ คือระบบสามารถเรียกโปรเซสและ ้ ้อีก เมือ ข ้อมูลทีเ่ หมาะสมมาใชได ่ เกิดการสูญหาย ของข ้อมูล Deadlock อย่างไรก็ตาม เงือ ่ นไขทัง้ สามอาจจะทำาให ้เกิด หรือ ไม่ทำาให ้เกิดวงจรอับก็ได ้ วงจรอับจะเกิด ขึน ้ จริงๆ ก็ตอ ่ เมือ ่ เงือ ่ นไขทีส ่ เี่ กิดขึน ้ Deadlock 4. เมือ ่ เกิดวงจรรอคอย (Circuit wait condition) ่ องโปรเซส 2 ตัว หรือมากกว่าที่ ถ ้าเกิดวงจรลุกโซข ต่างรอทรัพยากรทีถ ่ อ ื ครองโดยโปรเซสทีอ ่ ยูใ่ น ่ ัน วงจรลุกโซน ้ การป้ องกันการเกิดวงจรอับ -การป้ องกันไว ้ก่อน โดยไม่ให ้หนึง่ ในเงือ ่ นไขทัง้ ส ี่ ข ้อของการทำาให ้เกิดวงจรอับเกิดขึน ้ -การหลีกเลีย ่ ง โดยการจัดสรรทรัพยากรให ้ถูกต ้อง -การตรวจพบและแก ้ไขคืน เราจะอนุญาตให ้วงจร ็ หาและแก ้ไขมัน อับเกิดขึน ้ และเราค่อยทำาการเชค ไม่ต ้องสนใจปั ญหาใด ๆ เลย ปั ญหาก็อาจจะไม่เกิด ขึน ้ ก็ได ้ Banker’s Algorithm การปฏิเสธไม่ให ้ครอบครองทรัพยากร ื่ ของ Banker’s Algorithm รู ้จักกันดีในชอ เป็ นการแก ้ปั ญหาของธนาคารในกรณีทม ี่ ล ี ก ู ค ้า ต ้องการกู ้ยืมเงินซงึ่ มีลก ั ษณะการทำางานเหมือนโปร ้ พยากรในระบบปฏิบต เซสทีใ่ ชทรั ั ก ิ ารทัว่ ไป ลูกค ้าเปรียบเสมือนโปรเซส และเงินทีถ ่ ก ู ยืมเปรียบ เสมือนทรัพยากร Banker’s Algorithm ธนาคารจะมีจำานวนเงินทีใ่ ห ้ลูกค ้ากู ้ยืมทีจ ่ ำากัด ื่ ของลูกค ้าพร ้อมกับเครดิตทีแ และก็มรี ายชอ ่ ต่ละตน จะได ้รับ ลูกค ้าบางคนอาจจะพยายามกู ้เงินให ้ได ้ เต็มเครดิตทีต ่ วั เองมี และบางครัง้ ลูกค ้าคนนัน ้ ก็ไม่ ยอมจ่ายเงินคืนกลับให ้ธนาคารจนกว่าจะได ้รับ จำานวนเงินทีต ่ ้องการกู ้ยืมทัง้ หมด