diary)この広告は、90日以上更新していないブログに表示しています。v6のファイルシステムを見ていきます。前回はブロックデバイスを中心に見ていきました。今回はコアメモリを中心に見ていきます。コアメモリ中のファイル関係のデータ構造inode構造体アクティブなファイルのinodeなどはコアメモリ中のinode[]構造体の配列(5659行目で定義)に格納されます。ブロックディスク上で扱われるinode構造体の定義(5605行目で定義)と中身が少し異なりますので注意してください。inode構造体はi_countという参照カウントをもっており、このカウントが0だった場合、そのinodeエントリは割りあてられていない空きエントリとみなされます。file構造体ファイルをオープンすると、5507行目で宣言されているfile構造体の配列にエントリが追加されます。WRITEにそれぞれ対応したオフセット(読み書き中のバイト)を持ちます。file構造体は対応したinodeへのポインタを持ちます。u.u_ofileu.u_ofile配列は、そのプロセスが開いているファイル(fileのエントリ)へのポインタを格納します。)を見るとわかりますが、子プロセスにはu.u_ofile[]の情報は引き継がれます(1876-1878行目)。親が開いているファイル情報は、子にそのまま引き継がれます。上記を絵でまとめるとこんな感じです。fileとinodeを分けているので、複数のプロセスがある一つのファイルに対し、独立した読み書きオフセットと読み書きモードを持つことができます。これにより、複数ファイル独立にファイルの読み書きを行いやすくなります。ファイルの読み込み、ファイルへの書き込みユーザプロセスはシステムコールを使ってファイルからユーザ空間にデータを読み込み、ユーザ空間からファイルへデータを書き込みます。ファイル関係のシステムコールについては、後のエントリで詳細をまとめる予定です。終わりに今回はコアメモリ中でのファイル周りのデータ構造を解説しました。次回はブロックデバイスからコアメモリへのinode割り当てを解説する予定です。当初はLions本に従って解説をする予定でしたが、Lions本のファイルシステム周りの解説がわかりづらく感じたので、自分なりにまとめていくことにしました。Physics月別アーカイブはてなブログをはじめよう!takahiroxさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。