1read 100read
2012年3月OS177: マルチカーネルOS開発中... (202) TOP カテ一覧 スレ一覧 2ch元 削除依頼
OSを作ってみよう (527)
最強のブートディスクを作ろう! (372)
大変、本屋からBSDが消えました。 (230)
次世代BTRONをものすごい勢いで妄想するスレ (667)
OSASKスレッド Part12 (416)
脱MSの動き (576)

マルチカーネルOS開発中...


1 :05/04/10
マイクロカーネルを発展させ、ついにはカーネルを二つ同時に
実行してしまうアーティキチャを考えています。
それらのカーネルは一つの共有メモリーを持たせて、
オーバーヘッドによる低速を抑えるつもりです。
ご意見を。

2 :05/04/10
!i.                 i,      ! なんと! 明治天皇陛下が>>2getなされました!
i、_           __,,,-- 、 \     !  おまえら全員ひれ伏してください。おながいします。
!、_`'''''-- 、:: :: ,,,,-ー'___,,,,,- 、  i   ノ| !
i ~'ー-- 、ヽi. iヽ __,,-'___,,,,,,,,__  i  /`i.i.!  帝ハ神ナリ。帝ハ神ナリ。帝ハ神ナリ。帝ハ神ナリ。帝ハ神ナリ。帝ハ神ナリ。
i<"弋~゙゙>.i゙ .:゙:::゙<´弋~ノ,-''´  i ! i.  i.i!
i `'ー゙'´´.,i ::::::  `'ー''゙´   .::;ヽ! i ノ i  >>1た垣 退助 お前の命に価値なんかねーよ。自由>∞>お前の命(藁
i      i  :::::  :::::::..   .::;;;;;;;;;゙i,゙i  i  >>3条 実美   お前のようなヘタレが本当に太政大臣なのか?(w
.i,    ,;i  :_,,::::.  ::::::..  ;;;;;;;;;;;!,,,,,,/.  大隈 >>4げ信 てめーの作った大学、お前並にDQNだな(プッ
. i   i.    ヽ::   ::::.  ;;;;;;;;;;;;;;;;;;;;;,i   西>>5う 隆盛  ガキみたいな喧嘩ごときで下野してんじゃねーよ。(笑
 i.   ヽi!i,__i!!!''゙     ::;;;;;;;::::::;;;;;;;;;;;,i   伊藤 ひ>>6文 おいおい、チョンごときに暗されんなよ(禿藁)
 i  /  ,-、 `'-,,       ::::;;;;;;;;;;,i   >>7か江 兆民 アル中で議員やめて、その後の事業ことごとく失敗(プッ
  i/  /"''"ヽ  `'-,    :::::;;;;;;;;;;i    >>8ま県 有朋 維新早々、いきなり汚職事件おこしてんじゃねーよ(藁
/__,,-'´-,,____,,-`'-,,___\  ....:::::;;;;;;;/    大>>9保 利通 征韓論に反対したくせに征台するのかよ、おえでてーな(w
 ̄ ゙i,   / ゙i,      ̄    ,;;;;-'      江>>10 新平   大久保ごときに惨敗すんなんて、お前ホント雑魚だな(笑

3 :05/04/10
それ、普通に仮想化してるだけじゃないの?

4 :05/04/10
マルチがカーネルのOSほしい。

5 :05/04/10
HTですた、というオチ

6 :05/04/10
>>1
もっと詳しく、具体的に

7 :05/04/10
ええけつしとるのぉ(*´Д`)ハァハァ
http://219.173.171.38/
http://219.173.171.38/~ss.jpg
http://your-kmiajdwmaj/
http://your-kmiajdwmaj/~ss.jpg

8 :05/04/10
カーネルサンダース。

9 :05/04/11
>>1
要するにVMWare ESX Serverみたいな物?

10 :05/04/14
1です。
MicroKernelアーティキチャのもと、
分離されたカーネルの機能を各ミドルウェアに実装します。
つまり、「カーネルが複数存在する」または
「カーネル(全体制御中枢)が存在しない」と表現できます。
MicroKernelといってもMachから派生するわけではありません。
仕様は複雑難解になりますが、革新的なアーティキチャになると確信しています。
☆考えられる利点☆
1.もし、Windowsのカーネル(当然このOS用にビルトしたもの)を
このOSで実行できれば、エミュレーターの数十倍ものスピードで
Windows専用のアプリケーションが実行できます。
2.中心が存在しないことは
「どの一点が停止しても全てのサービスが停止することはない」を意味します。
つまり、Linuxより協力なサーバーとして利用できます。
並列処理が強化されるので、OSは安定するはずです。
セキュリティーシステム等も強化できます。

11 :05/04/14
http://www.amazon.co.jp/exec/obidos/ASIN/4569620973/250-1363011-4885857

12 :05/04/14
>>10
要するにマシンを二台置けばいいってことだな?

13 :05/04/14
(・∀・)アーティキチャ!
(・∀・)アーティキチャ!
(・∀・)ビルト!
で、その複数存在するカーネルは誰が統制すんねや。
カーネルか?

14 :05/04/14
モナーOSつくるような根気が>>1にあるかどうか

15 :05/04/14
>>14
出来るだけなんとか頑張ってみます。
>>13
統制する物はありません。
カーネルからカネールへのシステムコールをもサポートします。
データは共有メモリによって最速化します。
(共有メモリは一つ)
>>12
一台で、一つのCPUで起動します。

16 :05/04/14
>>1
そんなもんいらない。
http://pc.watch.impress.co.jp/docs/2005/0330/amd.htm
 Pacificaは、CPUのリソースを独立したパーティションとして分割し、
その分割した各リソース上で複数のOS/アプリケーションを
動作可能な仮想化技術。単一のシステムが複数の“仮想システム”として
動作する。Pacificaのパートナー企業は、Microsoft、VMware、
XenSourceらが名を連ねる。

17 :05/04/14
え ぇ け っ し と る の ぉ(*´Д`)ハァハァ
うはっwwwおkwwwうえっうえっwww??

18 :05/04/14
>>16
観点からして違うだろ(藁
>>1
複数の「仮想カーネル」を統べるカーネルが存在しないってことだけど、
それだとメモリ管理とかはどうやってやるんだ?

19 :05/04/14
画期的なアーティキチャのカーネルをビルトする。

20 :05/04/14
ちょっとおまいさん、
アーティキチャって何か教えてくれんかのう。

21 :05/04/14
結構みんな そこそこ(半)マジレスしてるけどさ (>>5 >>9 >>13 >>16 >>18)
それに まともに答えようとするそぶりはないし
特に>>10の ☆考えられる利点☆ の後読めば
要するにネタじゃん   って、折れも釣られた事になるなw

22 :05/04/15
えーPCから離れていました。
>>21ネタではありません。
しかし、完成できなかったり、実用化されなかったりしたときは
結局ネタになってしまうのかもしれませんね。
>>18アプリケーションのメモリ管理は専用のカーネルを作成します。
カーネル内でのメモリ管理は相互に監視、管理していきます。

23 :05/04/15
ふーんネタじゃないのか じゃ教えて欲しい。 下の1.2.3.は折れの貧しい
知識で考えると矛盾するんだが、
1.> 「どの一点が停止しても全てのサービスが停止することはない」(>>10)
2.> 一台で、一つのCPUで起動します。(>>15)
3.> 統制する物はありません。(>>15)
2つのカーネルをA,Bとすると 1.には@A,Bの切り替え AA,B相互のメモリ保護、が最低必要だけ
ど統制する親カーネルなし VMでも マルチCPUでも 複数マシンでも無しに、どうやって実現するの?
今までの色んなヒトの質問を少し具体的にしただけだけど、

24 :05/04/15
流れ読めよ。既にスレタイは関係ない。
ここは画期的なアーキティチャのスレだぞ?

25 :05/04/15
失礼、アーティキチャだったな
画期的なアーティキチャがあれば何でもできる
そんな風に考えていた時代が僕にもありました

26 :05/04/15
だからこれでいいじゃん。
これじゃいけない理由書いてよ。
http://pc.watch.impress.co.jp/docs/2005/0330/amd.htm
 Pacificaは、CPUのリソースを独立したパーティションとして分割し、
その分割した各リソース上で複数のOS/アプリケーションを
動作可能な仮想化技術。単一のシステムが複数の“仮想システム”として
動作する。Pacificaのパートナー企業は、Microsoft、VMware、
XenSourceらが名を連ねる。

27 :05/04/15
日立のDARMA?

28 :05/04/15
ちょっとだけ期待sage

29 :05/04/16
>>26
要するにPacificaの「拡張」でもあるし「原始的」な部分もある。
>>1の言ってる部分で共有メモリを用いる点では複数のカーネルを動かすのに適してる。
ただしCPUを完全に(Pacificaのようには)分割してないから「独自ビルドのカーネル」が必要。
その意味合いで「観点が違う」と言ったんだが。
>>1
例えば通常のOSではハードウェア制御のドライバがある(Windows NTではカーネルモードで動作する)訳だけど、
そのコンフリクトその他の制御はどうやってやるの?
# x86だったら単純にできそうな気もするが……

30 :05/04/16
>>1はだんまりなのか考え中らしいので ちょっと考えてみた
1. 2つのカーネルをA,Bとする。
2. A,Bは独立したプロセス・スケジューラ(PSと今命名)機能を持つ
3. このPSは、ある印のついた特権子プロセスを自分と同じ特権レベルで起動する
4.AはBを特権子プロセスとして持つ、特権子プロセスは永久にPSのキューから消えない、Bも同じ
5.A,B間のはメモリを「紳士協定w」で犯さない
6. AはBをbootする機能をもつ。Bも同じ
7. 謎の機能でAはBがパニくるとそれを知ることができ、そのときはAがBをrebootする
ぐらいすれば何とかA,Bの下に何も統括するものが無くても
A,B動かすこと「だけ」はできんでもないかな (続く)

31 :05/04/16
しかしこれでは問題が山ほどあるな
まずはA,Bそれぞれの子プロセス同士の排他制御。
マップやスケジュール用のキューを共有したりしたら
AがアボーンしたらBも道連れで、このあーきてくちゅあのメリットはゼロ
そもそもA,Bの共有メモリて上の「7.謎の機能」以外何か使い道はあるのかいな?
しかし沢山間違ってそうだw つっこみよろ>All and >>18

32 :05/04/16
ついでに(>>10)の
> ☆考えられる利点☆
> 1.もし、Windowsのカーネル(当然このOS用にビルトしたもの)を
> このOSで実行できれば、エミュレーターの数十倍ものスピードで
> Windows専用のアプリケーションが実行できます。
は、「当然このOS用にビルトしたもの」だったら
カーネルがマルチかどうかはカンケーないんじゃない?つまり
○MkLinuxは、BocksやQEMU上で動かしたLinuxより速いです
○Debian GNU/Linux と Debian GNU/NetBSDは同じぐらいの速度です
○MacOSXはFreeBSDに対して速度的に遜色ありません
と同じことを言ってるように折れには見えるが?

33 :05/04/16
いっぺん上げ

34 :05/04/17
23さん本当にありがとうございます。
上の違いは「Windows」互換のカーネルが独立して走る所です。
>>30
私の考えているものは全くそれです。
>>31
利用ですが、
青画面にあることを防ぐこと以外にも
Updateの利便性向上です。
WindowsではUpdateを行ったとき、
再起動を行う必要がある場合が多いですが、
これが不必要になります。
(再起動と言う言葉自体消えるかもしれません。)
また、重要システムの根本的グレードアップ
(WinMe → WinXpのような)
も、再起動が不必要になるかもしれません。
私はまだ、かなり未熟のようです...
PacificaやDARMAなどを全く知りませんでした...
教えていただきありがとうです。
ここでも書き込みは「要求」として
資料にまとめていっていますので、
ご意見どうかよろしく御願いいたします。

35 :05/04/17
ヽ(`Д´)ノ ウワァァァン やっぱ釣りじゃねえか
何でこんないい加減なモノ(>>30-32)にボロクソ突込みじゃなく「ありがとう」なんだよ(・∀・)カエル!!

36 :05/04/17
> WindowsではUpdateを行ったとき、
> 再起動を行う必要がある場合が多いですが、
> これが不必要になります。
正確にはパソコンを再起動する必要が無くて、
OSだけの再起動ですむということです。
もちろんOSの再起動時にはそのOSで
動いているサービスはすべて一旦停止します。

37 :05/04/17
のうがきいいからさっさとβ版つくりはじめろよ。
モナーでもわかるように基礎だけでも2、3年かかっとるんだから
つくってなんぼだよ

38 :05/04/17
Windowsカーネルをカスタマイズしないと使い物にならない時点で絵に描いた餅じゃね?

39 :05/04/17
>>36
結局再起動してるじゃん。
意味ねーw

40 :05/04/17
再起動するのは一部のシステムであり、
全てのサービスを停止する必要はありません。
また、AとBが同じ動作をサポートするようにします。
つまり、Aが再起動中にBがAの代用をし、
Aが正常に起動すれば、Bを再起動するようにするのです。
こうすれば、ユーザーやアプリケーションから見れば、
再起動していないように見えます。

41 :05/04/17
>>36は偽者です...
ヽ(`Д´)ノ ウワァァァン
>>40がホンモノ...僕です。

42 :05/04/17
気付けば、僕が考えているアーティキチャを
説明するスレッドになってしまっていました。
ここでは僕が考えているアーティキチャについて
意見と要求を書き込んでいただきたいのです。

43 :05/04/17
>>1
取り合えずトリップつけてくれ
それからメモリの紳士協定の具体的な実装はどうするつもり?
一応2個以上のカーネルを動かすのだろう
2つのカーネル間での調停用の通信機能を持たせるのか?
カーネルおよびPSの起動時は特殊なブートローダーでも使うの?
プロセスをカーネル間で移動させるってのは実現可能でもうlinuxとかで出来てるけどな
少なくとも革新的過ぎて着いていけない

44 :05/04/17
トリップって名前の最初に#を入れるやつですよね?
BIOSは一つのカーネルしかブートできないはずなので、
BIOSから「第一のカーネル」がブートされます。
この第一のカーネルによって
他のカーネルは起動されるわけですが、
このとき、紳士協定としてメモリは配分されるようにします。
しかし、この方法だと、
他のカーネルは「第一のカーネル」によって
管理されるわけではないので、配当を増やすことは出来ません...
まだ考案中です(゚∀゚)

45 :05/04/17
>>1
 調停を「カーネル」だけで行うのには無理がある。
なぜなら、
 ・メモリの無駄
 ・対障害性が不十分
の面がで不都合が生じるから。
 そうなると(機能を最小限に抑えた)「親カーネル」が必要だね。
 個人的にはカーネルAとカーネルBが(ある程度、障害が起きた時以外でも)
協調できると良いと思う。
 それではノシ

46 :05/04/17
45を書いてる間に44ができてたらしいので、追記。
>>1
 >>44で書かれたように、初めにメモリを(固定的に)割り当てると、それこそESXと変わらないわけで(^^;
 >>45で書いたような仕組みにして、動的に(おおまかでもいいから親カーネルが)メモリを割り当てた方が良い気がする。

47 :05/04/17
>>40
矛盾している。
> 再起動するのは一部のシステムであり、
> つまり、Aが再起動中にBがAの代用をし、
> Aが正常に起動すれば、Bを再起動するようにするのです。
再起動するのは一部のシステムじゃなかったのか。
ようするにOSを二つ同時に起動しておいて
本システムをアップデートする前に副システムに切り替え
本システムをアップデートして元に戻すってことだろ。
たんなる多重化じゃん。

48 :05/04/17
アップデートが必要なサービスがある。
アップデート前にそのサービスのメモリ内に次のような構造体のデータがある。
struct FOO {
char a;
char b;
}
これがアップデート後に次のような構造体に修正される。
struct FOO {
long a;
long b;
}
>>1
さて、どうやって再起動なしに処理を続ける?

49 :05/04/17
>>47
 システム=コンピュータ全体
 システムの一部=複数あるカーネルの内の一つ
と(俺は)解釈したんだが……(^^;
合ってる?>>1

50 :05/04/17
ようするにエミュレータで複数のOSを
動かしているのとなんの違いも無い。
マルチカーネルOSなどといっているが
エミュレータそのものである。

51 :05/04/17
>>48の問題は(他の問題がありながらも)解けたが、
>>1のために(ryしとくわ(^^;

52 :05/04/17
>>44
BIOSからブートローダーを読み出して2つのカーネルとPSが立ち上がるまで管理するんじゃないの
それ以降は2つのカーネル間で調停なり協定なりでメモリを配分させるんじゃない?
BIOSとブートローダー(一般的には)は違う物だよ

53 :05/04/17
>>51
OS(Windows)の対応だけじゃ無理だね。
この例ではメモリのアドレスをずらすだけで可能だけど、
もしかしたらまったく違うデータ構造になるかもしれない。
これに対応するにはOSの対応とは別にアプリ自体にデータ変更機能をつけるしかない。

54 :05/04/17
バックグラウンドで再起動して
ユーザーに再起動をしていないように見せかけるには、
Windows等のOSが再起動しても・・・の場合は、Windows等OSを修正すればいい。
アプリケーションが再起動しても・・・の場合は、アプリケーションを修正すればいい。
よって、マルチカーネルOSなどと言うものを作る必要は無い。
それともWindowsとはまったく別のOSを作るという話か?

55 :05/04/17
>>1は用語の定義をしろ。
システムが何でサービスが何で、
どれを再起動するのかとか全然わけわからん。

56 :05/04/17
>>47
 文をしっかり読んでなかった、スマソorz
>>52
 説明不足だった。調停とかを親カーネルなしですると
(複数カーネルの中で)同じようなコードが重複したり、(調停ルーチンの)変更が難しかったり、
調停ルーチンが間違っていたりバージョンが違ったりすると全体が落ちる可能性があったりするから
調停ルーチンを抽象化する「親カーネル」を持った方が良いのでは、と思ったわけ。

57 :05/04/17
>>53
 ライブラリとかの変更だと俺の解法だと無理なわけでorz

58 :05/04/17
>>18
ありがと、なんか「らしく」なって来たよー
>>1
勝手に仕切るようで悪いが 頻繁にWindowsの利便性と較べる話をしてるが、
そういうのはこのOSがLinux ver.1?ぐらいになって
「Wineを載せるか、いやReactOSから、、」ぐらいになってから考えてくれない?
アナタの考えるべきは、まずマルチカーネルを成立させることでしょ。
で、まるちかーねる、の長所としてまず確立すべきは耐障害性じゃね?>>All
そんで、まあ(>>30アーティキチャ?)で行くなら別に良いけど、このままじゃ成立しない
或いは複雑になりすぎて逆に耐障害性は落ちる等、色々指摘されてるし、
一番まっとう「普通の」解決方法は「親カーネル」、、、でもこれじゃ>>6に逆戻りっぽいし、、、
と、すると>>1さん、アナタの示すべきはこれら問題の「画期的かつシンプル」な
解決方法じゃない? 
ホントにコロンブス卵がなければ、例えば天才の閃きで「バッサリ割り切る」でも良いかも
C言語とかUNIXとかも何かそんなとこもあるし、、、
なんか偉そうにすみません>>1 & >>ALL

59 :05/04/17
>>18
個人的にはそれだとxenと同じで面白くないと思ったのですよ
基本的にはGRUBのようなものを起動完了まで親カーネルの役割をさせておいて
起動してから自分自身をアンロードするというものです
その後はカーネル間で調停を行っていく(この中でどちらかに調停用のプロセスを走らせて
親カーネルの役割をさせていく必要があるかもしれませんが)
それから構造体の変更については難しいですがなんとか変更できるのでそういうのをやったらどうでしょうか
(つーかシステムの基幹にかかわるようなサービスは両カーネルで走らせて置いてアップデートの時には片方を
アップデートしつつもう一方のサービスのプロセスをコピーさせてもらうとかまだ方法は幾つかあると思いますが
どちらにせよプロセス間通信などをいままで以上に複雑化しなきゃいけない…)

60 :05/04/17
>>59
ごもっともですね。(少し口調変更
xenという物を(界隈に居ながら)知らなかったのでorz
おかげで別のアイデアも思い付いて来ましたし…w

61 :05/04/17
>>59
だからバックグラウンドでアップデートするのは簡単なんだよ。
問題は古いプロセスを使っている状態から新しいプロセスに移行する方法。
これはデータ構造が違う可能性があるので、走らせたままで移行するのはアプリ自身が
対応しない限り不可能。以前のバージョンでは存在しなかったデータが作られる場合だってある。
だからOSの変更やマルチカーネルOSとかの対応だけじゃ無理。
プロセス間通信を強化しても無理。内部データの変更はアプリ自身でしか知ることが出来ない。
逆にアプリ自身が対応するのなら、OSの変更やマルチカーネルOSなどなくても可能。

62 :05/04/17
> で、まるちかーねる、の長所としてまず確立すべきは耐障害性じゃね?>>All
同一のハードウェア上で起動している以上
ハードウェアが壊れたときの耐障害性は期待できない。
また同一のOSが二つ起動していたとして、一つだけがソフトウェア的に
おかしくなることはありえない。
また再起動なしでアップデートとかもデータ構造の違いがあるために非現実的。
期待できるのは、独立した複数のOSを同時に起動できるという
今世間がハードウェアでやろうとしていることの遅いソフトウェア版ということだけ。
そのソフトウェア版もすでにVMWAREが実現している。

63 :05/04/17
何つーか否定的ですねぇ…
別にこれを売ろうとかしている訳じゃなくあくまで趣味しかもまだ企画段階であって
これからどんな風になるか解からんし
某ドアフォ(小規模MMO)見たいに他人に迷惑掛け捲る訳ではなさそうですし

64 :05/04/17
まぁ本音はこの楽しそうなおもちゃを取られたくない
見たいなものですかね
非常に知的興味心を満足させてくれるような企画なんで(仮想化技術のそれぞれのアプローチ自体がですよ)

65 :05/04/17
>>62
>一つだけがソフトウェア的に…
同じOSが同じ時間に同じ処理をやるのなら有り得るけど、そういう状況にはどうしてもならないから、
微妙な違いで一つだけがハングすることは十分有り得ます。
>>63
 期待してますw (サンプルでも実装してみようかな

66 :05/04/17
ちなみに私はニーモニックなんて出来ませんよ
そのため実装できませんw
つーかMONAをサンプルに借りればいいのかな?

67 :05/04/17
あ、結構monaではきついかもしれませんね
実際かなりの量のAPIの追加も必要になるし

68 :05/04/17
>>66
 サンプルにMonaは敷居が高い(^^;
 とりあえず、一からコード(2種類の「カーネル」+「補助カーネル」)を組んでみます。
ただ手元にPCがないから書くのは明日以降かな。

69 :05/04/17
>>18 さん (&52さん) 期待してます。 
そろそろ付いていけなくなりそうな雰囲気なので(^^;
>>51>>1のために(ryしとくわ(^^;))
みたいなこと言わずに色々公開してオベンキョネタを下さい

70 :05/04/18
完成予定は3015年ですm( __ __ )m

71 :05/04/18
なんとなく(眠ってた)トリップをつけてみました。
>>30さん
>>48の問題で思いついたのは、ある程度の前提条件が成り立つ上で実現できます。
 ・カーネルなどのシステムに近いモジュールであること
 ・メモリに完全に(モジュールが)ロードされていて、ディスクを弄ばないこと
 ・ユーザーモードが直接I/Oを叩かない事
 ・アップデートが単独で動作する部分に限るか、アップデートした後も他モジュールから見て変わらないこと
 ・動作は完全に下位互換性を持つこと
この条件のもとで、例えばカーネル(A1)を(A2)にスムーズに移行する手段を示してみます。
 1. カーネル(A1)が(A1)'を起動する。 (ここでマルチカーネルの本領発揮)
 2. (A1)がステートを停止できる状態になるまで待つ。
 3. (A1)'に(A1)のステートを移行する。そして(A1)'が実行を開始する。
 4. (A1)を(A2)に(メモリとディスクの両方を)変更する。
 5. (A2)が(A1)のステートを調べ、再起動が必要か判断する。
   #変更が大きい場合は再起動が必要になる場合・・・はあるが少ないだろう
 6. (A2)に(A1)'のユーザーモードのステートを移行する。(内容によっては一瞬フリーズしたように見えるだろう
 7. (A2)での実行を再開し、(A1)'は終了する。
この場合は、実質スムーズに移行できるはずです。
ご意見/ご指摘お願いします。 >>ALL&>>52>>30

72 :05/04/18
>>71
なんのためにカーネル(A1)から(A2)に移行するのよ?
A1とA2の状態がまったく同じなら簡単に移行できるが、同じなら移行する意味が無いし、
違うのならメモリの内容も違うわけで、単純にメモリを移動しても動かないだろ。
それにカーネル上の一つのアプリを再起動すればいいだけの話じゃないのか。

73 :05/04/18
だいたい、マルチカーネルOSにする理由がわからん。
これを実現するにはどうしてもアプリ側のサポートが必要不可欠。
OSを修正したからといってどうなるもんでもない。
たとえばアプリにデータ変更インターフェースを持たせる。
で、こうやって持たせれば、OSもマルチカーネルOS等というものも必要なく移行できる。
もちろんOSが移行するためにはOSにデータ変更インタフェースを持たせる
(これはOSのみ。OSがデータ変更インタフェースを持ったからといってその上で動く
 アプリは別にデータ変更インタフェースを持たせないと移行できない)
つまり、OS(アプリ除く)を移行できるようにするならOSに、
アプリを移行できるようにするならアプリに、データ変更インタフェースを持たせれば十分。
マルチカーネルOSというものの出番はない。
必要なものがあるとしたら、それは単に一つのマシンでOSを複数動かすというエミュレータだけだ。
それはすでに存在しているし、時代はハードウェアサポートによるエミュレータ方式に移行しようとしている。

74 :05/04/18
並列化は面白い思考実験ではあると思うよ
まずはやってみれ 色々馬鹿にしたような指摘の意味が判った後で何かしら社会に貢献し得る発見に至れるかもしれん

75 :05/04/18
マルチカーネルOS等というものを出さずに、
単にエミュレータを作るといえばなんの問題も無い。
その"エミュレータ"にOSを再起動せずに移動するなんて
エミュレータの仕事ではない実現不可能な機能をつけるのならそれは無理。

76 :05/04/18
×マルチカーネルOS → ○エミュレータ
OSのアップデートを再起動なしに行う ・・・ OSの仕事。(OS内部のデータはOSしか知らないから)
アプリのアップデートを再起動なしに行う ・・・ アプリの仕事。(アプリ内部のデータはアプリしか知らないから)
エミュレータ(並列化)とアップデートを再起動なしに行うというのは
まったく別の話。分離して考える必要がある。

77 :05/04/18
一応私もトリ付けときます
宇剤っていわれたら名無しに戻ります…
>>all(アプリ側の対応色々言ってる人)
(ユーザーランドの)アプリのアップデートではなく
あくまで今は(カーネルランド)のモジュールの再起動無しの更新な筈ですよ
(少なくとも初期のサンプルカーネルには二つのランドの切り分けは行わないでしょうが)

78 :05/04/18
アプリの再起動とは、
アプリがOSに再起動を要求することでしょうか?
その要求は破棄するしかないでしょう。
アプリには再起動したように返します。
アプリケーションの再起動(rebootではない)の廃止は
さすがに考えていません。

79 :05/04/18

マルチカーネルの利点は「安定性」にもあるのです。
Aが処理中のとき、同じ機能を持つA'がそれを代わりに一時的行えば
安定性とRTが実現できます。
既にこれは多重化IOとして開発され実現されている物であり、
IOに限らずに全てのサービスに発展させた物と考えてください。
マルチカーネルが大規模開発されれば、
ユーザーサイドのリビルトができるようになります。
(設定変更に再起動の必要なし!)
つまり、各々のサービスはカーネルとして
独自に独立して走ることが出来るようになるので、
「専用OS」が実現できるのでは?と考えています。
(Web用OSやDVD書き込み用OSなど...)
専用OSはリソースをその動作のみに配当するので、
高速かつ安定かつ安全かつコストパホォーマンス高い状態で起動できます
時にリアルタイムOSとして時にデスクトップOSとして走ることが出来ます。
もしくは、機能を絞れば、
PDAや携帯電話にPCと同じOSを走らせるという、
現在の技術者の夢が叶うかもしれません!

80 :05/04/18
>>63
>某ドアフォ(小規模MMO)見たいに他人に迷惑掛け捲る訳ではなさそうですし
銀英伝?

81 :05/04/18
>>79
> Aが処理中のとき、同じ機能を持つA'がそれを代わりに一時的行えば
> 安定性とRTが実現できます。
安定性とRTが実現できるという理由は?
ただのマルチスレッドでしょ。
> 独自に独立して走ることが出来るようになるので、
> 「専用OS」が実現できるのでは?と考えています。
> (Web用OSやDVD書き込み用OSなど...)
そんなもの作ってどうするの。
Web用OSとはWebアプリ、DVD書き込み用OSとはDVD書き込みアプリ
それを管理しているのがOS。
言葉遊びしているだけでしょ?
マルチカーネルがやろうとしている機能は
今OSがやっている機能に過ぎない。
一体何をしようとしているわけよ?
今何が出来なくて、何を解決するために、
どんな機能を作ろうとしているのかはっきり書きましょう。

82 :05/04/18
>>1はエミュレータで複数のOSを動かすと
言っているだけ。

83 :05/04/18
>>1はエミュレータを使って
リアルタイムOSと
Webアプリだけを入れたOSと
DVD書き込みアプリだけを入れたOSを
一つのマシンで動かすといっているだけ。

84 :05/04/18
おこがましくもトリップつけてみました
>>71
大枠では>>47と同じようなことを実施していると見てよいですか?
あと 仮カーネル(A1)'を起動して使用し、
> 4. (A1)を(A2)に(メモリとディスクの両方を)変更する。
とするのは
カーネル同士が「紳士協定」でほぼ固定的なアドレスにあり(A1)を(A2)に切り替えるためには
(A1)の保持している固定アドレスのメモリやディスク等の資源を解放する必要があるためと理解して
良いでしょうか?
(何かちがうような気が、、じゃ(A1)'の立場が、、、)
ここでの構造体>>48はカーネル(A1)(A2)の内部の構造体と考えて良いですか?

85 :05/04/18
>>18 さん
あと>>71の「ある程度の前提条件」は52さん(>>77)の
カーネルランドのモジュール構造には(例えばRTOSのOS-9みたいな)
きつめの制限を掛けてやれば、
結構カンタンに整えられそうですね

86 :05/04/18
即行でとり変更です
新鳥◆ArchEPGtMY
よろしくお願い致します

87 :05/04/18
>>75-76
> ×マルチカーネルOS → ○エミュレータ
てことも無いでしょう。 というかエミュレータ云々なんて、ずっと先の話じゃないでしょうか?
> エミュレータ(並列化)とアップデートを再起動なしに行うというのは
> まったく別の話。分離して考える必要がある。
分離して考えることにははある程度は賛成ですが、
これはマイクロカーネルの考えを拡張してやろうてな試みの一つですから
例えば カーネル再起動なしにデバイスドライバー(マイクロカーネルOSから
見れば一種のアプリ)等を差し替えたりできるOSと同様に、
ドライバー側を停止させずにカーネルをチェンジ出来る。 ような柔軟性を
持たせておくのは色々と面白いことが考えられそう(具体的には思いついていないけど)
に思えるのですが、、、

88 :05/04/18
よいしょっと

89 :05/04/18
>>79 (トリップついてないですが>>1さんですか?)
RTOSのOS-9はもちろんシングルカーネルですが、ユーザーサイドのリビルドが出来、
ディスクドライバの設定やドライバ丸ごと差し替えをしても再起動は必要ありません。
機能を絞った構成で組込みに多く使われ、ニッチにはGUIを持つデスクトップ機
もあるようです(専用機ですが)。 つまり>>79 で仰る機能を装備したOSは既に色々ありますし、
マルチカーネルじゃなくても出来ます。 
今のところマルチカーネルの実際的メリットは、よくわかんないw、、でも良いのでは?

90 :05/04/19
でなに? 新しいOSを作りたいの?

91 :05/04/19
ドライバーがカーネルの機能を使わなければ
ドライバーを停止させずにカーネルをチェンジすることは可能。
現実問題ドライバーはカーネルの機能に依存しているので
ドライバーを停止させずにカーネルをチェンジすることは不可能。

92 :05/04/19
>>84 (>>30さん)
 複雑に考えすぎてましたね(^^;
 現実問題あまり(A1)から(A1)'に移行することにはあまり意味はありません。
 あるとすれば・・・
  ・(A1)から(A1)'に移行するときに必要に応じて「移行に適した環境」を整えられる(ほとんど意味がない)
 ・・・ぐらいですかね。おそらくもっと単純に(A1がアップデートしたA2を起動し、移行)実装できますorz

93 :05/04/19
書き忘れorz
>>91
 同期を用いることによって可能です。
 その場合、すべてのドライバが移譲可能な状態になるまで
 カーネルがwaitする、ということになると思います。
#それができない場合は再起動が必要ですけど…
 もしカーネルの機能面での話を言っているのであれば、>>71の条件「下位互換性」でクリアしています。
>>84
 もう少しシンプルに実装できることがわかったので、>>47とは違う方式でいけそうですw

94 :05/04/19
マルチカーネルを実装する理由は、
再起動する必要性の消滅だけに限らないんですけどね(^-^)
この機能について皆さんが言及してくれると言うことは、
多くの人がこの機能を希っていると言うことでしょう。
開発意欲が湧きますよ。
一番大まかな方法は、
アップロードのシステム更新の一瞬を
以外にカーネルに処理が移らないようにすれば、
アプリケーションやミドルの打撃、データ構想の違いは
吸収できると考えますが...?

95 :05/04/19
MacromediaがAdobeに買収されたんですね!?
2005-2006年はOS業界激動のとして見受けました!
この激動の年に「マイクロカーネル」という
革新的思想の元、新技術が開発すれば、
Windowsを越す普及を得ることも出来るかもしれません!
---かなり興奮気味

96 :05/04/19
何度聞いても、「カーネル」の言葉遊びにしか聞こえない。
再起動の定義はなんだ?
BIOSまで戻らなくてもOSの再起動はあり得る。
複数のOS環境を同時に稼働出来るのに高速?
最低でもディスパッチ分のオーバーヘッドは掛かる。
各サービスを入れ替えるのに再起動が不要?
Mach上でマルチサーバー構成でOSを構築すれば既に実現可能。
本当にリアルタイムOSが何であるか判って書いてるか?
携帯とPCで同じOSを走らせる意味は?
同じアプリが動くメリットなら既にJavaがある。
世の中のOSがWindowsだけで無い意味を知って、
その意味をもっと考えて欲しい。

97 :05/04/19
>>94、95
ユーザーランドならカーネル止めるまでもなくソフトウェア側の機構一つで同にでもなる
のであんまり革新的な機構にならないと思いますが?
それからOS業界は激震というほどの物ではないでしょうね
ただ今年のうちにどれだけwindows離れが進むかには興味がありますが
それから一年のうちにまともなOSが出来ると思ったら大間違いですよ
特に複雑なAPIがいくつもあると0からの開発で2年以上は楽にかかりますから
(開発意欲なんて書いてるけどほんとにやった事あるのだろうか)

98 :05/04/19
・・・とりあえず、開発に徹することにします。
開発状況や結果概念は随時紹介することにします。
また、β版の公開はみなさんへの恩返しとして、
2chでなにより速報するつもりです。
御願いしたいことは、このスレッドをさないで下さい。
このスレッドの書き込みは資料としてまとめています。
参考にしていきますので、どうかご協力を。

99 :05/04/19
>>92 (>>18さん)
ありがとうございます。 
> ・(A1)から(A1)'に移行するときに必要に応じて「移行に適した環境」を整えられる 
なるほど、下のように理解すれば良いですか?
(用語を変えて、アップデート前のカーネルをA1,B1、アップデート後をA1,B2とします)
1. A,B間では少なくともプロセススケジューラなどは何らかの形でデータやり取りが必要
2. B2ではA1、B1で使用していなかった,或いは違う形式のデータやりとりが必要となるとする
3. すると、B1→B2アップデート時にはA1も一部の機能の「部分アップデート」が必要となる
4. そこで「A1部分アップデート」が済むまで(A1)'を起動し肩代わりさせる
ただ、仰るように逆に相互依存性が強くなりすぎる等、複雑すぎかも知れませんね(^^;

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【神】Vista最高!!【OS】 (379)
WindowsはXPとVistaで、どっちが優秀? (536)
無料で入手出来るOSは無いか? (284)
OS-9の行方は? (485)
【TOPPERS】ITRON総合スレ3【NORTi】【HOS】 (815)
    「OS」って何の略ですか?     (748)
--log9.info------------------
IDに植物の名前を出したら神 14 (988)
【誇大広告】 国華園 part9 【貧弱苗】 (150)
芝生総合22 (446)
【園芸】チラシの裏 3枚目【専用】 (840)
☆☆☆フィロデンドロン☆☆☆ (290)
クリスマスローズ【Helleborus】ヘレボルス9 (835)
【西洋】オダマキ【深山】 (272)
【ラズベリー】キイチゴスレ【ブラックベリー】 (801)
【害獣】猫を寄せ付けない方法51【対策】 (513)
変なモノに植物植えてる人 (326)
ガジュマル 気根5本目 (520)
【レンゲ】 緑肥・緑肥・緑肥 【クローバー】 (517)
【薄荷】ミントについて語りませんか?Part9 (485)
【Primula】 プリムラが好き part2【サクラソウ属】 (106)
ミディトマト (554)
§§ パキラの樹 §§魔の手7本目 (115)
--log55.com------------------
【あたしは】白石桔梗 Part.1【這い上がるカラ】
【FunnyWalker】 松倉サオリ 【松倉佐織】
☆☆ 西部洋子 ☆☆
:: 日 暮 愛 葉 ::
☆ 西村郁代(devbacc)
【一身上の都合?】牧伊織、いったいなぜ?
有花 ★ARIKA★ Part1
【奄美の】RIKKI【歌姫】