linuxマルチタスクスレッドマルチプロセス、プロセス間通信


今晩はC++をするつもりだったが、いかんせんキャンパスネットワークがゴミで、VS 17バージョンのソフトウェアをインストールしてまだ完成していない.の(心が疲れる)
考えて、メモを書きましょう...
まず、マルチタスク処理という概念を理解しなければなりません.マルチタスク処理とは、ユーザが同じ時間に複数のアプリケーションを実行できることを意味し、ここでは、実行中のアプリケーションごとに1つのタスクと呼ぶ.よく知られているlinuxは、マルチタスクをサポートするオペレーティングシステムです.
このマルチタスクのオペレーティングシステムは、あるスケジューリングポリシーを使用して、複数のタスクの同時実行をサポートすることができます.オペレーティングシステムは、現在のタスクのタイムスライスに他のタスクをスケジュールします.特に、シングルコアのプロセッサでは、タスクが頻繁に実行を切り替えるため、複数のタスクが同時に実行されているような感じがします.
本質的に見ると、私たちの現在のシングルコアCPUはまだ同じ時間内に複数のタスクを実行することができないので、これは今でも実現できません.人が一心不乱に使えないのと似ている.ハハハ~
マルチタスクオペレーティングシステムには、通常、タスク、プロセス、スレッドの3つの概念があります.
一、任務
まず、タスクは論理概念であり、ソフトウェアが完了したアクティビティ、またはある目的を実現するための一連の操作を指す.一般的には、タスクはプログラムの実行を表します.注意!プログラムではなく、プログラムの実行です.違います.
1つのタスクに1つ以上の独立した機能を持つサブタスクが含まれる場合、この独立したサブタスクはプロセスまたはスレッドです.例えば、ゲームをすると、これは任務と見なすことができます.ゲームの中で、あなたは敵と「対戦」して、相手は血を引いて、あなたも血を引いて、実はこれは2つの独立したサブタスクだったのではないでしょうか.また、このゲームには音声、音響効果もあり、これは他のいくつかの独立したサブタスクが実行されています.
二、プロセス
プロセスとは、独立した機能を有するプログラムが、あるデータセット上で動的に実行されるプロセスであり、の各プロセスは、独自のデータセグメント、コードセグメント、スタックセグメントを有する.プロセスには、同時性、ダイナミック性、インタラクティブ性、独立性があります.
  • 同時とは、システム内の複数のプロセスが同時に同時実行可能であり、相互に干渉しないことを意味する(ここで、相互に干渉しないのは主に物理アドレスを指す).ダイナミックとは、プロセスが完全なライフサイクルとダイナミックなアドレス空間を有し、プログラムとは異なり、プログラムは死んでおり、固定されていることを意味します.インタラクティブ性とは、プロセスが実行中に他のプロセスと直接または間接的に通信する可能性があることを意味します.例えば、プロセス同期やプロセス反発などです.そこで,プロセス間の通信を実現するための特定の通信メカニズムを規定した.独立性とは、各プロセスのアドレス空間が互いに独立していることを意味し、これは前の同時性ホログラムに関連する.

  • (1)プロセスのタイプ
    主な内容は、インタラクティブプロセス、バッチプロセス、デーモンプロセスです.ここでは概念は言いません.例を挙げましょう.典型的なインタラクティブなプロセスは、shellコマンドプロセス、テキストエディタ、グラフィックアプリケーションなどです.バッチプロセスは一般的にバックグラウンドでのみ実行され、データベース検索エンジン、コンパイラのコンパイル操作があります.デーモンプロセス、この名前は聞くと「デーモン」で、バックグラウンドで実行され、どの端末にも関連していません.そのライフサイクルは最も長く、一般的にはシステムプロセスです.
    (2)プロセスの構成
    三、スレッド
    前述したように、ですが、オペレーティングシステムはプロセス間の切り替えにオーバーヘッドが大きいため、効率を向上させるために、システムは新しい概念であるスレッドを導入しました.
    スレッドには、軽量レベルのプロセスという別名があります.スレッドは、同じプロセス内の他のスレッドと共有するプロセスのメモリ領域とリソースにアクセスできます.注意!これは、同じプロセス内の複数のスレッドが物理アドレスが同じであることを示しています.スレッドも同じように同時性を持っていますが、CPUから見れば同時性ではありません.この理屈は誰もが知っていると思います.
    反発ロックスレッド制御反発ロックには、ロックとロック解除の2つの状態しかありません.
    信号量スレッド制御信号量は本質的に非負の整数カウンタであり、共通リソースアクセスを制御するために使用される.