マイクロカーネル vs モノリシックカーネル
>>100 あーなるほど。 確かにP4 3G HTでもエンコしながら8倍で焼くとボロボロだね。 >>101 そんなことがしたいなら素直に2台買うかDual Xeon(HT)にしろや >>98 ある。 マウスクリックしてから反応が返るまでの時間を保証できる。 藻前らのつかてるOSだとその時の機嫌で反応が遅かったりするだろが。 やっぱレベル低いじゃ 「名前を知ってる」と「中身を知ってる」は違うづら >>103 アプリが応答する時間までは保証できないんでは? > マウスクリックしてから反応が返るまでの時間を保証できる。 全てのRTOSが時間保証できるわけぢゃねーよ。 一部を全部のようにいう嘘つきは、レベルの高低以前の害悪だな。 >>105 保証できないようなのはRTOSとは言わんが何か。 Soft RTOSなら必ずしも保証できん、ならわからんでもないが 分かってんなら最初からそう書くはずだよな? 知ったかクンは幼稚園でやめとけ。 リアルタイム性はデバイスドライバでだけ保証されてればイイヤ と思てる椰子もいるんでないかな。 (リアルタイムLinuxの大半はそんな実装だし) > Soft RTOSなら必ずしも保証できん、ならわからんでもないが Soft RTOS は RTOSではないと? 白馬非馬を使う詭弁野郎は、レベルの高低以前の害悪だな。 マイクロカーネルが遅いというのは聞くけど、BeOSってマイクロカーネルではなかった? (どっかにそう書いてあった)あれは速かったと思うんだけど。 それともここの人たちが言う「速い」「遅い」って体感速度は別の話なの? 教えて偉い人! 限界速度の話。 GUIやアプリまで含めてしまうと そいつらの作りが巧いかヘタクソかで いかようにも体感速度は変わってしまう。 NT/Win2000/XPもマイクロカーネルだが体感どうよ。 (比べるなら同じ機械でね☆) NT4以降はGDIがカーネル内なので純粋なマイクロカーネルではないのだが(>>84-86 ) 漏れは音楽製作をPC上でやってるんだが、最低1msの精度を出したかったりする。 そういうのに対応したOS欲しいな。BeOSが有力だったんだがZetaがどうなることやら >>112 漏れが作ってやるよ それはそうと、音楽用途だと、1msの安定した出力が必要? 10msじゃダメ? とかそういう意味で。画面出力ならVSYNCで 十分なんだけど、音楽方面は、からきし分からん。 たとえばMIDIのレートは31.25[kbps]。 ノートONとノートOFFを連続して送ると6バイト=48[bit]。 所要時間はざっくり言って1.5[ms]ってとこ。 とはいえn重和音を出すならn倍の時間がかかる。 単に再生機材と割り切るのなら、10msを正確に測って UARTの送信バッファに叩き込む程度の安定性があれば、 実用上は十分ではないのかと思われ。実際、プロ用機材でも 1msできっちり反応できるデバイスは少ない。 まーこれ以上の性能競争も、アーチストの制作意欲を 掻き立てるためには大事ね。 ちなみに入力デバイスを作るなら、時に100us単位の分解能が必要。 自分の無知を指摘されて「攻撃的」だといい、 「うんざり」だとか「頭の中をクリア」しろなどという暴言まで書き込んでおきながら、 2ちゃん以下の話だと判明したら何も言わずに逃げましたか? >>116 ふむふむ。10ms単位の安定した処理ができれば音楽再生に 関しては無問題といったわけだ。もっと大変なのかと思ったけど、 意外と大したことなさそうだ。 もっとも、その程度のことが出来ていないことが多いわけだが。 実際には、割り込みの発生からコンテキストスイッチまでの 遅延なんかも一定していなければならないかな? >>117 それはOS-wikiのネタだろゴルァ(w >>118 これはMIDIの場合ね。ノンリニアの場合はもうちょっとシビア。 >> とはいえn重和音を出すならn倍の時間がかかる ので、高級なMIDIコントローラは複数のMIDI OUTがある。 実際には人間は50msくらいずれないと音がずれていると 認識できんらしいから、DTMやるだけならそんなに時間精度いらんのだが MIDIを汎用の機器制御回線として使っていると数ms精度は欲しいかもしれん。 10msくらいなら汎用OS(Linux,Win)でもなんとかなるべ。 1msだと作り方による。 1msで「毎回サンプリング」くらいになるとRTOSでないときつい。 当然だけど RTOSを使えば魔法のように時間精度が精密になる なんてウマーな話しはあるわけないので甘い夢はモツナヨ 精度を上げやすいような機能はいろいろ備わってはいるが >>119 K氏の定義は通説より狭い感じがして違和感があるが、一応筋は通っているな 名無しは逝って良し もなか氏のカキコが自分の味方だと思っているしな マイクロカーネルの方がいい場合って例えばどんな時? 保守性を考えなければモノリシックの方が良くない? まぁモノリシックだと、カーネルモードで動くコードが多くなるから セキュリティに関しては不安はあるけどさ。 名無しの支離滅裂さは凄いな。 昔、B-FreeのMLのログをさらったら、あんなのがいぱーいで ノイズがひどくてうんざりだった。 ■■■■■■■■■■■TBS捏造報道疑惑■■■■■■■■■■■ 11/2朝、TBSのサンデーモーニングで 石原都知事が『日韓併合を100%正当化するつもりはない』といった発言を 語尾が聞き取りにくく放送し、テロップで 『日韓併合100%正当化するつもりだ!』 と表記しました。 左がサンデーモーニング 右が直後の番組サンデージャポン http://yucarimint.hp.infoseek.co.jp/ishihara/up055666.jpg 詳細を知りたい方はニュー速+ http://news5.2ch.net/newsplus/ 【報道】TBS「サンデーモーニング」が、石原都知事の日韓併合発言を編集捏造?スレへ 「性能の悪いリアルタイムOS」もあれば 「性能のいい非リアルタイムOS」もあるわけで。 その辺がわかってない厨って結構いるよね。 厨房板に相応しいレベルの話ししかでていないわけだが Wikiの必死な議論好きについて… ttp://www.tron-net.gr.jp/~takada/B-Free.old/mail-archive/mail3/all/threads.html#01394 ttp://www.tron-net.gr.jp/~takada/B-Free.old/mail-archive/mail3/all/maillist.html#01394 このへんの「Re: 周辺核のこれからの開発体制 (Re: B-Free マガジン)」 に流れが似てるな。H Suzuki氏ともう一人ぐらいのOO房が必死になって オブジェクト指向にすれば開発が進むと主張して作者ともめた。 この後議論大好きOO房とその友達達がコミュニティ内の多数派になり 数ヵ月後にほとんど全てをしてきた作者が嫌気が差してやめる非常事態に なった。 OO房は善意から必死になってカキコするから阿呆くさい。痴呆老人並に駄目。 無能な人達の駄目さに耐性がある人は悪い先例として目を通すの良いかと。 >>111 LonghornでGDIもカーネルの外側に戻るみたいだね。 >>124 > マイクロカーネルの方がいい場合って例えばどんな時? 保守性を考えるとき。 >>133 名無しはつかえねーことばっか書いてるな。 「〜と思ってました」が多すぎ。 しかも内容がひどい。おまえ以外にそんな誤解しねーよ。 奴はあれで議論だと思っているらしい。マジ阿呆くさい。 K氏ともなか氏に教えてもらっているだけじゃん。 名無しのカキコと奴へのレスを削ると、それだけですっきりしそうだね。 Kタンも追い詰められて必死だね。 自分の間違いを認められないってダメじゃん。 やっぱ、OS議論は遠くで眺めるに限る。 ウソつきと正直者系も定番クイズがわんさかあるよね。 >>141 我が師を冒涜するとは万死に値する。謝罪しる! >>141 いつものことだ。 もう少し勉強した方がいいと思うんだけどねえ。 俺OSに籠るなら必要ないのかもしれないが。 >>144 お前らには見えないかもしれないけど今、泣いて謝罪してます。 かなり釣れると思ったのだがあんまり釣れなくて残念賞。 >>144 お前らには見えないかもしれないけど今、泣いて謝罪してます。 かなり釣れると思ったのだがあんまり釣れなくて残念賞。 なんだ、K氏はちゃんと間違いを認めているじゃないか。 間違いを指摘できなかった奴(>>141 )が偉そうにほざいているのか。 自分じゃ指摘できないもんな、遠くで見ているしかないよな(藁 そういう俺も指摘はできなかったが、 間違いが分かったらすぐに認めるK氏を認められないほど愚かじゃない。 自分の都合のいい時だけ本物言われてもなあ・・・ 俺からみたらどっちも同じだろ 結局、図書館でホコリかぶってるような本を読んで、 「これがマイクロカーネルか!!」って感銘を受けても 今流のマイクロカーネルは、それとはだいぶ違うって事? >>154 まあそうかな。 LC氏の見解が一番まともって結論?こういうのは現在実装してる人の 意見に耳を傾けるのが近道。たとえばFreeBSDやNetBSDのメンテナ とかね。*BSDがマイクロカーネルなのかは知らんが。 評論家にとっては定義がぐちょぐちょだと自分の金づるがいっぱい できるメリットがあるので、あまりまともに受けないほうがいいわな。 実装する人とは逆。 マイクロカーネルって要は、カーネルモジュールをユーザプロセスとして 動作させて、ユーザーアプリケーションはマイクロカーネルに対しては システムコールで、OSサーバーに対しては共有メモリ(つまりMMU)を使ったIPCで それらと通信するってことなんじゃないのかな。これがMachの実装形態だと 思うんだけど、他の形もあるのかな。どうなんだろ。 Lさんが散々言ってるように、肝心なことは概要じゃなくて実装の細部こそが 問題だってことでしょ。LinusもMachがパフォーマンスを上げるために、 実装があまりに複雑に成り過ぎているって指摘してるけど、Mach的なモデルが 優れていると言うのなら、そういった複雑な実装を全て見ないとダメだってことで。 MachやL4やITRONなんかと、FreeBSDやNetBSDやLinuxやNWSOSや OSASKは種類が違う。陸上のトラック走と、マラソン/競歩くらいジャンルの 差がある。だから前者をいじった知識が後者の全体構成にそのまます んなり適用できるわけではない。 この国はそんなこともわからないエンジニアだらけのOS後進国という 自覚を持つように。特にいい年したおっさんは。 むかーしむかし、王子の発言にこんなのが。 >74 名前:王子 投稿日:02/05/29 14:00 >> OSASKはモノリシックでもマイクロでもないとか言ってますが、 >> その辺を ☆王子☆ に語ってもらいましょうか。 > >OSASKのことは存在を知っている程度でよくわかりません。 >OSASKとは切り離した形でモノリシックカーネル(以下、モノ)と >マイクロカーネル(以下、マイクロ)について語らせてもらいます。 >これに関してはカーネル空間に含める含めないの議論が >されてきましたが、これは本質的ではないと思います。 >要は水平アーキテクチャか垂直アーキテクチャかの違いだと思います。 >一般的な汎用OS(WinであれUNIXであれ)は、モノとマイクロの >中間的な存在です。要はどちら側に寄っているか、ということです。 > >垂直アーキテクチャ: > >【 第4層 :アプリケーション 】 >【 第3層 :サブシステム 】 >【 第2層 :カーネル 】 >【 第1層 :ハードウェア 】 > >水平アーキテクチャ: > >【 第3層 :サブシステム 】【 第4層 :アプリケーション 】・・・・ >----------------------------------------------------------------- >【 第2層 :カーネル 】 >【 第1層 :ハードウェア 】 > >なんかうまく表現できたとは思いませんが、マイクロの場合はカーネルより >上はすべて横並びなわけです。AS/400などは水平アーキテクチャと垂直アーキテクチャを >意識した設計となっています。「Inside the AS/400」などをごらんください。 >>156 しかし、名無しの意見にも一理あると思うんだよな。 正確に言うと仮想マシンとの区別をどこにつけるかってことだけど、 たとえば「参照の前に特定のテストコードを挟まなければいけない」とかの規約を 作ったアドレス参照がすべて問題ないことを示すバイナリコードを カーネルモードで動かした場合、 これをモノリシックカーネルとするか仮想マシン上のユーザモードを利用した マイクロカーネルと見るかに分かれてもいいんじゃないか? で後者の立場に立ったとき、この程度のものを仮想マシンと見るかどうか考えると・・・ ってことにはならないかな。 まあ話がズレてきてはいるんだが。 > マイクロカーネルって要は Machをもってマイクロカーネルを推察するのもどうかと。 それはさておき、どんな構成だろうと、真っ当に動きゃなんでもOKと思うんだが。 マイクロカーネルとは? とか言い出すからこじれるのであって。 >Machをもってマイクロカーネルを推察するのもどうかと いや、だからMach的なモデル以外のものがあるなら教えてと書いてあるじゃん。 Machでシステムコールとshmemが混じってるのは性能への妥協だろ。 純粋なマイクロカーネルならモジュール間通信は全部メッセージ。 (実現がINTかshmemかIPCかはいろいろある) 性能は当然犠牲になる。性能だけほしいならモノリシックにしとけ。 Machてそんなに人気あるのか? 別にMach人気でMacOSXが売れてるわけでわない罠 >>112 >>121 OS/2ならフツーに1msの精度が出ますが... >>121 >実際には人間は50msくらいずれないと音がずれていると >認識できんらしいから、DTMやるだけならそんなに時間精度いらんのだが 1音同士のずれでは気づかないけど、パターン化された音の連なりだと かなりシビアになるらしい。 machよりl4を題材にした方がいいような気がする。 >>170 L4ってのはVMMやドライバすらもユーザー空間で動かすんだっけ? >>162 Amoeba: タネンバウム Mach: CMU Chorus: INRIA MOS: HUJ V-system: Stanford Topaz: DEC/SRC こんなもんですか? てかさー、マイクロカーネルって発展途上だからモノリシックカーネルと比べるのがまちがいなような・・・ マイクロカーネルの欠点ってプロセス間通信のオーバーヘッドが大きいのが理由らしいけどさ ハードウェアMMUみたいに、CPUプロセッサーにハードウェアIPCうわおまえらなおががうがうがy てかさ、すでに存在しているカーネルを設計が古いだっけ? そういって否定するのはおかしいと思う。 生まれてきた人間にクローンは駄目だって言うみたい。 差別だと思うんだけど。 255 名前:名無し~3.EXE 投稿日:04/07/29 (木) 20:11 ID:ESu4RNUy >>252 >初期のOS Xの絶望的な重さは一体何だったんだろう? 単に、最適化不足だと思われる。 >OS Xの方がNT系のWindowsに似ている気がした 歴史的にカーネルが似ているのは必然と言える。 昔はUNIXの様な一枚岩カーネルが主流で、同時処理もマルチタスクによる ものが一般的だったが、リック・ラシッドという人がマイクロカーネル/ マルチスレッドというものを開発し、Mach(マーク)というカーネルを作った。 MachカーネルはMac OSXのご先祖様に当たるNeXT StepというOSで使われた。 一方、このマイクロカーネル/マルチスレッドに強く影響を受けて開発された OSがWindows NT3.1になる。 特にNT3.51までのNTはほぼ完璧なマイクロ カーネルシステムで、Win32APIもマイクロカーネル上で動作する1つのサブ システムに過ぎなかった。(他にPOSIXサブシステムなどもあった) その後、純粋なマイクロカーネルではパフォーマンスが出ないことが問題に なり、Win32サブシステムと画面周りがカーネルに一部統合された。これが NT4.0。 Appleは Jobsの再来により、旧来のOSを捨て(単なるエミュレータに置き換え) まったく別の構造を持つDarwinカーネル(MachのOpenな後継版)を持つ Mac OSXに至ったわけだ。 故に、どちらもマルチプロセス処理よりもマルチスレッド処理に重点が置かれ マルチスレッドを使用したアプリケーションでパフォーマンスが出るように 設計されている。 OSXとNT(Windows Xp)は異母兄弟のようなもの。 互いに模倣し合って、今がある。 ちなみにMachを開発したリック・ラシッドはMicrosoft Researchにいる。 マイクロカーネルに関してどうしてもわからない事があるのですが、 どなたか教えて下さい。 マイクロカーネルではシステムサーバによってOSの機能が実現されますよね? そのとき、どのシステムサーバが何のサービスをしているか、 という問題を解決しなければならないと思うのですが、 そのあたりどうしているのでしょうか? RPC使っているシステムもあるようですが…。 >>180 要するにサービスルックアップの仕組みはどうなっとんじゃゴルァって 話をしたいんじゃないのかしら? 違うかしら? ネームサーバ ================= 糸冬 ================= サンクス>>177 そうなんだ、良く分かります多。Machがマイクロカーネルの初実装ですかね? Mach開発者がm$に居る事までわかりましたが、Machは氏に体? >>183 よーするに、 URI -> IPアドレス と サービス名 -> ポート番号 は同じような事ってこったな。 >僕は遅いプログラムが嫌いで、手元の速いマシンの上に、ノロノロ動いているプログラムがあって、 >コンピュータ全体の性能が落ちているのには耐えられない。 http://www.linux.or.jp/JF/JFdocs/linus-lecture/design.html (>>17 のリンク一つ前) Linusたん(;´Д`)ハァハァ そりゃマイクロカーネルOut of 眼中なわけだわw カーネルにウィンドウシステムをぶち込む英断が欲しいね >>188 (゚听)イラネ ところで窓鯖2003はIIS6の一部までカーネルモードで動かす荒技やってる・・・ http://www.atmarkit.co.jp/fwin2k/dnsvrguide/iisperf/iisperf_02.html 今広告キャンペーンでWindowsServer2003+IIS>Linux+Apacheなんてやってるけど そんなの当然としか思えないw セキュリティ・ホールのないIIS書ける自信はどこから来るのかと(ry こんなことするぐらいなら 今となっては立場MS>>>Intel・AMDなんだから(IntelにはAMD64互換EM64Tにしたメリットないし) 「モード遷移軽いCPUに汁( ゚Д゚)ゴルァ!!」言ってくれた方がよっぽど(・∀・)イイ!! 近い未来に実用化されるといわれる量子コンピューターに搭載されるOSは、 マイクロカーネルだろうか、それとも、モノリシックカーネルだろうか。 その前に、量子コンピューターに僕らの言う「OS」が走るかどうかも、疑問だけどね(w ( >>96 >「リアルタイムOSは速い」わけでわないぞ。 ) あらゆるところでアルゴリズムの選択基準が最大時間↓優先(だいたい平均時間↑)だもんねー UNIX板かLinux板あたりに移動しない? ちゃんと相手するよ。 machスレでもいいし。 http://pc.watch.impress.co.jp/docs/2005/0912/kaigai211.htm >ある業界関係者は「Windows NTの当初の思想だったマイクロカーネルに、再び立ち戻ったように見える」と語る。 >実際、Microsoft自身もMicrokernelized hypervisor(マイクロカーネル化ハイパーバイザ)と呼んでいる。 リアルタイムとは、要求される最小時間単位と同等もしくはそれ以上の時間分解能があることを意味する。 例えば、1時間に1回だけ動けばよいシステムでは、最小単位時間が1分でも十分なリアルタイム性があるということだ。 >>184 俺 "Optimizing PowerPC Code" ってアセンブラの本持ってるんだけど、その著者は だいぶ前からラシッドと同じ M$ Research にいて、もはや PowerPC とは関係ない研究を している模様。 こうやって金で有能な人を幽閉して技術が外に出ないようにしているのかなと。 >>189 今更その手の常識的な話はツマンネ Linux だって kHTTPd ってのがあるじゃん。 それに、NFS サーバとかも、今ってカーネルモードで動いてるんでしょ。 今はカーネルモードどころか専用ハードウェアで動かす時代だしなあ >>190 つうか量子コンピュータで動くアルゴリズムを記述できる言語をまず何とかしてくれ。 Linuxでいうmoduleはマイクロカーネルじゃないんだよね? Windowsでのdriverはマイクロカーネルに沿ったモデルになってるのかな? VGA関係のコードとか非常に遅くなるそうなんだけど、よくwkrnなぁ。 >>204 NTが純粋にマイクロカーネルだったのは3.51までだったと思った。 難しいことは良くわからんが、今のところモノシリックのlinuxが最強って事か >>206 Vistaで描画周り( ゚д゚)、ペッ したらしいが。 >>207 ×モノシリック ○モノリシック モノリスのほーであって物知りとは関係ないので注意 カーネルの機能をユーザー空間に出す意味がいまだに分からないんだけど ユーザー空間⇔カーネル空間のコンテキストスイッチのコストが重いから? でもカーネルと同期処理が必要なときは結局システムコール呼び出すしかないし そもそもシステムコールのうち非同期で済むものなんて僅かだし >>211 ユーザー空間にするとOSが安定するから。 アプリが死んでも他のアプリに影響が無いのと同じように、 ユーザー空間においておくと、そこで問題があってもカーネルに影響を与えずに すむようになる。 パフォーマンスの話なら、カーネル空間におくよりかはパフォーマンスが劣るというのは 常識なので、みんな分かってやっている。それ以上に安定性のほうを重視しているということ。 安定なんて嘘ばっかりじゃん。サブシステムが死んだらそれで終わり。 デバッグがしやすい?嘘ばっかり。プロセス間通信が絡むアプリはデバッグ大変。 >カーネルの機能をユーザー空間に出す意味がいまだに分からないんだけど カーネルの本当に中核の部分以外を別空間に隔離することで抽象化が容易になり、 ・安全性が高まる ・設計が容易になる そしてその代償として >ユーザー空間⇔カーネル空間のコンテキストスイッチのコストが重いから? このデメリットを蒙る。 最近になってようやくマイクロカーネルな商用OSに成功例が出てきた 最大の要因は、コンピュータ自体のプロセッシングパワーの増大。 ぶっちゃけるなら、ようやくマイクロカーネルで冗長化しても 何とか使えるだけの速度が手に入った、というだけの話。 マイクロカーネルの伝道者は、もっと前からソフトウェア的なチューニングで モノリシックカーネルと遜色ない速度を実現していたとか嘘垂れ流してるけど、 言ってしまえば21世紀になってプロセッサが速くなるまで実用性なんか度外視して 理念に殉じていたのがモノリシックカーネル。 こいつらの多くはアンチMSも兼任していたりするので、 20世紀中に最も成功したマイクロカーネルの商用OSってNTだよね、 とか言うと顔真っ赤にしてモゴモゴ言い出すよw >安定なんて嘘ばっかりじゃん。サブシステムが死んだらそれで終わり。 そのサブシステムは再起動してやれば、システム全体道連れにはならないかもしれないし。 実際メインフレーム系はそんな感じになってるよね。 まあ死んだサブシス叩いてたプロセスは救いようがないけど。 >デバッグがしやすい?嘘ばっかり。プロセス間通信が絡むアプリはデバッグ大変。 GNUのHurdがここまでグダグダな理由ってこれだよね。 理念としては優れているけど、デバッグが困難で追い込み切れない間に 世間ではLinuxが伸してしまって、結局開発リソースの調達に失敗した。 >言ってしまえば21世紀になってプロセッサが速くなるまで実用性なんか度外視して >理念に殉じていたのがモノリシックカーネル。 言ってしまえば21世紀になってプロセッサが速くなるまで実用性なんか度外視して 理念に殉じていたのはマイクロカーネルだって… orz マア文脈デ理解シテモラエルヨネ... メインフレームとかサーバーだとOSが死なないことに意義はあるだろうけど せいぜい1-2本のアプリが走るだけのクライアントはアプリがコケたらそれまで 2000からXPになってエクセルが倍位死にやすくなってたまらんかったもんな みんなカーネルとか崇高な会話してる中でエクセル(笑死) > こいつらの多くはアンチMSも兼任していたりするので、 > 20世紀中に最も成功したマイクロカーネルの商用OSってNTだよね、 > とか言うと顔真っ赤にしてモゴモゴ言い出すよw っすげー偏見 ただの常識じゃん お前がつきあってるのがすげー偏った奴等ばかりなんだろうと 思わざるをえないw 開発がしやすいってのもあったはずだけど >>213 もあって結局はわかりやすいモノリシックのほうが 開発者集めやすいから大量投入できるのをLinuxが証明しちゃった モノリシックは金にならん。 全てが一つになっているから カーネルのライセンスに引きずられる。 技術的というより政治的な面で 最先端の技術を使うのが不可能な状態に陥っている。 >>220 > 開発者集めやすいから大量投入できるのをLinuxが証明しちゃった 証明していない。 Linuxは所詮マイナーOSでしかない。 百歩譲ってメジャーだとしても、 メジャーなOSでモノリシックで成功した例がある程度。 >>221 FUDお疲れです。 nVIDIA のドライバとかが有名ですが、プロプライエタリなドライバを提供することを 妨げるものはなにもありません。 まぁロードする時に一瞬メッセージが出るけどな。 ディストロに入れてもらえないのは差別だとか泣き言は言わないようにwwwwwwww nVIDIA のドライバを見れば分かるようにモノリシックカーネルでは 不可能なことがあるので、外部からドライバを読み込む マイクロカーネル構造を採用するしかないのです。 完璧なモノリシックカーネルが作れないという証明ですねw モジュール化とマイクロカーネル構造を混同してるの? 馬鹿なの? モノリシックカーネルでもモジュール化することで プロプライエタリなドライバをバイナリのまま供給する道もできたけど、 ソースがユーザの手元に届かないバイナリの塊を送りつけられることに これはこれで危機感を抱く開発者やユーザーも居るわけで… バイナリで供給されてブラックボックス状態のドライバやファームウェアを 英語圏ではブロブ(blob:塊)と呼んだりするそうな。 でも不思議だな。 linuxなどでは、GUIサブシステムはユーザー空間のさらにユーザーのプロセスで動くのに対し、 windowsでは少なくともユーザープロセスじゃないよね?新しいのは知らないけど、カーネルスペースで動いていたはず。 この辺の混沌を考えると、一概にカーネルの種類って語れないんだな/。 もっと完全性の高い原理主義的なもので比較してみたいなー。 >>228 昔と違うからねー状況が。比較自体無意味っつーか。 対立自体ナンセンスっつーか。 マイクロよりモノシリックの方が安定する WindowsとLinuxを見れば明らか 別に1枚カーネルでも内部のスレッドはあるんだし… 具体的にはどの辺が? いやだからおまいら、この考察自体時代遅れなんだってば・・・ マイクロカーネルとか念仏唱えてればご飯食えた時代があったんだね・・・ >windowsでは少なくともユーザープロセスじゃないよね?新しいのは知らないけど、カーネルスペースで動いていたはず。 NT系でグラフィックサブシステムをシステム空間で動作させていたのは、 NT4.0、2000、XPだけだよ。 NT自体は本来的な意味でれっきとしたマイクロカーネルだし、 実際のところこれまでに商用OSとして最も成功したマイクロカーネルOSだろう。 こんなイビツなものはもはやマイクロカーネルの体をなしていない、 目先のパフォーマンスのためにマイクロカーネルの理念を曲げたものは もはやマイクロカーネルを名乗るべきではない、みたいな事をほざく 原理主義者にクソミソに貶されたりもした訳だけど、 そいつらは不思議なことにパフォーマンスを確保するためにネットワークスタックや ファイルシステムやサーバをカーネルモードで動作させるUNIX系の実装には なぜか全く反応しない、というダブルスタンダードを決め込んでいたりしたから面白い。 >>237 そんな原理主義者、おまえの近所にたまたまいただけじゃねw 達成目標の定義もなしに「失敗」とか決めつける奴って笑える 特定のOSを名指ししたわけでもないのに別に怒らなくても。 でもAtomとかの省電力CPUが出てきてWindowsがシリコンディスクで普通に動くようになると BeOSとかネットサーフィン用のお手軽端末目的のOSは ほんとにもー失敗に終わったと言わざるを得ない。 モノリシックの方が良い。 なんたって物識りックカーネルって位だから、頭よさそうだし。単結晶シリコンっぽい。 (モノじゃなくでシングルって突っ込みはナシね) 結局今はハイブリッド式? カーネルプロセス内にモジュールの代わりにスレッドがあるかんじ。 >>248 Dragonfly BSDはもっと評価されてもいいと思う。 あとQNXも Dragonfly BSDを指して「(たぶん理想的なBSD on )Machだ」と言った人がいるとかいないとか CISCとRISCが融合して外部CISC内部RISCになったように モノリシックカーネルとマイクロカーネルも融合して外部モノリシック内部マイクロなハイブリッドカーネル化したのかな? カーネルは1プロセスだけどカーネル内スレッドがいっぱい走ってるみたいな >>254 今はお互いいいところをうまく合わせているよ。 沢山のPEを持った並列計算機や、マルチコア、メニ−コアのマシン、 ネットワークに分散した計算機などを透明に制御するOS、 アーキテクチャーの異なるマシンをネットで繋ぎ合わせたシステムなどは、 多分モノリシックカーネルではダメ(上手く扱えない)だろう。 >>257 Roadrunner のOSはRHELとfedoraですが。 今は1つのカーネルがマルチコアを制御してるけど 小型のカーネルが個々のコア毎に実行されるような実装ってありえないかな? 4コア位ならいいけど100コアとかになったらキャッシュ問題等で一括スケジューリングは難しいと思うし むしろ100個の小さいカーネルを走らせたほうがよかったりとか・・・ CPUがマルチコアになるとカーネルってどうなるっていくんですか? モノリシックカーネルの場合、ジャイアントロック(あるスレッドがカーネルの 一部を実行中だと、他のスレッドは止められる)をなくして、並列性を高める ことが求められる。 マイクロカーネルは、最初からそういう風に設計しやすい、というのが うたい文句のひとつ。 マイクロカーネルはカーネルをジャイアントロックしても カーネル機能自体が小さい(モノリシックOSでも排他制御が必要な要素)で ファイルシステム等の大きな機能はアプリと同じレベルで並列動作するから問題が少ないけど モノリシックだとカーネルを再入可能にして必要部分だけロックとかしないとロック時間が長くなるだっけ? でもその辺りはモノリシックでも結構こなれてきていて むしろCPUキャッシュとかを意識して複数コアにどうやってスケジューリングするかとかが重要になってるっぽいよね、最近は。 個人的にはそれ以前の所(CPU間の同期周りや割り込み処理等)がよくわからんけど、 今はマルチコアが当たり前だから「使える」OSを作るためのハードルがめちゃ高くなったよね。 昔と違って、今はお互いのいいところを双方が取り入れているから、 宗教的に争う意味もなくなってきているんだよねえ。 LinuxやFreeBSDってファイルシステム等の機能がカーネル内部スレッド化されてたっけ? マイクロカーネルのマの字も無い気がするのだけど WindowsとMacOSはマイクロカーネルベースのハイブリッドだよね確か Macは完全なマイクロ いつの時代も最先端 Windoseがマイクロだったのは最初だけで今はモノシリ いつもMacをパクって失敗ばかり(W Mach3とMINIX3…とちらが正統マイクロカーネルの王者だろう? モノリシックUNIXの正統王者はNetBSDです、これはゆずれません。 俺もOSを開発したい。 まずは、8ビットマシン(OSというより、DOSになるが)から始めるか……。 7年間で300レスか・・・定番ネタだったけど思いのほか白熱しなかったんだな・・・ 安いもの使ってサービス提供するっていうのが最近の風潮だもんな 中身なんてどうでもいいっていうか それで高品質なものが手に入るし googleのデータセンタとか見ても 分散システムの個々のPCがプロセスでそれらを統括するPCがカーネルとは言えないだろうか >>197 この手の馬鹿ソフト屋は精度と確度の違いを全く理解していないから 歯抜けの出力だしても平然としてるんだよな。 1時間に1回動けば精度はどうでもいいって話だと、 例えば59分59秒に動作してログを記録した後1時間00分01秒にもう一度動いて、 さらに次は119分59秒先…なんていうデタラメな動作でもokってことなのか 1時間おきに1回、誤差10ナノ秒以下で動作、みたいな場合の制御はどーすんだw 俺RTOS系の人は固定プライオリティの割り込み可能スケジューラーを作ればRTOSって勘違いしてるよね なんかこう、タネンバウムもマイクロカーネルも批判されがちだけど、amiga系(aros.morphosとか)を見る限り実装によりけりなんじゃないかと思うのだが。 AmigaOSってマイクロカーネル系なの? ちなみにマイクロカーネル考にはこんなのも有ってなるほどなと思ってたりする ttp://d.hatena.ne.jp/oraccha/20100601/1275366559 うん。ただ、マイクロカーネルのくせに、x86向けに作ってないところが残念で仕方ない(arosを除く)。 あと、超漢字も軽いことで有名だよね。だから、実装次第なんじゃないかなと思うわけで。 マイクロカーネルはCPUの性能が上がってようやく使えるものになったみたいな意見もあるけど(それが事実かどうかはともかく)、ハードに合ったソフトを使うのは、悪いことじゃないよね。と思うのは僕だけですか。 今の定義だと ・マイクロカーネル → プロセス毎にアドレス空間が分離して保護される だけど本質的に「基本機能+大きなサービス」と捉えれば保護は不要なわけで B-TRONやAmigaOSは保護にかかる大きなオーバーヘッドと無縁だったんじゃなかろうか? メッセージやコンテクストスイッチによるオーバーヘッドばかり注目されてるけど 実はその陰で動く仮想アドレス関連もバカにならないとか・・・ リーナスとタネンバウムのも「マイクロvsモノリシック」じゃなくて「linux vs minix」みたいだし(2006年のは、まだ読んでないけど) リーナスもマイクロじゃなくてmachの批判をしてる感じだから なんだかんだでまともな議論はされてないんじゃないかと思う処はある 超漢字(B-right/V)はソース公開されてないから、中身がメッセージパッシングで作られてるかどうか 正直わからん。 外殻はメモリ共有して直接データをやりとりしちゃってそうな気がするんだが。 共有メモリーもIPCの一つの手法だし 「保護」さえ無視すればメモリ上にメッセージを編集してポインタを渡すのが一番速い? ITRONは最近までメモリー保護は無かったはずだからBTRONもそんな感じじゃないかな? MINIX1だってMMU無しの8086で動作する「マイクロカーネル(ちとアレだが)」だしね メールボックスはポインタ渡しだけど...そういうインタフェースもなしでやっちゃってないかなとw 有名にしたのはMachとMINIXだけど AmigaOSとかOS/9とか結構昔から実用化されてたんだね>マイクロカーネル よく判らないんだが、GNU Hurdてのは、Mach+BSDのマイクロなんだろ。 ということは、ハイブリッドじゃないdarwinとほとんど同じなわけだ。 だったらGNUはdarwinをマイクロにして公開しちゃえば良いと思うんだが駄目なのか? HurdがBSDというのは初耳なんだが。 ていうかGNUプロジェクトがGPLでないものは取り込まんだろ。 一時期はフリーUNIXの大本命だったのにね>Hurd 蛇足だけどUNIXとしてはNetBSD マイクロカーネルとしてはMINIX3が好き 他にはInfernoとかELATEとかQNXとか…主流になれない俺…orz morphosのカーネルのquarkはQNXを参考にするつもりだったがL4を真似することにした。 みたいな事がwikiにあると思うんですが、L4やQNXなど(mach以外)を採用したり 参考にしてるOSってなにかありますか。ご存知でしたら教えて戴けますか。 なんだか、マイクロカーネルの人気が低いのはmachが原因な気がして、ならないのです。 たとえば分散OSで検索して出てくるのはmach以外も多くない? ちょっとスレチだけどInfernoみたいなVM型カーネルも面白いな。 マシンパワーが有り余っている今、主にセキュリティ面のアドバンテージから流行ったりして。 >>302 > 一時期はフリーUNIXの大本命だったのにね>Hurd 一年前のレスにレスだが、そんな時代はない。 Mach/マイクロカーネルが充分な速度を得ることは不可能、 それがはっきりした頃に開発が始まった。 > Mach/マイクロカーネルが充分な速度を得ることは不可能、 > それがはっきりした へぇー。 ということは BeOS も Mac OS X も充分な速度を得てないんですね。 勉強になりました(棒) 今はLinux使ってるけどHurdが出たらそっちへ行く…って人が結構居たがな もうはるか昔の話しではあるが >>312 Mac OS XのBSD部分はカーネル内にある。 Mach/BSDはマイクロカーネルじゃない。 使ったことあればバカでも知っているはず。 taskリストに出てこないので。 wikipediaより > Mach 3.0は、Mac OS Xのカーネルにも用いられているが、 > 実装はマイクロカーネルではない。 結局Machカーネルの外にBSDサーバーを出すことが出来なかった。 これはOSF/1もNEXTSTEPもそう。 そもそもMachは3になるまでBSDを機能拡張する形の実装だった Machの外部サーバとして実装され、今も維持されてるのはHurdだけ。 MAC OS-Xはそうだね で、BeOSは? あと組込み系ならQNXとかも有るんだけど Machだけ持ち出してマイクロカーネルは遅くて使いものにならないと言われてもねぇ BeOSはほぼ死亡状態だからなあ。 Hurdの方がまだちゃんと維持されてるんじゃない? ユーザ環境はDebianに出来るし。 ああ「マイクロカーネルは遅くて使い物にならないからHurdは全く期待されていなかった」 みたいなレスからの流れで実用的な速度のマイクロカーネルとして上げただけだから>BeOS 具体的には>>311 からの流れ Machベースで完全に外部サーバー形式にしてるのはHurdだけかね? 初期のBSD on MachもNext StepもMacOS XもOSF-1もパーソナリティ−を内包してたよね? ある意味Machの遺伝子を受け継いでパーソナリティを入れたり出したりしているのがWindowsNT系ってのが皮肉かな 初期はBSD on Machじゃなくて、Mach on BSDとして実装された。 version 2まで。 NTカーネルはモジューラカーネルで、Mach 3とはちょっと仕組みが違うね。 COM/OLEの枠組みで提供されているところはMachのサービスサーバに似てるけど、 コアな部分はカーネル内に動的リンクされてる。 そういやHurdはL4ベースのもあるみたいだけどどんなだろ? あとタンバネウム先生の総決算MINIX3.xも悪くないと思う MachもMINIXも3.0で初めて本当のマイクロカーネルになったんだな それいぜんはマイクロカーネルじゃないし…いや、なんとなく 現役のメジャーどころでまともなマイクロカーネルってWindows(Vita以降?)だけ!? MacOSはmachベースでもマイクロカーネル的には作られてないらしいし MINIX3やDragonflyBSDはマイナーだし… いまや純粋なマイクロカーネルは組み込み系商用製品の一部(QNXとか)とMINIX3だけか Mach3〜とかも聞かなくなったし当時マイクロカーネルすげーって興奮していた身としては寂しい でも個人で細々と作るにはマイクロカーネルのほうが手軽だよね! …と間違ってLinux板に書いてしまった…orz MkLinuxってあったよな。 Machがカーネルの奴。 「僕にはそれが面白かったから」の邦訳にはモノシリックと書いて在ったが そもそもAppleには開発力がないためにOSの開発に失敗して、 他からカーネルを借りてきた。 MacOSは〜と自慢気にいう馬鹿はなんなのだ。 でっていう。 Darwinの何割が借り物なのか定量的に言わなきゃ、どっちも知らんがな。 むしろ、借り物ってのがステマだったってことはないだろうか? Copelandは締切りに間に合わなかったけど秘密裏に開発成功していて、 でも今更どうしようかって時に、売れないのに評判だけはよかった同系の NeXTの技術を導入したということにして汚名返上してみたとか? 妄想してみるなら、例えばGPL汚染が内部調査で発覚して、 結合しているブラックボックスは公開するわけにはいかなかったので、 密かにロンダリングしてたというのはどうだろう? 従来の延長路線でAPIを整理しつつ、linuxの名前を利用し汚染部分を公開して その外部GPLコードの内製置き換えをテストさせていたとかは考えられないだろうか? NSってプレフィックスが付いてるものはNeXTSTEP由来と思えばいいんじゃねーの? Mac信者というかジョブズ信者にとってはOS XとNeXTSTEPはおんなじようなもののようだし。 mach2.5同士が合致しないと言われて、mach3がおんなじようなものと言われる不思議。 Darwinってmach3系だっけ? NextStep由来なら2.5系じゃないの? 最初の奴だけ2.5で、その後何故か3になってるんだっけ? マイクロカーネルでもないのに何の意味があったんだろう? 人とゴリラの遺伝子は98.25%合致するらしいから、誰かが1.75%をでっち上げれば ゴリラをandroid化できるな。 Hurdっていつでるの? あと、なんでマイクロカーネルにGnuはこだわるの? Hurdはもうあるんじゃない これ以上のものはもうでてこないんじゃない GNUはマイクロカーネルにこだわっていないんじゃない すでにLinuxを我が物顔で「GNU/Linux」と呼べとか行ってるし マイクロカーネルにこだわってたというより、当時はフリーな選択肢がそれしかなかったんじゃないの? machはOSF陣営が採用していたわけで、UNIXとしての実績があった。 3でマイクロカーネル化してOSコアのmach部分とライセンスが必要な部分が分離できていた。 というわけで後者の代替を作ろうと考えたんじゃない? でもBSDが、いやよく考えてみたら気がついたらこれ殆ど原型とどめてなくね? ってことでフリーでいいよとNet/2を出して、いやそれおらんだってことで裁判沙汰になって FreeBSDなんか書き直しする羽目になったけど、それでもHurdより先にリリースできて、 その少し前に現れたlinuxに人が集まって、その間にUNIXの冷戦構造も崩壊して、 情報ハイウエイやら、PCはdosからwindowsの時代になるわで、大事な数年を逸して、 一体なにもたもたやってんのさ?って事になったんじゃないんだろうか? ライセンスに縛られないUNIXとしては(訴訟期間はあれど)BSDがとっくに良いものをリリースしていたのに それでもGPLにこだわって「GPLのカーネル」を欲するのがGNUたるゆえんかな Gnu is Not UnixはUNIXに代わるフリーなシステムを作る事ではなくUNIXに代わるGPLのシステムを作る事だったと >>344 いや、Net/2はLinux 0.01と同じ年で、その前年からHurdは開発始まってたらしいよ。 しかしブートできるまでに3年も掛かって、その頃にはSoundBlasterで CD-ROMが普及していたので、リリースした時点であっという間に広まった。 逆に言えばライセンス問題があるとCDプレスに二の足を踏むわけで、 破棄だけは避けようと譲歩したんじゃないんだろうか? まあ4.4BSD Liteベースで完全解決できた訳だけど、その隙にlinuxが入り込めた。 せめてLite移行完了までにHurdが形になっていれば、真打ち登場と言えたんだろうけど、 mklinuxとか、linuxにさえ抜かれちゃう始末だし。 mach3はGPLではないので(HurdもGNU Machの機能は使っていないんだっけ?) GPL以外に代替があるなら完成度の低いものをわざわざ選択する意味はないよね。 しかしBSD on muchって何度も復活するよね 初代much(これは不完全だが) > Hurd? > dragonfly BSD でも普及には至らないんだよなぁ 一応、NextとOSF/1は実用か? っていうか、ttp://www.rtmach.org/intro-j.html こんな面白そうなものがあったのに誰も紹介しないんだもん。 存在知らないから独自OSに走って車輪付けるところで消耗して結局エターナる OS開発者も居たんじゃないだろうか?と、androidの作りとか見て思った。 10年位前から知ってるし 独自OS作る奴は作ることを楽しんでいるんだから既存のOSはあまり関係ないだろう 逆に既存OSより良いもの(実用的な物)が欲しい奴は見込みの有りそうなプロジェクトにコミットしてるんじゃない? >>348 >10年位前から知ってるし それをどうやって証明するのさ? 消息不明の作者逹にアンケートでもした? >独自OS作る奴は作ることを楽しんでいるんだから既存のOSはあまり関係ないだろう そういう思い込みで教えてもらえなかった連中も多いんじゃないの? 誰でも知っているような事を意外と知らなくて遠回りしたなんて話も後で結構聞くんだよな。 まあ困ってる事をきちんと言わない見栄っぱりの自業自得だけど。 >>10年位前から知ってるし >それをどうやって証明するのさ? >消息不明の作者逹にアンケートでもした? 10年は嘘だった このページで知ったから5〜6年前だ http://www.bekkoame.ne.jp/ha/kuwaya/unchiku.html 各作者が知ってるかどうかは知らんし、そういう文章にはなってないはずだが? >>独自OS作る奴は作ることを楽しんでいるんだから既存のOSはあまり関係ないだろう >そういう思い込みで教えてもらえなかった連中も多いんじゃないの? なら俺OS系のWikiとかに書きこんでみたら? その考えのほうが思い込みだってわかると思うよ 何が思い込みなんだ? 俺OS(だと思い込んでるの)にわざわざ別のOSの事言う奴はアンチだけってことだろ。 顰蹙を買うのは嫌なので(悪)名を売りたいのでなければ黙っていた筈。 「あまり関係ないだろう」と書かれていて、そう思っている人が居るのは事実で、 そういう人は指摘してくれないだろうから、後は2chでも見るしかないんじゃないか? 既存の有無というのは、モチベーションの面で関係大アリじゃないかな? 無いのでオレが作りたいと思う奴は、有ると知ったらやめたくなる。 有るので真似すれば作れると思う奴は、無いと知ったら逃亡する。 アジア人は全体を見て行動し、西洋人はリーダーを見て行動するらしい。 これってマイクロカーネルとモノリシックカーネルの考えそのものじゃないだろうか? でも実際の区分はぶっちゃけ、ランプの魔神を大衆の願いを叶えてくれる仏のようなお上と考えるか 市民の下で働く一騎当千の公僕と考えるかという違いの話になってるんだよね。 結局、文民統制にハードウェアによるカーストを利用するかどうかで、 性悪説なら緊箍児が必要だし、性善説なら不要って話に矮小化されちゃってる。 ドライバーに対してはスタックマシンとして振る舞うVMスタブが一番堅牢。 VMのサーフェス側のサービスレベルをどの高さに設計するかだけの話。 と言うのも、どうしてもソフトウェアカーネルを設置したいのであれば、あれこれ調整された機能の調製を求める内にモノリシックに行き着くのは当然であるから。 しかし、そもそもソフトウェアカーネルなんぞハードウェアの仕様を覚えられない難読症児の戯言だとする者はマイクロカーネル乃至マイクロコードを指向する様になる。 最速は常にハードウェア、以上。 amiga osはマイクロカーネルだったのか 「マイクロカーネル風」って表現もあるし、メモリ保護なし・直接関数コールとかスゲーけど別にいいよね あとMacOS9の下にマイクロカーネルがあったのも知らんかった マイクロカーネルもバズワードで明確な定義が無いのだから風も何もない。 基本的には「プロセス/ファイルシステムやデバイス・ドライバー等の大きな機能を除いた基本機能のみ」のカーネルって事だけど ・基本機能とは?(タスクスケジューラーやメモリアロケータも含まない!とか仮想アドレス+メモリ保護も必要!) 辺りの解釈が不明確というか各人で分かれてる感じ スケジューラーとメモリアロケータは含まないけどメモリ保護は必須みたいな意見も見た気がするし・・・ メッセージパッシング機能とディスパッチャが最低限でしょ。 メッセージパッシングの方式(amigaは関数テーブル呼び出しだそうで)をどう定義するか 他の機能(スケジューラーやメモリ管理)がのっているものはマイクロカーネルじゃない!と原理主義に走るか(ゆるくし過ぎるとなんでもかんでもマイクロカーネルと言えるようになるし) 線引は難しいですよね CISC RISC と一緒で完璧にどちらかに分類できる実装なんか今時存在しない 質問です マイクロカーネルについて勉強中です マイクロカーネルはプロセス間通信を使用してサービスを受けると理解しました。 これはアプリがシステムコールを呼んだ際、自分のコンテキストは待ち状態になり サーバーで待ち状態だったプロセスが解除されてコンテキストがバトンタッチ(?)するという感じでしょうか? もしそうならば、たとえばサーバーのプロセス(スレッド)が1つしかない場合、複数アプリから同時にサービスコールが呼ばれると 1つだけ処理されて、残りは待たされるのでしょうか? あいまいな質問ですみません。 YES 物理ディスクのアクセス等は(キャッシュ等は除き)そもそも並列動作できないから普通に待ち行列行き OS機能全体を1つのスレッド(プロセス)で処理するような実装なら誰かがシステムコールを実行中は他は待たされる たいていはサービス毎に処理スレッド(プロセス)を走らせるから競合しなければ並列動作する(ディスクIOとコンソール出力とか…) マイクロカーネルばんざーい! マイクロカーネルとして良いのはなんだろう L4? QNX? MINIX? OSE? OSの話題が無くてつまらん モノリシックはNetBSD最高 最新の Minix は マイクロカーネル + NetBSD だし はい… それはそれとして本家NetBSDの移植性を高めた設計も好き 一時期モノリシックカーネルの方が正義みたいな扱いだったけど またここに来てマイクロカーネルの方に勢いが出てきたつーか研究が盛んだね 次スレ立てるときはハイブリッドカーネルも入れてくれ 最近ワンボードPCを買ったからとりあえずseL4で遊ぼうと思う。 「モノシリック」は「モノシリアン(mono-syrian)のような」という意味であり、 十二世紀半ばに西欧にて発生した。 「モノシリアン」とは第2回以降の十字軍遠征を阻む、シリア(聖書でアラムの地とされる、 聖地エルサレムを含む西アジアの地中海に面する一帯の地域)の回教徒達(Syrian)の 結束したさまを指す十字軍内部で用いられていた隠語であり、十字軍衰退とともに 一般人への回教文化の流入とともに広がった。 現在、「モノシリック」は一つに統一され強固にまとまったさまを指す言葉として 用いられている。 例えばモノシリック・カーネルとは一枚岩のような丈夫なカーネルということである。 Linuxは事実上マイクロカーネルであり マイクロカーネル VS モノリシックカーネルの結論は やっぱりマイクロカーネルの方が良いという結論になっている。 小さいうちだけだよ。すぐに管理不能になる 同じ規模でも10人で開発するのと100人で開発するのとでは違うだろうな。 そこそこ純粋なマイクロカーネルで生きてるのってQNXとMINIX3.x位? Windows10とかは山盛りのDLLやサービスの下にあるカーネルはマイクロカーネルだったりするのか? UNIX系はDragonflyBSDみたいな変わり種以外はモノリシックだよね Mac OSXは…わからん >>373 一つに固まってると力をかけるとすぐ折れるんじゃなかったっけ? 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 BUGPUR0KQR ☆ 私たち日本人の、日本国憲法を改正しましょう。現在、 衆議員と参議院の両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 2021年現在マイクロカーネルの事を語るならL4をまず調べよう 俺は最近L4の仕様書を読み始めたばかりだけどな このスレ年レベルで読む人も書く人も一桁がいいとこっぽいから俺の遊び場にしてもいいよな >>376 IntelCPUのファームウェアに入っているという話のMINIX3よりも多く世の中に出回っているのはOKL4 一種の組み込み用ハイパーバイザだけどL4系のマイクロカーネル。これはクアルコムの通信用ICの ファームウェア等に使われている。iOSやandroidスマホに使われているという話 年間数億台以上のレベルで使われている >>374 「Linuxはマイクロカーネルとモノリシックカーネルの良いとこ取り」みたいなドキュメントが結構見られた時期 もあったが、それは1990年頃までの古い認識、前世紀の遺物 現在主流のマイクロカーネルでは極小原則、あるいは最小原理と呼ばれる原則に則りカーネルモード(CPUの 特権モード)で動く実際のコードサイズを可能な限り小さくする方向で実装される L4系のマイクロカーネル実装の一つseL4(カナ書きするとエス・イー・エル・フォーと発音するとドキュメントに 書いてある)のホワイトペーパーによれば Linuxのカーネルモードで実行されるコードサイズは2000万行、に対してseL4は1万行とされている ここまでカーネル特権で動くコードを小さくする理由は2つ 1つは性能面の問題を解決するため Mach等の初期のマイクロカーネルを採用したOSの性能に問題があった理由はサブルーチンコールに比べて メッセージパッシングが遅いことだった GHz級のクロックで動くCPUのサブルーチンコールに必要な時間は数nS程度に対してメッセージパッシングでは 平均的に数μSと1000倍程度の差があった。この時間がかかる最大の理由はプロセスAからプロセスBに通信を 行う過程でA→(カーネル)→Bとカーネルに制御を渡す必要があり、この時にキャッシュがフラッシュされてしまう ことだった L4開発者のリートケはメッセージパッシングを行うカーネルコードをCPUのL1キャッシュに収まる(さらに余裕がある) 程度に極小化することでこの問題が解決できることを示し、L4では数十CPUクロック程度でのメッセージパッシング 実現した もう一つの理由はまたあとで マイクロカーネルのカーネルを小さくする(Linux比 1/1000)理由その2 安全性の点から特権モードで動くコードは最小にすべきだという思想から小さくする 2000年以降のマイクロカーネルの研究ではこちらの方がメインになっている 多くのマイクロカーネルOSではデバイスドライバはユーザ権限で動作する 従来のネットワークドライバがカーネル特権モードで動くOSの場合、そのドライバにセキュリティホールがあって外部から突くことができるとするとカーネル全体を停止させたり、最悪の場合は外部から特権を取得できてしまう ほぼ全てのデバイスドライバがユーザモードで動くマイクロカーネルではこのような問題は起きない。例えデバイスドライバに問題があって、突くことができるセキュリティホールがあったとしてもシステム全体の特権を取得することはできない また「発見されていない潜在的なプログラミング上の欠陥」の問題もある。2000万行のカーネル特権で動くコードを持つLinuxでは10000箇所程度の潜在的な問題があると考えられ時々セキュリティアドバイザリーとして報告される(たまにroot権限の取得が可能なものもある) これに対して1/2000のコードサイズのseL4では存在するとしても数カ所でありroot権限の取得可能なものが存在する可能性は低い さらにseL4の場合はマイクロカーネル全体の形式的検証が行われており問題が存在する可能性はさらに低い MacOS は原始的なマイクロカーネルOSだったMach2.5のコードを元にメッセージパッシングを行っている部分をサブルーチンコールに書き直してモノリシックカーネルにするというL4以降のマイクロカーネルとは逆方向の開発を行った物である メッセージパッシングが遅いのが性能上の問題なのでメッセージパッシングをなくしてしまえば良いという発想である これはマイクロカーネルの持つ利点を捨て去っているわけでMacOS10.0が開発された1990年代後半の商業用システムとしては仕方ないものだったと考えられる(当初のL4はインテルx86専用でアセンブリ言語でコーディングされている部分もあった) もしCPUに依存しないAPIを導入したL4Ka::Pistachioの開発以降にMacOS 10.0のプロジェクトが開始されていれば違った物になっていたかもしれない ヨッヘン・リートケによるマイクロカーネルの設計方針あるいはマイクロカーネルの定義は明確である --wikipediaからの引用-- ある概念をマイクロカーネル内で実現することが許されるのは、それをカーネルの外に移した場合、すなわち競合する実装が可能となることでシステム必須の機能が妨げられる場合だけである この考え方に基づいてL4マイクロカーネルはわずかな基本的機構を提供する ・アドレス空間(抽象化されたページテーブルとメモリ保護の提供) ・スレッドとスケジューリング(抽象化された実行と一時的な保護の提供) ・プロセス間通信(分離された領域間の制御された通信) --- つまりカーネルモードで実装する以外に選択肢がない物以外はカーネルに入れてはならない、という事 >>384 訂正 ×Mach2.5 ○Mach3.0 Mach2.5はモノリシックOSだった Mach3.0はデバイスドライバをカーネル内に実装したfatなマイクロカーネル Mach3.0を2.5と同じモノリシックに書き換えたのがDarwinでMacOS Xのコア ここまでのまとめ 〜1990年代 OSカーネルの肥大、複雑化の反省からマイクロカーネルの概念が発生する OSの機能を部分的にカーネルの外にユーザープロセスとして実装する試み OSとしての機能はこの方法でも果たすことはできることが確認される 1987 MINIX1.0 1989 Mach3.0 主張:OSの開発、保守のためには小さな部分に分かれていた方が都合がいい 反論1:分割した部分間の通信にはコストがかかり性能が低下する 反論2:一つのカーネルであっても開発方針としてモジュール化はできる。開発の容易さは変わらない 1990年頃の結論:マイクロカーネルを採用する明確な利点はない 2000年前後 ドイツに天才プログラマのヨッヘン・リートケが現れる 「マイクロカーネルの実装が遅い(=カーネルと各モジュール間の通信が遅い)のは通信によるプロセス切り替えでCPUキャッシュを使い切ってしまうのが原因である」 ↓ だったらマイクロカーネルのサイズをCPUキャッシュに収まる程度の16kByte未満に押さえてしまい、メッセージの通信も高速に行える形だけに限定してしまえばいい ↓ OSの機能のほとんどをマイクロカーネルの外に実装したL4が作られる デバイスドライバやファイルシステムもカーネルの外に実装される 性能の問題は解決した 2001年 ヨッヘン・リートケ没 惜しい人を亡くした 2000年代以降 事実:マイクロカーネルを採用しても性能は落ちない 疑問:わざわざマイクロカーネルの形でOSを構成する利点って何? 仮説1:カーネルに不具合があると不正な方法でカーネル特権を取られてしまう可能性がある。だから特権で動くカーネルはできるだけ小さい方がいい。小さければ小さいほど不具合が残っている可能性は低くなる 仮説2:デバイスやネットワーク等が原因でOSがクラッシュした場合、マイクロカーネルの外でのクラッシュであればカーネル自体は再起動せずに単一のユーザプログラムの処理だけで回復できる可能性は高い。安全性の高いOSが作れるかもしれない このあたりが現在の研究課題 2020年代現在組み込み用ハイパーバイザとしてマイクロカーネルは広く利用されている タネンバウムとリーナスの論争なんてのは完全に1990年代の話だし、MacOS Xがマイクロカーネル実装だったMach3.0をわざわざモノリシックに書き直して作られたのは2000年頃の話でそのころのL4はCPUのアーキテクチャにゴリゴリ依存して最適化していた段階だった だからそのあたりの話って今のマイクロカーネル技術からすれば本当の昔話 今となっては論点自体が存在しないようなお話 英語のSlideshereだけど以下の「Microkernel Evolutio」が歴史的な話から最近のMicrokernelまで扱っていて 図も多くて分かりやすい https://www.slideshare.net/jserv/microkernel-evolution read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる