【C】Poneytail(仮称)OSスレッド01【未踏】at OS
【C】Poneytail(仮称)OSスレッド01【未踏】 - 暇つぶし2ch2:Be名無しさん
05/01/11 21:28:23


3:Be名無しさん
05/01/11 22:14:27
ム板でいつもやらかす厨がいるんだけど#はスレタイに入らない
C♯って入れないとダメだよ
C#じゃなくてC♯ね

4:Be名無しさん
05/01/11 22:18:16
         ヘ  o ,    ─ /   __,   /  _,   /_/_/       __,   /
          /  \ ´   ─ /        /   ─'  /    _       / 
         _/    \   __ /   ___/   ___/     /   ___/
                                     ̄ ̄ ̄
                    _ , ― 、
                  ,-'  `      ̄ヽ_
                 ,'            ヽ
                (   `ー'ー'ヽ`ー'ー'ヽ  )        
               (  ノ ''''''   '''''':::::::ヽ  )
               ( . )(●),   、(●)、.:( ) +
               ( )   ,,ノ(、_, )ヽ、,, .::::( )    <4様が華麗に4get!
               . ヽ )   `-=ニ=- ' .:::::::|ノ  +
                  \  `ニニ´  .:::::/      +
               ,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
               :   |  '; \_____ ノ.| ヽ i

5:957
05/01/11 22:19:02
開発者です。

紹介文にたいする簡単なコメント。

・C#でアプリは作れませんが、
・C#で作ったアプリを動かせます。
 ・WinかLinuxでコンパイルしてください。
 ・別にC++でもVB.NETでもJ#でも可。
・ランタイムは独自開発です。
・クラスライブラリはMonoのものを使っています。
・未踏に採択されています。がんばります。

次のコメントで特徴なんか書いてみます。

6:957
05/01/11 22:26:41
Ponytail の他の OS と激しく違うところです。

・IL (.NET中間言語) を解釈実行します。
・アプリを含むすべてのプログラムが特権レベルで動作します。
・すべてのプログラムが同じアドレス空間を共有します。

いまはこんなところです。やみくもに予定とか書いても仕方ない気がしますし。

>>1さん乙です。
またーり楽しんで頂ければ幸いです。>ALL

7:Be名無しさん
05/01/11 22:37:02
ライセンスとかどうなるんでしょう?(予定でもいいので)
商用を視野に入れているとかですか?

8:957
05/01/11 23:10:40
バイナリは無償で配布自由にしようかと。
ソースはクローズですが、恩返しの意味も込めて
これからOS開発する人に役に立ちそうな部分は公開したいと思ってます。
商用は、、、なんというか、商用になれるレベルにしたいってとこまでしか思い描けませんね~

9:Be名無しさん
05/01/11 23:17:50
バイナリは無償配布との事ですが、Reflectorとか使っていいのでしょうか?
つい最近もMVPがHS+をILDASMして問題化しましたが、、、

10:957
05/01/11 23:33:14
Reflector使えますね。いま自分のライブラリをReflectorで精査してますし。
使ってくださいとは言えませんが、事実使えてしまうので止めても無駄かなと思います。
ただ、それでリバースエンジニアリングしたものを無断で再公開とかはやめてほしいなあ。

ところでMVPとHS+ってなんでしょう? ILDASMは IL DisASseMbler ですよね。

11:Be名無しさん
05/01/11 23:40:54
>>10
MVPはMS認定のmost valuable people
HS+はOffice2003のHomeStyle+
スレリンク(tech板:68番)

12:Be名無しさん
05/01/11 23:48:05
早速MSILスレで晒されてる
スレリンク(tech板)l50

13:Be名無しさん
05/01/12 00:18:38
>>6
なるほど。
JavaOSとは...
・classファイルを実行可能
・すべてのプログラムが特権レベルで動く
・すべてのプログラムが同じアドレス空間を共有する
JITで出来るバイナリが十分良質であれば、特権レベル切り替え・ページングに伴うオーバーヘッドがなくなる分、
理論的には早くなり、メモリ保護はネイティブインターフェイスを禁止することで行うと言った所だったと思います。

.NETかJavaかの違いがあるとはいえ、JavaOSと違いが見えてきません。
この既知の技術に対しての相違点等があれば、差し支えない限りでお聞きしたいです。

14:957
05/01/12 00:23:42
JavaOSとPonytailの違いは、すべてJavaと.NETの違いということになると思います。
つまりコンセプトについてはJavaOSとあまり違いません。

15:Be名無しさん
05/01/12 00:27:45
結局JavaOSは一般に入手可能なものがフリーで公開されることはありませんでしたからね。
そういう意味で一般に公開するものとしての存在意義は充分あると思います。
頑張ってください。

16:Be名無しさん
05/01/12 00:32:33
>>15
でもそれだけのために未踏が通るとも思えない。
コンセプト実証品ではあっても実務への応用が望めそうもないから。
OSそのものというよりも、組み込みレベルでも.NETを使えるような技術を作って、
後々はITRONとかの上にも載るようなKVMみたいなものに応用するとか
そういうビジョンまで提示したのだろうか。

17:957
05/01/12 00:44:47
あ、>>11さんありがとうございます。
そんなことがあったんですね。
逆解析にたいする脆弱性はJavaでも似たようなもんですし、これからの課題なんでしょうか。
ちなみにMSはインターネットを利用することで解決しようとしているみたいですね。

>>15
ありがとうございます。

>>16
いえ、究極的にはそれだけです。
未踏は、成果物でIPAが儲けるわけではないので、応用面だけで評価するのはちょっとずれてる気がします。

18:Be名無しさん
05/01/12 00:46:15
>>17
OSASKのときには応用面が問題になったと記憶しています。
それで結局ユースで妥協したけど後が続かなかった筈。

19:Be名無しさん
05/01/12 00:53:33
>>15
JavaOSモドキ的なJNode
URLリンク(jnode.sourceforge.net)

>>16
そこがやはり気になるところですね。

>>17
なんらかのあっと驚く改善点・着眼点などを隠し持たれていることを期待しています。

20:Be名無しさん
05/01/12 00:57:14
>>17
VS.NET付属のDotFuscatorはそれほど強力ではありませんが、
有償のバージョンだとかなり効果があるみたいです。

しかしMS製品のアセンブリはfuscatorをかけたりしてません。
逆解析が簡単なのは諸刃の剣でパクった側も晒されることを意味するので、
見ることは出来てもパクるにパクれないという状態になって、
実際はあまり大きな問題にならないと割り切ってるように見えます。

内々に使われて公開されないようなツールに使いまわされると手が出ませんが、
そんなのは企業内違法コピーと同じで撲滅はほとんど無理でしょうし。

21:957
05/01/12 01:06:58
作り始めたのマジで去年のCマガからなんで、詳しくなくてごめんなさい。そんなことがあったんですね。

OSASKに限らず他の独自OS全般に言えることだと思うのですが、
普及のためには結局"開発者"を奪い合う必要がありますよね。
シェアも奪い合いですが、それよりも開発者を排他するのが大きいと思います。

この問題があるかぎり、独自OSはけっきょくパイの奪い合いであり普及はしないと思うのです。
そして僕がPonytailにあり既存のOSにはない、機能以外での有利な点として、この開発者の問題があります。

.NET (IL) にすれば、開発に参加して頂ける方は Ponytail のためだけの時間を割く必要はありません。
また、もし他のチームが Pure IL 型OSを作り、それが Ponytail を超えたときでも、作ったものは無駄にならないはずです。

なので、
・Ponytail が成功して普及すれば御の字 (がんばるけど、でも客観的には無謀ですよね)
・Ponytail が失敗してもノウハウは生きる
・どちらにしろアプリ資産はWinその他で動く
・.NETが滅亡するとちょっと困るけど、それでも中間言語を直接ホストするのは珍しいから役には立つだろう
ということです。

22:957
05/01/12 01:14:41
>>19
あ、やっぱりあったんだ。散々調べたのですけど、見つけられませんでした。
まあなんていうか、Javaのもあっていいと思います。
それどころか.NETのOSもPonytail以外にもあっていいと思います。

いろいろな新しい方式のOSがあって、そのうち運良く上手くいったものを使ってエンドユーザが幸せになれればそれが一番ですよね。
そうなったときは大成功したOSが脚光を浴びますけど、草葉の陰で消えていったものにも価値があることには変わりないと思います。

23:19
05/01/12 01:31:09
>>21-22
実際に採択されるという事はご自身は気づいていなくても、
なんらか魅力的な部分があったと思いますし、これからです。
どのような物になるか開発成果を期待しています。

24:Be名無しさん
05/01/12 09:05:12
>>21
>.NET (IL) にすれば、開発に参加して頂ける方は Ponytail のためだけの時間を割く必要はありません。
これは本当に重要。

どこの馬の骨とも知れないOSでしか動かないプログラムを作ったって村の英雄が関の山。
はっきり言って労力が報われることはない自己満足の世界。
ライブラリを作るなら最低限Windows、可能ならUNIXでも動くように作って、
独自OSとは無関係に使用してもメリットがあるものでないと意味がない。
更に独自ライブラリ自体に使わせるほどの魅力を持たせるのは難しいから
普及しているもののサブセットを実装するのが現実的。

JavaはSunが権利を握ってサードパーティーが独自に動きにくい現状では
.NETがもっともそれに近い位置にある。
MSがJavaの当て付けにECMAに提出してMonoが頑張ったのが大きい。

25:Be名無しさん
05/01/12 09:51:30
>>24 村田英雄? 逝ってしまいましたが…

26:Be名無しさん
05/01/12 10:07:31
マジレス。
他のOS資産の流用なんてみんな考えること。
OSASKはエミュレータOSを売りにして他のOS資産の流用を宣伝文句にしていたが
現状は「エミュレータOS」とは程遠いと思われ。
他の和製OSでも互換ライブラリとか箱庭環境とか試みはあったけど全て頓挫。
初期の段階からOS自体に実装していかないとダメだろうね。
その意味ではReactOSが最右翼か。
.NETに限定した互換だと抽象度が高いしMonoの資産があるので
ReactOSよりも手に届く位置にあるとは思う。

あと>>25はいまいちです。50点

27:Be名無しさん
05/01/12 10:32:21
OSを作ろうpart10より経緯を抜粋

