差分

移動先: 案内検索

カーネルの構造と機能

2,556 バイト追加, 2007年10月18日 (木) 04:57
/* システムコール */
;補足: 少なくとも、カーネルに関しては、何でもかんでも組み入れて肥大化していく例は見当たりませんが、一般的なアプリケーションに関してはよく見られる傾向です。もちろん"Small is Beautiful"という言葉が好きなUNIX文化圏では、基本的なレベルに分割されるべきソフトウェアが肥大していくのはよくない傾向であると考えられています。
 
 
=== カーネルの構造 ===
 
カーネルの構造を考えるために、カーネルが提供している主要な機能を書き出してみます。この分類はカーネルのソースコードレベルで分類しているのを参考にしています。個々のソースコードファイルは機能別に分割されており、さらにディレクトリは大きなレベルでの機能の違いで分類されています。これを分類の指針とするとかなり判りやすくなります。
 
個々の説明は後の章に譲るとして、ここでは概観と個々の機能の簡単な説明をします。
 
;補足: ここに書き出しているものがカーネルのすべての機能というわけではなく、この授業用テキストで取り上げる注目点をリストアップしています。
 
* プロセス管理
** プロセス生成・消滅
** スケジュラ
 
* ファイルシステム
** 名前空間管理
** VFS
** ext2, etc3, JFS, ReiserFS, XFS, ISO9660...
** ネットワークファイルシステム
** デバイスファイル
 
 
* プロセス間通信
** セマフォ
** メッセージキュー
** パイプ, fifo (named pipe)
 
* 記憶管理
** ページ管理
** バーチャルメモリ (swap)
** mmap
** シェアードメモリ
 
* ネットワーク
** IPスタック (TCP/UDP/ICMP/..)
** その他プロトコル
 
* デバイスドライバ
** 仮想デバイス
** 各種I/Oドライバ
 
 
+---------------------------------------------------------------+
| アプリケーション |
+---------------------------------------------------------------+
| システムコール ・ ファイル(デバイスファイルなど) |
+------------+----- --+----------------+--------------+---------+
|プロセス管理 |記憶管理|ファイルシステム |プロセス間通信 |ネットワーク |
| | +----+----------------+--------------+----------+
| | | デバイスドライバ |
| | | ( 仮想デバイス ・ 各種 I/Oドライバ ) |
+---------------------------------------------------------------+
| 各種ハードウェア |
+---------------------------------------------------------------+
匿名利用者