stanford-oval/wikipedia huggingface dataset:
カーネル
カーネルの機能 > システムコール

→詳細は「システムコール」を参照
意味のある作業を実行するには、ユーザプログラムはカーネルの提供する全サービスにアクセスできなければならない。これはカーネルによって実装が異なるが、多くは標準CライブラリやAPIが提供され、そこから対応するカーネル機能が呼び出される。
カーネル機能を呼び出す方法は主にCPUがどのような機能を提供しているかに依存する。カーネル空間とユーザー空間が分離されている場合、ユーザープロセスが直接カーネルを呼び出すことはできない。たとえば以下のような技法を採用する。
例外処理や割り込みを明示的に発生する命令（トラップ命令、ソフトウェア割り込み）を使用。多くのハードウェアで実装されている技法である。
コールゲートを使用。x86で採用されている。
特別なシステムコール命令を使用。最近のx86で実装された。
メモリ上のキューを使用。仮想空間の所定の位置にユーザープロセスが要求を投入できるキューを用意し、カーネルがそこから定期的に要求を読み取って実行する。即時性が要求されない場合で、プロセスから複数の要求を行う場合に便利である。
カーネル設計の観点 > 保護（プロテクション）のサポート

カーネル設計において重要な観点として、障害（フォールトトレラント性）と悪意ある動作（セキュリティ）からの保護（プロテクション）サポートがある。この2つは通常明確には区別されず、明確に区別しようとするとリングプロテクションでは対応できなくなる。
カーネルが提供する機構または方針は、いくつかの基準で分類できる。
静的（コンパイル時に決定）か動的（実行時に決定）か
プリエンプティブか事後検出か
それらが満足する保護原理による分類（デニング）
ハードウェアサポートによる保護か言語サポートによる保護か
オープンな機構によるものか、方針と密に結合しているか
などである。
階層型プロテクションは、一般に「CPUモード」でサポートされる。ハードウェアサポートによる単純で効率的な方法は、MMUにメモリアクセスのたびにその妥当性をチェックさせるもので、その機構をケイパビリティベースドアドレッシング（英語版）と呼ぶ。ただし、多くの商用コンピュータアーキテクチャではMMUがケイパビリティをサポートしていない。
代替手法は、階層型プロテクションでケイパビリティをシミュレートするものである。この場合、保護されたオブジェクトはアプリケーションがアクセスできないアドレス空間になければならない。カーネルもそのようなメモリ空間のケイパビリティのリストを保持する。ケイパビリティによって保護されたオブジェクトにアプリケーションがアクセスしたい場合、システムコールを行い、カーネルが実際のアクセスを代行する。これにはアドレス空間の切り替えを必要とするため、オブジェクト間で複雑なやりとりが必要なシステムでは性能が低下するが、現代のOSはアクセス頻度が低いオブジェクトや性能を要求されないオブジェクトについてはこの方式を採用している。保護機構をより高い階層でシミュレートする方式も可能だが（たとえば、直接サポートされていないハードウェアについてのページテーブルを操作してケイパビリティをシミュレートするなど）、性能上の問題がある。言語ベースの保護を選択するシステムでは、ハードウェアサポートがなくても問題にならない。
カーネル設計における重要な点として、セキュリティの機構と方針を実装する抽象化レベルの選択がある。カーネルのセキュリティ機構は、高度なセキュリティをサポートする上で重要である。
1つの方式として、ファームウェアとカーネルでフォールトトレラント性をサポートする方式があり、その上に悪意ある動作に対するセキュリティ方針を構築し（必要に応じて暗号機構を追加する）、一部の責任をコンパイラに委任する。コンパイラやアプリケーションレベルへのセキュリティ方針の責任委譲の方式を一般に「言語ベースのセキュリティ」と呼ぶ。
現代の主流のOSの多くは重要なセキュリティ機構が欠如しているため、アプリケーションの抽象化レベルでの適切なセキュリティ方針実装ができないことがある。一般にカーネルサポートがどうであれ、アプリケーションで任意のセキュリティ方針を実装可能だとされているが、間違いである。
カーネル設計の観点 > 保護（プロテクション）のサポート > ハードウェアによる保護と言語による保護

現代の一般的コンピュータは、ハードウェアが強制した規則を使ってプログラムのデータへのアクセスを許可している。プロセッサは動作を監視し、規則に違反したプログラムを停止させる（たとえば、カーネル空間のメモリを読み書きしようとしたユーザプロセスを停止させるなど）。ケイパビリティをサポートしていないシステムでは、プロセスは相互に隔離されたアドレス空間で動作する。ユーザプロセスがカーネルを呼び出すことは、上述したシステムコールの技法を使って統制されている。
代替手法として言語ベースの保護（プロテクション）がある。言語ベースのプロテクションシステムでは、カーネルは信頼されている言語コンパイラが生成したコードのみ実行を許可する。そしてその言語は、セキュリティに違反するようなコードをプログラマが書けないように設計されている。
この方式には次のような長所がある。
アドレス空間を分離する必要がない。アドレス空間の切り替えは低速な操作であり、オーバーヘッドになっているため、現代のOSではその切り替えをなるべく減らすような最適化に多大な労力を費やしている。言語ベースのプロテクションシステムではそのような切り替えが全く不要であり、全コードを同一アドレス空間に置いても安全に運用可能である。
柔軟性がある。プログラミング言語でプロテクション機構を表現できるよう設計すれば、この方式ではそれらを実装することが可能である。言語ベースのプロテクションを実現するのにハードウェアを新たに設計する必要はない。
一方、次のような短所がある。
アプリケーションの起動に時間がかかる。アプリケーションを起動する際に正しいコンパイラで生成されたものか、あるいはソースコードやバイトコードから再コンパイルが必要でないかをチェックする必要がある。
型システムが固定される。従来のシステムでは、アプリケーションは型安全でない操作を頻繁に実行する。言語ベースのプロテクションシステムではそのような操作は許されないので、アプリケーションを書き換える必要があり、場合によっては性能が低下することになる。
言語ベースのプロテクションを採用したシステムとしては、JXやマイクロソフトのSingularityがある。
カーネル設計の観点 > プロセスの協調作動

