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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
次世代言語、インラインアセンブラも仕様レベルでサポートしている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/
2デフォルトの名無しさん:2005/10/09(日) 03:06:14
>>2
華麗に 2get
3デフォルトの名無しさん:2005/10/09(日) 03:35:34
Bochs
http://bochs.sourceforge.net/
Higepos(Monaの古いコード?)
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/higepos/higepos/src/

リンカオプション
http://pc3.2ch.net/tech/kako/1024/10244/1024411711.html
678〜
>ld -Ttext 0x100000 --oformat binary -o
>ld -o xxx -Ttext 0x0 -e main xxxx.o

コンパイラオプション
http://pc3.2ch.net/tech/kako/1027/10270/1027080631.html
>gcc -c -ffreestanding -Wall kernel.c
>strip --output-target=binary kernel.o
D言語に-ffreestanding相当の物はあるのか?
まぁ無くてもC言語でD言語のD_main辺りを呼ぶブリッジを作成すれば出来そう。
4デフォルトの名無しさん:2005/10/09(日) 03:39:38
D自体微妙なのに。
5デフォルトの名無しさん:2005/10/09(日) 03:57:44
微妙なの?
6デフォルトの名無しさん:2005/10/09(日) 04:07:00
リンカの順序について
http://pc3.2ch.net/tech/kako/1027/10270/1027080631.html
100辺り〜
>リンカスクリプトで、コードセグメントを先頭に持っていく

C++のnew/deleteについて
http://pc3.2ch.net/tech/kako/1027/10270/1027080631.html
157〜
D言語の場合…メモリ管理部分がどうなるんだろう…?
メモリ管理部分を先に実装し後はクラス/GCを使っていきたいけどDコンパイラがどの程度依存してるのかその辺が分からない。

