PV 取扱説明書

オペレーティングシステムでは、プロセスのデッドロックを回避するために、効果的な制御アルゴリズムである PV 操作が与えられます。PV 操作は、PV 操作を使用してプロセスの同期と相互排他を実現するときに、プロセスでデッドロックやエラーが発生しないことを保証するアルゴリズムです。学習の初めには、学生は、開始方法、セマフォの決定方法、プロセスが同期か相互排他かを決定する方法がわからないことがよくあります。解決すべき最初の問題は、PV プリミティブの意味を正確に理解することです。 。

1 PV プリミティブの意味:

P オペレーションと V オペレーションは、プリミティブと呼ばれる中断不可能なプログラム セグメントです。PV プリミティブとセマフォの概念は、オランダの科学者 EWDijkstra によって提案されました。

P プリミティブ演算の意味は次のとおりです。

(1) セマフォを 1 減らします。

(2) セマフォが 1 減らされた後もまだ 0 以上である場合、プロセスは実行を続けます。

(3) セマフォが 1 減算されて 0 未満の場合、プロセスはブロックされ、シグナルに対応するキューに入り、プロセスのスケジューリングに切り替わります。

V プリミティブ演算の意味は次のとおりです。

(1) セマフォに 1 を加算します。

(2) 加算結果がゼロより大きい場合、プロセスは実行を継続します。

(3) 加算結果が 0 以下の場合は、シグナルの待ちキューから待機中のプロセスを起こし、元のプロセスに戻って実行を継続するか、プロセスのスケジューリングに移行します。

PV 操作はプロセスごとに 1 回だけ実行でき、ペアで使用する必要がありますPV プリミティブの実行中に割り込みは許可されません。最も見落とされやすいのは、V 演算の 3 番目のステップです。加算結果が 0 以下の場合、プロセスを実行し続けるだけでなく、待機中のプロセスを待機キューから目覚めさせる必要があります。これはエラーが発生しやすくなります。

2 プロセス同期における PV 動作の意義

プロセスの同期には、プロセスの相互排他とプロセスの同期の 2 つの側面が含まれており、オペレーティング システムが共有リソースを管理する手段です。P 操作と V 操作を使用してプロセス同期の問題を解決する場合は、まず問題がプロセスの相互排他なのか、プロセスの同期なのか、それとも相互排他と同期の混合問題なのかを判断する必要があります。

相互排他では、P 操作の意味は、クリティカル セクションに入ってリソースを申請できるかどうかを決定することです。V 操作の意味は、クリティカル セクションから出てリソースを解放することです。セマフォの初期値は通常、利用可能なリソースの数。

同期において、P 操作の意味は送信された情報や通知を受け入れて実行可能であることを示し、V 操作の意味はメッセージや通知を送信して相手に知らせることです。

また、PV 操作はペアで表示される必要があります。プロセスの相互排他問題では、同じプロセス内でペアで表示される必要があります。プロセスの同期の問題が発生した場合は、ペアで表示されますが、P 操作はメッセージを待機しているプロセス内にある必要があります。 . . の場合、V オペレーションはメッセージの送信処理中である必要があり、P オペレーションのプロセスは、V オペレーションを含むプロセスがメッセージを送信した後にのみ実行できます。

セマフォは整数です。セマフォが 0 以上の場合、同時プロセスに使用できるリソース エンティティの数を表します。ただし、セマフォが 0 未満の場合、使用を待機しているプロセスの数を表します。クリティカルセクション。

3 PVを実現するための4つのステップの方法

最初のステップは、プロセスの数とプロセス間の関係を決定することです。このステップは非常に重要です。このステップを正確に理解していないと、次のことが間違ってしまいますプロセス数は主に、質問で PV 制御が必要なイベントの数に依存し、プロセス数は次のようになります。プロセス間の関係は、主にプロセスの同期またはプロセスの相互排他を指し、プロセスにおける PV 操作の重要性を決定します。プロセスの相互排他は、多くの場合、プロセス間の逐次的な進行ですが、プロセスの同期は、複数のプロセス間の共同作業です。同時実行性があります。      

2 番目のステップはセマフォの数を設定することです。通常、プロセス相互排他ではセマフォは 1 つだけですが、同期ではプロセス間の同期関係に応じてセマフォの数を設定します。複数の場合もあります。

3 番目のステップは、ワークフロー チャートを作成することです。フローチャートが正確かどうかは、質問を明確に理解していることを最もよく反映するものであり、PV の運用を実現するための重要なステップでもあります。ワークフロー チャートが正確であればあるほど、作業は簡単になります。最終的なアルゴリズムを実装します。

4 番目のステップは、フローチャートに従って PV 動作を変換し、セマフォに初期値を割り当てることです。前のステップが非常に詳細で正確であれば、このステップは主に個人のプログラミング基盤に依存します。さまざまな方法で実装できます。自分の言語をよりよくマスターして使用するのが最善です。

いくつかの典型的な例を分析し、プロセス同期における「4 段階の方法」の実際の応用を理解しましょう。

(1) PV プリミティブを使用してプロセスの相互排他を実現します。

    次の例は、プロセスの相互排他的な実装を示しています。 食事の哲学者の問題

4 人の哲学者が円卓の周りで考えたり、食事をしたりしています。各人は考えているときは手に何も持っていません。食事をするときは、各人がナイフとフォークを必要とします。テーブル上の配置は写真のとおりです。 . ナイフとフォークが 2 つあり、それぞれ隣接する 2 人が使用します。セマフォと PV 操作を使用して、4 人の哲学者の同期プロセスを説明してください。

最初のステップは、プロセスの数とその作業内容を決定することです。この例には、哲学者ごとに 1 つずつ、計 4 つのプロセスが含まれています。隣接する 2 人の哲学者がナイフまたはフォークを奪い合うため、ナイフまたはフォークが重要なリソースとなるため、相互排他的な関係になります。

2 番目のステップは、相互に排他的なセマフォの数、意味、および PV 操作を決定することです。相互に排他的な4つのセマフォをfork1、fork2、knife1、knife2に設定し、初期値はいずれも「1」で、それぞれfork1、fork2、nife1、knife2が使用可能であることを示します。

3 番目のステップは、ワークフロー図を描くことです。一般に、相互排除問題における各プロセスのワークフローは基本的に同じであるため、どちらかのプロセスのフローチャートを描画するだけで済みます。

4 番目のステップでは、フローチャートに従って対応するアルゴリズムを作成します。相互排他関係を C ライクな言語で記述します。相互排他関係は次のように記述されます。

プロセスが相互に排他的であるかどうかを判断する鍵は、プロセスがパブリック リソースを共有しているかどうかを確認することです。パブリック リソースはセマフォに対応します。セマフォの値を決定することが重要なポイントであり、それは利用可能なリソース エンティティの数を表します。

(2) PV プリミティブを使用してプロセスの同期を実現します。

プロセス相互排他とは異なり、プロセス同期中のセマフォは、同時プロセスのグループ全体ではなく、制御プロセスと制限されたプロセスのみに関連するため、セマフォはプライベート セマフォと呼ばれます。PV プリミティブを使用してプロセス同期を実現する方法は、まずプロセス間の関係が同期であることを確認し、同時プロセスごとにプライベート セマフォを設定し、次にプライベート セマフォに初期値を割り当て、最後に PV プリミティブとプライベート セマフォを使用します。セマフォ規定 各プロセスの実行順序。      

もう 1 つの質問は、P プリミティブが V プリミティブの前になければならないかということですが、答えはノーです。例を見てみましょう:

例 2: バスに設定した場合、運転手と車掌のアクティビティは次のとおりです。 運転手: 車両を始動し、通常通りに運転し、停留所で停止します。車掌:乗客の乗車、ドアの閉め、切符の販売、ドアの開閉、乗客の降車を行います。PV操作で制御します。

分析します:

ステップ 1: プロセス間の関係を決定します。車掌は運転士が駅に停車した後にのみ仕事をすることができます。同様に、運転士は車掌がドアを閉めた後にのみ仕事をすることができます。つまり、運転士と車掌の間には同期関係が存在します。

ステップ 2: セマフォとその値を決定します。運転士と車掌は相互に通信する必要があるため、運転者プロセスは運転者が動作できるかどうかを判断するためのプライベート セマフォ S1 を設定します (初期値は 0)。車掌プロセスは、駐車するかどうか、および車掌がドアを開けることができるかどうかを判断するために使用されるプライベート セマフォ S2 を設定します (初期値は 0)。

ステップ 3: ワークフロー図を描きます。この質問のフローチャートには一貫性がありません (アルゴリズムに反映されています)。

ステップ 4: フローチャートに従って、対応するアルゴリズムを作成します。

成し遂げる:

(3) PV プリミティブを使用して、プロセスの同期と相互排除の混合問題を実現します。上記の分析により、プロセスの同期と相互排除の混合問題を考慮することは難しくありません。混合問題では、どれが相互に排他的なセマフォでどれが共有セマフォであるかを区別するだけで済み、残りは 4 段階の方法に従って実行できますが、ここでは詳しく説明しません。 

転載: https://www.gwng.edu.cn/xkxy/2020/0729/c1094a48243/page.htm 

おすすめ

転載: blog.csdn.net/modi000/article/details/132497558