エドガー・ダイクストラは論理的観点から、バイナリセマフォにおける不可分なロックとアンロック操作だけで、プロセス間の任意の協調作動を実現できることを証明した。しかしそのような方式は一般に安全性や効率性が欠如しており、メッセージパッシング方式の方が柔軟性が高い。他の方式もいくつかあり、現代のカーネルでは共有メモリやRPCなどのシステムをサポートしていることが多い。
カーネル設計の観点 > 入出力デバイス管理

入出力デバイスを並行して協調作動する他のプロセス群から一様に扱えるようにするというカーネルの考え方は、Per Brinch Hansen が提唱し実装したのが最初である（似たような考え方は1967年にも示唆されていた）。Hansen はその説明で、「共通の」プロセス群を「内部プロセス」、入出力デバイスを「外部プロセス」と呼んでいる。
物理メモリと同様、アプリケーションがコントローラのポートやレジスタに直接アクセスすることを許可すると、コントローラが不正作動したり、システムがクラッシュすることになる。それに加えて、デバイスの複雑さに応じて対応するプログラムは非常に複雑化することがあり、しかも複数の異なるコントローラを使うことがある。そのため、デバイスを管理するためのより抽象化されたインタフェースを提供することが重要である。この抽象化を提供するのは一般にデバイスドライバや Hardware Abstraction Layer (HAL) である。アプリケーションは必要なら頻繁にデバイスへのアクセスを要求する。カーネルはシステムに接続されたデバイスの一覧を何らかの方法で保持しなければならない。これはBIOSや各種システムバスの機能（PCI/PCIeやUSB）を使ってなされる。あるアプリケーションがあるデバイス操作を要求すると（たとえばディスプレイに文字を表示する）、カーネルは対応するドライバ（たとえばビデオドライバ）に要求を送らなければならない。するとそのドライバがデバイスに対して必要な処理を行う。マイクロカーネルの場合、この際にプロセス間通信 (IPC) が使われる。
カーネル全体の設計方針

もちろん、上述したタスク群や機能群の提供方法は設計や実装の面でさまざまである。
「機構と方針の分離」の原則は、マイクロカーネルとモノリシックカーネルの哲学の間でかなり大きな相違がある。ここで、「機構」はさまざまな「方針」の実装を可能とするものであり、「方針」は特定の「操作のモード」である。たとえば「機構」面では、ユーザーがログインしようとしたとき認証サーバを呼び出してアクセスを認めるべきか否かを決定するということが考えられる。一方「方針」面では、認証サーバがパスワードを要求し、データベース内の暗号化されたパスワードと照合するかもしれない。機構が汎用的であれば、機構と方針が同一モジュールに統合されている場合よりも方針の変更（たとえば、パスワードの代わりにセキュリティトークンを使うなど）がより容易になる。
最小のマイクロカーネルでは非常に基本的な方針のみが含まれ、その機構はカーネル上で動作させるもの（OSの残りの部分やアプリケーション群）自身がどのような方針（メモリ管理、高度なプロセススケジューリング、ファイルシステム管理など）を採用するか決定することを可能にする。一方モノリシックカーネルは方針の大部分をカーネル内に含む傾向があり、結果としてその上の部分の自由度は制限される。
Per Brinch Hansen は機構と方針の分離のための主張を展開した。すなわち、この分離が不適切であることが既存のOSで本質的技術革新が見られないことの主要因だとし、コンピュータアーキテクチャにおける共通課題だとした。モノリシック設計は、従来の商用システムで一般的な保護技法である「カーネルモード」と「ユーザーモード」に分離するアーキテクチャ（いわゆるリングプロテクション）から生まれた。そのアーキテクチャでは、保護（プロテクション）を必要とするモジュールを可能な限りカーネルに含めようとする。このようなモノリシック設計と特権モードの関係が機構と方針の分離における重要な問題として再注目されている。実際「特権モード」のアーキテクチャ技法は保護機構とセキュリティ方針を融合させる傾向があるが、これとは大きく異なるアーキテクチャ技法であるケイパビリティベースドアドレッシング（英語版）ではその2つを明確に区別し、自然にマイクロカーネル設計が可能となる。
モノリシックカーネルはカーネルの全コードを同じアドレス空間（カーネル空間）で実行するが、マイクロカーネルでは多くのサービスをユーザー空間で実行しようとし、コードベースの保守性とモジュール性を向上させようとしている。多くのカーネルは明確にどちらかに分類できるわけではなく、その中間の実装ともいうべきハイブリッドカーネルになっている。さらに特殊な設計としてナノカーネルやエクソカーネルが研究されているが、広く使われるまでには至っていない。エクソカーネルの例としてXenハイパーバイザがある。
カーネル全体の設計方針 > モノリシックカーネル

