レガシーガジェット研究所

気になったことのあれこれ。

Linux Kernel ~ ext2ファイルシステム ~

概要

「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelx86とする。

今回はrxt2のファイルシステムについて見ていく。

ext2

ext2は1994年に導入されたファイルシステムLinuxにとってネイティブのファイルシステムである。ext2の特徴としては以下のようなものが挙げられる。

  • ファイルシステム作成時に扱うファイルの平均サイズの予測からブロックサイズを1~4KBの間で選択可能。
  • ファイルシステム作成時に扱うファイル数の予測から一定サイズあたりのiノード数を選択可能。
  • ファイルの断片化を可能な限り防ぐためファイルの拡張のための隣接する領域を予め確保する。
  • シンボリックリンクの文字列が60文字以下の場合にデータブロックではなくiノードにパス名を保存する。
続きを読む

Linux Kernel ~ 仮想ファイルシステムの操作 ~

概要

「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelx86とする。

今回はプロセスの仮想ファイルシステム(VFS)の操作について見ていく。

続きを読む

Linux Kernel ~ 仮想ファイルシステムのデータ構造 ~

概要

「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelx86とする。

今回はプロセスの仮想ファイルシステム(VFS)のデータ構造について見ていく。

VFSの役割

VFS(Virtual File System)はUNIXファイルシステムの全てのシステムコールを処理し、複数種類のファイルシステムへの共通インターフェースを提供する。

続きを読む

Linux Kernel ~ プロセスアドレス空間 ~

概要

「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelx86とする。

今回はプロセスのアドレス空間について見ていく。

メモリ割り当ての指針

カーネルからメモリ要求は最優先とし即座にメモリ割り当てを行い、且つ当該処理にバグが含まれないことを前提にエラーへの対策は必要以上には行わない。

一方でユーザプロセスからのメモリ要求は緊急でないとし、リニアアドレスに対するアクセス権のみを付与し割り当ては遅延させる。実際にアクセスがあるまでページフレームの割り当てを行わず、アドレッシングエラーなども必ず補足する。

続きを読む

Linux Kernel ~ メモリ管理 スラブアロケータ編 ~

Linux Kernelを無限に読む会 ~ メモリ管理 Ver 2 ~

概要

「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelx86とする。

引き続きはメモリ管理について見ていく。

概要

メモリ割り当てには基本的な単位としてページフレームを採用しており、数十バイトや数百バイトのメモリ割り当ての場合には無駄が生じてしまう。代替案として単一のページフレーム内に小さなメモリ領域を複数割り当てられるようにした。

続きを読む