ファイルとは


ファイルとは、ハードディスクに保存されたデータを連想しますが、カーネルとしてファイルとは、カーネルとカーネル内部の情報も含めた外部デバイスとのデータのやり取りするインターフェースということです。

そしてこのインターフェースを含めた掛かる体系をVFSと言います。スペシャルファイルなり通常ファイを読み書きする場合、まずかかるiノードを取得します。これは、カーネル下で管理しているルートからのdentryオブジェクトを捜査する事で行います。
(dentryはファイルシステム/マウントの話であって、VFSの重要な1コンポーネントに違いないのですが、ここでの話とは別ものです。)

そしてこのiノードが取得できると、かかる装置に対応するコールバック関数が取得でき、我々の馴染みとなるfile構造体にバインドされます。そして、そのファイルIDでread/writeする事で外部装置とのデータのやり取りが行えるということです。
 なお、inodeがスペシャルファイルの場合、iノードからデバイスのメジャー/マイナー番号を取得し、それに対応するコールバック関数をコールすることになります。

従って。iノードに緋もづくコールバック関数は、対応するドライバ、ファイルシステム(ext2/ext3等)の仕事であり、カーネルはその事に関与する必要はないのです。

漠然とは分かっていたものの、ある程度はその実装も見えてきた、改めてunixというかLinuxのアーキテクチャーの素晴らしさを再認識したことろです。


最終更新 2012/08/25 18:01:26 - north
(2012/08/23 17:11:49 作成)


検索

アクセス数
3689337
最近のコメント
コアダンプファイル - sakaia
list_head構造体 - yocto_no_yomikata
勧告ロックと強制ロック - wataash
LKMからのファイル出力 - 重松 宏昌
kprobe - ななし
ksetの実装 - スーパーコピー
カーネルスレッドとは - ノース
カーネルスレッドとは - nbyst
asmlinkageってなに? - ノース
asmlinkageってなに? - よろしく
Adsense
広告情報が設定されていません。