Procfs
出典: フリー百科事典『ウィキペディア(Wikipedia)』
procfsは、Process Filesystem の略で、UNIX系システムにある擬似ファイルシステム。主にプロセスに関するカーネル情報にアクセスする手段を提供する。procfs は実際のファイルシステムではないので、ディスクスペースを消費しないし、メモリもごくわずかしか消費しない。
通常、procfs は /proc ディレクトリにマウントされる。Solaris、BSD、Linuxなどでサポートされ、特にLinuxではプロセス関連以外のデータにも拡張されている。
[編集] 歴史
Tom J. Killian は Version 8 Unix 上に /proc
を実装し、1984年6月、USENIXで Processes as Files という題の論文を発表した。これは、プロセスのトレースを行う ptrace システムコールを置き換える目的で設計された。
Roger Faulkner と Ron Gomes は V8 /proc
を SVR4 に移植し、1991年1月、USENIX で The Process File System and Process Model in UNIX System V という論文を発表した。この procfs は ps
コマンドの実装に使える程度の機能を有するようになったが、procfs内のファイルには read()
、write()
、ioctl()
といったシステムコールしか使えなかった。
Plan 9で実装された procfs は V8 のものよりずっと進化していた。V8 の procfs では、あるプロセスに関する機能はひとつのファイルへの操作で実現されていた。Plan 9 は、それを複数のファイルに機能毎に分割し、procfs をよりファイルシステムらしくした。
4.4BSDで実装された procfs はプロセス毎のサブディレクトリがあり、プロセスのメモリ、レジスタ、現在ステータスにアクセスすることができた。Solaris 2.6 の procfs もプロセス毎のディレクトリがあり、制御用の ctl ファイルが用意され、トレースやプロセス毎の操作ができるようになっていた。
[編集] Linux
Linux では、procfs は動作中プロセスに関する情報を /proc/PID で提供し、以下のような機能も備えている。
- 現在のプロセスへのシンボリックリンク(/proc/self)
- ハードウェア、カーネル、モジュール構成/設定に関する情報
- 動的変更可能なカーネルオプションへのアクセス(/proc/sys)
- システム全体に関する情報。例えば
/proc/meminfo
はメモリ統計情報を提供する。
procfs を使用する Linux 上のユーティリティは procps パッケージに収められており、利用するには procfs が /proc にマウントされていなければならない。
procfs は機能をカーネルモードからユーザーモードに移すことに重要な役割を果たしている。例えば GNU版の ps
コマンドは全てのデータを procfs から得ている。
Linuxカーネル 2.6 では、procfs のプロセスに関わらない部分が別の擬似ファイルシステム sysfs に分離移動されている(/sys
にマウントされる)。
カテゴリ: UNIX | OSのカーネル | OSのファイルシステム