ด้วยจำนวน 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