【次世代言語】D言語でOSを作ろう【Monaの移植?】

このエントリーをはてなブックマークに追加
95デフォルトの名無しさん:2006/10/13(金) 01:36:30
IronD on .NET
96デフォルトの名無しさん:2006/10/14(土) 21:28:29
いきなりスケールのでかいスレタイでつね
97FD:2006/10/21(土) 16:18:40
D言語でOS作成ですか?面白い課題だと思います。
クラスを使用しなければ、C言語を少し柔軟にした言語使用なので、極端難しくないです。
参考するなら、C言語で書かれたOSソースを、D言語のプリプロセッサ機能を削除したソースへ置き換えることからはじめるのですかね?

組み込みOSでは基本的にC++特有な機能を使用しないのが一般的です。
コメントだけC++で中身C言語と言うものをよく見かけましたが・・・
98デフォルトの名無しさん:2006/10/21(土) 17:20:41
あれじゃね?
C言語で書かれたソースをD言語に変換するツール作成すれば一発じゃね?
99デフォルトの名無しさん:2006/10/21(土) 20:00:57
>>97
> 組み込みOSでは基本的にC++特有な機能を使用しない
組み込みだとサイズ/速度のオーバヘッドがデカいからじゃないかなあ。
100FD:2006/10/21(土) 20:45:20
>>99さん
それもありますが、newなどメモリのどこに配置されるか分からないので、メモリの制限された世界では使いにくいのです。
OSカーネルになれば、メモリ管理はレガシーな方法とった方が安全だからです。
ただし、しっかりとメモリ管理された環境下であればC++特有の機能は作る側に利点があると思います。
「しっかりとメモリ管理された環境」ですからカーネルの基本的な領域には適用しにくいです。
例えばC++で記述されたというL4Ka-Pistachioのソースを参照すると、
APIの領域(外向きの顔)はC++ポイですが、内部制御はC++と言うよりC言語です。
C++の仕様自体にC言語仕様を含んでいるから当然なんでしょうけど・・・

>>98さん
のいわれている通り非常に近い仕様ですから、可能だと思います。

カーネルでも基本的なところを製作後は、言語仕様に関係なく開発できるのがベストだと思います。
D言語が優れているところはC言語より柔軟であると言うところ、プリプロセッサ機能を搭載していたら、そのままD言語に移行できてしまいます。

なお、D言語でもいいですけど、日本でカーネルを再勉強できる機会は少ないです。
OSを作ると言う企画は面白いと思います。
まずは、簡単な部分から作らないといけませんね。
私も個人的に勉強したい領域です。
101デフォルトの名無しさん:2006/10/24(火) 01:34:37
>>100
>メモリ管理
Cよりは柔軟な罠。newはオーバーロード出来るもの。
コンパイラと人間で責任もって書けばいいだけなんだけどな。

ところで、このスレの元ネタでもあるMonaは知ってる?
元々はム板にあったんだけど、嵐に粘着されてOS板やsiberiaへ亡命しちゃった。
http://wiki.monaos.org/pukiwiki.php?FrontPage
http://pc8.2ch.net/test/read.cgi/os/1138681234/
http://etc3.2ch.net/test/read.cgi/siberia/1136088527/
102デフォルトの名無しさん:2007/01/09(火) 06:23:10
がんばれ
103デフォルトの名無しさん:2007/01/11(木) 12:13:59
>>101
組込みはメモリの動的管理自体をやらないやつらが多い。
あらかじめ最大値を決めてそのサイズ分確保してる。
104デフォルトの名無しさん:2007/01/12(金) 00:46:07
組み込みの場合、何よりも「落ちないことが保障できる」ことが重要だからな。
105デフォルトの名無しさん:2007/04/30(月) 11:25:28
さらに言うと

「落ちても速やかに復帰して動き続ける」

だよな
106デフォルトの名無しさん:2007/06/29(金) 16:04:05
つーか組み込みは、やる事決まってるからだろ
107デフォルトの名無しさん:2007/07/11(水) 23:37:40
MoNaじゃなくてBSDをDで再実装なら協力する。
108デフォルトの名無しさん:2007/07/11(水) 23:47:03
>>101
ガベコレの問題が有って、今のガベコレ言語は、

