プロセス同期システムオペレーティングシステムM 03 P 01


これは、多機能ブログ記事シリーズであり、このシリーズでは、オペレーティングシステムの概念を説明するつもりです.このシリーズは、複数のモジュールに分かれており、これは10条から成る第三モジュールです.
この記事では、プロセスの同期の基本的な概念になります.私たちは例を見て、プロセス同期の基礎とそれがどのように達成されるかを理解しようとします.
プロセス同期:プロセスの2種類があります

  • 協調プロセス
  • この種のプロセス実行では、他のプロセスに何らかの変更が生じる.
  • 何かを共有したり共有したりすることがあるからです.変数、メモリ、バッファ、コード、リソース(CPU、プリンタ、スキャナ)である.

  • 独立プロセス
  • この種のプロセスの実行では、他のプロセスには影響しません.なぜなら、それらは何も共有しないか、何か共通点があるからです.
  • 例を見て、プロセス同期の概念を理解しようとしましょう.ここで、両方のプログラムは共有という名前の変数を共有します.int shared = 5;P 1
    int x = shared;
    x++;
    sleep(1);
    shared = x;
    
    P 2
    int y = shared;
    y--;
    sleep(1);
    shared = y;
    
  • 前述のように、私たちはUniprocessorシステムについて話しています.
  • 実行しますP1 最初にプログラムを実行することもできますP2 ファースト.
  • 我々が実行するときP1 プログラムは、共有された値をx .
  • それからx がインクリメントされ、6 から5 .
  • For 1 二番目P1 プロセスは、sleep(1); ) コマンドP1 CPUが一時停止しないようにするP2 ( CPUの詳細はP1 PCBではプロセス制御ブロックを表す.
  • この場合、文脈切り替えが可能である.
  • さあP2 を実行します.5 変数に格納されるy .
  • 現在の値y なる4 コマンド実行後y-- .
  • その後P2 また、睡眠を得る1 第二に同じ理由があったのでP1 プログラムとはsleep(1)
  • さて、CPUはP1 我々から、それは休止していました.
  • x 変数6 したがって、コードに従って、共有変数に値をロードします.
  • 共有変数の値は6 . プログラムP1 を取得します.
  • 今再びP2 が停止したsateから実行を開始します.
  • ここでの値y is 4 と同じことが共有変数の負荷を取得します.
  • 共有変数の値は4 .
  • しかし、これは間違った答えです1 値と減算で1 変数の値は変更されませんが、ここで変数の値が変更されます.
  • これは、両方のプロセスが共有しているので、協調的なプロセスですが、同期していない場合は同期しません.
  • この問題は競合条件として知られているので、我々はプロセスの同期が必要です.
  • それで、結論として、我々は2つ以上の協力的なプロセスが走るときはいつでも、レース条件として知られている問題が起こると言うことができます.
    これはすべて、プロセス同期についてでした.閉じるこの動画はお気に入りから削除されています.
    何か疑問がある場合は、質問、このトピックに関連するクエリまたはちょうど私と何かを共有したい場合は、私に連絡してください.

    📱 ミーコンタクト
    Telegram

    📧 メールを書く
    [email protected]

    🚀 その他のリンク
    GitHub
    HackerRank