Linux

  
で同時に実行されている複数のファイルの実装プロセス

顧客が異なるユーザーに同じファイルを操作するように要求したときに、システムが最近この問題を処理する方法。この記事では、Linux上での「同時に」同じファイルを操作する複数のプロセスのプロセスを簡単に紹介します。ファイルa.txtに作用する3つのプロセスA、B、およびCがあるとします。プロセスはファイルの最初の100文字までを読み取り、プロセスBはファイル内のaa文字を含む行を読み取り、Cはa.txtファイル - ABC - に書き込む必要があります。 3つのプロセスの開始順序はA、B、およびCです。

[正文]

仮想条件

1.1 3つのプロセス
1、ファイルa.txtを操作するための3つのプロセスA、B、Cがあるとします。 2、ファイルの最初から100文字までを読み取る処理、3、ファイル内のaa文字を含む行を読み取るB、4、a.txtファイルに書き込むC、ABC H2> 1.2プロセスの起動順序
1. 3つのプロセスの起動順序はA、B、Cです。

2つのプロセス

2.1プロセスの起動
プロセスAのコード実行手順は次のとおりです。

  1. ファイルa.txtを開く
  2. 条件に該当するファイルの内容を読み取る

    プロセスAが起動したとき、ファイルa.txtを実行したとき。管理テーブル(file_table [64])はプロセスAのポインタテーブルをa.txtファイルのiノードに関連付け、プロセスAにファイルa.txtを操作する権限と機能を与えます。対応する条件のファイル内容の読み取りを実行すると、システムはハードディスクからファイルa.txtをバッファにロードします。このプロセスでは、カーネル対応関数は「アイドル」のバッファスペースを適用し、ハードディスクからバッファスペースにファイルa.txtをロードする。ロードには時間がかかるので、バッファスペースはロックされる。プロセスAは、ファイルの内容を読み取る前にロードが完了するのを待たなければなりません。この時点で、プロセスAは中断され、「中断不可能な待ち状態」に設定され、バッファプロセスはプロセスAへのキューヘッドを待つ。

    2.2 Bプロセスの起動
    プロセスBのコード実行手順は以下のとおりです。

    1. ファイルを開くa.txt
    2. 該当する条件の内容を読む

      Bの場合プロセスが開始したら、実行します。'ファイルa.txtを開きます。'同様に、ファイル管理テーブル(file_table [64])はプロセスBのポインタテーブルをa.txtファイルのiノードに関連付け、プロセスBにファイルa.txtを操作する権限と機能を与えます。プロセスによってファイルに対する操作が異なるため、このプロセスをもう一度実行する必要があることに注意することが重要です。ただし、Aプロセスの実行時にファイルa.txtのiノードが見つかったため、プロセスBは、iノードをトラバースしてa.txtを見つけるiノードを実行する必要はありません。対応する条件のファイル内容の読み取りを実行するとき、システムはロードされる必要があるデータバッファがハッシュテーブル管理構造を通して既に存在しているので、データはもはやハードディスクからバッファにロードされない。代わりに、バッファーへの参照数が1つ増え、合計は2です。 (3つのプロセスが同時にファイルを操作しているため、時間が非常に短いため、この時点ではファイルa.txtのデータはまだハードディスクからバッファをロード中です)この時点で、プロセスBも待機する必要があります。ファイルの内容は、ロードが完了した後にのみ読み取ることができます。したがって、プロセスBも中断され、「中断不可能な待ち状態」に設定され、バッファプロセスはキューヘッドがプロセスBになるのを待ち、その後プロセスAが続く。

      2.3 Cプロセスの起動
      プロセスCコードの実行手順は次のとおりです。

      1. a.txtファイルを開く
      2. 該当するファイルの内容を書き込む

        Cの場合起動後、'を実行します。ファイルa.txtを開きます。'同様に、ファイル管理テーブル(file_table [64])はプロセスCのポインタテーブルをa.txtファイルのiノードに関連付け、プロセスCにファイルa.txtを操作する権限と機能を与えます。 Bプロセスと同様に、Cプロセスも同じプロセスを経て「無停電待機状態」に入り、このバッファ待ち行列内の待ち行列の先頭に位置し、その後にそれぞれプロセスB、Aが続く。

        2.4プロセスのウェイクアップ
        この時点で、プロセスA、B、Cは、データがロードされた後にバッファがロック解除されるのを待機している状態、つまり中断状態にあります。データがロードされた後、ハードディスク生成データ送信が完了し、システムはシステムデータがロードされたことを知らせる。システムは割り込みを受け取ると、バッファのロックを解除してキュー内のプロセスを起動します。この時点で、システムはチームの先頭でプロセスCを起動し、Cプロセスを準備完了状態に設定します。その後、「データの書き込み」コードの実行を開始し、タイミングを開始して、Bプロセスを準備完了状態に設定します。タイミングが終了すると、Cプロセスは完了して終了します。 Bプロセスは「Read Data」コードの実行を開始し、タイミングを開始し、Aプロセスを準備完了状態に設定します。タイミングが終わると、Bプロセスは完了して終了します。 Aプロセスは実行を開始し、コードを読み取り、モデルのタイミングを開始し、キューをNULLに設定します。時間が経過すると、Aプロセスは完了して終了します。この時点で、3つのプロセスすべてが完了しています。

        Three Summary
        上記のプロセスから、プロセスの起動順序はA、B、Cですが、最後にデータがバッファにロードされたときに、3つのプロセスが同時に1つのファイルを操作する場合がわかります。ゾーンが完了した後の実行順序は、チームの最後までの待機キューのキューヘッド、つまりC、B、およびAに基づいています。 ABCの3つのプロセスの実行後、データの変更は実際にはバッファ内にのみ存在し、すぐにはハードディスクに書き込まれませんが、バッファデータは後続の更新プロセスを通じてハードディスクに同期されます。スペースが限られているので、ここでは紹介しません。

Copyright © Windowsの知識 All Rights Reserved