ภาวะตันใน Operaระบบ Ting: คืออะไร, Circular Wait (ตัวอย่าง)
Deadlock คืออะไร?
การหยุดชะงัก เป็นสถานการณ์ที่เกิดขึ้นในระบบปฏิบัติการเมื่อกระบวนการใดๆ เข้าสู่สถานะรอเนื่องจากกระบวนการรออื่นกำลังถือทรัพยากรที่ต้องการ เดดล็อกเป็นปัญหาทั่วไปในการประมวลผลหลายกระบวนการซึ่งกระบวนการหลายกระบวนการแบ่งปันทรัพยากรเฉพาะประเภทที่แยกจากกันซึ่งเรียกว่าซอฟต์ล็อกหรือซอฟต์แวร์
ตัวอย่างของ Deadlock
- ตัวอย่างในโลกแห่งความเป็นจริงก็คือการจราจรซึ่งไปในทิศทางเดียวเท่านั้น
- ที่นี่สะพานถือเป็นทรัพยากร
- ดังนั้น เมื่อเกิด Deadlock สามารถแก้ไขได้ง่าย หากมีรถคันใดคันหนึ่งถอยหลัง (ยึดทรัพยากรและย้อนกลับ)
- รถหลายคันอาจต้องจอดสำรองหากเกิดสถานการณ์ทางตัน
- ความอดอยากจึงเป็นไปได้

