【次世代言語】D言語でOSを作ろう【Monaの移植?】
1 :
デフォルトの名無しさん:
4 :
デフォルトの名無しさん:2005/10/09(日) 03:39:38
D自体微妙なのに。
微妙なの?
Phobosをどこで動かすんだろう
ふむぅ…
アセンブラなりCなりC++なりで書かれたマイクロカーネルなOSをベースにサブシステムをD言語で作るというのが現実的っぽい。(ってよりも個人的にそれで満足だけど)
どのマイクロカーネルを元にするのがいいか、その場合のDコンパイラやPhobosをどのぐらいごにょる必要があるかを考えた方がいいのかな。
9 :
デフォルトの名無しさん:2005/10/09(日) 04:22:46
そういや、最近触ってなかったんだけど、D言語って仕様は安定したの?
(まだ正式版(1.0)もリリースされていないみたいだけどさ)
普及してないだけか。
所詮シェアウェア厨のオナニー言語ですから
マイクロカーネルで有名な物はMachとL4があると。
L4をベースにして見たいけどまだ検討中。
13 :
デフォルトの名無しさん:2005/10/09(日) 05:00:17
VB6しかやったことないけど、おれも協力するよ!
>>13 D言語とcygwinが使えるなら大歓迎さ!
サービスをユーザーモードで走らせるかカーネルモードで走らせるか
ユーザーモードだとスピードが落ちるらしい。
カーネルモードはメモリ保護機構がないため危険。
だけどD言語だったらサービス自体もカーネルモードで大丈夫な気がする。(変な事しなければいいんだし…)
後はソースを見てどこからとっかかる and 調べるかだな…
16 :
デフォルトの名無しさん:2005/10/09(日) 08:27:29
OSがGCを実装してアプリはメモリ使いまくりがDの理想らしいじゃん
OSがGCサポートしてればDはいらん
17 :
13:2005/10/09(日) 10:23:51
>>14 VBしかできねーっていってんだろ。なめてんのか、あぁ?
VBでOS?
VBでVBのコンパイラを書いて、VBで出来たカーネルコードを(ry
20 :
13:2005/10/09(日) 12:36:43
とりあえず何を作るの?
100 REM BASIC デ OS
110 PRINT "KawaisOS Ver.-1 (´・ω・)"
120 INPUT "C> "; A$
130 PRINT "コマンドまたはファイル名が違います."
140 GOTO 120
>>21 1.GCを動くようにする
2.D言語で下位互換性無視してクラスでいろいろ実装
ってかマイクロカーネルを使ってモノリシックカーネルを作ればGCも簡単に動くであろう…と思うんだけど
後、プログラムが動く上で必要なGCは一つだけなんだから(ry
取り合えず暇な時にマイクロカーネルのソースを読もうと思います。
ひげぽんは最初JavaでOSを作ろうとしたみたいだよ。
今頃になってJavaをネイティブコンパイルしてMonaを書き換える動きが出てきたけど
ひげぽんは興味がないみたいだね。
>>11 それはひげぽんが師匠と仰ぐ屋根裏のことか?
最終的に機械語なりアセンブリ言語なりを吐くことさえできれば、
何のプログラミング言語でも*理論上*は可能。
作成する本人に言語処理系を作成する能力があれば、普通にどんな言語でも出来るだろ。
HSP、なでしこ、その他何でもOKだろ。
29 :
デフォルトの名無しさん:2005/10/09(日) 21:30:59
MonaOSを移植するの?
それとも、完全オリジナルのOSを造るの?
言い方が悪かったな。
極論すればファイル入出力と文字列処理ができる言語であれば良い。
D言語いいんだけど、
>>9が言うように正式版が無いってのが不安。
処理系の変化にどこまで追従するのか。
GCとスレッド周りの扱いさえ決めれば問題無く使えると思うよ。
33 :
デフォルトの名無しさん:2005/10/10(月) 12:41:28
俺が新しい言語Φを作ろうと思っているんだが誰か乗らないか?
>>15 ここでいっその事x86アーキテクチャ全開でリング1〜リング4を使い切るというのはどうだ?
Dで作ったOS
↓
D+OS
↓
DOS
どうせならマルチCPUを使い切る言語きぼんぬ
38 :
デフォルトの名無しさん:2005/10/10(月) 15:18:22
とりあえず
>>1はトリップつけて、サイトを立ち上げてくらはい。
>>1はD言語の糞GC仕様を知ってて言ってるのかねえ
Dにそこまで入り込むだけの価値なんてあるか?
そこにDがあるから。
C#のOS -> CooS
D のOS -> DooS?
>>41 D言語のためにC++を排除してC言語に固執する意味が分からん。
extern "C"にしておけばC++がC言語に比べて障害になることはない。
マングリング規則が違うからC++とD言語でクラスを混ぜることはできないが
それを言ったらC言語にはクラス自体がないから悩まないだけだろ。
>>41 メモリ管理とシステムコールとGCとか言っている時点でOSが必要でしょ。
ベースOSをMonaにしたら
ttp://wiki.monaos.org/index.php?gdc でやってることと
全くかわらないでしょ。まずはサーバーとアプリを全部D言語にしてから
カーネル周りのD言語化を考えたら?
あとわざわざCにする理由がわからん。だったらMonaじゃなくAntOSとか他のOS使ったら?
>>46 C言語で作成するのは、GCだとかのランタイム機能だけだろ。
あとは、すべてD言語で書くのだろう。
他言語で作成する必要があるGCだとかは、オブジェクト指向的な作りに出来ないだろう。
それなら、わざわざハマリどころの多いC++で、
苦労して作成する必要性はどこにもない。
自動的にガベコレを埋め込むDの仕様からして
OSになることはできないんじゃないのかい?
DのガベージコレクタってDで書いあるんじゃないけ
D言語とアセンブリ言語だけで全部記述出来るじゃん。
>>48 > C言語で作成するのは、GCだとかのランタイム機能だけだろ。
↓のことを指しているかと。
>>41 MonaのコアをCに書き換えて使うのもいいかな
> 他言語で作成する必要があるGCだとかは、オブジェクト指向的な作りに出来ないだろう。
Monaでgcjのために用意されたGCはC++で書かれている。
>>49 アセンブリに埋め込まれるわけではない。
メモリ確保時に呼ばれる関数から適宜GCに振り分けてるだけ。
その関数をどう実装するかが肝。
面倒ならGCをやめてdeleteを書かせることすら可能。
D言語の優位性はGCだけではないから
GCがないとD言語の意味がないとまでは思わない。
もちろんユーザーランドではなくカーネル限定なので誤解なきよう。
GD
1はOSとか言う前にDは一通り使いこなせてるのか?
glExcessの移植程度のことはできるんだろうな?
ま た ネ タ か ! !
個人的にはLISPかSchemeで今風のOS作ってみて欲しい。
>>41 リングじゃ無くて特権レベル0〜3だな
簡単にいうとx86は68000系のようにユーザーモード/カーネルモードの切替が2段階じゃなくて、特権レベル0〜3までの4段階持てる
その特権レベルの事をリングって言うんだよボケ
ああ、あれか、経産婦が避妊に使うやつか。
>>3 心配しなくてもC++でも使えないから
cc1plus: warning: command line option "-ffreestanding" is valid for C/ObjC but not for C++
63 :
1:2005/10/26(水) 18:03:01
取り合えずage
sageてるがな
まったく進まんけどなんか期待
保守
67 :
デフォルトの名無しさん:2006/01/02(月) 18:28:49
D ver.0.100!!!
68 :
デフォルトの名無しさん:2006/01/02(月) 21:39:21
全部Dで作ってこそ意味があるのでは?
69 :
デフォルトの名無しさん:2006/01/07(土) 12:26:24
保守
70 :
デフォルトの名無しさん:2006/01/15(日) 03:02:35
保守
71 :
デフォルトの名無しさん:2006/01/15(日) 13:00:19
age
72 :
デフォルトの名無しさん:2006/01/15(日) 17:00:32
発想が逆だ。言語はOSというソフトの仕様を満たすための手段だ。
始めに言語ありきで話を進めたら言語に縛られた貧相なものしか出来ないぞ。
まずOSの仕様を考えて、それを作るために言語を新たに作るぐらいで
なければいかんだろう。C言語だってそれで出来たんだしな。
73 :
デフォルトの名無しさん:2006/01/15(日) 17:54:45
そう、C言語はUNIXを作るために生まれたんだ!
C++やJavaがいくら攻勢を見ようとも、未だに元祖Cが使われている理由がまさにこれ。
74 :
デフォルトの名無しさん:2006/01/15(日) 19:53:57
これから作る新機能満載なOSにはそれを使えば簡単に書けるというような新たな言語が必要だ。
従来の殻を破るには根本から変えるしかない。第二の Linux や Windows を作りたいなら
それでもいいが、そんな車輪の発明は誰も欲しがらないだろう。もっと根底から考え直さねば
駄目だ。
JavaはJavaVMを作るために作られた訳だが
_,、-‐‐'ー- 、,_ヽ_
/ ,、 -‐ ''"´;: ; ヽ
/ / ,、‐''"´´ ;: ;;`ヽ
/ (/ ,、-‐''"´´ _, ,丶 そおおおんあわけねええだろぉ?
i (ゝ /, , 、ー''"、´ _ヽ
| /'''_ー-<___, -'´ lー''"ノ ヽ. , へ、 _
、 'l { `ヽ;ー-、-,ー‐,r''1 ; ;ヽ<''ヘ ヽー---‐'''"""""
r、 iヽ ヽ' `' .|、 ,. | |
{λヽ.ヽ ,,ソ ヽ-' t' __ノ ,______
\ゝ、iヽー '`ー'''`1´ ~ヽ、、、/~  ̄ ̄,~"=
、‐'''''ヽ `'ヘ.',ヽ , 、 { ,、- '´
/ \ ヾ ヽ⌒ヽ ヽ { , ‐、_ /
. | ゛‐-ー'.,!\\__ `ヽ. ,、 / `'´ ,
、 / / | \ \゛、ー'>' ノrー' ´ | , /
r; / / |\,_\ `""´r''| ト、 | | /
i / | フ 丶、___ノヽ. |/ / /
rヽ\ ( | ,ヘ | | ヽ \ ‖/ /
非チューリングマシンで動くOSきぼう
このスレって、なにか成果があがることを期待していいんですか?
D言語は当分完成しないみたいだからFreePascalで作って
>>79 GCCにPASCALなかったっけ? あれじゃ駄目?
81 :
デフォルトの名無しさん:2006/01/28(土) 20:12:04
やっぱりDだったのか。。。
82 :
デフォルトの名無しさん:2006/02/15(水) 15:56:11
保守
83 :
デフォルトの名無しさん:2006/02/21(火) 23:45:08
何故わざわざD言語なんだ?wwwww
84 :
デフォルトの名無しさん:2006/04/09(日) 14:46:13
保守
85 :
デフォルトの名無しさん:2006/04/12(水) 00:10:33
既存OSをD言語で作り変えることは、D言語の魅力/問題を洗い出すという目的において良い課題であると思うけどね。
OSってどのレイヤーを指してるのかと思ったらカーネル作ろうっての?
マイクロカーネルなだけで遅いのにしかもD言語。
ライブラリ整備するほうが先でしょ
ていうかDが1.0になるのが先w
>>1はどうした?
Dの悲惨な現状を知って(僕は知らないけど)にげたか?
age
90 :
デフォルトの名無しさん:2006/10/02(月) 23:09:35
hage
CP/M ++ → DQ/N
DQN-OS
すげー
93 :
デフォルトの名無しさん:2006/10/04(水) 02:55:51
D言語は、1.0がリリースされるよりも早くMSが買い取るかも。
MS-D コンパイラってね。
手厚いMS印のサポートが期待できる。
DotNETになるだけだろ
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言語に変換するツール作成すれば一発じゃね?
>>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を作ると言う企画は面白いと思います。
まずは、簡単な部分から作らないといけませんね。
私も個人的に勉強したい領域です。
102 :
デフォルトの名無しさん:2007/01/09(火) 06:23:10
がんばれ
>>101 組込みはメモリの動的管理自体をやらないやつらが多い。
あらかじめ最大値を決めてそのサイズ分確保してる。
組み込みの場合、何よりも「落ちないことが保障できる」ことが重要だからな。
さらに言うと
「落ちても速やかに復帰して動き続ける」
だよな
つーか組み込みは、やる事決まってるからだろ
MoNaじゃなくてBSDをDで再実装なら協力する。
>>101 ガベコレの問題が有って、今のガベコレ言語は、
帆にゃらら言語のアプリ→OSへのメモリ要求
帆にゃらら言語のアプリ→OSからもらったメモリをゴミ扱いにする
帆にゃらら言語のアプリのガベコレ→さっきゴミにしたメモリを再利用可能ににする
ってな流れだけど、DでOSを書くと言うことはこのOSに頼んでる部分を書く必要が有って、
でも、DでOS書く訳で。と言うループに陥らないために
OSのメモリ管理=D言語のメモリ管理という部分を設計してしまう必要が有るわけ。
手を抜こうと思えば、抜けるけども。
109 :
デフォルトの名無しさん:2007/08/26(日) 07:07:10
/
これって実は言語とかは全然関係なくて、
GC用ヒープがシステムメモリとして何百メガか確保されるだけでは?
ただ、これだとアルゴリズムがコンカレントGCしか選択できないな。
111 :
デフォルトの名無しさん:2007/09/06(木) 22:17:18
age
今のGCって論理アドレス空間で整頓してるんだよね?
カーネルだと物理アドレス空間を触ることになると思うんだけど、
そっちだとより効率的にメモリを整頓できたりするの?
むしろ、このマルチコア時代には、1CPUを丸々メモリ管理に割り当ててもいいんじゃないかと思ってる。
>>62 初めて来たけどこれObjC組み込めるのか?
期待age
116 :
デフォルトの名無しさん:2007/09/23(日) 12:50:31
sageてしまったorz
保守
118 :
デフォルトの名無しさん:2007/12/05(水) 22:05:50
そういや任天堂がC++のOS作ってたね。ライセンスは知らんが成果も発表してた気が。
任天堂なら作れるかも
C++のOSって既にあった気がするんだが
まさか Mona とか
実装は知らんがインターフェースがC++だったのはBeOS
122 :
デフォルトの名無しさん:2007/12/13(木) 15:55:27
Nintendo esだろ
123 :
119:2008/01/07(月) 14:54:13
>121
ああそれそれ。あくまでインターフェイスの話なのか、あれ。
ところで D で TRON ってどうよ、とかいう無茶振りをしてみるテスツ
今更使い道はないんじゃない?
TRONの需用自体がITRONくらいで、そこにGCはヘビーかと。
携帯でも Java なんだから gc がヘビーってこともない機器もあるかも
そこであえて超漢字を
携帯の Java は PC みたいに軽くないので、昔のBasicみたいにクラス作らないでかく
Basicを引きあいに出さなくてもCでいいんじゃね?
>>125 そうでもない。
最近の携帯は、かなり軽いよ。
今、携帯Java(MIDP2.0)上でJavaベースのOS作ってるよ。
うまく行けば、このOSの上にJava2SE実装して、パソコン用のソフトも使えるようにしたいな。
131 :
デフォルトの名無しさん:2008/04/15(火) 13:15:53
結局OS作れませんでしたスレか
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を実装しなきゃいけないんだって人。
D用のGUI・画像・ファイル処理系のライブラリが充実されたら手を出してやる
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言語自体を書き換えすることが必要。
>>140 お前D言語のこと何も知らずに書いてるだろ
言語自体なんか書き換えなくてもPhobosの書き換えで済む
>>140 メモリ確保ごとにシステムコールってどんなネタだよ
143 :
デフォルトの名無しさん:2009/08/27(木) 18:55:58
Schemeってガーベージコレクションもってるよね。
これって、どう動くかと言えば
<====メモリ===> <====メモリ===>
アプリケーション1+ガベコレコード アプリケーション2+ガベコレコード
↑↓
OS
<■■■■■■■■■■■■■■■■■■■■■■■■■■■>
実メモリー
というイメージになることが多いと思うんだけど、
(最近だとこの辺はもうすごく手が入っててイメージです状態だろうけど
アプリからリニアにアドレスが見えるわけだし、ガベコレはそのリニアアドレス
を操作してるんだからこうだよね)
でも、これを
<====メモリ===> <====メモリ===>
アプリケーション1 アプリケーション2
↑↓
OS+カーネルが各アプリのガベコレを制御
<■■■■■■■■■■■■■■■■■■■■■■■■■■■>
実メモリー
ということになれば、マルチスレッド、マルチコア、マルチキャッシュの
cpuでのパフォーマンス的にも色々と行けるような気がするのね。
もうね、まったく新しいosというレベル。
目指すならここを目指すべきだと思う。
144 :
デフォルトの名無しさん:
GikoOS