ภาวะตันใน Operaระบบ Ting: คืออะไร, Circular Wait (ตัวอย่าง)

Deadlock คืออะไร?

การหยุดชะงัก เป็นสถานการณ์ที่เกิดขึ้นในระบบปฏิบัติการเมื่อกระบวนการใดๆ เข้าสู่สถานะรอเนื่องจากกระบวนการรออื่นกำลังถือทรัพยากรที่ต้องการ เดดล็อกเป็นปัญหาทั่วไปในการประมวลผลหลายกระบวนการซึ่งกระบวนการหลายกระบวนการแบ่งปันทรัพยากรเฉพาะประเภทที่แยกจากกันซึ่งเรียกว่าซอฟต์ล็อกหรือซอฟต์แวร์

ตัวอย่างของ Deadlock

  • ตัวอย่างในโลกแห่งความเป็นจริงก็คือการจราจรซึ่งไปในทิศทางเดียวเท่านั้น
  • ที่นี่สะพานถือเป็นทรัพยากร
  • ดังนั้น เมื่อเกิด Deadlock สามารถแก้ไขได้ง่าย หากมีรถคันใดคันหนึ่งถอยหลัง (ยึดทรัพยากรและย้อนกลับ)
  • รถหลายคันอาจต้องจอดสำรองหากเกิดสถานการณ์ทางตัน
  • ความอดอยากจึงเป็นไปได้
ตัวอย่างของ Deadlock
ตัวอย่างการเกิดภาวะเดดล็อค

การรอแบบวงกลมคืออะไร?

กระบวนการหนึ่งกำลังรอทรัพยากร ซึ่งถูกจัดขึ้นโดยกระบวนการที่สอง ซึ่งกำลังรอทรัพยากรที่ถือโดยกระบวนการที่สามด้วย เป็นต้น ซึ่งจะดำเนินต่อไปจนกว่ากระบวนการสุดท้ายจะรอทรัพยากรที่จัดขึ้นโดยกระบวนการแรก สิ่งนี้จะสร้างห่วงโซ่แบบวงกลม

ตัวอย่างเช่น กระบวนการ A ได้รับการจัดสรรทรัพยากร B ตามที่ร้องขอทรัพยากร A ในทำนองเดียวกัน กระบวนการ B ได้รับการจัดสรรทรัพยากร A และกำลังร้องขอทรัพยากร B ซึ่งจะสร้างการวนรอบการรอแบบวงกลม

ตัวอย่างการรอแบบวงกลม

ตัวอย่างเช่น คอมพิวเตอร์มีไดรฟ์ USB สามไดรฟ์และกระบวนการสามกระบวนการ โดยแต่ละกระบวนการสามารถเก็บไดรฟ์ USB ได้หนึ่งไดรฟ์ ดังนั้น เมื่อแต่ละกระบวนการร้องขอไดรฟ์อื่น กระบวนการทั้งสามจะเข้าสู่สถานการณ์ที่ทุกอย่างไม่ลงตัว เนื่องจากแต่ละกระบวนการจะรอให้ไดรฟ์ USB ปล่อย ซึ่งกำลังใช้งานอยู่ ส่งผลให้เกิดห่วงโซ่แบบวงกลม

ตัวอย่างการรอแบบวงกลม

ตัวอย่างการรอแบบวงกลม

การตรวจจับเดดล็อคในระบบปฏิบัติการ

ตัวกำหนดตารางทรัพยากรสามารถตรวจพบการเกิดเดดล็อกได้ ตัวกำหนดตารางทรัพยากรช่วยให้ระบบปฏิบัติการสามารถติดตามทรัพยากรทั้งหมดที่ได้รับการจัดสรรให้กับกระบวนการต่างๆ ดังนั้น เมื่อตรวจพบเดดล็อก สามารถแก้ไขได้โดยใช้วิธีการดังต่อไปนี้:

การป้องกันเดดล็อกในระบบปฏิบัติการ

การป้องกันการเกิดเดดล็อกนั้นมีความสำคัญมาก เนื่องจากระบบจะตรวจสอบธุรกรรมทั้งหมดก่อนที่จะดำเนินการเพื่อให้แน่ใจว่าจะไม่ทำให้เกิดสถานการณ์เดดล็อก การเปลี่ยนแปลงเพียงเล็กน้อยที่เกิดขึ้นอาจส่งผลให้การดำเนินการที่อาจนำไปสู่สถานการณ์เดดล็อกในอนาคตไม่สามารถดำเนินการได้

เป็นชุดวิธีการเพื่อให้แน่ใจว่าเงื่อนไขอย่างน้อยหนึ่งข้อไม่สามารถคงอยู่ได้

ไม่มีการดำเนินการเชิงป้องกัน

ไม่มีการจองล่วงหน้า – ทรัพยากรสามารถถูกปล่อยออกมาโดยสมัครใจเท่านั้นโดยกระบวนการที่ถือครองไว้หลังจากที่กระบวนการนั้นเสร็จสิ้นงานแล้วเท่านั้น

  • หากกระบวนการที่เก็บทรัพยากรบางส่วนร้องขอทรัพยากรอื่นที่ไม่สามารถจัดสรรได้ทันที ในสถานการณ์นั้น ทรัพยากรทั้งหมดจะถูกปล่อย
  • ทรัพยากรที่จองไว้จำเป็นต้องมีรายการทรัพยากรสำหรับกระบวนการที่กำลังรอ
  • กระบวนการจะเริ่มต้นใหม่เฉพาะในกรณีที่สามารถกู้คืนทรัพยากรเก่าและทรัพยากรใหม่ที่ร้องขอได้
  • หากกระบวนการร้องขอทรัพยากรอื่น เมื่อพร้อมใช้งาน ก็จะถูกมอบให้กับกระบวนการร้องขอ
  • หากมันถูกจัดขึ้นโดยกระบวนการอื่นที่กำลังรอทรัพยากรอื่น เราจะปล่อยมันและมอบให้กับกระบวนการที่ร้องขอ

การยกเว้นร่วมกัน

Mutual Exclusion เป็นรูปแบบหนึ่งของ Mutex เป็นเซมาฟอร์ไบนารีชนิดพิเศษที่ใช้สำหรับควบคุมการเข้าถึงทรัพยากรที่ใช้ร่วมกัน ประกอบด้วยกลไกการสืบทอดลำดับความสำคัญเพื่อหลีกเลี่ยงปัญหาการผกผันลำดับความสำคัญที่ขยายออกไป ช่วยให้งานที่มีลำดับความสำคัญสูงกว่าในปัจจุบันถูกเก็บไว้ในสถานะที่ถูกบล็อกโดยใช้เวลาสั้นที่สุดเท่าที่จะเป็นไปได้

ทรัพยากรที่แบ่งปันกัน เช่น ไฟล์แบบอ่านอย่างเดียว ไม่เคยทำให้เกิดการหยุดชะงัก แต่ทรัพยากร เช่น เครื่องพิมพ์และเทปไดรฟ์ จำเป็นต้องได้รับการเข้าถึงพิเศษโดยกระบวนการเดียว

กดค้างไว้และรอ

ภายใต้สภาวะเช่นนี้ จะต้องหยุดกระบวนการจากการถือทรัพยากรเดียวหรือหลายรายการในขณะที่รอรายการอื่น ๆ หนึ่งรายการขึ้นไปในเวลาเดียวกัน

รอแบบวงกลม

โดยกำหนดให้มีการจัดลำดับรวมของทรัพยากรทุกประเภท การรอแบบวงกลมยังกำหนดให้ทุกกระบวนการร้องขอทรัพยากรตามลำดับการแจกแจงที่เพิ่มขึ้น

การหลีกเลี่ยงการหยุดชะงัก Algorithms

การหลีกเลี่ยงภาวะเดดล็อกนั้นดีกว่าการลงมือทำอะไรหลังจากภาวะเดดล็อกเกิดขึ้นแล้ว จำเป็นต้องมีข้อมูลเพิ่มเติม เช่น ควรใช้ทรัพยากรอย่างไร การหลีกเลี่ยงภาวะเดดล็อกเป็นแบบจำลองที่ง่ายที่สุดและมีประโยชน์ที่สุด โดยแต่ละกระบวนการจะประกาศจำนวนทรัพยากรสูงสุดของแต่ละประเภทที่อาจต้องการ

การหลีกเลี่ยง Algorithms

อัลกอริทึมการหลีกเลี่ยงภาวะชะงักงันจะช่วยให้คุณประเมินสถานะการจัดสรรทรัพยากรแบบไดนามิกเพื่อไม่ให้เกิดสถานการณ์ที่ต้องรอคอยแบบวนเวียนอีกต่อไป

อินสแตนซ์เดียวของประเภททรัพยากร

  • ใช้กราฟการจัดสรรทรัพยากร
  • วงจรเป็นสิ่งจำเป็นซึ่งเพียงพอสำหรับ Deadlock

ประเภททรัพยากรหลายอินสแตนซ์

ความแตกต่างระหว่างภาวะอดอาหารและภาวะหยุดชะงัก

ความแตกต่างที่สำคัญบางประการระหว่าง Deadlock และ Starvation มีดังนี้:

