แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | การหยุดชะงัก | ความอดอยาก |
---|---|---|
ขั้นพื้นฐาน | การหยุดชะงักเป็นกระบวนการที่ไม่มีการดำเนินการและถูกบล็อก | ความอดอยากคือกระบวนการที่ความสำคัญต่ำถูกบล็อกและกระบวนการที่มีลำดับความสำคัญสูงจะดำเนินต่อไป |
สภาพที่เกิดขึ้น | การเกิดขึ้นของการกีดกันรวม, พักและรอ, ไม่มีการจองล่วงหน้าและการรอแบบวงกลมพร้อมกัน | การบังคับใช้ลำดับความสำคัญการจัดการทรัพยากรที่ไม่มีการควบคุม |
ชื่ออื่น ๆ | รอเป็นวงกลม | Lifelock |
ทรัพยากร | ทรัพยากรที่ร้องขอถูกปิดกั้นโดยกระบวนการอื่น | ในความอดอยากทรัพยากรที่ร้องขอนั้นถูกใช้อย่างต่อเนื่องโดยกระบวนการที่มีลำดับความสำคัญสูง |
การป้องกัน | หลีกเลี่ยงการกีดกันซึ่งกันและกันการพักการรอและการรอเป็นวงกลมและการอนุญาตให้จอง | ริ้วรอยก่อนวัย |
คำจำกัดความของ Deadlock
Deadlock เป็นสถานการณ์ที่กระบวนการต่าง ๆ ใน CPU แข่งขันกันสำหรับจำนวน จำกัด ของทรัพยากรที่มีอยู่ภายใน CPU ที่นี่แต่ละกระบวนการมีทรัพยากรและรอรับทรัพยากรที่กระบวนการอื่นถืออยู่ กระบวนการทั้งหมดรอทรัพยากรในแบบวงกลม ในภาพด้านล่างคุณจะเห็นว่ากระบวนการ P1 ได้รับทรัพยากร R2 ซึ่งถูกร้องขอโดยกระบวนการ P2 และกระบวนการ P1 กำลังร้องขอทรัพยากร R1 ซึ่งจัดขึ้นอีกครั้งโดย R2 ดังนั้นประมวลผล P1 และ P2 ในรูปแบบการหยุดชะงัก
- การยกเว้นร่วมกัน: กระบวนการเดียวในแต่ละครั้งสามารถใช้ทรัพยากรหากกระบวนการอื่นร้องขอทรัพยากรเดียวกันก็ต้องรอจนกว่ากระบวนการโดยใช้ทรัพยากรที่ปล่อยออกมา
- พักและรอ: กระบวนการจะต้องถือครองทรัพยากรและรอที่จะได้รับทรัพยากรอื่นที่จัดขึ้นโดยกระบวนการอื่น ๆ
- ไม่มีการ จองล่วงหน้า : กระบวนการที่ถือครองทรัพยากรไม่สามารถจองล่วงหน้าได้ กระบวนการที่ถือครองทรัพยากรจะต้องปล่อยทรัพยากรโดยสมัครใจเมื่อมันเสร็จสิ้นภารกิจแล้ว
- การรอ แบบวนเวียนวนรอบ : กระบวนการต้องรอทรัพยากรในลักษณะวงกลม สมมติว่าเรามีสามกระบวนการ {P0, P1, P2} P0 ต้องรอทรัพยากรที่ถือโดย P1; P1 ต้องรอรับทรัพยากรที่จัดขึ้นโดยกระบวนการ P2 และ P2 ต้องรอรับกระบวนการที่จัดขึ้นโดย P0
แม้ว่าจะมีแอพพลิเคชั่นบางตัวที่สามารถตรวจจับโปรแกรมที่อาจหยุดชะงักได้ แต่ระบบปฏิบัติการจะไม่รับผิดชอบในการป้องกันการหยุดชะงัก มันเป็นความรับผิดชอบของโปรแกรมเมอร์ในการออกแบบโปรแกรมที่ไม่มีการหยุดชะงัก สามารถทำได้โดยหลีกเลี่ยงเงื่อนไขข้างต้นซึ่งจำเป็นสำหรับการหยุดชะงัก
คำจำกัดความของความอดอยาก
ความอดอยากสามารถกำหนดได้ว่าเมื่อใดที่กระบวนการร้องขอทรัพยากรและทรัพยากรนั้นถูกใช้อย่างต่อเนื่องโดยกระบวนการอื่น ๆ ดังนั้นกระบวนการที่ร้องขอต้องเผชิญกับความอดอยาก ในความอดอยากกระบวนการพร้อมที่จะดำเนินการรอให้ CPU จัดสรรทรัพยากร แต่กระบวนการต้องรออย่างไม่มีกำหนดเนื่องจากกระบวนการอื่น ๆ บล็อกทรัพยากรที่ร้องขออย่างต่อเนื่อง
ปัญหาความอดอยากโดยทั่วไปเกิดขึ้นใน อัลกอริทึมการจัดตารางเวลาลำดับความสำคัญ ในอัลกอริทึมการจัดตารางความสำคัญกระบวนการที่มีลำดับความสำคัญสูงกว่าจะถูกจัดสรรทรัพยากรเสมอป้องกันไม่ให้กระบวนการที่มีลำดับความสำคัญต่ำกว่าได้รับทรัพยากรที่ร้องขอ
ริ้วรอยก่อนวัย สามารถแก้ไขปัญหาความอดอยาก อายุจะค่อยๆเพิ่มลำดับความสำคัญของกระบวนการที่รอมานานสำหรับทรัพยากร การกำหนดอายุจะป้องกันกระบวนการที่มีลำดับความสำคัญต่ำเพื่อรอทรัพยากรอย่างไม่มีกำหนด
ความแตกต่างที่สำคัญระหว่างการหยุดชะงักและความอดอยากในระบบปฏิบัติการ
- ในการหยุดชะงักไม่มีกระบวนการใดที่ดำเนินการเพื่อดำเนินการแต่ละกระบวนการได้รับการบล็อกรอทรัพยากรที่ได้มาจากกระบวนการอื่น ในทางตรงกันข้ามความอดอยากเป็นเงื่อนไขที่กระบวนการที่มีลำดับความสำคัญสูงกว่าได้รับอนุญาตให้ได้รับทรัพยากรอย่างต่อเนื่องโดยการป้องกันไม่ให้กระบวนการลำดับความสำคัญต่ำได้รับทรัพยากร
- การหยุดชะงักเกิดขึ้นเมื่อมีเงื่อนไขสี่ประการที่ การแยกกันรวม, พักและรอ, ไม่มีใบจองและรอแบบเวียน เกิดขึ้นพร้อมกัน อย่างไรก็ตามความอดอยากเกิดขึ้นเมื่อ มีการบังคับใช้ลำดับความสำคัญของ กระบวนการในขณะที่จัดสรรทรัพยากรหรือมีการจัดการทรัพยากรที่ไม่มีการควบคุมในระบบ
- การหยุดชะงักมักจะถูกเรียกโดยการ รอ ชื่อ วงเวียน ในขณะที่ความอดอยากเรียกว่า ล็อคแบบมีชีวิต
- ใน Deadlock ทรัพยากรถูกบล็อกโดยกระบวนการในขณะที่ความอดอยากกระบวนการจะถูกใช้อย่างต่อเนื่องโดยกระบวนการที่มีลำดับความสำคัญสูง
- การหยุดชะงักสามารถป้องกันได้โดยการหลีกเลี่ยงเงื่อนไขเช่นการกีดกันซึ่งกันและกันการพักไว้และรอและการรอคอยเป็นวงกลมและโดยอนุญาตให้กระบวนการจองล่วงหน้าของกระบวนการที่ใช้ทรัพยากรอยู่เป็นเวลานาน ในขณะที่ความอดอยากสามารถป้องกันได้โดย อายุ
สรุป:
ทั้ง Deadlock และ Starvation ทำให้กระบวนการดำเนินการล่าช้าโดยการปิดกั้น ในอีกด้านหนึ่งที่การหยุดชะงักสามารถทำให้กระบวนการอดอยากและในอีกทางหนึ่งการอดอาหารสามารถทำให้กระบวนการหยุดชะงักได้