同期プロセス-3


細い麻布語


臨界領域に入る前に、スイッチを使用中にし、臨界領域に入ります.その後、到着したプロセスは、前のプロセスが操作を完了するのを待っています.プロセスが完了すると、細い麻布語は次のプロセスに臨界領域を使用する同期信号を発行します.
他のアルゴリズムとは異なり、細い麻布言語では、ビジーを待つ必要はありません.臨界領域がロックされているかどうかを直接確認したり、他のプロセスに同期メッセージを送信したりする必要はありません.
  • は一般に細い麻布から臨界領域に入ることを試みたが,失敗した過程をblock()し,臨界領域が現れたときに再び呼び覚まし,忙しい待機による浪費を解決した.
  • Semaphore(n); // RS = n; n은 공유 가능한 자원의 수
    P(); // 임계영역을 들어가기 전 사용 중이라 변경
    /*
    Critical Section
    */
    V(); // 임계영역을 나오고 비었다고 표시함
  • Semaphore(n):グローバル変数RSをnに初期化し、RSは現在使用可能なリソースの数を格納します.
  • P():ロックを実行し、RSが0より大きい場合は1を減らし、臨界領域に入り、RSが0より小さい場合は0より大きい待機
  • V():同時にロック解除と同期を行い、RS値を1増加させ、細い麻布で待機しているプロセスに臨界領域に入るwake up()信号を送信する.
  • Counting/Binary Semaphore

  • counting細い麻布語:使用可能なリソースへのアクセス制御に使用され、細い麻布語は使用可能なリソースの数に初期化される.資源使用後は細麻魚が減少し,放出後は細麻魚が増加した.
  • バイナリ微細麻布:MUTEX,0および1の値は,マルチプロセス間の臨界領域問題を解決するために用いられる.
  • 細い麻布語の問題



    細麻布語の問題は,不適切な使用により臨界領域が保護されないことである.上図に示すように、使用者が故意に細い麻布を使用しないか、使用中にミスをしたために問題が発生する.
    1.プロセスは細い麻布を使用せず、直接臨界領域に入り、臨界領域を保護できない.
    2.2回P()を使用してwake up信号が発生しなかった.プロセス間に同期がないため、細い麻布キューで待機しているプロセスは無限の待機状態にあります.
    3.P()とV()は反対に用いられ,反発が保証されない場合には臨界領域を保護できない.
    P()、V()を使う必要がなく、自動処理がディスプレイです.

    モニタ


    モニタは、共有リソースを内部に非表示にし、共有リソースにアクセスするインタフェースのみを提供することで、リソースを保護し、プロセス間で同期します.これはシステム呼び出しと同じ概念です.

    ディスプレイの動作原理

  • の臨界領域として指定された変数またはリソースにアクセスするプロセスは、P()、V()ではなく、ディスプレイに作業要求を発行します.
  • モニタは、要求されたタスクをモニタキューに保存し、順番に処理し、結果のみをプロセスに通知します.