1 :
デフォルトの名無しさん :
03/05/10 12:23
3 :
デフォルトの名無しさん :03/05/10 12:26
HSO最強
4 :
デフォルトの名無しさん :03/05/10 12:26
HSP
7 :
デフォルトの名無しさん :03/05/10 15:49
244 名前: Be名無しさん 投稿日: 02/12/16 01:11 個人的には、何気に大本命は、MONA-OSだと思ってる。 source-forgeを活用したり、doxygenでドキュメント整備したり、 STLでOS本体を記述したり、開発時間の短縮に工夫があるし。 とくにSTL採用は大きい。何気ないものでもキューしたりスタックしたりする とき、速度面、保守面、安全面でも、STL採用のMONAは強力だと思われ。 379 名前: Be名無しさん 投稿日: 02/12/22 08:44 個人的には、来年の今ごろは、MONA >> NWSOS >>>>>>> OSASK だと思ってる。 で、MONA。今のところ、完全に発展途上であるものの、時間の合間に開発を 進めている?!わりには進行がとても速く、また、カーネルの記述にC++を積極的に 採用するなど、後々、大規模になったときの効率低下に心配がなさそう。 本人の知識吸収意欲も旺盛で、吸収したものをそのまま血肉としてMONAを拡張していけそうな予感。 382 名前: Be名無しさん 投稿日: 02/12/22 08:52 ま、現時点だったら、NWSOS > OSASK > Mona であることに異論はないのだが。 ただ、379が言ってるように将来込みで考えると、 MONAがNWSOSを追い抜き去るのは時間の問題なような気がする。 プリンタだとかモデムなどのドライバも、ソース公開されてるMONAが有利だと 思われ。 387 名前: Be名無しさん 投稿日: 02/12/22 09:06 漏れもMONAがNWSOSを抜き去るに一票。 超先生が指摘してるように、ソース公開されてるからこそ 問題点を掲示板上だけでもアドバイスできたりするし、 この手の垂れ込みが、カーネルの開発速度を加速すると思われる。
174 名前: Be名無しさん 投稿日: 03/01/19 18:12 ☆OSとしての成熟度 NWSOS > OSASK > MEG > MONA ☆OS開発または、同様分野(エミュレータ等)に注いだ時間 作者経験年数 OSASK > NWSOS >> MEG >> MONA ☆作者の人格 MEG == MONA >> OSASK == NWSOS ☆新技術への挑戦 NWSOS == MONA >> MEG >> OSASK ☆コミュニティの広さ OSASK > MONA >> MEG > NWSOS ☆作者がOS開発にかけられる時間 OSASK == NWSOS >> MEG == MONA 181 名前: Be名無しさん 投稿日: 03/01/19 23:55 「新技術への挑戦」は明らかに違わないか・・? 182 名前: Be名無しさん 投稿日: 03/01/20 00:03 「作者経験年数」は、MEGの位置が違うと思う。 MEGのページの年表を見る限り: OSASK > MEG > NWSOS >> MONA 184 名前: Be名無しさん 投稿日: 03/01/20 00:11 つーか、「作者の人格」は煽りだろ? 乗るなよ。何の役にも立たんから。
>>7 半年が経過しましたがMonaはNWSOSはおろか
OSASKの足元すら見えていないようです。。。
10 :
デフォルトの名無しさん :03/05/10 16:11
今だ!10番ゲットォォォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ .∩∧,,∧ (´´ ,,,,,,,,,,ミ゚Д゚,,彡 (´⌒(´ ど,,,, ,,,,,二⊃≡≡(´⌒;;;≡≡≡ ~''(,,,,,づ゙゙ (´⌒(´⌒;; ズザーーーーーッ!!
>>9 いいんじゃない。
ひげぽんにはひげぽんのペースがあるんだし。
他人がごちゃごちゃ言うことじゃないと思うよ。
>>12 1人でやってんならそうだけど、
オープンソースの強みがまるでないじゃん。
自己レスカコ(・∀・)イイ!!
>>12 オプソにしたから開発が一気に加速したなんてのは
犬糞に限った、しかも都市伝説みたいなもんだろ?
だから
>>14 やL氏はオプソ忌み嫌ってんだよ。
(*´Д`)何故そこでボクが出てくるの?
>>15 結局Monaがオープンにしたことで自分自身は得しないで
あさがおとかにパクられただけだしね
Lたんは正しかった!
>>16 >よく知らない人にソースコードを開示するような事はあり得ません。
そりゃ知らない人に裸見せろ言われてもねぇ・・・
紫外線で目が焼けるけど、いい?ヽ(`ー´)ノ
>>1 >>2 >>5 >>6 >>7 >>8 新スレ立ておつかれさまです。
> 半年が経過しましたがMonaはNWSOSはおろか
> OSASKの足元すら見えていないようです。。。
確かにおっしゃるとおりですね。
まあぼちぼちがんばります。
Monaがオープンソースにして得した点を思い出せる限り列挙 ・Makefileの書き方が悪いよと教えてもらった。⇒ビルド効率大幅アップ ・こういうソースを書いたんですけど動きませんと質問できた。(特に初期) ・STL導入パッチを作ってくれる人がいた。 ・ブートコードやその他いろいろなコードを提供してくれる人に出会えた⇒ぐりぽん氏 ・プロジェクトホームページを作ってくれる人に出会えた⇒YOSSY氏 ・オープンするということで多少コードの品質に気をつけた〈本当か?) ・souceforge.jpを使用できている。 ・進捗状況がプロジェクト外の人にも分かる。 思ったよりもオープンソースの効果がなかった点 ・共同開発者になかなか出会えない。 プロジェクトに参加してくださる方々はたくさんいるのですが 私のプロジェクト運営のまずさや、OS作成の敷居の高さ?により 実質コードを書いているのはひげぽんとぐりぽん氏になってしまっている。
そういえば、わたもちさんのOSはC++でカーネルを書きかえるそうです。 どういうアプローチを取られるのか大変楽しみです。 Monaもがんばらないとなあ。
ひげぽんいい人だね〜!
更新に気づくの早すぎデス。ひげぽんさんに見張られています(汗 のんびり作っていて新しいハードウェア(64bitCPUなど)が主流になっても、 楽に対応できるよう、できるだけハードウェアよりな構造にならないように 作ろうというのが書き換えのねらいです。 普及していて、ネイティブコンパイルできるオブジェクト指向言語ということで C++にしました。 CをC++に変換するといった方向なのと、もともとオブジェクトを意識した構造に なっているため、おそらくソースコードの見た目はあまり変わらないと思います。 後々、恩恵にあずかれるはず。
>>27 それをパクるというのです。
オープンソースの弊害簡単にぱくられるとつらいねぇ。
あのう、話がさっぱり見えませんが。 何か問題があるようでしたら、はっきりとお申しください。 私自身はなんら違反している行為はやっていないと思いますので...
>>29 ひげぽん (および協力者) からクレームついてるわけじゃないでしょ ?
>>17 見りゃわかるけど、なんでも損得に置き換えたい人みたいだから、放置しておいた方が良いよ。
FAT12.cppをリファクタリングしました。
そのとき気づいたのですが、mallocを実装しているのに
freeを実装していませんでした。w
急ぎで実装しましたが、今まで気づかなかった・・・
>>27 見張っていませんよ。たぶんw
>> ひげぽんさん ひげぽんさんがライセンスを本意で決めたのではなければ、 お気にさわっていらっしゃるかもしれません。 対処しますので、他の手段でこっそりおっしゃってください。 また、ページングの実装等どうぞお役立てください。 >> 見張っていませんよ。たぶんw 少し冗談入ってましたw
>>32 わたもちさん
>>28 あたりの発言を気になさっているようですが
私は何も気にしていません。
お互い切磋琢磨してがんばりましょう。
> お互い切磋琢磨してがんばりましょう。 ひげぽんさんも毎日忙しいと思います。 また得意な技術も似たところがありますし、似たような環境の者同士、 お互い頑張りましょう。でも正直、先駆者であられるひげぽんさんには 頭があがりません。
予定調和
実はMonaって爆発的進化の臨界前夜な気がする
COM32(※)みたいな単純なのでいいからプロセスを実装
↓
簡単なコマンドラインシェルが登場
↓
dir(ls)とかcat(type)とか簡単なコマンドが登場
↓
フレームバッファを使ったGUIアプリが登場
↓
プロセス間通信を実装
↓
ウィンドウシステムの実装に着手
↓
ツールキットの実装に着手
↓
DLLを実装
↓
本格的なGUIアプリが登場(Mona独自レイヤ)
↓
BSDサブシステムでPOSIXをカバー
↓
X Window System移植(BSDレイヤ)
↓
ルートレスのX on Mona GUIで混在環境
↓
最強の和製OS誕生!!
※ COM32 by sakky
ttp://meg-os.org/project/com32.xml
両方にレスするのも大変だから、 前スレ使い切ろうや。
>> 36さん 前スレにレスしました。
>>37 こんなところでその名前を聞けると思ってなかったわけだが。
MonaでCOM32採用はセグメントがらみがあるので難しいと思う。
part6おめ〜。 ( ´¬)y-~ マッタリ頑張れ。 いつも拝見させてもらってます。
>>38 950過ぎたら通常捨てるだろ
今はちょうど話題も切れてるし
>>39 見たいなことされたほうが読みにくくて迷惑だ
余計なこと言うなよ
さてFAT12ドライバをMona本体に組み込むところでいろいろ問題発生
その多くはDiskDriverを継承したFDCDriverの出来が良くないことに
よるものと思われます。
よく考えればFDCDriverはきちんとしたテストをしてなかったような・・・
>>34 わたもちさん
> でも正直、先駆者であられるひげぽんさんには
> 頭があがりません。
そんなことはありませんです(´ヘ`;)
先駆者といえば、川合さん、LightConeさんなどですね。
確かにお二人には頭が上がりませんw
>>37 夢のロードマップですね。
> COM32(※)みたいな単純なのでいいからプロセスを実装
> ↓
> 簡単なコマンドラインシェルが登場
> ↓
>dir(ls)とかcat(type)とか簡単なコマンドが登場
この辺まではなんとなくイメージがわきます。
>>43 さん
> ホラでもいいから公式ロードマップみたいなの示さないと
ではホラを含めて今後の予定をw
ファイルシステム FAT12のサポート(ブート後のお話)
↓
ブートコードからカーネルイメージをFAT12のファイルとして読み込めるようにする。
↓
ユーザーモードの実装(プロセス?スレッド?)
↓※
簡易シェルの実装(ls, pwd, cd?)
↓
ファイルシステムよりファイルを読み込みプロセスとして実行できるようになる。
↓
ユーザーモード用APIの整備
↓
ラインエディタの登場(誰か作ってくれるとうれしい)
↓
ページングなどカーネルの基礎作りに戻る。
※この辺で余裕があれば、ファイルシステムをユーザーモードで動かして
マイクロカーネル化への第一歩とする。
>>45 いや、こういうのじゃなくて、アーキテクチャのコンセプトを示さないと
よその人は参加しにくいと思うんだが。
今だと
・C++でカーネルを実装
ぐらいしかないし。
これだとちょっと抽象的で何を目指しているのかわからないので、生暖
かく見守るしかできないと思うんだが。
>ファイルシステム FAT12のサポート(ブート後のお話)
>簡易シェルの実装(ls, pwd, cd?)
から察するにWindowsクローンなOSを目指しているの?
あ、 >簡易シェルの実装(ls, pwd, cd?) だからWindowsクローンじゃないか。スマソ。 でも、POSIXには準拠しないって言っていたよねぇ? ますますわかんなくなってきた・・・。
>>24 > ・共同開発者になかなか出会えない。
自分から提案してバリバリするような人なんか滅多にいないから、
(たとえば会社でする事がなかったら暇つぶしするのが普通の人でしょ?)
リーダーが仕事を作って分配しないと
たとえ実力があっても持て余す結果になるよ。
だけど分配したところで↓みたいな結果にもなりがち。
http://pc.2ch.net/test/read.cgi/os/1050476647/79-85 (79からリンクされているMLのログは必読!)
ここで共産主義の計画経済が自由主義の競争経済に
敗れたことを考えると良いと思う。
タスクを重複しないように分配して各々に一任するんじゃなくて、
やりたい人に重複とか気にせずに分配して競争が発生しても
あまり気にしないというのはどうだろうか。
もっとも規模が小さいうちは競争は自主的に回避されるだろうけどね。
>>48 MSも社内で競争させてるしね。
K氏は無意識に自覚してるのか知らんけど、
横からの提案を本流に取り入れるのは拒否して
やりたかったら勝手にやってくれ、
もし良かったらパクるからってのが口癖だし。
もっとも成果上がってないけど(ゲラ
>>ひげぽんタソ > するどいですねぇ。 > まああまり気にしないでください。(笑) 矛盾してませんか?↓ Development Status: 2 - Pre-Alpha
>> 50 粘着ヤメレ
粘着が二人紛れ込んでいるようだが……
>>55 どうせ参加するならMona Projectにしろよ
while(true);よりfor(;;);を使った方が良いよ>Mona
>>57 そんな宗教的な問題、どっちだっていいよ。
>>58 whileだと評価のコストがかかるから一般的にforが薦められているんだよ。
そんなにコストを気にするならgoto使えと
>>60 gotoはJavaで使えないですよね。
だからC系言語一般で薦められているんです。
>>59 一般的になんて聞いたことないし。
評価コストは完全に実装依存の問題だろ
最適化コンパイラが無い時代でもないんだし、
どうでもいい
>>62 聞いたことがあるかどうかは基準にならないとして、
コーディングスタイルを一般的なものに合わせるのは
開発者に対するアピールになりますよ。
だから大きなプロジェクトではインデントの仕方とかも
細かく決められているわけです。
だからXPなどでもコーディング規約がうるさく言われるわけです。
もっともそんなことを意識するのはどうでもいいので、
書くときは各人で好きなように書いておいて、
最後に自動整形ツールで統一するわけですが、
ツールで整形できない部分もあるわけです。
プロジェクトをマネジメントするということと、
個人が趣味で楽しく書いていくのとは違いますよ。
その辺をなあなあでやると結局一人でやってるってことになりかねません。
Monaは既に10人以上の大所帯ですし、
今後実用性が高まればもっと増えることが期待されますからね。
>聞いたことがあるかどうかは基準にならないとして
確かにこれは基準にならないが、
ソースも示さず「一般的」と断言する根拠はどこから出てくるんだ?
63 != 59なら忘れてくれ。
というか、
forに統一るのが是で、whileに統一するのが非であるとする根拠が
>>59 ならば、フーンとしか言えないんだが。
そんなZ80とか8086の時代じゃないんだから評価のコストなんて… というのはダメなんだろうか。 真っ当なコンパイラならfor(;;)とwhile(true)のどちらも同じコード吐くだろうし。 個人的には無限ループだということがわかりやすいのでwhile(TRUE)
Cにはbool型がないからマクロを使うかwhile(1)となって統一性がなくなる
>>66 Cにだってboolはあるぞ。
まあ正しくは_BoolだしC99準拠でないと使えないわけだが。
>>63 ML公開されてないだろ。
本音では信者以外はどうでもいいってこった。
>>46 > いや、こういうのじゃなくて、アーキテクチャのコンセプトを示さないと
> よその人は参加しにくいと思うんだが。
うーんそうですね。コンセプトですか難しいですねぇ。
> だからWindowsクローンじゃないか。スマソ。
> でも、POSIXには準拠しないって言っていたよねぇ
Windowsクローンは目指しません。
POSIXに準拠するかどうかは現時点では分かりません。
ということなのでls, pwd, cdは、あくまでも
簡易的なコマンド名にすぎす、動作が他のOSにそっくりというわけではありません。
>>48 > だけど分配したところで↓みたいな結果にもなりがち。
>
http://pc.2ch.net/test/read.cgi/os/1050476647/79-85 > (79からリンクされているMLのログは必読!)
うわ内容が重いですね。
でもそこに書かれていることは、一部Monaプロジェクトにも当てはまりますね。
>>50 >> まああまり気にしないでください。(笑)
> 矛盾してませんか?↓
> Development Status: 2 - Pre-Alpha
あまり深く考えていませんでした。
すいません。今から全て訂正するはきついので
ヒゲポソはバカだったということで勘弁してください。m(__)m
>>57 - 68 while (true)問題について
私は自分の書くコードでは
無限ループは while (true)でなるべく統一するようにしています。
他のコーディング規約も、ある程度は他の開発者の方に私のスタイルに
合わせていただく方針です。
もちろん、他のスタイルのほうがメリットがあると感じれば
簡単に乗り換えますw
>>70 statusは、どこかのフォームから簡単に変更できた記憶が。
これ、物によってバラバラな場合、どのへんにしておくか迷うんだよねえ。
ところで、コーディングスタイルをまとめた文章ってあります?
ソース見ればある程度読み取れますが、俺スタイルに合わせろということであれば、
きちんとまとめておいたほうが、完全に統一できて後々苦労しないと思います。
あちこち首突っ込んでいる身としては、あまりきつくない方がうれしいんですけどね。
#ifdef USE_WHILE #define loop while(true) #else #define loop for(;;) #endif loop{ } とりあえずこう書いとけ
>>71 アドバイスありがとうございます。
>>72 ・基本的には既存ソースのコーディングスタイルに準じる。
・インデントは半角空白×4を基本とする。
・tabはMakeFile以外では原則的に使用不可とする
てな感じになっております。
>>73 冗談ですよね?
>>74 > ・tabはMakeFile以外では原則的に使用不可とする
Emacsで書かれたとおぼしきソースに
8文字スペースの代わりにTabが入ってるよ(Emacsデフォの挙動)
この辺は63の言うように自動整形ツール使った方が楽だよ
>>75 それは失礼しました。
commit前にM-x untabifyしているつもりなのですが
たまに忘れます・・・
77 :
デフォルトの名無しさん :03/05/14 02:27
>>63 ひげぽんにPMの仕事させてどうするのよ。
設計やコーディングに専念してもらいましょうや。
>>77 誰かがやらないと1人プロジェクトのままだよ。
77さんどうですか?
79 :
デフォルトの名無しさん :03/05/14 02:55
漏れは、成果物が出来上がるかどうかにはあまり興味がなくて、自分では できない事をやっている姿をマターリと見守って一緒に一喜一憂した気分に なりたいだけなのかも知れない。 一人プロジェクトでいいのかどうかはひげぽん氏が判断すれば良いか。 どっちにしてもガンガレ!
面白いことやってますよねー。。。応援します。>ヒゲポンタン、MonaPJ
UNIXのソースコードにつけた注釈が本になったケースがありますが、
その逆を見ている感じ?
>>69 あたりでコンセプトに悩んで
いらっしゃいますが、端から見たこのOSの特徴って、それ自体が
十分勉強の素材になるってことだと思います。LinuxはMINIXがあまりに
教育目的すぎたので実用のほうへのフラストレーションがわーと
噴出し発展、ってな印象ですが、MonaはあえてMINIXの後追い、(=勉強・
教育的要素を色濃く残しておく)てのはどうでしょう (w
・・・という意見は結構前からあるのかな?
>>80 自己レス
あまりに抽象的だったので、具体的なアイデアを一つ。
例えばカーネルの上に(?)どかっとRubyみたいなスクリプト
処理が載ってて、ls, cat などはスクリプトで書かれている。
すぐ cat すれば、すぐソース見れて勉強になる&自分なりの
ls, cat を作ってもいい。。。 IOやオブジェクトの扱いなどは
スクリプト側が提供。そりゃコンパイラで作るより遅い
だろうけど、最近のPCの速さだったらあまり苦もなく動くかも。
# ただファイルサイズは大きくなるからFDのみとはいかないか (w||
富豪的 OS か。
84 :
デフォルトの名無しさん :03/05/14 22:00
for (;;) を使うべきだ。なぜなら、foreverと読めるから。
>>84 > for (;;) を使うべきだ。
こっちには賛成。
理由は、コンパイラが while(1) に対して文句を言うことがあるから。
でも、
> なぜなら、foreverと読めるから。
には、反対。
ずっとループするというプログラムもごくまれにあるけど、普通は...
for(;;){
...
if(...) break;
...
if(...) return;
...
}
と途中脱出するから。
コーディングスタイルをそろえることに意味があるんだから、 ひげぽんが書いたものにあわせればいいんじゃない?
> 理由は、コンパイラが while(1) に対して文句を言うことがあるから。 while(1)はJavaやC#でコンパイルが通らないってのもある。 なるべくC/C++/C#/Javaは同じスタイルで書いたほうが良い。
88 :
デフォルトの名無しさん :03/05/15 00:25
俺はトリッキーな記述は慎むべきだと思うな。従ってループは while( true ) { ; } でいいと考える。何故か? 読みやすいソースコードは誰のため? ヒト? or コンパイラ? もちろん我々のために読みやすく理解しやすく記述する。 癖のある書き方だと後に誰もメンテしてくれなくなるよ。
for(;;)が無限ループくらいC/C++使いなら誰でも知っている。 俺はwhile(1)派。警告?出ることもあるね^^;
いつからここは宗教スレになったんだろう…(´ー`)
そんなレベルの話じゃないと思う・・・(´ー`)
if(1) goto kurikaeshi;
^^;^^;^^;^^;^^;^^;^^; ^^;^^;^^;^^;^^;^^;^^; ^^;^^;^^;^^;^^;^^;^^; ^^;^^;^^;^^;^^;^^;^^; ^^;^^;^^;^^;^^;^^;^^; ^^;^^;^^;^^;^^;^^;^^; ^^;^^;^^;^^;^^;^^;^^;
くだらん問題を気にするなよ
ひげぽんが自分のスタイルに会わせてくれって言ってるんだからそれで良いじゃないか
このスレはwhile教徒とfor教徒が互いに罵倒しあいながら友情を深めるスレになりますた!
HTMLしかかけないヤツがいきなり来て言うのもなんだが。 がんがれ。
PowerPC, とか,68k つまりx86以外アーキテクチャ(結局今は現実的選択だとマクしかない?) に移植検討して欲しい (クレクレ君氏ね、と言われそうw)
>>99 > つまりx86以外アーキテクチャ(結局今は現実的選択だとマクしかない?)
WorkStation とかならいくらでもあるけど。
Sun Blade 150 なら、20万以下からあるし。
> に移植検討して欲しい
> (クレクレ君氏ね、と言われそうw)
と言うかそれをやる余力はさすがにひげぽんさんにはないと思う。
移植しやすいように配慮しておくことはできるかもしれないけど。
個人的には、移植なんか考えずに 386 アーキテクチャべったりの実装と言うのもおもしろいかもしれないと思っている。
>>100 >> に移植検討して欲しい
>> (クレクレ君氏ね、と言われそうw)
> と言うかそれをやる余力はさすがにひげぽんさんにはないと思う。
> 移植しやすいように配慮しておくことはできるかもしれないけど。
こんにちは。そうですねぇ。
x86で手一杯です。。。。
ただ、本気で移植してくれるという人がいたら
もしかしたら協力できるかもしれません。
FDC WRITEの挙動が怪しくて四苦八苦中 実機ではなく、VPCでの話です(実機ではそれ以前の問題が・・・) byte command[] = {0xC5//FDC_COMMAND_WRITE , (head & 1) << 2 , track , head , sector , 0x02 , 0x12 , 0x1b , 0x00 };
for (int i = 0; i < 73; i++) { memset(tbuf, i, 512); g_fdcdriver->write(i, tbuf); } のようにwriteを順に行うと ADDRESS 0x4A00を境に0x0000に戻って書き込みが 行われてしまいます。 つまり、ループしてしまう。。。。 writeコマンドパラメータが悪いのか・・・ うーん。こまりました。 これが解決するとVPCでFAT12::writeが動くのになあ。
>>103 解決しました。
lbaToTHSの変換が間違ってました。
お騒がせしました。
水面下でソースが更新されてますね。 漏れは、プログラミングはド素人ですが、 ソースを読んでOSのつくりを理解しようとしてます。 プロジェクトメンバーの方々、頑張って下さい。
>>105 こんばんは。ありがとうございます。
105さんのようにソースをチェックしてくれている人は
意外と多いかもしれませんね。
FDCDriver@実機で大苦戦中
症状1(某メーカー機)
writeはきちんとできるが、read(0, buf)すなわちlba=0のデータが正しく読み込まれない
lba=1以降は通常に読める。
※その後調べたところwrite(0, buf)もおかしい。データが壊れている。
ただし壊れたデータも通常にread出来ていない模様。
症状2(自作機)
write失敗
ST0=0x40 ST1=0x04 ST2=0x10
readも微妙。
for (int i = 0; i < 73; i++) { memset(tbuf, i + 5, 512); if (!g_fdcdriver->write(i, tbuf)) { g_console->printf("write failed %d", i); g_fdcdriver->motor(false); while (true); } } memset(tbuf, 0x99, 512); if (!g_fdcdriver->read(0, tbuf)) { g_console->printf("read failed %d", 50); g_fdcdriver->motor(false); while (true); } for (int i = 0; i < 512; i++) g_console->printf("[%d]", tbuf[i]);
while (g_demo_step < 8); memset(tbuf, 0x99, 512); if (!g_fdcdriver->read(1, tbuf)) { g_console->printf("read failed %d", 50); g_fdcdriver->motor(false); while (true); } for (int i = 0; i < 512; i++) g_console->printf("[%d]", tbuf[i]); while (true);
とここまでがテストコードです。 FDCDriverの品質を上げるのにはもう少し 時間がかかりそうです。
なんで
>>57 がいきなりあんなこと言い出したか分かったYO!
>>106 今回の問題とは関係ないと思うけど、
DMAする時のアドレスが0x?0000またぐと正常に転送できなかったような記憶があります。
チェックしておいた方がいいかも。
>>111 さん
DMAは 64KB以上16MB以下ならOKと認識しているのですが
合っていますでしょうか。
今日もFDCDriver#writeが安定せず
FDCがどういうタイミングで割り込みを発生させるかが
全ては分かっていなさそう。
seek,write,recalibrate完了時というのは分かるのですが
result phaseでも割り込みが返ってきているようにも見受けられる。
writeが完了していないのにdma転送をstopしている様な気がする。
113 :
デフォルトの名無しさん :03/05/21 02:30
書き込みが失敗する→リトライを数回する 最初の書き込みレコードのデータが壊れる→モーターの回転が上がってないかもしれない→書き込む前に一度レコードを読み出して回転を上げておく コード書いたこともない素人の意見だがナ(・∀・)
114 :
ひげぽん ◆Ngzcp/NZpA :03/05/22 01:21
>>113 > 書き込みが失敗する→リトライを数回する
上記コードを追加したところLBA=0のデータも正しく読み書き
できるようになりました。ありがとうございます。m(__)m
あと解決すべき問題は
(TRACK, HEAD, SECTOR)=(0,1,18) または (1, 0, 18)のデータが
ST0=0x44, ST1=0x80
End Of Trackを超えてセクタREAD/WRITEしようとしたエラー
でwriteできない点です。
writeコマンドへのEOTパラメータは0x12を渡しています。
LBA THSの変換は以下の通り
void FDCDriver::lbaToTHS(int lba, byte& track, byte& head, byte& sector) {
track = lba / (2 * 18);
head = (lba / 18) % 2;
sector = 1 + lba % 18;
return;
}
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
こっちに書いた方が良いような気がするので今日の作業分: ○ IRQハンドラを呼んでも落ちない(仮想関数使うのを諦め、直接ハンドラのアドレスを渡す × マウスの初期化が腐ってる × PCICの初期化が腐ってる 4点。 ISADeviceのドライバなら書けるので暇な人は書いてみて下さい …と言いたいところだけれど、真っ当なサンプルが無いのでダメっぽ。 C++で書いたクラスを別ファイルにしておいて、実行時にリンクする手法募集。。
>>112 例えば、0x10ff00にセクタバッファが来た場合、
最初の256byteは予定通りの場所に入るけど、
続きが0x110000じゃなくて0x100000に入るよって事です。
>>116 普通にダイナミックリンクできない?
今日のMona
○ PIC設定の重大なミスを訂正
○ PCカードを刺したまま起動すると認識する。電源供給周り作ってないので認識は出来ず。
試験前なのでちょっと中断。
>>117 ダイナミックリンクにはOSのサポートが不可欠です。
ELFなり何なりで格納したとしても、リンカが必要になります…
とりあえず、gccのnew演算子が実際にはどのような処理を行っているのか調べて見る必要が有りそう。
何気にokuokuすげーな 断食して体調崩して水泳をサボる基地外と勘違いしてた
120 :
ひげぽん ◆Ngzcp/NZpA :03/05/25 00:23
FDCDriverがFAT12対応の障害になっています。
頭を冷やして、他の実装行こうかなあ。
症状の詳細はread/writeが一部パラメータのみ失敗する。
0, 0, 18 読み書きOK
0, 1, 18 読み書きNG END OF TRACK越えエラー
1, 0, 18 読み書きOK
1, 1, 18 読み書きNG END OF TRACK越えエラー
T, H, S
0, 1, 18の場合RESULTは
0x44,0x80,0x00,0x00,0x01,0x12,0x02
1, 1, 18の場合は
0x44,0x80,0x00,0x01,0x01,0x12,0x02
他のOSのソースと見比べてみましたが
原因がつかめていません。
ちなみにソースは
ttp://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/*checkout*/mona/mona_v1.0/src/FDCDriver.cpp?rev=1.25&content-type=text/plain FDCDriverを書いたことのある人がいらっしゃいましたら
アドバイスをいただけたら幸いです。
>>120 DMA転送サイズを-1することで解決しました。
ご協力いただいたosdev-jの皆様ありがとうございました。
とくにS氏サンクスですm(__)m
new なんて、継承辿って継承元から順に malloc してるだけだって。
ん名分けないだろ
>>123 んなもんです。
mallocした後コンストラクタ走るけど。
どっちかっつーとvirtualの扱いの方が面倒。
本日の成果 ・information出力関数info()を追加。こいつのおかげでいろいろ助かります。 ・FAT12.cpp ファイルサイズがwrite時に小さくなったときのクラスタ解放を実装。 ・FAT12クラスの実機でのテストを開始、手元の実機では動作を確認。 テスト内容は bool createFlie(const char* name, const char* ext); bool open(const char* path, const char* filename, int mode); bool close(); bool read(byte* buffer); bool write(byte* buffer); bool write(byte* buffer, int size); bool changeDirectory(const char* path); bool changeDirectoryRelative(const char* path); を駆使して、とあるディレクトリの下に新規ファイルを作成する。 osdev-jでテスト願いを出しております。ご協力のほどお願いいたします。
すれ違いだからこれでおわりにするけど いくつ継承していようがメモリ確保は一度だけ。 順にメモリ確保なんてしないよ。 メモリ管理とvtblのことよく理解してないみたいだけど、 いい加減なことはイワンでほしい
要は何がしたいかというと、new時に外部のオブジェクトファイルを適当に選んで動的にリンクしてしまいたいということです。 Be辺りは出来たような気がしなくも無く… g_consoleを初期化する前に、BIOSを利用したコンソールを用意しておくべきかと > hige氏 一部のマシンで起動できない -> g_console初期化前に割り込みなどの要因でg_consoleへのアクセス発生 -> ぬるぽ -> CPU例外ハンドラ(以前はdummy_handler) -> やっぱりアクセスできない -> ダブルフォールト -> やっぱりダメ -> リセット の予感 > hige氏
>>127 hige氏を2回参照してシマタ…
もちろん、独自の言語やコンパイラを用意するというアプローチも無くわ無いですが…
<後ろ頭>-~ operator newをoverrideして 外部からobjectを取り込むのかな。 void* operator new(size_t n) { if(boot_phase) return external_objects[...]; /* 別にnewにする必要ない<>-~ */ else return malloc(n); }
>>126 > いくつ継承していようがメモリ確保は一度だけ。
実装べたべたの話と言うことは理解してるよね。
複数回 malloc() が禁止されているわけじゃないよ。
粘着君は巣に帰っていいよ
.mjt氏
> g_consoleを初期化する前に、BIOSを利用したコンソールを用意しておくべきかと > hige氏
確かに必要性を感じますね。
> 一部のマシンで起動できない -> g_console初期化前に割り込みなどの要因でg_consoleへのアクセス発生
> -> ぬるぽ -> CPU例外ハンドラ(以前はdummy_handler) -> やっぱりアクセスできない -> ダブルフォールト
> -> やっぱりダメ -> リセット の予感 > hige氏
以前このようなことで悩んだことがあります。
割り込みをうまいことコントロールしたつもりがやはり
ある程度は避けられませんね。
>>129 超先生さん
顔が変わりましたね。
超先生のおっしゃる方法もありですね。
というか、勉強になります。
.mjt氏 global.hで GraphicalConsole g_g_console; VitualConsole* g_console = &g_g_console; 見たいなのはどうでしょうか? 初期化の順番にも寄りますが。
連続書き込みすいません。 .mjt氏 リアルモードでmode12へ移行しているので GraphicalConsole以外の出力先をあきらめた経緯があります。 g_consoleの中身がstaticで実行開始時に保証されていれば とりあえずOKでしょうか。
>>135 それでOKでしょう。多分。。
# 画面分割や出力先の変更が出来ないうちは
ちょっち忙しいので四日程お待ちを。
リアルモードのBIOSを呼ぶインターフェースも必要になるかもしれないですね
まぁ、それは必要になったときにつけましょうか。
>リアルモードのBIOSを呼ぶインターフェースも必要になるかもしれないですね Lタソが自慢してたね
>>137 リアルモードのBIOSコールに関しては、想定される用途(*)が結構限定的なので
一旦OSをとめてしまう構造にすれば、実装自体は難しくないかもしれません。
現状のMonaはカーネルは低位メモリに読み込まれていますが、充分な余裕が有ります。
やってみたわけではないので臆測ですが。
OSの中で矛盾無く取り込むにはBIOS-ROMを仮想86のメモリにちゃんと
マップしたり、DMA等のアドレスをきちんとしたりしなければいけないので比較的面倒かも。
# それこそ、エミュレータを書くくらいの気合で。
そこまでする必要性は余り感じていません。
* 想定される用途
画面モードの切り替え、PC本体情報やデバイスの情報の収集等。
画面切り替えは置いておいて、デバイス情報収集をカーネル起動後にやる意味があるのだろうか。 起動前に済ませておくべき事項では?
>>140 同意。
ホットプラグ考慮しなければ、リアルモードなうちに収集してしまったほうが簡単ですな。
画面切替えは、VESAなら32bitインタフェースあるからVM86使って呼ぶ必要ないし。
どうしてもVM86を使うなら、先頭の1MだけLMA=VMAにすれば、
あんまり考えなくてもいいかも知れない。
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
_______ ___________________ |悲しいときー! | |レス来てると思って開いたら山崎だったときー!!|  ̄ ̄ ̄∨ ̄ ̄ ̄  ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧∧ ∧_∧ ( ゚Д゚) ( ´д` ) ⊂○ ○ヽ ||””””””””””| | | ̄ ( )山崎渉 ( ) / /\\ ||_(^^)__| / / > / / / ) ) (_) > (_) (_)
>>140 デバイスマネージャ周りをカーネルにあまり入れたくないというだけです。。
その辺はひげぽん氏の方針もあるでしょうから、はっきりした見解が有るまで触らないでおきます…
で、
>>133 を実験してみましたが、正常起動していた機種でもお亡くなりに…
printfを呼ぶとよく分からないIPで停止。
もっと問題の根は深そうなのですが、正常起動しない機種が手元に2つしかないので暫く放置で。
また、落ちたときの状況を考えると、
>>127 で考えた原因は成り立ちません。
そもそも、カーネル初期化時は 当然の如く割り込み禁止状態ですからね…
# 何故気付かなかった…
>>143 レス2個ついてる思ったら、山崎とお前かよ !!
ひげぽん氏どこー?(AA略
>>140 情報収集は開発当初にそこまで手が回らなかったので放置気味の状態です。
>>144 > その辺はひげぽん氏の方針もあるでしょうから、はっきりした見解が有るまで触らないでおきます…
特に思うところはないので今度相談しましょう。>mjt氏
>>146 ここにいますよw
どういうご用件でしょうか?
>>144 PCIにぶら下がったデバイスの構成情報なら、
32bitインタフェース使って収集できると思いますが。
あとはBIOSワークに残された情報を集めれば、
VM86を持ち出さなくてもよさそうな気がする。
>>148 情報どうもです。
とりあえず、資料を集めて眺めてみる必要が有りそうですね。。
そうなってくると、いよいよカーネルの構成を考えなければならない段かもしれませぬ。
151 :
デフォルトの名無しさん :03/05/31 19:24
USBってさ intで割り込みかけて情報ひきだすんじゃないの? BIOSとかから情報えられないから違うんだろうけど
今日の変更点 FAT12ブート対応 * firstboot.asm : FAT12ブート対応 ぐりぽん氏提供のコードにBPBなどを追加。 デバッグルーチンを削除 * fat_write.cpp : 新規作成 FAT12.cppを駆使して配布用ディスクイメージを作成する。 * Makefile : FAT12イメージを作成するためいろいろと変更 * secondboot.asm : a20enableとgraphicalmodeをfirstboot.asmからsecondboot.asmに移動。
このテストってやっぱり危険でつか? 試したいけど、怖くて試せない…(汗
>>154 残念ながら100%安全とはいえません。
ですがそんなに危険なものでもないと思います。
テストは、フロッピードライブアクセスを行います。
なのでフロッピーディスクやフロッピードライブが壊れる可能性があります。
(今までは壊れたことはありませんが。。。)
HDDアクセスは一切行いませんのでHDDのデータが壊れることはまずないでしょう。
ただどんな結果・損害が出てもひげぽんはフォローは出来るかもしれませんが
一切責任は取れませんので、自己責任でご協力いただくしかないと思っています。
すいません、説明不足かもしれませんがよろしくお願いいたします。
あ、FDDがこわれるならまだいいか。 HDのデータだったらヤヴァイなぁ…。 これから試してみます。
MONA VMwareで動かないよ〜 No bootable CD, floppy or hard disk was detected. To install an operating system, insert a bootable CD or floppy and restart the virtual machine by clicking the Reset button. って出る。
age
MMMMMMMM nnnnnnnn でよい?
>>161 Monaのそれぞれの文字が512個表示されていれば
テストOKです。
>>157 VMware出来どうしないとのことですが
試していただいた手順を教えていただいてもよろしいでしょうか。
osdev.infoで動作報告していただいたかたの中で
DUMP版では動くが正規版では動かないというご報告がありました。
推測するにFDCDriverのどこかの処理でFDCの割り込み(処理終了のおしらせ)
を待つべきところを、まっていないのが原因かもしれません。
DUMP版は大量に文字表示をするので、結果的に処理終了後に次の処理に行くのでは。。。
とおもって処理を見返してみましたが今のところそれらしいところは見つかっていません。
FAT12ブートってカーネルがFAT12領域にあるってことですかね? FAT12が扱えれば、テスト環境でのログ取り&報告に使えそうですね。
>>163 設定は大丈夫だと思うので、ディスクイメージのディスクへの書き込みが上手く行ってないのかもしれません。
2.0だと[FAT 12]:before read resultの直前または同時にVMwareがpanic。
>>164 おっしゃるとおりですね。
FAT12のドライバが安定したらそのようなロギングを導入します。
動作しない実機があるようですが、こちらで再現する実機がないため 苦戦中。
>>167 素人的発想ですが、動かない場合のチップセットを聞いてみてはどうでしょう?
今のところ起動しない(Loading後リブートする)チップセット
・i815 ?
・440 BX/LX/ZX
起動しないCPU
・i386?
メモリ周りの処理がマズいのかもしれません。
と、言うのも、手元のPS55Noteや近くの440ZX機ではnewで作成したポインタ(の、メンバ)にアクセスした瞬間に再起動しているようです。
...ふと思ったのですが、CPU例外はNMIですよね。。。多分。
それなら、
>>127 もありえない話ではないのか...
とにかく、グラフィックコンソールを初期化する前に何らかの出力を得られるようにしたいところです。
# 最悪、シリアルポート経由ででも。。。
シリアル出力だけならout命令とウェイトだけでいけるよ。 本当はキューの空きチェックしないといけないんだけどね(笑
>>170 UARTは16bytesでしたっけ。>FIFO
落ちたときのダンプ吐くだけなら16bytesに収める(IP , フォールト番号ぐらいで必要充分)手も(w
メモリのAllocateはやっぱり正常終了している模様...
古いハードだと互換性のために初期状態ではA20ゲートが閉じているのかも
>>173 いやA20はアドレス線の問題だからプロテクトモードでも影響するのでは
PS/2だとport0x92みたいだし…
>newで作成したポインタ(の、メンバ)にアクセス <後ろ頭>-~ 激しくポインタがNULLの予感。 bssとかはclearしてあるんだろうか。
F I X さ れ ま す た A20Enableが不味かった模様。
>>174 「キャッシュ周りは」です。
CPUキャッシュはA20のマスクとはお構いなしに動作するので、その辺の考慮が必要になります。
A20のマスクはCPU外部でやってることです。
で、今度はIRQハンドラ周りがバグってます...
既知のバグ:
・FATブートが一部マシンで物凄く遅い(相性?
+コンパイルオプションで切り替えたりとか出来るようにした方がいいかな...
・IRQハンドラが腐ってる(ひげぽん氏のコードでは未使用
>>175 幾つかデバッグルーチンを追加してみましたが、その辺は大丈夫な模様。
# というか、その辺の検証はFATブート以前にもやってたんです。。
とりあえず、インテルなチップセットな方はもう一度検証していただくことになりそうです。
テスト用のディスクイメージはひげぽん氏がそのうち上げると思います。。
さらにバグ発見:
・.mjtのテストコードのうち、CMOS読み出しによる拡張メモリ搭載量測定が不正確
+実際のメモリ量 - 1 MBになるのは正常です。
ttp://okotama.org/osdev-temp/mona-boottest-030604l1.zip 取り急ぎ起動テスト版。起動するかどうかだけのテストです。
>>171 デバッグ出力に使うなら、きちんと作ったほうがいいよ。
そんなに難しくないし。
絶対メモリダンプが欲しくなる。
気がむいたので適当にでっちあげ。 全然確認していないので、使う前に確認して。 begin 644 serial.c.gz M'XL("*KWW3X``W-E<FEA;"YC`)54VVZ;0!!]-E\Q4J0*["I>\*54KB/A0M1( MO@G3OD;8NXY7PJ:"M>,V]K]W=B%<8J5)>()SSIXY,[/BBK(UWS$8.0OO?N3\ M=$$'T^YV+$*@#68?#$V[RC7^R`=="1W7]5O$*)C@QVO,G5=CS`IS5V.LDAE_ MKS&=DIG4F6[ES*+&]"IGZDR_9!9UMR^55MWQ^)6&W/'D14,EY01.#\B1D!K4 MEY!YJ;(N59TR6S";FW4O"5D2ZA;0?#J;>G75W/OE31$R[1*:N2Y(E:UI[2:L M]JF(M_PO@PU+A5#NWW<"#[[V*XY%LVC169>VMS-_X@2@R_3V204^J4"& M*L-W7/`PDG5LJT=DG4/,J<+O4Y8@ITO`T)XTP.<01Z'@$4.!@,>0BX&"Y1>- M!IKZH!$,*U>U723.M%@U90)$<H1UG&Q#@0JV"Y=H2OF!4P988K614:0\WHO? M<2*6.EZX:W*T"9SRIHS,#TUTF61(!BK1-S-_:;6,/%%><AGN:1(*=F&-%^E: MQ]B?<'CKM?$NXQ<&DXH!(<;-C?WA>+6)4)Z^;R0?F,59K5R>W@O8LC0-'UBQ M\0Q^WOEJ$R;0W*8/SXN7&X[29/"_6_"X04Q7I^!):V`MR8$X0L)"^D>6:M!8 M4E*-;GA/^"YO9>%CPL;;333.61W0=>D@)VX1`X9#())5L]Q1R!K`@L6P\/?W 8665#U1LE4-5J93V=<6K_`'"WX79_!0`` ` end
>> mjtさん、その他協力者の皆様 平日にこんなにスレが進んでいてびっくりです。 > A20Enableが不味かった模様。 今度詳細を教えてくださいm(__)m
>>182 アップロードしました。ものすごーくいいかげんな説明も付けてあります。
煮るなり焼くなり御自由に。
> A20Enableが不味かった模様。 <後ろ頭>-~ 実際に有効になるまでタイムラグがある現象?
I/Oポートの連続書きこみにウエイトが必要だったのでは?
>>186 そう言う感じです。多分。
というか、正常に動作した機種はA20のマスクを実わしてないとか?
暇な人は実験してみよう!(逃
>>184 どうもです。実際に使うのはもうちょっと先ですが、デバグ用途以外に、もしかしたらSLIP実装しちゃうかもしれません。
# Winで使えるSLIPゲートが有るなら話は早いんですけど
早いところドライバインターフェース作って、スレのみんなでドライバ作ればドライバそろってウハウハかも。
188 :
jack-11 :03/06/06 13:35
正常に動作ができない原因は、おそらくIA32MemoryManagerが原因です。 他の実験中に確認できました。 (MemoryManegarのどこが原因か、まだわかっていないですが) GraphicalConsoleをやめて(new演算子をパイパス)VGAモードで動作が確認できました。(ThinkPad570)
189 :
デフォルトの名無しさん :03/06/06 14:08
電池と豆電球でPC作ればOK
レモンPCなら昔あったな
192 :
jack-11 :03/06/06 19:10
ThinkPad570で動作確認できました。<最新版
>>19 おりば曰く:
> ◆ ソースを見せるなんて、裸を見せるくらい恥ずかしいかもしれない
こればからは著作権者の気持の問題だから、あまりいえない。
ただ、人がソースを見たくなるような機能をもつコードを書いたのなら、
それは十分に胸が張れることだと自分は思う。
それは自分が無から己の知と指を使って創造したものだ。
それだけで素晴らしいではないか。
そして、人に見せる事を前提に書いたコードはちゃんとする傾向があるので、
あとで自分でメンテするのも楽。
自分専用に書いた自分のコードほど読みにくいものはない。(経験談)
>早いところドライバインターフェース作って、スレのみんなでドライバ作ればドライバそろってウハウハかも。 電波爆発させても誰も相手にしない罠 なぜか!? 敢えて言おう、カスであると!
>>198 宗教論争はあっちでやってもらえばいいかと。
>>194 もう少し、細かく書いたほうが資料として役に立つと思います。
他人にも自分にも。
>>195 確かにおっしゃるとおりです。m(__)m
どうも細かいところに気がいかないw
>>199 > もう少し、細かく書いたほうが資料として役に立つと思います。
> 他人にも自分にも。
なるほどどの程度細かく書いたらよいのでしょうか。
一応今回メモリマップを書き直したのは、PAGING導入を見越して
再確認がしたかったからです。
>>201 あくまで、個人的な意見ですが、
たとえばGDT、IDTとかは、カーネル起動後には確保されてるわけだし、
BUFFだけは別に書いたほうがいいかも。
Memory for Kernelはあんまりかなぁと思いました。
あと、仮想メモリを使うつもりなら、仮想空間と実空間を書いたほうがいいかも。
空間内用が同じでも、同じものを二つ並べるだけで違ってくると思います。
同じって言葉で書くだけでもいいけど。
203 :
デフォルトの名無しさん :03/06/12 00:01
もうちょっとマメになれ>okuoku L氏は貴様以上の電波だったが貴様よりマメだったぞ
>>203 お前さ、OSASKスレの方でもいろんな人を叩いてるよな
売名行為で自作自演するスレはここでつか?
よし、俺も名前売るか
>>207 かわいいねーちゃんのスマイルでも0円だからなw
>>206 個人情報の売買ビジネスすか? Y!BBが始めたみたいだからブローカーになるとかw
カーネルじゃなくて、javaや、.net、tronみたいな環境を作らない? で、主要アプリがこっちに移植されたら下のOS(windows)を さんざん姦った後の女のように捨てる。 javaは理想は高いが、できあがるアプリがへぼいし、 .netはどうせwinから出ないし、 tronは相手にされてない。 とりあえずapiはjava、.netあたりのパクりで。
スマイルの価格暴落は、マクロナルドの招いた大失態。 おかげで、PS2発売後のDVDプレイヤーのように、 業界はみな値段を下げざるを得なくなったからな。
>>210 激しく同意、つーか、実はトレンド(w
ristiaっつってmegがそれやろうとしたんだよな
Lに潰されたけどnwsosでやろうとした香具師もいた
わたもちもJavaエミュとか作って似た方向を考えてる
ところでgcjって使ったことある?>ひげぽん&わたもち
カーネル開発に使うにはlibgcj依存が問題になりそうだが
STLの時みたいなハックで解決できると思う
そしたらJavaでカーネル書けるようになる
どーせひげぽんもわたもちもJava厨なんだから、
C/C++なんかよりいいでしょ(ゲラ
UNIX系OSはたくさんあるがGUIはXで実質的統一されている。 これはつまり、カーネルが乱立していても、 GUIは協業できることを示している。 ディストリビューションとかそういう問題じゃないんだよ>わたもち
>>211 スマイルなんざどーでもいい
中田氏の価格破壊キボンヌ
>>202 貴重なご意見ありがとうございます。
仮想メモリを実装した際にメモリマップを更新いたします。
>>212 gcjですか、情報ありがとうございます。
higeposを開発始めた当初は、今よりもっと周りが見えていなかったので
javaでOS開発できるならしたいと思っていましたが。
今では考えを改めました、OSのカーネル部分はjavaで開発するメリットよりも
javaで開発するための環境づくりやつじつまあわせにかかるコストのデメリットのほうが
大きいと考えています。
なので私は、実行環境としてのjavaのようなものをOSに載せるほうに
今は興味があります。
全然関係ないですが、↓こんなすごい人がいます。
ttp://wiki.osdev.info/index.php?AnotherMona
>>217 gcjのイメージはそんな別世界のものじゃないよ
Cygwinでgcc 3.2使ってるなら
gcjも入ってるからすぐ試せる
適当なHelloWorldとかを
gcj Hello.java --main=Hello
とかすればコンパイルできる
gcj -c Hello.java
ってやるとHello.oが出来て
これはC/C++で作った.oと混ぜてリンクできる
つまりgcc内での扱いはC/C++と同じ
g++でiostreamとか使うとlibstdc++が必要なように
(その結果、Monaではiostreamは使えない)
gcjではlibgcjが必要
g++ならiostreamを使わなければlibstdc++は必要ないけど
問題は、gcjはlibgcjを切り離せないってこと
STLを移植したみたいにしてlibgcjを移植する必要がある
穴モナ期待あげ
>>210 Monoプロジェクトって.netクローンじゃなかった?
かなりまえに、Javaで書かれたOSがあったと思う。
Sunがやってたような・・・でも、当時の技術だと、遅すぎて使い物にならなかったらしい。
Monaなら、(コンパクトなカーネル+Java(?)VM)+Java(?)で書いたサブシステム
とかのほうがいいのかも。
1からOSを作成するのでなく、既存OS上に仮想OSを作ろうかと。
新OSには、何が必要で、何が必要でないか意見ください。
今考えてること
・バイナリのクラスをリンクできる
・プロセス間通信が簡単
・OS非依存にするための最低の機能だけ提供
・仮想OSのバイナリは、そのOSのものでいい(ソースで互換をとる)
・「C:」とかのドライブのほかにUNIXっぽいファイルシステムもつかえる
・・・ほとんどActiveX?
>>212 すでにいろいろあるんだなあ。
ristiaってのはmegともに消えた?
今日の成果 ページングのテストをしていました。 Monaでは0〜4MBのメモリしか使用していないので 0〜4MBで、論理ページ=物理ページ と、ページテーブルを設定しました。 そして4MB以上はページテーブルを割り当てていない状態を作って ページフォルトハンドラの実験等を行いました。
>>222 VMとか大げさなことしなくても、たとえばただのライブラリのQtもそれを狙ってんだよ。
>>224 COMみたいな規格を考えてたんだけど、
たしかに単にライブラリでもいいかな。
でもwindowsではマルチプラットフォームのメジャーなライブラリってなさそうだし。
特殊なハードやOSを必要としないアプリ(ブラウザやメールとか)は、
OSに依存しないようになれば、ネタOSも使えるようになるのにな。w
,.._ ∈ ゚ ) | | (゚Д゚ )''""~"''彡,, ⊂;;⊂'';;;,,,.,.,.,.,.,;;つ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ プカプカ ,.._ ∈ ゚ ) | | . . 保守> (゚Д゚ )''""~"''彡,,゜。.゚ : U;;U'';;;,,,.,.,.,.,.,;;つ )) ) ) ) ) ) ) ) ) ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ パシャパシャ
.∧_∧ (´∀`) <およびかい? ~~~~~~~~
230 :
デフォルトの名無しさん :03/06/26 12:27
良スレあげ
久しぶりの書き込みです。 Monaで次に何を実装しようかと、考え続ける日々です。 そろそろプロセスの概念を決めるのが良いのかな。
232 :
デフォルトの名無しさん :03/06/28 01:08
過去スレ漁ってたんだけど、ひげぽんがスレたててからもう一年経ってるんだね これからも頑張って下さいね。( ´∀` ) 漏れは今、monaのブート部分みて勉強してます
233 :
デフォルトの名無しさん :03/06/28 01:34
をー、更新無くて心配していたよー。
基本的に下げ進行でいきましょう。
各カーネル内タスクは、CS,SSのセレクタ値は一応異なった値を持たせてあるけど、 ベースとリミットが全く同じなので全く保護されていない。 また、システムコールのfork()をみると、cs,ss,dsのdpl=0,rpl=0なので、 やはりレベル0のまま。 マイクロカーネルの問題の焦点は、異なるメモリ空間でのデータの参照や レベル間の遷移を如何に高速に出来るかという点にある。 そこが未だに解決されてないマイクロカーネルの弱点で、モノリシックカーネル に対する最大の弱み。 また、逆に今のようにシステムタスク間で、保護壁がないならば、マイクロ カーネルの目的である安定性は達成できない。 マイクロカーネルが、出現時期は新しくとも、良い形態とは限らない由縁。
自分で作りもしないくせに未完成のものに何文句つけてんだ?ん?
いや、少なくとも自分には一つ勉強になる話だった。 マイクロカーネルは優位性が薄いってよく言うけど 具体的に何がネックなのか知らなかったから。 ここはみんなの勉強場所なんだからそう突っ掛かるもんでもないでしょ。
>>235-239 2−3日前ぐらいにL氏が「Minixのマイクロカーネル構成は変」
と言ってた内容と等価なハナシで,それを具体的な内容で説明してくれてる
ので折れも参考になった。
ひげぽんやアナモナ作者さんもタネンバウム先生の本から学んで
いて,現段階ではMinixの弱点(or手抜き)も とりあえずそのまま
持ち込んで,後で改良の予定なのかな?
AnotherMonaのソースはMinixと関数名や、switch()文まで同じ箇所がある。 作ったと言うより必要な部分だけ取り出しただけだったり、、。
242 :
デフォルトの名無しさん :03/06/30 21:55
243 :
デフォルトの名無しさん :03/07/04 18:09
age
>>235 よくある話だが、開発者にとってのメリット(?)にコード管理が楽になった気がすると言うものがある。
この場合、コード的には、タスクとしてカーネルから分離しちゃうから。
そして、使用者には何のメリットにもならない事が多い。
AnotherMona に粘着現れる。開発者の説明を待てないヤシはカエレ!
別に粘着というほどのもんでもないような まだ見てないけどsource0601.zipで解決したのかな
Minixはオープンソースだし(BSDライセンスだったっけ?) そこから必要な部分を抜き出し,CPPに書き換えてMona風に実装 ということを,もしアナモナ作者さんがしてても何の問題もないし, そういうアプローチを手法の現場を見せてもらえるとしたら, 少なくとも折れにはとても興味深い(勉強になりそう) 作者さんも慌てて作り直す必要はないと思う。 てか,作者さんの解説が出てくることを期待-! ,,,,,、これって粘着なんですかねぇ?
MiniMonaでつか。
MonaOSは常用に耐え得るOSを目指してるの?それともただの道楽?素朴な疑問
250 :
デフォルトの名無しさん :03/07/07 18:00
>>249 は常用に耐え得る人間を目指してるの?それともただの道楽?素朴な疑問
オウム返ししか能の無い
>>250 よりは実用に耐え得る人間になりたいね
って言うか常用に耐え得る人間って何よ。 変な奴等だ。
>>249 仮にも、人様のやってることを「ただの道楽」と言えるほど、おまえはえらいのか ?
2ch で、言葉の使い方にいちゃもんつけたくないけど、ここは結構良スレだから、荒らすのはやめてくれ。
おまえは、荒らしじゃないと言うかもしれないけど、
>>250-252 なんかが来るきっかけになりうると言うことを考えてみてくれ。
>>253 その書き方で人にどうこう言えるのかい?あんたは
おまいらケンカイクナイょぅ ママーリしるヽ(`ー´)ノ ⌒ ○
あんまり動きが無いと不安だから保守してるだけっすよ。
TRONのように積極的に普及させていきたいのか、それとも単に自己満足で作ってるのかと
聞きたかっただけなんだけど。それもいかんのかね?最近の2chは。
俺からすると
>>253 が荒らそうとしてるように見えてしまうんだけど
>>257 実験と勉強かなあ。
普及目的って訳じゃないと思う。
まあ誰か曰くオナニーからセクースが生まれる事もあるらしいから。
OS=オナーニセクス
久しぶりの書き込みな気がしますね。 Monaにおけるプロセスの定義とそのインターフェースおよび実装に ついて非常にまったりと考えていました。(多忙につき・・・) 結局はボツになりましたが・・・ 以下のような感じに考えていました。 Process#init(), destroy()はオーバーライドしてもいいよ Process#execute() = プロセスの実体で必ずオーバーライドしてね。 で、Process#main()がその呼び出し順序を保証すると。 これに加えて、Process生成の際のnew演算子をオーバーライドしておけば 幸せかもというアイデアでした。 ただ、重大な欠点がありまして 1.プロセスを1つごとに違うProcess型が必要(継承が必要) ⇒KernelProcessだけは、継承による型付けが必要だが UserProcessはsetEntryPointを用意して継承を必要なくすので一応解決 2.クラスのメンバ変数はstaticでない限り関数ポインタを取得できない(C++の仕様?) ⇒mainのアドレスをeipにセットできない。 考えてみればあたりまえですね。。。。 かといってstaticにしてしまうと、全てのインスタンスに共通なものになって都合が悪い。。。 というような、堂々巡りをしつつ改良しています。
typedef struct ProcessInfo { dword eip; dword cs; dword eflags; dword eax; dword ecx; dword edx; dword ebx; dword esp; dword ebp; dword esi; dword edi; dword tick; dword pid; class Process* process; ProcessInfo* prev; ProcessInfo* next; };
class Process { public: Process() { pinfo_.process = this; } virtual ~Process() { } int main(); protected: virtual void init(); virtual int execute() = 0; virtual void destroy(); public: ProcessInfo pinfo_; static void setup(); }; int Process::main() { int error; init(); error = execute(); destroy(); return error; }
>>257 あなたがどう言い訳しようとしても、
>>250-252 見たいな書き込み誘発しているのは事実。
なんでそうなるかを考えたほうがいい。
OS作りの活動をされている方、他このスレを読んでいる全ての方々、申し訳ありませんでした。
まさか
>>253 =
>>263 のような粘着厨を呼び寄せる結果となるとは思っていませんでしたので…
自分の書き込む前にはその書き込みによってどのような類の人間が呼び寄せられ・その人間の粘着により
どれほどスレを真面目に読んでいる方々に不快な思いをさせてしまうのかを重々考えねばならないと反省しております。
266 :
jack-11 :03/07/08 22:08
ANOMONA作者です。 ご指摘の通り現在のバージョンは殆どMINIXをCPPに書き換えただけのものです。 いわば、実験段階の前準備というところでしょうか。 現在の進行状況は、FSのマルチスレッド化をしているところです。 最終的にはメッセージ機構も含めてカーネルの基本部分も書き換える予定ですが、素人一人ではどうなるか。 まぁ、気長に見守って下さい。
>>264 > 粘着厨を呼び寄せる結果となるとは思っていませんでしたので…
全然反省してないやん。
>>266 FSってファイルシステムのことですよね?
ファイルシステムのマルチスレッド化って、
Apacheみたいなものをイメージすればいいんでしょうか?
270 :
jack-11 :03/07/08 23:42
>>269 アパッチのソースは見たことないので、アパッチのイメージとはどういうものかわかりませんが、
FSのマルチスレッド化を簡単に言うと、
1)ユーザープロセスA,Bがある。
2)Aがopen(file1), Bがopen(file2)のシステムコールをFSに発行する。
を前提として、
現在の処理方法では、Aの処理が終わるまで、Bの処理を受け付けません。
が、マルチスレッド化をすれば、Aの処理途中でも、Bの処理を受付、場合によってはBの方が早く終わる場合もあります。
FSのメインは単にメッセージを受け取るだけ、あとはFSのクローンが共有データのロックをしながら処理できるところまでとことんやるというのが、マルチスレッド化です。
もちろん、これはFSに限りません。現在は実験段階ですので、FSでやっていますが。
ホントに作ってるYO……。
>>270 Apacheの動作を大雑把に言うと、親プロセスがポート80にきた要求を
複数存在する子プロセスの暇なやつに処理させる。って感じ。(大雑把すぎたか・・・)
デバイスがひとつだと、後発の処理は待たされる。って考えであってますかね?
それとも、多重に要求を受け取り、IOスケジューリングをするとか考えているのでしょうか?
もしかすると、Openシステムコールの処理実態であるスレッドAがあって、
スレッドAがスリープするとIOも一時休止するって感じでしょうか?
FSスレッドのスケジューリング=IOスケジューリング、と考えたらいい?
>>270 "multithreaded filesystem" でぐぐってみた。
昔からあるんですな。勉強不足でした。
274 :
デフォルトの名無しさん :03/07/09 02:46
>>269 >>270 もしもし?マルチプロセスとマルチスレッドの違いくらいわかってるよね?
わかってないとしたらスゲー不安なんだが・・・。
おおざっぱに言うとmemoryが共有されるか否かってとこかね
マルチプロセス プロセスを保存できるだけで、スレッドは1つしかない マルチスレッド スレッドが幾つかあるが、プロセスは1つしかない
>>274 >>276 スレッドの定義は製作者によりばらばらなので、
このスレの前の方では適当に定義すればいいって流れだったような気がする。
Linuxでは主に プロセス≒スレッド 的でしょ。クローンシステムコールも変わってきてるし、
pthreadの完全(?)な実装も進んではいるみたいだけどね。
Solarisも8と9では実装が大幅に変わったでしょ。ハイブリッドじゃなくなった。
ジョブ、タスク、プロセス、スレッド、ファイバなんて、OSの作り方によっては、
全部同じものとして、実装することも可能。そんなことしないと思うけど。
Apacheの話は、あくまでも、イメージのたとえで出しました。
実装自体は、ユーザスレッドなのかカーネルスレッドなのか、
子プロセスなのか知らない。(語句の突っ込みは勘弁)
とまぁ、素人知識なので、間違っていたらスマン。
>>277 わかってるみたいで安心した。
でもね、プロセスとスレッドの二つの言葉を同時に併用してる以上、明確な区別は
付けておく方が混乱を防げると思うのですが、いかがでしょう?
>>278 混乱したい奴はしておけ、とか
混乱しそうになったら誰かが防いでくれるさ、とか
SymbianOSやEPOCのように、オブジェクト指向ばりばりなOSになりますように。
ひげぽん、"Semaphore.h"頭の大文字、小文字はそろえといてほしいな。 多分cygwinだとOKなんだろうけど。以下の箇所です。 ○mona_v1.0/src/Semaphore.cpp: #include<semaphore.h> ○mona_v1.0/src/disp.cpp: #include<semaphore.h> ○mona_v1.0/src/env/dependencies: 62:Semaphore.o: Semaphore.cpp include/semaphore.h include/kernel.h \ 92: include/disp.h include/io.h include/pic.h include/semaphore.h \
dependenciesは自動生成やね。すまそ。 あとcore.asmという名前は他のに変えられないですかね?kcore.asmとかkernelcore.asmとかmonacore.asmとか・・・。 某ツールを使ったらメモリダンプのコアファイルと間違えてソースを消されちゃったから。 これはどうでもいいか。
ひどいツールもあるもんだな・・・
>>281 凄げぇツールだ……。良ければ、名前を教えてくれ。
>>280 ご指摘ありがとうございます。
Semaphoreの件は対応いたします。
ただ大変申し訳ないのですが、現在諸事情により
cvs commitできない環境におりますので
しばらくはこのままの状態が続きます。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
| 悲しいときー! | |レスがついたと思ったら山崎渉だったときー!|  ̄ ̄ ̄∨ ̄ ̄ ̄  ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧∧ ∧_∧ ( ゚Д゚) ( ´д`) ⊂○ ○ヽ ||””””””””””| | | ̄ ( ) 山崎渉(^^)( ) / /\\ .||_____| / / > / / / ) ) (_) > (_) (_)
287 :
デフォルトの名無しさん :03/07/18 20:32
ほしゅ
あぼーん
290 :
デフォルトの名無しさん :03/07/18 21:41
さいきん超先生みないね
>-~ いるけどネタがないんだよね。
292 :
デフォルトの名無しさん :03/07/18 21:57
どうすればいいんだ
ユーザーモードプロセスの実装の準備中 プロセススイッチはiretdを使用しているのだが 特権レベル0⇒3の場合のCPUの動作の自分の理解がただしいか どうかがわからないので調べ中 iretd 現在のスタックから eflags, eip, csの取り出し cs切り替える際に特権レベル0⇒3なので 現在のスタックに格納されているss:espをpopしてセットする これが間違っている可能性が捨てきれないなあ。 intelのマニュアルを熟読せねば
レベルの低いセグメントにfar-retまたはiretする時は戻りレジスタをpopした後常にスタックにあるss:espもpopするです。 ユーザーモードのプログラムを呼び出す時にこの機能を利用してスタックにss:espとcs:eipをpushしてiretするやり方があるです。 某OSも最近までこの方法を使ってました。( ̄ー ̄)
久しぶりにbochsで実験したところ iret時に 00015320592i[CPU ] (mch) iret: Return with DPL != RPL. #GP(selector) とでていた。 これがてかがりになりそう?
tssのリング0スタックは適切に設定してますか?
それはセグメントのDPL(ディスクリプタで指定してるレベル)とRPL(セレクタの下位2ビットで指定するレベル)が一致していないエラーかな?
>>297 tssのリング0スタックは適切に設定してますか?
はい。
設定しています。
ということは、ユーザー用のコードセグメントのセレクタ値0x28が
間違っているということでしょうか。
試してみます。
ユーザーモードセレクタ値を0x28 | 0x3 = 0x2Bとしたところ >>PANIC<< iret: SS.rpl != CS.rpl となりました。 現在調査中
特権レベル0⇒3の遷移は CS, SSを or 0x3することで 出来ている予感。 その後タイマ割り込みで3⇒0の遷移でこけている模様。 00033791613p[CPU ] >>PANIC<< iret: SS.rpl != CS.rpl とでています。 3⇒0の遷移のときは 現行TSSのss0, esp0が参照されるのは知っているのですが cs=0x30(0x3b) ユーザーモード用コードセグメント ss=0x18 カーネル用スタックセグメントで rplが違うと起こられているっぽい。
csもssも両方dpl3,rpl3にすればok
>>302 さん
アドバイスありがとうございます。
現行TSSのss0は、dpl0ですが
rpl葉、あえてかえる必要はあるのでしょうか?
タイマ割り込み時にdpl3のCSはどうなるかが
分かっていないようです。
特権命令を呼び出す部分のコードはdpl=rpl=0、通常のアプリケーションプログラムコードはdpl=rpl=3になるように設計汁。 割り込みはコンテキスト切り替えとかが絡むのでdpl=rpl=0のセグメントで動かすのが普通、かな?
って言ってる事が違うかも・・・ 割り込みでリング0に移行する時は割り込みゲートでdpl=rpl=0のcsをロードし、リングが変わるのでtssからdpl=rpl=0のssとespをロードするです。
あと、割り込みゲート自体のdplはハードウェア割り込みや例外のような直接呼び出さないものはdpl0 システムコール等のリング3から直接呼び出す割り込みはdpl3にするのが普通です。
プロセススイッチ開始前 cs=0x08 ds=0x10 ss=0x18 dpl=rpl=0 プロセススイッチ開始(0 to 3) cs=0x28 ds=0x30 ss=0x38 dpl=3 cs=0x2B ds=0x30 ss=0x3B rpl=3なのでスタックにはss=3Bでセット iretで3に移行 次のタイマ割り込み時に自動的に特権レベル0へ移行するはず。。 このときの動きが分かりません。 cs=0x28? ss=0x18(現行TSSからセット) のような状態になっているのでしょうか? タイマ割り込み時に自動的に特権レベル0へ移行の部分でbochsがこけているような 印象です。
dsとesもdpl=rpl=3のセグメントにしておかないとメモリアクセスでこけるよ
csは割り込みゲートで設定したセレクタが入るので0x08を入れておけばいいんでない? しかし携帯はきついw そろそろ落ちる
まとめ 最初 cs=0x08 ss=0x18 iret スタックからeip,cs,eflags,esp,ss 取り出し cs=0x2B ss=0x3B 割り込み ゲートからcs,eip、tssからss:esp 取り出し cs=0x08 ss=0x18 これでOK? あと、フラットモデルでssとds,esをあえて別のセレクタにする意味はあまりないです。 んじゃ落ちです。
いろいろとありがとうございます。 ユーザーモードの実験に成功した模様です。 割り込み時に怒られていた原因は 割り込みのタイミングで、プロセスのレジスタやらセグメントを保存していたのですが SSは、割り込みの開始とともにカーネル用に切り替わっていました。 それを無理やりユーザー用スタックセグメントとして 使用して怒られていました。
ひげぽんもガンガレ!!
某携帯厨さん 携帯からのご支援ありがとうございましたw おかげさまで、VirtualPC, bochs,実機での動作確認が出来ました。 この実験を参考に実際にコードを整理していこうと思い案す。
新規プロセスの作成はこんな感じです。 g_process_manager = new ProcessManager(); UserProcess* process1 = new UserProcess("user_process "); Process* process2 = new Process("krnl_o "); Process* process3 = new Process("krnl_n "); Process* process4 = new Process("krnl_m "); Process* process5 = new Process("krnl_o2 "); UserProcess* process6 = new UserProcess("user_process2"); Process* process7 = new Process("show_process "); g_process_manager->addProcess((Process*)process1, (virtual_addr)userTest); g_process_manager->addProcess(process2 , (virtual_addr)disp_name2); g_process_manager->addProcess(process3 , (virtual_addr)disp_name3); g_process_manager->addProcess(process4 , (virtual_addr)disp_name1); g_process_manager->addProcess(process5 , (virtual_addr)disp_name4); g_process_manager->addProcess((Process*)process6, (virtual_addr)userTest); g_process_manager->addProcess(process7 , (virtual_addr)disp_process);
mona_beta0_08a をリリースしました。
半ば投げやり気味ですが以下の特徴があります。
・FAT12ブート
ブートストラップがFAT12ファイルシステムよりKERNEL.IMGを
読み込んでカーネルがスタートします。
・FAT12のファイル読み書き
ファイルシステムとしてFAT12を試験的に採用しました。
ファイルの作成・読み書きが可能です。
※今回の配布されているカーネルイメージにはFAT12のデモは採用されていません。
・カーネルスレッドの廃止
以前使用していたカーネルスレッドの廃止をしました。
・プロセスの導入
プロセスという概念を導入しました。
プロセスはクラスProcessとして実装されています。
プロセスの管理はクラスProcessMangerが行います。
pid, スタックの割り当てなど。
ProcessManagerはスケジュール機能をクラスSchedulerに委譲します。
・カーネルモード・ユーザーモードのプロセスの導入
DPL 0/3 の両モードのプロセスの動作を行えるようになりました。
・メモリ周り
システムトータルメモリの取得・現在の使用量取得API
・ロギング
info関数を追加 log4jのようにレベルに応じたメッセージ出力が可能になり。
カーネルのデバッグ効率が上がりました。
ダウンロードはこちらからどうぞ
ttps://sourceforge.jp/projects/mona/files/
今後やっていきたいこと。 ・プロセスのsleep/wakeupの実装 ・スケジューラーをもう少しまともに。 ・ページディレクトリの切り替えによるプロセス空間の分離。 ・オンデマンドページング ・プロセス間のメッセージ通信 ・シグナル(のようなもの) ・ファイルシステムのユーザーモード化
あ・・・そう。
今日は久々にMonaの開発に半日も時間をとることが出来たので いろいろと進展がありました。 ご支援・ご指導くださった方々に深く感謝いたします。 今後もゆっくりペースではありますが、続けていきますので 今後ともよろしくお願いいたします。m(__)m
今日の成果 sleep(ProcessInfo*, dword tick)を作成しました。 プロセスは、tick(tick)だけsleepすることが出来るようになりました。 tick経過後以降にSchedulerによってwakeupされます。 ※システムコール化されていないので現時点ではUserProcessはsleepできません。 課題 最新版をビルドしていただけると分かるのですが wakeupタイミングが複数プロセスで重なったときどうするか。 各プロセスのsleep/wakeupのタイミングで、dispatchキューにいるのに いつまでたってもCPUタイムをもらえないものがいる。 Semaphore関連でも同様 などスケジューラー周りで問題があります。 他のOSのスケジューラーがどのような方法を採用しているか 興味のあるところです。
>各プロセスのsleep/wakeupのタイミングで、dispatchキューにいるのに >いつまでたってもCPUタイムをもらえないものがいる。 これは、単純なプログラムミスでした。
321 :
ひげぽん ◆Ngzcp/NZpA :03/07/20 21:52
プロセススケジューラおよびシステムコールについていろいろ考えているのですが 2点分からないことがあります、ご存知の方がいらっしゃいましたら アドバイスをお願いいたします。 (1)プロセススイッチのコスト計測 Monaのプロセススイッチにかかっている時間(コスト)を計測する良い方法はないでしょうか。 正確に言うならば、現状Monaはタイマ割り込みの度にプロセススイッチを行っているので タイマ割り込みの開始から、iretまでの時間を計測したいです。 計測の精度は、タイマ割り込みの間隔と比較できる程度の精度が欲しいです。 プロセススイッチにかかかる時間、タイマ割り込み間隔、プロセスに与えられるCPU時間を 比較しながらスケジューラを作成したいというのが動機です。 (2)システムコール時に問題なく使えるレジスタについて システムコール時に、システムコールタイプや、システムコール引数を レジスタにセットしてintしようと考えています。 Monaは、C++で書かれていてgccでコンパイルされます。 このときに安全に使用できるレジスタを知りたいのですがどのように調べればよいでしょうか。 最悪の場合gccの吐くアセンブラコードの統計を取れば何とかなるとは思うのですが。。。
Linuxのプロセススケジューラはお勧めできない。 gotoが読みづらい。 でも、2.5あたりでスケジューラに大きく手が入ってたから 2.6のtest版とかを見てみるのもいいのかも。
相変わらずUzeeeeeeeeeeeeeeeeeeeeeeeeeeスレだな
>>321 (1)
TSC使うのが一番簡単じゃないかねえ。
精度も問題ないし。
(2)
ebx,esi,edi,ebpは関数を呼んでも壊れない事が保証されてる。
gccのソースあるなら、gcc/config/i386/i386.hのCALL_USED_REGISTERがそれだ。
でも、インラインアセンブラ使うなら、全部のレジスタをclobberしてしまえば、
なにも考えなくていいような気もする。
327 :
デフォルトの名無しさん :03/07/21 03:33
横スレで申し訳ないのですが、ひげぽんさん、わたもちさんはやっぱり プログラマとして何年もバリバリやられてきた方たちなのでしょうか? なんだか「OSの開発」と聞くと、ハッカーの様な人物を思い浮かべます。
328 :
デフォルトの名無しさん :03/07/21 04:11
OSの開発いいなぁー 俺もいつかは…
ひげぽんはこのスレ作ってから勉強してここまできた奴だぞー。 part2から見てみなー。
330 :
ひげぽん ◆Ngzcp/NZpA :03/07/21 15:58
>>326 さん
アドバイスありがとうございます。
>TSC使うのが一番簡単じゃないかねえ。
RDTSC命令が使えますね。求めていたものが見つかりました。
(2)
>ebx,esi,edi,ebpは関数を呼んでも壊れない事が保証されてる。
>gccのソースあるなら、gcc/config/i386/i386.hのCALL_USED_REGISTERがそれだ。
ありがとうございます。きちんと規定されているようなので
安心して使用できそうです。
タイマ割り込みとスケジューラの計測をしてみました。 タイマ割り込み間隔:スケジューラ=0x2800000:0x6000 タイマ割り込み 10msのはずなので(どこで設定しているんだろう・・・) スケジューラ 6nsほどということになります。
今日の作業 システムコールの実装をしているところで int 0x80をユーザーアプリから行ったところ なにやらエラーがでていて調査中です。 00007742134i[CPU ] PE is 1 00007742134i[CPU ] VM is 0 00007742134i[CPU ] CPL is 3 00007742134i[CPU ] IOPL is 0 00007742134i[CPU ] addr is 964 00007742134i[CPU ] len is 2 00007742134p[CPU ] >>PANIC<< allow_io(): TR:io_base <= 103 io許可あたりだと思うので現在調査中です。
>>331 Pentium4とPentium3以前では、結果が大きく変わります。
アーキテクチャが大きく変わって、P4はパイプライン20段+α、P3は10段+α。(だった気がする)
単純に考えると、パイプラインストールのコストの違いにより、モード切替コストが違います。
(詳細に述べると少し違いますが、あくまでも単純にってことで勘弁)
P4は動作クロックが大きく単位時間当たりの命令実行数が多いので相対的にモード切替コストがでかいです。
この辺は、nsec msec の世界だから、とりあえず気にしないってのもあり。
インテルアーキテクチャはマイクロコードで実行なので、
RDTSC命令の前(前後?)にシリアル化命令(?)ってのを入れると、より正確に計れるそうです。
RDTSC命令やシリアル化命令によって、動作が変わって正確じゃなくなりますけどね。
モード切替オーバーヘッド軽減のためにsysenter命令使いませうヽ(`ー´)ノ
VirtualPCやBochsでsysenterは、実装されてるのかな? 他にはAthlonやDuronやS3なども。 まぁ、Monaはマイクロカーネルなんだから、モード切替コストをおさえるために、 P4向けにはsysenterが必要になるでしょうね。
マイクロカーネルは逆にモード切替をほとんどしないと思うんだけど・・・
IPCをring3で出来ればそうなるねえ。 出来るかなぁ。
>>333 さん
> RDTSC命令の前(前後?)にシリアル化命令(?)ってのを入れると、より正確に計れるそうです。
> RDTSC命令やシリアル化命令によって、動作が変わって正確じゃなくなりますけどね。
情報ありがとうございます。
>>334 さん
> モード切替オーバーヘッド軽減のためにsysenter命令使いませうヽ(`ー´)ノ
インテルのマニュアルで調べました。
おもしろいですね。まさにシステムコール用ですね。
サポートしているCPUがわりと限定されてしまいそうなのが残念です。
これから出るcpuはsysenter命令に対応してるんだし 将来を考えるとsysenter命令に対応しておいた方が得策だと思う sysenter命令用に設計したAPIはstubを細工すれば非対応cpuでも int命令等で呼び出せるけど逆は難しい ちなみにamdにはsyscallとゆう別の似た命令があるが 思想の違いからか動作が微妙に違う
>>336 逆にマイクロカーネルこそモード切替が増えると思ってたけど、勘違いか。
Monaアプリってどうやって作るんだろう。
やっぱ、カーネル同様C++なんだろうか。
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・)< APIまだぁ? \_/⊂ ⊂_)_ \_______ / ̄ ̄ ̄ ̄ ̄ ̄ ̄/| |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :| | .|/
>>340 モノリシックだとAPI処理で必ずカーネルモードに移行する
マイクロはどうしても必要な時以外ユーザーモードで処理する
マイクロでカーネルモードを頻繁に呼び出すのは設計に問題がある
>>342 OSサーバをユーザプロセスとして動かしているわけだから、プロセス切替が起こり
当然モード切替も起こると、思っていたのですが、これは古い実装?
MacOSXがBSDサブシステムをカーネルにくっつけたのもこの辺が理由かと思ってたのですが。
ちなみに、APIといっても、カーネルまで達せず、ライブラリで処理して返すものもありますよ。
MonaのAPIは、MONAPIとか呼ばれるんだろうか・・・
>>339 > これから出るcpuはsysenter命令に対応してるんだし
> 将来を考えるとsysenter命令に対応しておいた方が得策だと思う
>>340 なるほど。確かにおっしゃる通りなのですが
我が家にはAMDマシンしかないというわながあるんですw
> Monaアプリってどうやって作るんだろう。
> やっぱ、カーネル同様C++なんだろうか。
予想ですが、アプリはC, C++どちらでもかけると思います。
ただドライバは、C++でインターフェースを強制する可能性があります。
たとえばドライバはこのクラスを継承してくださいみたいな。。。
> ちなみに、APIといっても、カーネルまで達せず、ライブラリで処理して返すものもありますよ。
> MonaのAPIは、MONAPIとか呼ばれるんだろうか・・・
なるほど。MONAPI(もなぴ)おもしろいですね。
345 :
デフォルトの名無しさん :03/07/25 16:40
monapiあげ
MonAPIだろ。
保守(`□´)くわっ
>>331 6ns(ナノ秒)じゃなくて6μs(マイクロ秒)だよ。
>>315 おいおい、自分が
>>70 で言ったこと覚えてるか?
過去はいいから今後どうするか決めろよ
リリース名とファイル名を一致させればいいんじゃないの?(mona-0.0.8)
何あのDOS時代みたいなダサいリリース名(激藁嘲笑
0.0.8aのaって何?Alpha?
バージョン番号で分かるから無意味なことヤメれ
そうじゃなくて
0.0.8a -> 0.0.8b -> 0.0.8c
みたいにするかもって意味?
一般的な命名にするのが無難だってmona-0.0.x.tar.gzにしたんじゃなかったの?
今じゃGNUからMSまでx.x.x.xみたいにしてるって知らないの?
こういう細かい所に気が回らないようではOSなんて作れないとだけ言っておく
んじゃ!
粘着基地外(゚听)カコワルイ
激藁嘲笑厨は死滅スレへカエレ
ひげぽんにアドバイスがあると 必ず粘着粘着って噛み付いてくる信者がいるね おー、こわw
その信者ってコーディングに貢献してんの?
>>357 ひげぽんが俺ルールなのは独自主義を目指してるからじゃなくて
単に無知だからでしょ
>>350 さん
こんばんは。ご指摘ありがとうございます。
mona-0.0.8というリリース名が良かったということですね。
次は忘れないようにmona-0.0.9といたします。m(__)m
>>359 リリース名なんて気にしなくていいよ。それよりガンガレ!
応援してるぞ。
何故、バージョン番号にそんなにこだわるのかわからない。 別に0.0.8aとかいうバージョン名なんて十分一般的。 自分の知ってるものだけが一般的とか思い込むのは、 視野を狭めるだけと、何度も言われたことがある。
前のスレで板違いって追い出されてきたんでこっちに住み着いてもいいですか?(゚听)
おー、すげぇ進んでるなぁ。ちょっとずつだけど確実に。 漏れはプログラムなんてまっっっっっったくできないモンだから、何いってんのか サッパリだけど、みんなガンガレ。 ああ、C++ならちょっとだけかじったよ。 インクr・・・ゴメンオレガワルカッタ。 楽しみにしてるよひげぽんサン!
(^^)
>別に0.0.8aとかいうバージョン名なんて十分一般的。 >自分の知ってるものだけが一般的とか思い込むのは、 >視野を狭めるだけと、何度も言われたことがある。 前半と後半で矛盾してるぞ
>>365 特に矛盾はしてないと思いますが。
『「(自分の知っているものだけが一般的)と思い込む」のは視野を狭める』
と
『自分の常識は、世間の常識とは限らない』
とは、別ですよ。
バージョン番号+a,b,cの形は、そんなに使われてませんかね。
よく見かけると思いますが。
ただ単に、文句言いたいだけならいいんですけど。
荒れてるねえ
>>368 プログラミング的な観点から論じたら?
比較が機械的に出来るのがx.x.x.xみたいな形の売り。
動的ロードするようなドライバとか作った場合、
開発初期だと互換性を保ちきれないから、
バージョンチェックしないといけない。
そういう時は単純にバージョンを数字で並べた方が簡単。
もちろん人に理解しやすくするためにαやβなどの使用もあるが、
αとかβとかはバージョン番号に対するエイリアスとして使う。
0.99.1(1.0α1)みたいなこと。
>>359 ひげぽんさんはなんでこんなにいい人なんだろう。
GPLは嫌いだからコーディングには協力できないけど、
応援の気持ちを込めてVMWareを寄贈しよっと♥
>>369 > 比較が機械的に出来るのがx.x.x.xみたいな形の売り。
そうかぁ ?
別にどんな形だって、意味がきちんと決まってればバージョンの比較関数を書くことは簡単だと思うけどな。
> もちろん人に理解しやすくするためにαやβなどの使用もあるが、
> αとかβとかはバージョン番号に対するエイリアスとして使う。
> 0.99.1(1.0α1)みたいなこと。
よくわからん。
α, βが人に理解しやすいとも思えないし、二重管理する利点て何なの ?
>>370 すげー。
あんたもいい人やね。
Windows 5.1.2600なんて名前で売られても困る αとかβとかはひげぽんが好きみたいだから出しただけ
バージョンなんてリリースする人の趣味に合わせれば良いのに。 とある有名ソフトなんて、バージョン3から始まって、次がV3.1、その次がV3.14、その次が・・・ と、とても趣味に走ってるが文句を言う奴は見たことが無い。
>>370 匿名希望さん
御寄贈いただいたVMWare確かに受け取り、動作を確認できました。
Monaの開発を続けていくことでしか御礼は出来ませんが
本当にありがとうございました。
なお、詳細はメールでお送りさせていただきました。
Monaはファイル名とリリース名で既に二本立てだったから聞いてみただけ なぜかVMwareまで出てきて驚いたが俺のおかげだな(w
>>375 それが良かったかどうかは分からんぞ。
そもそもいい人って理由だけでVPCやVMWをgetできるとは思えん。
きっつい交換条件とかあったんじゃないの?>ひげぽん
L氏だったら受け取りを拒否するだろう。
金を貰って言いなりになるくらいならっつって未踏を批判してたくらいだからな。
少なくともひげぽんが376みたいなやつだったら 何もゲットできないどころかプロジェクト自体も袋小路に陥ってたかも NWSOSは公開してすぐそんなトラブルがあったし… 少なくともMonaがひげぽんの人格に負う所が大きいってのは確かだろうね
350はまったく関係なく、ひげぽんさんの人柄でしょうね。 VirtualPCも貰ってなかったっけ?
>>372 Windows 95, Windows95A, Windows95B, Windows95 OSR-2 とかだったら困らないのか ?
俺なら、Windows 5.1.2600 のほうがいいよ。
>>373 TeX だったっけ ? 今どこまでいってんだろ。
>>376 あんたの言ってることが事実かどうかはわからんけど、万が一事実だとしてもあんたがどうのこうの言う問題じゃないよ。
ひげぽんさんと
>>370 さん間の問題だからね。
事実じゃないとしたら、あんたは
>>370 サンに非常に失礼なことを言ってるんだけど、それはわかって書いてるのか ?
ここにいるやつの大半はVMwareかVirtualPCを持ってるだろ そんなありふれたものをあげるかどうかなんて大した問題じゃないだろ 彼女や嫁さんを一晩貸してくれる方がずっとすごいことだぞ
ここにいるやつの大半は嫁さんか彼女がいるだろ そんなありふれたものを貸すかどうかなんて大した問題じゃないだろ VirtualPCやVMwareをくれる方がずっとすごいことだぞ
>>382 うまく揚げ足を取ったつもりだろうが全然ちゃうぞ
ソフトはバージョンが同じならどれも同じだが
女は年齢が同じでも一人一人全然違う
1年間同じOSを使い続けるやつは多いが
結婚して1年間ずっと嫁さんとラブラブなやつは少ない
大抵フーゾクとかに行ってる
最初に付き合った相手と何年か後に結婚したようなやつでさえ
>>383 Windows 3.1とWindowsNT 3.1が同じですか、そうですか、、
同じだろ
386 :
デフォルトの名無しさん :03/08/04 21:37
>>373 3.11ってのもあったな
あと、SPxとかSEも。
moooooooooooooooooooo
>>383 > 女は年齢が同じでも一人一人全然違う
MS のバグより始末の悪いやつもいるからな。
何故ひげぽんマンセースレになってんだ? 気持ち悪いんですけど。。 前スレ1000getしたやつの陰謀か?(w
>>389 ひげぽんのスレだから別にいいかと...。
気持ち悪けりゃ来なきゃいいじゃん。
391 :
デフォルトの名無しさん :03/08/04 22:58
VMware 寄贈つうても流出尻教えただけじゃねぇのか
* * 割 れ 厨 3 7 0 は 逝 っ て 良 し * *
393 :
デフォルトの名無しさん :03/08/04 23:28
>>390=自演ひげぽんwwwwwwwwwwwwwww
>>370=自演ひげぽんwwwwwwwwwwwwwww
395 :
デフォルトの名無しさん :03/08/04 23:31
ひげぽんって自演するから大好きん!!!!!!!!!!!!!!!
馬鹿が来て騒いでるな ここいらで疑惑を晴らすためいっちょMonaオフでもしないか? 当然、渦中のひげぽん、370は強制出席 このスレで時の人になったokuokuやわたもちも来ないと意味ねーな でもさすがにLやKや横谷は無理か..........
>>388 でもいい女は本当にいい。
……と気を許して結婚したのも束の間、
豹変してダンプ松本になるやつも多いが(泣
ひげぽんの自演トークつまんね
〆〃ハハ ∬∬´▽`) (( ⊂ ) ⊃ し(_) (( 〆〃ハハ /⌒∬´▽`) ⊂,,)^∪-∪ ずざー。400ゲット。  ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ 〆〃ハハ ⊂' ⌒つ∬´▽`)つ ペタン… ノハハベ (´▽`∬∬ ミ ⊂' ⌒∪ ノ ∪ ムクリ ノハハベ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (´▽`∬∬<やったぁ!ついに400ゲットできたよー ( U )) \_________________ (__)\ノ
_,.. ---- .._ ,. '" `丶、 / ` 、 ,..-‐/ ...: ,ィ ,.i .∧ , ヽ. . ,:' .l .::;',. :::;/..://:: /,':/ ', l、 .i ヽ . ,' ..::| .::;',' :;:','フ'7フ''7/ ',.ト',_|, , ',.', ,' .::::::!'''l/!:;'/ /'゙ / '! ゙;:|:、.|、| 'l . ,'. .:::::::{ l'.l/ 、_ _,. 'l/',|.';| l :::::::::::';、ヾ  ̄ `‐-‐'/! ';. ' . ! :::::::::::/ `‐、 ゝ |'゙ | | ::::::::/ \ 、_, _.,.,_ ノ::: ! ひげぽんが、幸せになりますように・・・ |::::/. _rl`': 、_ ///;ト,゙;:::::./ .. `´ /\\ `i;┬:////゙l゙l ヾ/ ,.:く::::::::`:、\ 〉l゙:l / !.| . /:.:.:.:\:.:.:.:.`:、ソ/:.:| | | /.:.:.:.:.:.:.:.:.:\:.:.:.:У:.:;l /./ . /:.:.:.:.:.:.:.r'´`‐,`、:/.,.:‐{ | !`:、 ,'.:.:.:.:.:.:.:.:.';_,゚.,ノ.:./,:':.:.:.:', | |`、:| !:.:.:.:.:.:.:.:.:.:.゙、:.::/:.:.:.:.:.:.ヽ, / ,!:.:`、
Monaの近況を報告。 ・プロセス間通信 ・システムコール ・プロセス空間 などの設計をしています。 上記3つは、結構絡み合っていて楽しいです。
>>ひげぽんさん 今必要かどうかわかりませんが、 メモリの強制アクセス制御方式(Mandatory Access Control:MAC) バッファオーバフロー対策のOpenwall、SSP などを知っていいたほうがいいかも。
>>403 さん
>メモリの強制アクセス制御方式(Mandatory Access Control:MAC)
>バッファオーバフロー対策のOpenwall、SSP
現時点では、まだ未検討ですが将来的には必要そうな概念
なようですのでMona Wikiのほうでタスクリストに入れておきました。
アドバイスありがとうございました。
405 :
長々スマソ1 :03/08/08 17:56
やっとpart2から全部読んだぁ、15時間くらい掛かったぞ。かかりすぎだが。
まぁおれがすべて読んで思ったことやらを書いてみる。
まず、全部読んだが未だにブートさえもわからん。まぁまずはアセンブリをやる。ってか学校でZ80やっているが、互換性がまぁまぁあると見ている。
まぁまぁだがな。ここで色々なサイトをブックマークしたから、1からやろうと思う。
アセンブリについてはね。たしかMS-DOSをいじくるのもあったから、それでOSについて勉強してみるさ。
ひげはスゲーなーと関心した。行動力と勉強力、そしてそれを即戦力に持っていける技術がね。
あとブートが説明されているのサイトのURL、過去スレのはあぼ〜んだったから、晒させていただく。
ttp://nobumasa-web.hp.infoseek.co.jp/boot/boot.html あと全体的に言いたいことと言えば、始めはかなりいい調子だったのに、Lさんを叩いて追い出したことは、このスレの中では一番痛い。
Lさんも別なところで色々と叩かれて疲れていたのだろうことを、察することができなかったのも原因であろう。
まぁ同じOSを作る人間、かたやシェア、かたやオープンソースでフリー。難しいさ。
オープンがいいのか、しないのが卑怯なのか。フリーがいいのか、有料が駄目なのか。それはその人の勝手であって叩くところではないなぁと思う。
ただLさんにも非があったと思った。Lさんはどう考えてもぴげぽんさんよりも、成長が早いのは言うまでもなかったのに、
そこに突っ込んでしまった。正直、貴方のようなある程度極めている人としては、どっしりと構えて欲しかった。
もう一度言うが、あなたのほうがひげぽんさんよりも、どう考えても能力はすべて高い。
もちろん貴方が向上心を無くしてしまい、ひげぽんさんが向上心を保てば追いつく可能性があるがな。
そこが一番残念だと思った。
オリジナルのLタソはもういないよ 今いるLタソは影武者
407 :
長々スマソ2 :03/08/08 18:02
ただひげぽんさんが、オープンソースにしたメリットがなかったというのが最初にあったが、どう考えてもあったと思う。 もしオープンにしていなかったら、ここまで順調に来れたとは思えない。もうちょっと時間が掛かっているだろう。 それは過去スレを見て思った。 確かにパクられる可能性もあるが、ひげぽんにとって間違いなくプラスになっていると確信した。 このOSが出来上がったとき、ひげぽんはみんなに焼肉をおごらなければならないな。 あなたひとりでは、なし得なかっただろう事は、自分が一番よく分かっているはずだし、だからこそ低姿勢であることも、分かるし当然であろう。 まぁ2chだから、こういうプロジェクト立てても、発起人が低姿勢を保てないのと技術が全くなく使えないと言うのが、駄目になる原因であろう。 全部読んだのも数ヶ月前に、ひげぽんが凄いと思ったからだ。そのあと忘れていたが。 正直素人にOSって作れるってこと自体知らなかったし、作っている人がたくさんいることも知らなかった。 いい勉強になる。 俺としては、ゆっくりでもいいとは思う。外部者だからかもしれん。ただここで技術を提供している人にも、あんたを遅いと思っている香具師はいるらしい。 まぁ実際「どこまでできるかな?」って冷ややかな目の香具師もいるだろう。 俺としては気にすることもないと思うが、まぁ協力者なのも事実だし、その辺の兼ね合いは、もめない程度にやってくれ。 もめたら一気にプロジェクトの破壊を招く。たった1日でな。その人間性をクズさんと、頑張れや
遅いがageてしまった。・・・・鬱だぁぁぁぁっぁぁっぁぁぁぁっぁぁ
いつからひげぽんのことをひげぽん”さん”とよぶやつがふえてきたの?
そんなこと過去ログ嫁としか。
411 :
デフォルトの名無しさん :03/08/09 02:39
あひゃ
あびゃ!
413 :
デフォルトの名無しさん :03/08/09 15:19
ちょっと聞きたいのですが。 .imgファイルを作成できたんだが、cygwinでそれからどうやってOSを起動するの? それとも他の方法があるのでしょうか。 誰か教えてくれませんか?
ひげさんでいいじゃないか
>>414 なんとかbochsをダウソロードして動かせました。
これを使ってOSの開発の動作テストできるんですね。
設定うまくやれば、ブートプログラムだけでもできるんでしょうか?
まぁ俺にはむりっぽそうだが。
418 :
デフォルトの名無しさん :03/08/10 00:24
ひげぽん!おまええらいな! オレは最初から読んでみて最初はあんたと同じくらいのレベルだと思ったよ。 でも今はもう何言ってるかサパーリだよ。 おまえは勝ち組だよ! オレは応援するYO!
419 :
デフォルトの名無しさん :03/08/10 02:36
>>417 ありがとうございました。
すごく親切な解説で、WebPage作者にも感謝しかありません。
私は16bit windows3.1たぶん486の古いパソコンを持ってまして、
これが16色の表示しかできなく、解像度も680*480くらいなもので、
画像もまともに表示できず、用途と言えば、昔全然良くないエロゲー
(乳首をクリックしたら、女がオナニーしている画像が表示されるような糞ゲー)
で、抜いたことくらいしかなく、売ろうと思っていたのですが、もしもこれが実験機となりうるのであれば、
持っていようかと思いました。実験機といっても、16bit用のになるので、ここで作っているOSは使えませんが。
ブートして、何か文字が表示できたり、簡単なカーネル作ってみたり・・・って10年後の話になりそうですが。
学校始まったら、学校の図書館にでも行って探してみます。古い書籍ばっかりで、
ある意味ここの住人の方々が何時間でもいられるような感じだと思っています。
「初めての486」などなど、たぶんあると思っています。
まぁ、行ってみないとわかりませんが。
少しずつでも勉強してみようと思います。
まずはアセンブリでしょう。学校の実験でZ80やらされていますが、MASMをやってみます。
現時点でこのスレやPart2を読んでも99パーセント理解できない状況ですので。
あとひげぽんのOS(Mona)をBochs上で動作したのをみて、感動しました。
また長々とすみません。逝ってきます。
キーモーイースーレー
>> 414さん フォローありがとうございます。 システムコール処理中にも割り込みを受け付けて プリエンプションが可能なように対応したのですが 動作がおかしいときがあるので調べたところ システムコールまわり、スケジューラーまわりで バグがあるようなので対応中です。 syscall_sleepで、dispach_queueが空になってしまうと NULLプロセスが実行されてしまうというお粗末なミスもありました。
>>421 アイドルプロセスを作りましょう。
常にReadyかRUN状態で優先度は一番下。
ちょっと難しいことを聞きたいのですが、上で486って言ったのですが、調べたところ以下であることが分かりました。 PC-9801 NX/C CPU : i486SX 20MHz RAM 12MBくらい(640kB + 10Mb たぶん) HDD 500MB 解像度 640 * 400 サウンド beepのみ 3.5inchFDD付き CD-ROM Drive なし このマシンでフロッピーからブートして、"2ch"と表示させたい場合、 Part2でひげぽんが書いていたブートして"2ch"と表示するアセンブリをイメージファイルにしてフロッピーに書き込んで、できますか? あと「初めての486」って本の486ってこのパソコンの486のことですか? 何か質問ばっかですみません。無知なことは承知です。
monaはpc98用に出来てないから_
>>424 ってことはPC98用のアセンブリであればできるんですね。
明日当たり、学校の図書館に行ってみます。何かいいものがあればいいですが。
はじめての486とか、はじめての8086などなどがあったら最高なんですがね。
それは行ってみないとわかりません。
まぁ使えないのであれば売ってしまいます。ただこいつがパソコンであることには
違いないので何かできたらなぁと思っていたのですが、私の知識では到底無理。
にしても、ひげぽんは頭がいいのか、すごい吸収力があるものだ。
あとここの住人の頭の良さにも脱帽です。
>>422 さん
>アイドルプロセスを作りましょう。
>常にReadyかRUN状態で優先度は一番下。
実は、アイドルプロセスを追加して対応していたのですが
まだ単純ラウンドロビンで優先順位がないので
if (runキューが空) カレントプロセス=アイドルプロセス
のように逃げています。
>>426 今日は休みだから、進歩できそうだな。
頑張れよ。動かして、できるもんなんだなぁと実感したよ。
>>425 アセンブリはCPU同じだし、そんなに違わない。
つか同じ。
ブートアドレスとか、メモリマップとか、I/O周りとかが違う。
>>428 情報ありがとうございます。参考にさせていただきます。
>>429 メアドさらせ。PC98xx用の、その辺の書籍を譲ってやっても良いぞ。
「PC98シリーズテクニカルブック」とかいろいろ有る。
探せば「初めての8086」とかも出てくるはずなんだけど、今ちょっと見当たらんw
>>430 そこまでの技術を持っていないので、遠慮させていただきます。
気持ちはありがたくいただいておきます。
>>426 > if (runキューが空) カレントプロセス=アイドルプロセス
この判定を省くのが、アイドルプロセスの利点の一つだと思うけど。
スケジューラは何回も呼ばれるので、性能に影響大です。
とりあえずの実装なら、少しだけ走って、キューの後ろにつなぐだけでいいのでは?
ひとつ質問ですが、runキューってReadyキューと同じ意味で使っています?
それとも、別物として実装してます?
>>430 様、
>>429 様
横からで大変申し訳ないのですが『PC98シリーズテクニカルブック』を私に譲っていただけないでしょうか?
>>434 よろしいですよ。429さんも現在は必要無いとの事なので。
ただし、今確認したところ手元に有るのは「ハードウェア編」のみです。
「bios編」は見当たらない所を見ると友人が持っていったくさい・・・w
これでもよければ送料だけもっていただくという事でどうでしょう?
まぁお礼は拒みませんけど(・∀・)
>>436 おお、いいものありがとうございます。
って思ったら一度行ったことがあったようです。たぶん素通りしてしまったようです。
あらためて見させていただきます。
貴重な情報ありがとうございました。
あと明日学校の図書館行ってみます。
休業中でもやっているとのことで、たぶん人もほとんどいないと思うので、のんびりと探してみます。
このスレというか、板だと/.民も結構いるのかなぁ。
システムコール周りで苦戦中 症状: 1.bochs ユーザープロセス1つをReadyキューにいれてシステムコール(int 0x80)を実行すると システムコールからの戻りiretdでエラーになる。 下記以外のエラーも出たりするので、スタックが破壊されているのでは?と推測しています。 00011044914p[CPU ] >>PANIC<< load_seg_reg: SS: new_value == 0 2.Vmware int 0x80を発行してもハンドラが呼ばれていないような様子。 前提: 1.現在システムコールは何もせずiretdするだけ。 _arch_syscall_handler: iretd 2.システムコールを実行しなければユーザープロセスはきちんと実行され スケジュール対象となる。 3.システムコール用IDTは、p=1, dpl = 3, s = 0, type=0xe, cs=カーネルコード 4.現行TSSにはss0=0x18(カーネルスタック) esp=0x10000が設定されている。 ちょっとだけはまりぎみです。
学校の図書館に行って本借りてきました。 「はじめて読む8086」はありましたが、「はじめて読む486」はありませんでした。 ただ同じ人が書いた「はじめて読むMASM」ってのがあったので、一応借りてみました。 あとオペレーティングシステムの仕組みを理解するのに2冊、 「ブートストラップProject2 PC&DOS/V BOISサービスの全貌」1冊。 あとは、BIOSの設定法が載っている本とOSを作るって書いてあるから借りてみたら、ボード用のOSのことだった本が1冊。 計7冊借りてきました。 焦らずゆっくり理解していこうと思います。
聖蹟桜ヶ丘のアートマンの上の本屋に 初めて読む8086が新書でうってたよ ちょっとびっくり 僕は昔、2冊かって、2冊ともなくした。
>> 442 解決しました。 プロセスのコンテキストセーブ時にCS & 0x03をして 判断している部分でケアレスミスをしてました。 gccのインラインアセンブラを疑ってしまいました。 全く関係なかったですね(笑)
>>445 じゃぁ今から買いに行きます。
最後の一冊だったらおいといてください>買いに行く人
>>449 Intelドキュメントは大事だよー
intelのサイトから落とせなかったっけ?
>>449 ないよ。
メモリマップはハードの設計依存だし。
ブートの方法は,手元にあるのだと"80x86/80x87ファミリーテクニカルハンドブック"つー本に載ってる。
10年前の本だが…
>>451 おお、サンクソ。
ってことは上のURLから落としたPDFを解析しなければならないですね。
頑張ってみます。みなさんスレ汚しすみませんでした。
↓から、「ひげぽんのOS製作奮闘紀」に戻ります。
>> 449さん PDFは重要そうなところは印刷して電車の中で読んだりしました。 やはり一番詳しいのと、意外と難しくないという印象でした。 今日はシステムコール中の割込み許可について 実験してました。 大体うまく言っている予感なので週末に検証しようと思っています。
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
□Monaで以下のようなことができるようになりました。
・システムコール中に割り込みを許可する。
・上記割込み許可により、システムコール中にもタスクスケジューラの起動が可能になり、スケジューリングがより平等に行えるようになった。
・システムコールの戻り値が取得できるようになった。
□おしらせ
久しぶりにdoxygenドキュメントを再作成いたしましたので下記で公開中です。
ttp://mona.sourceforge.jp/document/ □その他
Monaプロジェクト成果物のライセンスをGPLから修正BSDライセンスに変更することを検討しています。
ご意見のある方はMona PJ Wikiへお願いいたします。
脱GPL宣言!
あぼーん
GPLから、BSDに移行って、不可能なのでは? フルリライトするなら、別だけど。
「はじめて読む486」をamazon.co.jpから購入しますた。 って言っても今日発送されただけなんだがね。在庫あと3点だったらしく、危なかったのかなぁ? でも買う人そんなに居ないだろうし、まぁ良かったと。
monaのソースってCygwinしかコンパイルできないの?
462 :
デフォルトの名無しさん :03/08/17 15:13
>>459 参考にしたり、取り込んだソースが(あったとき) そのソースが GPL で
なければ問題ないよ。
いままでのMonaソースはGPLで配布されてたと思ってた、確かめたら何も書いてなかった。
>> 463さん こんばんは。 >いままでのMonaソースはGPLで配布されてたと思ってた、確かめたら何も書いてなかった。 src/COPYINGにGPLに関して記述があります。 分かりづらくてすいません。
こらーひげぽん、BBSにアマゾンのバナー付けて儲けようとするなー・・・・・・・ って思ってクリックしたら、アンケートに答えたら500円分のギフト券くれるだってぇ。 もったいねぇなぁ、もう注文してモロタ。
ライセンス確認。 一度GPLで配布したものを、違うライセンスにすることは可能なのかな? 個人的には、NYSLが好きだけど。
>>466 GPLはあくまでも配布する側と受け取る側と間の契約。
受け取った側は再配布する時にGPLに束縛されるが
オリジナルを配布する人はGPLによる拘束を受けないので
ライセンスを変更して配布することが可能。
この場合、オリジナルを配布するのは著作者、ひげぽんと
その他ソースに対する著作権を持つ人達。
今までそれぞれのソースをマージするのにその合意はGPLという
契約によって行われているのでその人達が新しいライセンス
で契約をしなおして互いのソースをマージしなおす必要はある。
・・・、あれ?stlport以下って大丈夫なのか?
ソースとしては独立してもコンパイル後に同じバイナリー内になる
ソースだったらライセンス違反になっちゃうぞー。
(GPLがそう強制してくる。)
>>456 素晴らしい!
神のような決断!!!
脱GPL最高!!
GUIプログラマでツールキット作ったりするのが趣味だったんだけど、
その当時の知識を掘り起こしてみたくなってきたじゃないですか!!
暇になったらもっとちゃんと考えてご一筆送りたいと思います。
でも今むっちゃ忙しくて盆の間を含めここ2週間家に帰ってなくて、
その間に親が癌だって判明したり無茶苦茶になってるから
あまり期待しないでくださいね!!!
(多分、私の正体ばればれだろうな)
>>465 さん
>こらーひげぽん、BBSにアマゾンのバナー付けて儲けようとするなー・・・・・・・
えーと。少なくとも私は儲けてません。単なるフリーススペースの広告だと思われます。
>>467 さん
>・・・、あれ?stlport以下って大丈夫なのか?
stlportに関しては先日別の方からもご指摘を受けまして
CVSからremoveしました。
今後別ライセンスで取り込むコードはsrc/cotribディレクトリに格納される予定です。
なおstlportに関しては*現在は*コアカーネルが固まっていないため使用していませんので
一時的にremoveしたままとさせていただきます。
>>469 さん
>あまり期待しないでくださいね!!!
>(多分、私の正体ばればれだろうな)
こんにちは。なんとなく分かりましたw
なお。ライセンスの移行は現在、とある方の返答待ちとなっています。
もしご覧になっていたらご連絡ください。m(__)m
>>470 BSDLについて1つだけ。
私個人はFreeBSDが割と好き。
はっきり言ってLinuxは大嫌い。
2ch外でも犬糞扱いしている。
そんな私でも、逆の人がいることは知っている。
Linuxマンセーで、GPLマンセーで、
BSDはあまり好きじゃないって人。
正直、BSDマンセーな人っていうのは、
古株の人が多くてあまり浮気しない。
だからBSDライセンスにしたからって喜ぶのは
私みたいな基地外だけ。
他にBSDで喜ぶ人ってのは商売っ気のある人かな。
でも正直BeOSでさえ破綻したOS屋稼業なんか無理と思う。
だから商用うんぬんなんてのは実質意味を持たないよ。
(続く...)
だから結局GPLかBSDLかってのは実務的な意味よりも、 むしろLinux派かBSDL派かっていう思想表明と受け取られる。 だから上で書いたような派閥争いみたいな視点がクローズアップされる。 だから個人的にはBSDLよりMIT/Xライセンスの方をお勧めします。 (ちなみにGNUでもBSDLよりMIT/Xライセンスが推奨) 実質的な意味は「修正BSDL==MIT/X」なのですが、 Linux派かBSD派かって妙な派閥意識から抜けられるのが良い。 個人的には文体もMIT/Xの方がすき。 特にPermission is hereby grantedって出だしが。 正直、小規模プロジェクトにおけるライセンスってイメージ戦略だから。 Linux優勢な現状、BSD派だって言うイメージをもたれるのは良くない。 私が言いたいのはそれだけ。 ついでだからちょっと付け加えると、 知る人ぞ知るWideStudioの初期でライセンスについて議論が出たとき 同じようなことを言ってMIT/Xに一本化させたりしたこともある。 当時作者はライセンスの知識や思想なんか全然なくて、 適当に他のソフトから持ってきただけだって言ってた。 ひげぽんに似てるかも。
あと補足。 MIT/XとBSDLをごちゃ混ぜにするのは何の問題もない。 ただし元々BSDLだったソースコードのライセンス表記を 勝手に書き換えることだけは絶対にダメ。 たとえクローズドにして商用利用したとしてもそれはしてはダメ。 だからWindowsでftpをstringsしたらカリフォルニア大学の(C)が出てくる。 MSがTCP/IPの一部をBSDからパチったってのは事実だし何の問題もない。 っていうか、ソースコードのライセンス表記を書き換えるのは 元記述者の承認を得ないと不可能。 それが唯一可能なのはPublic Domainだけ。 だから今の私はPDSマンセーなんだけど、 sf.jpだとPDSは蹴られるからPDSを勧めたりはしないけどね。 ちなみにBSDLのソースをMIT/Xにしてしまうことは出来るよ。 勝手にクローズドにしていいくらいだからね。 やり方は、元のコピーライトやライセンス表記には手を加えないで、 その上とか下に新しいライセンスを書き加えちゃえばいい。 オブジェクト指向の継承に似ている。 その方法で修正BSDLをGPLに書き換えるのも可能。 (もちろん逆は不可能だし、修正でないオリジナルBSDLのGPL化はダメ)
細かい亜種が色々あるけど本家が一番洗練されている。
http://www.x.org/Downloads_terms.html Permission is hereby granted, free of charge,
to any person obtaining a copy of this software
and associated documentation files (the "Software"),
to deal in the Software without restriction,
including without limitation the rights to use,
copy, modify, merge, publish, distribute,
and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
provided that the above copyright notice(s) and this permission notice appear
in all copies of the Software and that both the above copyright notice(s)
and this permission notice appear in supporting documentation.
(後略)
むむ。 BSDLを採用することがBSD派?と、本当に思われて PJ戦略上よろしくないのであればBSDLも考え直さなければならないですね。
暇なんでNetBSDみたいだけど2chネラー向きのOSつーのを 作ってみるわ。もちろんWindowsネイティブな。少しまちなー。
>>476 よっ、久しぶり。そして逃げるというオチ
そういう場合は 「そろそろやってみるか」 じゃないと。
拙速主義で逃げてしまった様子
俺は夢見がちな理系大学生なんですが 俺もOS作りたいです まずは何から始めればいいんでしょうか?
>>483 悪魔本とはなんでしょうか?
何かの本の俗称?隠語?
タネンバウム先生のMINIXの本なら読んでいる途中です。
>>482 対象のプロセッサの勉強/資料集め。
Intel系ならIntelのPDFの他に「はじめて読む486」とか。
既存のOSのソースを読む(小さいのがいい)。すぐに5種くらいGETできる。
Osask, Mona, OSをつくろう, MINIX, Noname とか。
プログラミング力は当たり前の前提になると思う。
>>482 そもそもレベルが判らないので「実際に作ろう」としか言えなそう。
>>482 時間があるなら計算機工学もやれば?
ハードウェアの基礎知識をつけてからの方がOSは作りやすいと思うけど。
>>485 を受けて
>>482 osdev-j にて「ソースを読む」で検索する
>>482 様々な既存OSのユ−ザーになる
様々な既存OSのパワーユーザーになる
様々な既存OSの開発の話題が見えてくる
...
というのはいかがでしょう
みなさま助言ありがとうございます。
OSkitはなんだったかUNIXの雑誌を買ったときについてきたので多少遊んだことがあります。
IntelのPDFも大口を叩いていたら教授がくれました。
(ちょっと理解に苦しんでいますが…
>>487 様
それは常々自分でも感じていました…
来期の授業でハードウェアをやるのでがんばります(^^;
>>490 様
そのようなページをずーっと探していたのです!
ありがとうございます!!
熟読しようかと思います。
煽られたら嫌だなぁ…とか思い
最初の書き込みは多少ネタ臭を漂わせていたのですが
みなさま真剣にアドバイスやヒントをくださりありがとうございます。
露骨に言葉使いとか丁寧になっていてすみませんm(__)m
自分ってば香ばしいなぁ…
ページング実装中です。 ページフォルトハンドラはフォルトを発生させたメモリアクセスアドレスを 知ることが出来るのですが。 ちょっと困っています。 たとえばリニアアドレス0x00000000-0x003FFFFFが 物理メモリにマッピングされている場合。 dword* p = (dword*)0x3FFFFE; *p = 5; のようにdwordのアクセスでページフォルトが発生します。 ページフォルトが起こるのは当然なのですがフォルトが発生したアドレスは 0x00FFFFEとなります。 ページフォルトの処理としては0x00400000あたりに物理ページを割り当てる処理 を入れるべきなのですが このようなページ境界の場合どちらでフォルトが発生したのかを はかりかねています。 何か良い方法があるのでしょうか? 最悪の方法としてはページ境界の場合は両方のページを 調べるしかないと考えています。
>>493 ハンドラのバグかもしれません。
調査中です。
>>492 の件ですが
ページフォルトハンドラとGraphicalConsoleのバグの複合技でした。
大変お騒がせいたしました。
フォルトが発生したアドレスをきちんと取ることが出来るようになりました。
>>ひげぽん 祝!MIT/Xライセンス(X11ライセンスとも言う) ところで474の書き込みご覧になって? 洗練されてるってのは最後のここだよ。 > Except as contained in this notice, > the name of a copyright holder shall not be used > in advertising or otherwise to promote the sale, > use or other dealings in this Software > without prior written authorization of the copyright holder. WideStudioからパチって来たみたいだけど、あのスタイルは古いよ。 本文を作者ごとに書き換えないといけなくなって良くない。 っていうか正直この部分は消してもいいけど。 474のリンク先見てごらん。(C)に壮々たる名前が並んでるでしょ。 そういうレベルでの話だから。
> WideStudioからパチって来たみたいだけど
よく見るとここは酷いね。↓
> IN NO EVENT SHALL *** BE LIABLE FOR ANY CLAIM,
まんまじゃん。
(晒し上げる気はないので伏字にしたけど分かるよね?)
悪い事言わないから、本文に名前を埋め込むのは止めた方が良いよ。
とにかく474を繰り返しておく。
> 細かい亜種が色々あるけど本家が一番洗練されている。
>
http://www.x.org/Downloads_terms.html
あとライセンスをまともに理解している人で Xライセンスを知らないなんて人はまずいないから、 BSDライセンスより説明の手間が増えるなんてことはまずない。 その点は安心して良いと思うよ。 知名度は劣るかもしれないってのは認めるけど、 名前を聞いたことだけある、ない、のレベルでは 内容のことなんか理解してないだろうから、 結局説明しないといけないって点では同じ。 素人に説明うんぬんで一番簡単なのはやっぱPDSだけどね。 著作権フリーの素材集みたいなもんって言えば済むから。
ぱぶどめマンセーーーーー
>>492 >このようなページ境界の場合どちらでフォルトが発生したのかを
>はかりかねています。
dword* p = (dword*)0x3FFFFE;
*p = 5;
の場合は、0x3ff000と0x400000両方が割り当てられていない場合に
CR2が0x3ffffeになる。
0x3ff000が割り当てられていない場合にも
CR2が0x3ffffeになる。
0x400000が割り当てられていない場合には
CR2が0x400000になる。
500GET!!
_,.'⌒) , ´f二コヽ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ! l !ノ リ i l <. 独自の実験では、未割当のページ境界へdwordアクセスすると、 ノiハl.゚ ー゚ノリ \ 結果として2段階に渡ってfaultが発生することになります。 ⊂)允つ |#1. 当該ページのaccess fault(0x*****ffe) く/_|〉 |#2. 当該ページをexist化し、例外復帰 し'ノ |#3. 次ページのaccess fault(0x****0000) \_______________________
>>495 さん
ライセンスの件、ご指摘ありがとうございます。
週末にでもライセンス条文を確認いたします。
>>499 , 501さん
ページフォルトの件アドバイスありがとうございます。
ページフォルトハンドラは正常化して動作しているので、フォルト時に物理ページを割り当てるべく
作業をしています。そこで疑問なのですが
ページフォルトが発生しハンドラが処理を行い復帰したのにもかかわらず
同じリニアアドレスでフォルトが発生した場合はどういう扱いなのでしょうか?
たとえば
1.リニアアドレスAでページフォルト発生
2.ハンドラ呼ばれる(ただしハンドラにバグがあり物理ページを割り当てられなかった)
3.ハンドラから復帰
4.物理ページが割り当てられていないので、またリニアアドレスAでページフォルト発生
?
4以降はどのようになるのでしょうか?
永遠とページフォルトが発生し続けるor 別の例外になる?
この例ですとおそらく、延々と「ページフォルトが発生し続ける」になると思います。 ダブルフォールト等になるのは、ハンドラに入る前に他の例外が起きたときです。
>>503 Kさん
>この例ですとおそらく、延々と「ページフォルトが発生し続ける」になると思います。
>ダブルフォールト等になるのは、ハンドラに入る前に他の例外が起きたときです。
なるほど。ページフォルトが発生し続けるのですね。
アドバイスありがとうございます。
今回の質問は、実験すれば分かる部類のものだと思うのですが
いまだページフォルト処理に怪しいところがあり問題の切り分けのため
質問させていただきました。どうもありがとうございました。
>> 503 Kさん >この例ですとおそらく、延々と「ページフォルトが発生し続ける」になると思います。 >ダブルフォールト等になるのは、ハンドラに入る前に他の例外が起きたときです。 その後。この現象を確認することが出来ました。 またページフォルトが発生したときにあいている物理ページをわりあて 復帰できるようになりました。 次はいよいよプロセス毎にページディレクトリを分ける処理を考えます。
>>502 確認しました。おつかれ
それにしてもコーディングの実働が3名だけとは。。。
monaのソースって容量はどのくらい?
256バイトだよ
>>506 人数は関係ないかと。
>>ひげぽんさん
お疲れ様です。
ソースの量ついては、KBより行数のほうが目安になると思います。
容量ときかれると、KBって答えちゃいそうですけど。
「コメント書うんた Ver.2.71」 >書うんた これをわざとだと言ってくれ お願いだ、しゃれだろ? おい、ひげぽん よ
>>510 Developer登録されている人数よりずいぶん少ないねってことを
間接的に言っているのだと思ワレメ
WideStudioはTronに移植するってことで未踏に採用されたらしいけど Monaに移植するってのも面白いかも (移植って言うよりウィンドウシステム整備が中心になるか)
プロセスのメモリマッピングと実行形式決定の下調べとして カーネルにリンクされない、ユーザープロセスの実行を無理やり実現してみました。 かなり強引ですが成功すると感動しました。 以下覚書をかねて手順を書いていきます。 1)hello.cppを作成します。 --------------------------------------------- #include <userlib.h> void main() { syscall_print("Hello Mona!!!"); while (true); } ---------------------------------------------
2)こいつをコンパイルします。 gcc -nostdlib -fno-exceptions -fno-rtti -ffreestanding -Wall -I . -c hello.cpp -o hello.o 3)Monaカーネルが提供するライブラリ?userlib.oをリンクします。 ld -n -Ttext 0x1200 -static hello.o ../userlib.o -o userfunc.o 3)シンボルテーブルの削除 strip -O binary userfunc.o 4)userfunc.oをバイナリエディタで開きます。そしてこいつをカーネルの中にbyte配列をして格納します。 Monaのファイルシステムがまだ信頼性が低いのでbyte配列としてメモリに転送します。 static byte user_func[] = {0x48, 0x65・・・・};こんな感じ 5)カーネル内でプロセスを生成します。 g_process_manager->addProcess((Process*)process1, (virtual_addr)(user_func+15)); エントリポイントがuser_funcではなく、user_func+15にしてあるのは先頭に文字列データがあるからです。 (1)〜(5)が完了したらカーネルをビルドすれば完了です。
近い将来には 実行形式の決定により、コードやデータ等のメモリ上の配置が決まります。 またプロセス終了のシステムコールが完成すればhello.cppのwhile(true);も 不要となります。 RamDiskDriverからプロセスイメージを読み込んでページディレクトリを割り当てて プロセス生成という流れになるかと思います。 いつになるかはわかりませんがw
>>516 おめでとー
COMみたいだね
拡張子.comにしちゃったら?
.exeはPEとか後で考えればいいんだしー
やっぱELFよりPEだよな
なんでいまさらCOFF
あれ、ELFってまだあったんですか?(^^)
>>519 さん
ありがとうございます。
> COMみたいだね
> 拡張子.comにしちゃったら
そうですね。現在の形はcomに一番近いと思います。
現在実行形式として候補に挙がっているのは
ELFとOSASK形式です。
資料がそろえばELFで行きそうな気配です。
>> 481さん
>がんばれひげぽん
>
ttp://up.isp.2ch.net/up/0e3d87576c3c.jpg お返事が遅くなってしまい申し訳ありません。
ありがとうございます。面白いですね。
実はこういうのが一番やる気につながったりしますw
WIN厨必死だな
>>527 連続カキコ回避サンクスコ
最近.NETでPEは拡張されたがその仕様も公開されている。
ttp://msdn.microsoft.com/net/ecma/ これは従来のバイナリで不可能だった
関数やクラスの完全な型定義まで含んでいる。
(この辺は従来のPEはELFに劣っていた部分)
バイナリ部分もMSILで記述されているため
CPUの種類に左右されないのはJavaと同じ特徴。
(アンマネージコードが混在したものはこの限りではない)
実際のバイナリを眺めながらPEの構造を調べるには
.NET Explorerがお勧め
ttp://www.remotesoft.com/dotexplorer/ これはもともとC#の逆コンパイラ(Salamander)と連携させるものだが、
フリー版ではSalamanderが使えないため、
単なるPE構造の表示しかできない。
関数やクラスの型の格納状況などを見るためにも
Notepad.exeとかよりマネージドアセンブリを見た方がオモロイ。
一応断っておくと別にPEを勧めているわけではない。
というか、どれか1つなんていうのはナンセンス。
BSD-OSならa.out, COFF, ELFのどれも実行できる。
それなら資料が多いものの方がとっつきやすいでしょ、程度のこと。
途中でELFに鞍替えしたBeOS for Intel上で
PEを動かすなんてことだって出来る。
(BeOSはソース非公開にも関わらず、というのがミソ)
ttp://www.toyoshima-house.net/classic/beos/ > EXEが一部しか対応できないのは、
> Windowsの実行ファイルが前提としているメモリ空間に
> BeOS kernelのheapが存在しているためで、
> リンク時に再配置情報がstripされているEXEは実行できません。
> で、残念ながら最近のやつは全滅。
> このあたりがkernelレベルでWin32をサポートするPEACEと比べて弱い点です。
(上の引用はエミュを勧めているわけじゃないので念のため)
まあ、メモリ空間にイメージをマップ出来れば、フォーマットなんでどうでもいいことだが。 開発ツールの都合にあわせるのが無難じゃないかな? NWSOSみたいにそのへんひっくるめて作れるならなんでもいいけど、 gccに依存するつもりならELFだろうね。
言語から設計するって言ってたな
LightConeに追い付け追い越せスレはここでつか?
とっくに追い越してるし・・・
>>525 何も分かってない厨房が変なこと言ってる。。。
ひげぽんのことじゃなくて、おいおいって書き込んでる香具師のことね 読み返して気付いたけど誤解を招きかねないカキコだった スマンコ
固定叩きは他所でおながいします
>>540 ↓のどこが固定なんだ?↓の言ってること変じゃね?
> おいおい
> 一度GPLにしたものをライセンスかえたらやばくないか?これがGPLの嫌われる理由の1つであると思うんだが。
>>544 objdumpとreadelfがあれば生きていけます。
つーか無いとダメ。
ところでPECOFFを押している人って、どういうメリットがあって推薦してるの?
世の中の流れ的にはELFでいいと思うけど。
おい原始人ども 時代はcafebabeだろうが
>>545 まずはひげぽんが探さなくて良いようにELFの企画書とか列挙してくれ
gcc-2.Xとgcc-3.Xでなぜ互換性がないのかとか分かるようにな
>>526 さん
>PEの資料なら日本語のもあるよ
ありがとうございます。
ELFもこのような感じで資料があるといいのですがなかなか見つからないですね。
>>530 >実際のバイナリを眺めながらPEの構造を調べるには
>.NET Explorerがお勧め
>
ttp://www.remotesoft.com/dotexplorer/ 使ってみました。おもしろいですね。
ELFでも同じようなツールがあると便利ですね。
>>542 > 一度GPLにしたものをライセンスかえたらやばくないか?これがGPLの嫌われる理由の1つであると思うんだが
ぐりぽんさんが回答を書いてくださったようです。
>>545 MSのコンパイラ(つまりcl.exe)が使える
.NET対応と無関係に、CLI拡張の構造だけパクるのも有用
GNUべったりシステムじゃないのにELFにするメリットってあるの?
実行形式の資料を探しつつ仮想86の実装を行っていました。 仮想86プロセスを定義して、仮想86への切り替えを試みたところ DSが0だとおこられているようです。 00016520332e[CPU ] seg = DS 00016520332e[CPU ] seg->selector.value = 0000 00016520337e[CPU ] seg = DS 00016520337e[CPU ] seg->selector.value = 0000 00016520337e[CPU ] write_virtual_checks: valid bit = 0
切り替えはこんな感じ _arch_switch_process_to_v86_mode: mov ebx, dword[_g_current_process] mov eax, dword[ebx + 12]; restore eax mov ecx, dword[ebx + 16]; restore ecx mov edx, dword[ebx + 20]; restore edx mov esp, dword[ebx + 28]; restore esp mov ebp, dword[ebx + 32]; restore ebp mov esi, dword[ebx + 36]; restore esi mov edi, dword[ebx + 40]; restore edi mov ds , word[ebx + 44] ; restore ds mov es , word[ebx + 44] ; restore es mov fs , word[ebx + 44] ; restore fs mov gs , word[ebx + 44] ; restore gs
>>546 jarは単なるzipアーカイブだから何でもかんでも突っ込めるのは良いが
圧縮が絡む部分は厄介
何でもかんでもUPXしたがるKなんかは好きそうだがw
仮想86の切り替え時はセグメントはスタックに積むからそれは不適当 きっとmov ds,[〜]の次で落ちてる
push dword[ebx + 44] push dword[ebx + 44] push dword[ebx + 44] push dword[ebx + 44] push dword[ebx + 48] ; push ss here dpl lowwer push dword[ebx + 28] ; push esp here dpl lowwer push dword[ebx + 8] ; push eflags push dword[ebx + 4] ; push cs push dword[ebx + 0] ; push eip push dword[ebx + 24] pop ebx ; restore ebp iretd ; switch to next
これ、変じゃない?↓ mov ds , word[ebx + 44] ; restore ds mov es , word[ebx + 44] ; restore es mov fs , word[ebx + 44] ; restore fs mov gs , word[ebx + 44] ; restore gs ※[ebx+44]が全部同じ
うわ。いろいろ間違えている。。。
> mov ds , word[ebx + 44] ; restore ds
> mov es , word[ebx + 44] ; restore es
> mov fs , word[ebx + 44] ; restore fs
> mov gs , word[ebx + 44] ; restore gs
>>554 これは無意味なコードです。すいません。
影響はないと思いますが冗長です。
>>555 のように
セグメントレジスタはスタックに積んでいます。
>>556 ds=es=fs=gsとなっています。>>Mona
>>557 書き込みミスで実際にはないコードだとしても実際にソースにあるコードだとしても全然冗長じゃないコード
セグメントレジスタの変更は以後のメモリ参照に影響が出るから気をつけてね
初めて書き込ませていただきます。 私もOSを作っている者なのですが、このスレは大変参考になる資料があり重宝しています。 私は先進的かな?という理由だけでELFを選択しようとしていましたが、資料の面ではPEも考慮しようと思います。 あまりスキルがなくネタ提供は出来ないのですが、このスレやここから誕生したOSの動向を見守らせて頂こうと思います。
>>556 さんの指摘した箇所が、僕は違う面でちょっと心配です。
最初のDSのロードはいいんですが、ES〜GSはあらぬところを読んでる可能性もあります。
というのは、[EBX+4]というのは、つまり[DS:EBX+4]なわけで・・・。
AX = [DS:EBX+4]; DS = AX; ES = AX; FS = AX; GS = AX;
のようにしたほうが安全ではないかと。
Monaのソースを読んでいないので、もしかしたら的外れかもしれません。すみません。
>>559 とりあえず、はじめは、ELFでいいのではないでしょうか。
重要なのは、将来、対応できるように拡張性を考えておくことです。
たとえば、もっとも単純な例だと
preloaderが、ファイルヘッダを見て、ELF Loaderに渡す。
PE Loaderに渡す。独自形式Loaderに渡す。
関連付け解決モジュールに渡す。などなど。
インタフェースやメモリマップを公開しておけば、PE Loaderとかは、他の誰かが作ってくれるかもしれないし。
>>561 Kさん
ご指摘ありがとうございます。
>AX = [DS:EBX+4]; DS = AX; ES = AX; FS = AX; GS = AX;
>のようにしたほうが安全ではないかと。
なるほどご指摘の点は今まで一度も意識していなかった点です。
ありがとうございます。
DS=0問題ですが、謎が解けました。
INTELのマニュアルを見ると仮想86モード実行中に割り込みが起こると
セグメントレジスタds=cs=fs=gsがクリアされるとのこと
クリアされたセグメントレジスタはiretdされると元通り復帰するが
ハンドラ中はOSがせっていしなければならない(thx! Aris氏)
との事です。
なのでハンドラの先頭でセグメントの再設定が必要であることがわかりました。
>>561 さすがKさん!!
全然気付かなかった(恥
>>568 本気で変換しようとしたらリロケート情報が失われたバイナリも相手にしないといけないわけで
>>541 のvdaみたいなツールが必要になる罠
間違えた、
>>543 だった
嫁でも相手に逝って来ます・・・・・・(泣
>>568 ELFが優れてるのってa.outに対してだろ?(ゲラ
>>571 a.out:ELF≒com:PE
comってComponentObjectModelのことじゃねーぞ。
そっちのCOMならELFより柔軟。
>570 自慢???
>>573 デブスで太平洋だから掃除機の方がまし(号泣
>>572 そのCOMって実態はPEだろ?
それで行き詰ったからPEそのものを拡張して.NETに移行しようとしてるんじゃねーの?
>>574 合掌……
>>537 Lタソの擦れではプログラミングを通り越して物理数学談義が花咲いていますが・・・
>>576 それがプログラミング技術の延長線上にあるとは限らないw
ELFはガンガン拡張されているPEより劣る ↓ LタソもPEを採用している ↓ ELFなんか捨ててPEを採用しる! ↓ (゚Д゚)ウマー
>>578 PEを嫌わせてELFを薦めようという誉め殺し
つうかELFの資料ってどこにあるん? ぐぐってもまともな資料が一個もみつからんわけだが・・・ a.outにも劣るフォーマットだな(プ
>>566 ELFを検討しているって書いてあったから、とりあえずELFでって書いただけ
宗教論争になると、とたんに書き込みが増大しますね。
何がどうって説明しないのが宗教だろ
>>583 不条理故に我信ず
つー名言がありますな
実行形式の資料を紹介してくださったかたがたありがとうございます。 私も探しているのですがなかなか良い資料が見つかりません(日本語では) 仮想86試行錯誤中 仮想86移行部か以降直後に fault06がinvalid op codeが発生中。 _arch_switch_process_to_v86_mode: mov ebx, dword[_g_current_process] mov eax, dword[ebx + 12] ; restore eax mov ecx, dword[ebx + 16] ; restore ecx mov edx, dword[ebx + 20] ; restore edx mov esp, dword[ebx + 28] ; restore esp mov ebp, dword[ebx + 32] ; restore ebp mov esi, dword[ebx + 36] ; restore esi mov edi, dword[ebx + 40] ; restore edi push dword[ebx + 56] ; gs push dword[ebx + 52] ; fs push dword[ebx + 44] ; ds push dword[ebx + 48] ; es push dword[ebx + 60] ; push ss here dpl lowwer push dword[ebx + 28] ; push esp here dpl lowwer push dword[ebx + 8] ; push eflags push dword[ebx + 4] ; push cs push dword[ebx + 0] ; push eip push dword[ebx + 24] pop ebx ; restore ebp ; call _arch_set_stack_view ; call _fault0dHandler iretd
日本語でELFのまとまった資料というとLinkers & Loadersの日本語版かなあ。 a.outもPECOFFも載ってるから比較してみるのもよろしいかと。
>>588 ひげぽんもこれ読んでたんでは?
俺も読んだことあるけど、結構難解。(能力が無いからかも)
>>588 >日本語でELFのまとまった資料というとLinkers & Loadersの日本語版かなあ。
一応持っているのですがあの本を読むのに前提となってるような知識が
ないせいなのかどうもはっきりとは分からないので
あの本を補完できるような資料を探しています。
とりあえずELFで進めてみようかと考えています。 V86は週末にでも再チャレンジします。
592 :
デフォルトの名無しさん :03/09/03 23:41
おいELF真理教のマニアども ひげぽんが困ってるのに無視して経典の朗読か?
ひげぽんはCygwinで開発進めてるでしょ。 だったらクロスコンパイラを用意せずに済ませるって意味でCOFFは楽。 ***ELFだったらクロスコンパイラ必須だよ。*** さすがにリンカはどうしようもないが、 OSASKやNWSOSだってリンカは独自だ。(前者はCOFFじゃないが)
>>591 なぜELFがいいと思ったか説明しないと荒れる原因を作るよ
>>594 >なぜELFがいいと思ったか説明しないと荒れる原因を作るよ
ご指摘ありがとうございます。
まず前提としてどなたかがおっしゃっていましたが
1つの実行形式しかサポートしないというのは将来的にはありえない話です。
そのためまずは、全くの初心者の私が
資料を見ながら(既存OSのソースも含む)実装を進められること。
ある程度メジャであること。
現在のMonaの開発環境であるcygwin gcc および nasmがelfに対応していること。
などが挙げられると思います。
もしかしたら上記の項目はCOFFなどにも当てはまるかもしれませんが
最後は私の直感?によるところもあると思います。
GNU ldに処理を丸投げしないとELFで楽できないよ。 AtheOSが真っ先にglibcを移植した意味を考えてみ。
> 資料を見ながら(既存OSのソースも含む)実装を進められること。 資料→COFFの方が豊富 ソース→GPL放棄したからGNU系やLinuxは参考にしてはいけない
>>602 すごい記事だね。
> 出来れば仕様書に従い簡単なダンプツールを組んでみることをお勧めします。
この記事を参考にブートレコードから呼び出すELFローダーを作って、
MonaカーネルをELF化して起動させてみるのが第一歩じゃないかな。
カーネル単体ならダイナミックリンクとか無視できるからね。
誰かやらない?(w
すみませんでした。 知ったかぶりしてますた。
結局602の記事の人みたいな試行錯誤するしかないってこった。 COFFだってL氏は同じようなことしてたみたいなのをニフで読んだ。
>>595 実装しやすいっていうのは仕様が簡単だってことなのに
ELFなんて一番難しいものを選ぶような直感は外してる。
流行ってるからとかっていうのが直感ならセンスを疑う。
とりあえずは前に出てた.comみたいなのでいいんじゃない?
それで不足を感じるようになったらa.out。
DLL HELLになるくらいにソフトが充実して来ないと
a.outの限界にぶち当たることすらないから
ELFを持ち出す必要性は事実上ない。
そういうのを判断するのがセンスだよ。
Monaはいきなりマイクロカーネルで作ってないよね。 ELFに手を出すのはいきなりマイクロカーネルに手を出すようなもの。 仕様書があって従えばいいから出来るんじゃないかって言うのは勘違い。 直感とか遠大な計画より目先の必要性を重視した方がいいよ。 それが一番フレーム(荒れ)を引き起こさない。 きれいな設計できれいなシステムとかって騒ぐ香具師はいるかもしれんが そんなのはそもそも宗教論議ですらない。
>>608 > Monaはいきなりマイクロカーネルで作ってないよね。
> ELFに手を出すのはいきなりマイクロカーネルに手を出すようなもの。
ただ、こういう着手の段階でも
・将来的にはマイクロカーネル化する ・将来的にはELFサポートする
等、将来展望を念頭に置いておいて、現在形の作業をするのは
どんなモノ作りプロジェクトでもキホンと思われ
>>597 *BSDもELFだからそっちを見ればよかろう。
linuxのbinfmt_elfは読みにくい。
つかPECOFFのフリーな実装ってなにがある?
とりあえず思い付くのはwineくらいしかないが。
haun.orgに有るpeaceもフリーのPEローダと言えるかも知れません。 しかしながら、それを見るよりdiswin等をチェックした方が良いでしょう。 試行錯誤の間はelfを使う事になると思います。
ふと気になったので。
>>596 glibcとbinutilsにどういう関係が?
>>598 APIとglibcはあんまし関係ないと思うぞ。
0からlibcを書けるだけの人手がなければ、今あるものを移植するのが
現実的な選択でないの?
libcなんていらねーぜと言う強者がどれだけいるか…
>>612 ああ、それもあったね。
まだpeaceという名前がなかった頃の開発者の日記がPECOFFローダーの開発日記だった。
あれ見れれば参考になりそうだな。
今の実装はELFとPECOFFのリンクなんて無茶なこともやってるし…
今日はELFヘッダを読み込んで中身を表示するところを実験していました。 実験は/toolsディレクトリ以下で、Windows上でもテストできるよう 環境を整えました。
objdumpコマンドでELFの大まかな構造は見ることが出来るのですね。 自作のものと比較することが出来て便利ですね。
>>617 readelfと言うのもあるよ。
elfの構造をチェックするならこっちのほうが親切かもしれない。
>>618 > readelfと言うのもあるよ。
> elfの構造をチェックするならこっちのほうが親切かもしれない。
おお。これはすばらしいですね。
ありがとうございます。
これで自分のELF解析結果の検証が出来ます。
ひげぽん> 今日はELFヘッダを読み込んで中身を表示するところを実験していました。 okuoku> ELFがMonaの実行ファイルフォーマットになるわけではなく、その辺りの議論 okuoku> はもう少し先の話になるでしょう。 開発者間で意思の疎通が取れてないみたいだね
> > readelfと言うのもあるよ。
> > elfの構造をチェックするならこっちのほうが親切かもしれない。
> おお。これはすばらしいですね。
既出なんだが
>>545 スレなんか見てないのか
wiki> クラスなどの明確な格納を伴う。 これを実現している処理系は?
okuoku> 出来ることなら、Javaのクラスファイルみたいな感じの実行ファイルにしたいですな。
既出だよ
>>528 CLI拡張したPEはECMAになってる
.NET Explorerってのは本来そういうのを調べるツール
多分ひげぽんは***okuokuと違って***目だけは通してるんだろうけど
俺は直感でELFが好きとか思って視野が狭められてるか
意味が分からなくて結果的に読み落としてるんだろうな
……というのが最大限好意的な見方なんだろうけど
フリー実装うんぬんってことで情報提供しとくと、
CLI拡張したPEだとMono(Monaじゃないからね!)がある
ttp://www.go-mono.com/
喪前らこそひげぽんが仮想86で困ってても無視して 自分の宗教宣布に大忙しだったろうが
>>620 >開発者間で意思の疎通が取れてないみたいだね
okuokuさんとはosdev-jなどでお話させていただいているので
ある程度の意思の疎通は取れていると思っています。
ただ、私がMonaに対する明確な指針をださないために
いろいろとフォローしてくださっているのだと思います。
また、okuokuさんの言っていることのほうが多分正しいですw
>>621 さん
>既出なんだが
>>545 >スレなんか見てないのか
大変失礼いたしました。
見落としておりました。
>>623 >多分ひげぽんは***okuokuと違って***目だけは通してるんだろうけど
>俺は直感でELFが好きとか思って視野が狭められてるか
>意味が分からなくて結果的に読み落としてるんだろうな
>……というのが最大限好意的な見方なんだろうけど
いろいろとご迷惑をおかけしております。
今回ELFに関して作業を開始したのもPEやCOFFをサポートしない
という意味ではありません。
ましてやELFに強い魅力を感じているというわけでもありません。
習作としてELFの実行形式(再配置可能形式ではない)を
読み込めるように実験してみようというものです。
そこでELFはMonaの実行形式に合わないと感じれば
他の実行形式に着手するかもしれません。
現在私の実行形式に関する無知から、試行錯誤が続いていて
ご支援いただいている方々を混乱させてしまっているようです。
申し訳ありません。
627 :
デフォルトの名無しさん :03/09/06 17:00
ガンガ!
ELF(実行可能形式)のロードの実験をしていました。 まず以下のようなMona用のユーザープログラムを 作成します。 #include <userlib.h> void main() { while (true) { syscall_print("Mona!!!_( ;'[]`)_"); syscall_sleep(50); syscall_print("Mona!!!|( ;'<>`)/"); } }
そしてこいつをコンパイル・リンクしてELF形式にします。 gcc -nostdlib -fno-exceptions -fno-rtti -ffreestanding -Wall -I . -I ../src/user -c ../src/user/hello.cpp -o ./hello.o ld -n -Ttext 0x250000 -static ./hello.o ../src/userlib.o -o sample.elf objcopy --output-target=elf32-i386 sample.elf このときエントリポイントを決定しておきます。(0x250000) このelf形式のファイルを加工してメモリに転送できるような イメージを作成します。(現在はWindowsプログラムとして適当なコードですが) 加工後のファイルをMonaのソース内で byte配列に格納して、0x250000に転送してユーザープロセスとして実行します。 上記の手順でELF⇒Mona上でのユーザープロセスへと結びつけるテストに成功しました。
今日の成果: 上記実験成功を受けてELFLoaderをMonaのカーネルに組み込みました。 ELF形式のファイルをMonaのブートディスクのFAT12に格納しておき カーネルブート後、FAT12Driverを介してメモリに転送して ELFLoaderで実行可能に加工。 カーネルプロセスとして実行することに成功にしました!!! 実行形式の資料をご紹介くださった方々に深く感謝いたします。 しばらくはテストコードなどカーネルの整理をしようと考えています。
ひげぽんさんおめでとうございます。 漏れも進めたいけど、なかなか難しいです・・・
ELF読み込んで、実行できたのですね。 私もOSを作っています。(非公開の) ELFには、まだ着手していないけど、COMファイルのような形式で プロセスとして起動することができてます。(6月中旬に) また、マイクロカーネルへも、一歩踏み出しました。 キーボードドライバがサブシステム化されています。(8月中旬に) 現在は、ウィンドウシステム辺りの設計をしています。 ELFのことでは、こちらの負けです。 ひげぽんさん あめでとうごさいます。 今後も、Monaを発展させていってください。
>>631 > ひげぽんさんおめでとうございます。
> 漏れも進めたいけど、なかなか難しいです・・・
ありがとうございます。なかなか忙しいと続けるのは難しいと思いますが
お互いがんばってい続けられたらいいですね。
>>632 さん
こんばんは
>私もOSを作っています。(非公開の)
おお。それはすばらしいですね。
> プロセスとして起動することができてます。(6月中旬に)
> キーボードドライバがサブシステム化されています。(8月中旬に)
だいぶ先を行かれているようでうらやましいです。
>ひげぽんさん
>あめでとうごさいます
ありがとうございます。お互いがんばりましょう。
もしよろしかったら#osdev-jなどに顔を出されてください。
情報交換など出来たらうれしいです。
む。FDCDriverがページングONの場合もきちんと動くようになりました。 ただし、Vmwareで NOT IMPLEMENTED F(554):1516 bugNr=25311とでてしまい。 お亡くなりになってしまいます。 うーむ。何が悪いんだろう。
VMwareってFDC未実装?
>>635 いや、ちゃんと見える。
でもそんなに凝ったエミュレートはしてないと思う。
>>634 実行しているコマンドをチェックしてみた方がいいかと。
>>636 さん
FDCのエラーになる部分を探してみました。
FDC READのコマンド送信で落ちているようです
0xe6と0x46の両方を確かめてみましたが
だめでした。
#define FDC_COMMAND_READ 0xe6 // 0x46
byte command[] =
{FDC_COMMAND_READ
, (head & 1) << 2
, track
, head
, sector
, 0x02
, 0x12
, 0x1b
, 0x00
};
>>637 実機やBochsではちゃんと動作するのですか?
Bochsでエラーが出る場合、エラーの内容を書いていただければ、
わかりやすいです。
>>638 さn
bochsでは別の部分でFDCからの割り込みが来ない部分があり。
現在は動作いたしません。(場所は忘れてしまいました。)
VirtualPCと我が家の実機ではFDC READは問題なく動作しています。
VMwareのみでの現象です。
>>639 こちらの場合、その部分は、EOTAのソースを参考にしました。
割り込みがないのは、知っていましたが、
問題なく動作しました。
FDC Readの手順やFDCのリセットに、問題あるのかと思います。
恐らくFDCがコマンド実行に移る前に、次のコマンドを送ってしまっていることで、
FDCが、2つのコマンドを1つとして認識してしまう為だと思います。
コマンド終了を確認してから、次のコマンドに移れば、解決すると思います。
>>640 さん
こんばんは。あどばいすありがとうございます。
Bochsの件はrecalibrate時に割り込みが来ないことが分かったので
Bochs用のイメージを作成する際は、割り込みを待たないように修正しました。
FDCコマンドの方はEOTAのソースを参考にしましたが
やはりread発行時にVMwareの場合のみ前述のエラーになってしまいます。
もし640さん作成のOSのFDCDriverがVMwareで動いているのであれば
使用しているreadコマンドパラメータを教えていただけないでしょうか?
>>641 VMwareはもっていないのですが、エラーの内容からだいたい想像できます。
EOTAのready_wait()辺りをよく見ていただければ、わかるように、
FDCがbusyではないのを確認してから、コマンドの送信を開始すれば、
解決できるのではないかと推測しています。
readのコマンドパラメータは、Monaと同じでした。
こちらのOSのFDドライバは、割り込みがなくてもタイムアウトで、
強行する設計です。
どうしてmonaと某osのfloppyドライバっていつも同じところで同じ問題が発生するんだろう・・・('-`)
それはね…兄弟だからだ!!
某OSって何?
646 :
デフォルトの名無しさん :03/09/14 13:54
親が同じ兄弟なのか、それとも穴兄弟なのか・・・
親戚だろ
あと2,3日でひげぽんさん戻って来ますね。 私が作っているOSが、浮動小数点に対応しました。 FPUのステートをセーブ・リストアしてアプリでも、 浮動小数点が使えるようになりました。 ひげぽんさん FDドライバの問題、早く解決できればいいですね。 VMwareを持っていないけど、力になれれば幸いです。
>VMwareを持っていないけど ひげは割を恵んでもらっただけ
>649 お前消えていいよ
nyで拾った尻集を使うための自作自演だろ オフで潔白を証明するとかが立消になったのも怪しい
つーか、割でもなんでもええやん。
この、貝割れ野朗がっ(*^-^*)
割れ目の中の貝!?うひゃー
>>642 さん
>readのコマンドパラメータは、Monaと同じでした。
ご確認ありがとうございます。
コマンドパラメータ自体は間違っていないことが確認できて
助かりました。
> こちらのOSのFDドライバは、割り込みがなくてもタイムアウトで、
> 強行する設計です。
Monaの方でも上記のような方法が取れるように
現在初期プロセスの起動形態を変更して
time out APIを用意しようと考えています。
>>648 > あと2,3日でひげぽんさん戻って来ますね。
> 私が作っているOSが、浮動小数点に対応しました。
すばらしいですねぇ。うらやましい限りです。
どんどん差が開いていきますねーー(笑)
> FDドライバの問題、早く解決できればいいですね。
> VMwareを持っていないけど、力になれれば幸いです。
ありがとうございます。
FDドライバに関してはOSASKのKさんから
アドバイスを頂いておりまして
いろいろと現在のドライバは問題がありそうなので
精進してみます。
ひげぽん生きてるのかなぁ。
このまえ王大人がひげぽんの死亡確認してましたよ
>>657 おまえLの大学時代の友人が葬儀で滋賀に帰ったとかって書いてた厨だろ?
リリースの告知です
Mona ver0.1.1をリリースしました。
ダウンロードはこちらからお願いします。
https://sourceforge.jp/projects/mona/files Mona ver0.1.1の特長
・プロセスのスリープ機能の実装
・ユーザーモードプロセスのサポート
・ユーザーモード用のシステムコールインターフェースの作成
・タイマ割り込みの改善
・システムコール処理中に割り込みを受付可能にし、プロセススケジューラ起動が可能になった。(syscall_heavyで実験)
・システムコール処理結果が戻り値で取得可能になった。
・exit_kernel_lock_mode();enter_kernel_lock_mode();の追加
・ページフォルト発生時に空いている物理ページを割り当てられる機能の追加
・実行可能形式のELFを読み込み実行できるようになった。
・FDCDriverの改善
Bochsでの動作の正常化
Vmwareでの動作の正常化
余計なwait()処理の削除
・Guripon氏により
スクロール機能の高速化
put_pixcel()関数の提供
・前述put_pixcel()をもちいてARGB形式の画像を表示できるようになりました。(16色)
なお今リリースでは FDCDriverに関してOSASKのKさんから貴重なアドバイスをたくさん頂きました。 画像(ARGB)に関して、Gakuさん、nikqさん、Arisさんからツールや貴重なアドバイスを頂きました。 この場を借りてお礼を申し上げます。 またアドバイスを下さった名無しの方々にも深く感謝いたします。 現在mona.sourceforge.jpはメンテナンス中のためアクセスできませんが 動作報告版を復旧次第用意いたします。 ぜひとも動作報告をお願いいたします。
>>659 verのあとにはピリオドを付けないとみっともない
195でも同じことを言ったんだが...
粘着とか言われそうだから断っとくけど
この件は一度了解を得たことだからね
PMって名乗ってんだったら
他人からの指摘とそれに対する回答くらいは
エクセルで表でも作って自分で管理しとけYO!
オラクルマスターに向かってエクセルはないだろ(w
じゃあWiki程度のもので満足してないで Oracleをバックボーンに使ったエキスパートシステムでも お得意のJavaで作りゃあいいじゃんかよ
>>664 NDAって知ってる?
業務環境を私的な目的で使うことは認められない
まともな職についたことがない厨には分からんだろうがな(ゲラ
ひげぽんは会社のパソコンでMonaをいじったりしてるみたいですが?
外資系だったら解雇された上に違約金まで取られるぞ
外資系に限らないわけだが、、、
>>665 守秘義務と業務中の内職にどのような関係があるのか、
説明して下さい。
すまんね、不勉強で。
そもそも、 >オラクルマスターに向かってエクセルはないだろ(w がおかしいだけっしょ。 「オラクルマスターだってエクセルぐらい使っても良いじゃない。」 ってレスで終了でいいと思う。 俺もシルバーだけ持ってるけど、ちょっとした情報の管理だったら エクセルやアクセスとかWikiで済ませたい。 つか、使わせてください。おながいします。 話が大きくなる展開自体ちょっと変だよ。
671 :
デフォルトの名無しさん :03/09/24 14:09
# hard ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17 この全体の意味と、「=」で設定された各パラメータごとの意味がわからないのですけど教えてください
て言うか、
>>665 が最近 NDA と言う言葉を覚えたから、使ってみたかっただけだろ。
673 :
デフォルトの名無しさん :03/09/26 12:17
>>671 つまりケンシロウ進数において「あた(ata)」が0なのだよ。
671にきっちり説明した文章書いたんだけど、書き込み失敗して消えた・・・。 酒飲んでいるときにやるもんじゃないな・・・。 つーことで適当に ># hard >ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 気にするな。気にしても無駄。どうせ書き変えないんだから。 >ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, >spt=17 path=がHDDのデータファイル。 それ以降の3つのパラメーターと512をかけた容量がHDDの容量。 それぞれのパラメーターにはそれぞれの最大値があるので注意。 それ以外は気にするだけ無駄。 OK?
677 :
デフォルトの名無しさん :03/09/28 13:09
>>669 会社のパソコンで開発したものは会社の資産とみなされるから。
Monaが配布中止になりかねん。
>>676 OpenJaneDoe を使っているんだけど、それでも書き込みログって見れるの?
その点は良くわからないのでおしえてー。
>>677 いや、「会社のパソコンで」ではなくて、「会社で働いている時間で」だよな。
680さんが社長だとして、ひげぽんはどう処分する気? 俺なら当然解雇して違約金を取るが。
服務規定に違反してるかどうかだろ。
漏れなら「頑張れよ」とか言う位の懐の深い会社でありたい。
仕事をきちんとこなしてればの話しだが。
>>681 不当解雇で逆に損害賠償取られるかもよw
>>679 設定の[基本]->[書き込み]に書き込みログ保存の設定があります。
本当の懐が深いってのは特別待遇で好き勝手させることを言う。 Mona開発のための機材や人材まで面倒見たりとか、 性欲の捌け口として秘書や接待費を用意してくれたりとか。 北朝鮮の上層部を見てみな。
俺をそういう風に扱ってくれればゲイツなんかすぐに追い越せるって思ってるくせに!
ま、プログラマーなら誰でも夢見ることではあるな
プログラマっつーより秋葉原でたむろってるキショヲタの妄想だな。
ん?誰に対するレスだ?お前らさんは。 あぁ683か 俺をそういう風に扱ってくれたら、俺はビルゲイツの校門を舐めるぞ
そういえばこのごろへいぽんなかなか来なくなったな。 仕事が忙しいのか、来にくくなったのか知らんが、もうちょっと来てみてもええんとちゃうん? まぁ時間があれば来るだろうがな。
20代の美人女社長の会社で居候させてもらえるなら社長の校門を舐めてもいいかなあ(w
ここいらでこのスレにいる人で株主になって、 Mona専門の株式会社を設立してひげぽんの生活の面倒を見る頃じゃないかな。 じゃないとDとかKとかLの二の舞になっちまうぜ!!
>>692 そんなことしたらガセーたんの二の舞になるぞ
>>692 K合とLタンは知ってるが、Dって誰よ?
>>692 世の中、金の切れ目が縁の切れ目って痛感するよ。
金以外の応援は役に立たないね。
でも株式会社となると1000マンでしょ。
出資者が100人集まっても1人10マンも負担しないといけない。
利益が見込まれない投資に10マンなんか出す奴いないだろ。
そもそも自分がこんなに苦しい思いをして生計を立ててるのに
何で他人を楽させないといけないのかってね。
こういうのが金が絡むマイナス面。。。
>>694 会社作るって息巻いてた元祖和製OSのDaisukeのことじゃないか?
>>695 今は会社を設立するだけだったら1円(実際には数万円必要だけど)で済むけどね。
まあ、会社を興すのだけだったら勢いさえあれば誰でもできる。問題は続けていくこと
でしょ。
数人レベルの会社でも年間数千万程度は簡単にdでくしな、生計を立てるのは本当に
大変だよ。
>>695 そうでもないよ
漏貧なんてのがあったじゃん(ゲラ
利益もクソも、MonaOSという成果品の先物買だろ?
漏貧と違ってハード代とか加工の発注とかニョガン(wとかないんだから
SOHOにして開発に専念すれば資本金だけで3年は持つだろ
金銭面で現実的なのは未踏じゃないかな。 OSASKとかWideStudioとかここいらの住人でも知ってるのが通ってるわけだし。
>>698 未踏はプロマネになるどっかの大学教授とつながりがないと選ばれるのはキツいよ?
それに、未踏は手続きで忙殺される上に金払いが遅いし、食うのがやっと、という金額なので、
あんまりおいしくないという話が未踏スレにあったが。
700げっとずざー
>>697 ひげぽんをと○ぞ○の二の舞にしないでくれ(w
>>699 ぶっちゃけ、Monaって大学教授にアピールするんだろうか?
漏れがMonaに感じるのは魅力って言うより箱庭的な面白さかな。 クロスコンパイラとか用意しないで、普通にCygwinで作ったバイナリが、 VPCとかBochsの中で動くみたいな。 GUIの中だとコマンドプロンプト自体が箱庭的なものだから 仮想マシンだからって違和感があんまりない気もするね。 (まだGUIじゃないってこともあるかもしれないが)
>>702 君の言う箱庭的な面白さってのは一般的じゃない
ここのほとんどの住人はMonaをコンパイルなんかしたことないどころか
ソースをCVSで取ってきたりしたこともないってのが現状
かと言ってバイナリすら動かしてみたことがある香具師も少ないだろう
初心者のひげぽんが誠実な人柄を武器に頑張ってる姿を見て
マターリするためのスレだって思われてるってのが関の山
Monaは盆栽みたいなものってか。。。 休みの日に趣味でちょこちょこいじる程度でちょうどいいんでネーノ? それ見てマターリしてる香具師がいるってんなら別にそいつらの勝手なんだし
>>702 今のMonaだとカーネル自体が一個のexe的な感覚ってことかな?
俺は一時期、来るべきGNU時代に備えるため、
HURDを常用しようとしたことがある。
当然メインOSにするのは無理だったわけだが、
Win2K上のVMWareでHURDを動かして、
Cygwinの代用として使うということを思いついた。
確かにコマンドプロンプトとCUIだけのVMは同じ感覚で扱えた。
……それから2年、未だにHURDの新版はリリースされず、
HURDがLinuxを駆逐していくということも起こっていない。
未来を見据えた選択という独り善がりの代償は……別にどうってことなかったか(w
>>703 ちょっと前、megの人がアンケートを取って、
その結果に失望してmegを畳んだってことがあったな。
ネタOSとしてしか見られていなくて、
アプリを書きたいって人が誰もいなかったってやつ。
それと同じことはMonaにも当てはまるってことは肝に銘じた方が良い>ひげぽん
キーボードがどうとかマウスがどうとかあんまり低レベルな動作確認だと
いちいち報告するのはかなり馬鹿らしいものだよ。
NWSOSなんかはその辺をあまりうるさく言うものだから
何だか気軽に試せない雰囲気になって行ったって前例もある。
(L氏の気に入らないものは排除されるって現実の方が影響大きかったが)
しかもそういうのは直すのも雲を掴むようなもの。
デバイスとかは適当に既存のOSからパクった方が
第三者がいじっても楽しい部分に集中できるってメリットがある。
そういう意味でOSKitなんかは良い題材になる。
(別にOSKitベースでOSを開発してなくても)
芸人と同じだよ。ネタならネタとして楽しませるように。
それが張子の虎じゃなければ尚良いって感じ?みたいな(w
>>706 お前見たいな奴がいるから、ひげぽんが来ないんだよ。
氏ねウンコ
このスレはひげぽんの壮大なオナニーなんだよ
いや、ひげぽんと協力者のって感じかな。
もしMonaがひとまず完成すれば、直接の関係者のオナニーが終了する。
そしてスレに技術的なレスやらをした人にとってもオナニーなんだよ。
そんなもんだ。人生オナニーマンセー
>お前見たいな奴がいるから、ひげぽんが来ないんだよ。 オマエモナー
>>706 Windowsの資産を丸ごと横取りできるROS最強ということで
>>709 ドライバはサードパーティーから提供されたものだけじゃなくて
OSにビルトインされているものの方が多いわけだから
文字通り丸ごと流用すると動作にWindowsが必要になってしまうので意味なし
独立して配布するにはやっぱ最低限の部分は自前になっちゃうんだね
>>699 これこれ、別に知り合いじゃなくても通るぞ。
それなりの実績がいるけど。
手続きめんどいし、最初の金が入ってくるまで時間がかかるのは事実だが、
(ちなみに今年の分もまだもらってない)
勤めてた時より額多いよ。
>>701 この道に詳しい人が共同開発者になって、実用を目指すのであれば、通るかもね。
漏れもOSネタで通ったし。
712 :
ひげぽん ◆Ngzcp/NZpA :03/10/03 20:56
カコイイ!
めちゃくちゃカコイイよ!!
strage って storage じゃないのか? カコよくてもこれじゃあ・・・
>>715 そのページ読んだ。
あまり理解してないけど、ポインタ問題ていうのはリロケーションのこと?
なら、
1. カーネルは、あらかじめ、16MBで動くようにコンパイル・リンクする
2. それをデータにする
3. 16MBの位置にそれをロードするプログラムを作り、一緒にリンクする
ってすればいいんじゃない?(要はローダ方式)
つーかさ、ELFサポートが始まったんだろ? だったらさっさとリロケート実装しちまえよ! 老婆心ながらgccには-fPICを付け忘れるなよw
>アドレスは仮想アドレス=物理アドレスとしておきたい ターゲットのメモリ容量とか、カーネル位置をオプションとかMakefile内の パラメータで指定するカーネルビルド方法にするとかじゃ乱暴?
>>715 ・カーネルをLMA=VMAにする理由。
・DMA空間を予約している理由。
がよくわからないんですが。
DMA空間を予約している事が話をややこしくしている原因な気がする。
よくわかんないけどがんばってください。
.oOo.さんって俺と同い年だったのか。。。(´_ω`)ショボーン なんで日本のOSコミュニティって高レベル厨/工が多いんだろう?(除自分
/〜〜〜〜〜, / ひげぽん / == /〜〜〜〜〜' ヘ´ ⌒ヘ === (・ω・ ) 0┳0 )3 === ◎┻し'━◎ キコキコ ッ!
>>723 なんでこのスレって基地外厨/工が多いんだろう?(含むお前
>>725 またお前か。まったく。いい年こいて電波飛ばしてんじゃねーよ。
知人として恥ずかしいよ!
お前のリア工時代は構造化もなーんも知らなくて、
BASICで作った簡易BASICコンパイラが関の山だっただろ?
しかもガベコレで1行パースごとにストールするやつ(激藁嘲笑
で結局なーんも作れなかったんだよな。
ひがんでんじゃねーよタコ!
単に暇な厨房がいろいろやっているだけだろう 俺だって弄りたくても時間がないからむりぽ。
俺=低レベル=(´_ω`)ショボーン Sokrate0.0.1がきてまつね。
>>726 中途半端に自分の技術が実用的だとLと同じ道を歩んでたかもしれない
そう思えばこそM$に絡み取られて正解だったと今でも思ってる
>知人として恥ずかしいよ!
何が今、価値があるのか理解できないような香具師とは
とうに絶縁済みなんだが、、、
知人呼ばわりされるいわれはない
>>729 とか言いながらOSASKスレで熱い説教かましてるのお前だろ?
ふ、素直じゃないな・・・
でもまだ熱い心を失ってなかったんだな。
まあせいぜい自分の信じる道を歩くことだ。
若いのに皆さんできる人たちでびっくりです。 私もがんばらねば。 最近はlinuxでもMonaがbuild出来るよういろいろと やっていました。 cygwinか。linuxか。gcc2.9x or gcc3.x系かで切り分けるような configureまがいの物も作りかけです。 早くプロセス空間分離をせねばと思う今日この頃です。
やっとpert2から読み終わった〜。(9割は理解不能ですけど) ひげぽんすごいですね。プログラムなんて俺はまるでわかりませんけど。 あぁ〜、俺にスキルさえあれば、今すぐでも協力したいんだけどなぁ〜。 くやしいよ〜。かげながらでしか応援できませんがガンバってください。
>>716 ご報告が遅くなりましたが画像を差し替えました。
>>717 ご指摘の通りなのですがカーネルのロード時に
メモリが16MB以上あるかどうかということが問題になります。
>>720 >・カーネルをLMA=VMAにする理由。
ここは好みかもしれないです。
>・DMA空間を予約している理由。
DMA空間を必要とするプロセスもあると考えてのことです。
>>721 ありがとうございます。
>>723 そうですねぇ。若い人の力をひしひしと感じます。
>>724 かわいいですね。3輪車のスピードを超えられるようがんばります(笑)
>>732 ありがとうございます。
>>733 いまどきISA-DMAを必要とするデバイスがどれだけあるのか疑問ですが…
とりあえず思い付くのはFDDかなぁ。
LMA=VMAにするなら、0x100000〜にカーネルを置いて
余ってる所は全部MMの管理にするのが一番簡単になるような気がする。
んで、メモリ割り当てるときにどこでもいい場合は上の方から割り当てていく。
16MB以下が必要な場合は当然下の方から割り当て。
>>735 さん
>いまどきISA-DMAを必要とするデバイスがどれだけあるのか疑問ですが…
>とりあえず思い付くのはFDDかなぁ
そうですね。実際現在はFDCDriverしかDMAを使用していません。
今日はプロセス空間分離の続きです。
各プロセスのスタックをためしに3GBに設定してみてはまりました。
なぜか、起動するとすぐに落ちてしまうのです。
今検証中ですが、特権レベル0のプロセスのスタックが物理ページ不在だと
⇒ページフォルト⇒でもスタックないよ。で死亡だと推測しています。
なかなか面白いです。
bochs GDBスタブ実験中。 gdbの-symbolオプションで読み込めるシンボルファイルは どのように生成するのだろう。 ld -Mapかと思って読み込ませてみましたが形式が違うと怒られて しまいました。
>>737 stripしてない実行ファイルだったと思う。
そんなん使わなくてもバイナリにくっついていれば読んでくれるよ。
>>738 さん
ありがとうございます。
Monaの起動イメージに-gオプションでデバッグ情報を埋め込むということですよね。
試していないのですが。起動するのでしょうか?
現在Linux環境構築中です。
>>739 デバッグ情報がついてくるのでものすごく大きくなりますが
それ以外の部分は同じなので、起動出来なくなるということは無いでしょう。
ただMonaの手順だと、まちがいなくFDにバイナリが入らなくなるので、
stripする前のバイナリをデバッグ用に残しておけばいいのではないかと。
PlamoLinux3.2でbochsを使って Monaを動かそうと思い Monaのsourceをコンパイルしようとしたのですが 以下のようなメッセージを吐いてエラーになってしまいました。 nasm firstboot.asm -o ../bin/firstboot.bin -l ../list/first.list nasm secondboot.asm -o ../bin/secondboot.bin -l ../list/second.list /usr/bin/g++ -nostdlib -fno-exceptions -fno-rtti -ffreestanding -Wall -Iinclude -Istlport -c cstart.cpp /usr/bin/g++ -nostdlib -fno-exceptions -fno-rtti -ffreestanding -Wall -Iinclude -Istlport -c kernel.cpp In file included from kernel.cpp:38: include/FAT12.h:48: warning: malformed `#pragma pack' include/FAT12.h:48: warning: ignoring pragma: include/FAT12.h:56: warning: malformed `#pragma pack' include/FAT12.h:56: warning: ignoring pragma: /usr/bin/g++ -nostdlib -fno-exceptions -fno-rtti -ffreestanding -Wall -Iinclude -Istlport -c ihandlers.cpp /usr/bin/g++ -nostdlib -fno-exceptions -fno-rtti -ffreestanding -Wall -Iinclude -Istlport -c IA32MemoryManager.cpp /usr/bin/g++ -nostdlib -fno-exceptions -fno-rtti -ffreestanding -Wall -Iinclude -Istlport -c operator.cpp operator.cpp: In function `void __builtin_delete(void *)': operator.cpp:59: redefinition of `void __builtin_delete(void *)' operator.cpp:25: `void operator delete(void *)' previously defined here operator.cpp: In function `void __builtin_vec_delete(void *)': operator.cpp:77: redefinition of `void __builtin_vec_delete(void *)' operator.cpp:38: `void operator delete [](void *)' previously defined here make: *** [operator.o] エラー 1 Linux上でMonaをコンパイルして動かすにはどのようにしたらよろしいのでしょうか? 御存じの方がいらっしゃいましたら教えてください。 ちなみにgccのバージョンは次のとおりです。 gcc version 2.95.3 20010315 (release)
742 :
デフォルトの名無しさん :03/10/12 14:19
744 :
Depth Charge ◆H0nWABbqDA :03/10/12 15:08
>744さん ありがとうございます。 現在Vmware版をダウンロード中です。 ネットワークにすんなりつながるとうれしいです。
>>742 Monaって登録してる開発者がゾンビばっかだよねー
>>747 違うよん。
Depth Chargeって単なる英語の言い回しだよん。
辞書見てみると勉強になるよん。
744って中田だろ?
750 :
デフォルトの名無しさん :03/10/12 15:30
depth charge 1. depth charge (bomb) 機雷 2. 【俗語】 → coming inside
>>750 あのう、話がさっぱり見えませんが。
何か問題があるようでしたら、はっきりとお申しください。
わたもちって変に気取って自分のOSを作って結局放置プレイしてる悲しい厨だな。 Monaに合流してたらその成果は生きてたと思うと勿体無いね。
>>757 合流するほどの魅力がなかったってことだろ。
Monaが魅力を失ってるように感じるのは事実。
こんな状態だと厨房OSが雨後の竹の子みたいに乱立するぞ。
そう、太霊道亡き後の霊術のように・・・・・・
>>758 既に乱立してますがな
何せ新興宗教の教祖様気分が味わえるからねー♥
>>760 最近の動向を見てMonaがパンドラの箱を開けてしまったような気はしていた。
確かにMonaにもOSASKやNWSOSやMEGOSという先達が存在したが、
それらの作者のスキルは明らかに一般人とは格が違った。
そこにひげぽんという一見冴えない香具師が出てきたことで流れが変わった、みたいな。
>>741 うちでもそうなったけど、GCCのバージョンを3.0.4にあげたら
そのエラーは無くなりました。debian woodyです。
他のエラーがでているのですが、それは以下の通り。
/usr/bin/g++ -nostdlib -fno-exceptions -fno-rtti -ffreestanding -Wall -Iinclude -Istlport -c SystemInfo.cpp
make: *** `Semaphore.o' に必要なターゲット `include/semaphore.h' を make するルールがありません. 中止。
大文字小文字の問題かもしれないけど、面倒だから調べてないですm(__)m
>>761 確かに。OSASK/MWSOSとは同格では全然ない。
子供には違いがわからないようなので、現状では悪影響を与えているかも。
>>763 でもさぁ、冒険できるのって若いうちだけだからね。
例えそれで出来たのがカスでも経験にはなるでしょ。
それでいいんじゃないかな、って気はしないでもない。
ひげぽんみたいに仕事の合間にやるのは相当な根気が必要。
だからひげぽんの根気は決して過小評価してないんだけど、
それが分からない人には簡単に見えちゃってるんだろうね。
>>764 そのエネルギーを既に動いてるFreeなOSにコミットして欲しいと思うのは漏れだけかな?
若いうちに色々勉強するのはいい事だけどねえ。
なんか限りあるリソースが分散して無駄に消費されてるようにしか見えない。
>>765 たとえば犬糞にパワーを向けたとする。
カーネルとかデバドラとかは子供が手を出せるとこじゃない。
それ以前に良し悪しの判断すら無理だろう。
子供でも分かるのは、ゲームが少ないとか、GUIの反応が悪いとか、
日本語がちゃんと扱えないとかそんなことじゃないかな。
でも自己満足厨房ゲームを作ってもまったく犬糞の発展に寄与しないし、
(有名なXビルだって別に犬糞の発展に寄与したとは思えない)
GUIや日本語を気にしだすときりがない。
KDEユーザ会を見てれば分かると思うが、
せっかく苦労して日本語周りのパッチを作っても
本家でバージョンアップするたびにリセットされてしまって
永久にいたちごっこが続いてしまう。
だからGUIや日本語に手を出すと永久にパッチから抜け出せない。
こんなのは後ろ向きでまったくクリエイティブではない。
せいぜい厨房でもできるかもしれないのは、
自分が気に入ったマイナーアプリのrpm作成くらいか。
そんなのやってたって犬糞を使うための技術でしかなく
何も応用が利かないしプログラムの実力とも関係ないから、
若い人のやるべきこととは思えないなあ。
しょせん、子供の判断力じゃたかが知れてるよ。
大人の価値観に汚染されていない純粋な視点とかって奇麗事が
通用するような甘っちょろい世界じゃないんだから。(泣
767 :
デフォルトの名無しさん :03/10/12 23:47
ひげぽんさんが参考になる情報提供ならいいけど、ああしないと使い ものにならないとか、こうじゃないと魅力的じゃないとかは、ひげぽん さんが判断する事。 ウィスキーボトルの中で帆船組み立てているようなものなんだからさ、 好きな帆船を作らせてあげようよ。と、漏れは思う。
>>767 Monaの意義を論じてる香具師なんかいないと思うが。
ここ見てる香具師はみんなMonaがひげぽんのオナニーだって知ってるわけだし。
>>766 そう言われると、犬糞で新規にリソースを注入できることって案外少ないね。
Windowsでしか出来ないことをフリーのクローンで再実装って案件なら山ほどあるけど、
そんな後ろ向きなことを若い人に勧める気にはならないなあ。
若い人には何かこう、新しいものを目指してもらいたい。未踏ソフトじゃないけど。w
とは言っても、既存のものの勉強をおろそかにして新規性を求めようとすると
KとかLとかみたいな体たらくに陥る危険性も大きい。
うまくアドバイスしてくれる人がいたら全然違うんだろうけど、
そんな経験豊富なプログラマーがどこにでもいるわけじゃないし。。。
Linux環境(RedHat9 gcc3.2.2)の構築が完了しました。 ネットワークがつながらなかったのはファイアウォールとVPCの せいかと思っています。 bochs GDB stubでビルドしてMonaをデバッグしてみたりしました。 シンボルファイルは無事読み込むことが出来ました。 ありがとうございました。 使ってみた感想は、まだ実用として使うのは厳しいかなと いう感じです あとLinuxのビルドの件ですが __dso_handleのリンク時の未解決 とzlibのリンクです。 dso_handleの用途がわからないのでダミーで入れて良いか迷い中です。
>>769 犬糞ですらそうなのだから、厨房OSに至っては(ry
772 :
デフォルトの名無しさん :03/10/13 00:29
【和製厨房OS】 OSの明るい未来を夢見て産みだされたOSのはずが 使ってるだけで日陰者みたいな気持ちになるようなOS
このスレのやつらウザスギ。 'd'で削除してったら、50ぐらいしか書き込み残らないぞ。
手を動かす気はさらさらないが口出しだけはしたいってやつは多いからな。 オレモナー
>>766 > たとえば犬糞にパワーを向けたとする。
> カーネルとかデバドラとかは子供が手を出せるとこじゃない。
> それ以前に良し悪しの判断すら無理だろう。
そういう意味では最近のOS乱立(若い香具師が多い)は悪くないんじゃ?
今や高度で複雑な犬糞カーネル・デバドラに立ち向かう前に
手作りカーネル手作りデバドラを経験するてのは
>>776 禿同。ここは技術的な話題ができればOK。
そして777get
778 :
デフォルトの名無しさん :03/10/13 12:18
確かにひげぽんのような、一見素人に見える方が、こんなに作れるから簡単なんだっていう誤解が生じる可能性もあるかもしれんが、 これがキッカケで、OSというものに興味を持ち、勉強することはいいことではないのか? 逆に言えば、できるだけたくさんの人に興味自体を持ってくれないと、いかんだろ。 もちろん知ったかが発生する可能性も多いが。 かなりの人が挫折するだろう。しかし、その中の一握りくらいかな、その壁を越えてくれる人が出てくるはずだ。 興味を持つ人がだれもいない状態で、良いOSが生まれるということはないだろう。絶対に。 Windowsを超えろというわけではなく、その足元にも及ばなかろうが、いいと思う。 まぁ趣味の一環としてな。それによって自分を切磋琢磨できるならばこれほどのことはない。 それはプログラミングとて同じこと。 まぁここで技術的な話をしている方々が集結すれば、NWSOSを簡単に超えられそうだがな 知らんけど
>まぁここで技術的な話をしている方々が集結すれば 全然そうなってないから荒れてるニダ 犬糞対応なんて、ちょっと心得のある人が取り組めば、すぐ出来るニダ
できる人ができるというのはトートロジーだねえ。
頼むから薀蓄垂れるだけの馬鹿は出てってくれ。 おれはひげぽんの実装にまつわるカキコを楽しみに 読んでんだよ。おまえらはお呼びじゃないんだよw
>>781 Monaはひげぽん一人のオナーニとして期待されてる反面、
みんなのセクースとしても期待されてるのだよ。
じゃなきゃPMなどと名乗って人集めないだろ?
だったら具体的設計・実装の技術的話題をやってくれよ。 それなら不満ないよ。できないならOS板に逝ってくれ。 仲間が沢山いるぞ。
>>783 Mona Wiki見ても目先のことかokuokuの妄想しか書かれてない
ひげぽんが何を望んでるのか不明な現状で具体的な技術論しろっつったってね
技術論語るようなネタが無いじゃん カーネルのロードで詰まってるレベルだし・・ つーか最近、OSで新しい技術ってなんかあったっけ
>>786 そう思うのは勝手だが、だからと言ってここで薀蓄垂れないで欲しい。
久々にまともなすれなんだから、放置してマッタリやらせてやれや。
Linux環境の構築が出来ましたので 某G氏のご協力を頂いて RedHat9 gcc3.2.2でもMonaがビルドできるようになりました。 Linuxでのビルドはリンク時のシンボル名(アンダースコアの扱い) が問題となっていました。 ダミーで以下のものたちを追加しました。 int __cxa_atexit() {return -1;} void* __dso_handle = (void*) &__dso_handle; void __pure_virtual() なお。gcc2.95は現在調査中です。
>>790 早速お試しいただきありがとうございます。
Mona PJ Wikiにビルド実績として追加させていただきました。
これでだいぶ肩の荷が下りました。あとはgcc2.95系ですね。
俺も逝けました。(RH9,gcc-3.2.2)
な、なにー、Kの子が真面目な作業やってる!? ってことは何もしないやつはKの子以下だね(プ
>>792 さん
ご報告ありがとうございます。
希望的観測ではgcc3.2はいけるのかなあと思っていたり。
MemoryManagerをWindows上でデバッグできたのに味をしめて
Page関連をうまいことそとだし出来たらと思案中。
スタック伸張など。できたらいいな。
795 :
デフォルトの名無しさん :03/10/13 19:17
最近買った4000yenもしないpentium100くらいので、nwsosが動いた。 今書きコしているパソコンにはフロッピーが付いていなかった。 まぁ茂名も動くだろう。
>そとだし 危険度高いぞ(w
結局ひげぽんの力不足を指摘しているのかな? LやKとは年季の差があることを忘れてないか。
>>798 いや、OS作って世間に発表するなら、ひげぽんプロジェクトの
真似はするなってこと。
プロセス空間分離作戦の続きをやっていました。 各プロセスのスタックをプロセス生成時に固定値で決められるようになりました。 つまりプロセス空間が分離しているのでesp=0x400300のように決めうちが出来るようになりました。 ページディレクトリの切り替えに前後では関数等をはさまない方が よいということを学びました。 上記を進めれば各プロセスのロード位置を3GBスタックを4GBなどのことも可能となると思います。
各プロセスの生成時にesp=0xFFFFFFFFのように固定にしました。 現在のMonaのプロセスは ・ページングON ・メインプロセス起動 ・メインプロセスが他のプロセスを順次起動 ・あるプロセスはシステムコールKILLで自殺します。 bochsで起動すると上記の流れが分かって面白いです。
ところでさ、インターフェイスの去年7月号(ブートなどなど)が売り切れやねん。 コピーサービスは1ページ100円、つまり8000円かかるねん。 どういうこっちゃ。 と思ったら学校に本があった。貸し出しはできない。 先生に言えば、借りれる可能性が30%ある。 さてどうする?
アイフルをはじめ、消費者金融ウンコは、 ご利用は計画的にとか言っておいて, CMの内容は衝動買いを誘っていると思います。
学校で読む
貸し出しできなかったじょー
まじあり得ん。誰もあんなマニアックなの見ないってのに。
しかもネットで古本探したが駄目駄目だ。
>>806 linuxのブートからファイルシステムまでっていうのと、bochsの使い方ある?
あるなら買おうかな?
要らない人いないかなぁ。
>>804 ご利用を計画的にされたら儲けれんわな
_,.'⌒) , ´f二コヽ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ! l !ノ リ i l <秋葉原の書泉で売ってるかも・・・ ノiハl.゚ ー゚ノリ \____________ ⊂)允つ
全滅マンセー こうなったらCDでも買うかと。 コピーサービス高いし
>>811 目的地がはっきりしてないと、そこまでの道筋も決められないわけで。
#自戒を込めて
お勉強が目的なら、今のままでもいいんでないの?
まあ、どうするかはプロジェクトマネージャとしてひげぽんが決めることだ。
おひさしぶりです。(^_^; まだ、今のところNWSOSを越す国産OSはないようなので安心しました。
あれ?ここの板ではトリップのシステムが違うんでしょうか?
>>813 俺、あなたは凄いと思っています。
ただし、あなたのOSを越す国産OSがないというのには少し疑問があります。
というのも、ネットに出ていないものもあるはずなんです。
全国民がネットやっている訳ではないのです。
別にあなたのOS批判ではなく、ただその言い方、または考え方はいけないと考えます。
例え趣味でもね。
あなたのOS実機で動かして、あらためてあなたの凄さを再認識しました。
これからも精進して頑張ってください。
日本政府のおかげでやる気を無くしてしまいました。
偽者?
胃の中の蛙、塩酸で溶ける
(笑)
>>813 お、Lタン復活したのか?
まあ当分は大丈夫でしょう。
>>815 小人数での開発に限定すれば、言い切っても問題無いと思う。
隠れてるのも多分無い。
やってみりゃわかると思うけど、フィードバック無しじゃ
OSを開発するモチベーションなんて維持できませんがな。
見下しに来ただけなら(・∀・)カエレ!!
814 :LightCone ◆F3zLSIm4Xw :03/10/17 20:15 あれ?ここの板ではトリップのシステムが違うんでしょうか?
スレ違いかも知れませんが バリュースターNXにBIOSの設定をWinアプリから変更できるソフトがあるんですが どういう動きをしてるんでしょうか?
>>823 BIOSの仕様がわかっているなら何も困難は無い
ドライバを作るなりしてCMOSの物理アドレスかI/Oポートに直接書きこめば良い
偽Lタンなんて流行らねえよう。 周波数が違い過ぎ。 と言うか、NWSOSって出た当初の評判からかやたら 「開発進んでる」とか「完成度高い」って言われ方になるけど、 実際は前のバージョンまで露骨にバグバグだったし 今でもそこそこの挙動不審はある。 しっかり付き合っていくテスターが殆どいなかったんだから、 それが当たり前の状態なんだよな。 絶対的な完成度はそんなにはいってないと思う。 まだまだ変わる余地のある遊べるOS。 作者さえ帰って来ればな。 OSASKは良いよなあ、素敵なテスターがゴロゴロしてて。 皆さんMONAの方も頑張って盛り上げてやりましょう。
とりあえず、ユーザプロセスの作成と実行ができないことには、盛り上がらないと思います。 もうそろそろっぽいので辛抱して待っています。 簡易シェルができればいろいろ遊べそう。
本物ですよ(^_^;
NoNameの人はどうなったんだろう?.oO(´_ゝ`)
FreeBSDの開発に忙しいとか??
今週はいろいろと忙しかったためコーディングがあまり出来ませんでした。 >> 811さん > はったりでも↓みたいに先の展望を見せてほしーよねー これほど明確な展望が見せられると良いとは思うのですが 難しいです。申し訳ありません。 理由は以下の通りです。 ・もともと開発ペースが遅い(すいません) ・勉強しながらなのでこれから取り組むものたちがどの程度 重いものなのかの予測がぶれる可能性がある。 プロセス空間の分離作業でデマンドページングを実装中です。 デマンドページングのコードがページフォルトハンドラに 集中するため、ちょっとだけオブジェクト指向に工夫中です。 この実験がうまくいけばプロセス空間の作成が少し楽に なりそうです。
>>831 > 理由は以下の通りです。
> ・もともと開発ペースが遅い(すいません)
> ・勉強しながらなのでこれから取り組むものたちがどの程度
> 重いものなのかの予測がぶれる可能性がある。
自分のことしか頭に無いんだね。
何のために人集めてるの???
そんな調子だから幽霊部員ばっかなんだよ。
>>834 カーネルが完成しないと外作りにくいからねぇ
>>835 みんなでカーネル開発しる!ってことでは。。。
現状では、正直、何から手を出していいかさっぱり。
何が求められているかすらさっぱり。
勝手にソース見て考えろっていうのは酷い。
っていうかそれだとマネジメントできてないし。。。
>>834 外の要求にあわせてカーネル作るってのもありかと。
要求出すのがこの方面に詳しい人じゃないと難しいか。
>>836 手伝いたかったら、higepon に聞いてみたらええやん。
何か出来そう、かつ役に立つなことない?って。
正直、832みたいな書き込みは、嫉妬してるようにしか思えない。 monaは仕様書とか設計書を作って無いから、複数人での開発は難しいと思う。
>>838 多分何をつくったらいいか見えていない状態だから、
そこに押しかけていっても、何も出来ないと思われ。
とりあえず、libcとかユーティリティーのコードを読んで
必要なシステムコールを整理する所からかなあ。
この辺きっちり作っておかないと、あとあと悲惨だし。
開発というのは適切な単語じゃなかった。コーディングのことです。 >836 ソースコードや、Wikiから情報とりだして、「mona基本仕様書」を作ってみたら? 面白く無い仕事だけど。
全く関係ない話なんですが、BIOSのシステムコール(でいいのかい?)とは別に、 OS自体が持つシステムコール(例えばMS-DOSとかのファンクションコールとかかな?)っていうのは、自分で作るんですよね? んでそれを大きくしてAPIとして使用者(開発者)へ還元するんですよね? 普通OSASKとかNWSOSとかって、システムコールを作っているのかね? 俺が言うシステムコールってのはソフトウェア割り込みのことなんだが、なんか勘違いしてそうだ。 たしかDOSの提供するシステムコールでは、FDDの操作とかができたはずなんだが。 まぁそういう意味でシステムコールって使ってしまいました。
>>842 詳細は忘れたけど「初めて読む486」を読めばその辺のことも書いてあった。
コールゲートを通して特権モード0の関数を呼び出す仕組みが。
マルチタスクOSは複数のプロセスがリソースを共有するから、
>DOSの提供するシステムコールでは、FDDの操作とかができたはず
こういう低レベルな機能は普通は提供しないと思う。
漏れみたいに概要だけあさーく知ってても、実際の製造には
まるで歯が立たないけどね。。。
メモリ保護とかマルチタスクとか無視した単なる32bit DOSみたいなものでも、 プロセスさえ動かせればシステム設計と関係なしに各自好き勝手に遊べる。 まずはその状態を目指したらいいんじゃないかって意見は何度も出てるけど、 取り巻きからは圧力をかけられたし、ひげぽんは黙殺したってのが現状。 そもそもその「取り巻き」もひげぽんのオナニーを鑑賞するのが目的で、 Monaを使ってどうとかには興味ないような連中なんだよな。 こんな連中の言いなりになっても誰も得しない。
>>844 あんたはそんなにMonaで遊びたいのか?w
>845 遊ぶ以外に何をしろと?
オナニー、オナニーって言ってるが、 なかなかやらせてくれない女みたいだと思った。 そのくせ取り巻きは欲しいと……。
>>847 ソースかっぱらってきて、勝手に自分でいじればいいんじゃん。
つかいもんにならないものだったら、それまでだし。
アプリケーションプログラマがそこそこ楽しめるようなNWSOSと、
MMUの扱いも上手く逝ってないMonaは比較対象にもならないって。
Win系のプログラマがOSに妄想を抱く性質があるのは
このスレやOS板見てて分ったけどさ。そんなに興味があるなら自分で
カーネルぐらいいじればいいのに。
コテハンに対して粘着するなら、マ板に来いよ。そういうのは板違いだ。
>>848 どっちかっつーとそーゆー話はどーでもよくて、
余剰人員を横目に進歩が遅いってボヤくのは傍若無人だってことでしょ。
最近、水掛け論ばっかりで技術的な話が無いね。。。
>>850 ひげの気分次第で決まることしかないからな
>>851 今問題になってるのはMonaに参加しても飼い殺しにされるっていうこと。
>>852 それも気分次第だね。
(1)プログラム技術、(2)プロジェクト管理、(3)人格のどれか欠けても頭打ちになる。
KとかLとかは(1)以外はからっきしだし、
どっちが生き残ってるかなんて程度問題に過ぎない。
>>852 今は能動的に動く人間じゃないと無理だろう。
間違った方向に動かれても困るけど。
>>853 川合さんを冒涜しないで欲しいんですけど。
いずれにしても、メンバー募集とか言いながら、 うまく立ち回れず歯車が回らないままなのは事実。 それで今回みたいにメンバーから不満が噴出した、と。 つまり内部から崩壊が始まっているわけだ。
>>855 そろそろお前マジで死んだほうがいいよ 川合さんも困ってたし。
>>857 そのうち死にますが。川合さんに御迷惑をかけたことはいまでも反省しております。
ただ
>>853 の冒涜(侮辱といったほうがみなさんにはわかりやすい?)行為が気に入らなかっただけです。
>>858 TRISPLANの真似か?嫌ってたんじゃなかったのか?
Kに破門されたわけだが、今度はサノバビッチか?(←犬の子)
>>853 K氏は(2)も(3)も高いよ。853は何を根拠に低いと思ったのだろう。。。
>>853 L氏は(2)も(3)も高いよ。853は何を根拠に低いと思ったのだろう。。。
>>861 一人の場合(2)はそれほど問題にならないね
>>862 ひげぽんもこのスレだけで細々とやってれば問題はなかっただろうね。
川合様と青木様の名誉を毀損する意図はございません。 大変失礼いたしました。
>>858 個人がどう思おうとそれはその人の意見であって、あんたがOSASKが好きなのと関係は無い。
お前だってならNWSOSの冒涜いいだけしてきているんじゃないの?
少なくとも俺は何回か見たような気がするが。
お前って自分勝手なことしか言えないもんな。自己中ですね。
>>865 リア工だし
SORAの作者とはえらい違いだ
>>866 川合の子が?
俺もなんだが、こんなのと一緒かよ。
>>867 有意義なプログラムを何も作っていないという点では一緒じゃねーの?(ゲラ
悔しかったら47氏を超えるプログラムでも作ってみることだな。
どう見ても勤め人出来そうに無いのは(3)の問題ではないかと>K,L 面識はないので、Webの文章だけで判断してるけど。 まあ漏れも一年ほど長期休暇しているので、他人をどうこう言えないが。
>>868 あんたも一緒ジャン。なぜそんなに偉そうに・・・
それとも匿名掲示板で俺は作れるって言いたいのだろうか
技術話のときはさっぱりなのに 煽り合いになるとレスが増えるスレなんですね。
>>870 開き直ったな。Kの子はやる気だけは見せたのにな。Kの子以下だ。最低。
>>872 VBはすでに完璧。
C勉強中というかポインタまで理解。最近共用体とかは面白いと思った。これも学校で勉強した。
JAVAは今、学校で無理やり勉強させられ中
アセンブリも勉強中(今は初めて読むMASMを図書館で借りて読んでいる。オーバーライトプリフィックスだったかが難しい)
OSのROMBIOSのブートストラップの意味がやっと理解できたから、アセンブリさえできるようになれば、
ひとまず文字の出力はできそうだ。
あとはじめて読む486は買ったがまだそこまで行っていない。
これでもやる気が無いのだろうか・・・
ってか何せにこんなこと書かせんだよ。
ってかこれくらい普通にやっているわけだが。
これじゃスレ汚しだな。悪かった。
スレが伸びたと思ったらしょーもない書き込みでがっかり。 そして、こんな書き込みしてる自分にがっかり。
>>873 工房でアセンブラやVBやJavaやC#なんて珍しくないんだよね。
SchemeとかManaged C++が使えるくらいじゃないと自慢にならないよ。
ま、そこまで言うなら、何か作って、密かに自分の能力に酔ったことくらいあるだろ?
適当なうpろーだにでも上げてみ。神を目指したければな。
877 :
デフォルトの名無しさん :03/10/22 23:27
キチガイコテハンに、糞レスつけてる馬鹿者 どっちもウザいの。 コテハンはアボーンできるからいいけど 規則性の無い糞レス集団はウザすぎ。
嫌ならこのスレ見なきゃいいのに
>>876 神様、すみませんでした。
僕は神様になりたくないです。人間のままでいいです。
Schemeなんて知りませんでした。ってか知っていた方がいいのかさえわかりません。
ひとまずはアセンブリとCを完璧にするだけで良いです。
神様、どうかひげポンさんを助けてあげてください。
ってかここで技術的な話は無理っぽいんだけど。 BBSあるんだから、そこを使えばいいじゃん もちろん2chでも報告はするとしてさ。 そっちの方が良いと思う。
>>879 Managed C++について触れられていないところを見ると
普通のC++とどう違うのかすら把握してなさそうだねー。
ま、いっか。Managed C++は工房には無理だ。
何せCとC++とJavaとC#の思想を全部理解した上で
実用をはみ出さないように注意して混ぜたものだから。
とりあえずこのスレの218,219を見てgcjとg++でJavaとC++を混ぜみて、
「おもしれー」とか感じられれば見込みはあるけど、
ひげぽんみたいなJava厨でさえ意味が通じなかったからなー。
>>879 マジレスするけど、犬糞で牛乳系のツールを極めるなら、
Schemeは避けて通れない代物だよ。
Emacs LISPもCommon LISPよりSchemeに近いしね。
それが嫌なら.NETでMSマンセーしてなさいね。
>>882 犬糞はlinuxってやっと分かったが、牛乳系って何?
あと.NETはコンポーネントみたいなのが20MもあってISDNには面倒だから取ってない。
無問題だ
>>881 そんなの知っていたら、マニア過ぎて苛められます。頑張ってもアセンブりです、頑張っても・・・。
ってか俺が振ってしまって悪いが、スレ違いだな。氏ねよ、俺
>>882 .NET Framework SDKを見て事がありますか?
サンプルにLISPコンパイラが付いています。
.NETでMSマンセーでもLISPは重要なんですよ?
それに今でも人工知能記述言語はLISPが主流です。
>>881 java と C++ のオブジェクトを混ぜて使える以上に何か旨みあるん?
もちろん混ぜる以上は、相互に自由にアクセス可能だとして。
Managed C++ってはじめてきいた。 .netフレームワークでのC++って事でいいのかな? Monaged C++はMonaフレームワーク上でのC++だな。 >879 データ構造とアルゴリズム関連の勉強するならSchemeとかLisp系の言語をやってみるのも良いかも。 アセンブラするなら、あわせてCPUの勉強もすることをおすすめする。
おまえら、何年か後に自分でも恥かしくて読めないような文章かくなよ
>884 人工知能とかは、論理型の言語じゃないの?Prologとか。
>>883 > 牛乳系って何?
GNU系
> あと.NETはコンポーネントみたいなのが20MもあってISDNには面倒だから取ってない。
JDKも20M以上あるわけですが。
> そんなの知っていたら、マニア過ぎて苛められます
俺だってMC++おもしれーとか言ったら基地外扱いされたよ。(w
でもObjective CamlでGUIアプリ作る奴の方が基地外だと思う。
>>885 __gcとか__nogcとか__valueとか、文法が普通のC++に従わない理由とか、
工房でちゃんと把握してたらすげーなーと思っただけです。
>>886 > .netフレームワークでのC++って事でいいのかな?
そんな感じっす。独自拡張しまくりで凄いことになってます。
(マクロとかじゃなくて、コンパイラそのものが独自拡張)
>>888 Prologで実用になってるプログラムを見たことないです。
Prologを拡張した第五世代言語とかいうものなら見たことありますが……。
http://www.icot.or.jp/ARCHIVE/HomePage-J.html
>でもObjective CamlでGUIアプリ作る奴の方が基地外だと思う。 マジレスすると、Rubyでアプリを作る奴の方が基地外だと思う。
>>889 あぁGNUのことなんだ。確かに牛乳だけどさ・・・
>俺だってMC++おもしれーとか言ったら基地外扱いされたよ。(w
>でもObjective CamlでGUIアプリ作る奴の方が基地外だと思う。
そりゃそうだわな。キチガイ以外の何者でもないってのな。
んでObjective Camlって名前自体俺は知らんがな。
しかもManaged C++って.NETの物ジャン。.netなんて窓から捨ててしまえって感じで。
だからんなものは知らないし。
>>890 趣味でプログラム作っている人全体がすでにキチガイだから(俺も含めて)、いいじゃん50歩100歩で。
>しかもManaged C++って.NETの物ジャン。.netなんて窓から捨ててしまえって感じで。 >だからんなものは知らないし。 寝言はECMA-335を読んでから言ったほうが良いですよ。 >趣味でプログラム作っている人全体がすでにキチガイだから(俺も含めて)、いいじゃん50歩100歩で。 いいこと言うなー。負けたよー。 今度どっかで会ったらソープでもおごるって約束しよう。 え?名前も知らない相手が分かるわけないって? 基地外には『電波』があるだろ。あははー。
>>892 ただしこの世にはキチガイがいないと、テレビもパソコンも何もできていないと言う罠。
だからキチガイを誇りに思え
ということです。
今では一般的なWindowsもキチガイがいなかったら、できていなく、パソコンもなー
んなもんだ、世界は。
そしてモテるのは、イケメンのみ
こんな不条理な世界じゃ〜〜ポイズン
>そしてモテるのは、イケメンのみ それは違う 金と権力のほうが力は大きい 金正日がイケメンか?(w
>>894 それもあるが、各国で価値観が全然違うんだよな。
日本で全くもてなくてもイタリアとか行ったら凄くもてるとか。
いやもっとマイナーな国の方がいいかな?
だから北朝鮮では金正日がイケメンかもしれん・・・(・∀・)
スタックの自動伸張プログラムを作成してみたのですが ユーザープロセスでしか実験できないので マッピングAPIを先に作成しようと考えています。 Mona PJのプロジェクト管理についていろいろと 大変貴重なご意見を皆様ありがとうございます。 現状まずい点がいろいろあるかと思いますので 以下の2点にまず取り組みます。 言葉は適切でないかもしれませんが 現状幽霊部員となっている方々のへのフォロー ・現段階での意思確認 ・Mona Wikiでの意見交換 また新規に参加されたいと考えられている人が いらっしゃれば、やはりMona PJ Wikiで ご意見をうかがいます。 思うようにMonaに時間が取れずコーディング優先で いろいろおろそかになり皆様にはご迷惑をおかけしております。
確かに適切ではないな。仕事が忙しいにしろ、結果自分でそのようにしているわけだからな。 >現状幽霊部員となっている方々のへのフォロー これは「現状、何もできなくさせてしまっている方々への配慮」のほうが適切だろうな。 語的にな。まぁ忙しいんだろうから、んなこと考える暇もなさそうだがな。 でもこれを最優先に頭から離さないべきで、これを怠ると一巻の終わりです。
っていうか取り巻きがいなくても進んでるんだからいいんじゃないの? それともMonaを劇的に進歩させることができる優秀な面々が揃っているのに 何もさせてもらえてないわけ?
>>892 Managed C++もECMA-335標準化だっけ?C#じゃないの?
つーか、.NETがどうとかCLIがどうとかなんてもうどうでもよくない?
900 :
デフォルトの名無しさん :03/10/23 07:30
>>896 WideStudioみたいに作者からユーザーまで全部厨房なのに
何年も和気あいあいと続いている例とかもあります。
もっとも作者の方はプロのプログラマーで一定の実力はありますが、
それはひげさんだって同じですね。(^_^)
もちろん一般の厨房参加者は本体の開発など出来るわけないですが、
そういう厨房でも遊べるようにうまく回しているという点は重要です。
面白いもので、組み込みのファームとかいじってる技術者は、
専門分野の技術力はあってもGUI経験がほとんどないようで、
仕事で使うアプリの作成に使ったりしてるんですよね。
(ちょっとGUIの知識がある人だと絶対採用しない)
役割分担とかそういうのじゃなくて、
各自が好き勝手に遊べる環境を用意しておけば、
好きな人は勝手に色々やってくれるものです。
>>897 御意。
>>898 上述のように、全員を本体の開発に巻き込むのは無謀です。
参加者をデジタル土方と考えると失敗します。
>>899 .NETのことを何も知らないのにステとか言ってたら単なるJava厨なので、
核になる知識に触れてみましょうということでしょう。
お客様(?)に遊んで頂くということを最優先にするのは、 開発を最優先することから見れば足を引っ張りますし、 現にそういう意見はそうやって批判されてきたわけですが、 遅かれ早かれそんな甘いことは言っていられなくなります。 ちょっとでも遊べる要素が出てくれば、 本体の開発から見たらどうでも良いようなくだらない(?)要求が それこそ山のように出てくるものですよ。 正直、処女作でいきなりモダンOS(メモリ保護・マルチタスク)は先走りだと思います。 32bit DOSのようなものが手頃だったと思います。 これは決して技術力を馬鹿にしているわけではなくて、 参加者を楽しませるという観点で飼い殺しはまずいからです。 とにかく金を払ってもいないのに他人をデジタル土方扱いしないように。 他人のことなんか構わずに一人で好きにしたいのであれば L氏が互換ライブラリを排除したようにはっきり表明するように。 その結果第三者の参加に水を差すことになっても、 コミュニティなんかなくても良いなら無問題でしょう。 今まで取り巻き(?)がそのようなことを言っているのは目にしましたが ひげさん本人の意見はまだなかったはずです。
今すでに十分 32bit DOS な感覚で遊べる気がするんだけど。 FAT からファイル読めるし、put_pixel で 16色だけドット打てるし。 これなら、ファイル読んで画面に絵描いてみたくなったりしない? て、まともなドキュメントが無いな。
903 :
デフォルトの名無しさん :03/10/23 09:55
おーい、川合の子〜、名誉挽回のチャンスだぞ〜 ←
>>902
DOSジジイはウザイよ
>>904 Monaで遊びたくてうずうずしてるくせに、いけず〜
>>902 簡単なのでいいからシェルと、最低限のライブラリくらいは欲しいな。
ドキュメントは、人柱が試行錯誤した結果をまとめればなんとかなるだろう。
漏れは手伝えないけど。
日本人のねたみそねみでプロジェクトが潰されていく、というのが リアルに見られるスレだな…
昔のPC板で同じスレを立てて誰かやればいいいのに>DOS好きな人 ページングなしのia32プロテクトモードのOSを作ろう!とかって。
>昔のPC板で同じスレを立てて誰かやればいいいのに>DOS好きな人 話の流れを完全に誤解していると思われ
>>909 >話の流れを完全に誤解していると思われ
下らない話の流れなんて知りたくもないけどね(^Д^)
>>910 Monaで遊びたくてうずうずしてるくせに、いけず〜
レベルの低い板ですねここ
工房が自分のスキルを自慢するスレはここですか?
>>907 L氏が頑なにクローズ路線を貫いた気持ちが分からなくもないね。
でもさ、内容はどうあれ、反響があるうちが華だよ、実際。
L氏が満を持してAPIオーバーライドを実装したときの反響のなさ。
あれじゃやる気なくすよ。
>>913 いいえ、工房が自分のキティ度を自慢するスレです。
>>907 これで潰れるなら、それだけの価値しか無かったということで。
>>914 表に出るタイミングの問題でせう。
うまく乗っかれば、勝手に回ってくれるし。
OSに妄想持つタイプ香具師の殆どは386のマニュアルすら読めないヘタレ
>>859 OSASKを馬鹿にすることは"冒涜"といえますが。
#さりげなくトリップを公開。(KL-01適用可能?)#80Wd1VMl
名無しテスト。
test
>>917 そんな昔のものが手に入るのか?
PDFでもあれば読んで見たいところだが。
まあOS作るならCPUのマニュアル読む前に、
悪魔本とかtanenbaumセンセの本をヨメと…
>>914 いや、よく覚えてねーけどオーバーライドAPIについて反響自体はあったような。
具体的なやり方を誰かが聞いた時にLタンが何故かスルーだったんで
話題が大きくならなかったけど。
そう言えば彼のやる気が無くなったのはあれの実装版公開直後だったな。
VB厨が暴れてたのか?
どこにVB厨が? ノイローゼですか?
>>918 >#さりげなくトリップを公開。
どこまでもTRISPLANの真似すんなって。
本当は絵里奈タソ萌え〜なんじゃねーのか?(ゲラ
>>922 >具体的なやり方を誰かが聞いた時にLタンが何故かスルーだったんで
>話題が大きくならなかったけど。
いや、そうじゃない。L氏は詳細な説明を一気にまくしたてた。
そうしたら誰も付いていけなくなってレスが止まってしまった。
(過去ログはdat落ち中で今調べられないが。。。)
>そう言えば彼のやる気が無くなったのはあれの実装版公開直後だったな。
質問されて詳しく説明したら手ごたえゼロだったら誰でも相当へこむと思うよ。
あの実装はまさに『満を持して』って感じだったからね。
それでなくてもただでさえ彼は精神状態が不安定なようだし。
>>925 真似じゃなくてさ、単に思考レベルが同じなんだよ(プ
>>924 873見てみ。
すでにMSに見捨てられた.NETじゃない方のVBが完璧とか言っときながら
.NETなんかどーでもいーとか言ってるVB厨がいるぞ。
VB厨は、どこででもVB紙芝居が動くと思っておる
Mona WikiでGPL厨が暴れてるな
> VBはすでに完璧。 > C勉強中というかポインタまで理解。最近共用体とかは面白いと思った。これも学校で勉強した pu
>>901 まぁ遊んでくれる人を大事にして、サービスしようよってのは、確かに。
けど、sourceforge.jp のメンバーに登録されている人の話でなかったっけ?
sourceforge に登録されたメンバーって、サービスする側でないの?
サービスする側に回らないようなヤツをメンバーに登録した時点で采配ミス。
とか、思うんだけど。
VBは完璧って書いたの俺だが、最近やっぱりVBは駄目だなぁって思ってな。 切り捨てることにした。まぁそのかわりC++の勉強が必要だな。 正直VBが完璧であることがさて何に役立つかと考えた場合に、少ないんだよな。 もちろん書類などのデータを扱うものであれば、ある程度遅くともいいことが多いが、 グラフィックが入ると駄目駄目だぁ。 残念だがな。完璧って書いたのは、ただ書きたかっただけです。まぁええや
ところで絵里奈ってだれ?どーせキモヲタネカマだろーが。
>>934 VBはマスターしたと豪語してる奴がVB.NETを使ってみてどう思ったか興味がある。
犬糞とかやるんじゃなかったらC++よりVB.NETの方が役に立つが、
オブジェクト指向を知らなければ、多分、手も足も出ないと思う。
>>935 MegOSとかいうのを作ってた基地外。
ベーマガ時代から横谷絵里奈を名乗ってたことが知られている。
キモヲタネカマかどうかは決定的証拠がない。
もし本当に女なら嫁にしてもいいって思ってる奴は結構いる筈。(Kの子とか)
>>934 君おもろいな。
okuokuとかKの子とか興亡には基地外しかいないかと悲しかったが
開き直るその態度が気に入ったのよ♥
何かトリップ付けてよ。
>開き直るその態度が気に入ったのよ♥ 工房は元ネタ知らないと思ワレメ
おい、川合の子 ボクに惚れてるんならはっきり言えよ 明日は安全日だから中に出してもいいよヽ(`ー´)ノ
>>932 >サービスする側に回らないようなヤツをメンバーに登録した時点で采配ミス。
>とか、思うんだけど。
それが良いか悪いかは棚に上げて、
そういう人でも敷居を感じさせないのはひげぽんの人徳だと思うよ。
KとかLとかでは逆立ちしても不可能な難行。
Dなんかもそういう傾向はあったが、何も作ってないから悪く言えば詐欺に近い。
>939 議論/ライセンスの一番下の部分だと思われる。
>>942 サンクスコ
実はこの人、織葉並みのすげー実力者なんじゃねーのか?
だとしたらライセンス改定で大きな獲物を逃したのかもしれねーべ?
>織葉並みのすげー実力者 誰それ?日本一のスパーハカーなのか?
>>943 /.の織葉か?
あのレベルなら探せばそこら中にいるだろ。
kernel hackできる技術者はそんな暇じゃないし。
しかし、どうでもいいような議論だけ盛り上がってるな。
漏貧を彷彿させるぞ。
>>937 それはもともと思っていたわけで、別にこのスレで思ったわけではないんだ。
VB.netは使えない環境だから、使っていないわけで。MEだから。
上で.net糞って書いたのは、俺の環境でできないからってことです。
ただそれだけのことです。
カネないし、XP買おうか迷い中だし。
インターフェースの2002の7月さえあれば、XPか2000に変えるぞ。
そういえば、このスレがこうなったの俺が川合の子に攻撃したせいだ。
本当にスマン、ひげポン以下、このスレの技術的な話のみを楽しみにしている人 or ひげポンの経過報告を楽しみにしている人
俺はトリップ付けるほどの人間でないのでつけません。
んでは俺はしばらく謹慎するわ、責任取って。
>漏貧を彷彿させるぞ。 モルの向こうを張って会社設立とか言うネタも出てたしな。 どーでもいーがハード工作が好きな人にはモルの部品処分は美味しかったらしい。 「虎は死して皮を残す」って感じかな。 MonaもBSDみたいにそこら中のOSがパクるようなコードを残せれば良いね!
>946 インターフェース2002の7月号は、そんなに期待してるとがっかりするぞ。
>>948 大丈夫です。学校にあるので少し読みしました。
あのブートのを見たいのです。あとbochsの使い方とか。
しかし学校では貸すことも、コピーさせてくれることも無理だと言うことだったので。
ただまだそこまで行っていないので、ますもっとレベルを上げます。
それを踏まえて、その先どうするかを決めたいと思います。
んでは、本当に謹慎します。俺宛てにレスせんといてなー
はいはい、帰ってね
このペースだと、そろそろ次スレの時期かと思いますが、 次もOSを作ろうにするのでしょうか? Monaに特化するのでしょうか?
Monaに特化でいいんじゃない?
なのかな?<特化 OSを作ろうのままで良いんでない?
次スレ (゚听) イラネ
共有メモリの簡単な設計を済ませ、実装に入りました。 思い通りに行くかどうかは分かりませんがなんとかやってみようかと。 ある特定処理をクラスのstaticメンバ関数にするか、普通の関数にするかで最近良く悩みます。 前者はそのクラスに関連する特定の操作でインスタンスを必要としないものとクラスとの 関連性が分かるのがよい。ただし、その関数の中でMona独自のグローバル変数などを参照してしまう とクラス単体で使うときに困る。 後者は前者のデメリットを解消するが、クラスとの関連性がうすくなる。 といった感じでしょうか。 PageManager#setup()などではかなり迷いました。
いまさらだけど動作報告したよん。がんばってね>ひげ
957 :
◆1haVRB54HY :03/10/24 10:06
958 :
デフォルトの名無しさん :03/10/24 10:24
Mac OS XはOSの本体がJavaベースと聞いたが。
VB厨でMEユーザか。最強だな。
>>960 Java勉強厨らしいからいずれJava厨にもなる期待の星だ。
ついに作ろうスレも終わったな 最後のまともなスレだったのに・・・
>>926 詳細な説明が出たのは実装版出した暫く後。
その版を公開するより前に実装が完了しただか
実装中だかというLタンからの近況報告があって、
その時に誰かが具体的なオーバーライド方法を聞いてた。
でも別の話題に呑まれでもしたのかスルーだったんだよ。
その後オーバーライドAPIが実装された版が公開され、
間も無くLタンがやる気を無くしてNWSOSの存続が不透明になり、
その状態の中で名無しが再度方法を聞いてみて
ようやく詳細な説明が出た。
でもその時にはNWSOSの将来が不安定になり過ぎて
アクティブなマがいなくなってたからな。
今じゃ協力するのがLタンのやる気を盛り上げるのか
逆に水を差す事になるのか誰にも分からない。
ところであの時のログってもうdat落ちだったんだ?
そのうちWebに上げとこうかな。
しかしそれすらLタンが歓迎するか嫌がるかよく分からない。
>>955 > PageManager#setup()
Java厨すぎ
PageManager::setup()って書いてね
メソッドって言わずに関数って言うようになったのはgooooooood!!!
>>961 これでRubyに手を出せば完璧な基地外だな(プゲラ
ええっ? OS板に移行ですかぁ? このスレはやっぱム板のネタじゃねーの?
このスレの残りは貴女の
>>966 タンに萌えるスレになりました
970 :
◆AEqcy/sQU6 :03/10/24 13:42
このスレはネカマの巣窟となりますた。 さあ、千取り合戦いくわよ〜♥ 970!
971 :
◆1haVRB54HY :03/10/24 13:43
971♥
1200くらい?
973
973♥
このスレの残りは恥かきっ娘の
>>974 タソに萌えるスレになりました
977 :
デフォルトの名無しさん :03/10/24 14:15
977
978 :
デフォルトの名無しさん :03/10/24 14:20
978
979 :
デフォルトの名無しさん :03/10/24 14:46
979
>>963 dat落ちは時間が経つか金払うかすれば見れるわけだし、
どっちかって言うと削除された本家BBSのログがホスィなあ。
和製OS史の失われた空白だよ。
誰かのローカルキャッシュに奇跡的に残ってないかなあ。
ぉぃぉぃ。誤解するんじゃねーよキモヲタネカマの絵里奈君。 誰が貴様なんかにほれるかと。あの島崎だがなんだかっていうのもどーせネカマなんだろ? なぁにが"冒涜"だ。そりゃね。OSASKには使ってもいいのよ。川合さんは偉いんだから。 ただ、ネカマのキモヲタが調子に載るなと。誰が貴様のケツイクサのなかで中田氏するかと。 ちなみに、トリップ吊したのは山崎の相手に付かれたから。今からUNIX/Linux板みてくるからちとまちなぁ。
>>980 本家BBSのは本人も一度復活させかけたみたいだけど、
結局スクリプト書くのが面倒だったんかな。
俺的には現状・将来のNWSOSの仕様や内部に
関係する事が書かれてなければ結構どうでも良いけど。
確か大して有意義な情報は書かれてないんじゃなかったかな?
公開期間が短かった分。
>>982 > 俺的には現状・将来のNWSOSの仕様や内部に
> 関係する事が書かれてなければ結構どうでも良いけど。
なるほど〜。
どっちかって言うと漏的にはLタソの思想とか人となりに興味があって、
そういうことが沢山書いてあったから惜しいなあと思ったわけ。
Lタソはニフティにもコンパイラ作成記みたいの書いてたと噂で聞いたけど
そのログも読んでみたいな〜。
984
あぁ、まさか、スレが分裂するとは思わなかった。 余計なこと言ってしまったか・・・
986
988
989
990 :
デフォルトの名無しさん :03/10/25 09:10
990
991 :
デフォルトの名無しさん :03/10/25 09:23
991
992 :
デフォルトの名無しさん :03/10/25 09:41
992
993 :
デフォルトの名無しさん :03/10/25 09:54
993
994 :
デフォルトの名無しさん :03/10/25 09:59
記念カキコ v(^-^=)
995 :
デフォルトの名無しさん :03/10/25 10:00
もれも
おいらも
997 :
デフォルトの名無しさん :03/10/25 10:03
997
998
999 :
デフォルトの名無しさん :03/10/25 10:04
こいつはアフォ ↓↓↓↓↓↓↓↓
get
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。