差分

移動先: 案内検索

プロセス管理

504 バイト追加, 2008年11月20日 (木) 13:44
/* プロセス・タスク・スレッド */
ここでの説明では実行実体の単位のことをプロセスと呼んでいます。厳密に定義をすると次のようになります。ここまでの説明では実行実体の単位のことをプロセスと呼んでいますが、これは今時のUNIXから見て古典的な実行単位です。今は、タスクとスレッドという単位で実行単位を考えるようになっています。タスク・スレッド・プロセスを定義をすると次のようになります。  * スレッド実行に必要なすべてのリソースのすべてを指してタスク
* リソース中でCPUリソースとして処理の流れを作るものをスレッド
* スレッド実行に必要なすべてのリソースのすべてを指してタスク
* 1つのタスクに1つのスレッドしかないものをプロセス
スレッドやタスクの考え方(と、実装)は80年代にUNIXに入って来た、UNIXの歴史から見ると、わりと新しい技術です。タスクは複数のスレッドを持つことができます。スレッドに関しては後に説明しますが、スレッドは80年代にUNIXに入って来た、わりと新しい技術です。特にタスクが1つのスレッドしか持たない時、これはUNIX の伝統的な実行実体のプロセスと同等の意味を持ちます。ここでの説明の範囲では「プロセス=タスクのこと」と考えても間違いではありません。UNIXが生まれた当時の処理の粒度と今のLinuxでの処理の粒度は違うので、これから先はプロセスという言葉は廃れてタスクという言い方が主流になるかも知れません。タスクが1つのスレッドしか持たない時、これはUNIX の伝統的な実行実体のプロセスです。ですから、単純にプロセスと呼んでも構わないですし、また同時に(ここまでの説明の範囲では)「プロセス=タスクのこと」と考えてもかまいません。タスクは複数のスレッドを持つことができます。このような状態の場合は、プロセスと呼ぶよりタスクと呼ぶ方が適切でしょう。UNIXが生まれた当時の処理の粒度と今時のUNIXでの処理の粒度は違うので、これから先はプロセスという言葉は廃れてタスクという言い方が主流になるかも知れません。
;補足: 複数のプロセスが動くことをマルチタスクと呼びます。なんでマルチプロセスではないのかというと60年代に最初にマルチタスクが出来たオペレーティングシステムでは実行実体の単位をタスクと呼んでいたからです。なのでマルチタスクと呼びます。複数のプロセスが動くことをマルチタスクと呼びます。なんでマルチプロセスではないのかというと60年代に最初にマルチタスクが出来たオペレーティングシステムでは実行実体の単位をタスクと呼んでいたからです。なのでマルチタスクと呼びます。タスクという用語は使われる場面で微妙に意味が違うので注意しましょう。
=== プロセスの状態 ===
匿名利用者