ด้วยจำนวน P ของกระบวนการในหน่วยความจำและจำนวน N ของทรัพยากรที่จำเป็นเพื่อให้การดำเนินการเสร็จสิ้น และงานคือการค้นหาจำนวนทรัพยากรขั้นต่ำ R ซึ่งควรจัดสรรให้กับกระบวนการเพื่อไม่ให้เกิดการชะงักงัน
พี>การหยุดชะงักคืออะไร
การหยุดชะงักคือสถานการณ์ในระบบปฏิบัติการที่หลายกระบวนการที่อยู่ในหน่วยความจำไม่สามารถดำเนินการได้ เนื่องจากทรัพยากรที่จำเป็นสำหรับการดำเนินการโปรแกรมถูกยึดไว้โดยทรัพยากรอื่นซึ่งกำลังรอทรัพยากรอื่นเพื่อให้เสร็จสิ้น
สมมติว่ามีสองกระบวนการ P1 และ P2 ในหน่วยความจำที่ P1 ต้องการทรัพยากร R1 และ P2 ต้องการทรัพยากร R2 แต่การหยุดชะงักจะเกิดขึ้นเมื่อ P1 ถือทรัพยากร R2 และรอทรัพยากร R1 ในทำนองเดียวกัน P2 ถือทรัพยากร R1 และรอทรัพยากร R2 .
นี่คือตัวอย่างของการรอแบบวงกลมซึ่งเป็นสาเหตุหนึ่งของการชะงักงัน ดังนั้น เพื่อป้องกันการชะงักงัน เราจำเป็นต้องคำนวณจำนวนทรัพยากรที่ควรมีสำหรับกระบวนการเพื่อไม่ให้เกิดการชะงักงัน
เงื่อนไขไม่มีเดดล็อก
R>=P * (N - 1) + 1
โดยที่ R คือทรัพยากร P คือกระบวนการ และ N คือความต้องการของกระบวนการ
ตัวอย่าง
Input-: processes = 5, need = 3 Output-: minimum required resources are: 11 Input-: Processes = 7, need = 2 Output-: minimum required resources are: 8
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้ −
- ป้อนจำนวนกระบวนการและความจำเป็นของกระบวนการในหน่วยความจำ
- ใช้สูตรที่กำหนดเพื่อคำนวณจำนวนทรัพยากรที่ต้องการ
- แสดงผล
อัลกอริทึม
START Step 1-> declare function to calculate the minimum number of resources needed int min_resource(int process, int need) declare int calculate = 0 set calculate = process * (need - 1) + 1 return calculate Step 2-> In main() Declare int process = 5 and need = 3 Call min_resource(process, need) STOP
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; //calculate minimum number of resources needed int min_resource(int process, int need) { int calculate = 0; calculate = process * (need - 1) + 1; return calculate; } int main() { int process = 5, need = 3; cout << "minimum required resources are : " <<min_resource(process, need); return 0; }
ผลลัพธ์
minimum required resources are : 11