→詳細は「モノリシックカーネル」を参照
モノリシックカーネルでは、全OSサービスはひとつのカーネル空間内に存在し、カーネルスレッド上で実行される。この手法は強力なハードウェアアクセスを提供する。UNIXの開発者ケン・トンプソンは、モノリシックカーネルの方がマイクロカーネルより実装が容易だとしている。主な欠点はシステム構成要素間の依存関係の複雑さである。たとえば、デバイスドライバにバグがあっただけでシステム全体がクラッシュするし、大きなカーネルは保守が非常に困難である。
Unix系OSが伝統的に採用してきたモノリシックカーネルは、OS中核機能とデバイスドライバを全て含んでいた。デバイスドライバ、スケジューラ、メモリ管理、ファイルシステム、ネットワークのプロトコルスタックなど、多くのプログラムが必要とするがライブラリとしてユーザー空間で実行することができない機能は、全てカーネル空間に置かれた。それら全サービスへのアクセスを可能にするため、数多くのシステムコールがアプリケーションに対して提供されている。
必要とされないサブシステムを伴って最初からロードされるモノリシックカーネルは、より汎用的な意味ではあるが、特定ハードウェア向けに設計されたものよりもチューニングが可能である。LinuxやFreeBSDなどの現代のモノリシックカーネルはUnix系OSであり、実行時にモジュールをロードする機能を備えており、必要に応じて容易に機能を拡張でき、同時にカーネル空間で動作するコード量をなるべく最小に抑えることができる。モノリシックカーネルには次のような長所がある。
関係するソフトウェアが少ないので、より高速である。
カーネルは1つのソフトウェアであるため、ソースコード量もコンパイル後の実行ファイルの大きさも小さくなる。
コードが少ないのでバグも少なく、結果としてセキュリティ問題も比較的少ない。
モノリシックカーネルはシステムコールの延長で動作する部分がほとんどである。システムコールは一般にテーブル構造で保持されるインタフェースであり、ディスク操作などのカーネル内サブシステムへのアクセスを行う。プログラム内でライブラリルーチンを呼び出すと、その中で要求をチェックしてコピーし、システムコールにわたす。したがって、それほど重い呼び出しではない。Linuxカーネルはモノリシックだがかなり小さくできる。これは、ローダブル・カーネル・モジュール機能と、カスタマイズが容易なためである。実際、フロッピーディスク1枚にカーネルだけでなく多数のユーティリティを搭載し、それだけで完動するOSとすることもできる（最も有名な例として muLinux（英語版） がある）。このカーネルを小型化できる能力があるため、Linuxは組み込みシステムで急速に採用が増えている（組み込みLinux）。
このようなカーネルはOSの中核機能とデバイスドライバからなり、実行時にモジュールをロードする機能を備えている。それらによって、下層のハードウェアについての豊富で強力な抽象化を提供する。それらは単純なハードウェア抽象化の小さなセットを提供し、サーバと呼ばれるアプリケーションを使ってさらなる機能を提供する。この特定の手法でハードウェア上の高度な仮想インタフェースを定義し、プロセス管理、並行性管理、メモリ管理といったスーパーバイザモードで動作するいくつかのモジュールでOSサービスを実装し、システムコールでそれらを呼び出せるようにしている。しかし、このような設計には以下のような短所や制約がある。
カーネル内のコーディングは難しい。標準Cライブラリが使えず、デバッグにはGNUデバッガなどのソースレベルのデバッガを必要とするためである。そのため、開発中はコンピュータを頻繁にリブートする必要がある。これは単に開発者だけの問題ではない。デバッグが難しいということはバグをつぶすのが難しいということであり、カーネル内にバグが残存しやすいということでもある。
カーネル内のバグは重大な副作用を引き起こす。カーネル内の関数はどれも特権状態で動作するので、全く無関係なデータ構造を（カーネル空間内でもユーザー空間内でも）容易に壊すことができる。モジュール群は同一アドレス空間で動作するので、バグによってシステム全体をダウンさせることがある。
カーネルは肥大化しやすく、肥大化すると保守が困難になる。
コードの結合度が強く、モジュール化して分離したとしても、その分離を正しく行うのは困難である。
移植性が低い。動作させるアーキテクチャごとに書き直しが必須となる。
カーネル全体の設計方針 > マイクロカーネル

→詳細は「マイクロカーネル」を参照
マイクロカーネルとは、伝統的な「カーネル」から「サーバ」群に機能を移転するOS設計方針を意味し、最小化したカーネルだけをカーネル空間に残し、サーバ群を可能なかぎりユーザ空間で動作させる。マイクロカーネルでは、ハードウェアの単純な抽象化と最小のプリミティブ（システムコール）で最小のOSサービスを実装する（メモリ管理、マルチタスク、プロセス間通信など）。他の全てのサービス（ネットワークなど）は「サーバ」としてユーザ空間に実装される。マイクロカーネルはモノリシックカーネルよりも保守が容易だが、システムコール回数やコンテキストスイッチ回数が増大するために性能が低下する傾向がある。
どうしても特権モードでなければならない部分だけがカーネル空間に置かれる。それは、IPC（プロセス間通信）、基本スケジューラ（スケジューリング・プリミティブ）、基本メモリハンドラ、基本I/Oプリミティブなどである。スケジューラ本体やメモリ管理、ファイルシステム、ネットワークスタックといった大部分はユーザ空間で動作する。マイクロカーネルは、システム機能全体がプロセッサのシステムモードで動作する1つのプログラムになっているモノリシックカーネルの設計方針への反発から生まれた。マイクロカーネルを採用したOSとしては、QNXや GNU Hurd がある。マイクロカーネルは基本的に次のような長所を持つ。
保守は相対的に容易である。
パッチの評価が容易である。
すばやく開発でき、多くの場合カーネルを再起動しなくとも評価可能。
サーバで障害が発生しても、運用上のミラーで代行可能なことが多く、バグへの耐性が高い。
多くのマイクロカーネルは、何らかのメッセージパッシングシステムを採用しており、サーバからサーバへの要求の転送を行う。一般にマイクロカーネルがそのためのポートを用意している。たとえばメモリ追加要求を送ると、マイクロカーネルのあるポートが開き、そこを通して要求が転送される。マイクロカーネルにメッセージが受信されると、その後はシステムコールのように処理される。これによってシステムアーキテクチャのモジュール性が高まり、システムがより整理され、デバッグや動的変更が容易になり、ユーザーのニーズに従ったカスタマイズが可能となる。AIX、BeOS、Hurd、macOS、MINIX、QNX といったOSは多かれ少なかれマイクロカーネルの設計方針を取り入れている。マイクロカーネル自体は非常に小さいが、システム機能全体を構成するコードを全て集めると、モノリシックカーネルよりも大きいことが多い。モノリシックカーネル支持派はまた、マイクロカーネル方式の2層構造によりOSの大部分がハードウェアと直接相互作用できなくなるため、決して小さくないコストが上乗せされ、システムの効率を低下させると主張している。マイクロカーネルは通常、アドレス空間定義部、プロセス間通信 (IPC)、プロセス管理といった最小限のサービスだけを提供する。ハードウェア処理といった他の機能はマイクロカーネルで直接扱うことはない。マイクロカーネル支持派は、モノリシックカーネルでのエラー（バグ）がシステム全体のクラッシュを引き起こすという欠点を指摘する。しかしマイクロカーネルでは、サーバがクラッシュしてもそのサービスを再起動することでシステム全体のクラッシュを防ぐ可能性がある。しかし、現にLinuxなどのモノリシックカーネルは年単位で安定動作している実績があり、このようなマイクロカーネルの利点がどれほど重要かは疑わしい。
ネットワーキングなどのカーネルサービスは「サーバ」と呼ばれるユーザ空間のプログラムとして実装される。サーバを停止・再起動するだけでOSを更新可能である。たとえばネットワークをサポートしていないマシンで、ネットワークサーバは起動する必要がない。サーバ群やカーネルの間でデータをやり取りする作業があるため、モノリシックカーネルにはないオーバヘッドが生じ、効率が低下する。
マイクロカーネルの短所はたとえば次のようなものがある。
全体としてメモリをより多く使用する。
インタフェースを持つソフトウェアの数が多く、性能低下の可能性がある。
サーバ群とカーネル間のメッセージングにバグがあると、検出が困難である。
プロセス管理は一般に非常に複雑になりうる。
使用状況によってはマイクロカーネルは不利になる。単一用途のシステムでは動作するプロセス数が小さいため、マイクロカーネルがよく機能し、プロセス管理の複雑さもあまり問題にならない。
マイクロカーネル方式では、OSの他の部分を通常のアプリケーションのように高水準言語で書くことができ、同一のカーネル上で異なるOS（のインタフェース）を使用することができる。また動的にOSを切り換えたり、複数のOSを同時に使用することもできる。
カーネル全体の設計方針 > モノリシックカーネルとマイクロカーネル

