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
ธนาคารจะมีจำานวนเงินทีใ่ ห ้ลูกค ้ากู ้ยืมทีจ
่ ำากัด
ื่ ของลูกค ้าพร ้อมกับเครดิตทีแ
และก็มรี ายชอ
่ ต่ละตน
จะได ้รับ ลูกค ้าบางคนอาจจะพยายามกู ้เงินให ้ได ้
เต็มเครดิตทีต
่ วั เองมี และบางครัง้ ลูกค ้าคนนัน
้ ก็ไม่
ยอมจ่ายเงินคืนกลับให ้ธนาคารจนกว่าจะได ้รับ
จำานวนเงินทีต
่ ้องการกู ้ยืมทัง้ หมด