操作系统中无死锁条件的C++程序


给定内存中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

更新于:2020年7月9日

4K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告