3週目にして!3日坊主とはよく言ったものですねー。(他人事

そろそろ図を用意したいんですけど、どんなソフトで書こうか考えてました。。

 

L4の特徴は、マイクロカーネルであるということです。

カーネル…ここでは、MMUでメモリを管理するモダンなコンピューターシステムにおいて、特権モードで動作するモジュールです。

このようなシステムでは、カーネルだけが特権モードで、それ以外のモジュールは全てユーザーモードで動作します。カーネルだけがコンピューターの全てを操作可能で、それ以外のモジュールは全て制限付きのモードで動作するわけです。

 

たとえばLinuxであっても、カーネルだけが特権モードで動作します。

そしてLinuxの場合、カーネルが非常に多機能なので、カーネルとわずかなアプリケーションのみで最低限のシステムが構築できたりします。

 

しかし、特権モードで動くカーネルは、低機能な方が都合が良い場合もあります。

とにかく低機能で、しかし高性能であることを目指したのがL4です。

 

f:id:shiroyagiyuu:20180128100307p:plain

上記の図は非常に乱暴で、あまり正確な図ではありません。

実際のL4は、もっと機能が絞り込まれていて、例えばメモリアロケーターやスケジューラー、割り込みなどは一部分のみがカーネルで動作し、残りの部分はユーザー部分で動作するRootTaskやServer群に移されています。メモリアロケーターですらカーネルで完結しないのがL4なのです。

 

先ほどLinuxカーネルとわずかなアプリのみでシステムが構築できると書きました。

逆に言うと、L4はカーネルが低機能すぎて、実のところ多くのアプリと組み合わせなければシステムが成立しません。

上記の通り、メモリアロケーターすらカーネルで完結しておらず、ぶっちゃけカーネルは一人では何もできないのです。

そこで、教材/リファレンスとして、システムを構築する際に一般的に必要そうなアプリをL4用に集めた物がL4Reです。

 

本命はカーネルなのですが、せっかくL4Reという教材があるのですから、これを調査してみたいと思います。

というのは、カーネルはそのIFから聞きなれない構造だし、機能として完結していないので、慣れないと見通しが悪いのです。。何度か挫折済みなの。

RootTaskとかを通して、完結した機能として理解した方が私としては理解しやすいなぁ、、と。

それらを理解して、「カーネルはこう使う」という流れで進めたいと思います。

来週はRootTaskの概要かな。