カーネルが巨大化するにつれて、さまざまな問題が明らかになってきた。最も明らかな問題はカーネルの大きさ（メモリ使用量）の増大である。これは仮想記憶をカーネル空間にも適用することである程度まで和らげられるが、全てのコンピュータ・アーキテクチャが仮想記憶をサポートできるわけではない。カーネルのサイズを削減するため、不要なコードを削除するなどの改善が必要となるが、これはカーネルの各モジュール間の明らかにされていない依存関係があるために非常に困難である。
マイクロカーネルと比較したときのモノリシックカーネルのさまざまな欠点から、1990年代の初期までにモノリシックカーネルは時代遅れと考えられるに至った。結果としてLinuxがモノリシックカーネルを採用したことでリーナス・トーバルズとアンドリュー・タネンバウムの間で有名な論争が発生した（アンドリュー・タネンバウムとリーナス・トーバルズの議論）。この議論では、両者の言い分にそれぞれメリットがある。
モノリシックカーネルは設計が容易で、マイクロカーネルよりも迅速に成長することが期待できる。しかし、モノリシックカーネル内のバグは一般にシステムクラッシュを引き起こすのに対して、マイクロカーネルでは一部のサーバに問題が限定される。モノリシックカーネルの支持者は、不正なコードがカーネルになければマイクロカーネルの利点はほとんどないと論じる。どちらの側にも成功例がある。マイクロカーネルはロボットや医療用システムで使われており、各コンポーネントが別々の保護されたメモリ空間で動作する。これは最新のモジュールロード方式であってもモノリシックカーネルには不可能であろう。モノリシックカーネルは共有型カーネルメモリを使用するよう最適化されていて、マイクロカーネルのような低速なメッセージわたしとは異なる。
カーネル全体の設計方針 > モノリシックカーネルとマイクロカーネル > 性能

モノリシックカーネルはコード全体を同じアドレス空間（カーネル空間）に置くよう設計されており、一部の開発者はシステム性能向上に必須の特徴だとしている。一部の開発者はうまく書けばモノリシックカーネルは極めて高効率になるとしている。
1980年代から1990年代初めにかけてのマイクロカーネルの性能は低かった。そういった初期のマイクロカーネルの性能を実測する研究が行われたが、性能が低い原因を深く分析することはなかった。そういったデータが一人歩きし、カーネルモードとユーザモードの切り替え回数が増え、プロセス間通信の回数が増え、コンテキストスイッチの回数が増えたためだ とみなされた。
そして1995年、マイクロカーネルの性能が低い原因として以下のことが推測されている。
マイクロカーネル「方式」全体が実際には非効率
マイクロカーネルで実装された「コンセプト」が非効率
それらコンセプトの特定の「実装」が非効率
この時点でマイクロカーネルを効率化する方法はまだ研究途上であり、正しい技法の構築が求められていた。
一方でモノリシックカーネルの設計の基盤となっている階層型プロテクション でも、プロテクションの階層間でのやりとりには値（メッセージ）のコピーが必要であり、そのやりとりが増えるほど性能が低下することがわかっていた。
近年、L4 やK42（英語版）といった新世代のマイクロカーネルが登場し、上述の性能問題をある程度解決している[要出典]。
カーネル全体の設計方針 > ハイブリッドカーネル

→詳細は「ハイブリッドカーネル」を参照
Windows NT系などの商用OSでよく見られる。Appleの macOS も、カーネギーメロン大学のMachとFreeBSDのモノリシックカーネルのコードをベースとしたXNUというハイブリッドカーネルを採用している。マイクロカーネルの性能オーバヘッドを削減するため一部のサービス（通信プロトコルスタックやファイルシステム）をカーネル空間で動作させるが、一部のカーネルコード（デバイスドライバなど）はサーバとしてユーザ空間で実行する。これは、純粋なマイクロカーネルが高性能を提供できると示される以前、妥協的に考案された技法であり、マイクロカーネルにモノリシックカーネルの特性を一部取り入れて拡張したものといえる。
ハイブリッドカーネルではカーネルがモジュール化されているが、モジュールの大部分は同じカーネル空間内にロードされる。そのため、バグを含むモジュールをロードするとカーネルの動作が不安定になる可能性がある。マイクロカーネルの場合、カーネルとは全く別の空間でモジュールを動作させることができ、安全に評価することができる。モノリシックカーネルと比較したハイブリッドカーネルの長所を以下に挙げる。
モジュールの開発期間が短い。（カーネルが不安定にならない限り）評価の際にリブートが不要である。カーネル全体の再コンパイルが不要である。
サードパーティーのテクノロジーを素早く統合できる。
モジュール群は何らかのモジュールインタフェースを使ってカーネルとやりとりする。そのインタフェースはOS固有ではあるが汎用化されており、常にモジュールとして分離実装できるわけではない。デバイスドライバにはモジュールインタフェース以上の柔軟性が必要なことが多い。基本的にモノリシックカーネルではカーネルとの呼び出しが1回で済むところを、ハイブリッドカーネルでは2回呼び出す必要がある。モジュール化の短所として次の事柄が挙げられる。
インタフェースを通る回数が増えるため、バグを作りこむ可能性も増加する（セキュリティホールも多い可能性がある）。
システム管理者はモジュール群の保守において混乱をきたす可能性がある。
カーネル全体の設計方針 > ナノカーネル