การหยุดชะงัก ความอดอยาก
สถานการณ์ที่ทำให้เกิดการหยุดชะงัก เกิดขึ้นเมื่อกระบวนการใดกระบวนการหนึ่งถูกบล็อก ความอดอยากคือสถานการณ์ที่กระบวนการที่มีลำดับความสำคัญต่ำทั้งหมดถูกปิดกั้น และกระบวนการที่มีลำดับความสำคัญสูงจะดำเนินการ
เดดล็อกเป็นกระบวนการที่ไม่มีที่สิ้นสุด ความอดอยากเป็นการรอคอยที่ยาวนาน แต่ไม่ใช่กระบวนการที่ไม่มีที่สิ้นสุด
ทุกๆ Deadlock ย่อมมีความอดอยากเสมอ ความอดอยากทุกครั้งไม่จำเป็นต้องมีทางตันเสมอไป
เกิดภาวะชะงักงัน จากนั้นการกีดกันซึ่งกันและกัน การยึดถือ และการรอ ในกรณีนี้ การแย่งชิงและการรอแบบวนซ้ำจะไม่เกิดขึ้นพร้อมกัน มันเกิดขึ้นเนื่องจากลำดับความสำคัญที่ไม่สามารถควบคุมได้และการจัดการทรัพยากร

ข้อดีของ Deadlock

นี่คือข้อดี/ประโยชน์ของการใช้ Deadlock

  • สถานการณ์นี้ใช้ได้ดีสำหรับกระบวนการที่ดำเนินกิจกรรมต่อเนื่องเพียงครั้งเดียว
  • ไม่จำเป็นต้องมีการแย่งชิงสิทธิ์สำหรับ Deadlock
  • วิธีการที่สะดวกเมื่อนำไปใช้กับทรัพยากรที่สามารถบันทึกและกู้คืนสถานะได้อย่างง่ายดาย
  • เป็นไปได้ที่จะบังคับใช้ผ่านการตรวจสอบเวลาคอมไพล์
  • ไม่จำเป็นต้องคำนวณรันไทม์เนื่องจากปัญหาได้รับการแก้ไขแล้วในการออกแบบระบบ

ข้อเสียของ Deadlock

นี่คือข้อเสียของการใช้เดดล็อค

  • ชะลอการเริ่มต้นกระบวนการ
  • กระบวนการต้องทราบความต้องการทรัพยากรในอนาคต
  • จองล่วงหน้าบ่อยเกินความจำเป็น
  • ไม่อนุญาตการร้องขอทรัพยากรที่เพิ่มขึ้น
  • การสูญเสียใบจองโดยธรรมชาติ

สรุป

  • คำจำกัดความของ Deadlock: คือสถานการณ์ที่เกิดขึ้นใน OS เมื่อกระบวนการใด ๆ เข้าสู่สถานะรอเนื่องจากกระบวนการรออื่นกำลังถือทรัพยากรที่ต้องการ
  • การรอแบบวงกลมเกิดขึ้นเมื่อกระบวนการหนึ่งกำลังรอทรัพยากร ซึ่งจัดขึ้นโดยกระบวนการที่สอง ซึ่งกำลังรอทรัพยากรที่จัดขึ้นโดยกระบวนการที่สามด้วย เป็นต้น
  • ตัวกำหนดตารางทรัพยากรสามารถตรวจพบเหตุการณ์ที่เกิดการตายล็อกได้
  • สิ่งสำคัญคือต้องป้องกันไม่ให้เกิดภาวะตันก่อนที่จะเกิดขึ้น
  • ทรัพยากรสามารถถูกปล่อยออกมาได้โดยสมัครใจเท่านั้นโดยกระบวนการที่ถือครองไว้หลังจากที่กระบวนการนั้นเสร็จสิ้นภารกิจแล้ว
  • Mutual Exclusion เป็นรูปแบบหนึ่งของ Mutex มันเป็นไบนารีชนิดพิเศษ สัญญาณ ซึ่งใช้สำหรับควบคุมการเข้าถึงทรัพยากรที่ใช้ร่วมกัน
  • Hold and wait คือเงื่อนไขที่ต้องหยุดกระบวนการจากการถือทรัพยากรหนึ่งรายการหรือหลายรายการในขณะที่รอรายการอื่น ๆ หนึ่งรายการหรือหลายรายการพร้อมกัน
  • การหลีกเลี่ยงภาวะเดดล็อกเป็นรูปแบบที่ง่ายที่สุดและมีประโยชน์ที่สุด ซึ่งแต่ละกระบวนการจะประกาศจำนวนสูงสุดของทรัพยากรแต่ละประเภทที่อาจจำเป็น
  • อัลกอริทึมการหลีกเลี่ยงภาวะชะงักงันจะช่วยให้คุณประเมินสถานะการจัดสรรทรัพยากรแบบไดนามิกเพื่อไม่ให้เกิดสถานการณ์ที่ต้องรอคอยแบบวนเวียนอีกต่อไป
  • ทางตันเป็นกระบวนการที่ไม่มีที่สิ้นสุด ในขณะที่ความอดอยากเป็นการรอคอยอันยาวนานแต่ไม่ใช่กระบวนการที่ไม่มีที่สิ้นสุด