★阿修羅♪ 現在地 HOME > 掲示板 > テスト6 > 369.html
 ★阿修羅♪
次へ 前へ
OSはどこへ向かうのか---アーキテクチャ(上)
http://www.asyura2.com/0311/test6/msg/369.html
投稿者 シジミ 日時 2004 年 1 月 22 日 21:12:57:eWn45SEFYZ1R.
 

http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20040116/1/

WindowsやMacintoshのユーザーであれば,誰しも一度は「回復不能なエラーが発生しました」というエラーや「爆弾マーク」を目にしたことがあるはずだ。アプリケーションを利用しているときにまったく操作を受け付けなくなってしまい,途方に暮れたこともあるだろう。
 ハングアップするのはバグがあるからだ。ただWindows 2000/XPやMac OS Xといった最近のOSでは,アプリケーションのバグによってハングアップする可能性は少なくなった。OSがアプリケーションに直接ハードウェア資源を触らせないからだ。例えばアプリケーションはOSから割り当てられたメモリー空間にしかアクセスできない。だから間違って他のアプリケーションのデータを壊したり,システム・データを破壊してOSの動作をおかしくするようなことはない。
アプリとカーネルの動作モードを変える
 こういったメモリーなど,システムの資源をうまく管理するのがOSの主要な役目である。なかでもCPUとメモリーがコンピュータにおける最も重要な資源である。これを管理するのが「カーネル」だ。カーネルとアプリケーションは実行する動作モードが明確に異なる。
 ほとんどのCPUは複数の動作モードを備えている(図1)。
一般にCPUには,「カーネルモード」や「スーパバイザ・モード」と呼ぶ特権モードと,通常のプログラムが動作する「ユーザーモード」がある。ユーザーモードで動作するプログラムは一種の「枠」がはめられている。ユーザーモードで動作するアプリケーション・ソフトに障害が発生しても,OS全体を巻き込むことはない。
システム・サービスがどこで動くか
 ところでOSが管理しなければならない資源はメモリーとCPUだけではない。アプリケーションに対してネットワーク・アクセスやファイル管理といったさまざまなサービス「システム・サービス」も提供する。アプリケーションだけでなく,ほかのハードウェア資源の管理やシステム・サービスをユーザーモードで動作させれば安全性は向上する。
 この考えに基づき,カーネルの機能を最小限に絞ったのが「マイクロカーネル」だ*1。具体的には,プロセス間の通信や,CPU実行時間の割り当て(スケジューリング)といった最小限の機能だけを提供する。プロセスとはCPUやメモリーといった資源を割り当てる単位である。マイクロカーネルでは,ほとんどのシステム・サービスがユーザーモードで動作する。個々のシステム・サービスがカーネルや他のシステム・サービスを破壊することがないため,OS全体が停止する可能性を低くできる(図1)。
 これに対し,システム・サービスとカーネルがともにカーネルモードで動作するOSのカーネルを「モノリシック・カーネル」と呼ぶ。モノリシック・カーネルでは,カーネルが動作するメモリー空間に数多くのシステム・サービスが存在するため,あるサービスのプログラムが別のサービスが使用しているメモリー上のデータを破壊する恐れがある。安全性の面で言えば,カーネルが他のプログラムから隔離されているマイクロカーネルが優れている*2。
性能追求と相容れぬマイクロカーネル
 ところが現在のところ,商用OSで純粋なマイクロカーネルを採用する製品はない(図2)。米Microsoft社のWindows NT 4.0やWindows 2000はマイクロカーネルをベースにしているが,モノリシック・カーネルに近い構造である。米カーネギーメロン大学が開発したマイクロカーネルの代名詞となる「Mach」を採用した米Apple Computer社の「Mac OS X」も,モノリシック・カーネルだ。「純粋なマイクロカーネルは商用OSでは成り立たない」(アップルコンピュータ プロダクトマーケティングの櫻場浩課長)。その主な理由はモジュール同士が連携するためのオーバーヘッドの大きさにある。
 マイクロカーネルの場合,アプリケーションがOSのシステム・サービスを呼び出すのにマイクロカーネルが介在する。あるアプリケーションがOSのシステム・サービスに処理を依頼したとすると,ユーザーモードと特権モードをまたいだプロセスの切り替え(コンテキスト・スイッチ)が4回発生する(図3)。コンテキストとは,プロセスの状態のこと。コンテキスト・スイッチが起こると,CPUはレジスタのデータを保存し,次に実行するプロセスのデータをレジスタに読み込む。この処理は結構時間がかかる。
 モノリシック・カーネルの場合は,アプリケーションが特権モードのシステム・サービスを呼び出しても,カーネル内で処理が完結するためコンテキスト・スイッチの数は2回で済む。マイクロカーネルに比べてシステム・サービスを呼び出すオーバーヘッドは少ない。そのため,パフォーマンスの面ではモノリシック・カーネルに分がある。
(高橋 秀和)

*1
このほか,(1)ハードウェアに依存するプログラムの割合が少ないので別アーキテクチャのハードウェアへの移植の負担を軽減できる,(2)機能を追加するのが比較的容易,といったメリットもある。
*2
このほか,デバイス・ドライバの動的な導入が難しいという問題もあった。例えばUNIXでは,デバイス・ドライバがカーネルに静的にリンクしていたので,デバイスを入れ替えるたびにカーネルを再構築しなければならなかった。最近ではこの問題は改称されている。例えばLinuxでは,動的に入れ替え可能な「モジュール」としてデバイス・ドライバを実現できる。


図1●OSの基礎プログラム「カーネル」を保護する特権モードとユーザーモード
特権モードで動作するプログラムとユーザーモードで動作するプログラムとでは,バグがあった際の安全性に差が出る。


図2●主なOSが採用してきたカーネル・アーキテクチャの推移
特権モードで動作するプログラムが少ない「マイクロカーネル」と,特権モードで動作するプログラムが多い「モノリシック・カーネル」の二つに大別できる。


図3●マイクロカーネルとモノリシック・カーネルのオーバーヘッドの違い
アプリケーションからカーネル,カーネルからシステム・サービスといった具合に,ユーザーモードと特権モードをまたいだプロセスの切り替え(コンテキスト・スイッチ)の回数に差が出る。

 次へ  前へ

テスト6掲示板へ



フォローアップ:


 

 

 

 

  拍手はせず、拍手一覧を見る


★登録無しでコメント可能。今すぐ反映 通常 |動画・ツイッター等 |htmltag可(熟練者向)
タグCheck |タグに'だけを使っている場合のcheck |checkしない)(各説明

←ペンネーム新規登録ならチェック)
↓ペンネーム(2023/11/26から必須)

↓パスワード(ペンネームに必須)

(ペンネームとパスワードは初回使用で記録、次回以降にチェック。パスワードはメモすべし。)
↓画像認証
( 上画像文字を入力)
ルール確認&失敗対策
画像の URL (任意):
投稿コメント全ログ  コメント即時配信  スレ建て依頼  削除コメント確認方法
★阿修羅♪ http://www.asyura2.com/  since 1995
 題名には必ず「阿修羅さんへ」と記述してください。
掲示板,MLを含むこのサイトすべての
一切の引用、転載、リンクを許可いたします。確認メールは不要です。
引用元リンクを表示してください。