Procfs

procfs: Unix系システムにおけるプロセスファイルシステム



概要


procfs(Process Filesystem)は、UnixおよびUnix系システムに搭載されている擬似ファイルシステムです。このシステムは主にプロセスに関連したカーネル情報へのアクセス手段を提供し、物理的なファイルシステムとは異なり、ディスクスペースを消費することはありません。procfsは通常、システム起動時に`/proc`ディレクトリとしてマウントされ、LinuxSolaris、BSD、AIXQNXなどの多くのUnix系オペレーティングシステムで利用可能です。特にLinuxにおいては、プロセス情報だけでなく、他のシステムデータも扱えるように拡張されています。

歴史


procfsの歴史は、1984年にTom J. KillianがVersion 8 Unix上で実装したことに遡ります。彼はUSENIXで発表した論文「Processes as Files」で、このシステムの目的や設計理念を示しました。続いて、Roger FaulknerとRon GomesはV8のprocfsをSVR4に移植し、1991年にはUSENIXで「The Process File System and Process Model in UNIX System V」と題した論文を発表しました。この移植は`ps`コマンドの実装に用いられ、当初は限られたシステムコールのみがサポートされていました。

Plan 9では、procfsがさらに進化を遂げました。こちらでは、機能が複数のファイルに分割され、よりファイルシステムらしい構造が実現されました。4.4BSDの実装にもサブディレクトリが設けられ、プロセスごとの詳細情報にアクセス可能となりました。Solaris 2.6でも同様の機能が追加されました。

Linuxにおけるprocfsの役割


Linuxにおいては、procfsは`/proc/PID`といったディレクトリで動作中のプロセスに関する情報を提供します。具体的には、プロセスが起動した際のコマンドラインやカレントディレクトリ、環境変数、オープンしているファイルの情報などが含まれます。特に`/proc/PID/stat`や`/proc/PID/status`は、プロセスの状態やメモリの使用状況についての詳細なデータを提供します。

以下は、Linuxにおけるprocfsの主要なファイルとその内容です:
  • - /proc/PID/cmdline: プロセス起動時のコマンドライン文字列
  • - /proc/PID/cwd: 現在のディレクトリへのシンボリックリンク
  • - /proc/PID/environ: 環境変数の一覧
  • - /proc/PID/exe: 元の実行ファイルへのリンク
  • - /proc/PID/fd: オープンしているファイル記述子のリンク
  • - /proc/PID/maps: 仮想アドレス空間のマッピング情報

これらの情報は、`pgrep`や`ps`といったユーティリティを用いて取得できます。さらに、procfsではシステムに関するさまざまな情報も提供しており、Linuxカーネル2.6以降ではこれらの多数が別の擬似ファイルシステムである`sysfs`に移行しています。

BSD系システムにおけるprocfs


BSD系オペレーティングシステムにおいては、FreeBSDやOpenBSDはデフォルトではprocfsをマウントしていません。しかし、NetBSDやDragonFlyBSDではprocfsがマウントされており、ファイル構造はLinuxとは異なります。これにより、それぞれのシステムにおけるプロセス管理方法に個性が現れています。

結論


procfsは、Unix系システムにおけるプロセスの監視や管理、システム情報の取得において不可欠な要素です。この擬似ファイルシステムは、システムの透明性を高め、開発者がより効果的にシステムを操作および最適化できるように支援しています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。