การป้องกันการติดตาย
จากที่ทราบมาแล้วว่าเหตุที่ทำให้เกิดการติดตายมาจาก 4 ข้อที่กล่าวถึงหัวข้อ 7.2
Mutual Exclusion เงื่อนไขของการเกิด mutual คือการใช้งานทรัพยากรที่อนุญาตให้ใช้ได้ทีละงาน เช่
เครื่องพิมพ์ อีกนัยหนึ่งการร่วมใช้ข้อมูลโดยไม่ต้องการเข้า mutual ทำให้ไม่เกิดการติดตาย ตัวอย่างของไฟล์ที่สามารถอ่านได้อย่างเดียว ถ้าหลายๆโพรเซสพยายามที่จะอ่านก็สามารถเข้าอ่านได้ทันทีอย่างต่อเนื่อง อย่างไรก็ดีทรัพยากรบางชนิดไม่สามารถประกาศใช้งานร่วมกันได้
Hold / Wait รับรองได้ว่าเมื่อมีการร้องขอใช้ทรัพยากรทำงาน โพรเซสนั้นต้องไม่ได้กำลังใช้งาน
ทรัพยากรอื่นอยู่ ซึ่งสามารถทำได้หลายวิธีการเช่น บังคับให้โพรเซสร้องขอแล้วก็จัดสรรการใช้งานทรัพยากรให้กับโพรเซสนั้นๆก่อนที่จะมีการเริ่มทำงาน หรือยอมให้โพรเซสขอใช้ทรัพยากรได้เมื่อโพรเซสไม่ได้ทำงานในส่วนใดอยู่ ความแตกต่างระหว่างสองวิธีการอาจมีดังนี้ ถ้าพิจารณาโพรเซสที่ทำงานในการสำเนาไฟล์ข้อมูลจากเทปไปยังดิสก์ แล้วพิมพ์ออกทางเครื่องพิมพ์ ถ้าต้องให้โพรเซสมีการขอใช้ทรัพยากรก่อนที่จะเริ่มทำงานจริง ดังนั้นโพรเซสต้องเริ่มขอไปยังเทป แล้วดิสก์ สุดท้ายก็เป็นเครื่องพิมพ์ ดังนั้นเครื่องพิมพ์จึงต้องถูกจับจองเอาไว้ให้โพรเซสนี้ตลอดระยะเวลาในการทำงานทั้งหมดของโพรเซส ลักษณะเช่นนี้เกิดเป็นข้อเสียทางด้าน Resource Utilization ส่วนวิธีที่สองยอมให้โพรเซสร้องขอเพียงแค่ช่วงของการขอเทปและดิสก์ เพื่อสำเนาข้อมูลได้เนื่องจากโพรเซสเริ่มแรกยังไม่มีการใช้งานทรัพยากรใด แต่เมื่อกำลังใช้ในการสำเนา โพรเซสนั้นจะไม่มีสิทธิในการขอใช้เครื่องพิมพ์จนกว่าจะสำเนาเสร็จ เมื่อสำเนาเสร็จแล้วจึงต้องขอใช้ดิสก์กับเครื่องพิมพ์เพื่อสำเนาข้อมูลที่ต้องการพิมพ์มายังเครื่องพิมพ์นั้น ถ้าในระหว่างนั้นในโพรเซสอื่นอาจใช้งานเครื่องพิมพ์ หรือทรัพยากรเทปหรือดิสก์ ทำให้ต้องรอ ข้อมูลอาจสูญหาย หรือเกิดการรอในแต่ละช่วงของการร้องลักษณะเช่นนี้เป็นข้อเสียที่เกี่ยวเนื่องกับ Starvation หมายถึงสภาวะอดตาย
No Preemption ถ้าโพรเซสมีการใช้งานทรัพยากรอื่นอยู่ ดังนั้นก็จะไม่สามารถเข้าทำงานในทรัพยากร
ที่ขอใช้ไปได้ทันทีในขณะนั้น แล้วทุกๆโพรเซสที่กำลังถูกใช้ในขณะนั้นจะถูกปลดปล่อยให้ว่าง โพรเซสที่ถูกบังคับให้ออกจากการใช้บริการจะถูกเพิ่มเข้าไปในรายการของทรัพยากรที่มีโพรเซสรอใช้งาน จากนั้นโพรเซสจะเริ่มทำงานก็ต่อเมื่อโพรเซสนั้นได้รับสิทธิให้ใช้ทรัพยากรตัวเดิมได้ ในขณะที่โพรเซสอื่นๆกำลังร้องขอ
Circular Wait ก่อนที่จะเริ่มใช้วิธีการนี้ต้องทำการกำหนดลำดับของชนิดทรัพยากรทั้งหมดและเมื่อร้องขอว่าในแต่ละโพรเซสที่ขอใช้ทรัพยากรเป็นการเพิ่มจำนวนลำดับของชนิดทรัพยากรที่ได้ระบุไว้ กำหนดให้ R เป็นเซตของชนิดทรัพยากร R1 , R2 .. ,Rn เรากำหนดในแต่ละชนิดทรัพยากรเป็นเลขจำนวนเต็มเพื่อให้สามารถทำการเปรียบเทียบได้ เช่นถ้าเซต ทรัพยากรกลุ่ม R คือมีเทป ดิสก์ และเครื่องพิมพ์ และกำหนดฟังก์ชันเป็นหนึ่งต่อหนึ่ง F : R à N ; N คือเซตของจำนวนจริง ดังนั้นเราสามารถกำหนดฟังก์ชันการทำงานได้คือ
F(tape drive) = 1 , F(disk drive) = 5, F(printer) = 12
เมื่อพิจารณาในแต่ละโพรเซสสามารถร้องขอการใช้ทรัพยากรก็ต่อเมื่อเป็นกรณีที่มีการเพิ่มค่าลำดับของทรัพยากรนั้น โพรเซส i สามารถเริ่มการขอใช้โดยการเอาข้อมูลจำนวนที่ทรัพยากรนั้นๆจะสามารถให้บริการได้พร้อมกัน ขณะเดียวกันก็สามารถดูจำนวนที่ทรัพยากรนั้นสามารถให้บริการกับโพรเซส j ถ้าพบกว่าฟังก์ชันหรือค่าของทรัพยากรที่โพรเซส j ร้องขอมากกว่าค่าของทรัพยากรที่โพรเซส i ร้องขอ ดังนั้นเมื่อตรวจพบกว่ามีการเรียกใช้ทรัพยากรจำนวนมากจะมีเพียงการร้องขอเดียวเท่านั้นที่จะได้รับการทำงาน
เขียนตัวเล็กมาก
เป็นการนำเสนอที่ดีมา