ความแตกต่างระหว่างการหยุดชะงักและความอดอยากในระบบปฏิบัติการ
เนื้อหา
ทั้ง Deadlock และ Starvation เป็นเงื่อนไขที่กระบวนการที่ร้องขอทรัพยากรล่าช้าไปเป็นเวลานาน แม้ว่าการหยุดชะงักและความอดอยากทั้งสองจะแตกต่างกันในหลาย ๆ ด้าน การหยุดชะงัก เป็นเงื่อนไขที่ไม่มีกระบวนการดำเนินการสำหรับการดำเนินการและแต่ละรอทรัพยากรที่ได้รับจากกระบวนการอื่น ๆ ในทางกลับกันใน ความอดอยากกระบวนการที่มีลำดับความสำคัญสูงจะใช้ทรัพยากรอย่างต่อเนื่องเพื่อป้องกันกระบวนการที่มีลำดับความสำคัญต่ำเพื่อรับทรัพยากร ให้เราคุยความแตกต่างเพิ่มเติมระหว่างการหยุดชะงักและความอดอยากด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | การหยุดชะงัก | ความอดอยาก |
---|---|---|
ขั้นพื้นฐาน | การหยุดชะงักเป็นกระบวนการที่ไม่มีการดำเนินการและถูกบล็อก | ความอดอยากคือกระบวนการที่ความสำคัญต่ำถูกบล็อกและกระบวนการที่มีลำดับความสำคัญสูงจะดำเนินต่อไป |
สภาพที่เกิดขึ้น | การเกิดขึ้นของการกีดกันรวม, พักและรอ, ไม่มีใบจองและรอแบบวงกลมพร้อมกัน | การบังคับใช้ลำดับความสำคัญการจัดการทรัพยากรที่ไม่มีการควบคุม |
ชื่ออื่น ๆ | รอเป็นวงกลม | 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 ทำให้กระบวนการดำเนินการล่าช้าโดยการปิดกั้น ในอีกด้านหนึ่งที่การหยุดชะงักสามารถทำให้กระบวนการอดอยากและในอีกทางหนึ่งการอดอาหารสามารถทำให้กระบวนการหยุดชะงักได้