帆にゃらら言語のアプリ→OSへのメモリ要求
帆にゃらら言語のアプリ→OSからもらったメモリをゴミ扱いにする
帆にゃらら言語のアプリのガベコレ→さっきゴミにしたメモリを再利用可能ににする

ってな流れだけど、DでOSを書くと言うことはこのOSに頼んでる部分を書く必要が有って、
でも、DでOS書く訳で。と言うループに陥らないために

OSのメモリ管理=D言語のメモリ管理という部分を設計してしまう必要が有るわけ。
手を抜こうと思えば、抜けるけども。
109デフォルトの名無しさん:2007/08/26(日) 07:07:10
/
110デフォルトの名無しさん:2007/08/26(日) 08:06:04
これって実は言語とかは全然関係なくて、
GC用ヒープがシステムメモリとして何百メガか確保されるだけでは?
ただ、これだとアルゴリズムがコンカレントGCしか選択できないな。
111デフォルトの名無しさん:2007/09/06(木) 22:17:18
age
112デフォルトの名無しさん:2007/09/11(火) 22:09:02
今のGCって論理アドレス空間で整頓してるんだよね?
カーネルだと物理アドレス空間を触ることになると思うんだけど、
そっちだとより効率的にメモリを整頓できたりするの?
113デフォルトの名無しさん:2007/09/16(日) 15:24:08
むしろ、このマルチコア時代には、1CPUを丸々メモリ管理に割り当ててもいいんじゃないかと思ってる。
114デフォルトの名無しさん:2007/09/18(火) 00:36:29
>>113
それだとキャッシュ効率が悪過ぎる
115デフォルトの名無しさん:2007/09/23(日) 12:49:14
>>62
初めて来たけどこれObjC組み込めるのか?
期待age
116デフォルトの名無しさん:2007/09/23(日) 12:50:31
sageてしまったorz
117デフォルトの名無しさん:2007/12/05(水) 21:40:57
保守
118デフォルトの名無しさん:2007/12/05(水) 22:05:50
そういや任天堂がC++のOS作ってたね。ライセンスは知らんが成果も発表してた気が。
任天堂なら作れるかも
119デフォルトの名無しさん:2007/12/13(木) 09:36:12
C++のOSって既にあった気がするんだが
120デフォルトの名無しさん:2007/12/13(木) 09:56:32
まさか Mona とか
121デフォルトの名無しさん:2007/12/13(木) 09:59:43
実装は知らんがインターフェースがC++だったのはBeOS
122デフォルトの名無しさん:2007/12/13(木) 15:55:27
Nintendo esだろ
123119:2008/01/07(月) 14:54:13
>121
ああそれそれ。あくまでインターフェイスの話なのか、あれ。



ところで D で TRON ってどうよ、とかいう無茶振りをしてみるテスツ
124デフォルトの名無しさん:2008/01/07(月) 20:34:20
今更使い道はないんじゃない?
TRONの需用自体がITRONくらいで、そこにGCはヘビーかと。
125デフォルトの名無しさん:2008/01/07(月) 21:39:57
携帯でも Java なんだから gc がヘビーってこともない機器もあるかも
126デフォルトの名無しさん:2008/01/07(月) 22:19:55
そこであえて超漢字を
127デフォルトの名無しさん:2008/01/09(水) 03:30:00
携帯の Java は PC みたいに軽くないので、昔のBasicみたいにクラス作らないでかく
128デフォルトの名無しさん:2008/01/09(水) 21:18:23
Basicを引きあいに出さなくてもCでいいんじゃね?
129デフォルトの名無しさん:2008/03/08(土) 10:53:23
>>125
そうでもない。
最近の携帯は、かなり軽いよ。

今、携帯Java(MIDP2.0)上でJavaベースのOS作ってるよ。
うまく行けば、このOSの上にJava2SE実装して、パソコン用のソフトも使えるようにしたいな。
130デフォルトの名無しさん:2008/03/08(土) 13:36:06
131デフォルトの名無しさん:2008/04/15(火) 13:15:53
結局OS作れませんでしたスレか
132デフォルトの名無しさん:2008/12/06(土) 21:15:42
133デフォルトの名無しさん:2009/01/20(火) 01:22:36
134デフォルトの名無しさん:2009/07/21(火) 17:53:46
D言語ってガーベージコレクションもってるよね。
これって、どう動くかと言えば

 <====メモリ===>      <====メモリ===>
 アプリケーション1+ガベコレコード アプリケーション2+ガベコレコード
      ↑↓
      OS
<■■■■■■■■■■■■■■■■■■■■■■■■■■■>
           実メモリー
というイメージになることが多いと思うんだけど、
(最近だとこの辺はもうすごく手が入っててイメージです状態だろうけど
アプリからリニアにアドレスが見えるわけだし、ガベコレはそのリニアアドレス
を操作してるんだからこうだよね)

でも、これを

 <====メモリ===> <====メモリ===>
 アプリケーション1      アプリケーション2
            ↑↓
      OS+カーネルが各アプリのガベコレを制御
<■■■■■■■■■■■■■■■■■■■■■■■■■■■>
           実メモリー
ということになれば、マルチスレッド、マルチコア、マルチキャッシュの
cpuでのパフォーマンス的にも色々と行けるような気がするのね。
もうね、まったく新しいosというレベル。
目指すならここを目指すべきだと思う。
135デフォルトの名無しさん:2009/07/24(金) 20:19:35
D言語の中の人の主張はそれだけどね。
何で俺が言語にGCを実装しなきゃいけないんだって人。
136デフォルトの名無しさん:2009/08/01(土) 22:01:04
D用のGUI・画像・ファイル処理系のライブラリが充実されたら手を出してやる
137デフォルトの名無しさん:2009/08/01(土) 23:22:16
C用のGUI・画像・ファイル処理系のライブラリが充実してる
138デフォルトの名無しさん:2009/08/10(月) 12:49:13
age
139デフォルトの名無しさん:2009/08/11(火) 12:41:47
プロセスを作成したらヒープを作成して、
システムコールを呼んだら、ヒープ内にメモリブロックを確保したり解放したりして、
プロセスが終わったら、ヒープを解放する。
140デフォルトの名無しさん:2009/08/11(火) 13:48:50
それから動的にメモリを確保するときにシステムコールを呼ぶように、D言語自体を書き換えすることが必要。
141デフォルトの名無しさん:2009/08/11(火) 14:11:54
>>140
お前D言語のこと何も知らずに書いてるだろ
言語自体なんか書き換えなくてもPhobosの書き換えで済む
142デフォルトの名無しさん:2009/08/11(火) 20:35:06
>>140
メモリ確保ごとにシステムコールってどんなネタだよ
143デフォルトの名無しさん:2009/08/27(木) 18:55:58
Schemeってガーベージコレクションもってるよね。
これって、どう動くかと言えば

 <====メモリ===>      <====メモリ===>
 アプリケーション1+ガベコレコード アプリケーション2+ガベコレコード
      ↑↓
      OS
<■■■■■■■■■■■■■■■■■■■■■■■■■■■>
           実メモリー
というイメージになることが多いと思うんだけど、
(最近だとこの辺はもうすごく手が入っててイメージです状態だろうけど
アプリからリニアにアドレスが見えるわけだし、ガベコレはそのリニアアドレス
を操作してるんだからこうだよね)

でも、これを

 <====メモリ===> <====メモリ===>
 アプリケーション1      アプリケーション2
            ↑↓
      OS+カーネルが各アプリのガベコレを制御
<■■■■■■■■■■■■■■■■■■■■■■■■■■■>
           実メモリー
ということになれば、マルチスレッド、マルチコア、マルチキャッシュの
cpuでのパフォーマンス的にも色々と行けるような気がするのね。
もうね、まったく新しいosというレベル。
目指すならここを目指すべきだと思う。
144デフォルトの名無しさん
GikoOS