プロセスID

各プロセスは識別子としてプロセスIDを持つ。プロセスIDはプロセス生成(fork)時にシステム内でユニークになるようにLinuxカーネルが割り当てる。またプロセスはプロセスIDの他に、プロセスグループID、セッションIDを持つ。

これらのIDは、一般に下図のような使い方をする。このようなプロセスグループの操作を行っているのはshellである。shellを親玉とするセッションを開き、その中で起動するジョブ(パイプで繋げられたコマンド群)毎にプロセスグループを作っている。このあたりの動作はshellの種類により様々である。

また、各種デーモン類は他のプロセスからの干渉を防ぐために、一般に独自のセッションを開いている。

プロセスグループID、セッションIDは自由に割り当てられるわけではなく、以下のルールに従わなければならない。

  • セッションリーダはプロセスグループリーダを兼ねる。 (セッションリーダはプロセスグループを変更できない)
  • セッションの中に複数のプロセスグループを持つ。 自分が新しいプロセスグループ(自分のpidをグループidとする)を 生成可能。またセッション内に存在するどのプロセスグループに 移動することが可能である。
img10.gif

古いBSDシステムではセッションの考え方が無く小さなセキュリティホールになっていた。ジョブコントロール機能が組み込まれる前は、プロセスグループとは現在のUNIXのセッションに相当していた。


 

(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST
1