ナノカーネルは全てのサービスをデバイスドライバとして分離する。これにはたとえば最も基本的な割り込みコントローラやタイマーの制御も含まれる。これによりカーネルメモリはマイクロカーネルよりもさらに小さくなる。
カーネル全体の設計方針 > エクソカーネル

エクソカーネル (exokernel) はまだ実験段階のOS設計技法である。他のカーネルとの違いは、物理ハードウェアのプロテクションと多重化に機能を限定している点で、アプリケーションに対して全くハードウェアの抽象化を提供しない。このようにハードウェアのプロテクションをハードウェア管理から分離することで、利用可能なハードウェアを最大限に生かすように個々のプログラムを開発できるという利点が生じる。
エクソカーネル自体は非常に小さい。しかし、通常のOSの持つ機能をアプリケーション開発者に提供するためのライブラリ型OSを伴う。エクソカーネル型システムの最大の利点は、このライブラリ型OS機能を複数用意できるという点で、それぞれが異なるAPIを提供できる。たとえば同じシステム上で、高度なUIを持つアプリケーションを開発し、同時にリアルタイムシステム制御を行うアプリケーションも開発できる。
カーネル開発史 > 初期のOSカーネル

→詳細は「オペレーティングシステムの歴史」を参照
厳密にいえば、オペレーティングシステム（とカーネル）はコンピュータを動作させるのに必須ではない。プログラムはマシン上に直接ロードされ実行されることも可能であり、そのようなプログラムはOSのサービスや抽象化なしで記述しなければならない。多くの初期のコンピュータではそのような手法が一般的であり、プログラムを入れ替えるときにリセットとリロードが必要だった。その後、プログラムローダーやデバッガといった補助的な小さなプログラムがメモリに常駐したり、ROMからロードされるようになった。これらが初期のオペレーティングシステムのカーネルの元となった。直接実行の手法は今日でもゲーム機や組み込みシステムで使われているが、一般に最近のコンピュータではオペレーティングシステムとカーネルが使われている。
1969年の RC 4000 Multiprogramming System では、小さな中核部の上で異なる目的のOS群を整然とした方法で構築するというシステム設計哲学を導入しており、マイクロカーネル方式のさきがけとなっている。
カーネル開発史 > タイムシェアリングOS

→詳細は「タイムシェアリングシステム」を参照
UNIX以前の10年間、コンピュータは劇的に能力を向上させ、マシンの未使用時間を使う手法が求められた。この期間の主な開発のひとつがタイムシェアリングシステム (TSS) である。TSSは何人かのユーザーがCPUのタイムスライスをそれぞれ割り当てられる。
タイムシェアリングシステムの開発は多くの問題を発生させた。ひとつの問題は大学のユーザーはCPU時間が欲しいというよりもシステムをハックしたがっているという点である。このためセキュリティやアクセス制御が1965年のMulticsプロジェクトの重要な課題となった。もうひとつの問題は計算リソースの正しい扱い方である。ユーザーは計算リソースを使わずに画面を凝視することにほとんどの時間を費やしており、タイムシェアリング方式ではそのようなCPU時間を他のユーザーに与えるべきと考えられた。最終的に、メモリ階層の多層化が進み、リソースの分割が仮想記憶システムの開発へと繋がっていったのである。
カーネル開発史 > UNIX

→詳細は「UNIX」を参照
UNIXの設計段階で、全ての高レベルのデバイスをファイルとして抽象化することが決定された。なぜならUNIX設計者は情報処理の目的をデータの変換であると考えていたからである。
たとえば、プリンターもファイルとして抽象化され、データをそのファイルにコピーすると印字が行われる。他のシステムでは同様の機能を提供するにあたって、デバイスを低レベルに抽象化する傾向があった。デバイスもファイルも何らかの低レベルの概念の実体化である。システムをファイルのレベルで仮想化したことにより、ユーザは既存のファイル管理機能と概念で全てを扱うことができるようになり、操作が大幅に簡略化された。同じパラダイムを拡張して、UNIXはファイルを複数の小さなプログラムで操作するパイプの概念を可能とした。最終的な結果は同じであっても、このような小さなプログラム群を使うことで柔軟性が劇的に向上しただけでなく、開発も利用も容易になった。
UNIXでは、オペレーティングシステムは2つの部分で構成される。さまざまな操作を実行するユーティリティプログラム群とカーネルである。プログラミングの観点から見ると両者の違いは小さい。カーネルは特権モードで動作するプログラムであり、プログラムローダーとしての役割とシステムの残りの部分を構成するユーティリティプログラム群を監督する役割を持つ。そして、それらプログラムにロックと入出力サービスを提供する。つまり、カーネルはあらゆる場面に介在しているわけではなかった。
その後、計算モデルが変化し、UNIXの何でもファイルで表す手法が常に適用可能な方法ではなくなってきた。端末はファイルで表せるが（どちらも文字列を読み書きできる）、GUIはそのように扱うことはできない。コンピュータネットワークは別の問題を提起した。ネットワーク経由の通信はファイルアクセスに対応させることができるが、低レベルのパケット指向アーキテクチャはファイルというよりも離散的なデータの塊として扱う必要がある。コンピュータの機能が拡大するにつれ、UNIXのコードは増大していった。それはまた、UNIXカーネルのモジュール性が非常にスケーラブルなためでもあった。初期のカーネルのソースは10万行ほどだったが、Linuxカーネルなどでは1300万行にもなっている。
現代のUnix系OSは、モノリシックカーネルにモジュールローディング機能を加えたものとなっている。たとえば、Linuxカーネルを採用した各種Linuxディストリビューションや、BSDの子孫である FreeBSD、DragonFly BSD、OpenBSD、NetBSD、macOS などがある。
カーネル開発史 > Mac OS

Appleは1984年、最初のMac OSを同社のパーソナルコンピュータMacintoshに同梱して発売した。後継のmacOSはDarwinをベースとしており、4.4BSDユーザーランドとMachカーネルを統合したXNUと呼ばれるハイブリッドカーネルを採用している。
カーネル開発史 > Microsoft Windows

