プロセススレッドとは?
シングルスレッドやマルチスレッドという言葉を聞いたことがあるかもしれません。スレッドはプロセス内の実行単位であり、「軽量プロセス」とも呼ばれます。プロセスはそれぞれ独立したシステムリソースで動作しますが、同じプロセス内のスレッドはメモリなどのリソースを共有できます。この共有リソースモデルにより、スレッド間の通信は別々のプロセス間の通信よりもはるかに高速かつ効率的になります。
シングルスレッド vs. マルチスレッド
すべてのプロセスには少なくとも 1 つのスレッドがあります。スレッドが 1 つだけのプロセスをシングルスレッドプロセスと呼び、2 つ以上のスレッドを持つプロセスをマルチスレッドプロセスと呼びます。
例えば、最新のテキストエディタを使用する場合、それは単一のプロセスとして実行されるかもしれません。しかし、そのプロセス内では、1 つのスレッドがキーボード入力を管理し、別のスレッドがバックグラウンドでスペルチェックや自動保存を実行している可能性があります。この並行実行により、アプリケーションはより応答性が高いと感じられます。関連するタスクに対して複数のプロセスを起動するよりも、複数のスレッドを使用する方が効率的であることがよくあります。
ps コマンドでスレッドを表示する方法
実行中のプロセスとそのスレッドを調べるには、psコマンドを使用できます。psには多くのオプションがありますが、スレッドを表示する一般的な方法はmフラグを使用することです。
pete@icebox:~$ ps m
PID TTY STAT TIME COMMAND
2207 pts/2 - 0:01 bash
- - Ss 0:01 -
5252 pts/2 - 0:00 ps m
- - R+ 0:00 -
出力の解釈
上記の出力では、PID(プロセス ID)を持つ行がメインプロセスを表します。その直下にあり、PIDの代わりにダッシュ(-)が表示されている行は、そのプロセスに属するスレッドを表します。この例では、bashプロセスもps mプロセスも、リストされているメインスレッドが 1 つしかないため、シングルスレッドです。