>>4-5
微妙ではないけどC言語との互換性の面からあまり使われていない。
C#やJAVAのネイティブ版って感じ。
7デフォルトの名無しさん:2005/10/09(日) 04:11:01
Phobosをどこで動かすんだろう
8デフォルトの名無しさん:2005/10/09(日) 04:20:53
ふむぅ…
アセンブラなりCなりC++なりで書かれたマイクロカーネルなOSをベースにサブシステムをD言語で作るというのが現実的っぽい。(ってよりも個人的にそれで満足だけど)
どのマイクロカーネルを元にするのがいいか、その場合のDコンパイラやPhobosをどのぐらいごにょる必要があるかを考えた方がいいのかな。
9デフォルトの名無しさん:2005/10/09(日) 04:22:46
そういや、最近触ってなかったんだけど、D言語って仕様は安定したの?
(まだ正式版(1.0)もリリースされていないみたいだけどさ)
10デフォルトの名無しさん:2005/10/09(日) 04:24:44
普及してないだけか。
11デフォルトの名無しさん:2005/10/09(日) 04:36:38
所詮シェアウェア厨のオナニー言語ですから
12デフォルトの名無しさん:2005/10/09(日) 04:50:38
マイクロカーネルで有名な物はMachとL4があると。
L4をベースにして見たいけどまだ検討中。
13デフォルトの名無しさん:2005/10/09(日) 05:00:17
VB6しかやったことないけど、おれも協力するよ!
14デフォルトの名無しさん:2005/10/09(日) 05:02:50
>>13
D言語とcygwinが使えるなら大歓迎さ!
15デフォルトの名無しさん:2005/10/09(日) 05:17:50
サービスをユーザーモードで走らせるかカーネルモードで走らせるか
ユーザーモードだとスピードが落ちるらしい。
カーネルモードはメモリ保護機構がないため危険。
だけどD言語だったらサービス自体もカーネルモードで大丈夫な気がする。(変な事しなければいいんだし…)
後はソースを見てどこからとっかかる and 調べるかだな…
16デフォルトの名無しさん:2005/10/09(日) 08:27:29
OSがGCを実装してアプリはメモリ使いまくりがDの理想らしいじゃん
OSがGCサポートしてればDはいらん
1713:2005/10/09(日) 10:23:51
>>14
VBしかできねーっていってんだろ。なめてんのか、あぁ?
18デフォルトの名無しさん:2005/10/09(日) 11:20:45
VBでOS?
19デフォルトの名無しさん:2005/10/09(日) 12:31:09
VBでVBのコンパイラを書いて、VBで出来たカーネルコードを(ry
2013:2005/10/09(日) 12:36:43
>>19
うっせーばーか
ウシャシャシャシャシャ
21デフォルトの名無しさん:2005/10/09(日) 14:26:27
とりあえず何を作るの?
22デフォルトの名無しさん:2005/10/09(日) 14:44:40
100 REM BASIC デ OS
110 PRINT "KawaisOS Ver.-1 (´・ω・)"
120 INPUT "C> "; A$
130 PRINT "コマンドまたはファイル名が違います."
140 GOTO 120
23デフォルトの名無しさん:2005/10/09(日) 15:40:20
>>21
1.GCを動くようにする
2.D言語で下位互換性無視してクラスでいろいろ実装

ってかマイクロカーネルを使ってモノリシックカーネルを作ればGCも簡単に動くであろう…と思うんだけど
後、プログラムが動く上で必要なGCは一つだけなんだから(ry
取り合えず暇な時にマイクロカーネルのソースを読もうと思います。
24デフォルトの名無しさん:2005/10/09(日) 17:25:14
ひげぽんは最初JavaでOSを作ろうとしたみたいだよ。
今頃になってJavaをネイティブコンパイルしてMonaを書き換える動きが出てきたけど
ひげぽんは興味がないみたいだね。
25デフォルトの名無しさん:2005/10/09(日) 17:26:33
>>11
それはひげぽんが師匠と仰ぐ屋根裏のことか?
26デフォルトの名無しさん:2005/10/09(日) 17:44:12
>>19
絵空事前提で書いてるみたいだけどやろうと思えばできることだから。
ttp://nienie.com/~masapico/doc_MakeExe.html
27デフォルトの名無しさん:2005/10/09(日) 20:37:45
最終的に機械語なりアセンブリ言語なりを吐くことさえできれば、
何のプログラミング言語でも*理論上*は可能。
28デフォルトの名無しさん:2005/10/09(日) 21:17:48
作成する本人に言語処理系を作成する能力があれば、普通にどんな言語でも出来るだろ。
HSP、なでしこ、その他何でもOKだろ。
29デフォルトの名無しさん:2005/10/09(日) 21:30:59
MonaOSを移植するの?
それとも、完全オリジナルのOSを造るの?
30デフォルトの名無しさん:2005/10/09(日) 22:24:51
>>27
ダウト
31デフォルトの名無しさん:2005/10/09(日) 23:00:10
言い方が悪かったな。
極論すればファイル入出力と文字列処理ができる言語であれば良い。
32デフォルトの名無しさん:2005/10/10(月) 03:04:31
D言語いいんだけど、>>9が言うように正式版が無いってのが不安。
処理系の変化にどこまで追従するのか。
GCとスレッド周りの扱いさえ決めれば問題無く使えると思うよ。
33デフォルトの名無しさん:2005/10/10(月) 12:41:28
俺が新しい言語Φを作ろうと思っているんだが誰か乗らないか?
34デフォルトの名無しさん:2005/10/10(月) 12:59:08
>>33
まんこ?
35デフォルトの名無しさん:2005/10/10(月) 13:10:32
>>15
ここでいっその事x86アーキテクチャ全開でリング1〜リング4を使い切るというのはどうだ?
36デフォルトの名無しさん:2005/10/10(月) 13:23:53
Dで作ったOS
 ↓
D+OS
 ↓
DOS
37デフォルトの名無しさん:2005/10/10(月) 14:37:39
どうせならマルチCPUを使い切る言語きぼんぬ
38デフォルトの名無しさん:2005/10/10(月) 15:18:22
とりあえず>>1はトリップつけて、サイトを立ち上げてくらはい。
39デフォルトの名無しさん:2005/10/10(月) 17:09:54
>>1はD言語の糞GC仕様を知ってて言ってるのかねえ
40デフォルトの名無しさん:2005/10/10(月) 20:53:14
さっそく真似されとるな
ttp://wiki.monaos.org/index.php?gdc
41デフォルトの名無しさん:2005/10/11(火) 01:21:58
>>16
いっその事CPUに(ぇ
>>29
マイクロカーネルのMachやL4をベースに作成したいなと思ってます。
マイクロカーネルにするかモノリシックカーネルにするかは未定。
D言語の為のD言語によるOSを目指しD言語を対応する部分はC言語で書く。(メモリ管理とシステムコール、GC)
ただMonaの方が日本語の文章が多いのでMonaのコアをCに書き換えて使うのもいいかなとも思ってます。
>>35
リングってなんですか?
>>39
GCの仕様と問題点はある程度理解してるつもりです。
が、理想としてはOS側でGCの機能を持たせてしまえば無問題かと。(コンパイラの変更、GCの移植からしなくてはならないので面倒ですが)
ただ実装時にユーザーモードのメモリ領域とカーネルモードのメモリ領域とが問題になりそう。
システムコールを使いまくらなきゃいけなくなる気ガス。
#メモリー関係/システムコールを一から学んでる状態なので変な事言ってるかもしれない。
http://tkralia.hp.infoseek.co.jp/mona/mona1017/Memory.html
http://tkralia.hp.infoseek.co.jp/mona/mona1017/Memory2.html
http://mona.sourceforge.jp/document/syscall_8cpp-source.html
>>38
作れるめどが立つまで名無しでいまつ。
>>40
向こうはMonaで動くアプリ/ライブラリだから微妙に違うかも…ってあんまりちがくも無いか。
俺の理想としてはアセンブラ->C->Dでは無くアセンブラ(メモリ管理とシステムコールとGCのみC言語で書く)->Dを目指したいです。
42デフォルトの名無しさん:2005/10/11(火) 03:11:38
Dにそこまで入り込むだけの価値なんてあるか?
43デフォルトの名無しさん:2005/10/11(火) 03:24:48

そこにDがあるから。
44デフォルトの名無しさん:2005/10/11(火) 06:13:43
C#のOS -> CooS
D のOS -> DooS?
45デフォルトの名無しさん:2005/10/11(火) 09:11:40
46デフォルトの名無しさん:2005/10/11(火) 22:21:59
>>41
D言語のためにC++を排除してC言語に固執する意味が分からん。
extern "C"にしておけばC++がC言語に比べて障害になることはない。
マングリング規則が違うからC++とD言語でクラスを混ぜることはできないが
それを言ったらC言語にはクラス自体がないから悩まないだけだろ。
47デフォルトの名無しさん:2005/10/11(火) 23:27:03
>>41

メモリ管理とシステムコールとGCとか言っている時点でOSが必要でしょ。
ベースOSをMonaにしたら ttp://wiki.monaos.org/index.php?gdc でやってることと
全くかわらないでしょ。まずはサーバーとアプリを全部D言語にしてから
カーネル周りのD言語化を考えたら?

あとわざわざCにする理由がわからん。だったらMonaじゃなくAntOSとか他のOS使ったら?
48デフォルトの名無しさん:2005/10/11(火) 23:43:18
>>46
C言語で作成するのは、GCだとかのランタイム機能だけだろ。
あとは、すべてD言語で書くのだろう。

他言語で作成する必要があるGCだとかは、オブジェクト指向的な作りに出来ないだろう。
それなら、わざわざハマリどころの多いC++で、
苦労して作成する必要性はどこにもない。
49デフォルトの名無しさん:2005/10/11(火) 23:44:09
自動的にガベコレを埋め込むDの仕様からして
OSになることはできないんじゃないのかい?
50デフォルトの名無しさん:2005/10/11(火) 23:46:35
DのガベージコレクタってDで書いあるんじゃないけ
51デフォルトの名無しさん:2005/10/11(火) 23:54:40
D言語とアセンブリ言語だけで全部記述出来るじゃん。
52デフォルトの名無しさん:2005/10/11(火) 23:57:08
>>48
> C言語で作成するのは、GCだとかのランタイム機能だけだろ。
↓のことを指しているかと。
>>41 MonaのコアをCに書き換えて使うのもいいかな

> 他言語で作成する必要があるGCだとかは、オブジェクト指向的な作りに出来ないだろう。
Monaでgcjのために用意されたGCはC++で書かれている。

>>49
アセンブリに埋め込まれるわけではない。
メモリ確保時に呼ばれる関数から適宜GCに振り分けてるだけ。
その関数をどう実装するかが肝。
面倒ならGCをやめてdeleteを書かせることすら可能。
D言語の優位性はGCだけではないから
GCがないとD言語の意味がないとまでは思わない。
もちろんユーザーランドではなくカーネル限定なので誤解なきよう。
53デフォルトの名無しさん:2005/10/12(水) 11:36:57
>>50
正解

>>51
だと思う
54デフォルトの名無しさん:2005/10/12(水) 12:39:48
GD
55デフォルトの名無しさん:2005/10/13(木) 22:43:43
1はとにかく手を動して、blogでも書いて経過を晒せ。
Monaの方はどんどん進んでるぞ。
ttp://wiki.monaos.org/index.php?gdc
56デフォルトの名無しさん:2005/10/14(金) 23:14:39
1はOSとか言う前にDは一通り使いこなせてるのか?
glExcessの移植程度のことはできるんだろうな?
57デフォルトの名無しさん:2005/10/15(土) 15:24:48
ま た ネ タ か ! !
58デフォルトの名無しさん:2005/10/15(土) 16:19:21
個人的にはLISPかSchemeで今風のOS作ってみて欲しい。
59デフォルトの名無しさん:2005/10/17(月) 02:20:17
>>41
リングじゃ無くて特権レベル0〜3だな
簡単にいうとx86は68000系のようにユーザーモード/カーネルモードの切替が2段階じゃなくて、特権レベル0〜3までの4段階持てる
60デフォルトの名無しさん:2005/10/17(月) 08:12:49
その特権レベルの事をリングって言うんだよボケ
61デフォルトの名無しさん:2005/10/17(月) 19:31:34
ああ、あれか、経産婦が避妊に使うやつか。
62デフォルトの名無しさん:2005/10/18(火) 20:58:24
>>3
心配しなくてもC++でも使えないから
cc1plus: warning: command line option "-ffreestanding" is valid for C/ObjC but not for C++
631:2005/10/26(水) 18:03:01
取り合えずage
64デフォルトの名無しさん:2005/10/26(水) 20:49:15
sageてるがな
65デフォルトの名無しさん:2005/12/11(日) 10:56:18
まったく進まんけどなんか期待
66デフォルトの名無しさん:2005/12/31(土) 21:22:07
保守
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 を作りたいなら
それでもいいが、そんな車輪の発明は誰も欲しがらないだろう。もっと根底から考え直さねば
駄目だ。
75デフォルトの名無しさん:2006/01/15(日) 20:20:50
JavaはJavaVMを作るために作られた訳だが
76デフォルトの名無しさん:2006/01/15(日) 21:53:33
            _,、-‐‐'ー- 、,_ヽ_
           / ,、 -‐ ''"´;: ; ヽ
          / / ,、‐''"´´  ;: ;;`ヽ
         / (/  ,、-‐''"´´ _, ,丶          そおおおんあわけねええだろぉ?
         i  (ゝ /, , 、ー''"、´   _ヽ
         |  /'''_ー-<___, -'´ lー''"ノ ヽ.  , へ、 _
         、 'l { `ヽ;ー-、-,ー‐,r''1 ; ;ヽ<''ヘ  ヽー---‐'''"""""
          r、 iヽ  ヽ' `'   .|、  ,. |  |
         {λヽ.ヽ       ,,ソ ヽ-' t' __ノ   ,______
         \ゝ、iヽー '`ー'''`1´     ~ヽ、、、/~    ̄ ̄,~"=
   、‐'''''ヽ    `'ヘ.',ヽ   , 、 {              ,、- '´   
  /     \    ヾ ヽ⌒ヽ ヽ {       , ‐、_   /       
.  |        ゛‐-ー'.,!\\__  `ヽ. ,、   /   `'´        ,
  、        / / | \ \゛、ー'>' ノrー' ´    | ,       /
  r;       / /  |\,_\ `""´r''| ト、      | |     /
   i        /  |   フ 丶、___ノヽ.      |/ /  /
  rヽ\      (   |   ,ヘ   | | ヽ \     ‖/ /
77デフォルトの名無しさん:2006/01/21(土) 00:36:42
非チューリングマシンで動くOSきぼう
78デフォルトの名無しさん:2006/01/22(日) 16:58:25
このスレって、なにか成果があがることを期待していいんですか?
79デフォルトの名無しさん:2006/01/22(日) 21:24:24
D言語は当分完成しないみたいだからFreePascalで作って
80デフォルトの名無しさん:2006/01/24(火) 09:08:55
>>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言語の魅力/問題を洗い出すという目的において良い課題であると思うけどね。
86デフォルトの名無しさん:2006/04/12(水) 02:55:24
OSってどのレイヤーを指してるのかと思ったらカーネル作ろうっての?
マイクロカーネルなだけで遅いのにしかもD言語。
ライブラリ整備するほうが先でしょ
87デフォルトの名無しさん:2006/04/12(水) 12:32:20
ていうかDが1.0になるのが先w
88デフォルトの名無しさん:2006/04/27(木) 23:31:49
>>1はどうした?
Dの悲惨な現状を知って(僕は知らないけど)にげたか?
89デフォルトの名無しさん:2006/07/18(火) 00:40:55
age
90デフォルトの名無しさん:2006/10/02(月) 23:09:35
hage
91デフォルトの名無しさん:2006/10/03(火) 00:38:09
CP/M ++ → DQ/N

DQN-OS
92デフォルトの名無しさん:2006/10/03(火) 05:03:10
すげー
93デフォルトの名無しさん:2006/10/04(水) 02:55:51
D言語は、1.0がリリースされるよりも早くMSが買い取るかも。
MS-D コンパイラってね。
手厚いMS印のサポートが期待できる。
94デフォルトの名無しさん:2006/10/04(水) 03:26:18
DotNETになるだけだろ
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