C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

オペレーティングシステムのデッドロックのない状態のためのC++プログラム


メモリ内のプロセスの数がPで、実行を完了するために必要なリソースの数がNであるとすると、タスクは、デッドロックが発生しないようにプロセスに割り当てる必要のあるリソースの最小数Rを見つけることです。

デッドロックとは

デッドロックは、プログラムの実行に必要なリソースが、他のリソースの完了を待機している別のリソースによって保持されているために、メモリ内にある複数のプロセスが実行を実行できないオペレーティングシステムの状況です。

>

メモリ内に2つのプロセスP1とP2があり、P1がリソースR1を必要とし、P2がリソースR2を必要とする場合、デッドロックは、P1がリソースR2を保持し、リソースR1を待機するときに発生します。同様にP2はリソースR1を保持し、リソースR2を待機します。 。

オペレーティングシステムのデッドロックのない状態のためのC++プログラム

これは、デッドロックの原因の1つである循環待機の例です。したがって、デッドロックを防ぐには、デッドロックが発生しないようにプロセスで使用できるリソースの数を計算する必要があります。

デッドロックのない状態

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

  1. C++での十二面体の表面積のプログラム

    十二面体とは何ですか? 「十二面体」という言葉はギリシャ語に由来し、十二面体は「12」を意味し、ヘドロンは「顔」を意味します。幾何学的な12面体は、12の平面を持つ3Dプラトニックまたは正多角形です。同様に、他の図の12面体にもプロパティがあり、それらは- 20の多面体頂点 30個の多面体エッジ 五角形は5面のポリゴンであるため、12個の五角形の面 以下に示すのは12面体の図です 問題 エッジが与えられた場合、プログラムは十二面体の表面積を見つける必要があります。表面積は、与えられた図形の面が占める総スペースです。 十二面体の表面積を計算するには、次の式があります- 例

  2. QuickSort用のC++プログラム?

    クイックソートは、比較を使用してソートされていないリスト(配列)をソートするソート手法です。クイックソートは、パーティション交換ソートとも呼ばれます。 等しいソート項目の相対的な順序が保持されないため、安定したソートではありません。クイックソートは配列を操作できるため、ソートを実行するために少量の追加メモリが必要です。常に最悪の場合のパーティションを選択するわけではないことを除いて、選択ソートと非常によく似ています。したがって、選択ソートのより適切な形式と見なすことができます。 QuickSortは、最も効率的な並べ替えアルゴリズムの1つであり、配列を小さい配列に分割することに基づいていま