PAK12_10naname500

プロセスとスレッドの違い

linux上のアプリケーションはプロセスとして起動されます。

プロセスを管理することはOS(ここではlinux)の重要な役割であり、プロセスのスケジューリング、割り込み、シグナル制御、優先度の制御、プロセスの切り替え、状態管理、メモリ管理などを行っています。

プロセスとは何でしょう?

プロセスはCPU上で実行されるもので、タスクを完了するために、Linuxのカーネルが制御するあらゆるリソースを使うことができます。

スレッドとは何でしょう?

スレッドは1つのプロセスから生成される実行単位です。同じプロセスから並行でスレッドを起動させることができます。

スレッドはメモリや、オープン中のファイルなどのリソースを共有することができます。同じアプリケーションのデータにアクセスすることができるのです。

プロセスはリソースを共有することができないので、これは大きな違いです。

言い換えると、スレッドは同じタイミングで、共有しているリソースに変更をかけるべきではないことも意味しています。

そのために、ロックをかけたり、シリアルに動かしたりという制御をするのはアプリケーションの責任ということになります。

プロセスとスレッドの違い。

上記で少し触れましたが、プロセスはリソースを共有することができません。そのため、プロセスを起動させるには、リソースをコピーすることが必要になってきます。

その分、性能の観点からはスレッドを起動するほうが、効率的、ということになります。

一方、プロセスとスレッドは、スケジューリングの観点からは同じような特徴を持っていますので、カーネルからは同じように扱われます。

process-thread

+++

参考:Linux Performance and Tuning Guidelines

Similar Posts:


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>