プロセスID

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

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

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

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

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

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


 

(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST
1