0

このリンクのスレッドとプロセスの違いについて、投稿された多くの回答を読みました

プロセスとスレッドの違いは何ですか?

ただし、共有メモリと分離メモリのように、それらを理解するのはまだ抽象的ですが、プログラムがあるように、スレッドがどの部分であり、プロセスがどの部分であるかを例を挙げて説明できますか?

どんな助けでも大歓迎です。

4

2 に答える 2

1

ここで比喩を使ってみましょう。

あなたは大きな図書館で一人で宿題に取り組んでいます。あなたはそれを、問題ごとに経験します。1 つの問題が終わったら、別の問題に進みます。これは、シングル スレッド、シングル プロセスのアプリケーションです。

これがかなり遅いことに気付いたので、数人の友人を呼び出します (新しいスレッドを生成します)。いくつかの問題に並行して取り組むことができ、全員が同じ部屋にいるので、お互いに簡単に話すことができるので、より多くのことを成し遂げ始めます (共有メモリ)。残念ながら、参考書は 1 冊しかなく、それをどんどん回さなければなりません (共有リソース)。これにより、グループ メンバーの一部が同時に同様の問題 (リソースの競合、デッドロック) に取り組む必要がある場合に、議論が発生します。次に、グループ メンバーの 2 人が同時に矛盾する回答を書き留めようとして、喧嘩に巻き込まれるという問題がありました (同時実行エラー)。それは、共有メモリを使用したマルチスレッドです。

町の向こう側の図書館にその教科書の別のコピーがあることに気付きました。あなたは友人の何人かを送り (新しいプロセスを forking します)、彼らがこれまでに行ったすべてのことのコピー (copy memory ) を持って、そこで仕事をさせます。今では、彼らはより多くのことを成し遂げることができ、あなたとそれほど頻繁に戦うことはありません (リソースの競合が少なくなります) が、これにはコストがかかります.高い。さらに、しばらくすると、お互いに最新の状態に保つために多くの時間を費やさない限り、彼らの答えはあなたのものとは似なくなります。これはあなたの多くの時間を消費します (同期)。それは複数のプロセスです。

于 2013-10-25T06:13:13.323 に答える
1

プログラムにグローバル変数があるとしましょう。スレッド化されたプログラムでは、すべてのスレッドが同じグローバル変数を共有するため、1 つのスレッドで変更すると、すべてのスレッドで変更されます。一方、新しいプロセスをフォークすると、グローバル変数は異なるプロセスで分離され、あるプロセスでの変更は別のプロセスに反映されません。

于 2013-10-25T06:06:40.780 に答える