OSを作ろうpart5

このエントリーをはてなブックマークに追加
749わたもち
>>FreeDOS教徒さん
どうも、非常に参考になります。
ありがとうございます。
OSの名前をOEMに入れないといけないですね。
日本の花ということでAsagaoとか考え中です。
>>749
日本の花って桜じゃないの?
狩人さんはおばかさん
752わたもち:03/03/19 23:53
桜だと、某有名萌えアニメにはまった人達が、たくさんソフトにその名前を
つけているようなので、わざとはずしました。
私もはまったその一人だったりw
このOSもそっち系にいきそうです。
    _, ._
  ( ゚ Д゚)   ガシャ
  ( つ O. __
  と_)_) (__()、;.o:。
          ゚*・:.。
日本の花は菊だと思うが・・・
(国会議員のバッジとか・・・)
いや、梅(ry
だから、国花だけじゃないっちゅーにw<日本の花
日本の花じゃないけどBlueRoseとかどう?
758わたもち:03/03/20 00:44
>>757
英語圏に住んでいたら、たぶんBlueRoseに変えるぐらいいイイ感じなのですが、
とりあえず、ひらがなで書くようなものと、
萌え系のOSになっても大丈夫なような名前でお願いします。
注文が多くてスミマセン(^^;
759わたもち:03/03/20 00:48
「ひらがな」というより、日本的なものですね...
わた氏は本性を隠していたな。
Asagao でいいと思う。開発コードにChihiroとかついてるご時世だし。
萌え系ってのはショックだが。
761わたもち:03/03/20 01:02
>わた氏は本性を隠していたな。
隠しているつもりはなかったのですが...

>萌え系ってのはショックだが。
やっぱりだめですか...
SwingのようにLook&Feelを変えて使用してくださいと言ってみるテストw
ひなげし、に1票。
萌え系・・・
    _, ._
  ( ゚ Д゚)   ガシャ
  ( つ O. __
  と_)_) (__()、;.o:。
          ゚*・:.。


マンセー!!
ひまわり・・・・って気象衛星みたいになってきますたw
らいちょう・・・・って鉄道みたいになってきますたw
765わたもち:03/03/20 19:42
FD読み込みに失敗の件は、結局Monaのものを流用させていただきました。
Monaプロジェクトのみなさま、厚くお礼申し上げます。

OSの名前は、とりあえず(仮称)あさがおにしておきます。
どうも、色々な名前ありがとうございました。

また実機で動かないバグが...もう泣きそうです
Kernel.c の StartKernel -> Init -> PrintPagingOnMessage -> Graphics_SetColor までは
問題ないのですが、次の行Graphics_DrawStringで、いきなり落ちます。

どういうわけか、Bochs でも特権レベル3のプログラムが動かなくなりました。
0xDFFFFFFCでページフォルトが起きているのですが、PageManagerではきちんとページを確保しています。

原因が思いつく方、お時間ありましたら、レスください。お願いします。
ソースは前と同じにあります。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/6802/os_10_debug.zip
ひがんばなでいいよ
>>765
いっそのこと下の部分はMonaに差し替えて、
Monaで手のついてないGUIとかに専念しては?
「あさがお」はウィンドウシステムの名前にすればいいし。
768わたもち:03/03/20 21:38
>>767さん
このまま本当に作れるのかと言ったら、まだまだ乗り越えないといけない課題も多いですし、
Linuxのように、カーネルにMonaを使い、ディストリビューションという形で
作っていくというのもありと思います。
でも、OSのイメージと言うと、人それぞれだとは思いますが、
ほとんどはGUIの雰囲気で決まるところがあると思います。
そんな一番おいしいところを頂くのも、気が引けます。
どうにか原因究明をして、特権レベル3での実行ができるようにしたいと思います。
>>765 >>768
ちらっと見ただけだが、
0xDFFFFFFCにアクセスしようとするのがおかしいよな。
uint vga_memory_low = 0xE0000000;
に近いのでVRAM書き込みアドレスがあやしいかと思ったが、さして問題なさそう。
となるとスタックを疑うか。
Graphics_DrawString()の中でGraphics_DrawCharを呼ばずに、
(g->data)[0] = 0x55;
とかやってみるのはだめかな。というのは、
・VRAMアクセスで問題
・その他の問題
の切り分けが先決かと。
>原因が思いつく方、お時間ありましたら、レスください。お願いします。
PF発生時のIPはわからないのかな。レジスタ/スタックダンプも。
っていうか、動かなくなった原因は、触ったことそのものだから、
そこに問題があるというのが原則では?
>>765 >>768
フォルトのエラーコードはなんだったの?
771わたもち:03/03/21 00:01
どうもお手数かけます。

「VRAMアクセスで問題」でした。
0xE0000000へアクセスしてもなにも変化無く(落ちもしないし、描画もなし)、VGA_GetVram()だと落ちます。
0xE0000000と思いこんで実装している部分が無いか調べてみます。

0xDFFFFFFCでのページフォルトは、
Bochs では 3rd (13) exception with no resolutionと表示されました。
14でないのは、無理にエラー処理されて、わけがわからない場所を実行するので、
IDTへの登録と設定そして、割り込みは禁止にしてあります。
だから、そもそも割り込みハンドラが無いと表示されていると思います。
cr3 の値が0x00000000だったので、ページフォルトだと思いました。

sp = 0xE0000000となるようにスタックを積んで、iretで制御を渡しているので、
<ProcessLoader>
80000000:55 push %ebp
80000001:89 e5 mov %esp,%ebp
80000003:90 nop
80000004:eb fe jmp 80000004 <_Main+0x4>
最初のpushで0xDFFFFFFCになってページフォールトだと思います。
Process_Initの PageManager_AllocatePage(p, 0xDFFFFFFC); が
デバッグ用にあるので、ページフォルトは無いはずなのですが。
772わたもち:03/03/21 00:04
>cr3 の値が0x00000000だったので、ページフォルトだと思いました。
cr3の値が0x00000000でないからの誤りです。

どうも、夜遅くまでバグを見つけてもらい感謝します。
773769:03/03/21 00:20
>>772
>どうも、夜遅くまでバグを見つけてもらい感謝します。
バグを取ったのはチミ自身だ。チミの勲章だ。
774わたもち:03/03/21 00:33
>>769さん
iretで、特権レベル3に行く直前まで無事、実機でも確認できました。
ほんとうにどうもありがとうございます。
「VRAM書き込みアドレス」が怪しいというヒントが無ければ、一人では見つけられませんでした。
バグ取りができたのも、すべて769さんのお陰です。

VBE linear buffer形式 の 開始アドレスは 0xE0000000 では無く、
その他の条件、少なくとも機種によって異なる。
偶然、Bochsでは意味ありげなきちんとしたアドレスの0xE0000000となっていた。
ということが原因だったようです。
これからこの辺を実装される方はお気をつけください。
>>774
外出っぽいが、
>VBE linear buffer形式 の 開始アドレスは 0xE0000000 では無く、
>その他の条件、少なくとも機種によって異なる。
漏れはVBE3.0しか見てないが、初期化してモードを選択してから、
ModeInfoBlockを見ろと書いてあるように見えるな。
>>774
うちの環境では、vga mode change err が出てしまいます。
int 0x10 AH=4f02
777776:03/03/21 01:54
途中で書き込みしてしまいました。

bochs2.0.2を使ってます。
int 0x10 AX=4f02が失敗というか、AHが4fのまま。。。
あと、DIは設定しなくてもいいのですかね?

bochsrcもつけてもらえると、原因がわかるかもしれません。
778わたもち:03/03/21 10:49
どうも有難うございます。
Bochsのデフォルトの設定では、VGABIOS-elpin-2.40が使われているはずなので、
VGABIOS-lgpl-latestを使用していただければ、vga mode change err はでないと思います。

bochsrc.txtです。
floppya: 1_44="pc\asagao.img", status=inserted
diskc: file="pc\c.img", cyl=20, heads=16, spt=63
romimage: file=BIOS-bochs-latest, address=0xf0000
vgaromimage: VGABIOS-lgpl-latest
megs: 32
boot: a
vga_update_interval: 300000
keyboard_serial_delay: 250
floppy_command_delay: 500
ips: 500000
mouse: enabled=0
private_colormap: enabled=0
i440fxsupport: enabled=0
time0: 0
newharddrivesupport: enabled=1
log: -
panic: action=ask
error: action=report
info: action=report
debug: action=ignore
779わたもち:03/03/21 11:33
bochsrc入りのものと、昨日の無効なVGA領域に書き込んで落ちるバグを
修正したものをupしました。
場所は同じです。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/6802/os_10_debug.zip
780777:03/03/21 15:03
>>779
無事ブートできました。
3rd (13) exception with no resolutionで落ちましたけど。

あと、本質的なことじゃなくて恐縮ですが、
ImageMakerでイメージを書き換えるより、ヘッダバイナリ(?)みたいなのをつくって
boot+Headbinary+Kernel+Appとくっつけたほうがよくないですかね?
もしくは、Kernel,Appコンパイル後、サイズ定義ファイルを生成して、boot.asmで読み込むとか。

もうひとつ、やっぱり本質的じゃないですが、
イメージ作成.batでパス設定してるのに、フルパス使ってるのは疑問ですが(w
Kernel,Appとファイルも増えてるし、そろそろ、Makefileを作ったほうがいいかもしれませんね。
781わたもち:03/03/21 15:28
>3rd (13) exception with no resolutionで落ちましたけど。
Kernel.c の StartProcessLoader の iret でユーザープロセスに行ったとたん落ちます。
未だに原因わからずです。

>ImageMakerでイメージを書き換えるより、ヘッダバイナリ(?)みたいなのをつくって
>boot+Headbinary+Kernel+Appとくっつけたほうがよくないですかね?
>もしくは、Kernel,Appコンパイル後、サイズ定義ファイルを生成して、boot.asmで読み込むとか。
boot+Headbinary+image(Kernel,App等)の構成に、ユーザーレベルでの実行に成功したら
変えるつもりです。
Headbinaryには、各ファイルのサイズとimageでの位置を書いて、
デイレクトリの無いファイルシステムのつもりで実装します。
たぶん今後は、ImageMakerは、kernel, 作成したアプリ から image を
生成するようなツールになるはずです。

コマンドはかなり苦手なので、適当にbatファイル書いたら、コンパイルできたから
いいやという、いいかげんなものなので、つっこまないでくださいw

一度、makefileは作ろうとしたことがあるのですが、失敗しました。
そろそろ作らないとやっぱりいけないですよね...
統合開発環境ばっかり使ってるとこんな人間になります。お気をつけて(を
>>751
やまどり追いかけて
>>781
>一度、makefileは作ろうとしたことがあるのですが、失敗しました。
マクロとかmakeの方言を使わなければ簡単かと。
[作りたいもの] : [材料1] [材料2]
    [材料1]と[材料2]から、[作りたいもの]を作るコマンド
をずらずら並べるだけでも、随分楽になるけどなぁ。
クロスだと、
install : all
    copy hoge.exe a:
とやっておくだけで、生産性の改善もできるとな。
784.oOo.:03/03/21 17:07
>>781
一般保護違反や無効TSSの例外ハンドラを実装してみてください。
恐らく、無効TSSが原因だと思います。
785わたもち:03/03/21 17:22
>>783さん
どうもありがとうございます。
もう一度きちんと調べて、makefileを作ってみます。

>>784さん
割り込み番号 0x0D の例外ハンドラを実装してみて、
TTSについて、もう一度チェックしてみます。
どうもありがとうございます。
これも経験と知識の差でしょうね...
皆さんどうしてそんなに簡単にエラー見つけることが出来るのですか...(はぁ
786わたもち:03/03/21 17:31
この際なので、0x13まで、どの例外かが分かる程度まで、実装します。
787.oOo.:03/03/21 17:47
わたもちさん
StartProcessLoaderの
push $0x80000000
を、
push $0x00000000
に直してみてください
788.oOo.:03/03/21 17:56
>>787 に追加
exe.lsの
.= 0x80000000

.= 0x00000000
に直してください。
789FreeDOS教徒:03/03/21 18:06
>>.oOo.
CSのベースアドレス‥‥??
790わたもち:03/03/21 18:22
>>787(788)さん
0x00000000から実行ということですよね?

カーネルのページマップは
すべてのマップを 仮想アドレス = 物理アドレス としています。

ユーザーのページマップは
0x00000000〜0x7FFFFFFF と VGA 領域が 仮想アドレス = 物理アドレス
0x80000000〜0xFFFFFFFF (VGA領域を除く)となってるので、

ページマップを全体的に変えることになりそうですけど、
仮想8086モードを使わないとしても、無理なマップなのでしょうか...
原因をつかんでおかないとまた同じことを繰り返しそうなので、
エラー原因を御教授くださいませんか?お願いします。
<後ろ頭>-~~ ここはiret(d)命令でないと。PL3側のespもpushの必要あり。

> asm volatile ("push$0x00000020 \n\t"
>  "push$0xE0000000 \n\t"
>  "push$0x00000018 \n\t"
>  "push$0x80000000 \n\t"
>  "ret \n\t");
792.oOo.:03/03/21 18:30
わたもちさん
メモリーマップはこのままでもいいです。
なぜ0かというとCS(0x1b)のベースが0x80000000だからです
つまり0x1b:0x0はリニアアドレスの0x80000000になるのです
push $0x80000000や.=0x80000000
では0x1b:0x80000000=0x100000000を指すことになります
793わたもち:03/03/21 18:34
超先生、ありがとうございます。
恐れ入りますが、新しくDLしてください。
前はret にしていたのですが、iret でPL=3に移ると書かれたものを見たので、
iret に書き直してあります。スタック切り替えもされる思って書いたコードです。

asm volatile (
"push$0x00000023 \n\t"//20
"push$0xE0000000 \n\t"
"push$0x00000000 \n\t"
"push$0x0000001B \n\t"//18
"push$0x80000000 \n\t"
"iret \n\t");
794わたもち:03/03/21 18:47
>>.oOo.さん
プロテクトモードに入ってすっかりベースのこと忘れ、そのことに気づいていませんでした。
どうも有難うございます。
CS.base 0x80000000 で、exe.ls = 0x00000000 とするか
CS.base 0x80000000 -> 0x00000000 で exe.ls = 0x80000000 とすればいいのですよね。

0x80000000 以下で実行されると困るので、
CS.base 0x80000000 で、exe.ls = 0x80000000 がよさそうですね。
795わたもち:03/03/21 18:48
>CS.base 0x80000000 で、exe.ls = 0x80000000 がよさそうですね
CS.base 0x80000000 で、exe.ls = 0x00000000 ですた
796わたもち:03/03/21 22:12
asm volatile("mov$0x0023, %ax \n\t"
"mov%ax, %ds \n\t"
"mov%ax, %es \n\t"
"mov%ax, %fs \n\t"
"mov%ax, %gs \n\t");
asm volatile ("push$0x00000023 \n\t"//20
"push$0xE0000000 \n\t"
"push$0x00000000 \n\t"
"push$0x0000001B \n\t"//18
"push$0x00000000 \n\t"
"iret \n\t");
と、
無効TSS 例外(#TS)(int 0x0A)、セグメント不在例外(#NP)(int 0x0B)、一般保護例外(#GP)(int 0x0D)
ページフォルト(int 0x0E)
を設定して実行してみても、
割り込み番号 0x0E、エラー原因のアドレス 0xDFFFFFFF、割り込みハンドラに入る前のeip = 0x00000000
となってるようです。謎w
787,788も修正しました。どうもありがとうございます。
797わたもち:03/03/22 12:47
Bochsでも、実機でも動きました!
ページテーブルのフラグの意味を取り違えていました。
フラグを修正すると、動きましたぁ〜〜
これで、ようやくOSらしくなってきましたw
798ひげぽん ◆Ngzcp/NZpA :03/03/22 13:57
ちょっとだけ復活します。
わたもちさんはすごいなぁ。

カーネルスレッド実装がだいぶ落ち着いてきました。
スレッドというよりは、プロセスになってしまいましたが・・・
コンテキストをkthread構造体に保存する形になりました。
デバッグに四苦八苦したため、全ての流れを一応把握できているつもりです。

セマフォを用いたロックもうまくいっている模様です。
依然見られたスタック破壊もなくなりだいぶ安定してきました。

システムコールでkthread_yieldを簡易実装予定。
明日までに終わればいいなあ。
799わたもち:03/03/22 14:38
>>ひげぽんさん
>わたもちさんはすごいなぁ。
C++で、マイクロカーネルのOSを作るという先進的なことに取り組まれているようで、
とても足元にも及びません。
このスレッドの皆さんのおかげと、Monaのソース、LightConeさんのまとめ書き等があったことと、
時間が有り余ってるので、ここまで実装できました。
でもまだまだ、キーボード割り込みもスキャンコードを取得しているだけですし、
メモリ管理は一応作ってあるのですが、バグだらけの予感です。先は遠いです。
800ひげぽん ◆Ngzcp/NZpA :03/03/22 14:46
>C++で、マイクロカーネルのOSを作るという先進的なことに取り組まれているようで、
>とても足元にも及びません
C++はともかく、マイクロカーネルは果てしなく遠いです(笑)

ページングも、ユーザーモードでのプロセス実行も実装できていないので
参考にさせていただきます。m(__)m
いいかんじになってきたな。(いろんな意味で)
802ひげぽん ◆Ngzcp/NZpA :03/03/23 13:26
mona_beta0.05a をリリースしました。

以下のサイトからダウンロード可能です。
https://sourceforge.jp/projects/mona/files/

動作をテストしてくださったかたは、ぜひ以下の掲示板に
動作報告にご協力をお願いいたします。

http://monaos.hp.infoseek.co.jp/cgi-bin/2ch/test/read.cgi/developmona/1048392706/l50

・フロッピィディスクの読み書きの実装

・ぐりぽん氏によるグラフィックモード対応(半角英数カナフォント)

・フォント表示のラッパー作成(GraphicalConsole)

・割り込み処理の正常化

・カーネルスレッドの実装
デモの'M' 'o' 'n' 'a'の文字は、それぞれ個別のスレッドが描画を担当しています。
また、スレッド情報を表示しているのも別スレッドです。

・システムコール KTHREAD_YIELDの実装

・セマフォによる排他ロックの実現

・その他細かい修正
ダウンロードページ開けないょぅ…。
804803:03/03/23 14:16
すみません、できますた。
そろそろ、混乱しないように、Mona的な用語定義とかインタフェース仕様とかがあると便利かも。
806LightCone ◆sSJBc30S5w :03/03/24 10:46
効率の良いファイルバッファのオリジナル数学理論です:

ttp://homepage2.nifty.com/nowsmart/Japanese/binary_integer.htm

理論内容自体は自由にお役立て下さい。

ただし、論文やソフトなどで、少しでも参考にしたり、利用したりした場合
などは、必ず論文の参考文献として、または、プログラムのドキュメント
の一部や、ホームページなどで定理の発見者が私(LightCone)であることを
明記するようにして下さい。
>>806

うわ、見てて頭が痛くなる論文だ(笑)
てか、改めて数学はどんな分野よりシンプルでかつ難しいと感じました。
808LightCone ◆sSJBc30S5w :03/03/24 12:04
>>807
証明に利用している数学的知識は非常に初歩的なものなので、実は
かなり簡単なんです。
beta0.05a がリリースされて、久しぶりにサイトを見たが
SS めっちゃかっこよくなってんじゃん。リアルで『スゲー』とか言っちゃった
ttp://mona.sourceforge.jp/MPDN/document_room.html
> [Web] はめて読む486の正誤表
いやらしい…。

それはさておきリンクが
ttp://www.ascii.co.jp/books/support/4-7561-0213-1/errata/
に変わっているようです。
あ、MonaBBSでも出てましたね。
β公開age
813ひげぽん ◆Ngzcp/NZpA :03/03/24 23:21
>>805さん
>そろそろ、混乱しないように、Mona的な用語定義とかインタフェース仕様とかがあると便利かも。

そうですね。システムコールのドキュメントはいずれ用意しなければいけないと思っています。
インターフェース仕様というのは具体的にはどのようなものでしょうか。
ドライバとかでしょうか。

>>809さん
>SS めっちゃかっこよくなってんじゃん。リアルで『スゲー』とか言っちゃった
それはありがとうございます。
これからも精進いたしますのでよろしくお願いいたします。

>>810さん
>ttp://www.ascii.co.jp/books/support/4-7561-0213-1/errata/
>に変わっているようです。

ご報告ありがとうございます。
反映させていただきます。




814わたもち:03/03/25 00:34
(仮称)あさがおOS最新版アップしました。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/6802/os_12.zip
ユーザープロセスの実行、ページング、システムコール、色々なバグつぶしが主な変更です。
見た目には、ほとんど変化ないですw
次ぐらいで、少しアプリケーション開発ができるようにしたいです。
キタ━━━━━(゚∀゚)━━━━━!!!!
乙カレー
816わたもち:03/03/25 00:56
>>815さん
ありがとうございます。
メモリの扱い、イベントの扱い、ファイルの扱い、GUIはどのように作るか等
まだまだ決めることが多いので萌え風味を出せるまでしばらくかかると思いますが、
できるだけ早く実現できるよう頑張ります。
817FreeDOS教徒:03/03/25 21:26
>>わたもちd
萌え進行は正直、ちょっと楽しみです。。
がんばってください。
>>813
検索して見つかったものでよさげだった奴
ttp://www.justsystem.co.jp/tech/atok/atokapi.pdf
APIのインタフェースを使う人に対して説明したものですね。
APIの機能を詳しく説明したものを機能仕様書or機能設計書。
実装に関する部分まで詳しく説明したものを詳細設計所と、
呼んでいたような感じがする。
インタフェース仕様書は、機能仕様所に含まれる場合もある。
とりあえず、インタフェース仕様書があると、簡易OSサーバとか簡易アプリケーションとかを
一般ユーザさんが少しずつ作り始めることができるかと。
819わたもち:03/03/25 22:43
>>FreeDOS教徒さん
ありがとうございます。意外にも好感を持ってもらい嬉しいです。
萌えっていうと正確にはどういうことを言うのかなと、
ちょっと思っています。
ファンシーとかなら大丈夫っぽいですが、キャラクター関係だと絵が苦手な罠。
主にアプリケーション開発環境はJavaでできたらいいなと考え中です。
>>819
JavaVMってVMで使われているシステムコールをどうにかしたら、
性能は悪くても、動くようになるんですかねぇ。
http://wabasoft.com/

Wavaおすすめ。
Javaの開発環境がつかえるし、機種依存部の分離がきちんとしてるので、比較的簡単に移植できる。
822わたもち:03/03/26 01:14
>>820さん
インタプリンタを移植する予定なので、煩雑な計算を行うものだと
スピードに問題が出てくると思いますが、一般的なGUIアプリケーションでは、
実用的なものになるようにできると思います。

Javaが遅く、.NETが早い理由がおそらく解決のポイントだと思います。
クラスライブラリーの作成の時
1.スピードのネックになるところは、C,C++を使用する
2.できるだけ抽象度を下げる
Javaのクラスライブラリーのように、互換性を大事にするためにできるだけJavaで作ることをせず、
グラフィック関係はCで作ったものを薄くJavaでラップするぐらいの気持ちで作りたいと思います。

>>821さん
ありがとうございます。
もともと、Wabaには目をつけていました^^
クラスライブラリーについては、kaffeのクラスライブラリーを流用したいと思います。
java.utilとかとても一人で作れるものじゃないですw
欲を言えば、例外やスレッドが使えるインタプリンタがいいのですが、無理っぽいので
このへんで...
うお、こんな面白いスレがあったのか見落としてた。

外野のたわごとですが、アプリの動かないOSなんて誰も使わないので
たとえばエミュが軽快に動作するマイクロカーネルなんて面白いんじゃないかと思ってました。

上位(GUIとか)層を一から作るのも面白いとは思いますがそんなに広まることないので
将来的にはWindowsもUnixアプリも動くといいなぁっとか。OS/2みたいに別レイヤで動くとかね。

たわごと失礼。
>>823
チンコスのかほりがプンプンするなw
825潜伏名無しさん:03/03/26 13:19
萌えを目指すなら見た目重視にして暫くお茶を濁した方がいいかもしれない。

と言ってみるテスト。
>>823
ほら、もっと面白いスレ
http://pc.2ch.net/test/read.cgi/os/1042810549/
827わたもち:03/03/26 22:10
>>潜伏名無しさん
名無したんですか?
潔くお茶を濁したように見せかけて、コソーリ内部はきっちりつくってみたりするかもしれない。
とか言ってみるテストw
828わたもち:03/03/26 22:28
はやとちり、スマソ。
読み間違えてますた。最初読んだとき、だいぶん、へこんでますた。
もともと萌えキャラはかけないので、お茶を濁すのは無理ぽです。
助言ありがとです。
829わたもち:03/03/26 22:36
以前も早とちりして、結果的に逆の意味にとれるもの書いてしまったので、
気をつけないと...ゴメンナサイ
萌え指向ならいっそうの事、エージェント指向なOSを目指すのも面白いかも。
萌え萌えなキャラクターが、あなたの代わりにお仕事しますとか。

エージェント指向なOSとは、(技術的に)どのようなOSか、漏れにも
よく判らないけど。
831わたもち:03/03/26 22:53
>>830さん
「伺か」みたいなものを、OSのシェルとして使うというぐらいなら、
おそらく可能だと思います。
Windows版でさえも作るのはかなり大変みたいです;;
832ひげぽん ◆Ngzcp/NZpA :03/03/26 23:00
>>818
情報ありがとうございます。

Java VMの件面白そうですね。
Monaで動くようになったら幸せですが・・・
833818:03/03/27 01:05
>>832
あまりこういうのは書いてないんで、どのように書くのがいいのかはわかりませんが、
いろいろ見てみると、参考になると思います。
以前に、manコマンドで表示される形式で書けと言われたこともあります。

>>830
オブジェクト指向もよく理解できてない凡人ですが、
ユーザからの要求をそのときのシステム状態(プロセス数とかCPU使用率など)に
応じて要求受付モジュールがより細かい単純な仕事に分解し、優先度付けして、
それぞれの仕事をするモジュールに渡す。ようなものだと思っています。

エージェント指向は、オブジェクト指向に人工生命や人工知能の技術の一部(進化と自律性?)を
取り入れたものでしょうかね。この辺りはエージェントの定義が多種多様なので詳しくはわかりません。
とかいっても、プログラムしたことしかできないので、結局、オブジェクト指向になってしまう。
(プログラムしたこと以外をされても困るし(w

C++で記述されてるMonaならこれからの設計次第で、将来はエージェント指向OSにばけるかもしれませんねぇ。

#まとまりのない長文で悪い。。。
エージェントさんはおばかさんσ'A`)σ
>>822
スレからは外れるが...

> インタプリンタを移植する予定なので、

何故か、interpreter を「インタプリンタ」と書く人が多いんだが、どこをどう読んだら新型のプリンタみたいに聞えるんだろう...。
>>835
よく見てますねぇ。まったく気付かなかった。

標準出力がプリンタってのを思い出してしまった(w
837わたもち:03/03/27 23:34
>>835,836さん
インタプリンタ、やっちゃいました^^
言われると、そうだったと気づくのですが、いつのまにか気づかずに、
またやっちゃいそうですw
10回言うと、いつのまにかインタプリタ...インタプリンタになってたり。((((;゚Д゚)))ガクガクブルブル
デスクトップをディスクトップと言うのと同じかも。
>>837

>10回言うと、いつのまにかインタプリタ...インタプリンタになってたり。((((;゚Д゚)))ガクガクブルブル

1日1回、100回ぐらい連続で言うと、もはやプリンタと言うつもりでもプリタになったり、、チガウ!
 これを 3日ほど続けるともう間違えなくなるYo-。
>>835
じゃあなんていうんだYO!
>>840
インタプリタ (ン無し) あ、ネタだった?
質問ですが、このソースを元に、自分なりに改造してみても良いですか?
843840:03/03/30 21:36
>>841
ネタって書いたけどマジでどこが違うのかわからんかった。
インタプリ "ン" タなんて言う香具師いるんだな。どっちもインタプリタだとしかよめんかった。

>>840
ttp://mona.sourceforge.jp/
ここからソースとかたどって見ました?
MONAはGPLですよ
844840:03/03/30 21:39
わかると思うけど>>840あてじゃなくて>>842です
連続意味なしスマソ
>>844
あ、そうなんですか。
846ひげぽん ◆Ngzcp/NZpA :03/03/31 21:58
ファイルシステム構築準備中です。
概要が以下のURLにありました。
http://www.spa.is.uec.ac.jp/~kinuko/slidemaker/fs-survey/

一番最初の実装としてはFAT12, UFSあたりが現実的かとは思うのですが
迷い中です。

Nonameの( ´ -`)さんも触れられていましたが
Solarisや、linuxのVFSのようなものをMonaでも想定しています。
全く一緒かどうかは分かりませんが・・・

MEGのように独自ファイルシステムが良いのか・・・

ファイルシステムの資料をあさり中です。
847デフォルトの名無しさん:03/03/31 22:12
>>846
BFSはどうでしょう。
BeOSで採用されているファイルシステムです。

ttp://www.zdnet.co.jp/magazine/behive/hacker17b.html
848ひげぽん ◆Ngzcp/NZpA :03/03/31 22:22
>>847
BFSですか、ありがとうございます。
FSも、少しずつDataBaseとの垣根がなくなってくるのかもしれませんね。
849ひげぽん ◆Ngzcp/NZpA :03/04/05 00:24
floppyの論理ブロックアドレスとトラック・ヘッド・セクタの対応が
よくわからないので資料を探しています。

ファイルシステムの実験はMonaと切り離して実行できるのがうれしいですね。
851ひげぽん ◆Ngzcp/NZpA :03/04/05 00:48
>>850

どなたかはわかりませんがありがとうございます。
どうも知っている人っぽいのですが、本当にありがとうございます。
作ってみようスレのURLすごいな
あんなにOSあったんだな
853わたもち:03/04/05 23:12
ファイルシステムとか本当なら作らないといけないのですが、
何を思ったかGUI部分を作ってみました。
すべてのコンポネントイベントで再描画したり、かなりいいかげんな作りなので、動きがおかしいです。
エミュレータというか、クロスプラットホームのGUIライブラリーを動かしていると言った方が
近いような気もします^^

エミュレータ(Java1.4以上がないと動きません)
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/6802/AsagaoEmulator.jar
上のエミュレータを実行させた画面
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/6802/emu.png

実行させたプログラム
public static void main(Application app) {
    Frame f1 = new Frame(app);
    f1.setTitle("テスト1");
    f1.setSize(400, 200);
    f1.setVisible(true);

    Frame f2 = new Frame(app);
    f2.setTitle("テスト2");
    f2.setSize(300, 300);
    f2.setVisible(true);

    app.run();
}

スレッドの作成は出来ない予定なので、シングルスレッドで動かすために、ちょっと.NETっぽくなりましたw
>>853
これは素晴らしい
用途から言うとNWSOSの互換ライブラリを思い出したよ
内容は全然違うけど(w

MEGのristiaの狙ってるのとも重なるかも
みんなJava好きだね〜
855わたもち:03/04/06 14:22
OSを作ってみようのリンクすごい量になってますね^^

色々修正したものを同じ場所にアップしました。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/6802/AsagaoEmulator.jar

まだ、システムコールはどういうのが必要かとか、色々作ってみないと分からないと思って
作ってみたものなので、結構いいかげんなところもありますが、全部のソースです。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/6802/EmuSource.zip

イベントディスパッチ部分のきちんとした実装が良く分からないので、
もう少しほかのGUIライブラリーを調べてみます。

>>854さん
ありがとうございます。
気をつけてクラスライブラリーを作れば、OSを選ばず動くものが作れるのと、
Java言語自体の良さもあって好きな人がいっぱいいるんでしょうね。
>>855
> イベントディスパッチ部分のきちんとした実装が良く分からないので、
> もう少しほかのGUIライブラリーを調べてみます。
これはめっちゃ言語に依存する部分。
自前イベントループで自前ディスパッチなんかしなくていいように
隠蔽することを前提にすると……

Cだとコールバックしかない。
C++だとコールバックはきつ過ぎるのでメッセージマップで隠蔽とか、(MFC)
独自プリプロセッサでグルーコードを自動生成するとか、(Qt)
似たようなことをテンプレートでやり繰りするとか、(Gtk--)
継承必須で仮想関数だけでやっちゃうとか、(wxWindows)
みんなめっちゃ苦労してる。
Javaだと仮想関数とインターフェースでのリスナーを使うのがAWT/Swing。
原理的には同じようなことはC++でもできる。(libqv)
コールバックをやろうと思えばリフレクションで出来るだろうけど
実際にそれを実行に移したものは見たことない。
C#だと委譲が強力でオブジェクト指向とコールバックがうまく両立している。
このC#の仕様があってWindows Formsは単純かつ強力に仕上がっている。
(ちなみにJ#はJavaに委譲が追加されている)
Objective-CはC#の状況に似てるかな。

とにかく言語に依存するよ。C#が一番扱いやすいと思ワレメ。w
857わたもち:03/04/06 15:13
>>856さん
書き方が悪かったです。お手数かけました。
イベントの処理を書く部分は、
MFCではたぶんオーバーライドで、
Javaではインタフェースを使った委譲モデルで、
C#ではデリゲーション(メソッドオブジェクトみたいなものっぽい)を使った委譲モデル
というのは知ってるのですが、
困っているのは実際イベントキューからどのようにイベントを伝えるかです。
ComponentEventはそのまま発生元がイベントの伝え先なのですが、
MouseEventやKeyEventはどこへ伝えようかなと、なかなか良い方法が考えつきません。

ちなみに私はC#のデリゲーションは嫌いだったり。
class MainFrame() extends Frame {
MainFrame() {
addMouseListener(new MouseEventHandler());
addMouseMotionListener(new MouseMotionEventHandler());
}
class MouseEventHandler() extends MouseAdapter{
}
class MouseMotionEventHandler() extends MouseMotionAdapter{
}
}

こんな感じでイベントごとにグループわけできないからC#でたくさんイベントハンドラ書くと意味不明になりますw
構造体とかデリゲーションとかいらない機能多すぎです。C#ではきちんとした内部クラスが書けません。
MouseEventHandlerの中から直接MainFrameのフィールドにアクセスしたりできないのです。
言語の好みは人それぞれなんですけどね。
858わたもち:03/04/06 15:31
宗教戦争っぽくなるので、C#とJavaの言語的な所はこのへんで。

今は
MouseEventのTYPE_MOUSE_PRESSED、TYPE_MOUSE_RELEASEDは最前面にあるウィンドウだけに
TYPE_MOUSE_MOVEDは全部のウィンドウに
ComponentEventはイベントの発生元に
イベントキューからイベントを送るということにしているのですが、
色々考えるとこれだとまずいですしね...難しいです
>>857
> MFCではたぶんオーバーライドで、
オーバーライドじゃない部分のメッセージマップがミソです。

> 困っているのは実際イベントキューからどのようにイベントを伝えるかです。
Javaモデルそのものなので、AWT/Swingのソースを見れば一発では?

> 言語の好みは人それぞれなんですけどね。
ここは必読です。
http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20030117/3/
>宗教戦争っぽくなるので、C#とJavaの言語的な所はこのへんで。
ワラタ
引き際が(・∀・)イイ!
好き勝手なこと言った挙句反論は受け付けませんなんてのは
まともな人間のすることとは思えんが
863ひげぽん ◆Ngzcp/NZpA :03/04/06 21:38
今日はFDCDriver::write(int lba, byte* buf)のデバッグをしてました。

実機,VirtualPCではうまく動いているようです。
EOTパラメータではまりそうになりました。

bochsでは相変わらず

write終了後の割り込みがこない
writeコマンド後のリザルトフェーズ時にMSRがreadyにならない。

という二つの現象が見られ、気持ち悪いです。
後者の現象は前者を無視してリザルトフェーズにいったのが悪いのかも

他のOS作者さんたちがどのように対応しているかが知りたいところです。
864デフォルトの名無しさん:03/04/07 09:35
>>856
> Objective-CはC#の状況に似てるかな。
似てるのかな〜?

http://wwwa.dcns.ne.jp/~nito/OSPT/frameospt.html
865bloom:03/04/07 09:40
866デフォルトの名無しさん:03/04/07 16:23
>>864, >>866
Actionの扱いが委譲そっくり。
>>859
> ここは必読です。
> http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20030117/3/
C++やRuby, MixJuiceなどと比較しており、
C#との比較のことがほとんど書かれていないし
Javaの欠陥といってもC#にも共通する欠陥が多いね。
OSの話をしてるかと思えばJavaとC#の話?
OS作りにはVM上で動くJavaやC#よりも
C/C++のほうが適していると思ったりする。

もうそんな考え方古い?
古いとかじゃなくてそもそもOSはJavaやC#では書けません。
>>870
条件を限定しないと荒れるよ。
>>863
>write終了後の割り込みがこない
mona-0.0.5.tar.gzのソースMFDCDriver.cppを見た。
たぶん、確認済みだと思うのであるが、
  while(!waitInterrupt());
は中身が、
  return interrupt_;
だけだな。ちゃんと実行コードは生成されてるのかな。
特に、MFDCDriver::writeでは、直前に
  interrupt_ = false;
があるからな。お子ちゃまが書いたコンパイラでもニフラムで消し去れるな。
割り込みで書き書きする変数にはvolatile付けとけ。C++でも使えるJARO。

DMA使ってるんなら、DMAの完了でええやんけ、と思うのは無責任かな。
参考文献:「トラ技スペシャルN.11 フロッピ・ディスク・インターフェイスのすべて」
873872:03/04/09 05:03
>>863 >>872
連続カキコスマヌ
あらためて、mona.tar.gzをダウソしてソースを見た。FDCDriver.cpp
-Sオプションでアセンブルリスト見たが、volatileは関係なさそうだな。自信無し。
普段gcc/g++使ってないから悪ぃね。でもvolatileはつけといた方が良いよ。

で、「割り込みがこない」と判断した理由は何かな?
  bool FDCDriver::waitInterrupt()
で、数えてるcounterのカウントアップかな?
でもこいつは「waitInterrup()を呼び出す全て」でカウントしちゃうよ。
シークしてるあいだに5000くらい行っちゃわない?たとえbochsでも。
しかもリセットされないしな。
  void FDCDriver::waitPrint(const char* msg)
みたいに、500000くらいにした方がいいんじゃないかなぁ。
bochsでDOS6使ってるけど、フロッピーはやたら遅いしなぁ。
あれは明らかに1シークあたり、1回転してしまってる感じだけどなぁ。
(1回転=0.1秒オーダー)
bochsのソースもちらと見たが、DMA転送完了時に
割り込みを起こすつもりのように見えるけどなぁ。
まぁ、漏れなんかの書くことは気にせずに、他の作者さんの情報を待った方が
いいだろうな。うんうん。
>>870
書けないって断言されると書きたくなっちゃう ♥
875ひげぽん ◆Ngzcp/NZpA :03/04/10 01:12
>>872さん
>は中身が、
>  return interrupt_;
>けだな。ちゃんと実行コードは生成されてるのかな。

すいません。そこまでは思いつかなかったです。
確かにその可能性があるので調べる必要があると思います。

>DMA使ってるんなら、DMAの完了でええやんけ、と思うのは無責任かな。
>参考文献:「トラ技スペシャルN.11 フロッピ・ディスク・インターフェイスのすべて」

おお。ありがとうございます。そのような完了判定方法もあるのですね。
876ひげぽん ◆Ngzcp/NZpA :03/04/10 01:17
>で、「割り込みがこない」と判断した理由は何かな?
>  bool FDCDriver::waitInterrupt()

現在の最新版のソースでは
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/mona/mona_v1.0/src/FDCDriver.cpp?rev=1.11&content-type=text/vnd.viewcvs-markup

console_->printf("\ninterrupt:");
interrupt_ = true;

となっているので割り込みが来ていないことが分かっております。

>みたいに、500000くらいにした方がいいんじゃないかなぁ。

それも考えたのですが、CPUに依存してしまうのでどうも
採用しかねています。

>まぁ、漏れなんかの書くことは気にせずに、他の作者さんの情報を待った方が
>いいだろうな。うんうん。

いえいえ。ソースまで見ていただいてありがとうございます。
これからもよろしくお願いいたします。
877872:03/04/10 09:38
>>876
>console_->printf("\ninterrupt:");
>interrupt_ = true;
>となっているので割り込みが来ていないことが分かっております。
  void FDCDriver::interrupt()
のことだな。trueにするやつは他にもいて、counterのカウントアップがそれだな。
まだ、割り込みが来ないとは言い切れてないよな。
現状だと、「interrupt:」と表示されずに、waitInterrupt()が抜ける、だけであって、
それをもって割り込みが来ないと断言してはいかん。
できれば、何十秒か何分か待って、なおかつDMAの転送も終わって、ディスケットに
データが書き込まれているのに、なお「interrupt:」が表示されないことを
確認すべき。第一、読み込みでも割り込み起こらないの?
「期待した以上に遅れて割り込みが起こるかもしれない」という可能性を捨ててはいけない。
実際問題bochsの挙動に問題があろのだとしても、上記のようなデバッグでは
問題が切り分けできていないとおもわれ。
本当に正しくは、何秒以内に割り込みが起こるはずかを見積もるべきであるが、bochsでは
できない。充分すぎるくらい長い時間を想定すべきかと。
ハードウェアリトライという恐ろしいコトバを記しておこう。

>それも考えたのですが、CPUに依存してしまうのでどうも
counterをタイムアウトの意味で使ってるなら、counterの実装自体がCPU依存であり、
カウントアップ値で5000を選ぶかどうかは上記デバッグの考え方に基づくべき。
bochsでカウンタ5000回回すのに、1秒もかからないような気がする。かかるのか?

>おお。ありがとうございます。そのような完了判定方法もあるのですね。
いや、十ン年前の話だし、8ビット機での話だからな。あてにはならん。
あの本は、98について書かれてるから、一層あてにならん。
それでは申し訳ないので、ついでにWin2000のDDKのFDC.Cを見てみた。
やっぱり書き込み完了後に割り込みがくることを期待するコードになってた。
878ひげぽん ◆Ngzcp/NZpA :03/04/10 22:38
>>「期待した以上に遅れて割り込みが起こるかもしれない」という可能性を捨ててはいけない。

なるほど。これは重いお言葉です。
確かにその通りだと思います。

>やっぱり書き込み完了後に割り込みがくることを期待するコードになってた。

わざわざ確かめていただきありがとうございます。

まずは問題の切り分けから週末にはじめていきたいとおもいます。
879872:03/04/11 00:20
>>878
毎度思うが、ひげタンは人当たりがソフトな書き方らねぇ。
>まずは問題の切り分けから週末にはじめていきたいとおもいます。
読み書き自体は動作していて、実機では問題ないなら、TODOリストにだけのっけておいて
放置する戦術もありだと思ふ。
そのうち通りすがりでその道の達人が指摘してくれるかもよ。
ただし、TODOリストが公開される必要はあるが。
doxyなら、@todo Help達人 て書いときゃいいんじゃないかな。
初めてここみてギャグスレかと思ったらみんなマジだった・・・ネット上で以心伝心なんてちょっと感動
漏れもさんかしようかなぁ
ぶっちゃけそんな喪前が好きだ
882ひげぽん ◆Ngzcp/NZpA :03/04/11 23:16
>読み書き自体は動作していて、実機では問題ないなら、TODOリストにだけのっけておいて
>放置する戦術もありだと思ふ。

そうですね。今日実験してみたところ、3時間ほど放置しましたが
やはり割り込みはきませんでした。(仕事しながらだったのでちょっと自身なしですがw)

TODOリストにあげておいて、後回しがいいかもですね。

いろいろとありがとうございました。m(__)m
883872:03/04/11 23:35
役に立てなくて申し訳ないね・・・がんがってちょ。
884ひげぽん ◆Ngzcp/NZpA :03/04/11 23:51
>>882
s/自身/自信

>>872さん

いろいろありがとうございます。
私なんかより、数倍できる方のようで
自分の力不足を痛感します。
885ひげぽん ◆Ngzcp/NZpA :03/04/13 22:36
やっとFAT12の実装に取り掛かった模様。

ぐりぽん氏に教えてもらった
http://www.vector.co.jp/soft/data/hardware/se016321.html
の資料で奮闘中。

ファイルシステムの開発はMonaとできるだけ切り離して行えるよう
別環境を用意して開発中です。
インターフェースDiskDriverが、その役割を担っています。

ルートディレクトリのエントリの取得と512byte以下のファイルの中身が取得できました。

ファイルシステムでどこまでのパラメータ等をメモリに持つかを迷います。

必要なときに読むか、一度読み込んで変更があるまではキャッシュしておくか等迷いどころです。

ファイルバッファのキャッシュは、更に上位のレイヤーで行おうと目論んでいるのですが
果たしてそこまで行くかどうか。
ひさしぶにりこの板に来て、初めてこのスレ見つけた。
なんだか俺が忘れてしまったものを思い出したみたいだよ。
昔はコンピューターをいじくっているだけで楽しかったのに、いまは仕事になっちゃった。
おまえいらの熱意に乾杯。
モナープロジェクトを全部読み直して、俺も参加準備するぜ!
>>887
がんばれー。
漏れも参加準備しようかな。
>>887, >>888
PC1台ありゃ済むよ。一体、何を準備するの?
890887:03/04/16 03:01
>>889
いろいろ準備はあるぜ。
もう俺はクロックやペアを考えながらアセンブラでかけなくなっちまったし、
makeファイルもかけねえ。
VisualStudioとかJBuilderとかのIDEがないとプログラムが書けない屁たれになっちまった。
あとな、

 そ も そ も モ ナ ー プ ロ ジ ェ ク ト が

     ど う い う も の か わ か っ て な い
>>890
深く考えなくていいでない?昔、アセがかけていたなら思い出すでしょう。
当たって砕けてください。

makeは、

<生成物> : <材料1> <材料2>...
<tab>コマンド1
<tab>コマンド2

例)
hello : hello.o
gcc -o hello hello.o

hello.o : hello.c hello.h
gcc -c hello.c

すべての材料の更新日付と生成物の更新日付を比較して、生成物のほうが
古かったらコマンドを実行する。
これとマクロの使い方を知っていればすぐ使えると思う。
マクロ(特別なマクロも)は他の人よろしく。↓
              、,
              ヾi\      _、-
  lヽ           ヾlll\ _,.-‐'''llllllllヽ
   |ヾ゙l      ,,,,,,,,,;;;;;;;;;;;)lllllllllllllllllllllllllllllヽ
  |ヾ゙l  ;;;;;;;;;;;;;;;;_、-‐'''^^~~ ̄ ̄ ̄ ̄ ̄ ̄~~`^^^ ー--、
    |ヾ゙ ,.、--‐‐''´              ___  l i /⌒l  ヽ
    | (ー----−−― ―― ''^^^~ =二三/  l l ヾ'''ノ __,ノ
    |//`ー‐--、,._____           ゛゙   l ト、_   ̄`ゝ
  |ノ,/ /////////~`^ヽ、_____     ___,,..、、、ト-テ‐‐‐'' ̄
   |ノ/  `~^ー‐--、////ノlllllllノ~`^^^フll/
  |ノ          ̄ ̄/lll/    //
                //      `
              `'
マグロかよ!!
とか言いたかった…
894デフォルトの名無しさん:03/04/17 07:36
>>891->>893
ワラタ
895山崎渉:03/04/17 15:12
(^^)
896デフォルトの名無しさん:03/04/19 01:21
山崎上げ
897山崎渉:03/04/20 03:41
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
ヒゲポソ、最近のすすみ具合はどんなもんですか?


突然だが、Gentoo 1.4 rc_4 の Live CD がものすごく格好良いす。
参考になればと思って言ってみますた。
899ひげぽん ◆Ngzcp/NZpA :03/04/22 22:44
>>898
FAT12のドライバをMonaとは切り離して実装中です。
読み込みに関しての仕様をやっと把握できたのでがりがり実装中です。

ただ仕事が最近も忙しいため、昔ほどは思うようには時間が取れない状況です。
やる気だけは、あるのですが・・・

一応以下の感じで進む予定です。

ファイルシステムの実装
ユーザーモードの実装
ファイルシステムをユーザーモードで呼び出すことにより
マイクロカーネル化
シェルの実装
名無したんが鮮やかに900げっとヽ(`ー´)ノ
ど素人のプログラム全然判りませんな人間ですが、質問していいデスか?

ファイルシステムって絶対決めちゃわないといけないんですか?
よく判らないんですが、例えば MacOS X ではバーチャルボリウムレイヤがあって、その上で動いてますよね?
だから、バーチャルボリウムレイヤが対応していればどんなファイルシステム上でも一応動作できるようになってますよね?
そう言う風には出来ないんですか?

って言うのがどれほど大変な事なのかも判らないやつなんですけどね。

変な事書いてすんません。
>>901
> そう言う風には出来ないんですか?

いくらでもできるだろ。
と言うか今時の OS は、複数のファイルシステムをサポートするのは珍しくない。
当然どっかのレイヤーで仮想化していると思うよ。

それに仰々しい名前を付けて知ったか君にネタを提供するかだけの差だと思う。
>よく判らないんですが、例えば MacOS X ではバーチャルボリウムレイヤがあって、その上で動いてますよね?
>だから、バーチャルボリウムレイヤが対応していればどんなファイルシステム上でも一応動作できるようになってますよね?
バーチャルボリウムレイヤはあくまでも「バーチャル」なので、論理的な存在だということ。
どっかで物理的なフォーマットを用意する必要があって、OSのレベルだとそれも用意しておく必要あるってこと。
実際にファイルにアクセスして読み書きすることもOSの仕事のうちだからね。こんなところでOK?
904ひげぽん ◆Ngzcp/NZpA :03/04/27 01:18
多忙につき開発低迷中。以前ソース整理をしました。
その結果、現在のMonaのソース行数は以下のようになっています。
stl_portは、私の書いたソースではありませんので*.cpp, *.hが
本当の行数ですね。

SLOC    Directory       SLOC-by-Language (Sorted)
42535   src_stlport     ansic=42533,sh=2
2889    src_top_dir     cpp=2323,asm=566
957     src_include     cpp=678,ansic=279
92      src_FreeBSD     ansic=92
57      tools           cpp=57

Totals grouped by language (dominant language first):
ansic:        42904 (92.21%)
cpp:           3058 (6.57%)
asm:            566 (1.22%)
sh:               2 (0.00%)
正直、Monaの進行速度には不満がないと言えば嘘になるけど、
自分が参加して引っ張る余力もないから批判はできないねぇ……
>>892
どうでもいいが、それホントにマグロか?
鰯?
環境ホルモンで死にかけのシーラカンスみたいだ
909ひげぽん ◆Ngzcp/NZpA :03/04/29 23:15
>>905

たしかに、Monaの開発速度は以前より遅くなっていると思います。
多忙なせいなのもありますし、ひげぽんの怠慢もあると思います。
何とかモチベーションを維持してがんばります。

というわけで、Monaにはまだ組み込まれていませんが
FAT12ドライバーの読み込み部がなんとなくできましたw

ドライブレターをまだ決めてないのですが一応ファイル内容が読み込めています。
以下テストサンプルコード
910ひげぽん ◆Ngzcp/NZpA :03/04/29 23:16
    if (!fat->initilize()) {

        int errorNo = fat->getErrorNo();

        if (errorNo == FAT12::BPB_ERROR) printf("BPB read  error \n");
        else if (errorNo == FAT12::NOT_FAT12_ERROR) printf("NOT FAT12 error \n");
        else if (errorNo == FAT12::FAT_READ_ERROR) printf("NOT FAT12 error \n");
        else printf("unknown error \n");

        /* error */
        return -1;
    }

    printf("fat initilize\n");

    if (!fat->open("SOMEDIR\\DIR1\\DIR2\\DIR3\\DIR4", "SOME.CPP", FAT12::READ_MODE)) {
        printf("open failed");
    }

    while (fat->readHasNext()) {
        byte buf[512];
        fat->read(buf);
        for (int i = 0; i < 512; i++) printf("%c", (char)buf[i]);
    }
Monaの他のOSと比べてのアドバンテージは何?
912ひげぽん ◆Ngzcp/NZpA :03/04/29 23:26
ネタとして
気分だけ盛り上がって、放置気味のファイルを公開します。
何かMonaでの有用な使い道が見つかったり、改良してくれる人が
いたりしたらうれしいです。

BitMap.cpp/h
 ファイルシステム実装勉強中に勢いあまって作ったものの使用していない
 メモリ管理やら、クラスタ管理やらに使えるかも。

rtc.cpp
 リアルタイムクロックで、日付時刻を取得しようとしつつ
 いつの間にか忘れてました。FAT12書き込みのときまでには必要ですね。
Monaのほかの部分と結構独立しているので誰か、完成させてくれないかなあ(ボソ

SystemInfo.cpp
 cpuidという命令を使用して、現在Monaを実行しているCPUが何者なのかを
 知ろうとする機能を持たせようとしました。
ベンダーIDを取得したところで別の機能の実装に入ってしまいました。
 これもうまく拡張すればいろいろ便利かも。
913ひげぽん ◆Ngzcp/NZpA :03/04/29 23:31
>>911
>Monaの他のOSと比べてのアドバンテージは何?

今現在は全然アドバンテージにはなっていないですが

カーネルがNASM, GCCを用いて少量のアセンブラと大量のC++で実装されていること。
オブジェクト指向をカーネル実装にも適用しようとしている。

UNIXクローンや、POSIX準拠を目指しているわけではないので
フットワークが軽い?

あたりでしょうか。
>>911
ひげぽんの人柄、 これにつきる
いま、>>914 がいいこと言った。
特に初めの方は、またいつものネタスレかよ... という感じで叩かれもしたけど、きちんと対応してたからここまで来れたんだと思う。
俺も色々勉強になったし、何よりやる気が重要であることを再確認させられた。
厨房化が著しいこの板で一番まともなスレだと思う。
916ひげぽん ◆Ngzcp/NZpA :03/05/02 23:54
>>914,915さん
なんだかとても恐縮です。m(__)m

今日は
>>912
で書いていたBitMapクラスを
FAT12のクラスタ管理に使用するようにしました。

FAT12.cppは、読み込み部だけでソースが10KBなので
他の機能と比較してわりとコード量が多めですね。
917ひげぽん ◆Ngzcp/NZpA :03/05/05 23:10
FAT12の実装状況ですが

createFile,changeDirectory, read, writeの実装が
なんとなく完了しました。
事前に用意していたBitMapクラスが意外と重宝しました。

残すは
bool FAT12::rename(const char* from, const char* to) {return true;}
bool FAT12::remove(const char* file) {return true;}
bool FAT12::removeDirecotry(const char* name) {return true;}
bool FAT12::makeDirectory(const char* name) {return true;}

ですが、優先度が低いため後回しにされる可能性が高いです。
とりあえず来週は、FAT12.cppをカーネル本体に組み込むテストと
りファクタリングに時間をとる予定です。

少しでも対応するファイルシステムを増やしたいので
ファイルシステムに共通のインターフェースを考えて行きたいです。
Solarisのvnodeインターフェースメソッドのようなものの簡易版ですね。
read, write, open, close, mkdir, rmdir, rename, link, unlink
seek, fsync, ioctl, create
あたりでしょうか。
918ひげぽん ◆Ngzcp/NZpA :03/05/05 23:20
忘れないように覚書です。

FAT12#writeで
ファイルサイズが小さくなる場合に、クラスタを開放する処理を
入れ忘れました。しまった・・・
919名無したん:03/05/07 15:04
ヒゲポソガソバレ(゚д゚)!!
920デフォルトの名無しさん:03/05/07 21:17
はじめまして、私もFAT12実装中です^^
ところでヒゲポンさんは、WINとの相性は
考えます?
921ひげぽん ◆Ngzcp/NZpA :03/05/07 23:30
>>920
相性とは
FAT12@MONAで読み書きしたディスクがWindowsでも
読み書きできるということですか?

そうであれば、多少は気にしています。

OSとしての互換性、例えば実行ファイル形式等は
特に相性は考えていません。

FAT12の実装をしていて個人的に思ったのですが
既存のファイルシステムのドライバ?が欲しいのであれば
習作以外では、誰かのを作ったのを流用するほうが賢いと思いました。

私は素人なので勉強になったのですが
OSのほかの部分に時間を割いたほうがいい場合もあるかなと。。。
922デフォルトの名無しさん:03/05/07 23:45
んでできたんすか?
923ひげぽん ◆Ngzcp/NZpA :03/05/07 23:47
読み書きは出来ました。ドライバレベルですが。
Windows上からも一応認識してくれている模様。
ただ918のやつはまだ対応していません。m(__)m
924ひげぽん ◆Ngzcp/NZpA :03/05/07 23:54
>>919
ありがとうございます。
もし興味がありましたらMonaプロジェクトへ是非(笑)
MEG-OSの次回策はMonaのプラグインということでよろしいか?
926デフォルトの名無しさん:03/05/07 23:57
いろんな意味でアフォウだがその精神はすごいなぁ。
「作ろう」って言うだけ逝って逃げるウンコとは違うようだ。
最終的にはWINDOWSなしで直に起動できればおもろいんだがなぁ。
ってそれが目標ですか?
927ひげぽん ◆Ngzcp/NZpA :03/05/08 00:04
>>926
>最終的にはWINDOWSなしで直に起動できればおもろいんだがなぁ。
>ってそれが目標ですか?

こんにちは。Monaは、いちおうWindowsなしで起動しますよ。
ただそれは、Monaがすごいとかではなく

兄貴分?のNWSOS,OSASK,MEG-OSでもとっくに実現されていることです。
OSとしての機能を以下に追加していくかが課題です。

いまはMonaは最低限の機能さえ実装できていないので
まずはそこからです。m(__)m
近々Monaの上でMona用のアプリが作れて動かせるようになったら色々やってみたいですね(w
開発も大変でしょうががんばってください。応援してます。
(へっぽこプログラマな私には何もお手伝いできませんが・・)
> FAT12の実装をしていて個人的に思ったのですが
> 既存のファイルシステムのドライバ?が欲しいのであれば
> 習作以外では、誰かのを作ったのを流用するほうが賢いと思いました。
完全なマイクロカーネルにまでは時期尚早ですが、
何らかのダイナミックロードというかプラグインが出来るようにして、
OSサーバとして他のフリーなOSのコードがそのまま動くようにしておくと、
(そのままと言ってもサーバ部分の再コンパイルは必要ですが)
いくらでも潰しが利くんじゃないかと思います。

別にPOSIX準拠が目的でなくても、
DarwinみたいにBSDレイヤを動かせば自動的にBSDになりますし、
Mona独自サーバを動かせば独自モードになります。
それがマイクロカーネルですから。

DarwinのソースとFreeBSDのソースを比較してみると色々と面白いです。
古いDarwin 1.3.1はVPCでも動くはずです。

> 私は素人なので勉強になったのですが
> OSのほかの部分に時間を割いたほうがいい場合もあるかなと。。。
純粋に効率から言うとそうですね。
見たところ一部FreeBSDのコードが入っているみたいですが、
こうやってつなぎで取り合えず突っ込んでおいて、
後で純血(?)を追求できる余裕があるときにでも
リプレースしてしまうというのも手です。
全然関係ない質問ですがよろしくお願いします。
bochsでエミュレートする時fd.cという名前のファイルをリンクしたバイナリから起動したら
3rdExceptionを吐いてしまいます。
そこでfd.c->aiueo.cに変えてみると今度は動くのです。
bochsに禁止語句か何かあるのでしょうか?
エラーはLOCK PREFIX UNALLOWEDと出ています。
bochs 2.02 on linuxでの話です。
エェーPOSIX準拠目指してよぉ
932ひげぽん ◆Ngzcp/NZpA :03/05/09 00:02
>>928さん
>近々Monaの上でMona用のアプリが作れて動かせるようになったら色々やってみたいですね(w
>開発も大変でしょうががんばってください。応援してます。

ありがとうございます。道のりは長いですががんばります。

>>929さん
>OSサーバとして他のフリーなOSのコードがそのまま動くようにしておくと、
>(そのままと言ってもサーバ部分の再コンパイルは必要ですが)
>いくらでも潰しが利くんじゃないかと思います。

なるほど参考になります。

>DarwinのソースとFreeBSDのソースを比較してみると色々と面白いです。
>古いDarwin 1.3.1はVPCでも動くはずです。

おお。面白そうですね。
ソースを探してみたのですがちょっとどの部分がcoreなのか分かりませんでした。
ttp://www.opensource.apple.com/darwinsource/1.3.1/index.html

>後で純血(?)を追求できる余裕があるときにでも
>リプレースしてしまうというのも手です

なるほど同感です。

>>931さん
>エェーPOSIX準拠目指してよぉ

現在はPOSIX準拠は視野に入っていません。
というか詳しく知らないのが現状です。
もっと勉強してから考えさせてください。
>>931
自分で頑張れ。
ここはそういう板 (のはず) だ。
934920:03/05/09 00:19
>FAT12@MONAで読み書きしたディスクがWindowsでも
>読み書きできるということですか?
そうですね^^読み書きだったら、FATの考えかただけ
わかれば作れるのですが、WINだとどうなっているか?と
考えると、少し行き詰ってしまうんですよね^^

>OSとしての互換性、例えば実行ファイル形式等は
>特に相性は考えていません。
実行ファイル・・・考えたくない事項ですなぁ^^;
>>932
> ソースを探してみたのですがちょっとどの部分がcoreなのか分かりませんでした。
xnuです。

あと以前誰かが言ってましたが、
引用符">"と引用文の間に空白を入れておかないと
数字が行頭に来たときにリンクだと誤認識されてうざいです。
>>932
> 現在はPOSIX準拠は視野に入っていません。
> というか詳しく知らないのが現状です。
> もっと勉強してから考えさせてください。
POSIXを自前実装するのは時間の無駄と思う。
DarwinやRT-Machと同じようにFreeBSDをOSサーバ化して乗っけた方が簡単。
別にLinuxでやってもいいけど。(MkLinux)
というかはっきり言ってそうでもしないと個人レベルの作業量じゃ無理。
# RT-Machのページは閉鎖されちゃったみたいで残念……。
なぜα版品質にもなってないのにβ名乗ってるの?>Mona
αとかβとかの意味わかってる?>ヒゲポソたん
>>937
とりあえず、知ったかぶるのは止めといた方がいいと思うよ。
>>938
グローバルスタンダードの時代に俺用語はまずいだろ
>>939
俺用語はまずくて俺OSはいいわけですか。そうですか。
(゚д゚) ハルダナァオイ
どう見てもビル君の俺OSですが何か?
ttp://pc.watch.impress.co.jp/docs/2003/0509/kaigai01.htm
新スレの季節だねぇ
944デフォルトの名無しさん:03/05/09 21:11
そうだねぇ。
>>942
作業効率が上がりそうなOSだねぇ。

  演 出 過 多
947ひげぽん ◆Ngzcp/NZpA :03/05/10 11:50
>> 935
> xnuです。

ありがとうございます。いま登録しました。

> あと以前誰かが言ってましたが、
> 引用符">"と引用文の間に空白を入れておかないと
> 数字が行頭に来たときにリンクだと誤認識されてうざいです

失礼しました。m(__)m

>> 937
> なぜα版品質にもなってないのにβ名乗ってるの?>Mona
> αとかβとかの意味わかってる?>ヒゲポソたん

するどいですねぇ。
まああまり気にしないでください。(笑)
948ひげぽん ◆Ngzcp/NZpA :03/05/10 11:58
>>の使い方間違えました。
ごめんなさい。

お詫び?に久々にdoxygenドキュメントを公開します。
よくよむとMonaの全貌がうっすらと見えるかもしれません。

ttp://mona.sourceforge.jp/document/
>>948
乙彼〜

ところでちょっとした疑問なんですが何故日本語で書かないんですか?
それだけでも厨房にとっては読みやすさが月とすっぽんです〜
海外の開発者を呼び込もうって言うならそもそもsf.jpじゃなくてsf.net使うべきだし……
>>949
doxgenで日本語を扱いづらいからだと思う
このぐらいの英語で困る人もあまり居ないだろうし
新スレ: OSを作ろうpart6
http://pc2.2ch.net/test/read.cgi/tech/1052537020/
>>950
ttp://www.miv.t.u-tokyo.ac.jp/~yabuki/tip/doxygen/doxygen.htm
日本語のコメントはHTMLドキュメントの中で文字化けしますが、
ファイルDoxygenでHTML_HEADERを設定しておくとこの現象は起こらないようです。
953ひげぽん ◆Ngzcp/NZpA :03/05/10 17:40
>>949
> ところでちょっとした疑問なんですが何故日本語で書かないんですか?
> それだけでも厨房にとっては読みやすさが月とすっぽんです〜
> 海外の開発者を呼び込もうって言うならそもそもsf.jpじゃなくてsf.net使うべきだし……

そうですね。一応海外の開発者を呼び込もうという目論見でしたが
呼び込まれていません。(笑)
954わたもち:03/05/11 11:27
>> part6 36さん
これはいいものを見せてもらいました。
デザインパターンにそった非常にまとまりのいいコードのようなので、
読みやすいです。コメントが日本語なのも心強いです(笑

言語自体も、型を取り去って、簡略化したJavaみたいなものなので、
分かりやすく、気楽な感じでイイと思います。
Wabaだとクラスファイルへのコンパイラを用意しないといけないのですが、
これならその必要もないですし、このへんからやってみるのもいいかなと思っています。
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
956
957957:03/05/11 21:30
957
958
959
960
961
962
963
964
965ひげぽん ◆Ngzcp/NZpA :03/05/11 22:58
965
966
967
968
969
>>965
ひげぽんカワイイw
971
972972:03/05/12 07:45
972
973973:03/05/12 09:22
973
974
975
976
977
978
979979:03/05/12 18:17
979
980
981
982
983
984
985
986
987
654321
>>987
最初何のことか分からなかったけど気付いて笑っちゃった
989
990
991991:03/05/12 23:11
991
992992:03/05/12 23:40
>>1000
1000ゲットにふさわしい書き込みを期待していますよ
993
994
995
996
997
998
999ひげぽん ◆Ngzcp/NZpA :03/05/13 00:56
999
10001000:03/05/13 00:59
   ,rn
  r l l n
  | 、. !j
  ゝ .f         _
  |  |       ,r'⌒  ⌒ヽ、
  ,」  L_     f ,,r' ̄ ̄ヾ. ヽ.
 ヾー‐' |     ゞ‐=H:=‐fー)r、)
  |   じ、     ゙iー'・・ー' i.トソ    ひげぽんマンセー
  \    \.     l、 r==i ,; |'
   \   ノリ^ー->==__,..-‐ヘ___
     \  ノ ハヽ  |_/oヽ__/     /\
      \  /    /        /  |.
        y'    /o     O  ,l    |
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。