全体のコンセプト:プロセスは、オペレーティング・システム・リソース割り当ての基本単位であり、スレッドがタスクスケジューリングとの実行の基本単位であります
本質的に:プロセスとスレッドは、時間の記述であるCPU時間の作業が、異なる粒子サイズを記述することです。
私はプロセスについてお話しましょう:
背景:
コンピュータ・システム上で①:(例えば、グラフィックカード、光学ドライブ、キーボード、GPSなどの周辺機器など)CPU + RAM +さまざまなリソース私達のコンピュータを構成しているが、コンピュータの動作は、実際にはCPUと関連するレジスタとRAMの間の問題です。
②事実1:CPU速すぎて、レジスタは唯一、彼の足音でRAMをキャッチすることができ、他方は各バスデバイスに掛かって完全に提供されます。場合は、マルチタスクの実行、CPUは常にこれらのタスクを実行することになります。
事実2③:CPUのタスクを実行するとき、あなたはプログラムのタスクコンテキストをロードし、その後、実行し、そして最後に(次回のための作業負荷を実行し続けるために)アプリケーション・コンテキストを保存する必要があります。
要約すると:プロセスは、コンテキストスイッチは、プログラムの実行時間の合計= CPU + CPUローダーコンテキスト+ CPUは、プログラム格納されたプログラムのコンテキストを実行含んでいます
スレッドに加えて:
鮮やかなメタファー:粒径のプロセスが多すぎると、記憶され、転送コンテキストがあるたびに、リコール。私たちは、コンピュータ上で実行されているソフトウェアになぞらえプロセスを置く場合で実行されるソフトウェアは、ロジックによって実行することができない、そして、実際には、Bに分け、プログラムAを実施したいと、複数の分岐および複数のプログラムセグメントが存在しなければなりません、C、等の複数のブロックの組み合わせ。この特定の実装になることができる:手順A CPU =「CPU負荷コンテキストを与えるために、サブパラグラフは、サブパラグラフAはコンテキストA CPUを保存するために、最後に実行され、その後C、パラグラフBを実行し、プログラムAの実行を開始し、。
オーバーヘッドの点で:各プロセスは、より大きなオーバーヘッドを有するプログラムの切り替え、自身のコードとデータ空間(アプリケーション・コンテキスト)を有し、スレッドが軽量プロセスとして見ることができる、スレッドがコードおよびデータ空間の同じタイプを共有します各スレッドは、スレッドのオーバーヘッドとの間の小さなスイッチを、独自の独立した実行時スタックとプログラムカウンタ(PC)を有しています。
環境:同時にオペレーティング・システム内の複数のプロセス(プログラム)を実行し、(膜たびに1つだけ実行スレッドを有し、CPUスケジューリングによって)実行し、同様の処理(プログラム)内の複数のスレッドが同時に存在します
メモリ割り当て:システムは、異なるメモリ空間を実行している各プロセスに割り当てられると、スレッド、CPUに加えて、システムはしないであろう(そのリソースから使用されるリソース・スレッドのプロセスに属する)は、スレッドのためのメモリを割り当てますあなたは、リソース、スレッドグループを共有することができます。
包含関係:プロセス内の複数のスレッドが存在する場合、プロセスは線ではなく、一緒にライン(スレッド)の複数が完了するまでの手順を実行し、コンテナのスレッドであり、スレッドは、プロセスの一部であり、それはまた、スレッドとしても知られています軽量プロセスまたは軽量プロセス。
----------------
参考文献:
1プロセスとスレッド(要約)との間の主な違いをhttps://blog.csdn.net/kuangsonghan/article/details/80674777
2つのスレッドとプロセスされているとの違いは何ですか? - zhonyong答え - 知っているほとんどhttps://www.zhihu.com/question/25532384/answer/81152571