Microsoft Windowsは1985年、MS-DOSへのアドオンとしてリリースされた。他のOSに依存していたため、Windows 95までのリリースはOSではなくオペレーティング環境とみなされている。その製品ラインは発展して、Windows 9x系となり（32ビット化やプリエンプティブ・マルチタスクといった強化を経て）、最終的に2000年にWindows Meがリリースされた。マイクロソフトはまた、ハイエンド向けにWindows NT のラインも1993年の Windows NT 3.1からスタートさせ、こちらは2000年以降も続いている。
2001年10月にリリースされたWindows XPでWindows 9x系を置換して一般ユーザー向けOSが一新された。Windows NT系のカーネルはWindow ManagerやIPC Managerとクライアント・サーバ型階層型サブシステムモデルを採用しており、ハイブリッドカーネルとみなされている。
カーネル開発史 > マイクロカーネルの開発

汎用マイクロカーネルとしてはカーネギーメロン大学が1985年から1994年まで開発したMachが有名だが、特定用途向けにもいくつかのマイクロカーネルが開発された。L4はマイクロカーネルの性能が悪くないことを実証するために作られた。ここから派生した新たな実装の Fiasco や Pistachio はLinuxをその上で動作させることができる。
QNXはマイクロカーネル設計を採用したリアルタイムオペレーティングシステムであり、1980年代初期に開発され、Machよりもはるかに成功している。ソフトウェアが不正作動することが致命的な状況で使われることが多く、スペースシャトルのロボットアームの制御やガラスを精密に磨く機械の制御で使われている。
関連文献

Tanenbaum, Andrew S. (1979). Structured Computer Organization. Englewood Cliffs, New Jersey: Prentice-Hall. ISBN 0-13-148521-0
Andrew Tanenbaum, Operating Systems – Design and Implementation (Third edition);
Andrew Tanenbaum, Modern Operating Systems (Second edition);
Daniel P. Bovet, Marco Cesati, The Linux Kernel;
David A. Peterson, Nitin Indurkhya, Patterson, Computer Organization and Design, Morgan Koffman (ISBN 1-55860-428-6);
B.S. Chalk, Computer Organisation and Architecture, Macmillan P.(ISBN 0-333-64551-0).
Deitel, Harvey M. (1984) [1982]. An introduction to operating systems (revisited first ed.). Addison-Wesley. p. 673. ISBN 0-201-14502-2. http://portal.acm.org/citation.cfm?id=79046&dl=GUIDE&coll=GUIDE
Houdek, M. E., Soltis, F. G., and Hoffman, R. L. 1981. IBM System/38 support for capability-based addressing. In Proceedings of the 8th ACM International Symposium on Computer Architecture. ACM/IEEE, pp. 341–348.
Lorin, Harold (1981). Operating systems. Boston, Massachusetts: Addison-Wesley. pp. 161–186. ISBN 0-201-14464-6. http://portal.acm.org/citation.cfm?id=578308&coll=GUIDE&dl=GUIDE&CFID=2651732&CFTOKEN=19681373
Shaw, Alan C. (1974). The logical design of Operating systems. Prentice-Hall. p. 304. ISBN 0-13-540112-7. http://portal.acm.org/citation.cfm?id=540329
モノリシックカーネルの概念図
マイクロカーネル方式では、カーネルはサーバの実行に必要な最小限の機能をカーネルに持たせ、それ以外のカーネル機能（デバイスドライバ、GUIなど）はサーバという別個のプログラムで実装する。
モノリシックカーネルの高速性・単純性とマイクロカーネルのモジュール性・拡張性を組み合わせたのがハイブリッドカーネルである。
Unix系システムの系譜
イリヤース・ホージャ

イリヤース・ホージャ（? - 1365年）は、東チャガタイ・ハン国（モグーリスタン・ハン国）の君主（在位：1362年もしくは1363年 - 1365年）。
モグーリスタン・ハン国の創始者トゥグルク・ティムールの長男。
生涯

1361年にトゥグルク・ティムールがマー・ワラー・アンナフルを支配する西チャガタイ・ハン国を征服すると、イリヤース・ホージャはマー・ワラー・アンナフルの支配を任された。バルラス部の指導者ティムールがイリヤース・ホージャの後見人に付けられたが、ティムールはイリヤース・ホージャの元を離れて反乱を起こした。
1363年にキシュ近郊の戦いでティムールの軍に大敗を喫し、翌1364年春にイリヤース・ホージャはマー・ワラー・アンナフルに親征した。
1365年にチナズ・タシュケントの間で起きた泥沼の戦いで、イリヤース・ホージャはティムールとフサインの連合軍に勝利した。勝利後にモグーリスタン軍はサマルカンドに向かうと、サマルカンド城内で反モンゴルを掲げる「サルバダール運動」を行う集団が住民に抵抗を呼びかけた。当時のサマルカンドには防壁と内城は無く、守備兵も退却しており、イリヤース・ホージャたちは容易にサマルカンドを攻略できると考えていた。しかし、抵抗を受けずにサマルカンド奥深くに入ったモグーリスタン軍は、サルバダールに率いられた住民からの奇襲で損害を受けて城内から脱出した。さらに疫病によって軍馬の多くを失い、イリヤース・ホージャは戦果を得ることなく中央アジアから退却しなければならなかった。
逃走中のイリヤース・ホージャはモグーリスタンとの国境部に至ったところでドゥグラト部のカマルッディーンによって殺害され、彼の死後カマルッディーンはハンを僭称した。
日米通信社

| --- | --- |
種類:  株式会社
本社所在地:   日本 〒104-0061 東京都中央区銀座8丁目110番地先
業種:  情報・通信業
法人番号:  7010001053576
関係する人物:  高田元三郎（創業者）  桑島和夫（元代表取締役）
テンプレートを表示
株式会社日米通信社（かぶしきがいしゃにちべいつうしんしゃ）は、かつて存在した出版社・音響制作会社。日本音声製作者連盟に加盟していた。
かつては、東京都千代田区有楽町の毎日新聞社新館内に本社があった。
1970年代には東北新社の協力を経て、ワーナー・ブラザース作品など外画の日本語吹き替え制作も行っていた。
沿革

