● カーネルの仕組み

  カーネルは起動されると,必要な初期化処理を実行してからイベント待ちになります.そこでは,大きく分けて以下のような事象が起きるのを待ちます.

・プロセス間通信(シグナル)
・システムコール
・割り込み

 まず,プロセス間通信(シグナル)ですが,カーネルから見たシグナルはプロセスの状態を変化させるために使用されます.それはまたプロセスから見た場合,ソフトウェア割り込みの一つでもあります.

 システムコールとは,ユーザーがカーネルの機能を実行させるための手続きのことです.主記憶に常駐している「タスク構造体」の中身を読み出す──簡単にいえば,画面に文字を表示したり,データファイルに書き込みを行うようなときに使用します.C言語のライブラリ関数などが実際にシステムコールを発行するので,一般のシステム開発ではブラックボックスですが,よりカーネル寄り,システム寄りのソフトウェアを開発する際には理解していなければならない機能です.

 割り込みとは,ここではハードウェア割り込みのことをいいます.簡単にいえば,LANからパケットを受け取ったとき,キーボードからキーを打鍵したとき,タイマ割り込みなどで発生する割り込みのことです.それぞれの事象が起きたときに,どのタスクを起動するかを記述してあるのが割り込みハンドラです.

 このようにカーネルはLinuxの基幹であり,これが安定していないと大きな問題となります.また,カーネルはLinuxの基本機能そのものなので,カーネルを変更することによって新しい機能を追加することができます.

 表2に,最新版であるカーネル2.4で追加された機能を示します.

〔表2〕Linuxカーネル2.4の新機能


カーネルのコア部分の変更

プロセスとスレッドの管理の充実

同時に実行可能なプロセス数の上限が引き上げられた

2.2では上限が設定されていたが,2.4ではリソースが確保できる限り,動的に上限値が変更される

マルチプロセッサ対応の安定化

マルチプロセッサ環境において別々のCPUで実行されているプロセスを管理する機能が向上した

仮想ファイルシステム機能の変更

ext2ファイルシステムで2Gバイト超のデータファイルを扱えるようになった

ファイルキャッシュ機能の向上

ファイルキャッシュの方式が変更され,読み出しと書き込みを同一のキャッシュで処理できるようになった

システムリソース管理の向上

最大メモリは64Gバイト,IDEコントローラを10個,ネットワークカードは16枚まで使用できる

ハードウェアのサポートに関して PCカード

ノートブックなどでネットワークカード,無線LAN,IDE,SCSIなどのデバイスを利用できる

USB

カーネル2.3でキーボードやマウスはサポートされたが,USB HUBやオーディオデバイス,USB経由のハードディスク・CD-RW・MOなども含めてサポートされるデバイスが大幅に増加した

MP3プレーヤなどにも対応している

IEEE1394

試験的なサポートとしてFireWire,i.Linkのインターフェースが組み込まれている

ISAのプラグ&プレイ

ISAカードのプラグ&プレイにカーネルが対応した

UDMA100

UDMA100をサポートした

ファイルシステムに関して

UDF

UDFは,DVDを対象に,異なるOS間でのデータ交換を可能にすることと,光ストレージ各種で共通にデータを扱えるように規格化された

対象メディアは,DVD-ROM,DVD-Video,DVD-Audio,DVD-R,DVD-RAMやDVD-RWなどのDVDファミリである

JFFS  

組み込みシステム用のジャーナルファイルシステム「JFFS」

フラッシュメモリが扱える

参考(http://www.developer.axis.com/software/jffs/)

RAMFS

いわゆる「RAMDISK」が進化したものである.サイズを可変にできる

ネットワークファイルシステム

サポートしているネットワークファイルシステムがNFS V2から3にバージョンが上がった

新たに導入された新機能

NLS

Native Language Supportで日本語サポートが追加された

これによりFATファイルシステム上の日本語ファイルの扱いが楽になった

DEVFS

これによって煩雑な手続きが必要だったデバイスドライバの管理がカプセル化された

DRM

複数のプロセスからのグラフィックデバイスへのアクセスを制御し3Dレンダリングを高速処理できるようになった

LVM

複数のディスクデバイス上のパーティションを論理ボリュームとして扱うことが可能になった

kHTTPd

カーネルに統合されたWebサーバ機能である.単純なHTMLなら,かなりの高速化が図れる

ただし,CGIを扱うことができない


Linuxカーネルとは
 ● カーネルの仕組み

カーネル構築の手順と意味
 ● カーネル構築の手順
 ● カーネルコンフィグレーションの詳細


6月号特集トップページへ戻る


Copyright 2001 岸 哲夫