トップページ⇒tech
478コメント207KB

OSを作ろうpart6

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
独自にOSを作っているまたは、作ろうとしている人たちのための
スレッドになればと思います。

OSを作ろうpart5
http://pc2.2ch.net/test/read.cgi/tech/1042375466/
OSをつくろうpart4
http://pc3.2ch.net/test/read.cgi/tech/1037096449/
OSをつくろうpart3
http://pc3.2ch.net/tech/kako/1027/10270/1027080631.html
OSをつくろうpart2
http://pc3.2ch.net/tech/kako/1024/10244/1024411711.html
0002デフォルトの名無しさんNGNG
このスレから誕生したOSたちです。

[Mona by ひげぽん氏他]
プロジェクトページ
ttp://mona.sourceforge.jp/
プロジェクトメンバーになりたい方は、
[email protected] までメールをどうぞ。
最新のイメージファイルは以下のURLから落とせます。
ttp://mona.sourceforge.jp/Download.html
ソースファイルの閲覧はここからできます。
ttp://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/mona/mona_v1.0/

[あさがお by わたもち氏]
ホームページ
http://www.geocities.co.jp/SiliconValley-PaloAlto/6802/
作りかけの新ホームページ
http://watamoti.hp.infoseek.co.jp/os/index.htm
0003デフォルトの名無しさんNGNG
HSO最強
0004デフォルトの名無しさんNGNG
HSP
0005デフォルトの名無しさんNGNG
☆彡 関連スレ

GUI-OSを作ってますがなにか?
http://pc2.2ch.net/test/read.cgi/tech/1045907529/
【第三勢力】和製OSここにあり!【超マイナー】
http://pc.2ch.net/test/read.cgi/os/1039237412/
OSを作ってみよう
http://pc.2ch.net/test/read.cgi/os/1046271176/
わーい!! 和製OSを作ったよ!!
http://pc.2ch.net/test/read.cgi/os/996051906/
OSを作るためにみんなでお勉強スレッド
http://pc.2ch.net/test/read.cgi/os/1020424840/
【2chOS】OSを作ろう【マジ】
http://pc.2ch.net/test/read.cgi/os/1018174274/
【ヤチャータ】OS作りました【デキチャータ】
http://pc.2ch.net/test/read.cgi/os/1019463348/
OSの作り方
http://pc.2ch.net/test/read.cgi/os/1007213585/
JAVAでOSを作る
http://pc.2ch.net/test/read.cgi/os/984210541/
仮に新しくOS作るとしたら、、、
http://pc.2ch.net/test/read.cgi/os/994675006/
0006デフォルトの名無しさんNGNG
♥彡 関連ページ

osdev-j
http://wiki.osdev.info/
osdev-j(旧)
http://mjt.s22.xrea.com/pukiwiki/pukiwiki.php

厨房OS堕地獄縁起
http://www5.ocn.ne.jp/~carre/chubo/

XinuによるOS概論
http://a414s1.it.nanzan-u.ac.jp/seminar/OS/index.html

MPDN資料室
http://mona.sourceforge.jp/MPDN/document_room.html

LightCone氏によるOS開発資料
http://homepage2.nifty.com/nowsmart/Japanese/PCATData.htm
http://homepage2.nifty.com/nowsmart/Japanese/cpu.htm
0007デフォルトの名無しさんNGNG
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を抜き去るに一票。
  超先生が指摘してるように、ソース公開されてるからこそ
  問題点を掲示板上だけでもアドバイスできたりするし、
  この手の垂れ込みが、カーネルの開発速度を加速すると思われる。
0008デフォルトの名無しさんNGNG
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
  つーか、「作者の人格」は煽りだろ?
  乗るなよ。何の役にも立たんから。
