microkernel/log0
http://oswiki.osask.jp/?microkernel%2Flog0
[
トップ
] [
編集
|
凍結
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
ルール(重要)
[
最新の80件
]
[
人気の80件
]
最新の30件
2024-02-12
(AT)BIOS
2023-07-21
projects
2022-01-21
PCIC
2021-10-27
(PIC)8259A
2021-08-27
K
2021-08-24
members
tyama501
2019-11-19
(PCI)vendor
2019-08-24
VGA
2019-03-24
introduction
2019-03-18
impressions
2017-05-12
administration
2017-05-09
RecentDeleted
2017-04-04
seiya
segmentation
2016-08-10
qemu
pekon
pcecho
pcctol
paging
2016-08-09
bo
2016-07-29
(PCMCIA)CIS
InterWikiName
2015-02-02
Zakky
MenuBar
2015-01-18
TI
2014-10-17
nkenkou
microkernel/log0
microkernel
memcard/speed
Counter: 1785, today: 2, yesterday: 2
最近のマイクロカーネル構成法の実装系はサービスプロセスのページをカーネル空間にマッピングするのでカーネルモード←→ユーザモードの切替はモノリシックカーネルと同程度になり、効率もなかなかのものです。 --
sh
?
2003-10-24 (金) 13:19:25
ここでの話題は、たぶんIA-32に限定して差し支えないと思うので、とりあえずIA-32に限定しての発言ですが、仮にページ空間を同じにしたとしても、カーネルモード←→ユーザモード(つまり、リング0←→リング3)の切り替え回数は格段に違うので、やはり効率は落ちると思われます。それでも、その寄与はごく僅かで問題視するほどではない可能性も十分にあります。 --
K
2003-10-24 (金) 14:07:25
サービスプロセスをカーネル空間にマップするということは、セグメンテーションを使っているということですね、たぶん。それは正しいやり方だと思います。 --
K
2003-10-24 (金) 14:10:34
文書を編集していたらどうも入力ボックスを消してしまったようです。申し訳ありません。どなたか詳しい方がおられましたら直していただけないでしょうか。お手数かけます。 --
sh
?
2003-10-27
↑直しました。・・・で、今ごろになってshさんの言われている意味が分からなくなってきました。「サービスプロセスをカーネル空間にマッピングする」というのは一体どういう意味なんでしょうか。カーネル空間って、「カーネルモードでしかアクセスできない空間」(1)と定義されるものですか?それとも、「ユーザモードでもアクセスできる空間で、システム全体で共有できる」(2)と定義されるものですか?(1)だとしたら、サービスプロセスがカーネルモードで走らなければいけないことになりますから、それはもはやマイクロカーネルとは言い難いものです。モジュール化されたモノリシックカーネル、というほうが近いでしょう。(2)だとしたら、セグメンテーションを使わない限り、システムはアプリの暴走に対して無防備になります。・・・僕は文脈から(2)だと推定して、それでまさか無防備にするなんていうのはマイクロカーネルとして意味を成さないと思うので、セグメンテーションを使ったのだろうと想像しました。あっているのでしょうか? --
K
2003-10-27 (月) 15:01:55
(1)です。ダイナミックモジュールの利点をマイクロカーネルに取り入れた構成法といったところでしょうか。 --
sh
?
2003-10-27 (月) 15:51:13
(1)なんですか・・・。それはもはやマイクロカーネル設計の敗北ですね。僕はそれをマイクロカーネルの発展版であるとは思いますが、しかしそれはもはやマイクロカーネルではありません。そのように提供されるサービスは、そのサービスが暴走すればカーネルも破壊されます。つまりマイクロカーネルの特徴であった「保護例外を活用する」ができていないわけです。こんな方法のものをマイクロカーネルというのがまかり通っているのなら(それにしてもひどい言葉の誤用だと思う)、本当のマイクロカーネルは絶滅したのかなあ。そして僕がOSASKでやっていることもまさにそういうことで、だから僕はOSASKをマイクロカーネルではないと強調していたわけです。そしてこの方法である程度のまともな保護を提供し続けるには、セグメンテーションの利用が避けられないというのも持論です。 --
K
2003-10-27 (月) 17:17:57
一面性だけで評価するとろくな評価になりません。”機構とポリシーの分離”といった観点からマイクロカーネルを評価することをお勧めします。 --
sh
?
2003-10-28 (火) 12:52:19
shさんはマイクロカーネルを誤解なさっているかもしれません。サービスを分離可能にしてモジュール化することとマイクロカーネルであることは全く独立の概念です。モノリシックでモジュール化されたOSはありますし(Linuxもそのひとつです)、マイクロカーネルで非モジュールなOSも構築できます。この辺がごっちゃになってモジュール化されたOSを(そしてそれがマイクロカーネルじゃないのに)マイクロカーネルだと言ってしまう人がたまにいますが、それは言葉の誤用でオフィシャルな場では通用しません。 --
K
2003-10-28 (火) 13:08:48
実装と概念を混同されているように思います。Linuxのダイナミックモジュールは”機構とポリシーの分離”を取り入れた実装です。Linuxをモノリシックカーネルと決め付けている人が多いようですが、マイクロカーネルの特徴を多くもっています。多くの実装系ではモノリシックカーネル、マイクロカーネルの両者の特徴を持つのが普通です。別にマイクロカーネルだからこうしなければならないなどということはありません。 --
sh
?
2003-10-28 (火) 13:25:47
勘弁してください。「機構とポリシーの分離」はマイクロカーネルであってもなくても実現できることで、だから一般にこれは「モジュール化」と呼ばれています。これはマイクロカーネル以前から存在した概念で、古くは構造化プログラミングに起源を持ちます。そしてLinuxはモノリシックカーネルです。それはLinus氏がなんども言っていることです。なぜなら、基本的にサービスがカーネルモードで走るからです。同時にLinus氏は、Linuxは早期からモジュール化しているとも言っています。・・・念を押しておきますが、僕はshさんの言おうとしている内容そのものには基本的に賛成です。モジュール化は正しい方向性だと思います。しかし、それをマイクロカーネルと関連づけてここて論じてほしくないだけなのです(典型的な言葉の誤用なので)。 --
K
2003-10-28 (火) 13:36:39
保護機能とマイクロカーネルは不可分だという事なんですか?よくわかりませんが印象としては特権モードとユーザーを分離するという考え自体がモノリシックそのものの様にも思えるのですが?まあとりあえず認証済みのユーザーサービスが特権モードにあったとしても、そのサービスがカーネル機能の一部を乗っ取って直接IOとか弄ったりするわけ(カーネルモジュール)でなければ、あくまでカーネルのとは独立したユーザーサービス群のままなのではないかと? --
2003-10-29 (水) 07:02:10
はい、僕はそのように理解しています。>保護機能とマイクロカーネルは不可分 サービスをカーネルから分けるという考え方は、マイクロカーネル以前から行われてきたことです。それをユーザサービスと呼ぶのは構わないと思います。本義に帰ったマイクロカーネル的視点で観るなら、認証済みのユーザサービスをカーネルモードで走らせるというのは、カーネルを大きくするのと同じ事です(分離可能にすることがマイクロカーネルということではないから)。何をカーネルと呼ぶかという問題ではありません。何をカーネルモードで走らせるかという問題です。 --
K
2003-10-29 (水) 10:57:12
「マイクロカーネル」という言葉の状況は、「ハッカー」という言葉の状況に似ています。元々の意味が分からない人が誤って使い始めて、意味を二重に持つようになってしまいました。そのうえ、誤解されているほうの「マイクロカーネル」はモジュール化OSを指しているようなので、マイクロカーネルでないのは非常によろしくない印象を持っている人がいるのでしょう。これは実に嘆かわしいことで、OS作者が自分のOSを「マイクロカーネルではない」と明言することをためらわせるわけです。僕やL氏やLinus氏が、「マイクロカーネルって本当にいいの?モジュール化は極めて重要で採用するけど、それはマイクロカーネルと関係ないよ」という共通の結論に立ったことをもう少しまじめに考えて、「マイクロカーネル」という語をできるだけ正確に使うようにしていただきたいです。・・・言葉の使い方が噛み合わなければ、まともな議論はできません。 --
K
2003-10-29 (水) 11:05:22
ひつこいようですがカーネルの実装と概念がまったく区別できていません。また、カーネル構成法とプログラミング構成法の区別もできていません。LinusがLinuxをモノリシックカーネルだと言っているのは概念としていっているわけで実装のことを言っているわけではありません。これはLinus自体が指摘(Mach批判をした時の補足で)していることです。あと、モジュールとダイナミックモジュールを混同しているようですが意味論ではまるで別物です。この手の実装と概念を混同した議論はうんざりしますが、マイクロカーネルを考える議論の場を作ってくれたKさんには感謝しています。どうもKさんの書き込みは非常に攻撃的なものでとても議論できるものではありません。どうかKさんの頭にある”本当のマイクロカーネル”を一度クリアされた方が良いと思います。 --
sh
?
2003-10-29 (水) 11:07:24
元々の意味が分からない人が誤って使い始めて、意味を二重に持つようになってしまいました。>そんな話ははじめて聞きました。どこからそのような情報を仕入れたのかお聞きしたいです。 「マイクロカーネル」はモジュール化OS> 全然ちがいます。カーネルにおける”機構とポリシーの分離”を勘違いしています。 --
sh
?
2003-10-29 (水) 11:12:16
ごめんなさい。僕は理解できない議論には参加できません。 僕には、実装と概念という話は、単に「(僕にとって)間違った」マイクロカーネルを受け入れさせようという方便にしか見えません。・・・話を整理します。僕にはshさんの発言が「モジュール化」を「マイクロカーネル」の特徴の一つとして挙げているようにみえます(既にある概念にちゃんと名前が付いていたのに、その名前をわざわざ混乱しやすいように塗り替えただけじゃないかと)。もしそうではなくて、shさんのいうマイクロカーネルの「概念」が「モジュール化」とは異なると具体的に説明していただければ、僕の指摘は崩れます(そもそも僕は「マイクロカーネル」は実装のための設計方針だと思っているので、マイクロカーネル概念を導入したモノリシックカーネルというのは意味が分からないです。そんな分かりにくい語を使う意味すら分かりません)。そうでなければ、間違った解釈を許してくれる人がいることに便乗しただけの話題にしか見えません。 --
K
2003-10-29 (水) 11:19:53
これを信頼に値する証拠として挙げるわけではありませんが、
http://pc.2ch.net/test/read.cgi/os/1065940450/
はどうでしょうか?ここではモジュール化という語を普通に使い、これをマイクロカーネルに関連付けることはしていません。 --
K
2003-10-29 (水) 11:42:10
できれば僕が読んだ書籍の名前を挙げたいのですが、図書館でちらちら読んで勉強したので、正確な書名をほとんど覚えていません。大変申し訳ないです。 --
K
2003-10-29 (水) 11:44:17
そこを読むとLC氏が「「マイクロカーネル」とは、ファイルシステム、タスクロード、GUIシステムなどのOSの基本機能を、「タスク(プロセス)」にほぼ等価な形態で実装する方式のことを言います。」 「次の理解は間違いです:(1.略)2. OSの一部をユーザーモードで実行できるようなものをマイクロカーネルという」と書いてます。これってKさんが主張するマイクロカーネルの用件とは違うのでは? --
I.Tak.
?
2003-10-29 (水) 17:20:14
はい微妙に違います。というか、2.の部分については難しいところで、もしかしたら僕よりもLC氏のほうが正しいかもしれません。実は僕も以前はLC氏と同じ見解を持っていた(=ユーザモードかカーネルモードかではなくて、ユーザタスクかどうかだと思っていた)のですが、#osdev-jの人にいろいろ話を聞いて確認したら、今の僕の見解のほうが一般的のようです。・・・で、とにかく今問題になっているのは、モジュール化をマイクロカーネルとは独立して論じるべきかどうかという点なので、とりあえずその観点で見てください。これが片付いたら、I.Tak.さんが提起した件の議論をしたいです。 --
K
2003-10-29 (水) 17:43:57
単純な分割であればマイクロカーネルとは関係ないものでしょうが、クライアント/サーバ的分離であればマイクロカーネルの特徴なのでは? --
2003-10-29 (水) 19:17:05
うーん、また微妙な指摘ですねえ。僕の理解だとこうです。
マイクロカーネルだと、少なくともカーネルとそれ以外の周辺サービスとは分割される。
僕の見解だと、これは目的ではなく、結果。つまり、分離するためにマイクロカーネルという設計手法が提案されたわけではなく、上記のように保護例外を活用してOSの開発を安全かつ簡単にする過程で、結果的に分割される(モノリシックでも簡単に分割できるのだから、分割だけを理由にマイクロカーネルを採用するのはおかしいと思う)。
しかしマイクロカーネルじゃなくても分割はできるし、むしろ分割してない例のほうが今となっては少ない。
shさんの見解だと、これこそ「マイクロカーネルの特徴を取り入れた」設計ということになる。
僕の見解だと、マイクロカーネルが出現する前から周辺サービスの分割はトレンドになっていたので、これをマイクロカーネルに関係した特徴だと考えるのははなはだ疑問。
分割のレベルというか、分割の度合いというか、つまりはそういうことを↑のかたは指摘なさっているのだと思いますが、やはりこれもマイクロカーネルではないとできないという性質ものではないし、マイクロカーネルでも組み込み用とかだと多分そこまで強く分割しない場合もありそう。
だからこれも「モジュール化」として捉えるのが妥当じゃないでしょうか。というか、これをあえてマイクロカーネルに属する概念にする理由が分かりません。
しかしこのモジュール化の研究者の多くは、確かにマイクロカーネル支持者だったような印象はあります。そのせいなのかな、モジュール化がマイクロカーネルの特徴だと誤解されやすいのは。なんにしてもモジュール化はマイクロカーネルであってもモノリシックであっても、そのどちらでもなくても、どんなタイプの設計手法でも取り入れられる応用範囲の広い設計手法です。
どうでしょうか?お返事を待ちます。 --
K
2003-10-29 (水) 19:51:54
マイクロカーネルの正式な定義というのは存在するんでしょうか?各社各人各様の「マイクロカーネル」が存在するような気が。と言うものの、僭越ながらどちらにしろ言葉の本来の定義についてはページを分けるなどして、ここではKさんがマイクロカーネルを定義しておいて、本来の実装に関する議論をできるようにしたほうが好ましいのではないかと。 --
e
?
2003-11-01 (土) 17:56:17
その提案は建設的だと思われるので、僕は受け入れます。・・・でも何にしても、なぜ僕がそのような定義を選択したかは、「ある程度」は議論してもいいと思います。ということで、しばらく様子を見た後で、LC氏の定義と僕の定義の食い違いについての僕の見解を書き込もうと思います。そのときに、上記のうちのモジュール化に関する議論は、ページを分けるということまではしませんが、セクションを分けて整理する予定です。 --
K
2003-11-02 (日) 00:16:02
個人的印象ではモジュール化という場合は主に機能的分割(縦割り)で、上下層に薄くスライスする様な責任分担の時はあまり使わないと思うんですけど、変でしょうか? --
2003-11-02 (日) 01:00:13
上の方でいうユーザサービスは、IA-32の特権モードで走っているだけで、カーネルの特権を使ってないのではないでしょうか?、それをカーネルの一部と言うならば、DOSエクステンダ汎用のアプリでもカーネルの一部ということになって、なんだか違和感があります。 --
2003-11-02 (日) 01:43:40
モノリシックやマイクロカーネルといった語は、今となっては「分類」ではなく「実装戦略」でしかないのでは?。CISC/RISC論争と同じようなものと私は認識しています。特定のOSを想定して「これはマイクロカーネルか否か」と論じるのはナンセンスかと。--
もなか
?
2003-11-02 (日) 10:13:05
スライスの話へのレスです: たしかに、そういうときってレイヤっていいますねえ。でも僕の持っている印象では、レイヤというのは分割されたブロック間の有機的な結合関係の分類に使う語であって、レイヤに属するここのブロックは、モジュールと呼ぶ場合も結構ありそうです。「第二レイヤに属する、データベースサーバモジュール」とか。 --
K
2003-11-02 (日) 11:07:32
DOSエクステンダの話へのレスです: もしDOSがマイクロカーネルであれば、DOSエクステンダ汎用アプリも、そもそも普通のアプリも(リアルモードも特権命令を実行できるのでリング0と考えていいと僕は思います)、カーネルの一部であると解釈するべきで、つまりマイクロカーネルOSとしては大変な駄作といえるでしょう。しかしDOSはマイクロカーネルではなく、モノリシックカーネルです。モノリシックカーネルは、「すべてのOSサービスがカーネルモー匹覗?OSである」と僕は理解しております(アプリがカーネルモードで走るか、ユーザモードで走るかについては、モノリシックでは言及されていない)。その観点から見れば、DOSはモノリシックカーネルOSとしては全く問題はありません。・・・で、特権モードで走っているだけで、カーネルの特権を使ってないとのことですが、それはいささか無理がある気がします。もしサービスにバグがあった場合、やっぱりカーネルは破壊されてしまいます。 --
K
2003-11-02 (日) 11:20:25
もなかさん、ありがとうございます。確かにそういう面はあるように思います。たとえば、あるOSは、同じサービスプログラムをユーザモードでもカーネルモードでも走らせられるようになっていて、開発中はユーザモードでそしてデバッグが済んだらカーネルモードで走らせられるかもしれません。このような仕様はマイクロカーネルにもモノリシックにもなれるので、まさにCISC/RISC論争と似た状況だと思います(実はこの構成はOSASKの方針でもあります。というか、今のOSはこういうのが多いんじゃないかと勝手に想像しています)。このようなOSに対して、マイクロカーネルか否かを論じるのはナンセンスだと僕も思います(ということで僕の説明ではOSASKはマイクロカーネルでもモノリシックカーネルでもない、としています。これはつまりOSASKにおいては、全てのサービスがカーネルモードで走るとか、全てのサービスがユーザモードで走るという状況を構築することは可能ですが、どちらもレアなケースであると考えて、中間的な状態であることがほとんどだろうと思ったからです)。・・・しかし、モノリシックカーネル的な手法(たとえばサービスをカーネルモードで走らせること)を、「これはマイクロカーネルの特徴の一つだ」と言い切られてしまうとそれは違和感があるわけで、僕が問題にしているのもまさにそういうことです。・・・実装戦略として、というのは非常によい説明だと思います(さすがです)。特にどっちともつかないようなOSでしかも開発途上の場合、「マイクロカーネルで行く」と明言されていれば、その時は不十分でもいずれはマイクロカーネル構成になるのだろうということが伝わります。あとは純粋なマイクロカーネルで出発して、途中で一部性能のための妥協が入って、それでもそのままマイクロカーネルだと惰性で言いつつけている場合とかもありそうです。 --
K
2003-11-02 (日) 11:36:51
最近のmachやNTは惰性の好例ですね。:-) --
もなか
?
2003-11-02 (日) 12:04:45
サービスをカーネルモードで走らせることが特徴の一つだと言い切られてしまう…って誰かそんな事言ってましたっけ?単にだからといってマイクロカーネルでないと言うことはできないって話だったような? --
2003-11-02 (日) 12:0:53
すみません、ご指摘の通りです。お詫びして訂正いたします。正確に言うと、サービスをカーネルモードで走らせることは、マイクロカーネルとして問題のない行為である、と言い切られてしまう、です。 --
K
2003-11-02 (日) 12:17:19
「たとえばサービスをカーネルモードで走らせる」ってことがモノリシックカーネル的かどうかは判らんですよ。保護機能が無いようなMPUの上でも、マイクロカーネルを念頭に置いた設計はできますね。 --
もなか
?
2003-11-02 (日) 12:19:03
逆説的な例。たとえばvtundや多くのpppdはユーザモードで動きます。だからといってBSDやLinuxをマイクロカーネル的と呼べるでしょうか。 --
もなか
?
2003-11-02 (日) 12:31:06
おっしゃるとおりではあります。たとえば、マイクロカーネルOSがあって、それをV30に移植した、なんていう場合はまさにもなかさんのケースになると思います。しかし保護機能が使えるCPU上でも同じ構成になっていたら、やはりそれは「マイクロカーネル」としてはまずいと思うのです。でもそういうCPU上に移植した場合、僕だったら「V30ではプロテクトモードがないので、OSASK/V30はモノリシックカーネルです」と説明するほうを選ぶ気はします。・・・これは確認なのですが、「保護機能が無いようなMPUの上でも、マイクロカーネルを念頭に置いた設計はできますね。」というのは、具体的な例を挙げるとすれば、サービスをアプリケーションレイヤで走らせるような仕組みにしておくこととかでいいのでしょうか?・・・ああそうか、たとえばドライバモジュールがダイレクトにI/Oアクセスしないようにコーディングするスタイルを強制するとか、そういうこともありうるのか・・・。なんか自分で解決しちゃいました。独り言っぽくてすみません。 --
K
2003-11-02 (日) 12:34:27
その逆説的な例は、示唆に富んでいて大いに助かります。もなかさんの意図を察すると、僕がレスする必要はないのですが、まあ他の人のためにちょっと補足的なことを書いておきます(違ったら訂正してください)。わずかな個数のサービスをユーザモードに追い出しているうちはモノリシックだと言い続けてもみんな許してくれますが、これが進行してOSの基本的なサービスもユーザモードに追い出し始めると、これはもうモノリシックと言い切るのはつらくなるでしょう(何をもって基本的なサービスというかは僕にもよくわかりません。マイクロカーネルという語が生まれたときのOS論的観点で、基本的なOSサービスという語を考えるのが一番忠実かなあ)。しかしまだ追い出せそうなサービスがたくさん残っているのなら、これをマイクロカーネルというのもつらいところです。いわゆる「どちらでもない状態」だと僕は思います。・・・そういう連続的なニュアンスをもなかさんは逆説的な例で示唆なさったのではないかと。 --
K
2003-11-02 (日) 12:45:13
ある日突然「スレッドスケジューラ以外をユーザモードにするぞ」と言われたり「新しいヘテロジニアスマルチプロセッサ環境に対応させるぞ」と言われても、鬱病にならない設計です。:) --
もなか
?
2003-11-02 (日) 12:51:45
わかりやすーい!(笑) --
K
2003-11-02 (日) 12:54:04
「どちらでもない状態」を「どちらとも言える状態」とできないのは何が原因なんでしょうか? --
2003-11-02 (日) 12:59:31
まあ、"鬱病にならない設計"は言語やOS(のコア)やハードウェアが提供する保護機能を使うのが近道です。環境が許すならぜひ使うべきですが、無ければ実現不可能というものでもありませんよね。 --
もなか
?
2003-11-02 (日) 13:00:40
どちらとも言える状態ではないのか?: 僕の学んだところによれば、マイクロカーネルの説明としては、「追い出せるもの全部をユーザモードに追い出して」カーネルを極端に小さくするとされています。そしてモノリシック(一枚岩)の説明としては、「その対局として、あらゆるサービスをカーネルモードで実行するOS」という風に説明されていました。そしてこの両極端ではない、「どちらとも言えないような構成」がありうる、とも書かれていました(かぎ括弧は強調のためで、引用を意味するものではありません)。僕の説明はそれを踏襲したものです。出典が判明したらまた書きます(たしかけっこう古い本です)。 --
K
2003-11-02 (日) 13:12:51
その説明だといわゆるシェルの解釈次第で判断が割れてもおかしくない気がしますね。結局カーネル/ユーザーのモードというのは、ハードウエアの機能とは独立していると考えていいですよね?だとすれば、シェル等がカーネルに属すと考えればモノリシックだし、ユーザーに属すると考えればマイクロカーネルになるし。そこら辺はポリシーで決まってくるのかな? --
2003-11-02 (日) 14:19:45
シェルの解釈に帰着させるのは筋が違うでしょう。典型的なUnicesのシェルはユーザモードで動作します。 --
もなか
?
2003-11-02 (日) 14:30:49
僕も名無しさんの意見には反対です。その前の段落でカーネルモードとユーザモードの明確な定義があり、そこにカーネルモードとユーザモードの違いは、スーパーバイザモードかノーマルモードかの違いなどの、CPUの保護機構のことを指すと明記されていたように記憶しています。 --
K
2003-11-02 (日) 14:34:08
僕は名無しさんに逆に質問したいのですが、保護例外機能の活用以外にマイクロカーネルの定義を求めるかたは、なぜそのような解釈をなさりたいのですか?・・・その観点にどういう利点があるのでしょうか?とても気になります。ご意見によって僕の見解を変えることは多分ありませんが、面白い論点が眠っていそうなので、よろしければ教えてください(なんで一般的なCPU用語(カーネルモード・ユーザモード)を曲げてまでして、マイクロカーネルという語の意味を曲解しようとするのか?)。 --
K
2003-11-02 (日) 14:38:28
いや、ここでシェルと言ったのはOSASK等でいうシェルで単なる外殻という意味でなんですけど、というかどうもその説明だけだとマイクロカーネルというのは(小さな)Unices理想形って感じにしか思えないというかなんというか。 --
2003-11-02 (日) 14:51:03
CPUの保護機能はマイクロカーネルの実現にとって便利と思うのですが、CPUの保護機能をもってマイクロカーネルの定義を求めるのは、歴史的な順序が違いませんかね? --
もなか
?
2003-11-02 (日) 14:53:29
もともと保護機能は、高価なCPUを複数人がシェアするために実現されたもので、かなり以前からありますね。基本的な考え方は単一システムの仮想多重化です。一方、
1970
80年代に作られたマイクロカーネルOSの多くが、分散を視野に入れています。基本的な考え方は、多重システムの仮想単一化です。着想は正反対です。 --
もなか
?
2003-11-02 (日) 15:17:49
あれ?そうなのですか?>歴史的順序 僕は保護機能が先で、マイクロカーネルが後だと思っています。つまり、保護例外の仕組みがCPUに載るようになった後で、「これをううまく使うと新しいOS設計ができるんじゃないか?」という提案が、まさにマイクロカーネルなのではないかと。 --
K
2003-11-02 (日) 15:17:59
しかし、分散システムの要求の1つに、リソースの位置依存性排除がありました。つまり、マシンの向こうで動いているサービスを、同一マシン上に持ってきても、同様に動かねばなりません。ここで、マイクロカーネルと保護機能に接点が出てきます。 --
もなか
?
2003-11-02 (日) 15:18:06
今となっては分散はもっと上の(DCOMとかCORBAとか)サービスが担うことになり、分散OSは死に体で、ネットワークを跨ぐマイクロカーネルOSがあったことも忘れそうですね。マイクロカーネルと保護機能は直結しているかのような印象を受けがちですが、それは、同一筐体にマイクロカーネルを押し込む限定的な使い方においてのみ真である、というのが私の理解です。 --
もなか
?
2003-11-02 (日) 15:18:41
分散を突き詰めて、1つのOSサービスに1つのCPUを割り当てれば、マイクロカーネルであっても、CPUが提供する保護機能は要りませんね。 --
もなか
?
2003-11-02 (日) 15:19:21
入れ違った・・・。 --
K
2003-11-02 (日) 15:19:36
もなかさんの言われる分散OS系の話は、実は後で議論したいと思っている「マイクロカーネルの定義はユーザモードを活用することではなく、ユーザタスク(プロセス)の形で分離することだ」という論点にかぶっている気がします。僕はその定義も理解できます。というか、分散できるようにするにはタスクに分けないとまずそうですし。 --
K
2003-11-02 (日) 15:24:48
サービス一つにCPU一つなら保護はいらない?: 確かにいらない・・・しかし、すごくしょぼいサービスにも1CPUを割り振らなきゃいけないとしたら、それはなんとリッチだろう・・・(笑)。 --
K
2003-11-02 (日) 15:27:11
HTPentiumを割り振ったとしたら相当リッチでしょう:)が、自動車はすごくしょぼいサービスに(すごくしょぼい)1CPUを振るような世界になってきています。PCもキーボードに(すごくしょぼい)1CPUを振ってたりしますね。 --
もなか
?
2003-11-02 (日) 15:34:49
僕は分散OSとマイクロカーネルの関係についてはもなかさんとは違う順序だと思っていまして、まずCPUの保護機能が常識になって、そんでこれを使ったらこんなOS設計ができるとマイクロカーネル設計が発明されて、カーネルからサービスを切り離す際に強度のモジュール化をしようみたいなブームになり、切り離したやつを他のCPUで動かせたら分散だよね、これならマルチCPU上でなら単純なモノリシック構成よりも速くできそうでいいよね、みたいになって、そして今やグリッドコンピューティングで、ネットワークを介して分散をやろう、みたいな感じです。 --
K
2003-11-02 (日) 15:36:44
なるほど、デバイスのインテリジェント化は分散処理の一種と解釈できますね。ドライバはおかげで共通化できたり、楽できたりしていますし。>PCのキーボードの例 --
K
2003-11-02 (日) 15:42:10
マイクロカーネルがもてはやされたのは80年代後半です。TCP/IPの誕生が1981年でそれ以前から分散OSはありましたから、分散のほうが先でしょう。 --
もなか
?
2003-11-02 (日) 15:58:06
ところで位置依存性排除がユーザーモードに追い出す理由だとすれば、単に呼び出しコストの都合でそこにおいただけで本質的にはどこでもおける件のサービス等はマイクロカーネルとしての問題とはならないのではないでしょうか? --
2003-11-02 (日) 16:26:02
それはちょっと支離滅裂っぽくないですか?今までの話を整理すると、
OSのサービスをカーネルから分離すること:OSのモジュール化
OSのサービスを他のCPU上でも処理可能な形にまで高度に分離すること:OSの分散化
カーネルを極力小さくし、カーネル以外のサービスをユーザモードで走らせること:マイクロカーネル化
OSのすべてのサービスをカーネルモードで走らせること:モノリシックカーネル化
なのではないかと。それぞれに分かりやすい語が当てられているのに、これをあえて混ぜる理由はなんでしょうか? --
K
2003-11-02 (日) 16:28:53
もなかさんのお話は、ユーザモードがないCPUでもマイクロカーネル「的」な設計は可能であるということと、歴史的経緯の説明だと思うのですが・・・。 --
K
2003-11-02 (日) 16:34:23
僕は今でもマイクロカーネルは、「OSを簡単に作ったり拡張可能にするための設計方針の一つで、なるたけユーザモードを活用し、ドライバなどの開発に当たって保護例外などの各種サービスを積極的に活用する」ことだと思っています。 --
K
2003-11-02 (日) 16:36:53
"もなかさんのお話"は、Kさんがご理解いただいているとおりです。 --
もなか
?
2003-11-02 (日) 16:43:43
どんなにひどいマイクロカーネル解説書籍であっても、マイクロカーネルではオーバヘッドが大きくなると書いてあると思います。「その改良として」カーネルモードでサービスを走らせる方法が挙げられていることはありえるでしょう。しかしその改良をしたものはマイクロカーネルとは言い難いので、マイクロカーネルの説明には常にオーバヘッドへの言及があるはずです。もし、これがマイクロカーネル性をまったく損なわない改良であるなら、そもそも「マイクロカーネルはオーバーヘッドがある」という記述を最初に書く必要がありません。・・・そういうことを考えてみたことはおありですか?>名無しさん --
K
2003-11-02 (日) 16:45:17
もしマイクロカーネルとは言い難いものであれば、それは改良でなく改悪以下でしょう。それならマイクロカーネルとは別物として扱われているのでは? --
2003-11-02 (日) 16:50:21
使い勝手よりpureなマイクロカーネルであることのほうが重要なら、改悪以下でしょう。研究者やOSヲタ以外は、pureなマイクロカーネルであるより使い勝手を選ぶでしょう。そして、使い勝手の向上をもって、改良と呼ぶでしょう。 --
もなか
?
2003-11-02 (日) 16:55:11
ところで「位置依存性排除がユーザーモードに追い出す理由」ではありません。歴史上、便利に使える道具として存在しただけです。たとえばJava環境上で注意深く作れば位置依存性を排除した分散環境は作れますし、マイクロカーネルを強く意識した環境も作れます。しかし、(JavaOSを含む)Javaは特権モードの存在を仮定していません。 --
もなか
?
2003-11-02 (日) 17:00:55
もし速度の面でクリティカルな数個のサービスだけをあえてカーネルモードに取り込むなら、それはまあ苦しいながらも許されるでしょう。しかし大規模にやれば、マイクロカーネルではなくなるでしょう。・・・僕の読んだ本では、結局マイクロカーネルもモノリシックカーネルもみんな設計方針上の理想形として語られるのであって、実際は「どちらでもない」の方向に「多少」譲歩するわけです。先に挙げた僕の読んだ本では、その点が分かっているからこそあえて「どちらでもないOS」というのがでてくるわけです。Linuxだっていくつかのサービスはユーザモードで走っていますし。僕が不満なのは、そのマイクロカーネルにおける「(設計方針上の)改悪」をさも当然のように使えばいいじゃん、的な話題がここに出たことなのです。それは実際の実装の際に、それぞれのOS開発者が決めるべきことです(現実問題として妥協が必要なことは、議論する前からこのページに上記のように明記されていたのです)。ここでは、もっとマイクロカーネルそのものを議論したいのです。 --
K
2003-11-02 (日) 17:02:34
で、それらの改良がマイクロカーネルとは言い難いかというと、いまいちそうは思えないんですよね。それがマイクロカーネルの良さを損なうものであれば別種かと思いますが、その辺がまだハッキリしません。結局何が問題なんでしょう?。DOSエクステンダの様なアプリまで全部というようなものならともかく、シェル辺りが動いてたところで勝手な事をする心配はないし、むしろそこら辺に強制保護が必要な完成度の方がどうかと言う気がします。ちゃんと受け継いでいるものであれば正統なマイクロカーネルの一種と言って構わないのではないでしょうか?それを敗北だのなんだの言うのは違うと思う訳です。で、まあややこしいので、ここでは教科書的なマイクロカーネルについてのみ取り扱うとするなら、それはそれでいいのでは? --
2003-11-02 (日) 17:43:29
ええと、マイクロカーネルが生まれた背景には、とにかくOSがでかくなって、開発や改良が困難になったということがあります。どんなに頑張っても、バグを減らすことはできてもなくすことはできない的な発想とか、もしくはアプリを作るみたいに保護モードを使ってOSを開発できたらどんなに便利だろうとか、カーネル以外に万が一バグが残っていても、カーネルが落ちることだけは避けようといった、そういう考えが背景にあったのだと思います。 --
K
2003-11-02 (日) 17:54:29
良さは損なっていますよ。特にたくさんのサービスをカーネルモードで走らせてしまうなら。そんなことは許さないという思想こそマイクロカーネルとモノリシックカーネルを明確に分ける一線だったのに、見つけそこなったバグが残っていたら、心中していいわけですか。モノリシックでは効率を重んじて、安全性に目をつぶったわけです。開発言語や、開発手法(例えば綿密なテストをやるとか、セグメンテーションを利用するとか、開発中バージョンはユーザモードで走らせておく等)を工夫すれば、カーネルモードで走らせても十分なほどの安定性は得られるのだ、と考えているわけです。 --
K
2003-11-02 (日) 18:00:16
結局名無しさんは「なぜか」モノリシックを否定して語意を曲げてまでしてマイクロカーネルを擁護したいように見えるのですが、それはなんら客観的な根拠はなく、名無しさんの主観的なお気持ちの問題ではなかろうかと、僕には思えます。思想はモノリシック擁護なのに、それをマイクロカーネルと言わせたいのです(そうまでしないといけないと名無しさんを思わせたこの状況こそ、僕が敗北という言葉で表現したものです)。・・・とにかく、教科書的?な、というかオフィシャルな場で通用しうる語意の範囲で扱っていくつもりです。 --
K
2003-11-02 (日) 18:04:58
別にマイクロカーネルを擁護する気はないのですが、マイクロカーネルと主張するそれらのOSをそうでないと否定するだけの客観的な根拠を持ち合わせていないし、この場にも出ていないのではというだけです。というかモノリシック否定と受け取られたのはどのあたりの発言についてでしょうか? --
2003-11-02 (日) 18:14:49
邪推です。全てのサービスをカーネルモードで走らせることはモノリシックカーネルの特徴なのですが、そういうものでもあえてマイクロカーネルと呼ばせていいのではないかというニュアンスを感じます。つまりモノリシックを否定したいのではないかと。とくにこの見解に確信を持ったのは、「そこら辺に強制保護が必要な完成度」はおかしいという文脈で、つまり名無しさんとしてはリリース時にはマイクロカーネルであっても、すべてのOSコードがカーネルモードで走らせうるようなレベルに到達しうるという考えのように思うのです。これをマイクロカーネルと呼ばせることが、結局マイクロカーネルという言葉が何も意味しない状況へ向かっていると思いませんか。 --
K
2003-11-02 (日) 18:26:18
名無しさんは結局、(名無しさんの主観では)否定できないから否定するな、とおっしゃっているだけで、対案というか、つまり正しい定義はこれだというようなものを全く示していません。非常にむなしいです。非建設的です。もしそういうものを示していただければ、僕はその共通点と相違点を洗い出して、相違点がなぜ非マイクロカーネル的かを言えるわけです。なお、客観的な根拠がこの場には出ていないということですが、僕には、それぞれの設計思想を示す言葉がちゃんとあって、それを混ぜる理由がないではないか、というのが十分な論拠にみえます。もちろん、名無しさんにとってそう見えないことは見解の相違なので、しかたないですが。しかし、どういうものを挙げれば証拠と見なすのかさえ言わなければ、その指摘は議論以前です。 --
K
2003-11-02 (日) 18:33:38
長い・・・。落ち着いたら、eさんの提案通り、ページを分けることにします。マイクロカーネルが分かっている人には、つまらないやり取りでしかありませんし。 --
K
2003-11-02 (日) 18:49:53
いや、それこそ邪推というか、私個人が持ち合わせていないわけで、K氏の参考にされた本の著者の主観である可能性も否定できないし、過去の限定されたマシンでの話で、現在とは状況が違うかもというのもあるんじゃないでしょうか?とにかくそこら辺のマイクロカーネルの説明を見ると、そういう改良版があるということは載っていても、それがマイクロカーネルでないとする記述は他で見かけていないという話です。共通するものがマイクロカーネルの特徴である筈で、今までの話の中でも、保護機構が無くてもマイクロカーネルは可能という話があるので、別に使わなくてもマイクロカーネルにかわりはないのではないかと?そもそもユーザーモード等というのがCPU依存の何とかモードとは必ずしも連動するものではないと考えれば、別に誰の言った事が間違いということもないわけで、その考えを捨てるだけの材料がありません。K氏がモジュール化はマイクロカーネルの特徴と言えないと主張しているのと同じ事です。しかしもっと文句なしにマイクロカーネルの特徴だと言えるものが有りそうなんですけどねえ? --
2003-11-02 (日) 20:09:34
つまり、僕もLinus氏もL氏ももなか氏も、ついでに2chの人たちも、教科書のせいだかなんだか知らないけど、ほぼ共通の妄想に取り憑かれたと考えるわけですか。・・・まるで名無しさんのおはこを奪うようで申し訳ありませんが、そういう改良(改悪?)を施しても、それでもマイクロカーネルだと「明記」した本が一冊でもあったのでしょうか?ないのなら僕の解釈を否定できないので、受け入れるべきなのでは?そして、もなかさんが出した保護機構がなくても可能というのは、1CPUに1サービスを割り振るという、ジョークみたいなものですよ(まあ自動車ではそのジョークが本当になってしまった例もあるようですが)。 --
K
2003-11-02 (日) 20:24:50
僕はもはやまじめにとりあう気を失いつつあるのですが、名無しさんの説を受け入れるには、
(1)「カーネルモード」「ユーザモード」という一般的な語の解釈をなぜか特別に曲げて(普通のセンスなら言葉の意味を曲げるのではなく、新しい概念には新しい語をあてると思いますがね)、
(2)「マイクロカーネル」は「モジュール化OS」や「分散OS」と意味がかぶっている語だと思い込むか(つまり代替可能な語で、同時にモノリシックとの関係もあいまいになり、この語が何のためにあるのかさっぱりになる)、もしくはそれらとはかぶっていなくて、しかもCPUの実行モードとも関係のない定義を見出して(マイクロカーネルからこれらを除いたら一体何が残るというのだろうか・・・OSであることに以外に共通点があるんだろうか?)、
(3)もなか氏やL氏やLinus氏を間違っている、もしくは古い定義に基づいていると解釈する(というか一体どこの誰がいつ新しい定義を提唱したんだか・・・)、
とこれだけの非常に苦しい前提を受け入れなければいけないわけです。・・・一方僕の定義を受け入れるためには、
(1)たまにある変な説明を間違っていると解釈し(これはハッカー・クラッカーで経験済みなので僕にはそれほど違和感はありません)、
(2)純粋じゃないマイクロカーネルでも惰性で呼んでいることがあることを認め
ればいいわけです。しかも受け入れた結果が、名無しさんの説では「混沌」、僕の説では「整理」になると僕は思っています。どっちが説明力がありますかねえ。僕のほうは、なぜそのような誤解が起きたのかも説明できていますが、名無しさんのほうはさっぱりです。・・・まあ、なんですか、その「文句なしにマイクロカーネルの特徴だと言えるもの」を名無しさんが見つけてくださるまで、この話は今のままの低俗なレベルを脱することができないのでやめるべきだと思うのですが、いかがでしょうか。 --
K
2003-11-02 (日) 20:38:18
カーネルモードとは何でもありモード、ユーザーモードとは制限モードと解釈するのは特別に曲げる事ですか?特に問題ないですよね?それを実装するにあたってCPUの似たような機能を使うのは勿論悪くない考えだと思いますが、CPUがそこら辺の切り換え性能が悪くてオーバーヘッドが気になる場合は最終的にはそれが使えない事があるってだけの話でしょう?その場合は両者の区別を自主的に付ければいいと言うだけの話であって、それをキッチリしないならモノリシックのままでは無いでしょうか?何か混沌としていますか?勿論なんの特徴もないのであればモノリシックでいいものをわざわざマイクロカーネル化する必要も無いでしょうから、なにか特徴があるんだと思う訳です、例えば分散処理しやすいとか。そして同様にモノリシックにもまた別のそれがあるから適材適所で実際に良く採用されているのではないでしょうか? --
2003-11-02 (日) 21:56:57
あーなるほど、マイクロカーネルの特徴ですか。理想の典型は「いつでも落とせる」「いつでも増やせる」「どこにでも置ける」です。 --
もなか
?
2003-11-02 (日) 22:37:35
この理想を追求する為に、理想的なマイクロカーネルOSでは、決められたプロトコル以外でのモジュール間通信を存在させません。こっそり別モジュールのメモリにアクセスできる場合、マイクロカーネルであり続ける為には大変な注意を払う必要があります。現実には、設計者の理想がどうであれアクセスできるものにはアクセスする、というマーフィーの法則が残念ながら適用されます。よって、保守的に考えれば、マイクロカーネルを実現する為には、ハードウェアによる保護が必須です。 --
もなか
?
2003-11-02 (日) 22:49:42
ここで"ハードウェアによる"という表現を使ったことに注意して下さい。一般的なCPUを持つデスクトップワークステーション(PCとか)をターゲットにするなら(即ちK氏の領域でもあるデスクトップOSなら)、CPUが持つ保護機能を使うのがほぼ唯一の解です。教科書に出てくるサービスだけを想定してもCPUの数より多いですから。 --
もなか
?
2003-11-02 (日) 23:02:28
私の1CPUに1サービスというのは、半ばジョークですが、マイクロカーネルに"CPUの"保護機能が必要かどうかを判定する思考実験でもあります。 --
もなか
?
2003-11-02 (日) 23:17:27
思考実験だから現実性がないかというとそうでもなくて、例えばEzUSBの先に認証に必要なハードを詰め込んで、認証サーバを流し込む。ハードディスクを繋いでファイルサーバを流し込む。何もハードウェアが繋がっていないEzUSBにはアプリケーションを流し込む。PCにはメッセージパッシングを担う小さなカーネルがある。この構成は立派なマイクロカーネルですね。EzUSBに載っているCPUは8052で、保護機能はありません。 --
もなか
?
2003-11-02 (日) 23:26:58
…やっぱり半ばジョークか。:) でも組込みでは複数のCPUがあることは割と一般的で、QNXやVxWorksといった組込OSがマイクロカーネルを指向する遠因でもあります。あ、T-Kenrelもそうだっけか。 --
もなか
?
2003-11-02 (日) 23:37:59
って書くと、CPUが限られたPCではマイクロカーネル化の利点は無いと誤解されるかな。 --
もなか
?
2003-11-02 (日) 23:57:54
カーネルモードとは何でもありモード、ユーザーモードとは制限モードと解釈するのは特別に曲げる事ですか?: はい。拡大解釈です。地震では人が死ぬから、人が死んだら地震だ、というくらいに変です(この喩えもちと誇張が入っていますが)。カーネルモード・ユーザモードというのは、CPUモードを表わす語であって、OSや環境のモードではないのです。CPUによって、特権モードなどの名称が異なるので、一般的な名称としてよく使われます。Googleとかで調べれば、これがCPUの特権レベルの上下のみを示す語であることが分かるでしょう。これを勝手にオーバライドして話しても、たぶん誰にも通じませんし、怒られるだけです。ところで、じゃあ、これからはCPUを特定することなくIA-32におけるリング0に相当するCPUモードをなんと呼べばいいのでしょう? --
K
2003-11-03 (月) 00:18:52
もなかさんの今までの説明でも十分にていねいだったのですが、それでもあんなことをいうので、名無しさんはちゃんと読んでいないんじゃないかなあ・・・。さみしいですね。 --
K
2003-11-03 (月) 00:55:36
マイクロカーネルだから分散しやすい:そんなことはないですね。分散を意識したマイクロカーネルOSはもちろん簡単に分散できると思いますが、マイクロカーネルOSでありながらそうでないものもあります。そしてモノリシックでも分散しやすいものはいくらでもあります。 つまり、そういうことをあいまいにしようとしているから僕は「混沌」と申し上げているのです。 結局二択なのです。オーバヘッドの軽減が何よりも重要か、それとも安定性や信頼性が大事か。そしてこれらを両立可能なものだと信じるか、信じないか。それがモノリシックとマイクロの違いです。普通はそういう両極端ではなくてその中間を取るでしょう。・・・カーネルモードかユーザモードかが、ハードウェア上の保護の状態とは無関係に、OSのモードみたいなもので主観的に決められる(たとえばOS内のフラグが立っているとか)なんて、まあよくもそんなとんでもないことを信じる気になりましたね・・・。そんな程度になると、結局はどんなOSも、「これはマイクロだ」「これはモノリシックだ」と開発者が主張さえすれば認められるでしょう。つまり名無しさんの定義によってしまうと、もはや「マイクロカーネル」には何の意味もないのです。そして本当のマイクロカーネルを表わしたいと思っても、また新しい語を作らされるはめになり、もうこれを混沌と呼ばずしてなんというのでしょうか。 --
K
2003-11-03 (月) 01:11:51
何でもありはまずかったですか?では保護がないモードと「カーネルの保護下にあるモード」と言い換えてもいいです。つまりあくまで保護者はカーネルであって、カーネルがCPUの一部ってどこの組み込みマイコンですか?要するにリング0にカーネルモードに加えて「カーネルの保護下にあるモード」を置けないかってだけなんですけどね、保護ってどの程度必要なんだろう?。で、呼びたいならIA-32におけるリング0に相当するCPUモードとでもカーネルモードの為のCPUモードとでもお好きに呼べばいい・・・というかご自分で特権モードって使ってるじゃないですか?とにかくCPUの保護機構の活用がマイクロカーネルの特徴だというのは如何なものでしょうね?。要はマイクロカーネルの多くが採用しているというだけで、これはモジュール化の話と同じ事のように思いますけどね。 --
2003-11-03 (月) 11:24:01
ところで、もなかさんの一連の御発言は大変参考になります。理想の典型としてという所はマイクロカーネルの特徴としてかなり納得できる(そんなの分散の話のようにモノシリックでも可能とか言いだす方が居るかもしれませんが、全てのモノリシックなOSがそうというわけではないので特徴とは言い難い)んですけど、マーフィーの法則で理想と現実は違うというのが残念ですねえ。でもどうしてモノリシックの場合には、意図しなくてもアクセスできるものにはアクセスするというバグが問題化しないのだろう?それとも仕様に反してもダイレクトアクセスの誘惑に負けてしまうという話なのかな?確かにそれじゃ惰性と言われても仕方がないでしょうね、いくら改善したといってもやっぱりそうやってマイクロカーネル辞めた方が速いんだろうし。しかし、こういう理想を満たす必要があるマイクロカーネルという言葉に、それじゃ何の意味もない。なんて訳ないと思うんですけどねえ。・・・というか、意味のないとか混沌だの単なる主観が、論説否定の根拠にできるなら楽でいいなあ。 --
2003-11-03 (月) 11:24:43
(申し訳ありませんが僕はこの話からは下ります。むなしいので。このセクション内でローカルな定義を前提に話を続けていただいても、多分他の人の誤解を助長する心配はなかろうと思います。ご自由にどうぞ。ちなみに「特権モード」はニュアンスで伝わっただけで、CPU以外でも使われる広い意味の言葉ですし、対義語が「非特権モード」だったり「一般モード」だったり「ユーザモード」だったりと、めちゃくちゃです。言葉の定義においては混乱を避けることや、無意味な語を生産しないことがなによりも重要だと僕は思うのですが、それを主観的だとしか捉えられない見識についていけません。) --
K
2003-11-03 (月) 11:36:06
勿論意味は広いでしょうね。えーと、(ニュアンスで伝わるというのに)特権モードと言うのは意味が広いから使えなくて、ユーザモードという言葉はCPUモード限定として使えると言うのも不思議な感覚な気がします。言葉の意味が広くて混乱を避けたいなら、別の言葉に言い換えるか、新しい語を発明してそれを使うのが一般的だと思うんですが、まあ、整理と称して、用法を勝手に限定して自分の知っている意味しか認めない。なんて人も中には居るんでしょう。ちなみに「カーネルの保護下にあるモード」って説明は、ここから拾ってきたんですが、まあこれもローカルな定義なんでしょうね。
http://www.imasy.or.jp/~kawai/osask/boyaki03.html
--
2003-11-03 (月) 13:17:04
ええと、それは「一部だけを取り上げて都合よく解釈する」典型例だと思いますが。僕は誤解を避けるためにそこにはっきりとIA-32におけるリング1~3とも書いたのですが、それは無視ですか?・・・でカーネルモードの語に関して言えば、僕が使っている意味のほうが古いような気がするのですが、それでも意味を広げた混乱の非をこちらに向けますか・・・(さらにor.jpだし)。 --
K
2003-11-03 (月) 13:46:32
(それにしても、「ユーザモードは、カーネルの保護下にあるモード」という文章から、どうして「カーネルの保護下にあるモードは、ユーザモード」に拡大解釈できるのだろうか・・・。僕の地震の喩えは全く理解されていないのだろうか・・・。) --
K
2003-11-03 (月) 13:58:14
(このままだと下らぬ揚げ足取りが交互に続くだけに思えてきたので、僕は以後、非難されてもあえてレスしない道を選びます。) --
K
2003-11-03 (月) 14:00:43
別に無視しているわけではありませんが、ぐぐれと言われたから発見したアドレスをそのまま貼っただけだし、「アプリケーションモードとは、カーネルの保護下にあるモード。 IA-32でいうところのリング1~3。 」となっていて「アプリケーションモードとは、 IA-32のリング1~3。」とは読めません。あくまでCPU(IA-32)で相当するならばという意味になります。で、「カーネルの保護下にあるモードは、ユーザモード」というのが間違いなんですか?人は、地震以外で死ぬ事は多いですが、それは「ユーザモード以外にもカーネル保護下にあるモードが存在する」という指摘にしかかとれませんが、さっぱりわかりません。 --
2003-11-03 (月) 18:17:29
単にそういう人もいるだろうと言っているだけで非難している訳でもそれが誰だとも言った覚えは有りませんが?。まあそういう「整理」は逆にフレームの元なので、できればやめてもらいたいとは思いますが。・・・しかし自分の解釈に都合のいい文が見つかってそのページの作者には感謝しているのに、非難しているなんてとんでもない!それだけは言いたい。 --
2003-11-03 (月) 18:49:08
「ユーザモード以外にもカーネル保護下にあるモードが存在する」?:そのとおりですよ。カーネルがコードやデータを保護する方法は、何もCPUの保護機構を使うだけとは限らないじゃないですか。単に「カーネルの保護下にあるモード」というだけでは、CPUのモードを指すのかOSの状態を指すのか、それともIMEの状態を指すのかあいまいでしょう?OSASKだって、システムアプリと一般アプリがあるわけで、これらの違いは使えるAPIの制限によって「保護下にあるか否か」ともいえるわけです(システムをコントールするようなAPIが使えるか使えないか)。もっともOSASKはカーネルレスですから、これをカーネルによる保護とはいいませんが。しかし似たような種別をカーネルのサービスとして提供し、これをモードとして仕様化することは十分ありえるでしょうし、紛らわしい名前をつけない限り全く問題はありません。・・・結局よくわかっておいでなのです。なんでそれを「さっぱりわかりません」とするのですかねえ(お願いですからもう僕に向かって書かないでください)。 --
K
2003-11-03 (月) 19:14:46
いや、わかりません。わからないのは「執拗な否定によって結局何が言いたいのか?」と言う事がです。「カーネルがコードやデータを保護する方法は、何もCPUの保護機構を使うだけとは限らないじゃないですか。」まさに私が言いたかったのはこれですよ。それなのになんでマイクロカーネルの定義を勝手にCPUの保護機構を使った…と限定するんですか?それがなければsh氏の例でも問題ないだろうし、こんなに長くなる事もなかっただろうに。結局、それもありなのでは?という一般的な意見に対して、そちらが勝手に何か不都合でもあるのか否定されているだけでしょう。ハッキリ言って疲れます。 --
2003-11-03 (月) 19:44:04
もなかさんが書いてくださったことを読んでいますか?まず、言葉の定義を明確にします。カーネルモードとユーザモードという語は、CPUのモードを指す語であって、他の意味への転用はしないとします。次に、ユーザモードを用いない、ソフトウェア上のいかなる保護も、不完全です。先回りして言っておきますが、例外はあります(仮想マシンを使うとか)。しかし名無しさんの話の意図からするとこの例外を認めたところで前進になりません。もなかさんの1プロセスに1CPUの話が名無しさんの救いたいと思っているケースに合致しないのと同じです。で、マイクロカーネルはそんな不十分なレベルの保護じゃ駄目だというのが出発点なのに、そこを否定して何が残るのか、何も残らないじゃないかと、僕は再三指摘しているわけです。・・・疲れているそうですが、名無しさんはいいですよ、このやり取りで何かが学べるのですから。くたびれもうけの僕はなんなのでしょうか。もうやめましょうよ、レベルが低すぎてこの欄は他に読み手もいなくなりそうですし。 --
K
2003-11-03 (月) 20:20:21
いいですか、なんでモノリシックじゃ駄目で、マイクロカーネルに行ったと思うんですか?これがキーなのです。マイクロカーネル以前からモジュール化や分散はあったのです。しかしそれをもってしてもOSは複雑極まりない存在で、バグが尽きなかったわけです。だからマイクロカーネルということになったわけです。・・・この経緯を無視してもいいじゃないか、たとえばモジュール化しただけでマイクロカーネルだと思っている人がいるからそれにあわせてやってもいいではないか、というのが名無しさんの意見です。つまり「ハッカー」の意味はクラッカーでもいいじゃないかということです。たしかにそれで言葉を誤用していた人たちは救えるかもしれません。でもそれまでクラッカーとハッカーの意味の違いを正しく認識して、ハッカーと呼ばれることに誇りを持っていた人たちはひどく傷つく上に、僕たちは「コンピュータの操作にたけた(尊敬すべき)人」を簡潔に表わす語を失い、同じ意味の2つの語を持つことになるわけです。僕はそんなのは全く馬鹿げていると思うわけで、だからその提案は受け入れられないわけです。 --
K
2003-11-03 (月) 20:34:25
今まで正しくマイクロカーネルを実現するために、つまりユーザモードでも効率が下がりすぎないようにするために一体どれほどの労力が払われてきたか、是非それを知ってほしいです。それほど重要なことなのです。それを、まるでどうでもいいような扱いに下げて、対局にあったはずのモノリシックカーネルでも実現可能な緩い定義にしようとは・・・。マイクロカーネルOS開発者が聞いてあきれますよ。 --
K
2003-11-03 (月) 20:51:44
だからそれが勝手な言葉の「整理」で押しつけだと言ってるのに。つまりK氏の主張するマイクロカーネル風開発手法の事ではなく、理想的マイクロカーネルの事を話しているわけですが、なぜモノリシックなら要らない筈の保護が、マイクロカーネルだとそんなに強く必要になるのか?出発点を否定というか、疑問が出るのは当たり前じゃないでしょうか?、ここで必要なのは誰かの定義の押しつけではなく、その目的です。その理由を理解できないのに(あるいは誤解したまま)だれか作ってもそんなの形だけにもなるだろうし、それこそ意味がないなんて話もでるのでは? --
2003-11-03 (月) 21:10:19
ええとまず言っておきますが、僕はマイクロカーネルの思想に対して批判的です。つまり、そんな保護がなくても十分に安定するOSを作れると信じていますし、その保護のために遅くなるのは割に合わないと思っています(なおこの考え方は「どちらかというと」少数派です)。だからOSASKはマイクロカーネルにはしなかったわけです。しかし、そんな僕であっても、CPUの保護機構を前提にOSを組み立てるというマイクロカーネルのやりかたが、より安全であるということは認めています。 --
K
2003-11-03 (月) 21:43:27
でも世論というか、OS開発のトレンドは、マイクロカーネルなのです。なんでみんなマイクロカーネルにしたがるのか、NTやMachやB-Freeはなぜマイクロカーネルなのか(ここでいうマイクロカーネルは、まさに僕の定義するマイクロカーネルの性質を基本的には有しております。つまりOSのサービスは原則としてほぼすべてユーザモードで走っております)、それこそここで議論すべきテーマであります。そういう方向に話が素直に進めば、僕は喜んで応じます。 --
K
2003-11-03 (月) 21:48:35
しかし名無しさんもshさんもそういう風にはしないで、マイクロカーネルという語の意味をモノリシック的な方向に変えるべきだという、そういう論理で話をしようとしました。僕やLinus氏などが、「ユーザモードじゃなくても安心できるシステムは書ける。モジュール化も分散化も問題無い。だから、マイクロカーネルにこだわる必要はないのだ。」という主張(Linus氏については、「それが僕には楽しかったから」にそういう記述があったと記憶しています)をしているのに、つまりマイクロカーネルはいくらなんでも効率問題がやば過ぎる、と主張してきたのに、そして「OSのサービスをカーネルモードで走らせたら、こけたときにカーネルごと落ちかねないじゃん。だからマイクロカーネルじゃなきゃ駄目だよ」という意見をまともに受け入れてきたのに、そういうことをうやむやにして何が問題だったのかを分からなくするような定義のし直しはするべきではない、ということです。 --
K
2003-11-03 (月) 21:56:58
結局、CPUによる保護の活用が、(犠牲を払ってでも)なきゃ駄目だと思う人がマイクロカーネルを選び、なくてもなんとかしてみせると思う人が非マイクロカーネルを選んでOS開発しているだけのです。僕の定義を受け入れることで、まさに「全サービスをユーザモードに追い出す」ことがいいのか悪いのかを論じる事ができますし、そのためにあえてマイクロカーネルを避けてきた開発者の名誉も守れます。一方、名無しさんの提案で行くと、そのへんのことがあいまいになり、いままでずっと正しい主張をしてきた人の正しさが認めにくい形になるのです。僕はそれはいやです。そんなことには荷担したくありません。 --
K
2003-11-03 (月) 22:05:32
いや、それは誤解です。つまり私は、そのマイクロカーネルの思想だと言われるもののうち、モジュール化だけでなく、強力なハードウエア保護機構についても、本当にマイクロカーネルに必要なものなのかと疑っているというだけなんです。モジュール化と同じで単に開発実装時の手法にセットになってただけなのではないかと?だって「決められたプロトコル以外でのモジュール間通信を存在させません。」という事であれば、その他の保護機構なんて原理的には不要に思えるからです。それじゃあ要は開発する時に自制が難しいし楽だからCPUの強制保護に頼ってしまえという風にしか思えなくて、そんなのを特徴として扱うのはどうかなあと思った訳です。(その保護を活用したい為というより)むしろ、制限のあるモード「でも」動かすことが出来る。というのがどう考えてもモノリシックにはない特徴なので、これらになんらかのメリットがある(となぜか思われている?)ということなのではないでしょうか? --
2003-11-03 (月) 23:14:07
「だって「決められたプロトコル以外でのモジュール間通信を存在させません。」という事であれば、その他の保護機構なんて原理的には不要に思えるからです。」の部分だけが全く分かりません。カーネルモードとユーザモードの違いがどんなものか、CPUのコストを増やしてでも保護機構がわざわざ塔載された理由が分かっていますか?分からないと話が理解できませんよ?(もなかさんの指摘の通り、もちろんマイクロカーネルのために保護機構が作られたわけではありません)。・・・それとその解釈はやっぱりまずくて、保護を活用するために、という説明はかなりたくさんの解説書に見られる記述ですから、そこを曲げることはできないでしょう。下のようにタスクかユーザモードかという解釈をめぐる議論はありえますが(ちなみにタスク限定だともっとオーバーヘッドがふえます)、カーネルモード可という解釈は明らかに過半数の解説を書き換えさせる必要があるので、無理がありすぎなのではないかと。 --
K
2003-11-03 (月) 23:36:10
もしかして、そのプロトコルを確実に守らせるために(逸脱して変なところにちょっかいを出させないために)、ユーザモード下で実行しなければいけない(=カーネルモードでは、プロトコルを守っているかどうかを完全にはチェックできない)というところを失念しているのかなあ・・・。いやもちろん、僕は間違えさせない自信がありますから、カーネルモードでもいいとは思いますよ。でも、自信がない人、どうしても不安な人がいることも理解できるのです。でも名無しさんはそういう考え方の存在を許さないということ?(そんなやつはOSをリリースするなってこと?)。それは過激過ぎではないかと。・・・なんか僕の曲解くさいな。この部分については違ったらごめんなさい。 --
K
2003-11-03 (月) 23:44:19
ちょいと視点を変えてですねぇ。なんらの保護もなしに「決められたプロトコル以外でのモジュール間通信を存在させません。」が実現できるのかどうかを考えてみると、整理しやすいのではと。 --
もなか
?
2003-11-04 (火) 11:29:39
共有メモリっていうのはモジュール間通信の代表なわけですが、仮にフルフラットなメモリ空間で保護がなければ、のべつまくなしに通信できるわけですね。メモリの全領域が共有メモリなわけですから。 --
もなか
?
2003-11-04 (火) 11:34:41
バッファオーバランでも起こしたとしたら、結果的にプロトコル以外でのモジュール間通信がおきちゃいますね。 --
もなか
?
2003-11-04 (火) 11:35:52
マイクロカーネル構成法の最近の実装系にサービスをカーネル空間にマッピングするというのがあり、もなかさんやKさんがおっしゃるようにマッピングされたサービスが暴走すればシステムの崩壊に繋がります。これに関しては、どのサービスをカーネル空間にマッピングするかはシステム運用者のセキュリティポリシーであるとして別のレイヤで考えられています。カーネルはその為の機構を提供しているわけで、必ずサービスがカーネル空間にマッピングされるわけではありません。 --
sh
?
2003-11-04 (火) 14:23:53
補足です。カーネルは負荷とセキュリティーポリシーに応じて透過的にサービスをカーネル空間にマッピングすることができます。したがってカーネル空間にマッピングされたサービスはカーネル空間で動作しているということを知りません。脱線ですが、もなかさんってHORB関係で活動されていた方ではないでしょうか? --
sh
?
2003-11-04 (火) 14:42:03
なんでそれを「マイクロカーネル」であるとしてしまうのだろう、その人たちは。なんでモジュール化したモノリシックとは言わないんだろう。その辺のshさんの意見を聞かせてください。僕はそのセキュリティポリシーを安全側に振ることこそマイクロカーネルの本質で、だからマイクロカーネル研究の多くが、効率を落とさずにそっちに費やされてきたことにも納得しているわけです。その本丸を投げ出してしまって、それでマイクロカーネルであるといい続けることに、いったいどういう意味を持たせようとしているのでしょうか。 --
K
2003-11-04 (火) 14:44:16
shさんの論だと、同じコードをユーザモードでもカーネルモードでも走らせられる、と読めて、それは開発側ではなく運用側が選択するということですが、「マイクロカーネル的運用」とか「モノリシック的運用」とか「中間的運用」というふうに考えず、それをマイクロカーネルだとするのはどうしてですか?「モジュールにわけられること」がマイクロカーネルだと思っているから? --
K
2003-11-04 (火) 14:49:01
上記のような構成のカーネルをなぜマイクロカーネル構成法の実装系だと言って問題ないか、ということを説明します。カーネルが提供するメッセ‐ジング機構上に水平にすべてのサービスが配置される、これをマイクロカーネルの概念と定義させてもらいます(この部分に私とKさんの根本的な意見の割れがあるのではないかと思います)。これの対比としてモノリシックカーネルはサービスがカーネル内に積み重ねられるという意味で垂直型と言われています。カーネルは負荷とセキュリティーポリシーに応じて透過的にサービスをカーネル空間にマッピングすることができます。したがってカーネル空間にマッピングされたサービスはカーネル空間で動作しているということを知りません。したがって論理的にはカーネル空間にマッピングされたサービスはカーネルのメッセージ機構上で水平に展開していることになり、この点においてマイクロカーネルの構成法をとっていると考えることができます。ここでマイクロカーネルとメッセ‐ジング機構の関係を整理させていただきます。メッセ‐ジング機構を主体にカーネルというものを設計したものをマイクロカーネル、っということになります。くどいかもしれませんが、マイクロカーネルはあくまで機構を提供し、ポリシーはメッセージング機構を使ってサービスとして実装してくださいということになります。このような考え方の背景にあるのは、過去にコンピュータ設計・製造を行うメーカ(IBMやDECなど。昔はハードとOS1つのメーカが単独で製造していた)が複数の製品のラインアップを1つに統合する際、カーネル自体が多くのポリシーを持っていては複数のカーネルを1つのカーネルに統合するのは難しいという判断からです。これを一般的に”機構とポリシーの分離”と言います。サービスをカーネル空間で動作させる場合においても”機構とポリシーの分離”はできていますので、マイクロカーネル構成法の実装系である、っといっても問題ないかと思います。無論、LinuxやSolarisでもメッセージング機構を実装していますので、概念と実装を分けて考えていただきたいと思います。 --
sh
?
2003-11-04 (火) 14:53:19
むろんモノリシックでも、サービスやアプリの開発時にサービスをユーザモードで走らせて、開発を円滑にして(手法は全然違いますが、感覚としてはセーフモードみたいなものです)、通常の運用時は同じコードをカーネルモードで走らせるということは、そんなに珍しいことではなかろうと思います(OSASKでも似たような仕組みを採用の予定です)。・・・だからそういうことが「できる」という点で分類するのは、本質的でなかろうと思うのですが・・・。 --
K
2003-11-04 (火) 14:54:59
同じコードをユーザモードでもカーネルモードでも走らせられる < メッセ‐ジング機構を用いて定義されたユーザ空間のサービスをカーネル空間で動作させる機構を持つ、っと考えてください。実際にカーネル空間で動作させるかどうかはセキュリティポリシーの問題として別のレイヤになります。 --
sh
?
2003-11-04 (火) 14:57:59
うーん、僕の質問コアからそれてしまった・・・。もしマイクロカーネルにとって、ユーザモードで走ることがその程度の重要性しか持たないとしたら、マイクロカーネルに関する研究で、なぜあれほどOSサービスがユーザモードで走ってもこれだけ速くできる的な研究がなされたのでしょうか。僕はshさんと名無しさん以外のかたで、「マイクロカーネルって遅いよね」という発言に対して、「いやカーネルモードを使ってもいいから遅くないよ」という反応を聞いたことも見たこともありません。こういうのならよくみます。「最近は研究が進んで、ユーザモードだけでも十分に速くなったんだよ」と。 --
K
2003-11-04 (火) 15:02:05
僕はマイクロカーネルについての共通の認識として「安全」「でもモノリシックよりは遅い(その差はちょっとでしかない可能性はあり)」があるとずっと思ってきました。それを覆す記述もこのページを除いては一度も見聞きしていません。カーネルモードで走ってもいい(カーネルモードで走らせたとしてもマイクロカーネルと言っていい)、だったら安全神話は崩壊するし、まあ同時に速度に関する問題は解決するわけですが、本当にそんな定義で一般的に話が通じるのだろうか・・・。僕がOSを売り込む立場で、「うちはマイクロカーネルだけど速いです。サービスをカーネルモードで走らせていますから」とは口が裂けても言えない・・・。 --
K
2003-11-04 (火) 15:10:28
もしマイクロカーネルにとって、ユーザモードで走ることがその程度の重要性 < Kさんには重要でなくとも”機構とポリシーの分離”は重要なことです。現在の分散システムの土台にもなっている概念ですから。 --
sh
?
2003-11-04 (火) 15:11:44
どうもKさんは私の書き込みをちゃんと読んでくれていないような・・・。 --
sh
?
2003-11-04 (火) 15:12:54
これじゃあ埒が明かないので「マイクロカーネル構成法の最近の実装系」の例を教えてください。つまりカーネル以外を「堂々と」カーネルモードで走らせ、その状態であってもマイクロカーネルだと断言しているOSです。教えていただければ、僕もそれを直接調べてみます。結局、そんなものが存在するのかどうかか、ポイントだと思ったので。 --
K
2003-11-04 (火) 15:19:43
ああ、もしかしてshさんが言いたいことはこういうこと?「マイクロカーネル機構」と「マイクロカーネルポリシー」はちがう!と。 --
K
?
2003-11-04 (火) 15:25:14
fluxプロジェクトでそのような研究が行われています。ユタ大学です。その研究成果がMachにも取り入れられているようです。 --
sh
?
2003-11-04 (火) 15:25:37
たしかドイツのドレスデン大学でもL4系の研究の一環として行われていたと思います。 --
sh
?
2003-11-04 (火) 15:28:51
「マイクロカーネル機構」と「マイクロカーネルポリシー」は違う < ちょっと分からないので説明、お願いします。 --
sh
?
2003-11-04 (火) 15:36:09
ありがとうございます。さっそくfluxについて検索中・・・。 --
K
2003-11-04 (火) 15:37:01
あ、えーっと。教科書にある"機構とポリシーの話"は了解です(っていうか、すでにshさんが指摘しているので、前提認識と思い込んでいました)。ここで話題を分けたのは、危険側に倒すのはどうして? というヨタな興味だったのですが…。 --
もなか
?
2003-11-04 (火) 15:37:43
"HORB関係で活動されていた"っていうか、今斜め後ろに平野さんがいます。 --
もなか
?
2003-11-04 (火) 15:40:59
(この一連の書き込みは上の方がふさわしいと思うのですが、移動させてもいいですか?・・・つまり安全か速さかという選択の話ではなく、マイクロカーネルの語の意味の話に完全に戻っています)。 僕の理解が不十分ではないかという指摘があったので、機構と(運用)ポリシーが違う、ってどういうことよ、と思ったのです。機構がマイクロカーネルで、ポリシーを安全にする、ということもできるが、機構がマイクロカーネルで、ポリシーを高速だが危険にすることもできる、という話なんですよね?これは違う? --
K
2003-11-04 (火) 15:42:25
↑大体、そういうことです。説明不足だったかもしれません。 --
sh
?
2003-11-04 (火) 15:47:38
移動させてもいいですか?<私はOKです --
sh
?
2003-11-04 (火) 15:50:25
"私はihorbを" < なるほど。業界は狭い。:) --
もなか
?
2003-11-04 (火) 15:53:02
じゃあ理解に問題はないわけだな。・・・それではまずは移動をしよう。 --
K
2003-11-04 (火) 15:53:05
それではshさんに僕の見解を申し上げます。僕はこのページの設立者として、以下のような方針をとります。
shさんのマイクロカーネルの定義だと、これはメッセージなんだ、これは水平なんだと主張してそれらしい図を書くだけで、マイクロカーネルになったりならなかったりします。
メッセージをやり取りする方法は、レジスタ渡し、スタック渡し、ポインタ渡し、共有メモリ方式のどれであってもいいわけで、何をメッセージだとして何をそうでないとするかは、主観的なものだと僕は思います。
僕はそういう不確かなものを中心に議論することが、OS開発者のために役立つとは思えません。
だから、今まで通り、サービスをユーザモードで走らせること「だけが」いいのかどうかをここのテーマにします(もちろん、他の魅力的で有益と思われる定義が与えられれば修正してもいいです)。
つまり、shさんからすると運用ポリシーについての議論だと思ってください。運用ポリシーを選べるようにすることはもちろん重要です。僕が議論したいのは、サービスをカーネルモードで走らせることはけしからんことだ、という主張はいかがなものかということで、それについて議論する場にするのが、今は適当であろうと考えたわけです。
ただし、それはマイクロカーネルとは言ってほしくない、我慢ならない、どうしてもということであれば、このページを放棄して、また別の名前のページを作り、そこでその議論を行ない、ここは「十人十色の定義が出てきかねない」ページとしてほうっておく、でもいいです。
この状況こそ、マイクロカーネルという語がいい加減になってしまったことを表わしていると、僕は感じますが。
マイクロカーネル(1)、マイクロカーネル(2)、などというページにして、(1)は僕の定義、(2)はshさんの定義、でやる、とかのほうがいいかな。最初に「このページでのマイクロカーネルのローカルな定義:~」と明記しておけば良さそうだし。
以上です。 --
K
2003-11-04 (火) 15:55:17
(fluxとかではまだ僕の満足の行く記述を見つけていません(英語なので頑張り中)。誰か見つけたら教えてください。) --
K
2003-11-04 (火) 16:22:01
とってもKさんの理解に問題があると思いますが、まぁ、もういいです。 --
sh
?
2003-11-04 (火) 16:22:18
前時代的なのでアレなのですが、MINIXは"カーネル以外を「堂々と」カーネルモードで走らせ、その状態であってもマイクロカーネルだと断言しているOS"ですね。Minix386においても、本来なら低い保護リングにあって構わないttyドライバが高い保護リングの中にあります。それでも、まあ、世間の理解はマイクロカーネルでしょう。たぶん。 --
もなか
?
2003-11-04 (火) 16:27:20
私の想定していたのは丁度こんな感じのものですね。
http://www.f.csce.kyushu-u.ac.jp/rde/lambda.html
これなら保護機構の活用という記述にも反しないのではないでしょうか?只、そこには使えない(使わない?)場合についての記述が省かれてるような気がします。 --
2003-11-04 (火) 18:34:13
そう、こういうのは僕にも分かります。ありがとうございます。でも、目指す運用形態が保護オフっぽいので、題名にマイクロカーネルと入れるのはちょっと違うかなーとは感じてしまいますが。違和感があるのはそこだけです。 --
K
2003-11-04 (火) 18:54:34
Minix386の場合は、どうなのかな。そのttyドライバがそこにあるのは、マイクロカーネルとして恥ずかしいことでも情けないことでもなくて、むしろ速くてgoodなことだ、という認識が当たり前だとしたら、僕の認識に問題があるのかもしれません。 --
K
2003-11-04 (火) 18:58:47
結局、カーネルモードという言葉が、文字通りカーネルのモードという以外に、単にCPUのモードを指す場合があるから混乱するのでは?まあ、大抵両者は連動するわけですが、カーネルモードで走らせるなどと言う場合はCPUのモードの事を指してて、カーネルとして走らせると言う事を意味しない場合がある、つまりリング0をユーザモード(カーネルの管理下?)でも使うというだけの話でしかないように思います。 --
2003-11-04 (火) 20:03:21
ええと、カーネルモードという言葉がCPUのモードを指さずに、「文字通りカーネルのモード」を表わすという例は初耳なのですが、それはどこにありますか?(もちろん名無しさんが、その説を前からしきりに唱えていることは知っていますし、それを僕が、「言葉の意味を勝手に増やして混乱の原因を作っている」という主張も変わりません)。なんか今までは「そう解釈してもいいのではないか」という提案程度だったのに、いきなりそういう場合があるなどと、既成事実化しようとしたのが気になるのです。場合があるというからには、はっきりそれとわかる例を教えてください。 --
K
2003-11-04 (火) 20:25:42
でなければ、なんでカーネルなんて余計な名前が付くのか不思議なのですが、まあそんなことは別の話で、要するに名前のせいで無意識にカーネル以外を置くのが良くない等と思ってしまうのではないかと。 --
2003-11-04 (火) 20:39:06
うーん、それはつまり用語のネーミングが悪いということですね。それは一理あるかもしれません。僕はもう誤解しないくらいに慣れてしまいましたが、ここにこうして誤解した人がいるのですから、それは理解できる主張です。とりあえず、名前から「勝手に」連想するのは危険だと思います。ソースを公開すればそれだけでオープンソースと言える、みたいな話と同じになってしまいますから。名無しさんが誤解する理由は分かりましたが、それで誤解が正当化されるわけではないので、その説は引っ込めていただきたいです。 --
K
2003-11-04 (火) 20:45:25
(でも「カーネルオンリーモード」という名前じゃないわけだし、別にカーネル以外をおいてもいいんじゃないかなあ。それにまず間違いなくカーネルはこのモードで走るので、ネーミングも悪くないと、僕は思いますけどねえ・・・。) --
K
2003-11-04 (火) 20:50:38
ん?「そういう場合がある」と言ったのはカーネルとして走らせないと言う事ですよ?単にCPUのモードを指すのだったら、いつのまにそれがカーネルとして走らせるという意味にすり変わったのですか?それこそこの場合の例ではないかと? --
2003-11-04 (火) 20:57:00
カーネルモードをカーネル以外で利用しない、というのは「マイクロカーネル」に限定された約束事です。つまりカーネルモードをできるだけ使わないようにしようというのがマイクロカーネルなのであって、他の設計方針では違っています(shさんはその辺の定義がおかしいのではないかと言われていますが)。例えばモノリシックカーネルではカーネル以外のサービスもカーネルモードで走るわけです。DOSのようにアプリまでカーネルモードで走らせる場合もあるくらいです。・・・名無しさん以外の誰一人として、カーネルモードがCPUのモード以外を指しうるのではないかなどということは申しておりません。そして名無しさんがだけが話を長引かせています。用語は正しく使ってください。マイクロカーネルの語の定義についてshさんのようにきちんと主張するならいいですが(それがここの主題なのですから)、他の語の意味まで勝手にいじろうとなさるのは迷惑です。 --
K
2003-11-04 (火) 22:10:16
いや、ここでは「カーネルモード」だから、カーネル以外のサービスをリング0に置いた場合「カーネルが大きくなったのと同じ」などと思われてしまうのでないか。というのがどうなのかと確認できればいいのです。 --
2003-11-04 (火) 22:28:54
(これは確認できてよかった、という書き込みですよね?・・・確認したいからもう一度説明してくれ、という意味ではなく。) --
K
2003-11-04 (火) 22:46:33
つまり、マイクロカーネルとしてちゃんとカーネルから追い出せている。とするならば、「恥ずかしいこと」とか「情けないこと」なんて、どうして言えてしまうのか?って事なんですよね。まあ私は不勉強なので、そのttyドライバが低い保護リングでもちゃんと動くのかは知りませんが、本来ならばあって構わないということなので問題ないんだろうと受け取りました。 --
2003-11-04 (火) 23:22:43
"カーネル"という言葉を使うときには、何かを極限まで突き詰めているという場合が多いです。あ、これ、単に私の経験則です。 --
もなか
?
2003-11-05 (水) 09:52:11
たとえば、リアルタイムカーネルっていうのは、時間リソースの保護を極限まで突き詰めていますね。結果、ドメイン保護なしでリソースの競合が起きてもリソースリークが起きても気にしません。 --
もなか
?
2003-11-05 (水) 09:54:28
マイクロカーネルというのは、何を突き詰めたかったかというと、自らのサイズを極限まで小さくそぎ落とすことですよね。言うまでも無く。 --
もなか
?
2003-11-05 (水) 09:57:14
そうやって削ぎ落とした結果、モジュール間の調停機構だけは削げなかった。これが現在的なマイクロカーネルの姿です。 --
もなか
?
2003-11-05 (水) 10:00:13
K氏の言うとおり、具体的なメッセージの受け渡し方は何でも構いません。そして、何を受け渡すかを客観的に解るよう定義し、実際に受け渡す機構を提供することこそ、マイクロカーネル設計の肝です。少なくとも教科書的には。MINIXでは、ドライバ/サービス間の通信は数種類のパケットで定義されていてこれ以外はありません。通信機構が整理されているところから、マイクロカーネルといえます。 --
もなか
?
2003-11-05 (水) 10:16:59
MINIXはポリシーが機構から分離していませんから、現在的なマイクロカーネルを理解する教材としては厳しいところがあるのですけれども。まあ、初期の頃から動作する保護レベルについては重視されていなかったという1つの証拠にはなるかもしれません。 --
もなか
?
2003-11-05 (水) 10:24:20
しかし、教科書どおりに作って真っ当なシステムが作れるかというと、必ずしもそうではないわけで。エラーチェックもろくにしない「広域分散システム」が研究としてまかり通ってしまうのがacademiaな世界ですし(やや偏見)。 --
もなか
?
2003-11-05 (水) 10:34:44
マイクロカーネルの定義については、shさんの言うとおりと認めてしまって、その上で、どういうポリシーだと安全とスピードのバランスがよいか、という話にしたほうが、osdev的に有用なのではという気もしますです。 --
もなか
?
2003-11-05 (水) 10:37:14
×"モジュール間の調停機構" ○"モジュール間通信の調停機構" --
もなか
?
2003-11-05 (水) 11:36:23
提案です。もなかさんやshさんも、Gakuさんのように、何のためにそのような構造を取るのか、みたいな話と関連付けてマイクロカーネルを定義できないでしょうか。つまり、たとえばIPC(プロセス間コミュニケーション?)を有機的につなぐことがマイクロカーネルの本質であるというなら、カーネル構成法としてなんのためにそのような手法が考案されているのでしょうか。純粋に手段だけで定義されると、ただの分類学になってしまう気がするんです。その背景にある(もしくはあったはずの)目的こそ重要なのではないでしょうか。それと、僕はモノリシックカーネルにしてもマイクロカーネルにしても、カーネル構成法のことだと思っているのですが、これはOS構成法なのでしょうか。もしカーネルの構成法であると考えるなら、カーネルから追い出されたサービス群がどうであるかについての言及はあまりなくてもいいのではないかと思います。OS構成法であるなら、カーネルから切り離されたサービス群への言及も重要ですが。 --
K
2003-11-06 (木) 14:24:43
名無しさんの見解が「いいがかり」扱いされている点ですが、これは僕としても解消したいです。解消するために、名無しさんの定義を教えてください。名無しさんはやみくもに否定したり、「○○でもいいのではないか」というばかりで、「○○がいい」とは言ってくれません。自分の定義を明確にするか、もしくは自分の定義が誰と同じであるかを示唆してほしいのです。よろしくお願いします。誤解を指摘されて、それでころころ変えられるような内容だと困ります。よく考えて、あまり頻繁に変更しないでも済む内容でお願いします。 --
K
2003-11-06 (木) 14:30:28
なぜ名無しさんの意見を「いいがかり」と捕らえるのでしょうか。Kさんの書き込みを読む限り私の意見も「いいがかり」扱いされているのがよく分かります。なぜでしょうか。Kさんは自分の考えを絶対的なものとして他人の考えを自分に従わせる為に議論をしているからなのではありませんか。それはもう議論とはいえません。お粗末すぎます。それと関連して、Kさんはまるで私の書き込みを読んでいないように思います。Kさんが希望する「何のためにそのような構造を取るのか、みたいな話と関連付けてマイクロカーネルを定義できないでしょうか。」に関してですが、私は明確にこのことを書いております。私はこの議論を真剣にしたいと思い多くの時間と労力を使い意見を書き込みました。それに対して実に貧しい知識と思い込みでもって「間違っている」とか「そんな意見はオフィシャルな場で通用しない」などと言っておられます。これはもう議論というより罵倒です。本当にあきれます。まず、そのような姿勢を直さない限り、まともな意見交換などできないでしょう。この点を明確に指摘したいと思います。最後になりましたが、私自信、OSASKを開発しコミュニティーを形成したKさんの活動にはすばらしいものがあると思っており応援しております。 --
sh
?
2003-11-06 (木) 15:50:35
僕が残念なのは、僕が「自分の意見を押し付けるために」発言しているのではないかとshさんが疑ってしまったことです。その見解に立つと、僕がshさんの意見に賛同しなければ、全部「お粗末」ということになるでしょう。・・・shさんは、僕が質問した「マイクロカーネルにおいては、ユーザモードで速くする研究がたくさんある。(shさんや名無しさんの意見は)これを説明できないのではないか。」という重要な質問に答えることはなく、それはポリシーが分離されたからだの一点張りです。実は、分離される前の定義こそ、意味のある定義ではないでしょうか。 --
K
2003-11-06 (木) 16:08:46
shさんは、今ではそうなっている、的な主張がメインで、これこれこういう思想があって、だからこの定義なんだ、という風にはなっていません。水平、垂直の定義は僕には思想として不十分だと思います。たとえば、水平の定義を「あるサービスが止まっても、そのサービスを立ち上げ直せば、他のサービスは再起動の必要がない」という風に定義すれば、僕にも分かるのです。 --
K
2003-11-06 (木) 16:12:31
それと、私は努力した、もう書いたと言われても、申し訳ないですが、僕には分かりません。それはこの書き込みのどこそこで既出だと明記してこそ、議論なのです(本人はそのつもりで書いていたとしても、読み手はそう読めないこともあるのですから)。また僕の指摘を罵倒だと思うのは自由ですが、「誤解ではありませんか?」といわれて「あなたこそ誤解じゃないのか」と返せば、お互いに証拠の提出が必要です。僕はオフィシャルな場では通用しないといい、例として2chのスレッドを出しました。それに対して、反論もなければ自発的に自分の主張を裏付ける証拠を出すこともなく、僕に教えてくれといわれて教えてくださったOSについても、まだ僕は明確に「サービスをカーネルモードで走らせてもマイクロカーネルだ」という記述を見つけられていません。・・・意見交換をするべきかどうかは完全に各自の意志に任せたいので、このような流れで話し合うことが議論だと思えないのなら、無理はなさらないでください。僕は気を悪くすることはありません。・・・それと、僕は議論で合意にいたれないことを感情や他の問題とは関連付けていないので、それを案じてOSASKコミュニティのことに言及する必要はありません。 --
K
2003-11-06 (木) 16:23:42
sh氏の書き込みはブレインストーミングであり好感が持てます。K氏はこのページの管理者であることは言うまでもありませんが、何か議論すら管理しようとしている(自己中心的です、かなり)ように思います。これではみんなが思うように意見を述べることができないです。このような話題は奥が深いのであまりこうだと決め付けずにみんなからいろんな意見を聞きたいです。どうでしょう、これからはブレインストーミングで議論を進めませんか。あと、2chはオフィシャルな場ではありません(笑) --
2003-11-07 (金) 02:06:37
ブレインストーミングというのが何を指しているのかはっきりしませんが、無秩序に思い付きを言い合うというのなら、却下いたします。よそでやってください。このサイトは
projects
に関係ある情報を集める、です。そこから逸脱すれば、2chでいうところの「スレッド違い」です。自由な雑談がしたいのでしたら、そういうサイトでお願いします。 --
K
2003-11-07 (金) 03:52:57
(こちらの流れにも少しだけおじゃまします)「自由な雑談がしたのでしたらよそでお願いします」であれば、ルールを規定するべきではないかと思います。例えば、マイクロカーネルはどのような機構のことか?(例:タスクとタスク間の通信機構を提供する<私が書いた文なので例として間違ってたらご容赦)、この機構によって何が実現できるか?(どんな利点があるか?)、この機構を使った利点を生かした実装とはどんなものか?を述べて議論する。まとめの記述はKさんが行い(or各人で行うとか、全員でまとめを修正しても良いとか)、修正したい場合は、その旨をコメントとして発言する。とか。そういうようなルールが分からなければ、利用の仕方がはっきりしません。 --
Gaku
?
2003-11-07 (金) 03:59:51
ルールはそんなに堅苦しいものではありません。各自が
projects
に関係する(今回の場合は、半年以内に関係しうると予想される)と判断されればOKです。もちろん、ページの管理者の僕がそれはおかしいと思えば、そのテーマがなぜここにふさわしいかと思うかを問い質すことはありえます。・・・OS-Wikiでは基本的にページ管理者が絶対的な権力を持ち、それはサイト管理者(僕とZAKKY氏ですが)も原則として口出ししません。デフォルトのページ管理者は、ページ製作者です。管理者以外は特に明記されない限り、こめんと欄に書き込むことしかできません。これらは
introduction
で説明されています。 --
K
2003-11-07 (金) 04:13:43
ページ管理者に、ページのレイアウトを変えてほしいとか、みんながいじってもよいゾーンを作ってほしいとか、そういう要望を出すことは可能です。これらの要望も、全てこめんと欄に書いてください。新規ページを作りたいと思っても、原則としては勝手にはできないのですが、例外として自己紹介ページがあります。自己紹介ページは、各自1つまで自由に作れますし、作った人がページ管理者になれます。
projects
から逸脱した内容でも構いません(自慢の健康法の紹介とかでもいいわけです)。もちろん、サイト管理者が不適切だと思うようなものは駄目ですが。自己紹介ページ内なら、Gakuさんや名無しさんが自分の好きな話題で議論する場として使ってもいいです。その場合は、好きなルールを適用していいです。 --
K
2003-11-07 (金) 04:22:44
OS-Wiki のルールを聞いたのではなく、このページのルールを聞いています。microkaernel と言うページのページ管理者であるKさんは、どのようにこのページを使いたいか。が書いてあった方が良いのではないか?という話です。特に書かなくて良いという判断であれば、読み捨てください。 --
Gaku
?
2003-11-07 (金) 09:02:08
つまり、追加的なルールは今のところ考えてない、ということです。こうしてほしいという要望が出てくればその時に考えます。 --
K
2003-11-07 (金) 11:31:05
コメント
お名前
NameLink
Last-modified: 2014-10-17 (金) 11:07:38 (3450d)