Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ สำหรับเงื่อนไข Deadlock ฟรีในระบบปฏิบัติการ


ด้วยจำนวน P ของกระบวนการในหน่วยความจำและจำนวน N ของทรัพยากรที่จำเป็นเพื่อให้การดำเนินการเสร็จสิ้น และงานคือการค้นหาจำนวนทรัพยากรขั้นต่ำ R ซึ่งควรจัดสรรให้กับกระบวนการเพื่อไม่ให้เกิดการชะงักงัน

พี>

การหยุดชะงักคืออะไร

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

สมมติว่ามีสองกระบวนการ P1 และ P2 ในหน่วยความจำที่ P1 ต้องการทรัพยากร R1 และ P2 ต้องการทรัพยากร R2 แต่การหยุดชะงักจะเกิดขึ้นเมื่อ P1 ถือทรัพยากร R2 และรอทรัพยากร R1 ในทำนองเดียวกัน P2 ถือทรัพยากร R1 และรอทรัพยากร R2 .

โปรแกรม C++ สำหรับเงื่อนไข Deadlock ฟรีในระบบปฏิบัติการ

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

เงื่อนไขไม่มีเดดล็อก

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