0009デフォルトの名無しさんNGNG
>>7
半年が経過しましたがMonaはNWSOSはおろか
OSASKの足元すら見えていないようです。。。
0010デフォルトの名無しさんNGNG
  今だ!10番ゲットォォォォォォ!!
   ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       .∩∧,,∧           (´´
     ,,,,,,,,,,ミ゚Д゚,,彡        (´⌒(´
   ど,,,,      ,,,,,二⊃≡≡(´⌒;;;≡≡≡
      ~''(,,,,,づ゙゙  (´⌒(´⌒;;
    ズザーーーーーッ!!
0011デフォルトの名無しさんNGNG
>>9
いいんじゃない。
ひげぽんにはひげぽんのペースがあるんだし。
他人がごちゃごちゃ言うことじゃないと思うよ。
0012デフォルトの名無しさんNGNG
>>12
1人でやってんならそうだけど、
オープンソースの強みがまるでないじゃん。
001312NGNG
すみません、間違えました。>>11です。
0014デベロッパー名無しNGNG
自己レスカコ(・∀・)イイ!!
0015デフォルトの名無しさんNGNG
>>12
オプソにしたから開発が一気に加速したなんてのは
犬糞に限った、しかも都市伝説みたいなもんだろ?

だから>>14やL氏はオプソ忌み嫌ってんだよ。
0016ウホッ!いい名無しNGNG
(*´Д`)何故そこでボクが出てくるの?
0017デフォルトの名無しさんNGNG
>>15
結局Monaがオープンにしたことで自分自身は得しないで
あさがおとかにパクられただけだしね
Lたんは正しかった!
0018デフォルトの名無しさんNGNG
>>16
>よく知らない人にソースコードを開示するような事はあり得ません。
0019名無したん@(´・ω・`)NGNG
そりゃ知らない人に裸見せろ言われてもねぇ・・・
0020デフォルトの名無しさんNGNG
>>19
ウホッ!見せて!!
0021名無したんNGNG
紫外線で目が焼けるけど、いい?ヽ(`ー´)ノ
0022デフォルトの名無しさんNGNG
>>21
焼けるもんなら焼いてみな!
0023ひげぽん ◆Ngzcp/NZpA NGNG
>>1
>>2
>>5
>>6
>>7
>>8

新スレ立ておつかれさまです。

> 半年が経過しましたがMonaはNWSOSはおろか
> OSASKの足元すら見えていないようです。。。

確かにおっしゃるとおりですね。
まあぼちぼちがんばります。
0024ひげぽん ◆Ngzcp/NZpA NGNG
Monaがオープンソースにして得した点を思い出せる限り列挙

・Makefileの書き方が悪いよと教えてもらった。⇒ビルド効率大幅アップ
・こういうソースを書いたんですけど動きませんと質問できた。(特に初期)
・STL導入パッチを作ってくれる人がいた。
・ブートコードやその他いろいろなコードを提供してくれる人に出会えた⇒ぐりぽん氏
・プロジェクトホームページを作ってくれる人に出会えた⇒YOSSY氏
・オープンするということで多少コードの品質に気をつけた〈本当か?)
・souceforge.jpを使用できている。
・進捗状況がプロジェクト外の人にも分かる。

思ったよりもオープンソースの効果がなかった点

・共同開発者になかなか出会えない。
プロジェクトに参加してくださる方々はたくさんいるのですが
私のプロジェクト運営のまずさや、OS作成の敷居の高さ?により
実質コードを書いているのはひげぽんとぐりぽん氏になってしまっている。
0025ひげぽん ◆Ngzcp/NZpA NGNG
そういえば、わたもちさんのOSはC++でカーネルを書きかえるそうです。
どういうアプローチを取られるのか大変楽しみです。

Monaもがんばらないとなあ。
0026デフォルトの名無しさんNGNG
ひげぽんいい人だね〜!
0027わたもちNGNG
更新に気づくの早すぎデス。ひげぽんさんに見張られています(汗

のんびり作っていて新しいハードウェア(64bitCPUなど)が主流になっても、
楽に対応できるよう、できるだけハードウェアよりな構造にならないように
作ろうというのが書き換えのねらいです。
普及していて、ネイティブコンパイルできるオブジェクト指向言語ということで
C++にしました。

CをC++に変換するといった方向なのと、もともとオブジェクトを意識した構造に
なっているため、おそらくソースコードの見た目はあまり変わらないと思います。
後々、恩恵にあずかれるはず。
0028デフォルトの名無しさんNGNG
>>27

それをパクるというのです。
オープンソースの弊害簡単にぱくられるとつらいねぇ。
0029わたもちNGNG
あのう、話がさっぱり見えませんが。
何か問題があるようでしたら、はっきりとお申しください。
私自身はなんら違反している行為はやっていないと思いますので...
0030デフォルトの名無しさんNGNG
>>29
ひげぽん (および協力者) からクレームついてるわけじゃないでしょ ?
>>17 見りゃわかるけど、なんでも損得に置き換えたい人みたいだから、放置しておいた方が良いよ。
0031ひげぽん ◆Ngzcp/NZpA NGNG
FAT12.cppをリファクタリングしました。
そのとき気づいたのですが、mallocを実装しているのに
freeを実装していませんでした。w

急ぎで実装しましたが、今まで気づかなかった・・・

>>27
見張っていませんよ。たぶんw
0032わたもちNGNG
>> ひげぽんさん
ひげぽんさんがライセンスを本意で決めたのではなければ、
お気にさわっていらっしゃるかもしれません。
対処しますので、他の手段でこっそりおっしゃってください。
また、ページングの実装等どうぞお役立てください。

>> 見張っていませんよ。たぶんw
少し冗談入ってましたw
0033ひげぽん ◆Ngzcp/NZpA NGNG
>>32 わたもちさん

>>28
あたりの発言を気になさっているようですが
私は何も気にしていません。

お互い切磋琢磨してがんばりましょう。
0034わたもちNGNG
> お互い切磋琢磨してがんばりましょう。
ひげぽんさんも毎日忙しいと思います。
また得意な技術も似たところがありますし、似たような環境の者同士、
お互い頑張りましょう。でも正直、先駆者であられるひげぽんさんには
頭があがりません。
0035デフォルトの名無しさんNGNG
予定調和
0036デフォルトの名無しさんNGNG
>>わたもちさん
いきなりWabaはきついですから
こんな所から手を付けるのはどうでしょう?
ttp://what-new.hp.infoseek.co.jp/language/
0037デフォルトの名無しさんNGNG
実は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
0038デフォルトの名無しさんNGNG
両方にレスするのも大変だから、
前スレ使い切ろうや。
0039わたもちNGNG
>> 36さん
前スレにレスしました。
0040始める時は名無したんを押すNGNG
>>37
こんなところでその名前を聞けると思ってなかったわけだが。
MonaでCOM32採用はセグメントがらみがあるので難しいと思う。
0041謎の探偵NGNG
part6おめ〜。
( ´¬)y-~ マッタリ頑張れ。
いつも拝見させてもらってます。
0042デフォルトの名無しさんNGNG
>>38
950過ぎたら通常捨てるだろ
今はちょうど話題も切れてるし

>>39見たいなことされたほうが読みにくくて迷惑だ
余計なこと言うなよ
0043デフォルトの名無しさんNGNG
>>37みたいな妄想はお腹一杯だが
ホラでもいいから公式ロードマップみたいなの示さないと
誰も付いて来なくて言葉だけの突っ込みに終始してしまうよ。>>ひげぽんちゃん♥

この辺参照ね。
http://pc.2ch.net/test/read.cgi/os/996051906/112-153
0044ひげぽん ◆Ngzcp/NZpA NGNG
さてFAT12ドライバをMona本体に組み込むところでいろいろ問題発生
その多くはDiskDriverを継承したFDCDriverの出来が良くないことに
よるものと思われます。

よく考えればFDCDriverはきちんとしたテストをしてなかったような・・・

>>34 わたもちさん
> でも正直、先駆者であられるひげぽんさんには
> 頭があがりません。

そんなことはありませんです(´ヘ`;)
先駆者といえば、川合さん、LightConeさんなどですね。
確かにお二人には頭が上がりませんw

>>37
夢のロードマップですね。

> COM32(※)みたいな単純なのでいいからプロセスを実装
> ↓
> 簡単なコマンドラインシェルが登場
> ↓
>dir(ls)とかcat(type)とか簡単なコマンドが登場

この辺まではなんとなくイメージがわきます。
0045ひげぽん ◆Ngzcp/NZpA NGNG
>>43さん
> ホラでもいいから公式ロードマップみたいなの示さないと

ではホラを含めて今後の予定をw

ファイルシステム FAT12のサポート(ブート後のお話)
↓
ブートコードからカーネルイメージをFAT12のファイルとして読み込めるようにする。
↓
ユーザーモードの実装(プロセス?スレッド?)
↓※
簡易シェルの実装(ls, pwd, cd?)
  ↓
ファイルシステムよりファイルを読み込みプロセスとして実行できるようになる。
  ↓
ユーザーモード用APIの整備
↓
ラインエディタの登場(誰か作ってくれるとうれしい)
↓
ページングなどカーネルの基礎作りに戻る。

※この辺で余裕があれば、ファイルシステムをユーザーモードで動かして
マイクロカーネル化への第一歩とする。
0046デフォルトの名無しさんNGNG
>>45
いや、こういうのじゃなくて、アーキテクチャのコンセプトを示さないと
よその人は参加しにくいと思うんだが。
今だと
・C++でカーネルを実装
ぐらいしかないし。
これだとちょっと抽象的で何を目指しているのかわからないので、生暖
かく見守るしかできないと思うんだが。

>ファイルシステム FAT12のサポート(ブート後のお話)
>簡易シェルの実装(ls, pwd, cd?)
から察するにWindowsクローンなOSを目指しているの?
004746NGNG
あ、
>簡易シェルの実装(ls, pwd, cd?)
だからWindowsクローンじゃないか。スマソ。
でも、POSIXには準拠しないって言っていたよねぇ?
ますますわかんなくなってきた・・・。
0048デフォルトの名無しさんNGNG
>>24
> ・共同開発者になかなか出会えない。
自分から提案してバリバリするような人なんか滅多にいないから、
(たとえば会社でする事がなかったら暇つぶしするのが普通の人でしょ?)
リーダーが仕事を作って分配しないと
たとえ実力があっても持て余す結果になるよ。

だけど分配したところで↓みたいな結果にもなりがち。
http://pc.2ch.net/test/read.cgi/os/1050476647/79-85
(79からリンクされているMLのログは必読!)

ここで共産主義の計画経済が自由主義の競争経済に
敗れたことを考えると良いと思う。
タスクを重複しないように分配して各々に一任するんじゃなくて、
やりたい人に重複とか気にせずに分配して競争が発生しても
あまり気にしないというのはどうだろうか。
もっとも規模が小さいうちは競争は自主的に回避されるだろうけどね。
0049デフォルトの名無しさんNGNG
>>48
MSも社内で競争させてるしね。

K氏は無意識に自覚してるのか知らんけど、
横からの提案を本流に取り入れるのは拒否して
やりたかったら勝手にやってくれ、
もし良かったらパクるからってのが口癖だし。
もっとも成果上がってないけど(ゲラ
0050デフォルトの名無しさんNGNG
>>ひげぽんタソ
> するどいですねぇ。
> まああまり気にしないでください。(笑)
矛盾してませんか?↓
Development Status: 2 - Pre-Alpha
0051デフォルトの名無しさんNGNG
>> 50
粘着ヤメレ
0052デフォルトの名無しさんNGNG
>>51
そっくりそのまま返す
0053デフォルトの名無しさんNGNG
>>52
そっくりそのまま返す
0054デフォルトの名無しさんNGNG
粘着が二人紛れ込んでいるようだが……
0055デフォルトの名無しさんNGNG
>>53
俺も参加する
0056デフォルトの名無しさんNGNG
>>55
どうせ参加するならMona Projectにしろよ
0057デフォルトの名無しさんNGNG
while(true);よりfor(;;);を使った方が良いよ>Mona
0058デフォルトの名無しさんNGNG
>>57
そんな宗教的な問題、どっちだっていいよ。
0059デフォルトの名無しさんNGNG
>>58
whileだと評価のコストがかかるから一般的にforが薦められているんだよ。
0060デフォルトの名無しさんNGNG
そんなにコストを気にするならgoto使えと
0061デフォルトの名無しさんNGNG
>>60
gotoはJavaで使えないですよね。
だからC系言語一般で薦められているんです。
0062デフォルトの名無しさんNGNG
>>59
一般的になんて聞いたことないし。
評価コストは完全に実装依存の問題だろ
最適化コンパイラが無い時代でもないんだし、
どうでもいい
0063デフォルトの名無しさんNGNG
>>62
聞いたことがあるかどうかは基準にならないとして、
コーディングスタイルを一般的なものに合わせるのは
開発者に対するアピールになりますよ。
だから大きなプロジェクトではインデントの仕方とかも
細かく決められているわけです。
だからXPなどでもコーディング規約がうるさく言われるわけです。

もっともそんなことを意識するのはどうでもいいので、
書くときは各人で好きなように書いておいて、
最後に自動整形ツールで統一するわけですが、
ツールで整形できない部分もあるわけです。

プロジェクトをマネジメントするということと、
個人が趣味で楽しく書いていくのとは違いますよ。
その辺をなあなあでやると結局一人でやってるってことになりかねません。
Monaは既に10人以上の大所帯ですし、
今後実用性が高まればもっと増えることが期待されますからね。
0064デフォルトの名無しさんNGNG
>聞いたことがあるかどうかは基準にならないとして

確かにこれは基準にならないが、
ソースも示さず「一般的」と断言する根拠はどこから出てくるんだ?
63 != 59なら忘れてくれ。

というか、
forに統一るのが是で、whileに統一するのが非であるとする根拠が
>>59ならば、フーンとしか言えないんだが。
0065デフォルトの名無しさんNGNG
そんなZ80とか8086の時代じゃないんだから評価のコストなんて… というのはダメなんだろうか。
真っ当なコンパイラならfor(;;)とwhile(true)のどちらも同じコード吐くだろうし。

個人的には無限ループだということがわかりやすいのでwhile(TRUE)
0066デフォルトの名無しさんNGNG
Cにはbool型がないからマクロを使うかwhile(1)となって統一性がなくなる
0067デフォルトの名無しさんNGNG
>>66
Cにだってboolはあるぞ。
まあ正しくは_BoolだしC99準拠でないと使えないわけだが。
0068デフォルトの名無しさんNGNG
>>63
ML公開されてないだろ。
本音では信者以外はどうでもいいってこった。
0069ひげぽん ◆Ngzcp/NZpA NGNG
>>46

> いや、こういうのじゃなくて、アーキテクチャのコンセプトを示さないと
> よその人は参加しにくいと思うんだが。

うーんそうですね。コンセプトですか難しいですねぇ。

> だからWindowsクローンじゃないか。スマソ。
> でも、POSIXには準拠しないって言っていたよねぇ

Windowsクローンは目指しません。
POSIXに準拠するかどうかは現時点では分かりません。
ということなのでls, pwd, cdは、あくまでも
簡易的なコマンド名にすぎす、動作が他のOSにそっくりというわけではありません。

>>48
> だけど分配したところで↓みたいな結果にもなりがち。
> http://pc.2ch.net/test/read.cgi/os/1050476647/79-85
> (79からリンクされているMLのログは必読!)

うわ内容が重いですね。
でもそこに書かれていることは、一部Monaプロジェクトにも当てはまりますね。
0070ひげぽん ◆Ngzcp/NZpA NGNG
>>50
>> まああまり気にしないでください。(笑)
> 矛盾してませんか?↓
> Development Status: 2 - Pre-Alpha

あまり深く考えていませんでした。
すいません。今から全て訂正するはきついので
ヒゲポソはバカだったということで勘弁してください。m(__)m

>>57 - 68 while (true)問題について

私は自分の書くコードでは
無限ループは while (true)でなるべく統一するようにしています。
他のコーディング規約も、ある程度は他の開発者の方に私のスタイルに
合わせていただく方針です。

もちろん、他のスタイルのほうがメリットがあると感じれば
簡単に乗り換えますw
0071デフォルトの名無しさんNGNG
>>70
> >>57 - 68
こういうときは
>>57-68
ってつなげて書くと自動的にまとめてリンクが付くから良いよ。
0072デフォルトの名無しさんNGNG
>>70
statusは、どこかのフォームから簡単に変更できた記憶が。
これ、物によってバラバラな場合、どのへんにしておくか迷うんだよねえ。

ところで、コーディングスタイルをまとめた文章ってあります?
ソース見ればある程度読み取れますが、俺スタイルに合わせろということであれば、
きちんとまとめておいたほうが、完全に統一できて後々苦労しないと思います。

あちこち首突っ込んでいる身としては、あまりきつくない方がうれしいんですけどね。
0073デフォルトの名無しさんNGNG

#ifdef USE_WHILE
#define loop while(true)
#else
#define loop for(;;)
#endif

loop{


}

とりあえずこう書いとけ
0074ひげぽん ◆Ngzcp/NZpA NGNG
>>71
アドバイスありがとうございます。

>>72
・基本的には既存ソースのコーディングスタイルに準じる。
・インデントは半角空白×4を基本とする。
・tabはMakeFile以外では原則的に使用不可とする

てな感じになっております。

>>73
冗談ですよね?
0075デフォルトの名無しさんNGNG
>>74
> ・tabはMakeFile以外では原則的に使用不可とする
Emacsで書かれたとおぼしきソースに
8文字スペースの代わりにTabが入ってるよ(Emacsデフォの挙動)

この辺は63の言うように自動整形ツール使った方が楽だよ
0076ひげぽん ◆Ngzcp/NZpA NGNG
>>75
それは失礼しました。
commit前にM-x untabifyしているつもりなのですが
たまに忘れます・・・
0077デフォルトの名無しさんNGNG
>>63
ひげぽんにPMの仕事させてどうするのよ。
設計やコーディングに専念してもらいましょうや。
0078デフォルトの名無しさんNGNG
>>77
誰かがやらないと1人プロジェクトのままだよ。
77さんどうですか?
0079デフォルトの名無しさんNGNG
漏れは、成果物が出来上がるかどうかにはあまり興味がなくて、自分では
できない事をやっている姿をマターリと見守って一緒に一喜一憂した気分に
なりたいだけなのかも知れない。

一人プロジェクトでいいのかどうかはひげぽん氏が判断すれば良いか。
どっちにしてもガンガレ!
0080horaiNGNG
面白いことやってますよねー。。。応援します。>ヒゲポンタン、MonaPJ
UNIXのソースコードにつけた注釈が本になったケースがありますが、
その逆を見ている感じ?>>69 あたりでコンセプトに悩んで
いらっしゃいますが、端から見たこのOSの特徴って、それ自体が
十分勉強の素材になるってことだと思います。LinuxはMINIXがあまりに
教育目的すぎたので実用のほうへのフラストレーションがわーと
噴出し発展、ってな印象ですが、MonaはあえてMINIXの後追い、(=勉強・
教育的要素を色濃く残しておく)てのはどうでしょう (w
・・・という意見は結構前からあるのかな?
0081horaiNGNG
>>80 自己レス
あまりに抽象的だったので、具体的なアイデアを一つ。
例えばカーネルの上に(?)どかっとRubyみたいなスクリプト
処理が載ってて、ls, cat などはスクリプトで書かれている。
すぐ cat すれば、すぐソース見れて勉強になる&自分なりの
ls, cat を作ってもいい。。。 IOやオブジェクトの扱いなどは
スクリプト側が提供。そりゃコンパイラで作るより遅い
だろうけど、最近のPCの速さだったらあまり苦もなく動くかも。
# ただファイルサイズは大きくなるからFDのみとはいかないか (w||
0082デフォルトの名無しさんNGNG
富豪的 OS か。
0083horaiNGNG
新しいスクリプト言語を設計する!
http://pc2.2ch.net/test/read.cgi/tech/1050936741/l50

こういうのもあるのな (w
0084デフォルトの名無しさんNGNG
for (;;) を使うべきだ。なぜなら、foreverと読めるから。
0085デフォルトの名無しさんNGNG
>>84
> for (;;) を使うべきだ。

こっちには賛成。
理由は、コンパイラが while(1) に対して文句を言うことがあるから。

でも、
> なぜなら、foreverと読めるから。
には、反対。
ずっとループするというプログラムもごくまれにあるけど、普通は...

for(;;){
 ...
 if(...) break;
 ...
 if(...) return;
 ...
}

と途中脱出するから。
0086デフォルトの名無しさんNGNG
コーディングスタイルをそろえることに意味があるんだから、
ひげぽんが書いたものにあわせればいいんじゃない?
0087デフォルトの名無しさんNGNG
> 理由は、コンパイラが while(1) に対して文句を言うことがあるから。
while(1)はJavaやC#でコンパイルが通らないってのもある。
なるべくC/C++/C#/Javaは同じスタイルで書いたほうが良い。
0088デフォルトの名無しさんNGNG
俺はトリッキーな記述は慎むべきだと思うな。従ってループは

 while( true ) {
   ;
 }

でいいと考える。何故か?

読みやすいソースコードは誰のため? ヒト? or コンパイラ?
もちろん我々のために読みやすく理解しやすく記述する。
癖のある書き方だと後に誰もメンテしてくれなくなるよ。
0089デフォルトの名無しさんNGNG
for(;;)が無限ループくらいC/C++使いなら誰でも知っている。
俺はwhile(1)派。警告?出ることもあるね^^;
0090デフォルトの名無しさんNGNG
いつからここは宗教スレになったんだろう…(´ー`)
0091デフォルトの名無しさんNGNG
そんなレベルの話じゃないと思う・・・(´ー`)
0092デフォルトの名無しさんNGNG
if(1) goto kurikaeshi;
0093デフォルトの名無しさんNGNG
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
0094デフォルトの名無しさんNGNG
>癖のある書き方だと後に誰もメンテしてくれなくなるよ。
プッ

FreeBSDはメンテされていますが何か?
ttp://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=style&dir=jpman-5.0.0%2Fman§=0
>無限ループは while ではなく for で行ないます。
0095デフォルトの名無しさんNGNG
くだらん問題を気にするなよ
0096デフォルトの名無しさんNGNG
ひげぽんが自分のスタイルに会わせてくれって言ってるんだからそれで良いじゃないか
0097デフォルトの名無しさんNGNG
このスレはwhile教徒とfor教徒が互いに罵倒しあいながら友情を深めるスレになりますた!
0098デフォルトの名無しさんNGNG
HTMLしかかけないヤツがいきなり来て言うのもなんだが。








がんがれ。
0099デフォルトの名無しさんNGNG
PowerPC, とか,68k
つまりx86以外アーキテクチャ(結局今は現実的選択だとマクしかない?)
に移植検討して欲しい

(クレクレ君氏ね、と言われそうw)
0100デフォルトの名無しさんNGNG
>>99
> つまりx86以外アーキテクチャ(結局今は現実的選択だとマクしかない?)

WorkStation とかならいくらでもあるけど。
Sun Blade 150 なら、20万以下からあるし。

> に移植検討して欲しい
> (クレクレ君氏ね、と言われそうw)

と言うかそれをやる余力はさすがにひげぽんさんにはないと思う。
移植しやすいように配慮しておくことはできるかもしれないけど。

個人的には、移植なんか考えずに 386 アーキテクチャべったりの実装と言うのもおもしろいかもしれないと思っている。
0101ひげぽん ◆Ngzcp/NZpA NGNG
>>100
>> に移植検討して欲しい
>> (クレクレ君氏ね、と言われそうw)

> と言うかそれをやる余力はさすがにひげぽんさんにはないと思う。
> 移植しやすいように配慮しておくことはできるかもしれないけど。

こんにちは。そうですねぇ。
x86で手一杯です。。。。
ただ、本気で移植してくれるという人がいたら
もしかしたら協力できるかもしれません。
0102ひげぽん ◆Ngzcp/NZpA NGNG
FDC WRITEの挙動が怪しくて四苦八苦中
実機ではなく、VPCでの話です(実機ではそれ以前の問題が・・・)

    byte command[] = {0xC5//FDC_COMMAND_WRITE
                   , (head & 1) << 2
                   , track
                   , head
                   , sector
                   , 0x02
                   , 0x12
                   , 0x1b
                   , 0x00
                   };
0103ひげぽん ◆Ngzcp/NZpA NGNG
    for (int i = 0; i < 73; i++) {

        memset(tbuf, i, 512);
        g_fdcdriver->write(i, tbuf);
    }

のようにwriteを順に行うと
ADDRESS 0x4A00を境に0x0000に戻って書き込みが
行われてしまいます。
つまり、ループしてしまう。。。。

writeコマンドパラメータが悪いのか・・・
うーん。こまりました。
これが解決するとVPCでFAT12::writeが動くのになあ。
0104ひげぽん ◆Ngzcp/NZpA NGNG
>>103

解決しました。
lbaToTHSの変換が間違ってました。
お騒がせしました。
0105デフォルトの名無しさんNGNG
水面下でソースが更新されてますね。
漏れは、プログラミングはド素人ですが、
ソースを読んでOSのつくりを理解しようとしてます。
プロジェクトメンバーの方々、頑張って下さい。
0106ひげぽん ◆Ngzcp/NZpA NGNG
>>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も微妙。
0107ひげぽん ◆Ngzcp/NZpA NGNG
    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]);
0108ひげぽん ◆Ngzcp/NZpA NGNG
    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);
0109ひげぽん ◆Ngzcp/NZpA NGNG
とここまでがテストコードです。
FDCDriverの品質を上げるのにはもう少し
時間がかかりそうです。
0110デフォルトの名無しさんNGNG
なんで>>57がいきなりあんなこと言い出したか分かったYO!
0111デフォルトの名無しさんNGNG
>>106
今回の問題とは関係ないと思うけど、
DMAする時のアドレスが0x?0000またぐと正常に転送できなかったような記憶があります。
チェックしておいた方がいいかも。
0112ひげぽん ◆Ngzcp/NZpA NGNG
>>111さん

DMAは 64KB以上16MB以下ならOKと認識しているのですが
合っていますでしょうか。

今日もFDCDriver#writeが安定せず
FDCがどういうタイミングで割り込みを発生させるかが
全ては分かっていなさそう。

seek,write,recalibrate完了時というのは分かるのですが
result phaseでも割り込みが返ってきているようにも見受けられる。
writeが完了していないのにdma転送をstopしている様な気がする。
0113デフォルトの名無しさんNGNG
書き込みが失敗する→リトライを数回する
最初の書き込みレコードのデータが壊れる→モーターの回転が上がってないかもしれない→書き込む前に一度レコードを読み出して回転を上げておく

コード書いたこともない素人の意見だがナ(・∀・)
0114ひげぽん ◆Ngzcp/NZpA NGNG
>>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;
}


0115山崎渉NGNG
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0116.mjt ◆.mjtH1cgf. NGNG
こっちに書いた方が良いような気がするので今日の作業分:

 ○ IRQハンドラを呼んでも落ちない(仮想関数使うのを諦め、直接ハンドラのアドレスを渡す
 × マウスの初期化が腐ってる
 × PCICの初期化が腐ってる

4点。

ISADeviceのドライバなら書けるので暇な人は書いてみて下さい
…と言いたいところだけれど、真っ当なサンプルが無いのでダメっぽ。

C++で書いたクラスを別ファイルにしておいて、実行時にリンクする手法募集。。
0117111NGNG
>>112
例えば、0x10ff00にセクタバッファが来た場合、
最初の256byteは予定通りの場所に入るけど、
続きが0x110000じゃなくて0x100000に入るよって事です。

>>116
普通にダイナミックリンクできない?
0118.mjt ◆.mjtH1cgf. NGNG
今日のMona
 
 ○ PIC設定の重大なミスを訂正
 ○ PCカードを刺したまま起動すると認識する。電源供給周り作ってないので認識は出来ず。

試験前なのでちょっと中断。

>>117
ダイナミックリンクにはOSのサポートが不可欠です。
ELFなり何なりで格納したとしても、リンカが必要になります…

とりあえず、gccのnew演算子が実際にはどのような処理を行っているのか調べて見る必要が有りそう。
0119デフォルトの名無しさんNGNG
何気にokuokuすげーな
断食して体調崩して水泳をサボる基地外と勘違いしてた
0120ひげぽん ◆Ngzcp/NZpA NGNG
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を書いたことのある人がいらっしゃいましたら
アドバイスをいただけたら幸いです。
0121ひげぽん ◆Ngzcp/NZpA NGNG
>>120
DMA転送サイズを-1することで解決しました。
ご協力いただいたosdev-jの皆様ありがとうございました。
とくにS氏サンクスですm(__)m
0122デフォルトの名無しさんNGNG
new なんて、継承辿って継承元から順に malloc してるだけだって。
0123デフォルトの名無しさんNGNG
ん名分けないだろ
0124デフォルトの名無しさんNGNG
>>123
んなもんです。
mallocした後コンストラクタ走るけど。
どっちかっつーとvirtualの扱いの方が面倒。
0125ひげぽん ◆Ngzcp/NZpA NGNG
本日の成果

・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でテスト願いを出しております。ご協力のほどお願いいたします。
0126デフォルトの名無しさんNGNG
すれ違いだからこれでおわりにするけど
いくつ継承していようがメモリ確保は一度だけ。
順にメモリ確保なんてしないよ。

メモリ管理とvtblのことよく理解してないみたいだけど、
いい加減なことはイワンでほしい

0127.mjt ◆.mjtH1cgf. NGNG
要は何がしたいかというと、new時に外部のオブジェクトファイルを適当に選んで動的にリンクしてしまいたいということです。
Be辺りは出来たような気がしなくも無く…

g_consoleを初期化する前に、BIOSを利用したコンソールを用意しておくべきかと > hige氏

一部のマシンで起動できない -> g_console初期化前に割り込みなどの要因でg_consoleへのアクセス発生
-> ぬるぽ -> CPU例外ハンドラ(以前はdummy_handler) -> やっぱりアクセスできない -> ダブルフォールト
-> やっぱりダメ -> リセット の予感 > hige氏
0128.mjt ◆.mjtH1cgf. NGNG
>>127
hige氏を2回参照してシマタ…

もちろん、独自の言語やコンパイラを用意するというアプローチも無くわ無いですが…
0129超先生@∇・RR=∞ ◆leaf/RYZgY NGNG
<後ろ頭>-~ operator newをoverrideして
外部からobjectを取り込むのかな。

void* operator new(size_t n)
{
 if(boot_phase)
   return external_objects[...]; /* 別にnewにする必要ない<>-~ */
 else
   return malloc(n);
}
0130デフォルトの名無しさんNGNG
>>126
> いくつ継承していようがメモリ確保は一度だけ。

実装べたべたの話と言うことは理解してるよね。
複数回 malloc() が禁止されているわけじゃないよ。
0131デフォルトの名無しさんNGNG
粘着君は巣に帰っていいよ
0132ひげぽん ◆Ngzcp/NZpA NGNG
.mjt氏

> g_consoleを初期化する前に、BIOSを利用したコンソールを用意しておくべきかと > hige氏

確かに必要性を感じますね。

> 一部のマシンで起動できない -> g_console初期化前に割り込みなどの要因でg_consoleへのアクセス発生
> -> ぬるぽ -> CPU例外ハンドラ(以前はdummy_handler) -> やっぱりアクセスできない -> ダブルフォールト
> -> やっぱりダメ -> リセット の予感 > hige氏

以前このようなことで悩んだことがあります。
割り込みをうまいことコントロールしたつもりがやはり
ある程度は避けられませんね。

>>129 超先生さん
顔が変わりましたね。
超先生のおっしゃる方法もありですね。
というか、勉強になります。
0133ひげぽん ◆Ngzcp/NZpA NGNG
.mjt氏

global.hで
GraphicalConsole g_g_console;
VitualConsole* g_console = &g_g_console;

見たいなのはどうでしょうか?
初期化の順番にも寄りますが。
0134ひげぽん ◆Ngzcp/NZpA NGNG
FAT12テストのURLを張り忘れていたので
ttp://wiki.osdev.info/index.php?%5B%5BDiskImage%2FMona%5D%5D

ご協力をお願いいたします。m(__)m

あとはFAT12ブートを試す作業が残っています。
0135ひげぽん ◆Ngzcp/NZpA NGNG
連続書き込みすいません。

.mjt氏

リアルモードでmode12へ移行しているので
GraphicalConsole以外の出力先をあきらめた経緯があります。
g_consoleの中身がstaticで実行開始時に保証されていれば
とりあえずOKでしょうか。
0136.mjt ◆.mjtH1cgf. NGNG
>>135
それでOKでしょう。多分。。
# 画面分割や出力先の変更が出来ないうちは

ちょっち忙しいので四日程お待ちを。

リアルモードのBIOSを呼ぶインターフェースも必要になるかもしれないですね
まぁ、それは必要になったときにつけましょうか。
0137デフォルトの名無しさんNGNG
>リアルモードのBIOSを呼ぶインターフェースも必要になるかもしれないですね
Lタソが自慢してたね
0138デフォルトの名無しさんNGNG
>>137
召還しちゃダメ〜
0139.mjt ◆.mjtH1cgf. NGNG
>>137
リアルモードのBIOSコールに関しては、想定される用途(*)が結構限定的なので
一旦OSをとめてしまう構造にすれば、実装自体は難しくないかもしれません。
現状のMonaはカーネルは低位メモリに読み込まれていますが、充分な余裕が有ります。

やってみたわけではないので臆測ですが。

OSの中で矛盾無く取り込むにはBIOS-ROMを仮想86のメモリにちゃんと
マップしたり、DMA等のアドレスをきちんとしたりしなければいけないので比較的面倒かも。
# それこそ、エミュレータを書くくらいの気合で。
そこまでする必要性は余り感じていません。

* 想定される用途
画面モードの切り替え、PC本体情報やデバイスの情報の収集等。
0140デフォルトの名無しさんNGNG
画面切り替えは置いておいて、デバイス情報収集をカーネル起動後にやる意味があるのだろうか。
起動前に済ませておくべき事項では?
0141デフォルトの名無しさんNGNG
>>140
同意。
ホットプラグ考慮しなければ、リアルモードなうちに収集してしまったほうが簡単ですな。
画面切替えは、VESAなら32bitインタフェースあるからVM86使って呼ぶ必要ないし。

どうしてもVM86を使うなら、先頭の1MだけLMA=VMAにすれば、
あんまり考えなくてもいいかも知れない。
0142山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0143デフォルトの名無しさんNGNG
  _______         ___________________
 |悲しいときー! |         |レス来てると思って開いたら山崎だったときー!!|
   ̄ ̄ ̄∨ ̄ ̄ ̄          ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧∧                 ∧_∧
    ( ゚Д゚)                ( ´д` )
   ⊂○ ○ヽ                  ||””””””””””|
     |  | ̄              ( )山崎渉  ( )
     / /\\                ||_(^^)__|
     / /  > /                / /  ) )
   (_)  ��>               (_) (_)
0144.mjt ◆.mjtH1cgf. NGNG
>>140
デバイスマネージャ周りをカーネルにあまり入れたくないというだけです。。
その辺はひげぽん氏の方針もあるでしょうから、はっきりした見解が有るまで触らないでおきます…

で、>>133を実験してみましたが、正常起動していた機種でもお亡くなりに…
printfを呼ぶとよく分からないIPで停止。
もっと問題の根は深そうなのですが、正常起動しない機種が手元に2つしかないので暫く放置で。

また、落ちたときの状況を考えると、>>127で考えた原因は成り立ちません。
そもそも、カーネル初期化時は 当然の如く割り込み禁止状態ですからね…
# 何故気付かなかった…
0145デフォルトの名無しさんNGNG
>>143
レス2個ついてる思ったら、山崎とお前かよ !!
0146某S氏NGNG
ひげぽん氏どこー?(AA略
0147ひげぽん ◆Ngzcp/NZpA NGNG
>>140
情報収集は開発当初にそこまで手が回らなかったので放置気味の状態です。

>>144
> その辺はひげぽん氏の方針もあるでしょうから、はっきりした見解が有るまで触らないでおきます…

特に思うところはないので今度相談しましょう。>mjt氏

>>146
ここにいますよw
どういうご用件でしょうか?
0148デフォルトの名無しさんNGNG
>>144
PCIにぶら下がったデバイスの構成情報なら、
32bitインタフェース使って収集できると思いますが。

あとはBIOSワークに残された情報を集めれば、
VM86を持ち出さなくてもよさそうな気がする。
0149.mjt ◆.mjtH1cgf. NGNG
>>148
情報どうもです。

とりあえず、資料を集めて眺めてみる必要が有りそうですね。。
そうなってくると、いよいよカーネルの構成を考えなければならない段かもしれませぬ。
0150デフォルトの名無しさんNGNG
>>147
秘密のラブレターがあるの。
0151デフォルトの名無しさんNGNG
USBってさ
intで割り込みかけて情報ひきだすんじゃないの?
BIOSとかから情報えられないから違うんだろうけど
0152ひげぽん ◆Ngzcp/NZpA NGNG
今日の変更点


FAT12ブート対応

* firstboot.asm : FAT12ブート対応 ぐりぽん氏提供のコードにBPBなどを追加。
デバッグルーチンを削除

* fat_write.cpp : 新規作成 FAT12.cppを駆使して配布用ディスクイメージを作成する。

* Makefile : FAT12イメージを作成するためいろいろと変更

* secondboot.asm : a20enableとgraphicalmodeをfirstboot.asmからsecondboot.asmに移動。
0153ひげぽん ◆Ngzcp/NZpA NGNG
MonaがFAT12ブートおよびFAT12に対応しました。

現在下記場所にてテスト用のイメージを配布しています。
少しでも多くの実機でテスト行いたいのでご協力をお願いいたします。

ttp://wiki.osdev.info/index.php?%5B%5BDiskImage%2FMona%5D%5D
0154デフォルトの名無しさんNGNG
このテストってやっぱり危険でつか?
試したいけど、怖くて試せない…(汗
0155ひげぽん ◆Ngzcp/NZpA NGNG
>>154
残念ながら100%安全とはいえません。
ですがそんなに危険なものでもないと思います。

テストは、フロッピードライブアクセスを行います。
なのでフロッピーディスクやフロッピードライブが壊れる可能性があります。
(今までは壊れたことはありませんが。。。)

HDDアクセスは一切行いませんのでHDDのデータが壊れることはまずないでしょう。

ただどんな結果・損害が出てもひげぽんはフォローは出来るかもしれませんが
一切責任は取れませんので、自己責任でご協力いただくしかないと思っています。

すいません、説明不足かもしれませんがよろしくお願いいたします。
0156154NGNG
あ、FDDがこわれるならまだいいか。
HDのデータだったらヤヴァイなぁ…。
これから試してみます。
0157デフォルトの名無しさんNGNG
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.
って出る。
0158デフォルトの名無しさんNGNG
age
0159.mjt ◆.mjtH1cgf. NGNG
>>157
VMwareのバージョンは幾らですか?
また、VMwareで他のOSの起動ディスクが起動できるかも確認してみてください。

2.0の英語版で確認した限りは起動はしますが、FDのテストがうまくいってません。
ttp://wiki.osdev.info/index.php?%5B%5BScreenShot%2FMona%5D%5D
0160デフォルトの名無しさんNGNG
>>159
VMware4.0Wです…
0161デフォルトの名無しさんNGNG
MMMMMMMM
nnnnnnnn
でよい?
0162ひげぽん ◆Ngzcp/NZpA NGNG
>>161
Monaのそれぞれの文字が512個表示されていれば
テストOKです。

>>157
VMware出来どうしないとのことですが
試していただいた手順を教えていただいてもよろしいでしょうか。

osdev.infoで動作報告していただいたかたの中で
DUMP版では動くが正規版では動かないというご報告がありました。

推測するにFDCDriverのどこかの処理でFDCの割り込み(処理終了のおしらせ)
を待つべきところを、まっていないのが原因かもしれません。
DUMP版は大量に文字表示をするので、結果的に処理終了後に次の処理に行くのでは。。。

とおもって処理を見返してみましたが今のところそれらしいところは見つかっていません。
0163157NGNG
VMwareの設定ってこれで良いのですか?
http://nks-42.mydns.to/option.jpg
0164デフォルトの名無しさんNGNG
FAT12ブートってカーネルがFAT12領域にあるってことですかね?
FAT12が扱えれば、テスト環境でのログ取り&報告に使えそうですね。
0165.mjt ◆.mjtH1cgf. NGNG
>>163
設定は大丈夫だと思うので、ディスクイメージのディスクへの書き込みが上手く行ってないのかもしれません。

2.0だと[FAT 12]:before read resultの直前または同時にVMwareがpanic。
0166ひげぽん ◆Ngzcp/NZpA NGNG
>>164
おっしゃるとおりですね。
FAT12のドライバが安定したらそのようなロギングを導入します。
0167ひげぽん ◆Ngzcp/NZpA NGNG
動作しない実機があるようですが、こちらで再現する実機がないため
苦戦中。
0168デフォルトの名無しさんNGNG
>>167
素人的発想ですが、動かない場合のチップセットを聞いてみてはどうでしょう?
0169.mjt ◆.mjtH1cgf. NGNG
今のところ起動しない(Loading後リブートする)チップセット
・i815 ?
・440 BX/LX/ZX

起動しないCPU
・i386?

メモリ周りの処理がマズいのかもしれません。
と、言うのも、手元のPS55Noteや近くの440ZX機ではnewで作成したポインタ(の、メンバ)にアクセスした瞬間に再起動しているようです。

...ふと思ったのですが、CPU例外はNMIですよね。。。多分。
それなら、>>127もありえない話ではないのか...
とにかく、グラフィックコンソールを初期化する前に何らかの出力を得られるようにしたいところです。
# 最悪、シリアルポート経由ででも。。。
0170デフォルトの名無しさんNGNG
シリアル出力だけならout命令とウェイトだけでいけるよ。
本当はキューの空きチェックしないといけないんだけどね(笑
0171.mjt ◆.mjtH1cgf. NGNG
>>170
UARTは16bytesでしたっけ。>FIFO
落ちたときのダンプ吐くだけなら16bytesに収める(IP , フォールト番号ぐらいで必要充分)手も(w

メモリのAllocateはやっぱり正常終了している模様...
0172デフォルトの名無しさんNGNG
古いハードだと互換性のために初期状態ではA20ゲートが閉じているのかも
0173.mjt ◆.mjtH1cgf. NGNG
ttp://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/mona/mona_v1.0/src/secondboot.asm?rev=HEAD&content-type=text/vnd.viewcvs-markup
この辺でA20の制御はしてるようです。
方法が微妙な気がするので検証する価値は有るかもしれません。

メモリのキャッシュ周りはプロテクトモードの時はA20のことは気にしなくて良かったような。
(逆に、リアルモードでHMAを扱いたい場合が微妙。
0174デフォルトの名無しさんNGNG
>>173
いやA20はアドレス線の問題だからプロテクトモードでも影響するのでは
PS/2だとport0x92みたいだし…
0175超先生@∂/∂RR=∞ ◆leaf/RYZgY NGNG
>newで作成したポインタ(の、メンバ)にアクセス

<後ろ頭>-~ 激しくポインタがNULLの予感。
bssとかはclearしてあるんだろうか。
0176.mjt ◆.mjtH1cgf. NGNG

 F I X さ れ ま す た

A20Enableが不味かった模様。
0177.mjt ◆.mjtH1cgf. NGNG
>>174
「キャッシュ周りは」です。
CPUキャッシュはA20のマスクとはお構いなしに動作するので、その辺の考慮が必要になります。
A20のマスクはCPU外部でやってることです。

で、今度はIRQハンドラ周りがバグってます...

既知のバグ:
・FATブートが一部マシンで物凄く遅い(相性?
 +コンパイルオプションで切り替えたりとか出来るようにした方がいいかな...
・IRQハンドラが腐ってる(ひげぽん氏のコードでは未使用
0178.mjt ◆.mjtH1cgf. NGNG
>>175
幾つかデバッグルーチンを追加してみましたが、その辺は大丈夫な模様。
# というか、その辺の検証はFATブート以前にもやってたんです。。

とりあえず、インテルなチップセットな方はもう一度検証していただくことになりそうです。
テスト用のディスクイメージはひげぽん氏がそのうち上げると思います。。

さらにバグ発見:
・.mjtのテストコードのうち、CMOS読み出しによる拡張メモリ搭載量測定が不正確
 +実際のメモリ量 - 1 MBになるのは正常です。

ttp://okotama.org/osdev-temp/mona-boottest-030604l1.zip
取り急ぎ起動テスト版。起動するかどうかだけのテストです。
0179.mjt ◆.mjtH1cgf. NGNG
あー URL違うし...
ttp://okotama.org/osdev-temp/mona-boottest030604l1.zip
です。

いままで起動していた方もテストしてみてください...
HDDへのアクセスはしない「はず」です。
0180デフォルトの名無しさんNGNG
>>171
デバッグ出力に使うなら、きちんと作ったほうがいいよ。
そんなに難しくないし。

絶対メモリダンプが欲しくなる。

0181180NGNG
気がむいたので適当にでっちあげ。
全然確認していないので、使う前に確認して。

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
0182.mjt ◆.mjtH1cgf. NGNG
>>181

展開できないです。。
もしよろしければ、
ttp://wiki.osdev.info/index.php?%5B%5BMona%5D%5D
のページの「添付」リンクからアップロードしていただけないでしょうか?
お手数をかけて申し訳ないです。。
0183ひげぽん ◆Ngzcp/NZpA NGNG
>> mjtさん、その他協力者の皆様

平日にこんなにスレが進んでいてびっくりです。

> A20Enableが不味かった模様。

今度詳細を教えてくださいm(__)m
0184180NGNG
>>182
アップロードしました。ものすごーくいいかげんな説明も付けてあります。
煮るなり焼くなり御自由に。
0185超先生@∂/∂RR=∞ ◆leaf/RYZgY NGNG
> A20Enableが不味かった模様。

<後ろ頭>-~ 実際に有効になるまでタイムラグがある現象?
0186デフォルトの名無しさんNGNG
I/Oポートの連続書きこみにウエイトが必要だったのでは?
0187.mjt ◆.mjtH1cgf. NGNG
>>186
そう言う感じです。多分。

というか、正常に動作した機種はA20のマスクを実わしてないとか?
暇な人は実験してみよう!(逃

>>184
どうもです。実際に使うのはもうちょっと先ですが、デバグ用途以外に、もしかしたらSLIP実装しちゃうかもしれません。
# Winで使えるSLIPゲートが有るなら話は早いんですけど

早いところドライバインターフェース作って、スレのみんなでドライバ作ればドライバそろってウハウハかも。
0188jack-11NGNG
正常に動作ができない原因は、おそらくIA32MemoryManagerが原因です。
他の実験中に確認できました。
(MemoryManegarのどこが原因か、まだわかっていないですが)

GraphicalConsoleをやめて(new演算子をパイパス)VGAモードで動作が確認できました。(ThinkPad570)

0189デフォルトの名無しさんNGNG
電池と豆電球でPC作ればOK
0190デフォルトの名無しさんNGNG
レモンPCなら昔あったな
0191.mjt ◆.mjtH1cgf. NGNG
>>188
現在公開されているディスクイメージが正常起動するか確認していただけますか?
ttp://okotama.org/osdev-temp/mona-boottest030604l1.zip

現在のMonaはnewによりメモリを確保しない限り低位メモリ(1MB以下のメモリ)しかアクセスしないので
A20ラインの制御の問題は発現しません。
# 正確には、スタックにより1MB以上のメモリがアクセスされる可能性は有るはずですが。
0192jack-11NGNG
ThinkPad570で動作確認できました。<最新版
0193_NGNG
http://homepage.mac.com/hiroyuki43/jaz07.html
0194ひげぽん ◆Ngzcp/NZpA NGNG
皆様にご協力いただきまして、FDCドライバ、FAT12ドライバの動作実績も
少しずつ上がってきました。

ちょっと落ち着いたのでMonaのメモリマップを整理しました
いろいろと問題をご指摘しいただき整理して
以下のような感じになりました。
ttp://wiki.osdev.info/index.php?plugin=attach&openfile=mona_mmap.png&refer=%5B%5BMona%5D%5D
0195デフォルトの名無しさんNGNG
>>194
普通はピリオド付けるよ<ver.
0196デフォルトの名無しさんNGNG
>>19
おりば曰く:
> ◆ ソースを見せるなんて、裸を見せるくらい恥ずかしいかもしれない
こればからは著作権者の気持の問題だから、あまりいえない。
ただ、人がソースを見たくなるような機能をもつコードを書いたのなら、
それは十分に胸が張れることだと自分は思う。
それは自分が無から己の知と指を使って創造したものだ。
それだけで素晴らしいではないか。
そして、人に見せる事を前提に書いたコードはちゃんとする傾向があるので、
あとで自分でメンテするのも楽。
自分専用に書いた自分のコードほど読みにくいものはない。(経験談)
0197デフォルトの名無しさんNGNG
>早いところドライバインターフェース作って、スレのみんなでドライバ作ればドライバそろってウハウハかも。
電波爆発させても誰も相手にしない罠

なぜか!?
敢えて言おう、カスであると!
0198デフォルトの名無しさんNGNG
御大を向こうに電波飛ばしてる。。
ttp://slashdot.jp/comments.pl?sid=99036&cid=331122
0199デフォルトの名無しさんNGNG
>>198
宗教論争はあっちでやってもらえばいいかと。

>>194
もう少し、細かく書いたほうが資料として役に立つと思います。
他人にも自分にも。
0200ひげぽん ◆Ngzcp/NZpA NGNG
>>195
確かにおっしゃるとおりです。m(__)m
どうも細かいところに気がいかないw

>>199
> もう少し、細かく書いたほうが資料として役に立つと思います。
> 他人にも自分にも。

なるほどどの程度細かく書いたらよいのでしょうか。
一応今回メモリマップを書き直したのは、PAGING導入を見越して
再確認がしたかったからです。
0201ひげぽん ◆Ngzcp/NZpA NGNG
週末の成果

今まで特に意識することなく、動いているので放っておかれていたポイント

・GDTでのセグメント設定
・IDTの設定とメモリ上の位置

をそれぞれ改善。(というか、きちんと書き直すことでより理解を深める。)

以下は、メモリマップの更新版です。
ttp://wiki.osdev.info/index.php?plugin=attach&openfile=mona_mmap1.5.png&refer=%5B%5BMona%5D%5D
0202デフォルトの名無しさんNGNG
>>201
あくまで、個人的な意見ですが、
たとえばGDT、IDTとかは、カーネル起動後には確保されてるわけだし、
BUFFだけは別に書いたほうがいいかも。
Memory for Kernelはあんまりかなぁと思いました。

あと、仮想メモリを使うつもりなら、仮想空間と実空間を書いたほうがいいかも。
空間内用が同じでも、同じものを二つ並べるだけで違ってくると思います。
同じって言葉で書くだけでもいいけど。
0203デフォルトの名無しさんNGNG
もうちょっとマメになれ>okuoku
L氏は貴様以上の電波だったが貴様よりマメだったぞ
0204デフォルトの名無しさんNGNG
>>203
お前さ、OSASKスレの方でもいろんな人を叩いてるよな

0205デフォルトの名無しさんNGNG
売名行為で自作自演するスレはここでつか?
0206デフォルトの名無しさんNGNG
よし、俺も名前売るか
0207デフォルトの名無しさんNGNG
>>206
おまえのスマイルなど0円さ....
0208デフォルトの名無しさんNGNG
>>207
かわいいねーちゃんのスマイルでも0円だからなw
0209デフォルトの名無しさんNGNG
>>206
個人情報の売買ビジネスすか? Y!BBが始めたみたいだからブローカーになるとかw
0210デフォルトの名無しさんNGNG
カーネルじゃなくて、javaや、.net、tronみたいな環境を作らない?
で、主要アプリがこっちに移植されたら下のOS(windows)を
さんざん姦った後の女のように捨てる。

javaは理想は高いが、できあがるアプリがへぼいし、
.netはどうせwinから出ないし、
tronは相手にされてない。

とりあえずapiはjava、.netあたりのパクりで。
0211デフォルトの名無しさんNGNG
スマイルの価格暴落は、マクロナルドの招いた大失態。
おかげで、PS2発売後のDVDプレイヤーのように、
業界はみな値段を下げざるを得なくなったからな。
0212デフォルトの名無しさんNGNG
>>210
激しく同意、つーか、実はトレンド(w

ristiaっつってmegがそれやろうとしたんだよな
Lに潰されたけどnwsosでやろうとした香具師もいた
わたもちもJavaエミュとか作って似た方向を考えてる

ところでgcjって使ったことある?>ひげぽん&わたもち
カーネル開発に使うにはlibgcj依存が問題になりそうだが
STLの時みたいなハックで解決できると思う
そしたらJavaでカーネル書けるようになる
どーせひげぽんもわたもちもJava厨なんだから、
C/C++なんかよりいいでしょ(ゲラ
0213デフォルトの名無しさんNGNG
UNIX系OSはたくさんあるがGUIはXで実質的統一されている。
これはつまり、カーネルが乱立していても、
GUIは協業できることを示している。

ディストリビューションとかそういう問題じゃないんだよ>わたもち
0214デフォルトの名無しさんNGNG
>>211
スマイルなんざどーでもいい
中田氏の価格破壊キボンヌ
0215デフォルトの名無しさんNGNG
>>214
西川口逝け
0216デフォルトの名無しさんNGNG
>>215
ゴムだろ
0217ひげぽん ◆Ngzcp/NZpA NGNG
>>202
貴重なご意見ありがとうございます。
仮想メモリを実装した際にメモリマップを更新いたします。

>>212
gcjですか、情報ありがとうございます。
higeposを開発始めた当初は、今よりもっと周りが見えていなかったので
javaでOS開発できるならしたいと思っていましたが。

今では考えを改めました、OSのカーネル部分はjavaで開発するメリットよりも
javaで開発するための環境づくりやつじつまあわせにかかるコストのデメリットのほうが
大きいと考えています。

なので私は、実行環境としてのjavaのようなものをOSに載せるほうに
今は興味があります。


全然関係ないですが、↓こんなすごい人がいます。
ttp://wiki.osdev.info/index.php?AnotherMona
0218デフォルトの名無しさんNGNG
>>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を移植する必要がある
0219デフォルトの名無しさんNGNG
gcjについては、
Cygwinでの/usr/include/java以下を見てみるといいよ
きっと萌えるから(w

これはCNIっていうJNIの独自版みたいなやつで
JavaをC++に自動でマップしてるヘッダ
詳しいことは↓でも見てちょ
ttp://page.freett.com/gikob/gcj/cni.html
0220デフォルトの名無しさんNGNG
穴モナ期待あげ
0221デフォルトの名無しさんNGNG
>>210
Monoプロジェクトって.netクローンじゃなかった?

かなりまえに、Javaで書かれたOSがあったと思う。
Sunがやってたような・・・でも、当時の技術だと、遅すぎて使い物にならなかったらしい。

Monaなら、(コンパクトなカーネル+Java(?)VM)+Java(?)で書いたサブシステム
とかのほうがいいのかも。
0222デフォルトの名無しさんNGNG
1からOSを作成するのでなく、既存OS上に仮想OSを作ろうかと。
新OSには、何が必要で、何が必要でないか意見ください。

今考えてること
・バイナリのクラスをリンクできる
・プロセス間通信が簡単
・OS非依存にするための最低の機能だけ提供
・仮想OSのバイナリは、そのOSのものでいい(ソースで互換をとる)
・「C:」とかのドライブのほかにUNIXっぽいファイルシステムもつかえる

・・・ほとんどActiveX?

>>212
すでにいろいろあるんだなあ。
ristiaってのはmegともに消えた?
0223ひげぽん ◆Ngzcp/NZpA NGNG
今日の成果
ページングのテストをしていました。
Monaでは0〜4MBのメモリしか使用していないので

0〜4MBで、論理ページ=物理ページ
と、ページテーブルを設定しました。

そして4MB以上はページテーブルを割り当てていない状態を作って
ページフォルトハンドラの実験等を行いました。
0224デフォルトの名無しさんNGNG
>>222
VMとか大げさなことしなくても、たとえばただのライブラリのQtもそれを狙ってんだよ。
0225デフォルトの名無しさんNGNG
>>218-219
すげーなgcj!!
びっくりした!!
Java厨になりそうだよ(w
0226デフォルトの名無しさんNGNG
>>224
COMみたいな規格を考えてたんだけど、
たしかに単にライブラリでもいいかな。
でもwindowsではマルチプラットフォームのメジャーなライブラリってなさそうだし。

特殊なハードやOSを必要としないアプリ(ブラウザやメールとか)は、
OSに依存しないようになれば、ネタOSも使えるようになるのにな。w
0227還す者 ◆AEqcy/sQU6 NGNG
                         ,.._
                       ∈ ゚ )
                        | |
                       (゚Д゚ )''""~"''彡,,
                      ⊂;;⊂'';;;,,,.,.,.,.,.,;;つ
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        プカプカ
         ,.._
       ∈ ゚ )
         | |        .  .
 保守>  (゚Д゚ )''""~"''彡,,゜。.゚ :
        U;;U'';;;,,,.,.,.,.,.,;;つ )) ) ) ) ) ) ) ) ) )
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               パシャパシャ
0228デフォルトの名無しさんNGNG
>>220
> 穴モナ

これいいかも
0229デフォルトの名無しさんNGNG
.∧_∧
(´∀`) <およびかい?
~~~~~~~~
0230デフォルトの名無しさんNGNG
良スレあげ
0231ひげぽん ◆Ngzcp/NZpA NGNG
久しぶりの書き込みです。

Monaで次に何を実装しようかと、考え続ける日々です。
そろそろプロセスの概念を決めるのが良いのかな。
0232デフォルトの名無しさんNGNG
過去スレ漁ってたんだけど、ひげぽんがスレたててからもう一年経ってるんだね
これからも頑張って下さいね。( ´∀` )
漏れは今、monaのブート部分みて勉強してます
0233デフォルトの名無しさんNGNG
をー、更新無くて心配していたよー。
0234デフォルトの名無しさんNGNG
基本的に下げ進行でいきましょう。
0235デフォルトの名無しさんNGNG
osdev-jの:
http://osdev-j.sourceforge.jp/pukiwikiacc.php?AnotherMona
にある、AnotherMonaの特徴に「プロセス空間の分離」とあるけど、
ソース見る限り、カーネル内のタスクは、cr3(page dir base)も固定、
セグメントも共通になっているので、分離されてないと思う。

また、int 22hハンドラを見ると、全てレベル0で走行するので、保護でき
てない予感。

サブシステムをタスクにする意味って、保護しないなら何かあるの?
今後修正する予定なのかな?
0236235NGNG
各カーネル内タスクは、CS,SSのセレクタ値は一応異なった値を持たせてあるけど、
ベースとリミットが全く同じなので全く保護されていない。
また、システムコールのfork()をみると、cs,ss,dsのdpl=0,rpl=0なので、
やはりレベル0のまま。

マイクロカーネルの問題の焦点は、異なるメモリ空間でのデータの参照や
レベル間の遷移を如何に高速に出来るかという点にある。
そこが未だに解決されてないマイクロカーネルの弱点で、モノリシックカーネル
に対する最大の弱み。

また、逆に今のようにシステムタスク間で、保護壁がないならば、マイクロ
カーネルの目的である安定性は達成できない。

マイクロカーネルが、出現時期は新しくとも、良い形態とは限らない由縁。
0237デフォルトの名無しさんNGNG
自分で作りもしないくせに未完成のものに何文句つけてんだ?ん?
0238デフォルトの名無しさんNGNG
いや、少なくとも自分には一つ勉強になる話だった。
マイクロカーネルは優位性が薄いってよく言うけど
具体的に何がネックなのか知らなかったから。
ここはみんなの勉強場所なんだからそう突っ掛かるもんでもないでしょ。
0239デフォルトの名無しさんNGNG
>>235-236
マジで参考になった。
0240デフォルトの名無しさんNGNG
>>235-239
2−3日前ぐらいにL氏が「Minixのマイクロカーネル構成は変」
と言ってた内容と等価なハナシで,それを具体的な内容で説明してくれてる
ので折れも参考になった。

 ひげぽんやアナモナ作者さんもタネンバウム先生の本から学んで
いて,現段階ではMinixの弱点(or手抜き)も とりあえずそのまま
持ち込んで,後で改良の予定なのかな?
0241デフォルトの名無しさんNGNG
AnotherMonaのソースはMinixと関数名や、switch()文まで同じ箇所がある。
作ったと言うより必要な部分だけ取り出しただけだったり、、。
0242デフォルトの名無しさんNGNG
>>241
CPP版Minixらしいよ
0243デフォルトの名無しさんNGNG
age
0244デフォルトの名無しさんNGNG
>>235
よくある話だが、開発者にとってのメリット(?)にコード管理が楽になった気がすると言うものがある。
この場合、コード的には、タスクとしてカーネルから分離しちゃうから。

そして、使用者には何のメリットにもならない事が多い。
0245デフォルトの名無しさんNGNG
AnotherMona に粘着現れる。開発者の説明を待てないヤシはカエレ!
0246デフォルトの名無しさんNGNG
別に粘着というほどのもんでもないような
まだ見てないけどsource0601.zipで解決したのかな
0247デフォルトの名無しさんNGNG
Minixはオープンソースだし(BSDライセンスだったっけ?)
そこから必要な部分を抜き出し,CPPに書き換えてMona風に実装
ということを,もしアナモナ作者さんがしてても何の問題もないし,

そういうアプローチを手法の現場を見せてもらえるとしたら,
 少なくとも折れにはとても興味深い(勉強になりそう)

作者さんも慌てて作り直す必要はないと思う。
  てか,作者さんの解説が出てくることを期待-!

,,,,,、これって粘着なんですかねぇ?
0248デフォルトの名無しさんNGNG
MiniMonaでつか。
0249デフォルトの名無しさんNGNG
MonaOSは常用に耐え得るOSを目指してるの?それともただの道楽?素朴な疑問
0250デフォルトの名無しさんNGNG
>>249は常用に耐え得る人間を目指してるの?それともただの道楽?素朴な疑問
0251デフォルトの名無しさんNGNG
オウム返ししか能の無い>>250よりは実用に耐え得る人間になりたいね
0252デフォルトの名無しさんNGNG
って言うか常用に耐え得る人間って何よ。
変な奴等だ。
0253デフォルトの名無しさんNGNG
>>249
仮にも、人様のやってることを「ただの道楽」と言えるほど、おまえはえらいのか ?

2ch で、言葉の使い方にいちゃもんつけたくないけど、ここは結構良スレだから、荒らすのはやめてくれ。

おまえは、荒らしじゃないと言うかもしれないけど、>>250-252 なんかが来るきっかけになりうると言うことを考えてみてくれ。
0254デフォルトの名無しさんNGNG
>>253
その書き方で人にどうこう言えるのかい?あんたは
0255ななみたん@誕生日NGNG
おまいらケンカイクナイょぅ
ママーリしるヽ(`ー´)ノ ⌒ ○
0256デフォルトの名無しさんNGNG
あんまり動きが無いと不安だから保守してるだけっすよ。
0257249NGNG
TRONのように積極的に普及させていきたいのか、それとも単に自己満足で作ってるのかと
聞きたかっただけなんだけど。それもいかんのかね?最近の2chは。
俺からすると>>253が荒らそうとしてるように見えてしまうんだけど
0258デフォルトの名無しさんNGNG
>>257
実験と勉強かなあ。
普及目的って訳じゃないと思う。
まあ誰か曰くオナニーからセクースが生まれる事もあるらしいから。
0259デフォルトの名無しさんNGNG
OS=オナーニセクス
0260ひげぽん ◆Ngzcp/NZpA NGNG
久しぶりの書き込みな気がしますね。

Monaにおけるプロセスの定義とそのインターフェースおよび実装に
ついて非常にまったりと考えていました。(多忙につき・・・)

結局はボツになりましたが・・・
以下のような感じに考えていました。

Process#init(), destroy()はオーバーライドしてもいいよ
Process#execute() = プロセスの実体で必ずオーバーライドしてね。

で、Process#main()がその呼び出し順序を保証すると。

これに加えて、Process生成の際のnew演算子をオーバーライドしておけば
幸せかもというアイデアでした。

ただ、重大な欠点がありまして

1.プロセスを1つごとに違うProcess型が必要(継承が必要)

  ⇒KernelProcessだけは、継承による型付けが必要だが
    UserProcessはsetEntryPointを用意して継承を必要なくすので一応解決
    
2.クラスのメンバ変数はstaticでない限り関数ポインタを取得できない(C++の仕様?)
  ⇒mainのアドレスをeipにセットできない。
  
  考えてみればあたりまえですね。。。。
  
  かといってstaticにしてしまうと、全てのインスタンスに共通なものになって都合が悪い。。。
  
  というような、堂々巡りをしつつ改良しています。
0261ひげぽん ◆Ngzcp/NZpA NGNG
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;
};
0262ひげぽん ◆Ngzcp/NZpA NGNG
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;
}
0263デフォルトの名無しさんNGNG
>>257
あなたがどう言い訳しようとしても、>>250-252 見たいな書き込み誘発しているのは事実。

なんでそうなるかを考えたほうがいい。
0264249NGNG
OS作りの活動をされている方、他このスレを読んでいる全ての方々、申し訳ありませんでした。
まさか>>253=>>263のような粘着厨を呼び寄せる結果となるとは思っていませんでしたので…

自分の書き込む前にはその書き込みによってどのような類の人間が呼び寄せられ・その人間の粘着により
どれほどスレを真面目に読んでいる方々に不快な思いをさせてしまうのかを重々考えねばならないと反省しております。
0265デフォルトの名無しさんNGNG
>>>257
>あなたがどう言い訳しようとしても、>>250-252 見たいな書き込みや
>>>253-254 >>263-264 見たいな書き込み誘発しているのは事実。
>
>なんでそうなるかを考えたほうがいい。
>
>
>って訳で、まあ流しとけや >263

>>264
ってやろうとしたら先越されちまったい。
あんま気にすんなや。
ってえか流しとこう。
0266jack-11NGNG
ANOMONA作者です。
ご指摘の通り現在のバージョンは殆どMINIXをCPPに書き換えただけのものです。
いわば、実験段階の前準備というところでしょうか。
現在の進行状況は、FSのマルチスレッド化をしているところです。
最終的にはメッセージ機構も含めてカーネルの基本部分も書き換える予定ですが、素人一人ではどうなるか。
まぁ、気長に見守って下さい。
0267デフォルトの名無しさんNGNG
>>264
> 粘着厨を呼び寄せる結果となるとは思っていませんでしたので…

全然反省してないやん。
0268デフォルトの名無しさんNGNG
>>266
楽しみに待ってます!
0269デフォルトの名無しさんNGNG
>>266
FSってファイルシステムのことですよね?
ファイルシステムのマルチスレッド化って、
Apacheみたいなものをイメージすればいいんでしょうか?
0270jack-11NGNG
>>269
アパッチのソースは見たことないので、アパッチのイメージとはどういうものかわかりませんが、
FSのマルチスレッド化を簡単に言うと、
1)ユーザープロセスA,Bがある。
2)Aがopen(file1), Bがopen(file2)のシステムコールをFSに発行する。
を前提として、
現在の処理方法では、Aの処理が終わるまで、Bの処理を受け付けません。
が、マルチスレッド化をすれば、Aの処理途中でも、Bの処理を受付、場合によってはBの方が早く終わる場合もあります。
FSのメインは単にメッセージを受け取るだけ、あとはFSのクローンが共有データのロックをしながら処理できるところまでとことんやるというのが、マルチスレッド化です。
もちろん、これはFSに限りません。現在は実験段階ですので、FSでやっていますが。
0271デフォルトの名無しさんNGNG
ホントに作ってるYO……。
0272デフォルトの名無しさんNGNG
>>270
Apacheの動作を大雑把に言うと、親プロセスがポート80にきた要求を
複数存在する子プロセスの暇なやつに処理させる。って感じ。(大雑把すぎたか・・・)

デバイスがひとつだと、後発の処理は待たされる。って考えであってますかね?
それとも、多重に要求を受け取り、IOスケジューリングをするとか考えているのでしょうか?

もしかすると、Openシステムコールの処理実態であるスレッドAがあって、
スレッドAがスリープするとIOも一時休止するって感じでしょうか?
FSスレッドのスケジューリング=IOスケジューリング、と考えたらいい?
0273272NGNG
>>270
"multithreaded filesystem" でぐぐってみた。
昔からあるんですな。勉強不足でした。
0274デフォルトの名無しさんNGNG
>>269
>>270
もしもし?マルチプロセスとマルチスレッドの違いくらいわかってるよね?
わかってないとしたらスゲー不安なんだが・・・。
0275デフォルトの名無しさんNGNG
おおざっぱに言うとmemoryが共有されるか否かってとこかね
0276one of allNGNG
マルチプロセス
プロセスを保存できるだけで、スレッドは1つしかない

マルチスレッド
スレッドが幾つかあるが、プロセスは1つしかない
0277269=272NGNG
>>274 >>276
スレッドの定義は製作者によりばらばらなので、
このスレの前の方では適当に定義すればいいって流れだったような気がする。

Linuxでは主に プロセス≒スレッド 的でしょ。クローンシステムコールも変わってきてるし、
pthreadの完全(?)な実装も進んではいるみたいだけどね。
Solarisも8と9では実装が大幅に変わったでしょ。ハイブリッドじゃなくなった。
ジョブ、タスク、プロセス、スレッド、ファイバなんて、OSの作り方によっては、
全部同じものとして、実装することも可能。そんなことしないと思うけど。

Apacheの話は、あくまでも、イメージのたとえで出しました。
実装自体は、ユーザスレッドなのかカーネルスレッドなのか、
子プロセスなのか知らない。(語句の突っ込みは勘弁)

とまぁ、素人知識なので、間違っていたらスマン。
0278デフォルトの名無しさんNGNG
>>277
わかってるみたいで安心した。
でもね、プロセスとスレッドの二つの言葉を同時に併用してる以上、明確な区別は
付けておく方が混乱を防げると思うのですが、いかがでしょう?
0279デフォルトの名無しさんNGNG
>>278
混乱したい奴はしておけ、とか
混乱しそうになったら誰かが防いでくれるさ、とか

SymbianOSやEPOCのように、オブジェクト指向ばりばりなOSになりますように。
0280デフォルトの名無しさんNGNG
ひげぽん、"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 \
0281280NGNG
dependenciesは自動生成やね。すまそ。
あとcore.asmという名前は他のに変えられないですかね?kcore.asmとかkernelcore.asmとかmonacore.asmとか・・・。
某ツールを使ったらメモリダンプのコアファイルと間違えてソースを消されちゃったから。
これはどうでもいいか。
0282デフォルトの名無しさんNGNG
ひどいツールもあるもんだな・・・
0283デフォルトの名無しさんNGNG
>>281
凄げぇツールだ……。良ければ、名前を教えてくれ。
0284ひげぽんNGNG
>>280
ご指摘ありがとうございます。
Semaphoreの件は対応いたします。

ただ大変申し訳ないのですが、現在諸事情により
cvs commitできない環境におりますので
しばらくはこのままの状態が続きます。
0285山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0286デフォルトの名無しさんNGNG
| 悲しいときー! |     |レスがついたと思ったら山崎渉だったときー!|
   ̄ ̄ ̄∨ ̄ ̄ ̄      ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧∧             ∧_∧
    ( ゚Д゚)            ( ´д`)
   ⊂○ ○ヽ           ||””””””””””|
     |  | ̄          ( ) 山崎渉(^^)( )
     / /\\            .||_____|
    / /  > /            / /  ) )
   (_)  ��>          (_) (_)
0287デフォルトの名無しさんNGNG
ほしゅ
0288あぼーんNGNG
あぼーん
0289_NGNG
http://homepage.mac.com/hiroyuki44/
0290デフォルトの名無しさんNGNG
さいきん超先生みないね
0291超先生@divRR=∞ ◆leaf/RYZgY NGNG
>-~ いるけどネタがないんだよね。
0292デフォルトの名無しさんNGNG
どうすればいいんだ
0293ひげぽん ◆Ngzcp/NZpA NGNG
ユーザーモードプロセスの実装の準備中

プロセススイッチはiretdを使用しているのだが

特権レベル0⇒3の場合のCPUの動作の自分の理解がただしいか
どうかがわからないので調べ中

iretd
  現在のスタックから eflags, eip, csの取り出し
  cs切り替える際に特権レベル0⇒3なので
  現在のスタックに格納されているss:espをpopしてセットする


これが間違っている可能性が捨てきれないなあ。
intelのマニュアルを熟読せねば
0294デフォルトの名無しさんNGNG
レベルの低いセグメントにfar-retまたはiretする時は戻りレジスタをpopした後常にスタックにあるss:espもpopするです。
ユーザーモードのプログラムを呼び出す時にこの機能を利用してスタックにss:espとcs:eipをpushしてiretするやり方があるです。
某OSも最近までこの方法を使ってました。( ̄ー ̄)
0295ひげぽん ◆Ngzcp/NZpA NGNG
>>294さん
詳しいご解説ありがとうございます。
私も同じように理解して
ttp://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/mona/mona_v1.0/src/core.asm?rev=1.11&content-type=text/vnd.viewcvs-markup
_arch_switch_process: 同レベル用
_arch_switch_process_to_user_mode: レベル低いほうへ遷移用

を作成しましたがうまくいっていません。

ひょっとしてeflagsはpushしなくていいとかではないですよね。
うーむ。
0296ひげぽん ◆Ngzcp/NZpA NGNG
久しぶりにbochsで実験したところ
iret時に
00015320592i[CPU ] (mch) iret: Return with DPL != RPL. #GP(selector)

とでていた。
これがてかがりになりそう?
0297デフォルトの名無しさんNGNG
tssのリング0スタックは適切に設定してますか?
0298デフォルトの名無しさんNGNG
それはセグメントのDPL(ディスクリプタで指定してるレベル)とRPL(セレクタの下位2ビットで指定するレベル)が一致していないエラーかな?
0299ひげぽん ◆Ngzcp/NZpA NGNG
>>297
tssのリング0スタックは適切に設定してますか?
はい。
設定しています。

ということは、ユーザー用のコードセグメントのセレクタ値0x28が
間違っているということでしょうか。
試してみます。
0300ひげぽん ◆Ngzcp/NZpA NGNG
ユーザーモードセレクタ値を0x28 | 0x3 = 0x2Bとしたところ

>>PANIC<< iret: SS.rpl != CS.rpl

となりました。
現在調査中
0301ひげぽん ◆Ngzcp/NZpA NGNG
特権レベル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が違うと起こられているっぽい。
0302デフォルトの名無しさんNGNG
csもssも両方dpl3,rpl3にすればok
0303ひげぽん ◆Ngzcp/NZpA NGNG
>>302さん
アドバイスありがとうございます。
現行TSSのss0は、dpl0ですが
rpl葉、あえてかえる必要はあるのでしょうか?

タイマ割り込み時にdpl3のCSはどうなるかが
分かっていないようです。
0304デフォルトの名無しさんNGNG
特権命令を呼び出す部分のコードはdpl=rpl=0、通常のアプリケーションプログラムコードはdpl=rpl=3になるように設計汁。
割り込みはコンテキスト切り替えとかが絡むのでdpl=rpl=0のセグメントで動かすのが普通、かな?
0305デフォルトの名無しさんNGNG
って言ってる事が違うかも・・・

割り込みでリング0に移行する時は割り込みゲートでdpl=rpl=0のcsをロードし、リングが変わるのでtssからdpl=rpl=0のssとespをロードするです。
0306デフォルトの名無しさんNGNG
あと、割り込みゲート自体のdplはハードウェア割り込みや例外のような直接呼び出さないものはdpl0
システムコール等のリング3から直接呼び出す割り込みはdpl3にするのが普通です。
0307ひげぽん ◆Ngzcp/NZpA NGNG
プロセススイッチ開始前
  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がこけているような
印象です。 
0308デフォルトの名無しさんNGNG
dsとesもdpl=rpl=3のセグメントにしておかないとメモリアクセスでこけるよ
0309デフォルトの名無しさんNGNG
csは割り込みゲートで設定したセレクタが入るので0x08を入れておけばいいんでない?

しかし携帯はきついw
そろそろ落ちる
0310デフォルトの名無しさんNGNG
まとめ

最初
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をあえて別のセレクタにする意味はあまりないです。
んじゃ落ちです。
0311ひげぽん ◆Ngzcp/NZpA NGNG
いろいろとありがとうございます。

ユーザーモードの実験に成功した模様です。
割り込み時に怒られていた原因は
割り込みのタイミングで、プロセスのレジスタやらセグメントを保存していたのですが
SSは、割り込みの開始とともにカーネル用に切り替わっていました。

それを無理やりユーザー用スタックセグメントとして
使用して怒られていました。
0312某携帯厨NGNG
ひげぽんもガンガレ!!
0313ひげぽん ◆Ngzcp/NZpA NGNG
某携帯厨さん

携帯からのご支援ありがとうございましたw
おかげさまで、VirtualPC, bochs,実機での動作確認が出来ました。

この実験を参考に実際にコードを整理していこうと思い案す。
0314ひげぽん ◆Ngzcp/NZpA NGNG
新規プロセスの作成はこんな感じです。

  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);
0315ひげぽん ◆Ngzcp/NZpA NGNG
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/
0316ひげぽん ◆Ngzcp/NZpA NGNG
今後やっていきたいこと。

・プロセスのsleep/wakeupの実装

・スケジューラーをもう少しまともに。

・ページディレクトリの切り替えによるプロセス空間の分離。

・オンデマンドページング

・プロセス間のメッセージ通信

・シグナル(のようなもの)

・ファイルシステムのユーザーモード化
0317デフォルトの名無しさんNGNG
あ・・・そう。
0318ひげぽん ◆Ngzcp/NZpA NGNG
今日は久々にMonaの開発に半日も時間をとることが出来たので
いろいろと進展がありました。

ご支援・ご指導くださった方々に深く感謝いたします。

今後もゆっくりペースではありますが、続けていきますので
今後ともよろしくお願いいたします。m(__)m
0319ひげぽん ◆Ngzcp/NZpA NGNG
今日の成果

sleep(ProcessInfo*, dword tick)を作成しました。
プロセスは、tick(tick)だけsleepすることが出来るようになりました。

tick経過後以降にSchedulerによってwakeupされます。

※システムコール化されていないので現時点ではUserProcessはsleepできません。

課題

最新版をビルドしていただけると分かるのですが

wakeupタイミングが複数プロセスで重なったときどうするか。

各プロセスのsleep/wakeupのタイミングで、dispatchキューにいるのに
いつまでたってもCPUタイムをもらえないものがいる。

Semaphore関連でも同様

などスケジューラー周りで問題があります。

他のOSのスケジューラーがどのような方法を採用しているか
興味のあるところです。
0320ひげぽん ◆Ngzcp/NZpA NGNG
>各プロセスのsleep/wakeupのタイミングで、dispatchキューにいるのに
>いつまでたってもCPUタイムをもらえないものがいる。

これは、単純なプログラムミスでした。
0321ひげぽん ◆Ngzcp/NZpA NGNG
プロセススケジューラおよびシステムコールについていろいろ考えているのですが

2点分からないことがあります、ご存知の方がいらっしゃいましたら
アドバイスをお願いいたします。


(1)プロセススイッチのコスト計測

        Monaのプロセススイッチにかかっている時間(コスト)を計測する良い方法はないでしょうか。

        正確に言うならば、現状Monaはタイマ割り込みの度にプロセススイッチを行っているので
        タイマ割り込みの開始から、iretまでの時間を計測したいです。

        計測の精度は、タイマ割り込みの間隔と比較できる程度の精度が欲しいです。

        プロセススイッチにかかかる時間、タイマ割り込み間隔、プロセスに与えられるCPU時間を
        比較しながらスケジューラを作成したいというのが動機です。

(2)システムコール時に問題なく使えるレジスタについて

        システムコール時に、システムコールタイプや、システムコール引数を
        レジスタにセットしてintしようと考えています。

        Monaは、C++で書かれていてgccでコンパイルされます。
        このときに安全に使用できるレジスタを知りたいのですがどのように調べればよいでしょうか。

        最悪の場合gccの吐くアセンブラコードの統計を取れば何とかなるとは思うのですが。。。
0322デフォルトの名無しさんNGNG
Linuxのプロセススケジューラはお勧めできない。
gotoが読みづらい。
でも、2.5あたりでスケジューラに大きく手が入ってたから
2.6のtest版とかを見てみるのもいいのかも。
0323デフォルトの名無しさんNGNG
相変わらずUzeeeeeeeeeeeeeeeeeeeeeeeeeeスレだな
0324デフォルトの名無しさんNGNG
>>323
お前が相変わらずうざいだけに1票
0325デフォルトの名無しさんNGNG
>>323
ふっふっふっふっふ、苦しめ苦しめw
0326デフォルトの名無しさんNGNG
>>321
(1)
TSC使うのが一番簡単じゃないかねえ。
精度も問題ないし。

(2)
ebx,esi,edi,ebpは関数を呼んでも壊れない事が保証されてる。
gccのソースあるなら、gcc/config/i386/i386.hのCALL_USED_REGISTERがそれだ。

でも、インラインアセンブラ使うなら、全部のレジスタをclobberしてしまえば、
なにも考えなくていいような気もする。
0327デフォルトの名無しさんNGNG
横スレで申し訳ないのですが、ひげぽんさん、わたもちさんはやっぱり
プログラマとして何年もバリバリやられてきた方たちなのでしょうか?
なんだか「OSの開発」と聞くと、ハッカーの様な人物を思い浮かべます。
0328デフォルトの名無しさんNGNG
OSの開発いいなぁー
俺もいつかは…
0329デフォルトの名無しさんNGNG
ひげぽんはこのスレ作ってから勉強してここまできた奴だぞー。
part2から見てみなー。
0330ひげぽん ◆Ngzcp/NZpA NGNG
>>326さん

アドバイスありがとうございます。

>TSC使うのが一番簡単じゃないかねえ。

RDTSC命令が使えますね。求めていたものが見つかりました。

(2)
>ebx,esi,edi,ebpは関数を呼んでも壊れない事が保証されてる。
>gccのソースあるなら、gcc/config/i386/i386.hのCALL_USED_REGISTERがそれだ。

ありがとうございます。きちんと規定されているようなので
安心して使用できそうです。
0331ひげぽん ◆Ngzcp/NZpA NGNG
タイマ割り込みとスケジューラの計測をしてみました。

タイマ割り込み間隔:スケジューラ=0x2800000:0x6000

タイマ割り込み 10msのはずなので(どこで設定しているんだろう・・・)
スケジューラ 6nsほどということになります。
0332ひげぽん ◆Ngzcp/NZpA NGNG
今日の作業

システムコールの実装をしているところで
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許可あたりだと思うので現在調査中です。
0333デフォルトの名無しさんNGNG
>>331
Pentium4とPentium3以前では、結果が大きく変わります。
アーキテクチャが大きく変わって、P4はパイプライン20段+α、P3は10段+α。(だった気がする)
単純に考えると、パイプラインストールのコストの違いにより、モード切替コストが違います。
(詳細に述べると少し違いますが、あくまでも単純にってことで勘弁)
P4は動作クロックが大きく単位時間当たりの命令実行数が多いので相対的にモード切替コストがでかいです。
この辺は、nsec msec の世界だから、とりあえず気にしないってのもあり。

インテルアーキテクチャはマイクロコードで実行なので、
RDTSC命令の前(前後?)にシリアル化命令(?)ってのを入れると、より正確に計れるそうです。
RDTSC命令やシリアル化命令によって、動作が変わって正確じゃなくなりますけどね。
0334デフォルトの名無しさんNGNG
モード切替オーバーヘッド軽減のためにsysenter命令使いませうヽ(`ー´)ノ
0335デフォルトの名無しさんNGNG
VirtualPCやBochsでsysenterは、実装されてるのかな?
他にはAthlonやDuronやS3なども。

まぁ、Monaはマイクロカーネルなんだから、モード切替コストをおさえるために、
P4向けにはsysenterが必要になるでしょうね。
0336デフォルトの名無しさんNGNG
マイクロカーネルは逆にモード切替をほとんどしないと思うんだけど・・・
0337デフォルトの名無しさんNGNG
IPCをring3で出来ればそうなるねえ。
出来るかなぁ。
0338ひげぽん ◆Ngzcp/NZpA NGNG
>>333さん
> RDTSC命令の前(前後?)にシリアル化命令(?)ってのを入れると、より正確に計れるそうです。
> RDTSC命令やシリアル化命令によって、動作が変わって正確じゃなくなりますけどね。

情報ありがとうございます。

>>334さん

> モード切替オーバーヘッド軽減のためにsysenter命令使いませうヽ(`ー´)ノ

インテルのマニュアルで調べました。
おもしろいですね。まさにシステムコール用ですね。
サポートしているCPUがわりと限定されてしまいそうなのが残念です。
0339デフォルトの名無しさんNGNG
これから出るcpuはsysenter命令に対応してるんだし
将来を考えるとsysenter命令に対応しておいた方が得策だと思う
sysenter命令用に設計したAPIはstubを細工すれば非対応cpuでも
int命令等で呼び出せるけど逆は難しい

ちなみにamdにはsyscallとゆう別の似た命令があるが
思想の違いからか動作が微妙に違う
0340デフォルトの名無しさんNGNG
>>336
逆にマイクロカーネルこそモード切替が増えると思ってたけど、勘違いか。

Monaアプリってどうやって作るんだろう。
やっぱ、カーネル同様C++なんだろうか。
0341 NGNG
        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)<  APIまだぁ?
             \_/⊂ ⊂_)_ \_______
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |            .|/
0342デフォルトの名無しさんNGNG
>>340
モノリシックだとAPI処理で必ずカーネルモードに移行する
マイクロはどうしても必要な時以外ユーザーモードで処理する
マイクロでカーネルモードを頻繁に呼び出すのは設計に問題がある
0343デフォルトの名無しさんNGNG
>>342
OSサーバをユーザプロセスとして動かしているわけだから、プロセス切替が起こり
当然モード切替も起こると、思っていたのですが、これは古い実装?
MacOSXがBSDサブシステムをカーネルにくっつけたのもこの辺が理由かと思ってたのですが。

ちなみに、APIといっても、カーネルまで達せず、ライブラリで処理して返すものもありますよ。
MonaのAPIは、MONAPIとか呼ばれるんだろうか・・・
0344ひげぽん ◆Ngzcp/NZpA NGNG
>>339
> これから出るcpuはsysenter命令に対応してるんだし
> 将来を考えるとsysenter命令に対応しておいた方が得策だと思う

>>340
なるほど。確かにおっしゃる通りなのですが
我が家にはAMDマシンしかないというわながあるんですw

> Monaアプリってどうやって作るんだろう。
> やっぱ、カーネル同様C++なんだろうか。

予想ですが、アプリはC, C++どちらでもかけると思います。
ただドライバは、C++でインターフェースを強制する可能性があります。
たとえばドライバはこのクラスを継承してくださいみたいな。。。

> ちなみに、APIといっても、カーネルまで達せず、ライブラリで処理して返すものもありますよ。
> MonaのAPIは、MONAPIとか呼ばれるんだろうか・・・

なるほど。MONAPI(もなぴ)おもしろいですね。
0345デフォルトの名無しさんNGNG
monapiあげ
0346デフォルトの名無しさんNGNG
MonAPIだろ。
0347みつみ里美NGNG
保守(`□´)くわっ
0348デフォルトの名無しさんNGNG
>>347
やらないか?
0349デフォルトの名無しさんNGNG
>>331
6ns(ナノ秒)じゃなくて6μs(マイクロ秒)だよ。
0350デフォルトの名無しさんNGNG
>>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なんて作れないとだけ言っておく
んじゃ!
0351デフォルトの名無しさんNGNG
>>350
> んじゃ!
二度と来るなよ、基地外
0352デフォルトの名無しさんNGNG
粘着基地外(゚�听)カコワルイ
0353デフォルトの名無しさんNGNG
激藁嘲笑厨は死滅スレへカエレ
0354デフォルトの名無しさんNGNG
>>351-353
ひげぽん信者、ご苦労様です
0355デフォルトの名無しさんNGNG
ひげぽんにアドバイスがあると
必ず粘着粘着って噛み付いてくる信者がいるね
おー、こわw
0356デフォルトの名無しさんNGNG
その信者ってコーディングに貢献してんの?
0357デフォルトの名無しさんNGNG
それ以前に>>350はまともなアドバイスなの?
0358デフォルトの名無しさんNGNG
>>357
ひげぽんが俺ルールなのは独自主義を目指してるからじゃなくて
単に無知だからでしょ
0359ひげぽん ◆Ngzcp/NZpA NGNG
>>350さん
こんばんは。ご指摘ありがとうございます。
mona-0.0.8というリリース名が良かったということですね。
次は忘れないようにmona-0.0.9といたします。m(__)m
0360デフォルトの名無しさんNGNG
>>359
リリース名なんて気にしなくていいよ。それよりガンガレ!
応援してるぞ。
0361デフォルトの名無しさんNGNG
何故、バージョン番号にそんなにこだわるのかわからない。
別に0.0.8aとかいうバージョン名なんて十分一般的。
自分の知ってるものだけが一般的とか思い込むのは、
視野を狭めるだけと、何度も言われたことがある。
0362Alice ◆GG1SfzBGbU NGNG
前のスレで板違いって追い出されてきたんでこっちに住み着いてもいいですか?(゚�听)
0363デフォルトの名無しさんNGNG
おー、すげぇ進んでるなぁ。ちょっとずつだけど確実に。
漏れはプログラムなんてまっっっっっったくできないモンだから、何いってんのか
サッパリだけど、みんなガンガレ。
ああ、C++ならちょっとだけかじったよ。
インクr・・・ゴメンオレガワルカッタ。
楽しみにしてるよひげぽんサン!
0364山崎 渉NGNG
(^^)
0365デフォルトの名無しさんNGNG
>別に0.0.8aとかいうバージョン名なんて十分一般的。
>自分の知ってるものだけが一般的とか思い込むのは、
>視野を狭めるだけと、何度も言われたことがある。
前半と後半で矛盾してるぞ
0366デフォルトの名無しさんNGNG
>>365
特に矛盾はしてないと思いますが。
『「(自分の知っているものだけが一般的)と思い込む」のは視野を狭める』
と
『自分の常識は、世間の常識とは限らない』
とは、別ですよ。

バージョン番号+a,b,cの形は、そんなに使われてませんかね。
よく見かけると思いますが。
ただ単に、文句言いたいだけならいいんですけど。
0367デフォルトの名無しさんNGNG
荒れてるねえ
0368デフォルトの名無しさんNGNG
>>365
プログラマーにむいてないよ
0369デフォルトの名無しさんNGNG
>>368
プログラミング的な観点から論じたら?

比較が機械的に出来るのがx.x.x.xみたいな形の売り。
動的ロードするようなドライバとか作った場合、
開発初期だと互換性を保ちきれないから、
バージョンチェックしないといけない。
そういう時は単純にバージョンを数字で並べた方が簡単。

もちろん人に理解しやすくするためにαやβなどの使用もあるが、
αとかβとかはバージョン番号に対するエイリアスとして使う。
0.99.1(1.0α1)みたいなこと。
0370デフォルトの名無しさんNGNG
>>359
ひげぽんさんはなんでこんなにいい人なんだろう。
GPLは嫌いだからコーディングには協力できないけど、
応援の気持ちを込めてVMWareを寄贈しよっと♥
0371デフォルトの名無しさんNGNG
>>369
> 比較が機械的に出来るのがx.x.x.xみたいな形の売り。

そうかぁ ?
別にどんな形だって、意味がきちんと決まってればバージョンの比較関数を書くことは簡単だと思うけどな。

> もちろん人に理解しやすくするためにαやβなどの使用もあるが、
> αとかβとかはバージョン番号に対するエイリアスとして使う。
> 0.99.1(1.0α1)みたいなこと。

よくわからん。
α, βが人に理解しやすいとも思えないし、二重管理する利点て何なの ?

>>370
すげー。
あんたもいい人やね。
0372デフォルトの名無しさんNGNG
Windows 5.1.2600なんて名前で売られても困る
αとかβとかはひげぽんが好きみたいだから出しただけ
0373デフォルトの名無しさんNGNG
バージョンなんてリリースする人の趣味に合わせれば良いのに。
とある有名ソフトなんて、バージョン3から始まって、次がV3.1、その次がV3.14、その次が・・・
と、とても趣味に走ってるが文句を言う奴は見たことが無い。
0374ひげぽん ◆Ngzcp/NZpA NGNG
>>370 匿名希望さん
御寄贈いただいたVMWare確かに受け取り、動作を確認できました。
Monaの開発を続けていくことでしか御礼は出来ませんが
本当にありがとうございました。
なお、詳細はメールでお送りさせていただきました。
0375350NGNG
Monaはファイル名とリリース名で既に二本立てだったから聞いてみただけ
なぜかVMwareまで出てきて驚いたが俺のおかげだな(w
0376デフォルトの名無しさんNGNG
>>375
それが良かったかどうかは分からんぞ。

そもそもいい人って理由だけでVPCやVMWをgetできるとは思えん。
きっつい交換条件とかあったんじゃないの?>ひげぽん
L氏だったら受け取りを拒否するだろう。
金を貰って言いなりになるくらいならっつって未踏を批判してたくらいだからな。
0377デフォルトの名無しさんNGNG
少なくともひげぽんが376みたいなやつだったら
何もゲットできないどころかプロジェクト自体も袋小路に陥ってたかも
NWSOSは公開してすぐそんなトラブルがあったし…
少なくともMonaがひげぽんの人格に負う所が大きいってのは確かだろうね
0378デフォルトの名無しさんNGNG
350はまったく関係なく、ひげぽんさんの人柄でしょうね。
VirtualPCも貰ってなかったっけ?
0379デフォルトの名無しさんNGNG
>>372
Windows 95, Windows95A, Windows95B, Windows95 OSR-2 とかだったら困らないのか ?
俺なら、Windows 5.1.2600 のほうがいいよ。
0380デフォルトの名無しさんNGNG
>>373
TeX だったっけ ? 今どこまでいってんだろ。

>>376
あんたの言ってることが事実かどうかはわからんけど、万が一事実だとしてもあんたがどうのこうの言う問題じゃないよ。
ひげぽんさんと >>370 さん間の問題だからね。
事実じゃないとしたら、あんたは >>370 サンに非常に失礼なことを言ってるんだけど、それはわかって書いてるのか ?
0381デフォルトの名無しさんNGNG
ここにいるやつの大半はVMwareかVirtualPCを持ってるだろ
そんなありふれたものをあげるかどうかなんて大した問題じゃないだろ
彼女や嫁さんを一晩貸してくれる方がずっとすごいことだぞ
0382デフォルトの名無しさんNGNG
ここにいるやつの大半は嫁さんか彼女がいるだろ
そんなありふれたものを貸すかどうかなんて大した問題じゃないだろ
VirtualPCやVMwareをくれる方がずっとすごいことだぞ
0383デフォルトの名無しさんNGNG
>>382
うまく揚げ足を取ったつもりだろうが全然ちゃうぞ

ソフトはバージョンが同じならどれも同じだが
女は年齢が同じでも一人一人全然違う

1年間同じOSを使い続けるやつは多いが
結婚して1年間ずっと嫁さんとラブラブなやつは少ない
大抵フーゾクとかに行ってる
最初に付き合った相手と何年か後に結婚したようなやつでさえ
0384デフォルトの名無しさんNGNG
>>383
Windows 3.1とWindowsNT 3.1が同じですか、そうですか、、
0385デフォルトの名無しさんNGNG
同じだろ
0386デフォルトの名無しさんNGNG
>>373
3.11ってのもあったな

あと、SPxとかSEも。
0387monNGNG
moooooooooooooooooooo
0388デフォルトの名無しさんNGNG
>>383
> 女は年齢が同じでも一人一人全然違う

MS のバグより始末の悪いやつもいるからな。
0389デフォルトの名無しさんNGNG
何故ひげぽんマンセースレになってんだ?
気持ち悪いんですけど。。

前スレ1000getしたやつの陰謀か?(w
0390デフォルトの名無しさんNGNG
>>389
ひげぽんのスレだから別にいいかと...。
気持ち悪けりゃ来なきゃいいじゃん。
0391デフォルトの名無しさんNGNG
VMware 寄贈つうても流出尻教えただけじゃねぇのか
0392デフォルトの名無しさんNGNG

  * * 割 れ 厨 3 7 0 は 逝 っ て 良 し * *

0393デフォルトの名無しさんNGNG
>>390=自演ひげぽんwwwwwwwwwwwwwww
0394デフォルトの名無しさんNGNG
>>370=自演ひげぽんwwwwwwwwwwwwwww
0395デフォルトの名無しさんNGNG
ひげぽんって自演するから大好きん!!!!!!!!!!!!!!!
0396デフォルトの名無しさんNGNG
>>391-395
夏だねぇ〜。
0397デフォルトの名無しさんNGNG
馬鹿が来て騒いでるな
ここいらで疑惑を晴らすためいっちょMonaオフでもしないか?
当然、渦中のひげぽん、370は強制出席
このスレで時の人になったokuokuやわたもちも来ないと意味ねーな
でもさすがにLやKや横谷は無理か..........
0398デフォルトの名無しさんNGNG
>>388
でもいい女は本当にいい。
……と気を許して結婚したのも束の間、
豹変してダンプ松本になるやつも多いが(泣
0399デフォルトの名無しさんNGNG
ひげぽんの自演トークつまんね
0400400NGNG
  〆〃ハハ
  ∬∬´▽`)
  (( ⊂   ) ⊃
    し(_)

    ((   〆〃ハハ
       /⌒∬´▽`)
      ⊂,,)^∪-∪

        ずざー。400ゲット。
        ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄
           〆〃ハハ
       ⊂' ⌒つ∬´▽`)つ ペタン…

            ノハハベ
              (´▽`∬∬ ミ
          ⊂' ⌒∪ ノ ∪ ムクリ

    ノハハベ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (´▽`∬∬<やったぁ!ついに400ゲットできたよー
     (   U ))   \_________________
    (__)\ノ
0401デフォルトの名無しさんNGNG
              _,.. ---- .._
            ,. '"       `丶、
            /            ` 、
          ,..-‐/    ...:  ,ィ  ,.i .∧ ,   ヽ.
.       ,:'  .l .::;',. :::;/..://:: /,':/  ', l、 .i  ヽ
.        ,'  ..::| .::;',' :;:','フ'7フ''7/   ',.ト',_|, , ',.',
     ,'   .::::::!'''l/!:;'/ /'゙  /     '! ゙;:|:、.|、| 'l
.       ,'.  .:::::::{ l'.l/  、_  _,.      'l/',|.';|
     l  :::::::::::';、ヾ      ̄     `‐-‐'/! ';. '
.      ! :::::::::::/ `‐、        ゝ   |'゙ |
     | ::::::::/   \    、_, _.,.,_ ノ::: !   ひげぽんが、幸せになりますように・・・
     |::::/.     _rl`': 、_     ///;ト,゙;:::::./
..    `´      /\\  `i;┬:////゙l゙l ヾ/   
              ,.:く::::::::`:、\ 〉l゙:l  / !.|
.          /:.:.:.:\:.:.:.:.`:、ソ/:.:|    | |
         /.:.:.:.:.:.:.:.:.:\:.:.:.:У:.:;l   /./
.        /:.:.:.:.:.:.:.r'´`‐,`、:/.,.:‐{   | !`:、
         ,'.:.:.:.:.:.:.:.:.';_,゚.,ノ.:./,:':.:.:.:',  | |`、:|
         !:.:.:.:.:.:.:.:.:.:.゙、:.::/:.:.:.:.:.:.ヽ, / ,!:.:`、
0402ひげぽん ◆Ngzcp/NZpA NGNG
Monaの近況を報告。

・プロセス間通信
・システムコール
・プロセス空間

などの設計をしています。
上記3つは、結構絡み合っていて楽しいです。
0403デフォルトの名無しさんNGNG
>>ひげぽんさん
今必要かどうかわかりませんが、
 メモリの強制アクセス制御方式(Mandatory Access Control:MAC)
 バッファオーバフロー対策のOpenwall、SSP
などを知っていいたほうがいいかも。
0404ひげぽん ◆Ngzcp/NZpA NGNG
>>403さん
>メモリの強制アクセス制御方式(Mandatory Access Control:MAC)
>バッファオーバフロー対策のOpenwall、SSP

現時点では、まだ未検討ですが将来的には必要そうな概念
なようですのでMona Wikiのほうでタスクリストに入れておきました。

アドバイスありがとうございました。
0405長々スマソ1NGNG
やっとpart2から全部読んだぁ、15時間くらい掛かったぞ。かかりすぎだが。
まぁおれがすべて読んで思ったことやらを書いてみる。

まず、全部読んだが未だにブートさえもわからん。まぁまずはアセンブリをやる。ってか学校でZ80やっているが、互換性がまぁまぁあると見ている。
まぁまぁだがな。ここで色々なサイトをブックマークしたから、1からやろうと思う。
アセンブリについてはね。たしかMS-DOSをいじくるのもあったから、それでOSについて勉強してみるさ。

ひげはスゲーなーと関心した。行動力と勉強力、そしてそれを即戦力に持っていける技術がね。

あとブートが説明されているのサイトのURL、過去スレのはあぼ〜んだったから、晒させていただく。
ttp://nobumasa-web.hp.infoseek.co.jp/boot/boot.html

あと全体的に言いたいことと言えば、始めはかなりいい調子だったのに、Lさんを叩いて追い出したことは、このスレの中では一番痛い。
Lさんも別なところで色々と叩かれて疲れていたのだろうことを、察することができなかったのも原因であろう。
まぁ同じOSを作る人間、かたやシェア、かたやオープンソースでフリー。難しいさ。
オープンがいいのか、しないのが卑怯なのか。フリーがいいのか、有料が駄目なのか。それはその人の勝手であって叩くところではないなぁと思う。

ただLさんにも非があったと思った。Lさんはどう考えてもぴげぽんさんよりも、成長が早いのは言うまでもなかったのに、
そこに突っ込んでしまった。正直、貴方のようなある程度極めている人としては、どっしりと構えて欲しかった。
もう一度言うが、あなたのほうがひげぽんさんよりも、どう考えても能力はすべて高い。
もちろん貴方が向上心を無くしてしまい、ひげぽんさんが向上心を保てば追いつく可能性があるがな。
そこが一番残念だと思った。

0406デフォルトの名無しさんNGNG
オリジナルのLタソはもういないよ
今いるLタソは影武者
0407長々スマソ2NGNG
ただひげぽんさんが、オープンソースにしたメリットがなかったというのが最初にあったが、どう考えてもあったと思う。
もしオープンにしていなかったら、ここまで順調に来れたとは思えない。もうちょっと時間が掛かっているだろう。
それは過去スレを見て思った。
確かにパクられる可能性もあるが、ひげぽんにとって間違いなくプラスになっていると確信した。
このOSが出来上がったとき、ひげぽんはみんなに焼肉をおごらなければならないな。
あなたひとりでは、なし得なかっただろう事は、自分が一番よく分かっているはずだし、だからこそ低姿勢であることも、分かるし当然であろう。
まぁ2chだから、こういうプロジェクト立てても、発起人が低姿勢を保てないのと技術が全くなく使えないと言うのが、駄目になる原因であろう。

全部読んだのも数ヶ月前に、ひげぽんが凄いと思ったからだ。そのあと忘れていたが。
正直素人にOSって作れるってこと自体知らなかったし、作っている人がたくさんいることも知らなかった。
いい勉強になる。

俺としては、ゆっくりでもいいとは思う。外部者だからかもしれん。ただここで技術を提供している人にも、あんたを遅いと思っている香具師はいるらしい。
まぁ実際「どこまでできるかな?」って冷ややかな目の香具師もいるだろう。
俺としては気にすることもないと思うが、まぁ協力者なのも事実だし、その辺の兼ね合いは、もめない程度にやってくれ。
もめたら一気にプロジェクトの破壊を招く。たった1日でな。その人間性をクズさんと、頑張れや
0408デフォルトの名無しさんNGNG
遅いがageてしまった。・・・・鬱だぁぁぁぁっぁぁっぁぁぁぁっぁぁ
0409デフォルトの名無しさんNGNG
いつからひげぽんのことをひげぽん”さん”とよぶやつがふえてきたの?
0410デフォルトの名無しさんNGNG
そんなこと過去ログ嫁としか。
0411デフォルトの名無しさんNGNG
あひゃ
0412デフォルトの名無しさんNGNG
あびゃ!
0413デフォルトの名無しさんNGNG
ちょっと聞きたいのですが。
.imgファイルを作成できたんだが、cygwinでそれからどうやってOSを起動するの?
それとも他の方法があるのでしょうか。
誰か教えてくれませんか?
0414デフォルトの名無しさんNGNG
>>413
http://mona.sourceforge.jp/dynamic/pukiwiki/pukiwiki/pukiwiki.php?HowTo%2FBoot
0415 NGNG
ひげさんでいいじゃないか
0416デフォルトの名無しさんNGNG
>>414
なんとかbochsをダウソロードして動かせました。
これを使ってOSの開発の動作テストできるんですね。
設定うまくやれば、ブートプログラムだけでもできるんでしょうか?
まぁ俺にはむりっぽそうだが。
0417デフォルトの名無しさんNGNG
>>416
http://wiki.osdev.info/index.php?%5B%5B%BE%A1%BC%EA%A4%CB%CF%A2%BA%DC%2F16BitOS%BA%EE%A4%EA%5D%5D
このあたりを見てみると面白いと思うよ。
0418デフォルトの名無しさんNGNG
ひげぽん!おまええらいな!
オレは最初から読んでみて最初はあんたと同じくらいのレベルだと思ったよ。
でも今はもう何言ってるかサパーリだよ。
おまえは勝ち組だよ!
オレは応援するYO!
0419デフォルトの名無しさんNGNG
>>417
ありがとうございました。
すごく親切な解説で、WebPage作者にも感謝しかありません。

私は16bit windows3.1たぶん486の古いパソコンを持ってまして、
これが16色の表示しかできなく、解像度も680*480くらいなもので、
画像もまともに表示できず、用途と言えば、昔全然良くないエロゲー
(乳首をクリックしたら、女がオナニーしている画像が表示されるような糞ゲー)
で、抜いたことくらいしかなく、売ろうと思っていたのですが、もしもこれが実験機となりうるのであれば、
持っていようかと思いました。実験機といっても、16bit用のになるので、ここで作っているOSは使えませんが。

ブートして、何か文字が表示できたり、簡単なカーネル作ってみたり・・・って10年後の話になりそうですが。

学校始まったら、学校の図書館にでも行って探してみます。古い書籍ばっかりで、
ある意味ここの住人の方々が何時間でもいられるような感じだと思っています。

「初めての486」などなど、たぶんあると思っています。
まぁ、行ってみないとわかりませんが。
少しずつでも勉強してみようと思います。

まずはアセンブリでしょう。学校の実験でZ80やらされていますが、MASMをやってみます。
現時点でこのスレやPart2を読んでも99パーセント理解できない状況ですので。

あとひげぽんのOS(Mona)をBochs上で動作したのをみて、感動しました。

また長々とすみません。逝ってきます。
0420デフォルトの名無しさんNGNG
キーモーイースーレー
0421ひげぽん ◆Ngzcp/NZpA NGNG
>> 414さん
フォローありがとうございます。

システムコール処理中にも割り込みを受け付けて
プリエンプションが可能なように対応したのですが

動作がおかしいときがあるので調べたところ
システムコールまわり、スケジューラーまわりで
バグがあるようなので対応中です。

syscall_sleepで、dispach_queueが空になってしまうと
NULLプロセスが実行されてしまうというお粗末なミスもありました。
0422デフォルトの名無しさんNGNG
>>421
アイドルプロセスを作りましょう。
常にReadyかRUN状態で優先度は一番下。
0423419NGNG
ちょっと難しいことを聞きたいのですが、上で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のことですか?

何か質問ばっかですみません。無知なことは承知です。
0424デフォルトの名無しさんNGNG
monaはpc98用に出来てないから�_
0425デフォルトの名無しさんNGNG
>>424
ってことはPC98用のアセンブリであればできるんですね。
明日当たり、学校の図書館に行ってみます。何かいいものがあればいいですが。
はじめての486とか、はじめての8086などなどがあったら最高なんですがね。
それは行ってみないとわかりません。
まぁ使えないのであれば売ってしまいます。ただこいつがパソコンであることには
違いないので何かできたらなぁと思っていたのですが、私の知識では到底無理。

にしても、ひげぽんは頭がいいのか、すごい吸収力があるものだ。
あとここの住人の頭の良さにも脱帽です。
0426ひげぽん ◆Ngzcp/NZpA NGNG
>>422さん
>アイドルプロセスを作りましょう。
>常にReadyかRUN状態で優先度は一番下。

実は、アイドルプロセスを追加して対応していたのですが
まだ単純ラウンドロビンで優先順位がないので

if (runキューが空) カレントプロセス=アイドルプロセス

のように逃げています。
0427デフォルトの名無しさんNGNG
>>426
今日は休みだから、進歩できそうだな。
頑張れよ。動かして、できるもんなんだなぁと実感したよ。
0428デフォルトの名無しさんNGNG
>>425
アセンブリはCPU同じだし、そんなに違わない。
つか同じ。
ブートアドレスとか、メモリマップとか、I/O周りとかが違う。
0429デフォルトの名無しさんNGNG
>>428
情報ありがとうございます。参考にさせていただきます。
0430デフォルトの名無しさんNGNG
>>429
メアドさらせ。PC98xx用の、その辺の書籍を譲ってやっても良いぞ。
「PC98シリーズテクニカルブック」とかいろいろ有る。
探せば「初めての8086」とかも出てくるはずなんだけど、今ちょっと見当たらんw

0431デフォルトの名無しさんNGNG
関連スレ追加
ReactOSを見守るスレ
http://pc.2ch.net/test/read.cgi/os/1060475345/
現状完成度はまだまだだけど開発速度速い。今月末でexplorerが載るらしいのでそのupdateに期待してみる
0432デフォルトの名無しさんNGNG
>>430
そこまでの技術を持っていないので、遠慮させていただきます。
気持ちはありがたくいただいておきます。
0433デフォルトの名無しさんNGNG
>>426
> if (runキューが空) カレントプロセス=アイドルプロセス
この判定を省くのが、アイドルプロセスの利点の一つだと思うけど。
スケジューラは何回も呼ばれるので、性能に影響大です。
とりあえずの実装なら、少しだけ走って、キューの後ろにつなぐだけでいいのでは?

ひとつ質問ですが、runキューってReadyキューと同じ意味で使っています?
それとも、別物として実装してます?
0434デフォルトの名無しさんNGNG
>>430様、>>429様
横からで大変申し訳ないのですが『PC98シリーズテクニカルブック』を私に譲っていただけないでしょうか?
0435デフォルトの名無しさんNGNG
>>434
よろしいですよ。429さんも現在は必要無いとの事なので。
ただし、今確認したところ手元に有るのは「ハードウェア編」のみです。
「bios編」は見当たらない所を見ると友人が持っていったくさい・・・w
これでもよければ送料だけもっていただくという事でどうでしょう?
まぁお礼は拒みませんけど(・∀・)

0436デフォルトの名無しさんNGNG
>>432
UNDOCUMENTED 9801/9821 Vol.2 メモリ・I/Oポート編
http://www.webtech.co.jp/undoc/
ここから気楽に見てみるのもいいかもしれません
0437デフォルトの名無しさんNGNG
>>436
おお、いいものありがとうございます。
って思ったら一度行ったことがあったようです。たぶん素通りしてしまったようです。
あらためて見させていただきます。
貴重な情報ありがとうございました。

あと明日学校の図書館行ってみます。
休業中でもやっているとのことで、たぶん人もほとんどいないと思うので、のんびりと探してみます。
0438434NGNG
>>435
ありがとうございます。429さんよろしいですか?
スレ使うのも申し訳ないのでメールでしましょう
[email protected]
0439デフォルトの名無しさんNGNG
>>438

/.逝ってよし!
0440デフォルトの名無しさんNGNG
>>439
おまえもなー
おまえもなー
0441デフォルトの名無しさんNGNG
このスレというか、板だと/.民も結構いるのかなぁ。
0442ひげぽん ◆Ngzcp/NZpA NGNG
システムコール周りで苦戦中

症状:
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が設定されている。

ちょっとだけはまりぎみです。
0443デフォルトの名無しさんNGNG
学校の図書館に行って本借りてきました。

「はじめて読む8086」はありましたが、「はじめて読む486」はありませんでした。
ただ同じ人が書いた「はじめて読むMASM」ってのがあったので、一応借りてみました。

あとオペレーティングシステムの仕組みを理解するのに2冊、
「ブートストラップProject2 PC&DOS/V BOISサービスの全貌」1冊。
あとは、BIOSの設定法が載っている本とOSを作るって書いてあるから借りてみたら、ボード用のOSのことだった本が1冊。

計7冊借りてきました。
焦らずゆっくり理解していこうと思います。
0444デフォルトの名無しさんNGNG
聖蹟桜ヶ丘のアートマンの上の本屋に
初めて読む8086が新書でうってたよ
ちょっとびっくり

僕は昔、2冊かって、2冊ともなくした。
0445 NGNG
>>444
もいっかい買え
0446ひげぽん ◆Ngzcp/NZpA NGNG
>> 442
解決しました。
プロセスのコンテキストセーブ時にCS & 0x03をして
判断している部分でケアレスミスをしてました。

gccのインラインアセンブラを疑ってしまいました。
全く関係なかったですね(笑)
0447デフォルトの名無しさんNGNG
>>445
じゃぁ今から買いに行きます。

最後の一冊だったらおいといてください>買いに行く人
0448デフォルトの名無しさんNGNG
>>447
うってなかった
0449デフォルトの名無しさんNGNG
すみません、ちょっと聞きたいのですが、
「初めて読む486」ってのは、i486のブートの方法とか載っていますか?
メモリマップみたいのですが。
注文して買ってみようかと思っていたので。

それと、以下のURLから、PDFをダウンロードしたのですが、
このPDFの情報は、重要なものですか?
ものすごく重要だと思っているのですが。

http://x86.ddj.com/intel.doc/486manuals.htm
0450デフォルトの名無しさんNGNG
>>449
Intelドキュメントは大事だよー
intelのサイトから落とせなかったっけ?
0451デフォルトの名無しさんNGNG
>>449
ないよ。
メモリマップはハードの設計依存だし。

ブートの方法は,手元にあるのだと"80x86/80x87ファミリーテクニカルハンドブック"つー本に載ってる。
10年前の本だが…
0452デフォルトの名無しさんNGNG
>>451
おお、サンクソ。
ってことは上のURLから落としたPDFを解析しなければならないですね。
頑張ってみます。みなさんスレ汚しすみませんでした。

↓から、「ひげぽんのOS製作奮闘紀」に戻ります。
0453ひげぽん ◆Ngzcp/NZpA NGNG
>> 449さん
PDFは重要そうなところは印刷して電車の中で読んだりしました。
やはり一番詳しいのと、意外と難しくないという印象でした。

今日はシステムコール中の割込み許可について
実験してました。
大体うまく言っている予感なので週末に検証しようと思っています。
0454デフォルトの名無しさんNGNG
>>453
アドバイスありがとうございます。
0455山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0456ひげぽん ◆Ngzcp/NZpA NGNG
□Monaで以下のようなことができるようになりました。

・システムコール中に割り込みを許可する。

・上記割込み許可により、システムコール中にもタスクスケジューラの起動が可能になり、スケジューリングがより平等に行えるようになった。

・システムコールの戻り値が取得できるようになった。

□おしらせ

久しぶりにdoxygenドキュメントを再作成いたしましたので下記で公開中です。
ttp://mona.sourceforge.jp/document/

□その他

Monaプロジェクト成果物のライセンスをGPLから修正BSDライセンスに変更することを検討しています。
ご意見のある方はMona PJ Wikiへお願いいたします。
0457デフォルトの名無しさんNGNG
脱GPL宣言!
0458デフォルトの名無しさんNGNG
あぼーん
0459デフォルトの名無しさんNGNG
GPLから、BSDに移行って、不可能なのでは?
フルリライトするなら、別だけど。
0460デフォルトの名無しさんNGNG
「はじめて読む486」をamazon.co.jpから購入しますた。
って言っても今日発送されただけなんだがね。在庫あと3点だったらしく、危なかったのかなぁ?
でも買う人そんなに居ないだろうし、まぁ良かったと。
0461デフォルトの名無しさんNGNG
monaのソースってCygwinしかコンパイルできないの?
0462デフォルトの名無しさんNGNG
>>459

参考にしたり、取り込んだソースが(あったとき) そのソースが GPL で
なければ問題ないよ。
0463デフォルトの名無しさんNGNG
いままでのMonaソースはGPLで配布されてたと思ってた、確かめたら何も書いてなかった。
0464ひげぽん ◆Ngzcp/NZpA NGNG
>> 463さん
こんばんは。

>いままでのMonaソースはGPLで配布されてたと思ってた、確かめたら何も書いてなかった。

src/COPYINGにGPLに関して記述があります。
分かりづらくてすいません。
0465460NGNG
こらーひげぽん、BBSにアマゾンのバナー付けて儲けようとするなー・・・・・・・
って思ってクリックしたら、アンケートに答えたら500円分のギフト券くれるだってぇ。
もったいねぇなぁ、もう注文してモロタ。
0466デフォルトの名無しさんNGNG
ライセンス確認。
一度GPLで配布したものを、違うライセンスにすることは可能なのかな?

個人的には、NYSLが好きだけど。
0467デフォルトの名無しさんNGNG
>>466
GPLはあくまでも配布する側と受け取る側と間の契約。
受け取った側は再配布する時にGPLに束縛されるが
オリジナルを配布する人はGPLによる拘束を受けないので
ライセンスを変更して配布することが可能。

この場合、オリジナルを配布するのは著作者、ひげぽんと
その他ソースに対する著作権を持つ人達。
今までそれぞれのソースをマージするのにその合意はGPLという
契約によって行われているのでその人達が新しいライセンス
で契約をしなおして互いのソースをマージしなおす必要はある。


・・・、あれ?stlport以下って大丈夫なのか?
ソースとしては独立してもコンパイル後に同じバイナリー内になる
ソースだったらライセンス違反になっちゃうぞー。
(GPLがそう強制してくる。)
0468デフォルトの名無しさんNGNG
http://www.stlport.org/doc/license.html
ここのライセンスでいいのかな?
GPLではないっぽい。
0469デフォルトの名無しさんNGNG
>>456
素晴らしい!
神のような決断!!!
脱GPL最高!!

GUIプログラマでツールキット作ったりするのが趣味だったんだけど、
その当時の知識を掘り起こしてみたくなってきたじゃないですか!!
暇になったらもっとちゃんと考えてご一筆送りたいと思います。
でも今むっちゃ忙しくて盆の間を含めここ2週間家に帰ってなくて、
その間に親が癌だって判明したり無茶苦茶になってるから
あまり期待しないでくださいね!!!
(多分、私の正体ばればれだろうな)
0470ひげぽん ◆Ngzcp/NZpA NGNG
>>465さん
>こらーひげぽん、BBSにアマゾンのバナー付けて儲けようとするなー・・・・・・・

えーと。少なくとも私は儲けてません。単なるフリーススペースの広告だと思われます。

>>467さん
>・・・、あれ?stlport以下って大丈夫なのか?

stlportに関しては先日別の方からもご指摘を受けまして
CVSからremoveしました。
今後別ライセンスで取り込むコードはsrc/cotribディレクトリに格納される予定です。
なおstlportに関しては*現在は*コアカーネルが固まっていないため使用していませんので
一時的にremoveしたままとさせていただきます。

>>469さん
>あまり期待しないでくださいね!!!
>(多分、私の正体ばればれだろうな)

こんにちは。なんとなく分かりましたw
なお。ライセンスの移行は現在、とある方の返答待ちとなっています。
もしご覧になっていたらご連絡ください。m(__)m
0471469NGNG
>>470
BSDLについて1つだけ。

私個人はFreeBSDが割と好き。
はっきり言ってLinuxは大嫌い。
2ch外でも犬糞扱いしている。

そんな私でも、逆の人がいることは知っている。
Linuxマンセーで、GPLマンセーで、
BSDはあまり好きじゃないって人。

正直、BSDマンセーな人っていうのは、
古株の人が多くてあまり浮気しない。
だからBSDライセンスにしたからって喜ぶのは
私みたいな基地外だけ。

他にBSDで喜ぶ人ってのは商売っ気のある人かな。
でも正直BeOSでさえ破綻したOS屋稼業なんか無理と思う。
だから商用うんぬんなんてのは実質意味を持たないよ。
(続く...)
0472469NGNG
だから結局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に一本化させたりしたこともある。
当時作者はライセンスの知識や思想なんか全然なくて、
適当に他のソフトから持ってきただけだって言ってた。
ひげぽんに似てるかも。
0473469NGNG
あと補足。
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化はダメ)
0474XOrgNGNG
細かい亜種が色々あるけど本家が一番洗練されている。
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.
(後略)
0475ひげぽん ◆Ngzcp/NZpA NGNG
むむ。
BSDLを採用することがBSD派?と、本当に思われて
PJ戦略上よろしくないのであればBSDLも考え直さなければならないですね。
0476デフォルトの名無しさんNGNG
暇なんでNetBSDみたいだけど2chネラー向きのOSつーのを
作ってみるわ。もちろんWindowsネイティブな。少しまちなー。
0477デフォルトの名無しさんNGNG
>>476
よっ、久しぶり。そして逃げるというオチ
0478デフォルトの名無しさんNGNG
そういう場合は
「そろそろやってみるか」
じゃないと。
■ このスレッドは過去ログ倉庫に格納されています