Linuxのカーネルの開発に関する世界観(i-node)です。
(以下はVFSとファイルシステムの基礎技術:Linuxファイルシステム技術解説(1)(2/2 ページ) - @ITを参考に執筆しました。)
システムコールがファイル処理を要求すると、カーネルの内部でファイルオブジェクトが作成される。
この時、ファイルオブジェクトは、以下の情報と関連付けられる。
情報 | 説明 |
---|---|
ファイルディスクリプタ | プログラムからストリームを操作するための識別情報 |
dentry(dエントリ) | ディレクトリのパス情報 |
i-node | ストレージデバイス上のファイルの位置を示す |
(以下は「オペレーティングシステム―設計と理論およびMINIXによる実装」を参考に執筆しました。)
UNIXでは、ファイルはi-node(インデックスノード)と呼ばれるテーブルに関連付けられる。
i-nodeは、UNIXのファイルシステムにおいて、ファイルのディスク上の位置を知るために必要となる。i-nodeには、ファイルの属性と、ファイルのディスク上の位置を示すブロックのアドレスが含まれている。
小さなファイルの場合、i-nodeの中にファイルの位置を知るためのすべての情報があるが、大きなファイルの場合は、単一間接ブロックといって、i-nodeの中の1つのアドレスが別のブロックのアドレスとなっており、その中にさらにディスクのアドレスが入っている。
これでもまだ不十分な場合、二重間接ブロックや三重間接ブロックも使用できる。
FAT(ファイルアロケーションテーブル)については磁気テープやハードディスクを参照のこと。
MINIX本では、ファイルシステムについて詳細が記述されています。