プロセス識別子

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピューティングでは、プロセス識別子(別名プロセスIDまたはPID )は、アクティブなプロセスを一意に識別するために、ほとんどのオペレーティングシステム カーネルUnixmacOSWindowsなど)で使用される番号です。この番号は、さまざまな関数呼び出しのパラメーターとして使用でき、プロセスの優先順位を調整したり、プロセスを完全に強制終了したりするなど、プロセスを操作できます

Unixライクな

Unixライクなオペレーティングシステムでは、システムコールによって新しいプロセスが作成さfork() ますPIDは親プロセスに返され、以降の関数呼び出しで子を参照できるようになります。親は、たとえば、子がwaitpid()関数で終了するのを待つか、またはでプロセスを終了することができkill()ます。

特別に区別されたプロセスIDを持つ2つのタスクがあります。swapperまたはschedはプロセスID0を持ち、ページングを担当し、実際には通常のユーザーモードプロセスではなくカーネルの一部です。プロセスID1は通常、システムの起動とシャットダウンを主に担当するinitプロセスです。もともと、プロセスID 1は、技術的な手段によってinit用に特別に予約されていませんでした。カーネルによって呼び出される最初のプロセスであるという自然な結果として、このIDを持っていただけです。最近のUnixシステムには通常、「プロセス」として表示される追加のカーネルコンポーネントがあります。この場合、PID 1は、古いシステムとの一貫性を維持するために、initプロセス用にアクティブに予約されています。

そもそも、プロセスIDは通常、0から始まり、システムごとに異なる最大値まで順次割り当てられます。この制限に達すると、割り当ては300から再開され、再び増加します。macOSおよびHP-UXでは、割り当ては100から再開されます。ただし、このパス以降では、プロセスにまだ割り当てられているPIDはスキップされます。これは、システムに関する情報を抽出したり、メッセージをプロセス間で密かに受け渡したりできるという点で、潜在的なセキュリティの脆弱性であると考える人もいます。そのため、セキュリティを特に懸念する実装では、PID割り当ての別の方法を選択する場合があります。[1] MPE/iXなどの一部のシステム、メモリ内のプロセス情報カーネルページの数を最小限に抑えるために、使用可能な最小のPIDが使用される場合があります。

現在のプロセスIDは、getpid()システムコールによって、または$$シェルの変数として提供されます。親プロセスのプロセスIDは、getppid()システムコールによって取得できます。

Linuxでは、最大プロセスIDは疑似ファイルによって指定されます/proc/sys/kernel/pid_max[2]

Pidfile

一部のプロセス、たとえば、moc music playerやMySQLデーモンは、PIDを文書化されたファイルの場所に書き込み、他のプロセスがそれを検索できるようにします。

MicrosoftWindows

WindowsファミリのオペレーティングシステムではWindows API [3]GetCurrentProcessId()の機能を使用して現在のプロセスのIDを取得し、を使用して他のプロセスのIDを取得できます[4]内部的には、プロセスIDはクライアントIDと呼ばれ、スレッドIDと同じ名前空間から割り当てられるため、これら2つが重複することはありません。システムアイドルプロセスにはプロセスID0が割り当てられます。システムプロセスには、Windows2000ではプロセスID8が、 WindowsXPおよびWindowsServer2003ではプロセスID4が割り当てられます[5] WindowsNTファミリの場合GetProcessId()オペレーティングシステムの数、プロセスおよびスレッド識別子はすべて4の倍数ですが、仕様の一部ではありません。[6]

も参照してください

参照

  1. ^ comp.unix.aixよくある質問、 2008年7月21日取得
  2. ^ 「 proc-プロセス情報疑似ファイルシステム」Linuxプログラマーマニュアル、2009年12月28日取得
  3. ^ 「GetCurrentProcessId関数」Windows Dev CenterMicrosoft、2018年12月5日
  4. ^ 「GetProcessId関数」Windows Dev CenterMicrosoft、2018年12月5日
  5. ^ ルシノビッチ、マーク; David A. Solomon(2005)、「Chapter 2:System Architecture」、Microsoft Windows Internals(4th ed。)、Microsoft Press、p。 76ISBN 0-7356-1917-4
  6. ^ Chen、Raymond(2008-02-28)、「プロセスIDとスレッドIDが4の倍数であるのはなぜですか?」The Old New ThingMicrosoft