Linux本序章 - Linuxカーネルの構成 要素

記憶装置のデータにファイルという形式で一環
としたアクセスを提供
iノードと呼ばれるデータ構造で管理
ファイルアクセスに利用
ファイル記述子
標準入出力にも
ファイルアクセス高速化のためデータをメモリ
にキャッシュ
アクセスを予測して読み込む
キャッシュ機構
先行読み出し機能
iノード、ファイル名のキャッシュ
その下に様々なファイルシステムを配置
ホストに直結した二次記憶装置を利用するため
ローカルファイルシステム
ハードディスク、CD-ROM
アプリケーションが動作するための基本環境を
提供
ファイルシステム
遠隔のファイルシステムをローカルのように
ネットワークファイルシステム
仮想ファイルシステム
Linuxカーネルとは
ファイル以外のものをファイルのように
proc
擬似ファイルシステム
アプリケーションはシステムコールを使うこと
で便利なカーネル機能を呼び出せる
カーネルはイベント駆動
sysfsファイルシステム
カーネルの機能を司る機能
Linux標準ファイルシステム(だった?)
マルチタスク環境
Ext2
ブロックグループ
プロセスを管理
プロセススケジューラ
Ext2にジャーナリングを付加
耐故障性、復旧の高速化
スケジューリングの公平性を保ちつつ、スルー
プットを落とさない仕組み
Ext3
ファイルシステムの外にジャーナリング
ハードウェアからの事象を受け取る
実際の入出力を行う
割り込みに応じた処理を実行
ブロック型デバイス
割り込み処理と遅延処理
複数ページを一単位
応答性の向上
ソフト割り込みというものも存在
カーネルプリミティブ
負荷の軽減
カーネルは自身の時計を持つ
時計
割り込みを使って実装
任意のプロセス間での通信可能
アプリケーションがカーネルに要求を行う唯一
の手段
ソケット
システムコール
新規で実装
メモリの保護も実装
TCP/IP
遅延処理で最大限のスループット
複数プロセスが同一資源を捜査する場合の制御
ネットワーク
同期と排他
パケットフィルタリング
独立して動く実行を制御
CPU間で同時に参照されるデータの保護
NAT
負荷分散
Linux本序章 - Linuxカーネルの構成
複数プロセスを連携して動作
要素
親子間のみ
パイプ
プロセスの実行状態を管理
共有メモリ
プロセス間通信
セマフォ
プロセス、プロセスグループ、セッション
プロセス
fork, exec等によるプロセス作成
シグナル
プロセスに非同期事象を伝える仕掛け
スレッド
一種のプロセスとして実装
プロセス管理
System V IPC
メッセージ
FUTEX
ブートローダ
カーネルの起動
initプロセス
ページという単位で管理
Buddyシステム
隣り合った空き領域をうまく扱う
実メモリ管理
フラグメントの発生を最小限に
スラブアロケータ
メモリキャッシュの利用効率を考慮
物理的に分散したページを連続した仮想空間に
割り付ける
メモリ管理
各プロセスに独立した仮想空間
仮想メモリ管理
デマンドページング
コピーオンライト
スワップ
セマフォ
参照が発生した領域のみページ割り当て
親と子プロセスでページを共有
ページ単位で二時記憶に追い出す
スピンロック