いう独自のオペレーティング・システムを開発します。Unicsのために開発されましたが、のちにオペレーティング・システム開発を移植可能にするために作成しなおされました。マイクロカーネル・バージョンを作り上げました。短期間のうちに、一個人のプロジェクトから何千もの開発者が関わる世界規模の開発プロジェクトに発展しました。カーネルを小型化しています)。はじめとする有益なアプリケーション、そしてさまざまなシェル・サポートが実現しました。オペレーティング・システムのアーキテクチャーの概要を見ていきましょう。つのレベルで構成されていると考えることができます。ように簡潔なわけではありません。処理するメカニズムはアーキテクチャーによってさまざまです。この処理を効率化しています。ユーザー・アプリケーションはここで実行されます。カーネルが存在する場所です。これがカーネルに接続するシステム・コール・インターフェースとなり、ユーザー空間アプリケーションとカーネル間の遷移メカニズムを提供します。このメカニズムは重要です。カーネルとユーザー・アプリケーションはそれぞれ保護された異なるアドレス空間を占有するからです。ユーザー空間の各プロセスはそれぞれに固有の仮想アドレス空間を占有する一方、カーネルは単一のアドレス空間を占有します。詳細は、「参考文献」セクションのリンクを参照してください。つのレベルに分けられます。上にあるのはシステム・コール・インターフェースです。基本関数を実装します。その下にあるのはカーネル・コードで、さらに正確に言えば、アーキテクチャーに依存しないカーネル・コードとして定義できます。サポートするプロセッサー・アーキテクチャーすべてに共通しています。下にあるのはアーキテクチャーに依存するコードです。呼ばれるものを構成し、特定のアーキテクチャーに対してプロセッサーおよびプラットフォームに固有のコードとして機能します。大規模で複雑なシステムのアーキテクチャーを語るときには、システムをさまざまな角度から見ることができます。つの目的は、ソースをより深く理解する手段を提供することです。それこそがまさに、この記事が目的としていることです。カーネルは、多くの重要なアーキテクチャー属性を実装します。高位レベルにしても、低位レベルにしても、カーネルはそれぞれに独特なサブシステムの層で構成されます。すべての基本サービスをカーネルでまとめて扱うため、モノリシック・カーネルと見なすこともできます。ここが、マイクロカーネルのアーキテクチャーとは違うところです。マイクロカーネルのアーキテクチャーでは、カーネルは通信、入出力、メモリーおよびプロセスの管理といった基本サービスを提供し、固有のサービスはマイクロカーネル層に接続されます。いずれのアーキテクチャーにしてもそれぞれに利点がありますが、それを論議するのは避けることにします。両方の使用率という点で効率化され、極めて優れた安定性も持つようになりました。サイズと複雑さを考えると、ひと際興味深い特徴となるのはその移植性です。アーキテクチャー上の制約もニーズも異なるさまざまなプロセッサーおよびプラットフォームで実行するようにコンパイルできます。ないプロセスでも実行できます。サポートを提供しているためです。詳細は、「参考文献」セクションを参照してください。カーネルの主要なコンポーネントを見てみましょう。ユーザー空間からカーネルへの関数コールを実行する手段を提供するシン・レイヤーです。前に説明したように、このインターフェースは同じプロセッサー・ファミリーのなかでさえも、アーキテクチャーによって異なる場合があります。関数コールを多重化および逆多重化する興味深いサービスです。このコンポーネントについての詳細は、「参考文献」セクションを参照してください。示すように、カーネルは実際には単なるリソース・マネージャーでしかありません。複数ユーザー間で統合するリソースへのアクセスを管理および調停します。プロセス管理は、プロセスの実行に集中的に取り組みます。