การรอแบบวงกลมคืออะไร?
กระบวนการหนึ่งกำลังรอทรัพยากร ซึ่งถูกจัดขึ้นโดยกระบวนการที่สอง ซึ่งกำลังรอทรัพยากรที่ถือโดยกระบวนการที่สามด้วย เป็นต้น ซึ่งจะดำเนินต่อไปจนกว่ากระบวนการสุดท้ายจะรอทรัพยากรที่จัดขึ้นโดยกระบวนการแรก สิ่งนี้จะสร้างห่วงโซ่แบบวงกลม
ตัวอย่างเช่น กระบวนการ A ได้รับการจัดสรรทรัพยากร B ตามที่ร้องขอทรัพยากร A ในทำนองเดียวกัน กระบวนการ B ได้รับการจัดสรรทรัพยากร A และกำลังร้องขอทรัพยากร B ซึ่งจะสร้างการวนรอบการรอแบบวงกลม
ตัวอย่างการรอแบบวงกลม
ตัวอย่างเช่น คอมพิวเตอร์มีไดรฟ์ USB สามไดรฟ์และกระบวนการสามกระบวนการ โดยแต่ละกระบวนการสามารถเก็บไดรฟ์ USB ได้หนึ่งไดรฟ์ ดังนั้น เมื่อแต่ละกระบวนการร้องขอไดรฟ์อื่น กระบวนการทั้งสามจะเข้าสู่สถานการณ์ที่ทุกอย่างไม่ลงตัว เนื่องจากแต่ละกระบวนการจะรอให้ไดรฟ์ USB ปล่อย ซึ่งกำลังใช้งานอยู่ ส่งผลให้เกิดห่วงโซ่แบบวงกลม
การตรวจจับเดดล็อคในระบบปฏิบัติการ
ตัวกำหนดตารางทรัพยากรสามารถตรวจพบการเกิดเดดล็อกได้ ตัวกำหนดตารางทรัพยากรช่วยให้ระบบปฏิบัติการสามารถติดตามทรัพยากรทั้งหมดที่ได้รับการจัดสรรให้กับกระบวนการต่างๆ ดังนั้น เมื่อตรวจพบเดดล็อก สามารถแก้ไขได้โดยใช้วิธีการดังต่อไปนี้:
การป้องกันเดดล็อกในระบบปฏิบัติการ
การป้องกันการเกิดเดดล็อกนั้นมีความสำคัญมาก เนื่องจากระบบจะตรวจสอบธุรกรรมทั้งหมดก่อนที่จะดำเนินการเพื่อให้แน่ใจว่าจะไม่ทำให้เกิดสถานการณ์เดดล็อก การเปลี่ยนแปลงเพียงเล็กน้อยที่เกิดขึ้นอาจส่งผลให้การดำเนินการที่อาจนำไปสู่สถานการณ์เดดล็อกในอนาคตไม่สามารถดำเนินการได้
เป็นชุดวิธีการเพื่อให้แน่ใจว่าเงื่อนไขอย่างน้อยหนึ่งข้อไม่สามารถคงอยู่ได้
ไม่มีการดำเนินการเชิงป้องกัน
ไม่มีการจองล่วงหน้า – ทรัพยากรสามารถถูกปล่อยออกมาโดยสมัครใจเท่านั้นโดยกระบวนการที่ถือครองไว้หลังจากที่กระบวนการนั้นเสร็จสิ้นงานแล้วเท่านั้น
- หากกระบวนการที่เก็บทรัพยากรบางส่วนร้องขอทรัพยากรอื่นที่ไม่สามารถจัดสรรได้ทันที ในสถานการณ์นั้น ทรัพยากรทั้งหมดจะถูกปล่อย
- ทรัพยากรที่จองไว้จำเป็นต้องมีรายการทรัพยากรสำหรับกระบวนการที่กำลังรอ
- กระบวนการจะเริ่มต้นใหม่เฉพาะในกรณีที่สามารถกู้คืนทรัพยากรเก่าและทรัพยากรใหม่ที่ร้องขอได้
- หากกระบวนการร้องขอทรัพยากรอื่น เมื่อพร้อมใช้งาน ก็จะถูกมอบให้กับกระบวนการร้องขอ
- หากมันถูกจัดขึ้นโดยกระบวนการอื่นที่กำลังรอทรัพยากรอื่น เราจะปล่อยมันและมอบให้กับกระบวนการที่ร้องขอ
การยกเว้นร่วมกัน
Mutual Exclusion เป็นรูปแบบหนึ่งของ Mutex เป็นเซมาฟอร์ไบนารีชนิดพิเศษที่ใช้สำหรับควบคุมการเข้าถึงทรัพยากรที่ใช้ร่วมกัน ประกอบด้วยกลไกการสืบทอดลำดับความสำคัญเพื่อหลีกเลี่ยงปัญหาการผกผันลำดับความสำคัญที่ขยายออกไป ช่วยให้งานที่มีลำดับความสำคัญสูงกว่าในปัจจุบันถูกเก็บไว้ในสถานะที่ถูกบล็อกโดยใช้เวลาสั้นที่สุดเท่าที่จะเป็นไปได้
ทรัพยากรที่แบ่งปันกัน เช่น ไฟล์แบบอ่านอย่างเดียว ไม่เคยทำให้เกิดการหยุดชะงัก แต่ทรัพยากร เช่น เครื่องพิมพ์และเทปไดรฟ์ จำเป็นต้องได้รับการเข้าถึงพิเศษโดยกระบวนการเดียว
กดค้างไว้และรอ
ภายใต้สภาวะเช่นนี้ จะต้องหยุดกระบวนการจากการถือทรัพยากรเดียวหรือหลายรายการในขณะที่รอรายการอื่น ๆ หนึ่งรายการขึ้นไปในเวลาเดียวกัน
รอแบบวงกลม
โดยกำหนดให้มีการจัดลำดับรวมของทรัพยากรทุกประเภท การรอแบบวงกลมยังกำหนดให้ทุกกระบวนการร้องขอทรัพยากรตามลำดับการแจกแจงที่เพิ่มขึ้น
การหลีกเลี่ยงการหยุดชะงัก Algorithms
การหลีกเลี่ยงภาวะเดดล็อกนั้นดีกว่าการลงมือทำอะไรหลังจากภาวะเดดล็อกเกิดขึ้นแล้ว จำเป็นต้องมีข้อมูลเพิ่มเติม เช่น ควรใช้ทรัพยากรอย่างไร การหลีกเลี่ยงภาวะเดดล็อกเป็นแบบจำลองที่ง่ายที่สุดและมีประโยชน์ที่สุด โดยแต่ละกระบวนการจะประกาศจำนวนทรัพยากรสูงสุดของแต่ละประเภทที่อาจต้องการ
การหลีกเลี่ยง Algorithms
อัลกอริทึมการหลีกเลี่ยงภาวะชะงักงันจะช่วยให้คุณประเมินสถานะการจัดสรรทรัพยากรแบบไดนามิกเพื่อไม่ให้เกิดสถานการณ์ที่ต้องรอคอยแบบวนเวียนอีกต่อไป
อินสแตนซ์เดียวของประเภททรัพยากร
- ใช้กราฟการจัดสรรทรัพยากร
- วงจรเป็นสิ่งจำเป็นซึ่งเพียงพอสำหรับ Deadlock
ประเภททรัพยากรหลายอินสแตนซ์
- วงจรเป็นสิ่งจำเป็นแต่ไม่เพียงพอสำหรับ Deadlock
- ใช้ไฟล์ อัลกอริทึมของนายธนาคาร
ความแตกต่างระหว่างภาวะอดอาหารและภาวะหยุดชะงัก
ความแตกต่างที่สำคัญบางประการระหว่าง Deadlock และ Starvation มีดังนี้:
การหยุดชะงัก | ความอดอยาก |
---|---|
สถานการณ์ที่ทำให้เกิดการหยุดชะงัก เกิดขึ้นเมื่อกระบวนการใดกระบวนการหนึ่งถูกบล็อก | ความอดอยากคือสถานการณ์ที่กระบวนการที่มีลำดับความสำคัญต่ำทั้งหมดถูกปิดกั้น และกระบวนการที่มีลำดับความสำคัญสูงจะดำเนินการ |
เดดล็อกเป็นกระบวนการที่ไม่มีที่สิ้นสุด | ความอดอยากเป็นการรอคอยที่ยาวนาน แต่ไม่ใช่กระบวนการที่ไม่มีที่สิ้นสุด |
ทุกๆ Deadlock ย่อมมีความอดอยากเสมอ | ความอดอยากทุกครั้งไม่จำเป็นต้องมีทางตันเสมอไป |
เกิดภาวะชะงักงัน จากนั้นการกีดกันซึ่งกันและกัน การยึดถือ และการรอ ในกรณีนี้ การแย่งชิงและการรอแบบวนซ้ำจะไม่เกิดขึ้นพร้อมกัน | มันเกิดขึ้นเนื่องจากลำดับความสำคัญที่ไม่สามารถควบคุมได้และการจัดการทรัพยากร |
ข้อดีของ Deadlock
นี่คือข้อดี/ประโยชน์ของการใช้ Deadlock
- สถานการณ์นี้ใช้ได้ดีสำหรับกระบวนการที่ดำเนินกิจกรรมต่อเนื่องเพียงครั้งเดียว
- ไม่จำเป็นต้องมีการแย่งชิงสิทธิ์สำหรับ Deadlock
- วิธีการที่สะดวกเมื่อนำไปใช้กับทรัพยากรที่สามารถบันทึกและกู้คืนสถานะได้อย่างง่ายดาย
- เป็นไปได้ที่จะบังคับใช้ผ่านการตรวจสอบเวลาคอมไพล์
- ไม่จำเป็นต้องคำนวณรันไทม์เนื่องจากปัญหาได้รับการแก้ไขแล้วในการออกแบบระบบ
ข้อเสียของ Deadlock
นี่คือข้อเสียของการใช้เดดล็อค
- ชะลอการเริ่มต้นกระบวนการ
- กระบวนการต้องทราบความต้องการทรัพยากรในอนาคต
- จองล่วงหน้าบ่อยเกินความจำเป็น
- ไม่อนุญาตการร้องขอทรัพยากรที่เพิ่มขึ้น
- การสูญเสียใบจองโดยธรรมชาติ
สรุป
- คำจำกัดความของ Deadlock: คือสถานการณ์ที่เกิดขึ้นใน OS เมื่อกระบวนการใด ๆ เข้าสู่สถานะรอเนื่องจากกระบวนการรออื่นกำลังถือทรัพยากรที่ต้องการ
- การรอแบบวงกลมเกิดขึ้นเมื่อกระบวนการหนึ่งกำลังรอทรัพยากร ซึ่งจัดขึ้นโดยกระบวนการที่สอง ซึ่งกำลังรอทรัพยากรที่จัดขึ้นโดยกระบวนการที่สามด้วย เป็นต้น
- ตัวกำหนดตารางทรัพยากรสามารถตรวจพบเหตุการณ์ที่เกิดการตายล็อกได้
- สิ่งสำคัญคือต้องป้องกันไม่ให้เกิดภาวะตันก่อนที่จะเกิดขึ้น
- ทรัพยากรสามารถถูกปล่อยออกมาได้โดยสมัครใจเท่านั้นโดยกระบวนการที่ถือครองไว้หลังจากที่กระบวนการนั้นเสร็จสิ้นภารกิจแล้ว
- Mutual Exclusion เป็นรูปแบบหนึ่งของ Mutex มันเป็นไบนารีชนิดพิเศษ สัญญาณ ซึ่งใช้สำหรับควบคุมการเข้าถึงทรัพยากรที่ใช้ร่วมกัน
- Hold and wait คือเงื่อนไขที่ต้องหยุดกระบวนการจากการถือทรัพยากรหนึ่งรายการหรือหลายรายการในขณะที่รอรายการอื่น ๆ หนึ่งรายการหรือหลายรายการพร้อมกัน
- การหลีกเลี่ยงภาวะเดดล็อกเป็นรูปแบบที่ง่ายที่สุดและมีประโยชน์ที่สุด ซึ่งแต่ละกระบวนการจะประกาศจำนวนสูงสุดของทรัพยากรแต่ละประเภทที่อาจจำเป็น
- อัลกอริทึมการหลีกเลี่ยงภาวะชะงักงันจะช่วยให้คุณประเมินสถานะการจัดสรรทรัพยากรแบบไดนามิกเพื่อไม่ให้เกิดสถานการณ์ที่ต้องรอคอยแบบวนเวียนอีกต่อไป
- ทางตันเป็นกระบวนการที่ไม่มีที่สิ้นสุด ในขณะที่ความอดอยากเป็นการรอคอยอันยาวนานแต่ไม่ใช่กระบวนการที่ไม่มีที่สิ้นสุด