5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2005/10/09(日) 03:00:38
次世代言語、インラインアセンブラも仕様レベルでサポートしているD言語でOSを作ろうというスレ。
D言語は文字列がnull終端でないのでその部分はC言語と互換性がありません。
またC++とは一切互換性がないので他のライブラリのクラスを使ったアプリを作るのは非常に面倒です。
なのでOSから作ってしまおうというプロジェクト。(単にgtkをD言語に移植すればいいだけというのは置いといて)
ちなみに折れはブートローダーの作り方も分かりませんのでOSを作ろうの過去ログを見てる所

■関連サイト
MONAソースコード解析
http://tkralia.hp.infoseek.co.jp/mona/
Yamami-Open
http://f38.aaa.livedoor.jp/~yamami/pukiwiki/pukiwiki.php?Yamami-Open

■関連スレ
【char[] str】 D言語 Part7 【str ~= "nullpo"】
http://pc8.2ch.net/test/read.cgi/tech/1122912733/
OSを作ろうpart12
http://pc8.2ch.net/test/read.cgi/os/1108836476/
OSを作ろうpart14 Mona専用
http://pc8.2ch.net/test/read.cgi/os/1127467365/

95 :デフォルトの名無しさん:2006/10/13(金) 01:36:30
IronD on .NET

96 :デフォルトの名無しさん:2006/10/14(土) 21:28:29
いきなりスケールのでかいスレタイでつね

97 :FD: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++特有な機能を使用しない
組み込みだとサイズ/速度のオーバヘッドがデカいからじゃないかなあ。


100 :FD: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だろ

123 :119: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
http://www.geocities.jp/tor_park/Dlang/byte.html

131 :デフォルトの名無しさん:2008/04/15(火) 13:15:53
結局OS作れませんでしたスレか

132 :デフォルトの名無しさん:2008/12/06(土) 21:15:42
http://extjs.com/deploy/dev/examples/desktop/desktop.html [extjs.com] こういうのは?

133 :デフォルトの名無しさん:2009/01/20(火) 01:22:36
http://pc11.2ch.net/test/read.cgi/cg/1046440380/116

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 :デフォルトの名無しさん:2010/02/15(月) 06:12:15
GikoOS

32 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)