951 名前: Be名無しさん 投稿日: 04/08/28 16:26
このスレの荒れようを見て新人が現れる事は期待できまい(藁

957 名前: Be名無しさん 投稿日: 04/08/29 00:44
>>951
作ってまつよ。
32bit保護モード、PE形式ロード、キーボード入力、800x600x24(32)フレームバッファの取得できました。
ついさっきマルチスレッドにできてちょっと嬉しかったです。
何書き込めばいいからよく分かんないし、まだ一人でコツコツやってたいのでひきこもりしてるんですが、なんか書く?
Monaコードには非常にお世話になってるから何か恩返しできればしたい。

958 名前: Be名無しさん 投稿日: 04/08/29 00:50
>>957
次からは君が主役だ!
とりあえず次スレ建てて乗っ取っちゃっていいよ。
出来るならね。(w

959 名前: Be名無しさん 投稿日: 04/08/29 00:56
>>957
Monaのどんなとこがどんな風に役立ったかを書いてるだけでも充分に恩返しになると思う

28:Be名無しさん
05/01/12 10:37:06
962 名前: Be名無しさん 投稿日: 04/08/29 03:51
>>957
タスクスイッチやタスクスケジューラ部分はMonaと同じ?少しアレンジしてみたとか?
もう少し語って。

963 名前: Be名無しさん 投稿日: 04/08/29 05:04
>>962
多分全然違います。そこらへんは全く参考にしてないので。
タスクはいまのところ全く扱っていません。全部スレッド。
メモリ空間も物理メモリまんまです。
とりあえずはメモリ関係よりキーボードとかFDCのが問題・・・。
キーボードはCマガと同じようにしてるんですが、実機で動かすとスキャンコードがKBバッファに残ったままになっちゃう。うーん。

964 名前: Be名無しさん [sage] 投稿日: 04/08/29 08:42
>>963
yukkyたんなの?

965 名前: 954 [sage] 投稿日: 04/08/29 09:49
>>963
ということは、殆どオリジナルっぽいってことですよね
というか次スレの中心人物にならない?
そりゃ煽られたり色々面倒な事もあると思いますけど・・・

29:Be名無しさん
05/01/12 10:38:12
971 名前: Be名無しさん [sage] 投稿日: 04/08/29 15:49
>>964
yukkyさんではないです。

>>965
ちょっと事情があって、一番強調したい部分についてはしばらく公開できなさそうなので
それまで(あと3ヶ月ちょいかな)まったりやっていいんならてくてく書き込みしようかな。

別にスレの中心になるつもりはないかな~。
OSって起動だけなら割と簡単ぽいので、いろんな人にチャレンジして欲しいし、
そういうときにこのスレッドはなるべく自由に書き込めた方がいいかなと思うから。

976 名前: Be名無しさん [sage] 投稿日: 04/08/29 17:01
>>971
やりやすいようにすればいいよ
がんばってねー

977 名前: Be名無しさん [sage] 投稿日: 04/08/29 19:02
>>976 ありがとー

30:Be名無しさん
05/01/12 11:30:16
>ちょっと事情があって、一番強調したい部分についてはしばらく公開できなさそうなので
>それまで(あと3ヶ月ちょいかな)まったりやっていいんならてくてく書き込みしようかな。
なるほど、こういうこと(未踏、CLIなど)だったのですね。

作ろうスレでMonaの立ち回りに関するレスがありましたが
匿名を通すために未踏に申請なんかできませんし、
MonaにもMona.NETとか似たような構想はあったみたいですが
遊びで本気には見えないし公認プロジェクトですらないですから、
そういう差が超えられない壁になっているように見受けられます。

31:Be名無しさん
05/01/12 11:51:59
>>30
957たんはWin32環境の作業に必要な知識は一通りマスターしているように見える。
技術的に可能な範囲を見極めてスマートに作業を進める実力はあるようだから、
人に聞きながら試行錯誤暗中模索のひげぽん氏とは同列には比べられないだろう。
デバイス制御とかに苦労してるみたいだけど畑違いというだけのことだし。

32:Be名無しさん
05/01/12 11:58:13
>>17
未踏後の位置付けが微妙なのは確かだと思います。
商用で活路が見出せるのであれば他人がとやかく言うことではありませんが、
そうでない場合は持ち腐れになってしまうのではないかと危惧します。
かと言って営利無しでクローズなまま他人を巻き込んで発展していくのは厳しいでしょう。
そうなると記憶の片隅にでも留めて貰うためにはオープンソース化は避けられなくなりそうです。

いずれにしても今は未踏の範囲で成果を出すことに集中するのが第一で、
その後に考えれば良い事ではありますけど。

33:Be名無しさん
05/01/12 12:06:30
>>31
泥沼を必至でかいくぐって来た卑下を生暖かくヲチしてたから
そういう要領の良さが目に付くんだろ

34:Be名無しさん
05/01/12 12:20:35
卑下の場合は自爆っぽいからなぁ
自分からわざわざ面倒な方向に突っ込んで行ったりとか

35:957
05/01/12 12:39:44
>>23
ありがとうございます。

>>24
理想を言えば、ReactOSみたいにWinのアプリを動かすとすごいんですけどね~。
MSの.NET考えた人と、Monoの人たちには本当に感謝しています。

36:Be名無しさん
05/01/12 12:41:37
>>35
ソース隠しても何かに違反しないの?


37:957
05/01/12 12:49:38
>>30
そうです。
未踏に出したあとで類似のが発表されると、主観的にはいいんですけど、ちょっと立場が無いかなと思いました。
でも未踏はあくまでおまけです。未踏に採択されてもされなくてもPonytailは作っていたと思います。

Mona.NETの作者の方は結構すごいと感じました。
てっきりildasmとか掛けるのかと思っていたら、アセンブリ解析してたんですね。
今後C#で記述されたローダが必要になるので、PEAnalyzerLibの利用を検討してたりしました。

>>31
デバイスはOSはじめるまでノータッチでしたから…。
「Win使えばドライバあるじゃん」という典型的なWin派の思考w
Linuxも使えることは使えますが、メインはWinですね。

38:Be名無しさん
05/01/12 12:50:38
>>36
MonaはMIT/Xなので流用分は隠しもオッケー
MonoもクラスライブラリもMIT/Xなので流用分は隠してもオッケー

MonoのコンパイラとVMはGPLだけど
セルフコンパイルしないからコンパイラは関係ないし
ランタイムは独自実装らしいからVMも関係ない

MonaはGPLだったのがパクリ上等だろって横槍でMIT/Xに変更されたし
MonoのクラスライブラリもLGPLだったのがインテルの横槍でMIT/Xになった

39:957
05/01/12 12:56:51
>>32
一番危険なのは就職して時間がなくなってしまったときですね。
そのときはオープンにしようか……まあ悩んでます。

どちらにしろ、名声とかお金のためにやっているわけではないので、
今はまだ自分だけのOSにしたいという気持ちがあります。

>>36
MonoはコンパイラがGPLでランタイムはLGPLなんですが、
クラスライブラリはMIT X11っぽいので隠しても平気…なはず。

どっちにしろクラスライブラリには一切手を加えてないので隠すモノもないです。
Monoをダウンロードしてmscorlib.dllをビルドすれば、それをPonytailで使えます。

総じて、オープンソースを利用させていただいて、もし改良するようなことがあれば
その部分はきちんとコードなりノウハウを公開することで恩返しをしたいと考えています。

40:Be名無しさん
05/01/12 13:03:33
>>38
パクりたければ勝手にパクれば?ってときにMIT/Xに変更されることが多いなあ。
そういえばMesaもLGPLからMIT/Xに変更されたっけ。
これは確かXFree86-4へのマージのためだったからパクりとは関係ないけど。
逆にWineは独自ライセンスからMIT/Xにしてパクり上等みたいに構えてたら、
企業が勝手に細かい修正をしたのを使ってフィードバックしないのに切れてLGPLになった。

41:Be名無しさん
05/01/12 13:11:56
で。
Poneytail使うと他の.NET環境と比較してどんなメリットがある予定なの?
そこが採択のポイントかと。

42:Be名無しさん
05/01/12 13:15:20
>>39
>一番危険なのは就職して時間がなくなってしまったときですね。
これはひげぽん氏を見ればわかるように最大の問題ですね。

>そのときはオープンにしようか……まあ悩んでます。
自分の作ったものが飯の種になれば一番良いのですけどね。
うまくベンチャー設立に結び付いたりとか。

>どちらにしろ、名声とかお金のためにやっているわけではないので、
素晴らしいです。

でも稼がないと生きていけないのが現実の厳しさです。
就職するとどうしても仕事が中心になってしまいますし、
自分のやりたいことでベンチャーを成功させるのは並大抵ではないですから。

>今はまだ自分だけのOSにしたいという気持ちがあります。
そうですね。
・船頭多くして船山に上る
なんてことになったら本末転倒ですから。

43:Be名無しさん
05/01/12 13:25:18
>>42
>・船頭多くして船山に上る
Monaがまさにそれっぽい
色んな人が色んなものを持ち寄ってくる
取り込んだものも卑下が消化して取り込むわけじゃないから
後で混乱の元になったりする

かと言って卑下一人でも迷走してしまうから
寄せ集めが悪いかというとそうでもないのが困ったちゃん

もっとも実力とか性格とかに起因してるから一般化できないんだけども

44:Be名無しさん
05/01/12 13:28:19
mcs動かない。当然か。

45:957
05/01/12 13:34:01
Ponytailにあるもっとも大きなメリットは、ほぼ.NET言語とC言語との違いです。
それらの言語間にある数々の隔たりは説明するまでもないと思います。

他の.NET環境、この場合はWinを想定します、との違いは、
・プロセス境界の有無
・プロセス特権レベル
・メモリ管理機構
・セキュリティ
が大きく違います。

46:Be名無しさん
05/01/12 13:34:59
なんか大物動く?
ところで957氏,小手半にしたらどうだ?

47:957
05/01/12 13:37:09
>>45>>41さんへのレスです。続き。

プロセス境界はありませんので、たとえばnew FileStream()を他のプロセスにそのまま渡せます。
すべてのプロセスがRing 0なので、コンテキスト切り替えコストがとても減ります。
メモリはすべてGCです。これはなかなかシビアなので一概に利点ではないかもしれません。
セキュリティは例外とセキュリティ機構に分けられます。
たとえばバッファオーバーフローのたぐいはなくなりますよね。

48:Be名無しさん
05/01/12 13:38:32
URLリンク(www.japanesegirlfriend.com)
ポニィテェル


49:957
05/01/12 13:39:59
>>43
卑下の話はやめれや

50:Be名無しさん
05/01/12 13:40:33
>>49
口調変化キタ━━━(゚∀゚)━━━ !!!!!


51:957
05/01/12 13:42:40
>>44,46
IO周りを全然詰めていないのでたぶんほぼ動きません。
まだ "application" を動かせる段階ではないです。
公開のためにとりあえず標準出力だけ作ったという感じなので。

ただ、Managed C++ を使うとインラインアセンブラを書けますので、
頑張れば独自OSを起動できたりしますがw
#この特徴を使ってドライバ書く予定です。


52:Be名無しさん
05/01/12 13:55:43
>>51
see >>50

53:957 ◆Id1gMYGA52
05/01/12 14:18:32
>>51
トリップくらいは付けたら?
>>49みたいに他人になりすまされて滅茶苦茶書かれるよ?

ひょっとしてトリップのことを知らない?
名前の後に
#適当な文字列(8文字まで)
をつけると一方向ハッシュされて表示される。
「適当な文字列」を見破られない限り他人になりすまされなくなる。

例: 957#ponytail
このレスの名前欄にそう入れたから見てみてね
もちろんこんなのだとすぐバレるからダメだけど

ちなみにハッシュの算出方法はこんな感じ
$key = "ponytail";
$salt = substr($key . "H.", 1, 2);
$salt =~ s/[^\.-z]/\./go;
$salt =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/;
print substr(crypt($key, $salt), -10);

54:957 ◆KhjEefLZMk
05/01/12 14:32:23
PCが突然起動しなくなってびっくり。

>>50>>52>>53
>>49さんくらいはブラックジョークとして笑えましたが、
おっしゃるように付けておくことにしますね。
あとでサイトにも掲載しておきます。

55:Be名無しさん
05/01/12 14:36:05
>>54
>>48は?


56:957 ◆KhjEefLZMk
05/01/12 15:19:49
>>48
どんなコメントを求められているのでしょう?w
ま、荒らしにならない程度なら許容するのが2chでしょうね~。

57:Be名無しさん
05/01/12 15:31:32
monaってどうなったの?

58:Be名無しさん
05/01/12 15:43:49
>>57
ここスレ違いだから、続きはこっちでやれや

OSを作ろうpart11 Mona専用
スレリンク(os板)l50

59:Be名無しさん
05/01/12 20:24:22
どうでもいいけどPoneytailじゃなくてPonytailなんだね


60:Be名無しさん
05/01/12 20:27:38
もしかして,最初はCLIOSにするつもりだった?
stringsして発見

61:Be名無しさん
05/01/12 20:31:19
>>59
スレタイのponeyはスペルミス

62:Be名無しさん
05/01/12 20:32:41
>>60
(CLIÉ + Aperios) / 2 みたいな響きでソニーチックだね

63:957
05/01/12 20:53:20
>>60
ぉ、するどいですね~。
開発するときのコードは今でも clios です。cli + os ですね。
ただ、あまりにそのまんまのわりには、覚えてもらいやすいとかそういったメリットがないなあと。
Ponytailは今度はあまりに脈絡なさ過ぎるだろうと思うので微妙なんですよね~。
名前って難しい。。。

>>62
そそ。他にはクリオネにも似てますよね。

64:Be名無しさん
05/01/12 21:01:15
>>63
CLIOSいいと思うけど

65:Be名無しさん
05/01/12 21:27:49
MonoってManaged C++サポートしてたっけ?
MonoとMSの.netで動く大物アプリってある?


66:Be名無しさん
05/01/12 21:48:48
>>51
>ただ、Managed C++ を使うとインラインアセンブラを書けますので、
>頑張れば独自OSを起動できたりしますがw
↑と
>>65
>MonoってManaged C++サポートしてたっけ?
↑の絡みが気になる。

67:Be名無しさん
05/01/12 21:50:26
>>66
Macとかでデバドラとかかけるのかと言う話。Monaスレ嫁

68:Be名無しさん
05/01/12 21:58:08
>>67
Monaスレ読んだけど誰がMacでデバドラ書こうとしてるんだ?
脈絡がさっぱり分からないぞ。
Managed C++でデバドラを書こうとしているのは957でMonaともMacとも関係ない。

Monaスレの話は
1. 卑下がMacMiniに興味を持ったという話(買うと決まったわけではない)
2. G3に興味を持った無関係の第三者の話
3. secondbootをC#で書いたらMacでコンパイルできるのかという話
がごっちゃになってるけどドライバの話もManaged C++の話も出てはいない。

もちろんMonoでManaged C++をコンパイルすることは無理。
WindowsでコンパイルしたManaged C++のバイナリがMonoで動くかなんて試したことないけど無理でしょ。

69:Be名無しさん
05/01/12 22:04:17
>>65
>MonoってManaged C++サポートしてたっけ?
してない。

>MonoとMSの.netで動く大物アプリってある?
Windows FormsのGUIアプリだとMono側の対応が不完全なので
大物小物に限らずまともに動かない。
でもWindows Formsを使わなければ結構実用的に動く。
現状のMonoはCUIアプリとWebアプリのためのもの。
GUIはGTK#推奨だがWindowsで動かそうとすると厄介なので論外。

70:Be名無しさん
05/01/12 22:06:35
MonoがManaged C++をサポートしてないとなると
やっぱり>>51の↓の部分が気になる
>ただ、Managed C++ を使うとインラインアセンブラを書けますので、
>頑張れば独自OSを起動できたりしますがw

71:Be名無しさん
05/01/12 22:43:28
リングゼロで動いてメモリを共有できるからって いうじゃなぁい

それって カーネルモードで動いてプロセス空間分離できてないってことですから!!

それってただのIPLじゃんぎりっ!!

72:Be名無しさん
05/01/12 22:45:34
なんだまんまとC#にだまされたよ。。。

よくこれで未踏通ったな。
未踏の連中はあほばっかりだな。

73:Be名無しさん
05/01/12 22:48:04
また税金がどぶに捨てられていくな・・・。
ひどい話だ。



74:Be名無しさん
05/01/12 23:01:01
>>71
資源管理できればOS名乗ってもいいと思うがのう。
その理屈では携帯なんかもIPLだけで動いてることになってしまふ。


75:957 ◆KhjEefLZMk
05/01/12 23:23:11
>>70

まあサンプルですけど。

__gc class MyOS {
static void f() {
for(;;) __asm { hlt }
}
public:
static void Main() {
f();
}}

これが合法なので。頑張ればなんでもできます。

76:957 ◆KhjEefLZMk
05/01/12 23:33:18
>>71
IPLOSって名称もいいなあとか思いました(笑

アドレス空間分離は、アドレス空間分離機能があったからプロセス保護に使ったのではありません。
プロセスを保護するために、アドレス空間分離という手法があります。
特権レベルにしても同じことです。
機能を使うために目的を作り出すのはあまり賢くないと思います。

>>72>>73
うーん、この開発は僕にとってはとても難しいと考えたので、未踏性はそれなりにあると思っています。
でも他の人にしてみたらもしかしたら簡単で、未踏性はないのかもしれません。

ただ、JavaOSも同じ原理なんです。アドレス空間とか。
Sunの技術者陣が数年をかけたプロジェクトを、一朝一夕でできるというのは事実誤認だと思います。

77:957 ◆KhjEefLZMk
05/01/12 23:44:35
保護に関してはせっかくなのでもう少し説明します。

アドレス空間の分離はページングとかにも使ってますが、保護という観点から言えば
「他のプロセスのメモリの参照を禁止する」という機能です。

さて、C#ではポインタがないので、原理的に自由なアドレス位置の参照が出来ません。
ですから他のプロセスのアドレスを参照しようにも、そういうプログラムを書くことすら出来ない(※)のです。
なので、C#で保護を理由にアドレス空間の分離をする必要はないということになります。

特権モードも、所詮はI/Oと命令の制限ですので、同じことが言えます。

以上より、PonytailではWinやLinuxと違い、保護機構を無効にした状態でも同じ品質を出せる可能性があり、
その場合には(オプティマイザとかの性能で負けまくりですが理論的には)Winとかより高い性能が出せます。

これって開発する価値はある……と思わないかなあ?
ま、僕は思ったので作り始めてみたってわけです。

78:957 ◆KhjEefLZMk
05/01/12 23:49:09
追記

※にしたのは、アセンブラで書けるって言うのと矛盾するからです。
OSとしてアプリにアセンブラを許すとセキュリティホールになってしまうからです。
これについては、完成段階になるときに「ドライバや許されたプログラム以外機械語の実行を禁止する」というポリシーになります。

これはWinにおける.NETのセキュリティポリシーとも似ていますので、十分妥当だと考えています。

79:Be名無しさん
05/01/12 23:54:41
必死だな。よっぽど痛いところをつかれたんだろうけど。
もうおそいよ。。

未踏の連中も気づくよ

80:Be名無しさん
05/01/12 23:58:17
>>45, 47
レスありがと。
つまりは、実行が速いということでよいのか?
Winと比較すると、ネイティブアプリが一切実行できないかわりに、
CLIの実行に限ればより高速だ、ということでいいんだよね?
プロセス境界とか特権レベルとかメモリ管理とかは、
高速化のための手段と理解すればいいわけだ。
で、見込みとしては、どれくらい速くなりそうなの?10%くらい?

それと、動機にも興味がある。
高速に動かしたいCLIアプリが手元にあったのかな?

81:Be名無しさん
05/01/13 00:03:07
80=957
顔が真っ赤になるほどのばればれの自作自演ヤメレ

82:957 ◆KhjEefLZMk
05/01/13 00:15:33
>>80
実行は速いはずです。実際にそういうOSがないので「はず」としか言えないのです。
もしかしたら局所性とかの問題で本格的なページングと併用した方が速いかもしれません。
Ponytailの未踏での目的の中には、そうした"はず"を確かめるための実証も含んでいます。

ネイティブは基本的には排除したいのですが、まあ、現実的には使えると速いので使えるようにはしておきます。
このとき、
・ドライバは常にネイティブ可
・アドミンはアプリでもネイティブ可
・ユーザは権限があれば可
・ネット経由プログラムは不可
とかになると思います。(これは未来予想図として捉えてください。運用問題は当面の目標ではありません。)

つづく

83:Be名無しさん
05/01/13 00:27:21
OSASKは遅いといわれたセグメントをわんさと使い、
さらにリング切り替えにsysenterすら使ってないわけだが、
それでもあんなに軽い。
プロセス境界とか特権レベルってオーバヘッドほとんど無いような。
だから1%でも改善すれば、むしろ驚きかも。
未踏の成果発表の際には是非ベンチを頼むよ。
しかし、わずか1%のために新規にOS作る意味があるかというと、それは疑問。

OSASKにCLIエミュが載ったら、そっちのほうが速かったりしてな。
百年後かもしれんが。w

84:957 ◆KhjEefLZMk
05/01/13 00:27:35
高速化の見込みは・・・ちょっとまだ分かりません。

さっきは実行は速いといいましたが、これは本当に対等の条件での話で、
実際には Ponytail 対 .NET Frmwk では、JITの性能がぜんぜん違います。

近年の中間言語モノの高速化はこれの進化が大きいので、
たとえ動作原理としては有利でもそういった理由により実際のアプリの動作は遅いと考えられます。

じゃあこれからずっと全然ダメかというとそうではなくて、
将来的にはJITをアドオンできる(ここに再利用性の高さが活きます)ようにしたりすれば、
オープンソースでの開発と同じような効果を得られるかもしれないとぼんやり思っています。

補足続く

85:957 ◆KhjEefLZMk
05/01/13 00:42:25
>>83そのとおりです。

速度の話をしましたが、作り始めたときに遅そうなのは分かってたので、未踏の申請でもちゃんと説明してあります。
「遅そうだし、OSなんて未踏期間じゃ絶対完成しません。」て。

C#が使えるというのは(新規性はない)技術的な面白みの話です。
じゃあ社会的になにか役に立つのというところでセキュリティがあります。
これはまあ出来て完成して普及したあとの話なので詳しく書きませんが、
コンピュータシステムを安心して使うためにはやっぱり大切なことだと思います。

結局、Ponytail は実用とか普及を目的にはしていません。
誰もやっていないから、やってみれば新しいことが分かるかもって試みなんです。

86:957 ◆KhjEefLZMk
05/01/13 00:44:17
あ、連投ごめんなさい。

実用・普及を目的としていないっていうのは、未踏期間みたいなスパンでの話です。
そのうち使いやすくなって普及したら嬉しいなあ~とはもちろん思っています。

87:Be名無しさん
05/01/13 04:21:03
>>71
iTROうわやめなにをすkbかるうはlsふじこ

88:Be名無しさん
05/01/13 12:45:25
おいおい。
高速化の見込みが分からないって、
じゃあなんのためにプロセス境界とか特権レベルが
特徴に挙がっているわけ?
ネイティブが作りにくくなるだけやん。
ネイティブ完全否定かと思えば、
共存できるみたいなことも言い出すし。

まさか最初にOS作成ありきで、
後から製作理由をぶち上げて、
それで仕様を決めているなんて事はないよね?

なにか既存のOSにはできないことがあって、
それをできるようにするために、
新規にOSを作るのがベストだと考えた、
というのが普通だと思うんだけど。

結局WinやMonoの劣化コピーではないか?
>>21を読んで思うのだが、既存のILを
Ponytailで動かす動機って何があるわけ?
他の独自OSはBTRONもBeOSもOSASKでさえも、
まず既存のOSにない価値を提案しているが?

89:957 ◆KhjEefLZMk
05/01/13 14:17:08
>>88
既存のOSは、必要のために大抵「アドレス空間分離」と「特権レベル」を使っています。
Ponytailはそれらを使わずに同じ品質を得ようとしています。
これって特徴ですよね??

機械語実行は、WinでのドライバとかLinuxでのカーネルコンパイルと同じ扱いです。
必要があればそうした手段をとれますが、OSが冒される場合があるので使用場面は限定されます。

OS開発そのものは、まずOSありきですね。OSを作りたいからOSを作る。
いま、コンピュータで便利に作業したいからOSから作るという人がいますか??

こういったアイディアとか言うのは、順序論理ではないと思います。
AがBになりCになるのではなく、AとBがくっついてCになります。
書かれたような思考順序はビジネスでの考え方ですが、Ponytail はビジネスではありません。

OSASKを何度も挙げられていますが、僕はOSASKをよく知りません。
具体的に、Windowsユーザが今できないけどOSASKを使うと出来ることは何か、ぜひ教えて頂きたいです。

開発動機は面白そうだからです。世界で誰かやってるかなーと思ったら誰もやってないみたいだし。
これではいけませんか?
なにか崇高な動機を持ったOSをお探しなら、
残念ですが Ponytail は期待には添えないと思います。

90:957 ◆KhjEefLZMk
05/01/13 14:29:57
追記。

>結局WinやMonoの劣化コピーではないか?

C#を実行するアプローチが異なるので、どうやってもWinのアーキテクチャのコピーは出来ません。
それをふまえた上で、ユーザが出来ることが変わらない、という意味の劣化コピーという表現なら、まさにその通りです。
Ponytail で Windows と同じことができるなんて夢のようです。そうなればたくさんの人に使ってもらえそうですしね。

>まさか最初にOS作成ありきで、 後から製作理由をぶち上げて、 それで仕様を決めているなんて事はないよね?

Cマガ読んでOS作りたくなったので、順序からいえばそうなりますね。

>>>21を読んで思うのだが、既存のILを Ponytailで動かす動機って何があるわけ?

これは、他のOSの開発者の方に「Linuxにあるソフトをわざわざ動かしてどうするわけ?」と訊いてみればよろしいかと。

91:Be名無しさん
05/01/13 15:14:23
せんせー。
ぜんぶりんぐぜろなおーえすだとけつぜいでやるにあたいしないんですか?


92:88
05/01/13 15:50:05
> OSASKを何度も挙げられていますが、僕はOSASKをよく知りません。
> 具体的に、Windowsユーザが今できないけどOSASKを使うと出来ることは何か、ぜひ教えて頂きたいです。

俺がOSASKを引き合いに出したのは、>>21でOSASKが例示されていたからに過ぎない。
>>21がOSASKを引き合いに出したのは、おそらく>>18の影響だろう。

OSASKについてはここが客観的でまとまっていると思う。
URLリンク(www.ipa.go.jp)

Winと比較だが、とにかく起動が早い。アプリが小さい。動作が軽い。
ロースペックPCやエミュではそれを強く実感できる。
ハイエンドでもこれがCPUのアイドル時間を増やして消費電力を抑えたり、
処理能力をさらに高めるという作者の言い分は説得力がある。

だからLinuxやWinのアプリをOSASKに移植してでも使いたいかと言われれば、
そういう場合もありうるとは思うよ。俺はそこまではやる気が無いがね。

93:Be名無しさん
05/01/13 17:35:40
>開発動機は面白そうだからです。
Mona等のように個人またはグループで趣味として行うのは結構だが、未踏ソフトウェア創造事業を馬鹿にしているのか?

94:957 ◆KhjEefLZMk
05/01/13 18:04:07
>>93
本当は答える必要を感じないのですが、未踏周りは回答も義務かなと思うので答えます。
未踏を馬鹿にしているわけではもちろんありません。どこをどう曲解すればそんなふうに思うのか謎すぎです。

95:Be名無しさん
05/01/13 18:08:15
>>94
変な香具師には構わないで開発に集中してくれ。

96:Be名無しさん
05/01/13 18:09:24
LinusだってなんでLinux作ったかと聞かれれば面白かったからと答えるでしょ。
それでなんでいかんのやら。

97:Be名無しさん
05/01/13 18:26:43
>>94
未踏の責任は成果を出すことだろう?
言い方悪いけど、
2chでQ&Aに答えるためにIPAが金出してるわけじゃないかと。


98:957 ◆KhjEefLZMk
05/01/13 18:35:22
>>94-97
ごもっともです…。
とりあえずいまは double 周辺整備してます。

99:Be名無しさん
05/01/13 21:52:20
未踏の責任、新市場を切り拓くソフトウェアの開発を果たせるようにな。
開発楽しかったで終われば税金の無駄使いだからな。

100:957 ◆KhjEefLZMk
05/01/13 22:36:11
>>99
了解です。時間を上手く使わないといかんですね。

101:Be名無しさん
05/01/14 13:06:54
後付けでもいいから、他のOS+.NETではできない何かがほしい。
それないと移行する動機がないから普及は難しそう。
.NETだから、キラーアプリの出現ってのもなさそうだしね。
普及を考えないなら、他のOSを超える必要はないんだけど。

作る動機が「作りたいから」ってのは、別に構わないと思う。
でもちょっと心配なのは、作ることだけが目的のソフトって、
出来上がってしまったらオシマイで、作った本人も、
他の誰も使わないことがままあるので、そうならないでほしい。
個人的にはセキュリティに期待している。
早くこれを語れる段階になるといいね。
これが仮想マシン由来の、NXビット程度のセキュリティなのか、
もっと抜本的な何かなのか、興味があるところ。

未踏に関して言えば、957氏に採択の責任はないと思う。
957氏は提案した内容を実装すればそれで責任は果たされる。
採択に不満があるなら、PMに言うべきだよ。
もし結果的に税金の無駄づかいになっても、
それはPMの無駄づかいであって、957氏の無駄づかいではない。

102:Be名無しさん
05/01/14 13:30:50
そりゃもっともな話だな。

103:957 ◆KhjEefLZMk
05/01/14 13:58:09
>>101

あれこれ考えてはいるんですが、OS開発って途中で頓挫しやすいので、
虚言にならないようにと思ってあまり話さないようにしています。
たとえば「最適化JITを使えばWinを超えられる!」とは言わずに、
「最適化JITがないから遅い」というふうな表現をなるべく使っています。

なので、ここから書く完全オリジナルは、ずっと先のことだと思ってください。

・JITを使って、ドライバコードをアプリに埋め込める
 たとえば、グラフィックドライバの一部をアプリの中に埋め込んでしまえます。
 MSがIIS6で、高速化のために一部をカーネル空間に配置したという事例もあるし、
 上手くいけばなんだかとてつもなく高速化できそうな気がします。

・Javaと相互運用
 Javaのクラスローダ作って型システムに合わせてやれば、結構上手く動きそうです。
 #Ponytail の上に VM を乗せるという話ではないです。
 現状どのOSも、.NETとJavaオブジェクトが通信するにはものすごいコストが必要です。
 MSもやろうと思えば出来ると思うんで、完全独自にはならないかもしれませんが。

・分散環境
 .NETの特徴として、分散環境に適合しやすいと言うことがあります。
 いまOSの核はC言語で書かれているのでなにもできませんが、
 OSの中心から分散に適した形になった場合、なにかできそうです。。。(弱

たぶん、僕が考えてるより、いろいろできるんですよね…。上手く伝えられないけど…。

104:957 ◆KhjEefLZMk
05/01/14 14:16:07
続き。

モチべーションの持続は難しい課題ですね。

セキュリティはNXビット程度ではありません。もっと強力です。
詳しくは.NETのコードアクセスセキュリティとかを参照してください。ここで書くのは大変なので。。。

MSは昔ActiveXでいろいろやろうとしましたが、セキュリティが問題になっていまも不調です。
それをふまえて今度は.NETでやろうとしているので、セキュリティに関してはものすごい労力が払われています。
Ponytail は、それをOSにも適用してしまおうという考えなんです。

加えて、メモリアクセスがすべて安全になりますね。バッファオーバーフローによる乗っ取りはなくなります。

しかし、原理的に、ソフトウェアの論理ミスや運用ミスでできてしまうホールはなくなりません。
これは仕方のないことです。ただ、ソフトが作りやすくなる分、バグが減ることは期待できます。

僕は、こういった、「基盤の品質を上げて個々のアプリの品質を暗に高める」というアプローチが重要だと考えています。
特にセキュリティ周りはそうしないと、いつまでたっても個々の開発者任せになってしまい、潜在的なリスクを排除できないと思うからです。

105:Be名無しさん
05/01/14 19:54:46
そーいや、そういう書き込み(ILを解釈してどうこう)をしてる奴が居たなー
もう1年ぐらい前になるか?

106:Be名無しさん
05/01/14 21:05:32
>>105
さっきゅんは一時期ristiaを本気にやってたぞ
Kのnaskを改造したりして

107:Be名無しさん
05/01/14 22:13:39
ponytailって日本語だと「おさげ」
和製OS界隈の人ならOSAGEを知ってるよね
URLリンク(www.osdev.info)

OSAGEは既に消滅してるしだからどうだってことはないんだけど
この界隈の人って発想が似てるのかなって思っただけ

ところで昔はz-slashにミラーがあったんだけど今はどうなってるの?>雑記

108:Be名無しさん
05/01/14 22:14:49
あ、雑記はセンター試験前日でこんなとこ見てる余裕ないか
悪かったね

109:Be名無しさん
05/01/15 05:51:49
>>106
本当に惜しい奴を亡くしたな

110:Be名無しさん
05/01/15 09:44:15
>>109
生きてるって
URLリンク(aireos.jp)

111:957 ◆KhjEefLZMk
05/01/16 20:22:47
ちょと前にドライバ云々の話を書きましたが、具体的にはこんなふうに。

// SETUP
IOPort.Write8(0x43, 0xB6);
IOPort.Write8(0x42, 0x98);
IOPort.Write8(0x42, 0x0A);
Console.WriteLine("BEEP");
// ON
al = IOPort.Read8(0x61);
Console.WriteLine(al);
al |= 0x03;
al &= 0x0f;
IOPort.Write8(0x61, al);
Console.WriteLine("ON");
// Wait
for(int i=0; i<100; ++i) { Console.Write("|\r"); Console.Write("/\r"); Console.Write("-\r"); Console.Write("\\\r"); }
// OFF
al = IOPort.Read8(0x61);
Console.WriteLine(al);
al &= 0x0D;
IOPort.Write8(0x61, al);
Console.WriteLine("OFF");
//

VMwareでビープが鳴りました。嬉し。
IOPortクラスはMC++で、in/out命令だけアセンブラです。

112:957 ◆KhjEefLZMk
05/01/16 20:23:30
ちなみにそのサンプルコードそのものを内包したクラスはC#です。念のため。

113:Be名無しさん
05/01/18 00:35:15
最近の技術は難しいね
.NET Frameworkとかみんなどうやって勉強してんのんかな

114:Be名無しさん
05/01/20 22:14:46
URLリンク(www.ipa.go.jp)
> .NETの実行環境であるCLI(Common Language Infrastructre)をハードウェア上に直接実装すると共に,
> 独自のOSを開発しようとする,野心的かつ意欲的な開発提案である.

ガンガレ

115:Be名無しさん
05/01/20 22:39:06
>>114
このPM大丈夫なのか。。。orz

「CLIをハードウェア上に直接実装する」
って言うと普通Java Chipのパクリ品如く、
CLIをハードウェアで実装したマイクロプロセッサを作成すると言った意味になる希ガス。

116:Be名無しさん
05/01/20 22:42:32
「ハードウェア上」だからそれでいいのか。
漏れの頭が逝かれているようだNE!

117:957 ◆KhjEefLZMk
05/01/22 00:35:13
>>114
ういっす。がんばってみます。

いまは起動方法の変更に着手しようとしてるところです。
現状だとインタープリタでVMの環境構築までやっているので効率悪いんですよね。

118:Be名無しさん
05/01/22 07:35:20
>>113
.NETに関してはVS.NETを買わないと始まらない。話はそれからだ。

119:Be名無しさん
05/01/24 00:30:47
>>118
なくてもなんとかなんない?
高いし、重いし、できれば使いたくないよ

120:Be名無しさん
05/01/24 00:53:02
>>119
> なくてもなんとかなんない?
もちろんやろうと思えば何とかなるけど、
.NETをマスターしている人がその気になれば出来るものであって、
何も知らない人が手を出して使いこなすのは不可能。

> 高いし
タダで使えるやつを使え。
URLリンク(www.microsoft.com)

> 重いし
そんなのトレードオフでしょ。
それなりのメリットがあるから割り切って使う。
GUIのデザインなんかちまちまコード書いてたら日が暮れる。

> できれば使いたくないよ
初心者がVS.NETを使わずに.NETを勉強するのは無理。
.NETを諦めるか、拘りを捨てるか、どちらかです。

121:957 ◆KhjEefLZMk
05/01/24 02:03:36
いちおう SharpDevelop っていうフリーのもあるけど、ウェブで情報を探しやすいのはやっぱりVS.NETです。
はじめてのときは自分が望む情報が手に入りやすいことも重要かと。
VS.NETで慣れて、期限切れたら SharpDevelop でもいいかもです。

SharpDevelop:
URLリンク(sharpdevelop-jp.sourceforge.jp)

122:Be名無しさん
05/01/26 16:51:21
SharpDevelopあればVS.NETじゃなくてよさそう
複雑なことしようとすると必要かも

忘れてたがPonytailの板だったな

123:Be名無しさん
05/01/26 22:23:55
Ponytail板?

124:Be名無しさん
05/01/31 05:15:19
URLリンク(www.tirasweel.net)
URLリンク(www.tirasweel.net)
URLリンク(www.tirasweel.net)
少しずつ更新してるんだ
しばらく開発してないのかと勘違い

125:957 ◆KhjEefLZMk
05/01/31 11:54:40
してますよ~。日記とかないと日々の進捗は書きにくいですね。

MS.NETとかMonoは、C#の型システムの背後にC++で書かれた「本当の型システム」があるんだけど、
これが嫌なので、全部C#による型システムをやるために試行錯誤。ホムペの図はそれです。

型システムがないとシステム全体もどうにもならんので、告知に値するインパクトのリリースがなかなかできません。。。

126:Be名無しさん
05/02/01 08:45:17
>>125
和製OS界で流行りのはてなにアカウント作っては?

127:Be名無しさん
05/02/01 12:05:10
日記ならここでやって欲しいな~
煽りは無視しちゃっていいからさ。

128:Be名無しさん
05/02/01 12:29:32
はてなのblogでよくね?
技術者の話ほど貴重なものはない

129:957 ◆KhjEefLZMk
05/02/01 13:07:48
んー、ではここにぼちぼち書くことにします。
#消費抑えるために毎日とかは書きません。

はてなだといちいち返事書くのが面倒に思った。
それにまだ"ユーザ"がいませんしね。
Ponytailが有名になる頃にちゃんとしたもの用意すればいいかな。

130:957 ◆KhjEefLZMk
05/02/01 13:43:27
というわけで、つっこみ歓迎で最近やってることなど書いてみる。

・まだ名前考え中。
昨日はPhaseshift,Intos,Primia,Selfinaとか思いついた。

・型システム
いま考えてるPonytailのブートシーケンスは次のような感じ。
 1 IPL > 1stboot > 2ndboot
 2 KERNEL.DLL(C++)
 3 ATAPI初期化してCD読む
 4 .NET向けシステムライブラリを普通のメモリ空間にロード
 5 ライブラリを解析してクラスとかメソッドの情報ゲット
 6 .NET向けの、GC的メモリ空間を用意
 7 ILインタープリタ(ILI)により、.NETメモリ空間内でライブラリの初期化
   ※この時点では、型情報はカーネル空間に依存
 8 ILIにより、.NETメモリ空間にシステムライブラリを読み込む
 9 ILIにより、ライブラリを解析してメソッドとかの情報再ゲット
 A .NET空間の型情報をカーネル空間から.NET空間の方に移行
 B JITコンパイラでJITコンパイラをコンパイル
 C JITコンパイラでエントリポイントをコンパイル
 D エントリーポイントにjmp
わかりにくいかな。で、Aのとこやってます。

・JITコンパイラ
とりあえずこれがないと動かない。

こんな感じです。詳しい話がほしければレスください。

131:Be名無しさん
05/02/01 13:47:56
そういえばVS.netで作成したDLLとかってOSで使用できるんだったっけ?
前Monaスレで聞いたらそう言っていたけど、その後何も無かった…
ちょっと気になる。


132:Be名無しさん
05/02/01 13:48:59
というか教えてくださいorz

133:957 ◆KhjEefLZMk
05/02/01 17:30:19
>>131
ありゃごめん。学校と自宅でと見てると見逃してしまうことが…。

VS.NETなら、C#, VB.NET, Managed C++ (VC++)で作ればおけ。
自分でアプリ書く手順とかはPonytailのダウンロードのとこにちょこっと書いてあるので、
分からないとこは遠慮なくきいてください。
とりあえず試すにしてもまだ機能少なくて申し訳ないんだけどね…。

134:Be名無しさん
05/02/01 18:56:57
いや、別の人が言っていたんだよ。
聞きたいことがあればって書いてあったので便乗しただけです
すまんorz

135:Be名無しさん
05/02/01 20:10:24
>>130
D エントリーポイントにjmp
とあるけど、ネイティブコードの利用は基本的に1~Cのブート、初期化の時だけと考えてるの?

136:957 ◆KhjEefLZMk
05/02/01 22:29:54
>>134
お気になさらず。質問してくださったほうが歓迎です^^

>>135
そのとおりです。
最終的にはMMSからカーネル、ドライバまで、C#で書きます。
アプリ、ドライバ、カーネル開発者の誰も、アセンブラを使う必要はありません。

137:ITRON名無しさん ◆4WD27e3i1o
05/02/02 22:56:00
>>115
マイクロプロセッサに実装する云々と解釈したって? …そう仮定する気心が知れん。健忘症か?
言語中立のオペレーティング環境という文脈で、加藤センセの成果物を知らん人はいないだろ。ここはOS板だよな。

138:957 ◆KhjEefLZMk
05/02/04 01:54:36
0.0.20.0 をリリースしました。

まだ外側には手を加えていないので、できることは0.0.17.0とほとんど変わらないのですが、
型がVMの中に閉じた個人的に記念すべきリリースなので告知です。

型がVMに閉じる、とは、ある型の情報がすべてVM内にあって、アクセスできることを言っています。

たとえば、現在の.NET Framework は閉じた型を持っていません。
typeof(int) -> System.Int32
typeof(int).GetType() -> System.RuntimeType
となり、RuntimeType はおそらくVM外部のランタイムとやりとりしてます。
これはMonoでも似たようなものです。(最終的に外部呼び出しになる。)

PonytailではVM内でシステムライブラリを再解釈することで、VM外とやりとりすることなくメタデータを操作できます。

んで、解析した情報と型を結合しているので、
typeof(Ponytail.Types.ClassType).GetType() -> Ponytail.Types.ClassType
こうなります。

いまのところまったく役に立ちませんが、JITをC#で書くのには必要な気がする。たぶん。

139:957 ◆KhjEefLZMk
05/02/04 01:56:01
訂正

typeof(int) -> System.Type
typeof(int).GetType() -> System.RuntimeType

.NETはこうでした。

140:Be名無しさん
05/02/04 11:28:12
0.0.20.0リリースage!

141:957 ◆KhjEefLZMk
05/02/04 13:37:37
【日記】 今日はC#からFDにアクセスできるようにしてみます。

142:Be名無しさん
05/02/05 01:35:49
さて、できるようになったのかね

143:シャムル ◆DYX.TSR6Wg
05/02/05 13:38:28
>>957
乙!



144:957 ◆KhjEefLZMk
05/02/05 14:27:04
>>142
昨日は頭痛でダウンしてしまいました。0.0.20のために数日頑張ってたので反動っぽい。
今日もFDドライバを頑張ります。いちばんの問題は delegate を割り込みハンドラにするところ。

>>143
ぅぃ~!

145:957 ◆KhjEefLZMk
05/02/05 18:33:05
HDD Healthをみたら Nearest T.E.C. が 2005/02/05 のドライブがあったので、数日反応しなくなると思います。
ソースコード類が全部入ってるので洒落にならない・・・。
では

146:Be名無しさん
05/02/06 18:52:01
開発を投げ捨てるときのいい言い訳だよね。

「ハードディスクが壊れました」

147:Be名無しさん
05/02/06 21:56:02
さすがにいま投げ捨てちゃいかんだろう。

こういう事態に備えて、ネット上にバックアップを残しておくのですよ。


148:Be名無しさん
05/02/06 23:47:32
バックアップ体制について釈明しないと信頼を失って
完成しても誰も付いてこなくなると思うんだが

149:957 ◆KhjEefLZMk
05/02/07 00:16:44
復帰しました。IO-DATAのUSB2外付け買ってきた。
ドライブ名の割り当てでちょっとつまづいてました。

いまはFDDの続きしてます。

>>146
ですね~。高校の卒論の時はMOが消えました。パソコン周りはそんなこと多い気がします。
ちなみに「ハードディスクが壊れそうなのでなんとかします」なので、あしからずw

>>147
>>148
Visual SourceSafe のリポジトリをフラッシュメモリと研究室のマシンとたまに同期してます。
#未踏の方にもソースコードの提出が義務づけられているのに、消えました、じゃ無責任ですしね。
ただ、周辺の開発環境はバックアップできるものでもないので、クラッシュするとやはりダメージでかいです。

150:Be名無しさん
05/02/07 08:55:36
>>149
RAIDを使いましょう。外付けは定期バックアップ用にしてバックアップのときだけつなぎましょう。

151:Be名無しさん
05/02/07 11:50:25
定期的にHDのイメージを吸い取ってネットワーク上に置いとけば
クラッシュしたときはFD突っ込んでネットワーク経由ですぐ復活できるよ。

152:957 ◆KhjEefLZMk
05/02/07 12:05:23
昨日の時点でqemuが暴走するとこまで出来た。
暴走するってことはIDTの設定ミスとかDMAバグバグとかいうことなので、今日はそこらへん。
うまくいけばもうちょいで出来そうな予感です。

>>150
RAID。。。内蔵HDDを増やすのは今のマシンだとキツいかなぁ。
確かにそろそろ安心を買う必要はあるかもしれない。

>>151
100GBoverをネットワークに置くのはちょっと面倒ですw

153:Be名無しさん
05/02/07 12:08:29
なんで野良OSのソースが100Gもあるねん

154:Be名無しさん
05/02/07 12:44:20
ちゃんと読めよ。。。

155:Be名無しさん
05/02/07 12:45:51
そりゃちょっとでかすぎだな。
やっぱRAID+外付けHDDかね。
未踏ってよく知らないんだけど、経費として申請したら
お金だしてくれるの?

156:957 ◆KhjEefLZMk
05/02/07 12:47:32
開発環境だけ抽出してバックアップって難しいからそうするとHDDまるごとになっちゃうから100Gくらいかなぁと。
ソースコードだけなら確かにネットワークに置けるけど、ソースコードだけならフラッシュメモリに保存できるので大丈夫なんですわ。

157:957 ◆KhjEefLZMk
05/02/07 13:04:41
>>155
未踏で出してくれるのでRAIDも選択肢です。(個人だとお金ないから無理・・・)
しかし唯でさえ金欠なのに、暫定支払いが3月末でそれまでは立て替えなので、RAID買う余裕はなさげ。
今回のHDDも身内借金でまかなったし。

158:Be名無しさん
05/02/07 13:46:28
>>136
> 最終的にはMMSからカーネル、ドライバまで、C#で書きます。

さりげなくとんでもないことが書いてある…
ヲチしてみるか。

159:Be名無しさん
05/02/07 15:16:45
>>157
概算払いが3末ということは、最近契約手続き終わったくらいか。
初回の概算払いは6桁後半は確実だから、それまで耐えろ。


160:957 ◆KhjEefLZMk
05/02/07 16:29:03
FDDの先頭セクタ読み込みキター!

C#によるFDDドライバ:
URLリンク(www.tirasweel.net)

いまFAT書きつつファイルシステムからアクセス可能にしてます。
でも結構量あった・・・。まあがんばろう。

>>159
了解っす。

161:Be名無しさん
05/02/07 18:32:58
あんまりKとかひげぽんとかその周りとは関わらないようにして欲しいなぁ。
まぁ完全に個人作業となっているから大丈夫だとは思うけど。
無駄な争いが起きてそのために無駄な時間が掛かるのはお互いに不都合であると思うし。

裏で色々とあるらしいからな、関わると面倒だ。
とりあえずがんばって欲しいと思うわけでせう。

162:Be名無しさん
05/02/07 19:56:55
本人および取り巻きが、MonaやOSASKと比較してどうだとかいわなければ、
他陣営からちょっかいを受けることはまずないと思われ。

>裏で色々とあるらしいからな、関わると面倒だ。
こういう失言が元で、信者から裏って何のことだとか言われて、ドツボになる。

163:Be名無しさん
05/02/07 20:11:15
つまり俺がトラブルメーカーってことかorz
吊ってくる、すまぬ

164:Be名無しさん
05/02/07 22:19:41
>>157
とりあえずリボで買っとけば良いと思った。

165:957 ◆KhjEefLZMk
05/02/07 22:39:02
だめだFD読み込み安定しない・・・、なぜか0Dとか00とか例外出る。もうちょいかかりそう。

>>161,162
関わらないというか、方向が違うので関わりようがないかも。
それに争い?も、ピンと来ないなあ。
ま、和やかに行きたいです。

OSって、はじめは一人なのに、最後は大勢じゃないと形にならないから、難しいですね。

>>164
さっきDELLから代替品が来たので、とりあえずこれにバックアップしておこうと思います。
カードも使ってるけど、基本的には好きではないので・・・。

166:Be名無しさん
05/02/07 23:17:41
>>165
MonaもOSASKと方針が全然違うから干渉のしようがなかったけど、
Monaに湾岸が来てOSASK化をおっぱじめたからややこしいことになった。
OSASKの思想とやらをKが説いて追っ払われたが
KはOSASKに対する誹謗中傷と解釈して一人で怒ってる始末。
お前のことなんか誰も興味ないっちゅーの。

とゆーよーに他人が来ると必然的に人間関係がごちゃごちゃしてくる。
個別のOSがどーたらとかお山の大将やってないで、
全体としてOS開発に対する底上げという成果を出すべきだと思う。

167:957 ◆KhjEefLZMk
05/02/08 15:11:53
>>166
まあでも、発展途上中のOSのミドルウェア作ってると、カーネルを変更したくなるのは分かる気もします。

Ponytail は既存のOS化は絶対しないですね。それやるとアイデンティティが無くなってしまうので。
全体の底上げという意味では、まあ完成すれば結構いけそうな気がしなくもない。

168:957 ◆KhjEefLZMk
05/02/08 15:18:35
ということで(?)、0.0.22.0 リリースです。

予告していたC#によるFDD/FATの読み込みが出来ました。
ソースコードを公開していますので、技術的興味がある人はそちらをどうぞ。ptcorlib のあたりにあります。

一番面白いところは、
// public delegate void InterruptHandler();
// private static void HandleInterrupt();
InterruptHandler handler = new InterruptHandler(HandleInterrupt);
InterruptController.RegisterInterruptHandler(6, handler);
として、IRQ#6の割り込みを処理するところですかね。

本当は System.IO と統合してから公開したかったんだけど、
あそこらへん結構入り組んでるっぽいので一区切りしました。
System.IO.File あたりが動くようになればもしかしたら既存のソフトの中には動くモノがあるかもしれません。それを動かしてみたい。

この後すこししたら出かけるので返事は遅くなるかも。

169:162
05/02/08 18:38:02
>>166みたいなやつがいるからトラブルになるって言っているのに。

>OSASKの思想とやらをKが説いて追っ払われたが
これは取り巻きの名無しが無知で断定的なことを書いたので、Kが補足に来ただけ。
というかこのときのKは控えめで態度がよろしい。

>KはOSASKに対する誹謗中傷と解釈して一人で怒ってる始末。
それどこよ。あのページにはないぞ。むしろこの書き込みこそ誹謗中傷くさいぞ。

>お前のことなんか誰も興味ないっちゅーの。
これも明らかにフレームの元。

URLリンク(mona.sourceforge.jp)

170:Be名無しさん
05/02/08 18:44:43
>>162
Kの犬は目障りだから消えてくれ。お前のせいで荒れて来たじゃないか。

171:Be名無しさん
05/02/08 18:48:27
湾岸はOSASKのスパイ。そんな香具師にGUIを頼るしかない卑下。ただそれだけ。

172:Be名無しさん
05/02/08 19:10:27
170=166

>171はmonaスレでやってくれ。

173:Be名無しさん
05/02/08 19:58:29
やべー、俺のせいで本当に荒れてきた

ちょっちょちょっちょtyとちょとtまtってくれぇぇぇぇ

俺が悪かった。ご免orz

楽しく逝こーぜ、楽しくorz

174:957 ◆KhjEefLZMk
05/02/09 18:18:53
まあほんわり行きませう。>みなさま

今日はVFSについて悩みつつ、いまVisioでモデリングしてます。結構いい感じだ。
今日はモデリングだけで終わりそうなので、実装は明日かなあ。

175:Be名無しさん
05/02/10 00:57:47
957はプロ

176:957 ◆KhjEefLZMk
05/02/10 21:20:25
えーっと、割と学生です。

パスについて悩む。

path ::= (drive_name ':')? abs_path | rel_path
drive_name ::= [a-z]
abs_path ::= '/' rel_path?
rel_path ::= selector ('/' selector)*
selector ::= '.' | '..' | name
name ::= ふつうにファイル名に使う文字

つまり面倒だからWinとUniの両方でいいやとか思ってるんですけど、
意見とか「将来こんな問題がおきるんじゃないか」募集。

177:957 ◆KhjEefLZMk
05/02/10 21:26:24
具体例。

/home/usr
my music/pop
c:/home/usr
c:subdir

全部おっけーで。
ドライブ指定なしはVFSを指定。(Unix方式)
ドライブ指定ありはWinと一緒。

カレントディレクトリはVFSにしか設定できない。(考え中)
VFSのディレクトリはひとつのドライブ付きディレクトリ(物理ディレクトリ)にマップされる。
ひとつの物理ディレクトリは一つ以上の複数のVFSディレクトリにマップされる。(考え中)

どうだろう。。。

178:Be名無しさん
05/02/11 12:46:33
>>176
ふつうにファイル名に使う文字
とは?
' 'も入る?'\'や'/'や':'も入るべきだと思う人もいるかも知れない。

nfs的なもののパス名は?Winだと、\\computername\sharename\foo みたい
なもの、Unix系だと、hostname:/foo みたいなもの。


179:957 ◆KhjEefLZMk
05/02/11 15:29:19
空白はないと困るかな。\/:とかはバグの原因になるのでなしで。

んで、そっか、ネットワークパスもあるんだ・・・

share@host:/music/song.mp3

ってどうだろう。

\\host\share\music\song.mp3

と同じ意味。

そういえばWinには内部パスもあるはずだけど、あれはよくわかんないな。詳しい人いたら解説プリーズ。

180:Be名無しさん
05/02/11 18:14:00
>>179
新しい記法を導入するのは混乱するんじゃない?
1. Windowsのファイル名規則に従う(ただし「/」もパス区切りに使える)
2. UNIXのファイル名規則に従う
のどっちかにしてほしい。

181:957 ◆KhjEefLZMk
05/02/12 00:22:52
メモリの解放に確保の100倍の時間がかかってたのでそこを修正しようとして泥沼でした。疲れた。。。
まあ起動が速くなったからよしとしよう。

>>180
ふむふむ。たしかに互換というか、慣れにあわせておくのも大切ですよね。


もうちょい考えます。

182:Be名無しさん
05/02/12 15:03:28
やっぱ .NET だったら
Windows に合わせておくのが無難かな

とか勝手に思ったりしてみた。

183:Be名無しさん
05/02/12 19:47:20
>>179
Winでの内部パスとは?
カーネルモードのオブジェクトマネージャの名前空間でのパスのことかな?
例えば、Win32サブシステムでのファイル名'c:\boot.ini'は、オブジェクト
マネージャでの'\??\C:\boot.ini'に対応するけど…。

ちなみにWin32サブシステムでのファイル名規則は
URLリンク(msdn.microsoft.com)
辺りに書いてあるようだね。

184:957 ◆KhjEefLZMk
05/02/12 20:27:16
>>182
ですね~。でもなんでもかんでも同じにすると面白みがないw

>>183
まさにそれです。さんくす。
ちょいと読んでみます。

185:ITRON名無しさん ◆4WD27e3i1o
05/02/13 02:19:13
URL (RFC1738および各種拡張)にする、とか。

186:957 ◆KhjEefLZMk
05/02/13 03:02:51
>>185
省略を許さないとURLって面倒だし、許すとUnixと一緒ですね。うーむ。


FileStreamとちょこっと統合できた予感。つかれた・・・。
詳細はあした。

187:Be名無しさん
05/02/13 09:32:11
さっきゅんがPonytailの実力を認めた。
スレリンク(os板:809-811番)

188:Be名無しさん
05/02/13 12:43:03
>>187
そんなことはどうでもいいんだよ。

189:957 ◆KhjEefLZMk
05/02/13 23:53:29
昨日、「あした」とかいいつつ、今日は学校で書類書きしてました。

とりあえずパスは適当でnew FileStream("fd0a;/kernel.img")とかで読めるようになったんだけど、
つぎはぎだらけでいまいちなのでリリースは見送ってます。

あと、登校途中でキュピーンと天啓が下りまして、改名することになると思います。
とりあえずドメインとろうっと~

190:957 ◆KhjEefLZMk
05/02/17 01:15:57
学校でOS開発を布教しようと思うので、一週間くらいテキスト書きに集中するかもしれません。
ちょっと進捗がなくなりますけど、みなさま気長に待っててください。

191:957 ◆KhjEefLZMk
05/02/18 20:32:05
改名しました。

Ponytail 改め、CooS (クース)とします。
Ponytailと変わらぬおつきあいをCooSでもよろしくお願いいたします。

ホムペは URLリンク(www.coos.jp) です。(コンテンツは増えていません。)

世の中就職戦線は賑わっていたのですね。
遅ればせながら就活でちょっと忙しくなってます。

192:bayside
05/02/19 03:01:03
すで終わるOSはなんとかっていう話題が昔あったような・・
unix, linux, minix, mac osx, windows, msdos, beos ...

193:Be名無しさん
05/02/19 03:13:53
>>192
ぬるぽ
そんな話題は正直どうでも良い。
物が全て。

194:957 ◆KhjEefLZMk
05/02/19 16:55:04
とりあえずそのリストを見るとスで終わるOSは普及しそうな気がする。。。

いまは数日考えてJITコンパイラにぼちぼち手を出さないとダメっぽいので、そんなことしてます。

195:NULLPO
05/02/19 18:59:42
スレリンク(os板)

196:957 ◆KhjEefLZMk
05/02/19 22:24:16
長音が入ってるのでうまく姓名判断できませぬ・・・残念

197:957 ◆KhjEefLZMk
05/03/05 12:23:09
EM64Tだとセグメントで保護できないんですね。
スタックオーバーフローをセグメントで保護する予定だったので、
64ビット移植の時は面倒だろうなあ。ま、対応予定はないんですが。

198:Be名無しさん
05/03/05 12:54:30
ロングモードはページング必須だからNX保護でええやん

199:957 ◆KhjEefLZMk
05/03/06 16:57:35
NX保護は実行禁止なので、ちょっと意味合いが違います。
ページング必須なのはそのとおりみたいなので、
スタックの下方数キロでも書き込み禁止とかにして対応するのが無難かな~。

200:957 ◆KhjEefLZMk
05/03/06 17:11:14
200get~。

ホムペ ( URLリンク(www.coos.jp) ) に、型システムの階層図をまた掲載しました。
これでほぼ完成だと思います。興味がある人はご覧ください。

いまはJITコンパイルの前段階で、各命令が実行される直前のスタックの状態がどうなっているかを調べる処理を書いています。

201:Be名無しさん
05/03/06 20:16:05
957はどこの会社受けるんだ

202:957 ◆KhjEefLZMk
05/03/06 20:23:03
ソフト開発系を受けてます。
僕の中では、OS開発>その他の開発っぽいので、
開発じゃなくてマネジメントやろうかなと。

203:Be名無しさん
05/03/07 15:41:41
未踏やってるって書けばどこでもフリーパスだろ

204:Be名無しさん
05/03/07 21:39:52
2chやってるって言ったらどこも入れないだろ

205:Be名無しさん
05/03/07 21:44:18
未踏ソフトウェアに採択されたことを言えば、技術力に関してはなにも言ってこないだろう品。
よほど人間性に問題があるようでなければフリーパスじゃね。

206:957 ◆KhjEefLZMk
05/03/07 22:01:18
エントリーシートには書く場所がないという罠。

でも未踏の知名度を過信しない方がよい感じです。
未踏という単語は知っててもべつにすごいとは感じないとか、
ソフトウェア開発分野には興味がないので知らないとか・・・。

>>204
そういう事態が頭に浮かばなかったのは我ながら痛いかもw

207:Be名無しさん
05/03/07 23:38:25
MSMVP > 未踏のスーパークリエータ
というのが世間一般の評価らしいでつ。


208:Be名無しさん
05/03/08 00:02:38
>>207
マジカヨ。M$に媚売ってマンセーしているだけのMSMVPが上なのかorz

209:957 ◆KhjEefLZMk
05/03/08 21:45:03
MSMVPは成果物を基準としないので未踏と比較はできないと思いますが、なにせ未踏はピンキリですからねえ。。。

210:Be名無しさん
05/03/08 22:41:04
>>209
MSMVPもピンキリだと思うヨ。
.NET系を取り扱っているところだとそれでも役に立つだろうけどなぁ。

卒業後は、ひげぽんのように仕事も両立させながらプライベートでOS開発って感じ?
それとも、川合さんのようにOS開発優先?

211:957 ◆KhjEefLZMk
05/03/08 22:48:23
OS開発を優先させる、、、ってのは魅力的なんですが…。
なにせ終わりがない開発になりそうなので無理だろうなあ。
それに仕事就かないと見えないこともあると思うので、いまんとこはひげぽんさんモデルを目指してます。

212:Be名無しさん
05/03/09 02:02:02
>>211
まあOSの開発だけで食っていくのは無謀なので、
ちゃんと仕事見付けた方がよいでしょうな。

未踏の期間中に別なスポンサーを見付けられればいいんだけどねえ。


213:957 ◆KhjEefLZMk
05/03/26 15:25:27
近況報告~。マシンが起動しなくなってしばらくPCから逃避してました。いまは水冷を新調して復帰。

MonaがUSBメモリからの起動でちょっと議論してますが、実は僕も休み中に試そうとして、んで挫折してたりします。
というのも、道のりが長すぎるのですよ。

まず、USBコントローラがPnPを扱わないと発見できないっぽい。
まあ情報取得だけなら簡単だと思うけどPCIを触ったことはないので油断できない。

んでさらに、肝心のUSBプロトコルが結構複雑です。
単に信号送ってデータ送りつければいいという話ではないので仕方ないんだろうけどさ。
実時間ベース(1ms/125us)での通信とかあったりするので、
とりあえずスレッド周りがきちんと整備されていないと手が出ません。

そんなわけで4月に発表があるし、USBはしばらく見なかったことにしました。
発表までにJITが動くようになるといいなあ。

214:Be名無しさん
05/03/26 15:46:11
>>213
あっちでUSBメモリ起動に関するレスを投稿した者の一人ですが自分はお遊び目的に気軽にCDメディアを消費せずに友人・その他に紹介できるのではないかと言う事で投稿しました
しかしMonaの方はもともと小サイズを目指すというかそういう方向(今は違うみたいですが)だからあれですが、CoosはJITやJavaなどを取り込むらしい事を見るとあまり小サイズ化とかそういう方面では無い様な気もします
またUSBメモリ起動等という物は「現在では」あまり実用性のない物かと思われますし、未踏に関わっているのであればあまり注目するような技術でも無い様な気がします

ところでCoosのサイトにはOSの開発コンセプトの様な物が見つかる所に無かったのですが簡単な物でもそういう情報も載せてみるとパソコン初心者の方にもとっつきやすいのではないかと思います

ということで期待あげ

215:957 ◆KhjEefLZMk
05/03/26 18:56:18
>>214
起動だけを見ると確かに需要ないんだけど、単にメディアとしてものすごく需要があったりするw
CDより大容量、書き込み可能、持ち運び可能、端子だけならどのPCにもある。

サイトは確かにコンセプトなかった…。いま書いております。

216:Be名無しさん
05/03/26 19:20:19
>>213
タイミングとかはコントローラーのお仕事なので、
CPUは用があるときにコマンドを送って返事を待てばいい。
どっちかてーとその上のレイヤが面倒だと思う。


217:957 ◆KhjEefLZMk
05/03/26 21:28:24
>>216
ほぅ~。言われてみればそれが自然ですね。
プロトコル解説書を読んだだけなのでチップが何してくれるのかいまいち謎でした。

218:Be名無しさん
05/03/27 06:20:45
URLリンク(www.coos.jp)

一般人がとっつきやすくなった上げ

219:Be名無しさん
05/03/27 11:49:27
通りすがりの物ですがCoosっていう名前の由来はなんでつか?

220:Be名無しさん
05/03/27 11:56:27
白々しい自作自演おつかれ

221:957 ◆KhjEefLZMk
05/03/27 15:51:08
>>218
サイトを作るのが下手な人なので、こーしたほうがいいとかあったら是非教えてくださいな。

>>219
co-os です。
co- 【接頭】 共同{きょうどう}の、共通{きょうつう}の、相互{そうご}の

>>220
すくなくともこのスレでは必ずコテ付きで書き込んでます~。

222:222
05/03/27 18:44:00
>>221
レスありがとうございます
co-osなんですね
Javaに引っ掛けてということですか

223:957 ◆KhjEefLZMk
05/03/27 22:35:51
とくにJavaは頭になかったんだけど、なんか似たようなものでもあるの??

224:957 ◆KhjEefLZMk
05/03/28 19:49:56
ちょとJITコンパイルしてみたのでメモ。f(x)=\sigma_{n=1}^x n の計算。

まずインタープリタ。

x= 0, y= 0, time= 200966
x= 0, y= 0, time= 32487
x= 10, y= 55, time= 113892
x= 100, y= 5050, time= 1509719
x= 1000, y= 500500, time= 88652059

つぎJITコンパイル。

x= 0, y= 0, time= 1027514
x= 0, y= 0, time= 479740
x= 10, y= 55, time= 469064
x= 100, y= 5050, time= 474037
x= 1000, y= 500500, time= 589739

やっぱり速いねー…。

225:Be名無しさん
05/03/28 21:35:39
・・・インタプリタのが速くなってない?

226:Be名無しさん
05/03/28 22:14:46
>>224
最適化オプション無しで良いからC言語との比較キボンヌ。


227:957 ◆KhjEefLZMk
05/03/28 22:58:53
>>225
インタープリタから機械語への切り替えにかかるコストが相当あるみたいです。

228:957 ◆KhjEefLZMk
05/03/28 23:11:22
>>226
あんまり変わらないと思うのでC++でしてみました。

最適化なし (cl オプションなし)

x= 0, y= 0, time= 314
x= 0, y= 0, time= 451
x= 10, y= 55, time= 773
x= 100, y= 5050, time= 2805
x= 1000, y= 500500, time= 81762

最強最適化。(/Ox)

x= 0, y= 0, time= 102
x= 0, y= 0, time= 102
x= 10, y= 55, time= 93
x= 100, y= 5050, time= 110
x= 1000, y= 500500, time= 102

C#の同じコードをWindowsで実行。(最適化)

x= 0, y= 0, time= 688
x= 0, y= 0, time= 289
x= 10, y= 55, time= 255858
x= 100, y= 5050, time= 2839
x= 1000, y= 500500, time= 23103

to be continued.

229:957 ◆KhjEefLZMk
05/03/28 23:12:26

最強最適化の威力がすごすぎます。
たぶんインライン展開を数段おこなってるんだとおもう。
これは別格ですね。

C#とC++(最適化なし)ではC#のほうが速いですね。
一般的な実験では、C++の方が僅差で速いという結果になることが多いので、まあこんなもんかと思います。
今回のコードは最適化による効果が出すぎですね。。。

やっぱりさらに高速化するにはレジスタフル活用にしないとダメですなぁ。

230:Be名無しさん
05/03/28 23:29:12
各CPUに最適化したリリースをそれぞれするというのはだめですか(爆死

231:957 ◆KhjEefLZMk
05/03/29 00:00:21
それはそれで面白そうだがw
「同一バイナリから異なるアーキテクチャにリリースしてます」って。

とりあえず最適化に手を出すとてんてこ舞いになるのは明らかなので見送りかな。
当面はJITの作り込みと、JIT動作に必要になるシステムコールを整備しないと。

232:Be名無しさん
05/03/29 01:20:14
こういうのってベンチマークとって公開してもいいんだっけ?

233:957 ◆KhjEefLZMk
05/03/29 02:08:20
ベンチの禁止の条項はサーバ関係のソフトウェアに限られていた気がします。たぶん。

234:Be名無しさん
05/03/29 02:11:23
ちょっと興味があるので横槍
OSをサーバとして使用した場合OSはソフトウェアには含まれない
ということでベンチOK
という理論でいいですか?

235:957 ◆KhjEefLZMk
05/03/29 14:11:29
ベンチをとったのはOSそのものではなくて、Win上でも動作する単なるアプリですので、以下略w

せっかくなのでちゃんと調べました。要約すると、

・我々はMSの許可なしに、本サーバソフトウェアまたは本クライアントソフトウェアのベンチ結果を公表できない。
・本サーバソフトウェアとは、我々のサーバ上でサービスまたは機能を提供するサーバーソフトウェアを指す。
・本クライアントソフトウェアとは、本サーバソフトウェアのサービスまたは機能を呼び出しそれを利用することのできる電子デバイス用のクライアントソフトウェアを指す。
・本サーバソフトウェアと本クライアントソフトウェアはServer製品の本コンポーネントの一部として含まれる。
・本コンポーネントとは本ソフトウェアを構成するここのプログラム、ドキュメント、情報などである。
・本ソフトウェアとはVS.NETとかを指す。

ベンチ禁止の条項はServer製品のプログラムについてのみ関係するので、自作プログラムについては大丈夫っぽい。

236:957 ◆KhjEefLZMk
05/04/10 19:47:17
VMware 5 で起動すると激重くなるという事実を発見しました。
4 系だと平気だったので内部動作が変更されたんだと思う。
Mona でも試してみたら、起動時は異常に重いものの、途中から軽くなる。

予想としてはページングモード用に最適化されたんじゃないかと思うけど、
これでしばらくVMwareは切り捨てざるを得なくなったなぁ。速かったのに、残念。

237:Be名無しさん
05/04/10 21:07:33
>>236
4を使い続けるんじゃ駄目なんですか

238:Be名無しさん
05/04/10 22:05:02
そろそろ、GCは実装できた?

239:Be名無しさん
05/04/10 22:31:07
Game Cube エミュ?

240:957 ◆KhjEefLZMk
05/04/11 02:26:37
>>237
5があるのに4を使うってなんか損している気になってしまう性分なので・・・。
でも4使うしかなさげ。

>>238
GC (Garbege Collector or Collection) まだです~。
いまはインタープリタでGCしても仕方ないという結論になってますので、JITが先です。

241:957 ◆KhjEefLZMk
05/04/11 02:27:28
あ、そういえば 0.0.23.0 公開してます。あいかわらず何もできませんが。

インタープリタとJITコンパイラの違いを試験できるので興味がある方はどうぞ。

242:957 ◆KhjEefLZMk
05/04/17 20:32:30
日記。

就職活動が大変です。

スタックマシンの命令体系からレジスタマシンの命令体系への変換はスクリプト書いて半自動化した方がいいのかどうか悩んでます。

知っている限りの草の根OSではやっていないことができました。
#それともなにか実現しない理由があるのだろうか。
でもGUIがないと意味ないので公表はしはらく先…orz

OSASKスレより、OSASKに中間言語による実行計画があるようですね。
たぶん、khaba? のやろうとしていることは、CooSと同じものだと思います。
どうなるか興味津々です。

243:957 ◆KhjEefLZMk
05/04/17 20:35:04
知っている限りの草の根OS、はちと言い過ぎかも。
すごいOSたくさんあるし、それらはもう実装してますからね。

公表できないことを話すのは良くなかったかなと反省。

244:Be名無しさん
05/04/19 13:02:19
簡素でいいんでGUI搭載してほしい

245:957 ◆KhjEefLZMk
05/04/20 02:08:30
GUIを搭載することは非常に前向きなのですが、いつとは言えないのが辛いところです。

246:957 ◆KhjEefLZMk
05/05/18 14:34:42
先日中間発表してきました。そのとき使ったパワポを公開したので、未踏とか興味のある人はどうぞ。
人より一ヶ月遅く就活してるみたいです。早く終われー。

以下日記。
キックオフでも同じだったんだけど、プレゼンで時間オーバーってマジやめてほしい。
特に時間すぎてるのに予定通りにプレゼンを進行するって姿勢が意味不明でした。
内容にはいろいろ思いましたが、「出来ないことをやる」のが未踏であると思うと、最終的には何も言えなくなってしまいますね。

247:Be名無しさん
05/05/18 18:21:45
乙。
なぜか就活が項目に入っているのがワラタ
普通の人が出来ないことを、貴方のような天才的な能力を持った人が実現するのが未踏だと思うヨ。
貴方が考えるHogeHoge手法を自信を持って言ってくださいな。

248:957 ◆KhjEefLZMk
05/05/18 20:42:04
>>247
ありがとう。
天才的ってのは僕には当てはまらない感じですが・・・。(^_^;
未踏に応募する人は技術的な話は面白いので、そーいった意味で有意義でした。


249:Be名無しさん
05/05/19 00:21:15
>>248
それが未踏の最大のメリットという話もあります。

貴重な人脈なので有効利用しませう。


250:957 ◆KhjEefLZMk
05/05/24 21:06:05
やっぱりやってたか、という印象。

An operating system written in C#:
URLリンク(research.microsoft.com)

251:Be名無しさん
05/05/24 22:24:43
窓の中の人ですら、まだこのあたりなら結構CooS頑張ってるんじゃね。

252:Be名無しさん
05/05/25 15:56:24
Singularityはインストール時にコンパイルするみたいだから面白みが無い

253:Be名無しさん
05/05/26 09:08:39
ひげぽんみたいにblogとかで開発日記とか書いたら面白そ

254:957 ◆KhjEefLZMk
05/05/26 20:49:02
就活終わったんでもうちょいしたら本格復帰したい…
TA×2、ゼミ×2ってのをなんとかしたいなあ。

>>253
開発日記はJITコンパイラができたら考える。
それまでは、初めてもネタ枯渇が激しそうだ。

255:Be名無しさん
05/05/26 23:12:08
作業日報でも書いとけばいいんでは。
後からまとめる時に便利だぞ。

まあ毎日ちゃんと書いとけばそんな事しなくてもいいんだが。


256:ITRON名無しさん ◆4WD27e3i1o
05/05/31 18:58:41
>>255
IPAへ提出する作業日報は1行形式なんでどうにでもなるじゃん。
成果報告書も(未踏の場合には)時系列の内容は問われないし。

でもまあ面が割れてるキャップでこれだけスレッドが続くなら、
blogに移行しても客はつくだろうって気はする。

257:255
05/05/31 22:18:19
>>256
いや、催促されてから一ヶ月分まとめて書いてたので、
最初の方なんてきれいさっぱり忘れてるんですよ。

適当に書くとさすがに辻褄あわなくなるし。


258:Be名無しさん
05/05/31 23:57:44
MSに就職して.NET OS作ってください

259:Be名無しさん
05/06/01 15:27:08
設計書もレポジトリに入れて毎日コミットすると良い

260:957 ◆KhjEefLZMk
05/06/02 15:12:33
>>225,256
いまはVis.Src.Safeのコミットログ見て作業内容思い出して書いてます。
ブログは・・・まあもうちょい考える。
最初は面白そうだけど、そのうち面倒になりそうw

>>258
MSでやっちゃうと微妙かも・・・。
国内企業でそーゆーことやるなら参加したいなあ。

>>259
いまのところ設計書というものは存在してません(^^;

261:957 ◆KhjEefLZMk
05/06/02 15:13:19
アンカーミス。。。
×225
>>255

262:Be名無しさん
05/06/18 17:08:36
ガーベジコレクタ は実装完了?

263:957 ◆KhjEefLZMk
05/06/19 01:27:53
まだまだJITですよ・・・・orz
6月は頑張ってるので徐々にできてきてますけど。
正直未踏期間中にガベコレあやしいかも・・・。

264:Be名無しさん
05/06/19 02:10:36
終わりが8末だっけ?そうなると成果報告会が8頭あたりか。
まだ一ヶ月以上あるじゃねーか。


265:957 ◆KhjEefLZMk
05/06/19 08:16:19
そういや成果発表会って期間中なんだ…。やべー。
ガベコレだけで一ヶ月以上かかるだろうし。
JITを頑張って偽GUIでも作った方がいいかな。

266:957 ◆KhjEefLZMk
05/06/20 17:36:30
JITの道は果てしなく遠い・・・。
まだまだ命令残ってます。ふぅ。

サイトのスクリーンショットを更新しました。
文字を描画した例ですが、ビットマップ貼り付けではなくてフォントレンダリングをしています。

次はJITの結果。前回と計算内容は同じ(nまでの総和)ですが、
f(x) -> if(x=0) 0 else g(x-1)
g(x) -> if(x=0) 0 else f(x-1)
としています。

非JIT:
x= 0, y= 0, time= 279539
x= 1, y= 1, time= 89514
x= 0, y= 0, time= 34952
x= 1, y= 1, time= 45110
x= 10, y= 55, time= 206745
x= 100, y= 5050, time= 1521466
x= 1000, y= 500500, time= 86041420
x=10000, y= 50005000, time= 8337842474

JIT付き:
x= 0, y= 0, time= 235569
x= 1, y= 1, time= 534712092
x= 0, y= 0, time= 44753
x= 1, y= 1, time= 46827
x= 10, y= 55, time= 74791
x= 100, y= 5050, time= 51128
x= 1000, y= 500500, time= 182096
x=10000, y= 50005000, time= 1134869

桁が3つくらい落ちますね。

267:Be名無しさん
05/06/20 18:23:37
単純な数値計算能力も大事だが、
仮想関数呼び出しやインターフェイス関数呼び出しはどうなの?

268:957 ◆KhjEefLZMk
05/06/20 18:47:26
そいつらはいまのところシステムコールにしちゃってるので遅いっす。
#システムコールまではまだコンパイルできないし。。。

原理的には、仮想関数呼び出しは4重間接アドレッシング呼び出しの機械語に展開できるはず。
インターフェイス関数の呼び出しは・・・システムコール挟まないと無理かも。

両方ともC++のvtable方式にすれば速くなるけど、CLI的には普通ではないので、やるとしてもずっと後かな。

269:Be名無しさん
05/06/20 19:13:32
>>266
> 文字を描画した例ですが、ビットマップ貼り付けではなくてフォントレンダリングをしています。
FreeType2とありますが、まさか.NETでリライトしたんですか!?

270:Be名無しさん
05/06/20 19:29:36
>>268
解説トンクス

271:957 ◆KhjEefLZMk
05/06/20 22:10:09
>>269
よくぞ聞いてくれました!w
それが Managed C++ でコンパイルしただけなんです。
#標準関数のたぐいは自力で用意して。
FreeTypeが標準関数にも依存しないようになっているので助かりました。

272:957 ◆KhjEefLZMk
05/06/20 22:21:11
>>270
C++では、インスタンスが仮想関数テーブル(vtable)の中に関数ポインタをすべて持っています。
これはインスタンスへのポインタがあれば仮想関数を使える一方、
同じ型のインスタンスが全く同じvtableを持っている=メモリが無駄と言えます。

もうひとつ、重要な特徴として、C++ではインスタンスのポインタが移動します。つまり、
class T : IX, IY
としたクラスについて、
T t;
IX* px = &t;
IY* py = &t;
の px と py は原則異なります。(メンバとか無いと同じかも。)

つづく

273:957 ◆KhjEefLZMk
05/06/20 22:26:30
.NETでは、インスタンスは型情報だけを持っていて、型情報に仮想関数テーブル(vtable)があります。
また、NETの場合は、C++のようにポインタが移動したりはしません。
移動してしまうと型情報の追跡が困難になるからです。

このとき、仮想関数は親クラスからの"多重継承のない"増加なので、
ある仮想関数のvtable内でのインデックスは一意に決めることが出来ます。
なぜなら、あるクラスで最初の仮想関数のインデックスは、(親の仮想関数の数)+1だからです。
これより、ある仮想関数のインデックスは、JITコンパイル時に決定可能です。
一意なインデックスで参照できるのであれば、多重間接参照でなんとかなりそうです。

しかし、インターフェイスの場合にはこのようにはいきません。
あるインターフェイス関数の位置は、それを実装するクラスによって異なるからです。
つまり、次の二つのクラス
class A : IX
class B : IY, IX
は両方ともIXを実装していますが、BのIXはより後方に位置しています。
この位置の違いは、
IX x = new A() または IX x = new B()
の x からJITコンパイル時に確定することは出来ません。

つまり、C++では、ポインタがインターフェイスのvtableへと移動することで仮想関数のvtable内インデックスを固定することが出来ましたが、
.NETではインターフェイスのvtableの位置が確定できないために、特別な処理を必要とします。

どうでしょ?

274:Be名無しさん
05/06/20 22:49:08
>>272-273
解説トンクス は267の返答ありがとうってことだったんだけど、
268の意味までご丁寧に説明してもらってありがとね。

折れには、大して説明できる能力ないので参考になるかもしれないリンクを。
知っていたらスマソ。

Java JIT について
URLリンク(logic.is.tsukuba.ac.jp)
URLリンク(www.research.ibm.com)

Direct Threaded Codeについて(命令ディスパッチの高速化)
URLリンク(www.complang.tuwien.ac.at)

275:957 ◆KhjEefLZMk
05/06/20 23:28:27
>>274
ぁ、勘違いでしたか…orz
まあメモ代わりということで(苦笑

リンク先はとても役に立ちそう・・・なのは大分先かもしれませんが、面白かったです。
最適化は茨の道らしいというのはよく分かったw さんくす~。

276:Be名無しさん
05/08/05 02:42:54
URLリンク(mitou.mysite.ddo.jp)
渋谷か…行けるかなあ。


277:957 ◆KhjEefLZMk
05/08/05 17:03:35
本人にも連絡来てないのに ∑(゚□゚

でもまだ19日か20日か決まってないみたいですね。早く決めてほしい。

278:Be名無しさん
05/08/08 00:22:49
>>277
最近のPoneytailOS開発状況は如何でしょうか?
お暇なときに、何か書き込んでいただけると嬉しいです。

279:957 ◆KhjEefLZMk
05/08/08 01:50:13
主に発表会のための開発になってしまっているので、なんかこう付け焼き刃的なのが遺憾なんですよね。

たとえばJITとかもせっかく作ったんだけど、発表会で動かすまでには至らなかったりで、インタープリタを地道にリファインしてたり。
あとはテキストだけだとインパクトがないので起動時からグラフィカルにして、ビットマップを軽く画面に出したりとか。
マウスとかを使えた方がいいかなと思ってドライバ書いたり。

残り時間が少ないので、その中でやれることをするとなると厳しいなあというのが正直なところです。
そろそろパワーポイントと併せて開発した方がプレゼン的にいいかなあ。
#つーかマジ夏休みなさそ・・・。

280:Be名無しさん
05/08/08 02:47:08
試験があるから勉強するというのもあながち悪いことではないから、
時には追いまくられるのも必要だな。

ガンガレ。超ガンガレ。

281:Be名無しさん
05/08/09 00:06:45
お忙しい中、書き込みどうも有難うございます。

在学中に、大人数の前で成果を発表する機会に恵まれることは、滅多に無いです。
全力で頑張って、世の中に貴方を知らしめてください。

282:957 ◆KhjEefLZMk
05/08/09 00:44:31
>>280
そうですね。
がんばります。

>>281
こちらこそ書き込んでいただいてお礼を言わないと。反応があるのは励みになります。
そんなに大層な人間でもないので、できる/できたことを精一杯伝えるしかないと思ってます。

283:Be名無しさん
05/08/09 07:11:08
就職しないで廃人になるまでこのOS作りこんでほしい

284:957 ◆KhjEefLZMk
05/08/10 23:49:30
C# ATAPIドライバが実機で動かなくてorzです。熱帯夜のせいで作業効率がいまいちなこのごろ。

発表が19日の16:50~17:30になりました。
一般公開されているし、会場が200人らしいのでたぶんひろびろしてそうです。
期待するほどのものではないと思いますが、お暇ならぜひ見に来てください。>みなさま

僕の趣味として、ぐたぐた語らずに質疑応答をなるべく増やした方がいいと思っているのですが、
これまでの感じだとそもそも質問が来ないのでどうしようかと思ってます。

(質疑応答の件に限らず)なんか発表について思うところがあれば書き込んでいただけると参考にします。

285:Be名無しさん
05/08/11 22:43:21
見に行けない漏れが言うのも何なのだが、
競合する研究(Singularityとか)との簡単な比較がほしいなぁと思う。

286:957 ◆KhjEefLZMk
05/08/16 20:42:27
Singularityのビデオがんばって観ました。
(たぶん3割くらいしか正確に分かってないので、漏れがあるのはご了承を。)

内容としてはCooSについて僕が言ってたことと変わりません。
フラットなメモリ空間やページテーブル、プロセス間通信、
例外による安全なエラー処理とか、まあそんなこと。
#50分あるので、全部書くのは辛いです。

観てて思ったんですが、僕は技術について話すより先に、そーゆーOSが必要とされると思うわけをもっと述べるべきなのかも。
上のビデオでは技術的な話よりも、Singularityの意義みたいなものの話が多かったです。
MS-Rのビデオを観るような人向けの説明でさえそうなんだから、未踏みたいな発表では記述について話すよりもそっちのが重要かもしれない。

うーん。

287:Be名無しさん
05/08/17 00:59:44
このプロジェクトが必要とされる背景とどのようなことが実現できるか?
ってのは確かに大事だな。

CLIでカーネルを記述することで、
カーネルコードの無効なメモリアクセス、型安全な実行が可能となる。
また、CLRがハードウェア資源を直接管理することで、
従来では不可能だった機能をアプリに提供することができる。

これを踏まえて、従来のC(or C++)によるOS開発の問題点を挙げ、
この仕組みでは、どのように解決できるのか?
そして、アプリケーション開発にどのような影響を与えるか?
etc

CooS開発という実体験を元に、
これらの話題を話すことができればよいのじゃないかと思う。

288:957 ◆KhjEefLZMk
05/08/17 02:46:39
遅レスだけど、>>283について。OSの成功には社会性も必要なんじゃないかな。
廃人はなんつーか3枚差しグラボというか5GHzPen4っていうか。

んで発表について迷い中。なにを中心に据えるか。

>>287さんも、CLI-OSについて理解していただけているようで嬉しい。
期せずも、前半は技術、後半は社会的側面について述べておられる。
未踏の発表は技術中心のものが多い。(じゃなけりゃ変に社会寄り。)

でもCLI-OSの技術は発明ではなくて単純化による洗練だから、新規性がない。
それぞれの技術についてはウェブがあるし、CooSとしてもサイトがあるから、発表会で技術に時間を割くべきなのか・・・。
それに僕はたぶんCooSというプログラムよりも、そこから得た(Singularityの中の人も言ってるような)社会的効果の方が重要であると思っているみたい。

いま社会的側面からパワポ作り始めてみたけど、ちょっと電波かもなあ。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch