อัลกอริทึมของนายธนาคารใน Operaระบบ Ting [ตัวอย่าง]

อัลกอริทึมของ Banker คืออะไร?

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

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

ตัวอย่างเช่น มีผู้ถือบัญชีของธนาคารหนึ่งจำนวน X และจำนวนเงินรวมในบัญชีของพวกเขาคือ G

เมื่อธนาคารดำเนินการสินเชื่อรถยนต์ ระบบซอฟต์แวร์จะหักจำนวนสินเชื่อที่ได้รับเพื่อซื้อรถยนต์จากเงินทั้งหมด (G+ เงินฝากประจำ + โครงการรายได้รายเดือน + ทองคำ ฯลฯ) ที่ธนาคารมีอยู่

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

สัญลักษณ์อัลกอริทึมของนายธนาคาร

นี่คือสัญลักษณ์สำคัญที่ใช้ในอัลกอริทึมของ Banker:

  • X: ระบุจำนวนกระบวนการทั้งหมดของระบบ
  • Y: ระบุจำนวนทรัพยากรทั้งหมดที่มีอยู่ในระบบ

Available

[I: Y] ระบุทรัพยากรที่มีอยู่

แม็กซ์

[l:X,l: Y]: การแสดงออกของจำนวนทรัพยากรสูงสุดประเภท j หรือกระบวนการ i

การจัดสรร

[ล:X,ล:ย]. ระบุว่ากระบวนการใดที่คุณได้รับทรัพยากรประเภท j

จำเป็นต้อง

แสดงว่าสามารถจัดสรรทรัพยากรได้อีกจำนวนเท่าใดในอนาคต

ตัวอย่างอัลกอริทึมของ Banker

สมมติว่าเรามีทรัพยากรดังต่อไปนี้:

  • 5 ไดรฟ์ปากกา
  • เครื่องพิมพ์ 2 เครื่อง
  • เครื่องสแกน 4 เครื่อง
  • 3 ฮาร์ดดิสก์

ที่นี่ เราได้สร้างเวกเตอร์ที่แสดงถึงทรัพยากรทั้งหมด: Available = (5, 2, 4, 3)

สมมติว่ามีสี่กระบวนการ ทรัพยากรที่มีอยู่ได้รับการจัดสรรแล้วตามตารางเมทริกซ์ด้านล่าง

ชื่อกระบวนการ ไดรฟ์ปากกา เครื่องพิมพ์ เครื่องสแกนเนอร์ ฮาร์ดดิสก์
P 2 0 1 1
Q 0 1 0 0
R 1 0 1 1
S 1 1 0 1
รวม 4 2 2 3

ในที่นี้ ทรัพยากรที่จัดสรรคือผลรวมของคอลัมน์เหล่านี้:

จัดสรรแล้ว = (4, 2, 2, 3)

นอกจากนี้เรายังสร้างเมทริกซ์เพื่อแสดงจำนวนทรัพยากรแต่ละรายการที่จำเป็นสำหรับกระบวนการทั้งหมด เมทริกซ์นี้เรียกว่า จำเป็นต้อง=(3,0,2,2)

ชื่อกระบวนการ ไดรฟ์ปากกา เครื่องพิมพ์ เครื่องสแกนเนอร์ ฮาร์ดดิสก์
P 1 1 0 0
Q 0 1 1 2
R 2 1 0 0
S 0 0 1 0

เวกเตอร์ที่มีอยู่จะเป็น:

ว่าง = ว่าง - จัดสรรแล้ว

= (5, 2, 4, 3) - (4, 2, 2, 3)

=(1, 0, 2, 0)

อัลกอริทึมการร้องขอทรัพยากร

อัลกอริทึมการร้องขอทรัพยากรช่วยให้คุณสามารถแสดงพฤติกรรมของระบบเมื่อกระบวนการเฉพาะส่งคำขอทรัพยากร

มาทำความเข้าใจกันตามขั้นตอนต่อไปนี้:

ขั้นตอน 1) เมื่ออินสแตนซ์ที่ร้องขอทั้งหมดของทรัพยากรทั้งหมดน้อยกว่ากระบวนการ ให้ย้ายไปยังขั้นตอนที่ 2

ขั้นตอน 2) เมื่อจำนวนอินสแตนซ์ที่ร้องขอของทรัพยากรแต่ละประเภทมีจำนวนน้อยกว่าทรัพยากรที่มีอยู่ของแต่ละประเภท ทรัพยากรดังกล่าวจะถูกประมวลผลไปยังขั้นตอนถัดไป มิฉะนั้น กระบวนการจะต้องรอเนื่องจากทรัพยากรไม่เพียงพอ

ขั้นตอน 3) ทรัพยากรได้รับการจัดสรรตามที่แสดงใน Pseudocode ที่กำหนดด้านล่าง

Available = Available – Request (y)
Allocation(x) = Allocation(x) + Request(x)
Need(x) = Need(x) - Request(x)

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

ลักษณะของอัลกอริทึมของนายธนาคาร

นี่คือลักษณะสำคัญของอัลกอริทึมของนายธนาคาร:

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

ข้อเสียของอัลกอริทึมของ Banker

นี่คือข้อเสีย/ข้อเสียของการใช้อัลกอริทึมของนายธนาคาร

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

สรุป

  • อัลกอริธึมของ Banker ถูกใช้เป็นหลักในระบบธนาคารเพื่อหลีกเลี่ยง การหยุดชะงัก- ช่วยให้คุณระบุได้ว่าจะให้เงินกู้หรือไม่
  • สัญลักษณ์ที่ใช้ในอัลกอริทึมของธนาคาร ได้แก่ 1) ที่มีอยู่ 2) สูงสุด 3) การจัดสรร 4) ความต้องการ
  • อัลกอริทึมการร้องขอทรัพยากรช่วยให้คุณสามารถแสดงพฤติกรรมของระบบเมื่อกระบวนการเฉพาะส่งคำขอทรัพยากร
  • อัลกอริธึมของ Banker เก็บทรัพยากรจำนวนมากที่ตอบสนองความต้องการของลูกค้าอย่างน้อยหนึ่งราย
  • ข้อเสียเปรียบที่ใหญ่ที่สุดของอัลกอริธึมของนายธนาคารคือไม่อนุญาตให้กระบวนการเปลี่ยนความต้องการสูงสุดในขณะประมวลผล