ワシントン会議やジェノア世界経済会議など多くの国際会議を取材した国際畑記者で、毎日新聞社の編集総長や代表取締役を務めた高田元三郎が第二次世界大戦敗戦後に毎日新聞社を退社後、UP通信社極東総支配人だったマイルス・ボーンに、新聞雑誌や必要な資料や情報を得ることができないかと相談した。
この高田の国際情報収集に関わる考えの背景は、日本が戦争を起こしたこと自体が、国の国際認識に欠けていたことを考えれば、国際知識や理解を得る必要があるにもかかわらず、外国通信社のニュース供給は新聞が受けられても、外国との交流は自由にできず、戦前に官庁や会社、個人が自由に得ていた新聞雑誌、資料の入手を禁じられ、国際情勢の認識も十分に得られず、半鎖国状態に状況下だったことによる。ボーンはダグラス・マッカーサー連合国軍最高司令官が第二次世界大戦中に率いた司令部に従軍して、日本、太平洋及びアジア方面のUP通信の従軍記者を指揮、マッカーサーがオーストラリアから日本に進攻してくる間も日夜苦楽を共にした非常に親しい関係であった。
ニューヨークのUP本社も高田の考えに賛同し、全面的協力のもと、UPの特稿通信、経済通信や科学通信、ボーンの入手する新聞や雑誌を供給してもらう約束ができたことから、高田の毎日新聞退職金を元に、旧制一高時代の親友である佐々部晩穂らの出資も受け、毎日新聞新館の二室を借りて、1946年3月に有限会社日米通信社を発足させた。
高田の他に、毎日新聞OBの下田将美、桑原忠夫、電通から満鉄東亜経済調査局へ転じていた浜野末太郎らが参加した。
『日刊日米通信』が好調に発展したため、『日米ウィークリー』『日米科学通信』を創刊、美術評論家の瀧口修造、『パリ文学散歩』の村松嘉津、国際評論の長野敏夫などの著名人も参画、世界経済の動向を中心とした「日米懇話会」を東京、大阪、名古屋などで開催すると財界から歓迎された。
沿革 > 設立趣旨書

「日本の現状と将来は、国際情勢によって左右されることが甚大である。殊に占領管理の実態に当たる米国の意図によって、直接間接の影響を受ける。復興も再建も自助の努力と共に、結局連合国、殊に米国の援助に待たねばならぬ。この意味で、すべての指導階級の人が国際情勢を十分に知り、殊に米国の情勢動向を認知することが刻下の急務である。
然るに新聞の紙幅は局限されて、これを十分に知ることができない。ここにおいてマッカーサー司令部の好意的諒解の下に、日米通信社を設立し、世界的大通信社たる合同通信社（U・P）の全幅的協力を得て、米国から新聞雑誌その他の出版物及び資料を入手し、再建日本の指針となり、各事業界の指導者にとって、不可欠の参考資料となるべき政治、経済、労働、社会、文化等各般の情報資料を、わが社のもつ優秀な翻訳陣によって、責任ある翻訳および解説をなし、さらに毎日新聞社の好意ある協力の下に、これを印刷して、日刊「日米通信」の形で購読会員に領分する。」
主な書籍

ナンシィ（英語版）（1948年）
河上清『米ソ戰わば? = Next war? : 祖國日本に訴う』1949年
長永義正『新しい株式記事の読み方』1949年
『驚異の野球王國 : アメリカ野球の全貌』1949年
『第三次戦の様相：日本に中立なし』 長永義正 編輯、1950年
長永義正編、日米通信社編纂『世紀のアメリカ』、山田米吉、資料提供 總指令部民間情報教育部、1950年
外務省監修、日米通信社編『新生日本外交百年史』、山田米吉、1953年
日米通信社編『日本外交百年小史』、山田書房、1954年3月
日米通信社編『平和の象徴国連』、読売新聞社出版局、1951年
日本の伝統的工芸産業 写真記録（1980年）
日本の交通と物流／生活と産業を支える基盤（1981年）
主な書籍 > 雑誌

日米ウィークリイ（1940年代後半～1950年代）
月刊「世界報告」（1948年）
週刊日米科学通信→日米科学文化通信（1940年代後半～1950年代）
NKコピーサービス→日米コピーサービス（1967年～1986年）
主な吹き替え制作作品

荒鷲の翼
駅馬車 ※NETテレビ版
エデンの東 ※テレビ朝日版
オデッサ・ファイル
オスロ国際空港/ダブル・ハイジャック
俺たちに明日はない
ガラスの動物園
殺し屋ハリー/華麗なる挑戦
ザ・ディープ ※テレビ朝日版
ストリートファイター
ダーティハリー ※テレビ朝日版
ダーティハリー3
タイタンの戦い
大列車強盗
脱出 ※テレビ朝日版
チザム
トム・ホーン
ネモ船長と海底都市 ※東京12ch版
北極の基地/潜航大作戦 ※テレビ朝日版
マックQ
ミクロの決死圏 ※	テレビ朝日旧版
ミスタア・ロバーツ ※NETテレビ版
燃えよドラゴン ※テレビ朝日版
リオ・ブラボー ※NETテレビ新版
ワーロック
11人のカウボーイ
録音スタジオ

アートセンタースタジオ
関連人物

春日正伸
山田太平
PAG
日曜洋画劇場
東北新社
ブロードメディア
梨衣名

梨衣名（りいな、本名：李 建伊（リー・チェンイ）、1990年3月14日 - ）は、ファッションモデル。中華人民共和国出身の日本育ち。女性誌『CanCam』の元専属モデル。茨城大学工学部知能システム工学科卒。英語名ではLeena Lee（リーナ・リー）
来歴

1990年3月14日に山東省の泰安市生まれ。機械設計エンジニアで工学系の大学教授だった父親と小学校教師だった母親のもと9歳までを中国で育ち、父親の日本企業への就職に伴い10歳で来日。以降小学校から高等学校と公立学校に通った。家庭環境の影響で日本語/中国語/英語が堪能で特技は中国武術。
幼い頃、手書きで図面を引いていた父の姿にあこがれて、茨城大学工学部に進学。ロボット工学や人工知能を学んだ。在籍中の18歳のときに『レプロガールズオーディション2008』に出場し、グランプリを獲得すると同時に、100万円の賞金、レプロエンタテインメントとの専属契約ならびに東京ガールズコレクションへの出場権を獲得。『次期新垣結衣』などと謳われた。
2009年から2014年まで女性ファッション雑誌『CanCam』の専属モデルとなる。各種テレビコマーシャルやファッションショーにも登場するようになった。ひと月あたり10本から15本にのぼる写真撮影やランウェイの仕事のために茨城と東京を往復する日々を送っていた。
2016年、『ドラゴンクエストX』第5期初心者大使に就任。
2019年5月、レプロエンタテインメントを退社。
プログラム言語C++を学習しており、ネットで調べた情報を基に自動掃除機を自作した事を「DQⅩTV」2016年2月23日放送分で語っている。
出演 > 雑誌

『CanCam』（専属：2009年 - 2014年）
出演 > ショー

東京ガールズコレクション：2009年春夏、2009年秋冬、第10回、2010年春夏、2010年秋冬、2011年春夏、in 名古屋
神戸コレクション：2009年秋冬、2010年春夏、2010年秋冬、2011年春夏、2011年秋冬
Girls Award：2010、2010年秋冬、by CROOZ blog 2011 SPRING／SUMMER、2011年秋冬
CanCam
その他
出演 > 舞台

ナポリの男たちch特別回『舞台・ナポリの男たち』（2021年7月8日 - 19日、ヒューリックホール東京） - 天野八朗/しゆみ/ハーチェス妹 役
冒険者たちのホテル〜ドラゴンクエストXに集いし仲間たち〜（2024年2月7日 - 12日、品川プリンスホテル クラブeX）
出演 > テレビ番組

『SHIBUHARA GIRLS』（2011年1月8日 - 4月9日、MTVジャパン） 共／ソンイ
『なかよしテレビ』（2008年10月27日、2011年10月20日／11月24日／12月1日、フジテレビ）
『ゲーマーズTV 夜遊び三姉妹』（2011年10月7日／14日／21日／28日、日本テレビ）
『ハケンOLは見た!』（2010年10月5日 - 2011年6月28日、テレビ東京）
『ドスペ2』（2009年3月1日／29日、テレビ朝日）
『ダウンタウンのガキの使いやあらへんで!』(2014年8月10日 日本テレビ) - ガキの使いメンバーが都内某所をプライベートの有名人に会うまでひたすら歩き続けるという企画。有名人に会うまでぶらりし続けましょう!代官山編にて
『ビートたけしのTVタックル』（2015年2月17日／8月24日／9月14日、テレビ朝日）
『芹澤信雄のゴルフアカデミー』（2015年2月 - 、WOWOW）
『ネプ&イモトの世界番付』（日本テレビ） - G20 中国代表
『MADE IN FICTION』（2015年9月11日 - 、名古屋テレビ） - 主演
『タモリ倶楽部』（2015年12月12日／2016年10月22日／2018年1月5日、テレビ朝日） - ゲスト
『明石家さんまのコンプレッくすっ杯』（2016年3月18日 - 、テレビ朝日）
『指原カイワイズ』（2016年6月2日 、フジテレビ）
『ザ・プロファイラー 〜夢と野望の人生〜』「則天武后」（2019年11月14日 NHK BSプレミアム）-  ゲスト
『レギュラー番組への道／まなぶんかい!』（2022年2月4日／2月11日 、BSプレミアム）- ゲスト
出演 > テレビドラマ

真夜中の百貨店Season2（2016年10月 - 、BSジャパン） - バイヤー 役
出演 > インターネット番組

WOWOWぷらすと（2013年11月13日 - 、ニコニコ生放送） - ぷらすとガールズ
ドラゴンクエストX TV（2016年2月23日・3月4日 - 、ニコニコ生放送） - 第5期初心者大使
ぷらすと by Paravi - ぷらすとガールズ（不定期出演）
出演 > ラジオ番組

『オレたちゴチャ・まぜっ!〜集まれヤンヤン〜』（2015年4月18日 - 2016年4月9日、MBSラジオ）
出演 > 音楽PV

『Girl』（ユンナ、2009年）
『もっともっとキミを教えてよ』（Juliet、2010年）
『HEAT feat. RED RICE from 湘南乃風&Ms.OOJA』（NERD HEAD、2011年）
出演 > テレビCM

『リーゼ・ヘアリフレッシャー』（花王、2009年6月より）
『CanCam』（小学館、2009年8月より） 共／徳澤直子、西山茉希、南條有香、高橋メアリージュン、近藤しづか、木野まこと、峰えりか、舞川あいく、平山美春
『洋服の青山「就活スーツ」』（青山商事、2009年より）
トヨタ・レクサスIS（トヨタ自動車、2021年）
ANA70周年記念CM（全日本空輸、2022年）
出演 > その他

『モテパン』（2012年1月26日発売、グンゼ） ― 下着ブランド『BODY WILD』の企画商品。今井りか、木下ココ、紗羅マリー、福田明子、平山美春、マギー、ソンイ、中村瑠璃奈、大桑マイミとともに、デザインを自ら手掛けた。
川瀬二郎

川瀬 二郎（かわせ じろう、1914年6月5日 - 1981年12月15日）は、日本の経営者。日本板硝子元社長。福岡県出身。
経歴・人物

1935年に彦根高等商業学校を卒業し、同年4月に日本板硝子に入社。1962年5月に取締役に就任し、1966年5月に常務を経て、1971年5月には社長に就任。1976年5月に取締役相談役を経て、1978年6月には相談役に退いた。
1981年12月15日、肝硬変のために死去。67歳没
柿岡藩

柿岡藩（かきおかはん）は、常陸国新治郡柿岡（現在の茨城県石岡市柿岡）に存在した藩。居城は柿岡城。
藩史

寛永元年（1624年）、常陸国新治郡柿岡をはじめ、上野や下野において5000石の知行を領していた稲葉正勝は、常陸国真壁郡に5000石を加増されて1万石の大名となり、柿岡藩が立藩した。正勝の父は小早川秀秋に仕えた家老・稲葉正成。母は稲葉重通の養女・春日局で、正勝自身も徳川家光に仕えていたことから加増を受けたのである。
正成が寛永5年（1628年）に死去すると、正勝は家督と父の所領であった下野国真岡藩を継ぐこととなって真岡に移ったため、柿岡藩は廃藩となり、その所領は真岡藩に組み込まれた。