5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

OSを作ろうpart6

1 :デフォルトの名無しさん:03/05/10 12:23
独自に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

2 :デフォルトの名無しさん:03/05/10 12:26
このスレから誕生したOSたちです。

[Mona by ひげぽん氏他]
プロジェクトページ
ttp://mona.sourceforge.jp/
プロジェクトメンバーになりたい方は、
higepon@users.sourceforge.jp までメールをどうぞ。
最新のイメージファイルは以下の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

3 :デフォルトの名無しさん:03/05/10 12:26
HSO最強

4 :デフォルトの名無しさん:03/05/10 12:26
HSP

5 :デフォルトの名無しさん:03/05/10 12:37
☆彡 関連スレ

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/

6 :デフォルトの名無しさん:03/05/10 13:05
♥彡 関連ページ

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

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を抜き去るに一票。
  超先生が指摘してるように、ソース公開されてるからこそ
  問題点を掲示板上だけでもアドバイスできたりするし、
  この手の垂れ込みが、カーネルの開発速度を加速すると思われる。

8 :デフォルトの名無しさん:03/05/10 16:03
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
  つーか、「作者の人格」は煽りだろ?
  乗るなよ。何の役にも立たんから。

9 :デフォルトの名無しさん:03/05/10 16:10
>>7
半年が経過しましたがMonaはNWSOSはおろか
OSASKの足元すら見えていないようです。。。

10 :デフォルトの名無しさん:03/05/10 16:11
  今だ!10番ゲットォォォォォォ!!
   ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       .∩∧,,∧           (´´
     ,,,,,,,,,,ミ゚Д゚,,彡        (´⌒(´
   ど,,,,      ,,,,,二⊃≡≡(´⌒;;;≡≡≡
      ~''(,,,,,づ゙゙  (´⌒(´⌒;;
    ズザーーーーーッ!!

11 :デフォルトの名無しさん:03/05/10 16:28
>>9
いいんじゃない。
ひげぽんにはひげぽんのペースがあるんだし。
他人がごちゃごちゃ言うことじゃないと思うよ。

12 :デフォルトの名無しさん:03/05/10 16:42
>>12
1人でやってんならそうだけど、
オープンソースの強みがまるでないじゃん。

13 :12:03/05/10 16:42
すみません、間違えました。>>11です。

14 :デベロッパー名無し:03/05/10 16:43
自己レスカコ(・∀・)イイ!!

15 :デフォルトの名無しさん:03/05/10 16:48
>>12
オプソにしたから開発が一気に加速したなんてのは
犬糞に限った、しかも都市伝説みたいなもんだろ?

だから>>14やL氏はオプソ忌み嫌ってんだよ。

16 :ウホッ!いい名無し:03/05/10 16:51
(*´Д`)何故そこでボクが出てくるの?

17 :デフォルトの名無しさん:03/05/10 16:55
>>15
結局Monaがオープンにしたことで自分自身は得しないで
あさがおとかにパクられただけだしね
Lたんは正しかった!

18 :デフォルトの名無しさん:03/05/10 16:58
>>16
>よく知らない人にソースコードを開示するような事はあり得ません。

19 :名無したん@(´・ω・`):03/05/10 17:04
そりゃ知らない人に裸見せろ言われてもねぇ・・・

20 :デフォルトの名無しさん:03/05/10 17:11
>>19
ウホッ!見せて!!

21 :名無したん:03/05/10 17:17
紫外線で目が焼けるけど、いい?ヽ(`ー´)ノ

22 :デフォルトの名無しさん:03/05/10 17:25
>>21
焼けるもんなら焼いてみな!

23 :ひげぽん ◆Ngzcp/NZpA :03/05/10 17:48
>>1
>>2
>>5
>>6
>>7
>>8

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

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

確かにおっしゃるとおりですね。
まあぼちぼちがんばります。

24 :ひげぽん ◆Ngzcp/NZpA :03/05/10 18:06
Monaがオープンソースにして得した点を思い出せる限り列挙

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

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

・共同開発者になかなか出会えない。
プロジェクトに参加してくださる方々はたくさんいるのですが
私のプロジェクト運営のまずさや、OS作成の敷居の高さ?により
実質コードを書いているのはひげぽんとぐりぽん氏になってしまっている。

25 :ひげぽん ◆Ngzcp/NZpA :03/05/10 18:08
そういえば、わたもちさんのOSはC++でカーネルを書きかえるそうです。
どういうアプローチを取られるのか大変楽しみです。

Monaもがんばらないとなあ。

26 :デフォルトの名無しさん:03/05/10 18:16
ひげぽんいい人だね〜!

27 :わたもち:03/05/10 20:29
更新に気づくの早すぎデス。ひげぽんさんに見張られています(汗

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

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

28 :デフォルトの名無しさん:03/05/10 21:52
>>27

それをパクるというのです。
オープンソースの弊害簡単にぱくられるとつらいねぇ。

29 :わたもち:03/05/10 22:03
あのう、話がさっぱり見えませんが。
何か問題があるようでしたら、はっきりとお申しください。
私自身はなんら違反している行為はやっていないと思いますので...

30 :デフォルトの名無しさん:03/05/10 22:24
>>29
ひげぽん (および協力者) からクレームついてるわけじゃないでしょ ?
>>17 見りゃわかるけど、なんでも損得に置き換えたい人みたいだから、放置しておいた方が良いよ。

31 :ひげぽん ◆Ngzcp/NZpA :03/05/10 22:50
FAT12.cppをリファクタリングしました。
そのとき気づいたのですが、mallocを実装しているのに
freeを実装していませんでした。w

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

>>27
見張っていませんよ。たぶんw

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

>> 見張っていませんよ。たぶんw
少し冗談入ってましたw

33 :ひげぽん ◆Ngzcp/NZpA :03/05/10 23:39
>>32 わたもちさん

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

お互い切磋琢磨してがんばりましょう。

34 :わたもち:03/05/11 00:02
> お互い切磋琢磨してがんばりましょう。
ひげぽんさんも毎日忙しいと思います。
また得意な技術も似たところがありますし、似たような環境の者同士、
お互い頑張りましょう。でも正直、先駆者であられるひげぽんさんには
頭があがりません。

35 :デフォルトの名無しさん:03/05/11 00:53
予定調和

36 :デフォルトの名無しさん:03/05/11 03:58
>>わたもちさん
いきなりWabaはきついですから
こんな所から手を付けるのはどうでしょう?
ttp://what-new.hp.infoseek.co.jp/language/

37 :デフォルトの名無しさん:03/05/11 05:46
実は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

38 :デフォルトの名無しさん:03/05/11 07:42
両方にレスするのも大変だから、
前スレ使い切ろうや。

39 :わたもち:03/05/11 11:27
>> 36さん
前スレにレスしました。

40 :始める時は名無したんを押す:03/05/11 12:06
>>37
こんなところでその名前を聞けると思ってなかったわけだが。
MonaでCOM32採用はセグメントがらみがあるので難しいと思う。

41 :謎の探偵:03/05/11 18:02
part6おめ〜。
( ´¬)y-~ マッタリ頑張れ。
いつも拝見させてもらってます。


42 :デフォルトの名無しさん:03/05/11 20:01
>>38
950過ぎたら通常捨てるだろ
今はちょうど話題も切れてるし

>>39見たいなことされたほうが読みにくくて迷惑だ
余計なこと言うなよ

43 :デフォルトの名無しさん:03/05/11 20:22
>>37みたいな妄想はお腹一杯だが
ホラでもいいから公式ロードマップみたいなの示さないと
誰も付いて来なくて言葉だけの突っ込みに終始してしまうよ。>>ひげぽんちゃん♥

この辺参照ね。
http://pc.2ch.net/test/read.cgi/os/996051906/112-153

44 :ひげぽん ◆Ngzcp/NZpA :03/05/11 20:32
さてFAT12ドライバをMona本体に組み込むところでいろいろ問題発生
その多くはDiskDriverを継承したFDCDriverの出来が良くないことに
よるものと思われます。

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

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

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

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

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

この辺まではなんとなくイメージがわきます。

45 :ひげぽん ◆Ngzcp/NZpA :03/05/11 20:40
>>43さん
> ホラでもいいから公式ロードマップみたいなの示さないと

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

ファイルシステム FAT12のサポート(ブート後のお話)

ブートコードからカーネルイメージをFAT12のファイルとして読み込めるようにする。

ユーザーモードの実装(プロセス?スレッド?)
↓※
簡易シェルの実装(ls, pwd, cd?)
  ↓
ファイルシステムよりファイルを読み込みプロセスとして実行できるようになる。
  ↓
ユーザーモード用APIの整備

ラインエディタの登場(誰か作ってくれるとうれしい)

ページングなどカーネルの基礎作りに戻る。

※この辺で余裕があれば、ファイルシステムをユーザーモードで動かして
マイクロカーネル化への第一歩とする。

46 :デフォルトの名無しさん:03/05/11 20:47
>>45
いや、こういうのじゃなくて、アーキテクチャのコンセプトを示さないと
よその人は参加しにくいと思うんだが。
今だと
・C++でカーネルを実装
ぐらいしかないし。
これだとちょっと抽象的で何を目指しているのかわからないので、生暖
かく見守るしかできないと思うんだが。

>ファイルシステム FAT12のサポート(ブート後のお話)
>簡易シェルの実装(ls, pwd, cd?)
から察するにWindowsクローンなOSを目指しているの?

47 :46:03/05/11 20:50
あ、
>簡易シェルの実装(ls, pwd, cd?)
だからWindowsクローンじゃないか。スマソ。
でも、POSIXには準拠しないって言っていたよねぇ?
ますますわかんなくなってきた・・・。


48 :デフォルトの名無しさん:03/05/12 16:00
>>24
> ・共同開発者になかなか出会えない。
自分から提案してバリバリするような人なんか滅多にいないから、
(たとえば会社でする事がなかったら暇つぶしするのが普通の人でしょ?)
リーダーが仕事を作って分配しないと
たとえ実力があっても持て余す結果になるよ。

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

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

49 :デフォルトの名無しさん:03/05/12 19:00
>>48
MSも社内で競争させてるしね。

K氏は無意識に自覚してるのか知らんけど、
横からの提案を本流に取り入れるのは拒否して
やりたかったら勝手にやってくれ、
もし良かったらパクるからってのが口癖だし。
もっとも成果上がってないけど(ゲラ

50 :デフォルトの名無しさん:03/05/12 19:44
>>ひげぽんタソ
> するどいですねぇ。
> まああまり気にしないでください。(笑)
矛盾してませんか?↓
Development Status: 2 - Pre-Alpha

51 :デフォルトの名無しさん:03/05/12 20:11
>> 50
粘着ヤメレ

52 :デフォルトの名無しさん:03/05/12 20:26
>>51
そっくりそのまま返す

53 :デフォルトの名無しさん:03/05/12 21:37
>>52
そっくりそのまま返す

54 :デフォルトの名無しさん:03/05/12 21:56
粘着が二人紛れ込んでいるようだが……

55 :デフォルトの名無しさん:03/05/13 01:59
>>53
俺も参加する

56 :デフォルトの名無しさん:03/05/13 16:24
>>55
どうせ参加するならMona Projectにしろよ

57 :デフォルトの名無しさん:03/05/13 17:27
while(true);よりfor(;;);を使った方が良いよ>Mona

58 :デフォルトの名無しさん:03/05/13 19:10
>>57
そんな宗教的な問題、どっちだっていいよ。


59 :デフォルトの名無しさん:03/05/13 19:42
>>58
whileだと評価のコストがかかるから一般的にforが薦められているんだよ。

60 :デフォルトの名無しさん:03/05/13 20:09
そんなにコストを気にするならgoto使えと

61 :デフォルトの名無しさん:03/05/13 20:15
>>60
gotoはJavaで使えないですよね。
だからC系言語一般で薦められているんです。

62 :デフォルトの名無しさん:03/05/13 21:06
>>59
一般的になんて聞いたことないし。
評価コストは完全に実装依存の問題だろ
最適化コンパイラが無い時代でもないんだし、
どうでもいい

63 :デフォルトの名無しさん:03/05/13 21:16
>>62
聞いたことがあるかどうかは基準にならないとして、
コーディングスタイルを一般的なものに合わせるのは
開発者に対するアピールになりますよ。
だから大きなプロジェクトではインデントの仕方とかも
細かく決められているわけです。
だからXPなどでもコーディング規約がうるさく言われるわけです。

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

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

64 :デフォルトの名無しさん:03/05/13 21:54
>聞いたことがあるかどうかは基準にならないとして

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

というか、
forに統一るのが是で、whileに統一するのが非であるとする根拠が
>>59ならば、フーンとしか言えないんだが。

65 :デフォルトの名無しさん:03/05/13 22:02
そんなZ80とか8086の時代じゃないんだから評価のコストなんて… というのはダメなんだろうか。
真っ当なコンパイラならfor(;;)とwhile(true)のどちらも同じコード吐くだろうし。

個人的には無限ループだということがわかりやすいのでwhile(TRUE)

66 :デフォルトの名無しさん:03/05/13 22:06
Cにはbool型がないからマクロを使うかwhile(1)となって統一性がなくなる

67 :デフォルトの名無しさん:03/05/13 22:16
>>66
Cにだってboolはあるぞ。
まあ正しくは_BoolだしC99準拠でないと使えないわけだが。

68 :デフォルトの名無しさん:03/05/13 22:54
>>63
ML公開されてないだろ。
本音では信者以外はどうでもいいってこった。

69 :ひげぽん ◆Ngzcp/NZpA :03/05/14 00:44
>>46

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

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

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

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

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

うわ内容が重いですね。
でもそこに書かれていることは、一部Monaプロジェクトにも当てはまりますね。

70 :ひげぽん ◆Ngzcp/NZpA :03/05/14 00:45
>>50
>> まああまり気にしないでください。(笑)
> 矛盾してませんか?↓
> Development Status: 2 - Pre-Alpha

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

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

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

もちろん、他のスタイルのほうがメリットがあると感じれば
簡単に乗り換えますw


71 :デフォルトの名無しさん:03/05/14 01:06
>>70
> >>57 - 68
こういうときは
>>57-68
ってつなげて書くと自動的にまとめてリンクが付くから良いよ。

72 :デフォルトの名無しさん:03/05/14 01:11
>>70
statusは、どこかのフォームから簡単に変更できた記憶が。
これ、物によってバラバラな場合、どのへんにしておくか迷うんだよねえ。

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

あちこち首突っ込んでいる身としては、あまりきつくない方がうれしいんですけどね。


73 :デフォルトの名無しさん:03/05/14 01:13

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

loop{


}

とりあえずこう書いとけ

74 :ひげぽん ◆Ngzcp/NZpA :03/05/14 01:22
>>71
アドバイスありがとうございます。

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

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

>>73
冗談ですよね?

75 :デフォルトの名無しさん:03/05/14 01:43
>>74
> ・tabはMakeFile以外では原則的に使用不可とする
Emacsで書かれたとおぼしきソースに
8文字スペースの代わりにTabが入ってるよ(Emacsデフォの挙動)

この辺は63の言うように自動整形ツール使った方が楽だよ

76 :ひげぽん ◆Ngzcp/NZpA :03/05/14 01:47
>>75
それは失礼しました。
commit前にM-x untabifyしているつもりなのですが
たまに忘れます・・・

77 :デフォルトの名無しさん:03/05/14 02:27
>>63
ひげぽんにPMの仕事させてどうするのよ。
設計やコーディングに専念してもらいましょうや。


78 :デフォルトの名無しさん:03/05/14 02:31
>>77
誰かがやらないと1人プロジェクトのままだよ。
77さんどうですか?

79 :デフォルトの名無しさん:03/05/14 02:55
漏れは、成果物が出来上がるかどうかにはあまり興味がなくて、自分では
できない事をやっている姿をマターリと見守って一緒に一喜一憂した気分に
なりたいだけなのかも知れない。

一人プロジェクトでいいのかどうかはひげぽん氏が判断すれば良いか。
どっちにしてもガンガレ!

80 :horai:03/05/14 04:36
面白いことやってますよねー。。。応援します。>ヒゲポンタン、MonaPJ
UNIXのソースコードにつけた注釈が本になったケースがありますが、
その逆を見ている感じ?>>69 あたりでコンセプトに悩んで
いらっしゃいますが、端から見たこのOSの特徴って、それ自体が
十分勉強の素材になるってことだと思います。LinuxはMINIXがあまりに
教育目的すぎたので実用のほうへのフラストレーションがわーと
噴出し発展、ってな印象ですが、MonaはあえてMINIXの後追い、(=勉強・
教育的要素を色濃く残しておく)てのはどうでしょう (w
・・・という意見は結構前からあるのかな?

81 :horai:03/05/14 04:52
>>80 自己レス
あまりに抽象的だったので、具体的なアイデアを一つ。
例えばカーネルの上に(?)どかっとRubyみたいなスクリプト
処理が載ってて、ls, cat などはスクリプトで書かれている。
すぐ cat すれば、すぐソース見れて勉強になる&自分なりの
ls, cat を作ってもいい。。。 IOやオブジェクトの扱いなどは
スクリプト側が提供。そりゃコンパイラで作るより遅い
だろうけど、最近のPCの速さだったらあまり苦もなく動くかも。
# ただファイルサイズは大きくなるからFDのみとはいかないか (w||

82 :デフォルトの名無しさん:03/05/14 07:56
富豪的 OS か。

83 :horai:03/05/14 13:16
新しいスクリプト言語を設計する!
http://pc2.2ch.net/test/read.cgi/tech/1050936741/l50

こういうのもあるのな (w

84 :デフォルトの名無しさん:03/05/14 22:00
for (;;) を使うべきだ。なぜなら、foreverと読めるから。

85 :デフォルトの名無しさん:03/05/14 22:12
>>84
> for (;;) を使うべきだ。

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

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

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

と途中脱出するから。

86 :デフォルトの名無しさん:03/05/14 22:25
コーディングスタイルをそろえることに意味があるんだから、
ひげぽんが書いたものにあわせればいいんじゃない?

87 :デフォルトの名無しさん:03/05/14 22:27
> 理由は、コンパイラが while(1) に対して文句を言うことがあるから。
while(1)はJavaやC#でコンパイルが通らないってのもある。
なるべくC/C++/C#/Javaは同じスタイルで書いたほうが良い。

88 :デフォルトの名無しさん:03/05/15 00:25
俺はトリッキーな記述は慎むべきだと思うな。従ってループは

 while( true ) {
   ;
 }

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

読みやすいソースコードは誰のため? ヒト? or コンパイラ?
もちろん我々のために読みやすく理解しやすく記述する。
癖のある書き方だと後に誰もメンテしてくれなくなるよ。

89 :デフォルトの名無しさん:03/05/15 00:36
for(;;)が無限ループくらいC/C++使いなら誰でも知っている。
俺はwhile(1)派。警告?出ることもあるね^^;

90 :デフォルトの名無しさん:03/05/15 00:53
いつからここは宗教スレになったんだろう…(´ー`)

91 :デフォルトの名無しさん:03/05/15 00:57
そんなレベルの話じゃないと思う・・・(´ー`)

92 :デフォルトの名無しさん:03/05/15 01:13
if(1) goto kurikaeshi;

93 :デフォルトの名無しさん:03/05/15 01:57
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;
^^;^^;^^;^^;^^;^^;^^;

94 :デフォルトの名無しさん:03/05/15 02:26
>癖のある書き方だと後に誰もメンテしてくれなくなるよ。
プッ

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 で行ないます。

95 :デフォルトの名無しさん:03/05/15 02:28
くだらん問題を気にするなよ

96 :デフォルトの名無しさん:03/05/15 02:42
ひげぽんが自分のスタイルに会わせてくれって言ってるんだからそれで良いじゃないか

97 :デフォルトの名無しさん:03/05/15 15:16
このスレはwhile教徒とfor教徒が互いに罵倒しあいながら友情を深めるスレになりますた!

98 :デフォルトの名無しさん:03/05/15 16:05
HTMLしかかけないヤツがいきなり来て言うのもなんだが。








がんがれ。

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

(クレクレ君氏ね、と言われそうw)

100 :デフォルトの名無しさん:03/05/17 08:39
>>99
> つまりx86以外アーキテクチャ(結局今は現実的選択だとマクしかない?)

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

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

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

個人的には、移植なんか考えずに 386 アーキテクチャべったりの実装と言うのもおもしろいかもしれないと思っている。

101 :ひげぽん ◆Ngzcp/NZpA :03/05/17 22:00
>>100
>> に移植検討して欲しい
>> (クレクレ君氏ね、と言われそうw)

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

こんにちは。そうですねぇ。
x86で手一杯です。。。。
ただ、本気で移植してくれるという人がいたら
もしかしたら協力できるかもしれません。

102 :ひげぽん ◆Ngzcp/NZpA :03/05/17 22:03
FDC WRITEの挙動が怪しくて四苦八苦中
実機ではなく、VPCでの話です(実機ではそれ以前の問題が・・・)

    byte command[] = {0xC5//FDC_COMMAND_WRITE
                   , (head & 1) << 2
                   , track
                   , head
                   , sector
                   , 0x02
                   , 0x12
                   , 0x1b
                   , 0x00
                   };

103 :ひげぽん ◆Ngzcp/NZpA :03/05/17 22:08
    for (int i = 0; i < 73; i++) {

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

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

writeコマンドパラメータが悪いのか・・・
うーん。こまりました。
これが解決するとVPCでFAT12::writeが動くのになあ。

104 :ひげぽん ◆Ngzcp/NZpA :03/05/18 02:39
>>103

解決しました。
lbaToTHSの変換が間違ってました。
お騒がせしました。

105 :デフォルトの名無しさん:03/05/18 19:27
水面下でソースが更新されてますね。
漏れは、プログラミングはド素人ですが、
ソースを読んでOSのつくりを理解しようとしてます。
プロジェクトメンバーの方々、頑張って下さい。


106 :ひげぽん ◆Ngzcp/NZpA :03/05/20 02:06
>>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も微妙。

107 :ひげぽん ◆Ngzcp/NZpA :03/05/20 02:07
    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]);

108 :ひげぽん ◆Ngzcp/NZpA :03/05/20 02:07
    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);

109 :ひげぽん ◆Ngzcp/NZpA :03/05/20 02:08
とここまでがテストコードです。
FDCDriverの品質を上げるのにはもう少し
時間がかかりそうです。

110 :デフォルトの名無しさん:03/05/20 19:14
なんで>>57がいきなりあんなこと言い出したか分かったYO!

111 :デフォルトの名無しさん:03/05/20 22:53
>>106
今回の問題とは関係ないと思うけど、
DMAする時のアドレスが0x?0000またぐと正常に転送できなかったような記憶があります。
チェックしておいた方がいいかも。


112 :ひげぽん ◆Ngzcp/NZpA :03/05/21 02:23
>>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;
}




115 :山崎渉:03/05/22 04:25
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

116 :.mjt ◆.mjtH1cgf. :03/05/23 02:16
こっちに書いた方が良いような気がするので今日の作業分:

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

4点。

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

C++で書いたクラスを別ファイルにしておいて、実行時にリンクする手法募集。。

117 :111:03/05/23 12:44
>>112
例えば、0x10ff00にセクタバッファが来た場合、
最初の256byteは予定通りの場所に入るけど、
続きが0x110000じゃなくて0x100000に入るよって事です。

>>116
普通にダイナミックリンクできない?


118 :.mjt ◆.mjtH1cgf. :03/05/24 01:15
今日のMona
 
 ○ PIC設定の重大なミスを訂正
 ○ PCカードを刺したまま起動すると認識する。電源供給周り作ってないので認識は出来ず。

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

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

とりあえず、gccのnew演算子が実際にはどのような処理を行っているのか調べて見る必要が有りそう。


119 :デフォルトの名無しさん:03/05/24 02:19
何気に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を書いたことのある人がいらっしゃいましたら
アドバイスをいただけたら幸いです。

121 :ひげぽん ◆Ngzcp/NZpA :03/05/25 01:48
>>120
DMA転送サイズを-1することで解決しました。
ご協力いただいたosdev-jの皆様ありがとうございました。
とくにS氏サンクスですm(__)m


122 :デフォルトの名無しさん:03/05/25 04:23
new なんて、継承辿って継承元から順に malloc してるだけだって。

123 :デフォルトの名無しさん:03/05/25 15:35
ん名分けないだろ

124 :デフォルトの名無しさん:03/05/25 18:15
>>123
んなもんです。
mallocした後コンストラクタ走るけど。
どっちかっつーとvirtualの扱いの方が面倒。


125 :ひげぽん ◆Ngzcp/NZpA :03/05/25 23:02
本日の成果

・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でテスト願いを出しております。ご協力のほどお願いいたします。

126 :デフォルトの名無しさん:03/05/26 08:07
すれ違いだからこれでおわりにするけど
いくつ継承していようがメモリ確保は一度だけ。
順にメモリ確保なんてしないよ。

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



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

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

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

128 :.mjt ◆.mjtH1cgf. :03/05/26 19:31
>>127
hige氏を2回参照してシマタ…

もちろん、独自の言語やコンパイラを用意するというアプローチも無くわ無いですが…

129 :超先生@∇・RR=∞ ◆leaf/RYZgY :03/05/26 19:50
<後ろ頭>-~ operator newをoverrideして
外部からobjectを取り込むのかな。

void* operator new(size_t n)
{
 if(boot_phase)
   return external_objects[...]; /* 別にnewにする必要ない<>-~ */
 else
   return malloc(n);
}

130 :デフォルトの名無しさん:03/05/26 20:09
>>126
> いくつ継承していようがメモリ確保は一度だけ。

実装べたべたの話と言うことは理解してるよね。
複数回 malloc() が禁止されているわけじゃないよ。

131 :デフォルトの名無しさん:03/05/26 23:24
粘着君は巣に帰っていいよ

132 :ひげぽん ◆Ngzcp/NZpA :03/05/27 00:56
.mjt氏

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

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

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

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

>>129 超先生さん
顔が変わりましたね。
超先生のおっしゃる方法もありですね。
というか、勉強になります。

133 :ひげぽん ◆Ngzcp/NZpA :03/05/27 01:00
.mjt氏

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

見たいなのはどうでしょうか?
初期化の順番にも寄りますが。

134 :ひげぽん ◆Ngzcp/NZpA :03/05/27 01:10
FAT12テストのURLを張り忘れていたので
ttp://wiki.osdev.info/index.php?%5B%5BDiskImage%2FMona%5D%5D

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

あとはFAT12ブートを試す作業が残っています。

135 :ひげぽん ◆Ngzcp/NZpA :03/05/27 01:17
連続書き込みすいません。

.mjt氏

リアルモードでmode12へ移行しているので
GraphicalConsole以外の出力先をあきらめた経緯があります。
g_consoleの中身がstaticで実行開始時に保証されていれば
とりあえずOKでしょうか。

136 :.mjt ◆.mjtH1cgf. :03/05/27 01:54
>>135
それでOKでしょう。多分。。
# 画面分割や出力先の変更が出来ないうちは

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

リアルモードのBIOSを呼ぶインターフェースも必要になるかもしれないですね
まぁ、それは必要になったときにつけましょうか。

137 :デフォルトの名無しさん:03/05/27 19:41
>リアルモードのBIOSを呼ぶインターフェースも必要になるかもしれないですね
Lタソが自慢してたね

138 :デフォルトの名無しさん:03/05/28 00:51
>>137
召還しちゃダメ〜

139 :.mjt ◆.mjtH1cgf. :03/05/28 01:57
>>137
リアルモードのBIOSコールに関しては、想定される用途(*)が結構限定的なので
一旦OSをとめてしまう構造にすれば、実装自体は難しくないかもしれません。
現状のMonaはカーネルは低位メモリに読み込まれていますが、充分な余裕が有ります。

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

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

* 想定される用途
画面モードの切り替え、PC本体情報やデバイスの情報の収集等。

140 :デフォルトの名無しさん:03/05/28 09:50
画面切り替えは置いておいて、デバイス情報収集をカーネル起動後にやる意味があるのだろうか。
起動前に済ませておくべき事項では?


141 :デフォルトの名無しさん:03/05/28 11:33
>>140
同意。
ホットプラグ考慮しなければ、リアルモードなうちに収集してしまったほうが簡単ですな。
画面切替えは、VESAなら32bitインタフェースあるからVM86使って呼ぶ必要ないし。

どうしてもVM86を使うなら、先頭の1MだけLMA=VMAにすれば、
あんまり考えなくてもいいかも知れない。


142 :山崎渉:03/05/28 12:46
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

143 :デフォルトの名無しさん:03/05/28 15:21
  _______         ___________________
 |悲しいときー! |         |レス来てると思って開いたら山崎だったときー!!|
   ̄ ̄ ̄∨ ̄ ̄ ̄          ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧∧                 ∧_∧
    ( ゚Д゚)                ( ´д` )
   ⊂○ ○ヽ                  ||””””””””””|
     |  | ̄              ( )山崎渉  ( )
     / /\\                ||_(^^)__|
     / /  > /                / /  ) )
   (_)  >               (_) (_)


144 :.mjt ◆.mjtH1cgf. :03/05/28 15:37
>>140
デバイスマネージャ周りをカーネルにあまり入れたくないというだけです。。
その辺はひげぽん氏の方針もあるでしょうから、はっきりした見解が有るまで触らないでおきます…

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

また、落ちたときの状況を考えると、>>127で考えた原因は成り立ちません。
そもそも、カーネル初期化時は 当然の如く割り込み禁止状態ですからね…
# 何故気付かなかった…

145 :デフォルトの名無しさん:03/05/28 21:35
>>143
レス2個ついてる思ったら、山崎とお前かよ !!

146 :某S氏:03/05/29 22:18
ひげぽん氏どこー?(AA略

147 :ひげぽん ◆Ngzcp/NZpA :03/05/30 00:06
>>140
情報収集は開発当初にそこまで手が回らなかったので放置気味の状態です。

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

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

>>146
ここにいますよw
どういうご用件でしょうか?

148 :デフォルトの名無しさん:03/05/30 01:12
>>144
PCIにぶら下がったデバイスの構成情報なら、
32bitインタフェース使って収集できると思いますが。

あとはBIOSワークに残された情報を集めれば、
VM86を持ち出さなくてもよさそうな気がする。


149 :.mjt ◆.mjtH1cgf. :03/05/30 01:34
>>148
情報どうもです。

とりあえず、資料を集めて眺めてみる必要が有りそうですね。。
そうなってくると、いよいよカーネルの構成を考えなければならない段かもしれませぬ。

150 :デフォルトの名無しさん:03/05/30 08:49
>>147
秘密のラブレターがあるの。

151 :デフォルトの名無しさん:03/05/31 19:24
USBってさ
intで割り込みかけて情報ひきだすんじゃないの?
BIOSとかから情報えられないから違うんだろうけど

152 :ひげぽん ◆Ngzcp/NZpA :03/05/31 21:06
今日の変更点


FAT12ブート対応

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

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

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

* secondboot.asm : a20enableとgraphicalmodeをfirstboot.asmからsecondboot.asmに移動。

153 :ひげぽん ◆Ngzcp/NZpA :03/05/31 21:09
MonaがFAT12ブートおよびFAT12に対応しました。

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

ttp://wiki.osdev.info/index.php?%5B%5BDiskImage%2FMona%5D%5D

154 :デフォルトの名無しさん:03/05/31 21:38
このテストってやっぱり危険でつか?
試したいけど、怖くて試せない…(汗

155 :ひげぽん ◆Ngzcp/NZpA :03/05/31 21:57
>>154
残念ながら100%安全とはいえません。
ですがそんなに危険なものでもないと思います。

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

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

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

すいません、説明不足かもしれませんがよろしくお願いいたします。

156 :154:03/05/31 23:58
あ、FDDがこわれるならまだいいか。
HDのデータだったらヤヴァイなぁ…。
これから試してみます。

157 :デフォルトの名無しさん:03/06/01 00:33
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.
って出る。

158 :デフォルトの名無しさん:03/06/01 00:49
age

159 :.mjt ◆.mjtH1cgf. :03/06/01 01:11
>>157
VMwareのバージョンは幾らですか?
また、VMwareで他のOSの起動ディスクが起動できるかも確認してみてください。

2.0の英語版で確認した限りは起動はしますが、FDのテストがうまくいってません。
ttp://wiki.osdev.info/index.php?%5B%5BScreenShot%2FMona%5D%5D

160 :デフォルトの名無しさん:03/06/01 02:58
>>159
VMware4.0Wです…

161 :デフォルトの名無しさん:03/06/01 09:00
MMMMMMMM
nnnnnnnn
でよい?

162 :ひげぽん ◆Ngzcp/NZpA :03/06/01 12:53
>>161
Monaのそれぞれの文字が512個表示されていれば
テストOKです。

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

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

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

とおもって処理を見返してみましたが今のところそれらしいところは見つかっていません。

163 :157:03/06/01 15:35
VMwareの設定ってこれで良いのですか?
http://nks-42.mydns.to/option.jpg

164 :デフォルトの名無しさん:03/06/01 20:33
FAT12ブートってカーネルがFAT12領域にあるってことですかね?
FAT12が扱えれば、テスト環境でのログ取り&報告に使えそうですね。

165 :.mjt ◆.mjtH1cgf. :03/06/02 16:59
>>163
設定は大丈夫だと思うので、ディスクイメージのディスクへの書き込みが上手く行ってないのかもしれません。

2.0だと[FAT 12]:before read resultの直前または同時にVMwareがpanic。


166 :ひげぽん ◆Ngzcp/NZpA :03/06/03 00:44
>>164
おっしゃるとおりですね。
FAT12のドライバが安定したらそのようなロギングを導入します。

167 :ひげぽん ◆Ngzcp/NZpA :03/06/03 00:49
動作しない実機があるようですが、こちらで再現する実機がないため
苦戦中。

168 :デフォルトの名無しさん:03/06/03 21:52
>>167
素人的発想ですが、動かない場合のチップセットを聞いてみてはどうでしょう?

169 :.mjt ◆.mjtH1cgf. :03/06/04 18:15
今のところ起動しない(Loading後リブートする)チップセット
・i815 ?
・440 BX/LX/ZX

起動しないCPU
・i386?

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

...ふと思ったのですが、CPU例外はNMIですよね。。。多分。
それなら、>>127もありえない話ではないのか...
とにかく、グラフィックコンソールを初期化する前に何らかの出力を得られるようにしたいところです。
# 最悪、シリアルポート経由ででも。。。

170 :デフォルトの名無しさん:03/06/04 18:57
シリアル出力だけならout命令とウェイトだけでいけるよ。
本当はキューの空きチェックしないといけないんだけどね(笑


171 :.mjt ◆.mjtH1cgf. :03/06/04 19:20
>>170
UARTは16bytesでしたっけ。>FIFO
落ちたときのダンプ吐くだけなら16bytesに収める(IP , フォールト番号ぐらいで必要充分)手も(w

メモリのAllocateはやっぱり正常終了している模様...

172 :デフォルトの名無しさん:03/06/04 19:23
古いハードだと互換性のために初期状態ではA20ゲートが閉じているのかも

173 :.mjt ◆.mjtH1cgf. :03/06/04 20:15
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を扱いたい場合が微妙。

174 :デフォルトの名無しさん:03/06/04 20:24
>>173
いやA20はアドレス線の問題だからプロテクトモードでも影響するのでは
PS/2だとport0x92みたいだし…

175 :超先生@∂/∂RR=∞ ◆leaf/RYZgY :03/06/04 20:24
>newで作成したポインタ(の、メンバ)にアクセス

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

176 :.mjt ◆.mjtH1cgf. :03/06/04 20:33

 F I X さ れ ま す た

A20Enableが不味かった模様。

177 :.mjt ◆.mjtH1cgf. :03/06/04 20:37
>>174
「キャッシュ周りは」です。
CPUキャッシュはA20のマスクとはお構いなしに動作するので、その辺の考慮が必要になります。
A20のマスクはCPU外部でやってることです。

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

既知のバグ:
・FATブートが一部マシンで物凄く遅い(相性?
 +コンパイルオプションで切り替えたりとか出来るようにした方がいいかな...
・IRQハンドラが腐ってる(ひげぽん氏のコードでは未使用


178 :.mjt ◆.mjtH1cgf. :03/06/04 21:02
>>175
幾つかデバッグルーチンを追加してみましたが、その辺は大丈夫な模様。
# というか、その辺の検証はFATブート以前にもやってたんです。。

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

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

ttp://okotama.org/osdev-temp/mona-boottest-030604l1.zip
取り急ぎ起動テスト版。起動するかどうかだけのテストです。

179 :.mjt ◆.mjtH1cgf. :03/06/04 21:05
あー URL違うし...
ttp://okotama.org/osdev-temp/mona-boottest030604l1.zip
です。

いままで起動していた方もテストしてみてください...
HDDへのアクセスはしない「はず」です。

180 :デフォルトの名無しさん:03/06/04 22:05
>>171
デバッグ出力に使うなら、きちんと作ったほうがいいよ。
そんなに難しくないし。

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



181 :180:03/06/04 22:51
気がむいたので適当にでっちあげ。
全然確認していないので、使う前に確認して。

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


182 :.mjt ◆.mjtH1cgf. :03/06/05 00:33
>>181

展開できないです。。
もしよろしければ、
ttp://wiki.osdev.info/index.php?%5B%5BMona%5D%5D
のページの「添付」リンクからアップロードしていただけないでしょうか?
お手数をかけて申し訳ないです。。


183 :ひげぽん ◆Ngzcp/NZpA :03/06/05 01:09
>> mjtさん、その他協力者の皆様

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

> A20Enableが不味かった模様。

今度詳細を教えてくださいm(__)m


184 :180:03/06/05 21:03
>>182
アップロードしました。ものすごーくいいかげんな説明も付けてあります。
煮るなり焼くなり御自由に。


185 :超先生@∂/∂RR=∞ ◆leaf/RYZgY :03/06/05 21:08
> A20Enableが不味かった模様。

<後ろ頭>-~ 実際に有効になるまでタイムラグがある現象?

186 :デフォルトの名無しさん:03/06/05 21:11
I/Oポートの連続書きこみにウエイトが必要だったのでは?

187 :.mjt ◆.mjtH1cgf. :03/06/06 00:46
>>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

190 :デフォルトの名無しさん:03/06/06 14:37
レモンPCなら昔あったな

191 :.mjt ◆.mjtH1cgf. :03/06/06 16:32
>>188
現在公開されているディスクイメージが正常起動するか確認していただけますか?
ttp://okotama.org/osdev-temp/mona-boottest030604l1.zip

現在のMonaはnewによりメモリを確保しない限り低位メモリ(1MB以下のメモリ)しかアクセスしないので
A20ラインの制御の問題は発現しません。
# 正確には、スタックにより1MB以上のメモリがアクセスされる可能性は有るはずですが。

192 :jack-11:03/06/06 19:10
ThinkPad570で動作確認できました。<最新版


193 :_:03/06/06 19:12
http://homepage.mac.com/hiroyuki43/jaz07.html

194 :ひげぽん ◆Ngzcp/NZpA :03/06/07 23:04
皆様にご協力いただきまして、FDCドライバ、FAT12ドライバの動作実績も
少しずつ上がってきました。

ちょっと落ち着いたのでMonaのメモリマップを整理しました
いろいろと問題をご指摘しいただき整理して
以下のような感じになりました。
ttp://wiki.osdev.info/index.php?plugin=attach&openfile=mona_mmap.png&refer=%5B%5BMona%5D%5D

195 :デフォルトの名無しさん:03/06/08 02:00
>>194
普通はピリオド付けるよ<ver.

196 :デフォルトの名無しさん:03/06/08 10:28
>>19
おりば曰く:
> ◆ ソースを見せるなんて、裸を見せるくらい恥ずかしいかもしれない
こればからは著作権者の気持の問題だから、あまりいえない。
ただ、人がソースを見たくなるような機能をもつコードを書いたのなら、
それは十分に胸が張れることだと自分は思う。
それは自分が無から己の知と指を使って創造したものだ。
それだけで素晴らしいではないか。
そして、人に見せる事を前提に書いたコードはちゃんとする傾向があるので、
あとで自分でメンテするのも楽。
自分専用に書いた自分のコードほど読みにくいものはない。(経験談)

197 :デフォルトの名無しさん:03/06/08 14:54
>早いところドライバインターフェース作って、スレのみんなでドライバ作ればドライバそろってウハウハかも。
電波爆発させても誰も相手にしない罠

なぜか!?
敢えて言おう、カスであると!

198 :デフォルトの名無しさん:03/06/08 16:38
御大を向こうに電波飛ばしてる。。
ttp://slashdot.jp/comments.pl?sid=99036&cid=331122

199 :デフォルトの名無しさん:03/06/08 18:12
>>198
宗教論争はあっちでやってもらえばいいかと。

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

200 :ひげぽん ◆Ngzcp/NZpA :03/06/08 21:57
>>195
確かにおっしゃるとおりです。m(__)m
どうも細かいところに気がいかないw

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

なるほどどの程度細かく書いたらよいのでしょうか。
一応今回メモリマップを書き直したのは、PAGING導入を見越して
再確認がしたかったからです。

201 :ひげぽん ◆Ngzcp/NZpA :03/06/08 22:04
週末の成果

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

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

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

以下は、メモリマップの更新版です。
ttp://wiki.osdev.info/index.php?plugin=attach&openfile=mona_mmap1.5.png&refer=%5B%5BMona%5D%5D

202 :デフォルトの名無しさん:03/06/08 23:57
>>201
あくまで、個人的な意見ですが、
たとえばGDT、IDTとかは、カーネル起動後には確保されてるわけだし、
BUFFだけは別に書いたほうがいいかも。
Memory for Kernelはあんまりかなぁと思いました。

あと、仮想メモリを使うつもりなら、仮想空間と実空間を書いたほうがいいかも。
空間内用が同じでも、同じものを二つ並べるだけで違ってくると思います。
同じって言葉で書くだけでもいいけど。

203 :デフォルトの名無しさん:03/06/12 00:01
もうちょっとマメになれ>okuoku
L氏は貴様以上の電波だったが貴様よりマメだったぞ

204 :デフォルトの名無しさん:03/06/12 22:19
>>203
お前さ、OSASKスレの方でもいろんな人を叩いてるよな



205 :デフォルトの名無しさん:03/06/13 01:19
売名行為で自作自演するスレはここでつか?

206 :デフォルトの名無しさん:03/06/13 10:55
よし、俺も名前売るか

207 :デフォルトの名無しさん:03/06/13 18:43
>>206
おまえのスマイルなど0円さ....

208 :デフォルトの名無しさん:03/06/13 23:18
>>207
かわいいねーちゃんのスマイルでも0円だからなw

209 :デフォルトの名無しさん:03/06/14 00:57
>>206
個人情報の売買ビジネスすか? Y!BBが始めたみたいだからブローカーになるとかw

210 :デフォルトの名無しさん:03/06/15 05:48
カーネルじゃなくて、javaや、.net、tronみたいな環境を作らない?
で、主要アプリがこっちに移植されたら下のOS(windows)を
さんざん姦った後の女のように捨てる。

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

とりあえずapiはjava、.netあたりのパクりで。


211 :デフォルトの名無しさん:03/06/15 05:58
スマイルの価格暴落は、マクロナルドの招いた大失態。
おかげで、PS2発売後のDVDプレイヤーのように、
業界はみな値段を下げざるを得なくなったからな。

212 :デフォルトの名無しさん:03/06/15 06:13
>>210
激しく同意、つーか、実はトレンド(w

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

ところでgcjって使ったことある?>ひげぽん&わたもち
カーネル開発に使うにはlibgcj依存が問題になりそうだが
STLの時みたいなハックで解決できると思う
そしたらJavaでカーネル書けるようになる
どーせひげぽんもわたもちもJava厨なんだから、
C/C++なんかよりいいでしょ(ゲラ

213 :デフォルトの名無しさん:03/06/15 06:40
UNIX系OSはたくさんあるがGUIはXで実質的統一されている。
これはつまり、カーネルが乱立していても、
GUIは協業できることを示している。

ディストリビューションとかそういう問題じゃないんだよ>わたもち

214 :デフォルトの名無しさん:03/06/15 06:42
>>211
スマイルなんざどーでもいい
中田氏の価格破壊キボンヌ

215 :デフォルトの名無しさん:03/06/15 08:32
>>214
西川口逝け

216 :デフォルトの名無しさん:03/06/15 08:43
>>215
ゴムだろ

217 :ひげぽん ◆Ngzcp/NZpA :03/06/15 11:37
>>202
貴重なご意見ありがとうございます。
仮想メモリを実装した際にメモリマップを更新いたします。

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

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

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


全然関係ないですが、↓こんなすごい人がいます。
ttp://wiki.osdev.info/index.php?AnotherMona

218 :デフォルトの名無しさん:03/06/15 12:08
>>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を移植する必要がある

219 :デフォルトの名無しさん:03/06/15 12:12
gcjについては、
Cygwinでの/usr/include/java以下を見てみるといいよ
きっと萌えるから(w

これはCNIっていうJNIの独自版みたいなやつで
JavaをC++に自動でマップしてるヘッダ
詳しいことは↓でも見てちょ
ttp://page.freett.com/gikob/gcj/cni.html

220 :デフォルトの名無しさん:03/06/15 13:20
穴モナ期待あげ

221 :デフォルトの名無しさん:03/06/15 18:09
>>210
Monoプロジェクトって.netクローンじゃなかった?

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

Monaなら、(コンパクトなカーネル+Java(?)VM)+Java(?)で書いたサブシステム
とかのほうがいいのかも。

222 :デフォルトの名無しさん:03/06/15 18:43
1からOSを作成するのでなく、既存OS上に仮想OSを作ろうかと。
新OSには、何が必要で、何が必要でないか意見ください。

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

・・・ほとんどActiveX?

>>212
すでにいろいろあるんだなあ。
ristiaってのはmegともに消えた?


223 :ひげぽん ◆Ngzcp/NZpA :03/06/15 23:19
今日の成果
ページングのテストをしていました。
Monaでは0〜4MBのメモリしか使用していないので

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

そして4MB以上はページテーブルを割り当てていない状態を作って
ページフォルトハンドラの実験等を行いました。

224 :デフォルトの名無しさん:03/06/16 06:32
>>222
VMとか大げさなことしなくても、たとえばただのライブラリのQtもそれを狙ってんだよ。

225 :デフォルトの名無しさん:03/06/16 07:01
>>218-219
すげーなgcj!!
びっくりした!!
Java厨になりそうだよ(w

226 :デフォルトの名無しさん:03/06/17 17:52
>>224
COMみたいな規格を考えてたんだけど、
たしかに単にライブラリでもいいかな。
でもwindowsではマルチプラットフォームのメジャーなライブラリってなさそうだし。

特殊なハードやOSを必要としないアプリ(ブラウザやメールとか)は、
OSに依存しないようになれば、ネタOSも使えるようになるのにな。w


227 :還す者 ◆AEqcy/sQU6 :03/06/20 16:18
                         ,.._
                       ∈ ゚ )
                        | |
                       (゚Д゚ )''""~"''彡,,
                      ⊂;;⊂'';;;,,,.,.,.,.,.,;;つ
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        プカプカ
         ,.._
       ∈ ゚ )
         | |        .  .
 保守>  (゚Д゚ )''""~"''彡,,゜。.゚ :
        U;;U'';;;,,,.,.,.,.,.,;;つ )) ) ) ) ) ) ) ) ) )
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               パシャパシャ

228 :デフォルトの名無しさん:03/06/21 16:17
>>220
> 穴モナ

これいいかも


229 :デフォルトの名無しさん:03/06/21 21:44
.∧_∧
(´∀`) <およびかい?
~~~~~~~~

230 :デフォルトの名無しさん:03/06/26 12:27
良スレあげ

231 :ひげぽん ◆Ngzcp/NZpA :03/06/28 00:25
久しぶりの書き込みです。

Monaで次に何を実装しようかと、考え続ける日々です。
そろそろプロセスの概念を決めるのが良いのかな。

232 :デフォルトの名無しさん:03/06/28 01:08
過去スレ漁ってたんだけど、ひげぽんがスレたててからもう一年経ってるんだね
これからも頑張って下さいね。( ´∀` )
漏れは今、monaのブート部分みて勉強してます

233 :デフォルトの名無しさん:03/06/28 01:34
をー、更新無くて心配していたよー。


234 :デフォルトの名無しさん:03/06/28 13:56
基本的に下げ進行でいきましょう。

235 :デフォルトの名無しさん:03/06/28 17:10
osdev-jの:
http://osdev-j.sourceforge.jp/pukiwikiacc.php?AnotherMona
にある、AnotherMonaの特徴に「プロセス空間の分離」とあるけど、
ソース見る限り、カーネル内のタスクは、cr3(page dir base)も固定、
セグメントも共通になっているので、分離されてないと思う。

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

サブシステムをタスクにする意味って、保護しないなら何かあるの?
今後修正する予定なのかな?

236 :235:03/06/28 17:41
各カーネル内タスクは、CS,SSのセレクタ値は一応異なった値を持たせてあるけど、
ベースとリミットが全く同じなので全く保護されていない。
また、システムコールのfork()をみると、cs,ss,dsのdpl=0,rpl=0なので、
やはりレベル0のまま。

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

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

マイクロカーネルが、出現時期は新しくとも、良い形態とは限らない由縁。

237 :デフォルトの名無しさん:03/06/28 20:39
自分で作りもしないくせに未完成のものに何文句つけてんだ?ん?

238 :デフォルトの名無しさん:03/06/29 02:35
いや、少なくとも自分には一つ勉強になる話だった。
マイクロカーネルは優位性が薄いってよく言うけど
具体的に何がネックなのか知らなかったから。
ここはみんなの勉強場所なんだからそう突っ掛かるもんでもないでしょ。


239 :デフォルトの名無しさん:03/06/29 13:00
>>235-236
マジで参考になった。

240 :デフォルトの名無しさん:03/06/29 14:03
>>235-239
2−3日前ぐらいにL氏が「Minixのマイクロカーネル構成は変」
と言ってた内容と等価なハナシで,それを具体的な内容で説明してくれてる
ので折れも参考になった。

 ひげぽんやアナモナ作者さんもタネンバウム先生の本から学んで
いて,現段階ではMinixの弱点(or手抜き)も とりあえずそのまま
持ち込んで,後で改良の予定なのかな?

241 :デフォルトの名無しさん:03/06/29 14:32
AnotherMonaのソースはMinixと関数名や、switch()文まで同じ箇所がある。
作ったと言うより必要な部分だけ取り出しただけだったり、、。

242 :デフォルトの名無しさん:03/06/30 21:55
>>241
CPP版Minixらしいよ

243 :デフォルトの名無しさん:03/07/04 18:09
age

244 :デフォルトの名無しさん:03/07/04 23:29
>>235
よくある話だが、開発者にとってのメリット(?)にコード管理が楽になった気がすると言うものがある。
この場合、コード的には、タスクとしてカーネルから分離しちゃうから。

そして、使用者には何のメリットにもならない事が多い。

245 :デフォルトの名無しさん:03/07/05 10:43
AnotherMona に粘着現れる。開発者の説明を待てないヤシはカエレ!

246 :デフォルトの名無しさん:03/07/05 11:26
別に粘着というほどのもんでもないような
まだ見てないけどsource0601.zipで解決したのかな

247 :デフォルトの名無しさん:03/07/05 21:43
Minixはオープンソースだし(BSDライセンスだったっけ?)
そこから必要な部分を抜き出し,CPPに書き換えてMona風に実装
ということを,もしアナモナ作者さんがしてても何の問題もないし,

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

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

,,,,,、これって粘着なんですかねぇ?

248 :デフォルトの名無しさん:03/07/06 12:07
MiniMonaでつか。

249 :デフォルトの名無しさん:03/07/07 17:56
MonaOSは常用に耐え得るOSを目指してるの?それともただの道楽?素朴な疑問

250 :デフォルトの名無しさん:03/07/07 18:00
>>249は常用に耐え得る人間を目指してるの?それともただの道楽?素朴な疑問

251 :デフォルトの名無しさん:03/07/07 18:01
オウム返ししか能の無い>>250よりは実用に耐え得る人間になりたいね

252 :デフォルトの名無しさん:03/07/07 20:09
って言うか常用に耐え得る人間って何よ。
変な奴等だ。

253 :デフォルトの名無しさん:03/07/07 22:06
>>249
仮にも、人様のやってることを「ただの道楽」と言えるほど、おまえはえらいのか ?

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

おまえは、荒らしじゃないと言うかもしれないけど、>>250-252 なんかが来るきっかけになりうると言うことを考えてみてくれ。

254 :デフォルトの名無しさん:03/07/07 22:18
>>253
その書き方で人にどうこう言えるのかい?あんたは

255 :ななみたん@誕生日:03/07/07 23:42
おまいらケンカイクナイょぅ
ママーリしるヽ(`ー´)ノ ⌒ ○

256 :デフォルトの名無しさん:03/07/07 23:46
あんまり動きが無いと不安だから保守してるだけっすよ。

257 :249:03/07/07 23:49
TRONのように積極的に普及させていきたいのか、それとも単に自己満足で作ってるのかと
聞きたかっただけなんだけど。それもいかんのかね?最近の2chは。
俺からすると>>253が荒らそうとしてるように見えてしまうんだけど

258 :デフォルトの名無しさん:03/07/08 00:01
>>257
実験と勉強かなあ。
普及目的って訳じゃないと思う。
まあ誰か曰くオナニーからセクースが生まれる事もあるらしいから。

259 :デフォルトの名無しさん:03/07/08 00:09
OS=オナーニセクス

260 :ひげぽん ◆Ngzcp/NZpA :03/07/08 01:17
久しぶりの書き込みな気がしますね。

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

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

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

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

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

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

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

  ⇒KernelProcessだけは、継承による型付けが必要だが
    UserProcessはsetEntryPointを用意して継承を必要なくすので一応解決
    
2.クラスのメンバ変数はstaticでない限り関数ポインタを取得できない(C++の仕様?)
  ⇒mainのアドレスをeipにセットできない。
  
  考えてみればあたりまえですね。。。。
  
  かといってstaticにしてしまうと、全てのインスタンスに共通なものになって都合が悪い。。。
  
  というような、堂々巡りをしつつ改良しています。

261 :ひげぽん ◆Ngzcp/NZpA :03/07/08 01:18
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;
};

262 :ひげぽん ◆Ngzcp/NZpA :03/07/08 01:18
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;
}

263 :デフォルトの名無しさん:03/07/08 21:19
>>257
あなたがどう言い訳しようとしても、>>250-252 見たいな書き込み誘発しているのは事実。

なんでそうなるかを考えたほうがいい。

264 :249:03/07/08 21:33
OS作りの活動をされている方、他このスレを読んでいる全ての方々、申し訳ありませんでした。
まさか>>253=>>263のような粘着厨を呼び寄せる結果となるとは思っていませんでしたので…

自分の書き込む前にはその書き込みによってどのような類の人間が呼び寄せられ・その人間の粘着により
どれほどスレを真面目に読んでいる方々に不快な思いをさせてしまうのかを重々考えねばならないと反省しております。

265 :デフォルトの名無しさん:03/07/08 21:39
>>>257
>あなたがどう言い訳しようとしても、>>250-252 見たいな書き込みや
>>>253-254 >>263-264 見たいな書き込み誘発しているのは事実。
>
>なんでそうなるかを考えたほうがいい。
>
>
>って訳で、まあ流しとけや >263

>>264
ってやろうとしたら先越されちまったい。
あんま気にすんなや。
ってえか流しとこう。

266 :jack-11:03/07/08 22:08
ANOMONA作者です。
ご指摘の通り現在のバージョンは殆どMINIXをCPPに書き換えただけのものです。
いわば、実験段階の前準備というところでしょうか。
現在の進行状況は、FSのマルチスレッド化をしているところです。
最終的にはメッセージ機構も含めてカーネルの基本部分も書き換える予定ですが、素人一人ではどうなるか。
まぁ、気長に見守って下さい。

267 :デフォルトの名無しさん:03/07/08 22:10
>>264
> 粘着厨を呼び寄せる結果となるとは思っていませんでしたので…

全然反省してないやん。

268 :デフォルトの名無しさん:03/07/08 22:38
>>266
楽しみに待ってます!

269 :デフォルトの名無しさん:03/07/08 23:05
>>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でやっていますが。

271 :デフォルトの名無しさん:03/07/08 23:52
ホントに作ってるYO……。

272 :デフォルトの名無しさん:03/07/09 00:28
>>270
Apacheの動作を大雑把に言うと、親プロセスがポート80にきた要求を
複数存在する子プロセスの暇なやつに処理させる。って感じ。(大雑把すぎたか・・・)

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

もしかすると、Openシステムコールの処理実態であるスレッドAがあって、
スレッドAがスリープするとIOも一時休止するって感じでしょうか?
FSスレッドのスケジューリング=IOスケジューリング、と考えたらいい?

273 :272:03/07/09 00:51
>>270
"multithreaded filesystem" でぐぐってみた。
昔からあるんですな。勉強不足でした。

274 :デフォルトの名無しさん:03/07/09 02:46
>>269
>>270
もしもし?マルチプロセスとマルチスレッドの違いくらいわかってるよね?
わかってないとしたらスゲー不安なんだが・・・。

275 :デフォルトの名無しさん:03/07/09 03:04
おおざっぱに言うとmemoryが共有されるか否かってとこかね

276 :one of all:03/07/09 03:31
マルチプロセス
プロセスを保存できるだけで、スレッドは1つしかない

マルチスレッド
スレッドが幾つかあるが、プロセスは1つしかない

277 :269=272:03/07/09 21:13
>>274 >>276
スレッドの定義は製作者によりばらばらなので、
このスレの前の方では適当に定義すればいいって流れだったような気がする。

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

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

とまぁ、素人知識なので、間違っていたらスマン。

278 :デフォルトの名無しさん:03/07/10 01:22
>>277
わかってるみたいで安心した。
でもね、プロセスとスレッドの二つの言葉を同時に併用してる以上、明確な区別は
付けておく方が混乱を防げると思うのですが、いかがでしょう?


279 :デフォルトの名無しさん:03/07/10 20:16
>>278
混乱したい奴はしておけ、とか
混乱しそうになったら誰かが防いでくれるさ、とか

SymbianOSやEPOCのように、オブジェクト指向ばりばりなOSになりますように。

280 :デフォルトの名無しさん:03/07/12 03:59
ひげぽん、"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 \

281 :280:03/07/12 12:23
dependenciesは自動生成やね。すまそ。
あとcore.asmという名前は他のに変えられないですかね?kcore.asmとかkernelcore.asmとかmonacore.asmとか・・・。
某ツールを使ったらメモリダンプのコアファイルと間違えてソースを消されちゃったから。
これはどうでもいいか。

282 :デフォルトの名無しさん:03/07/12 12:46
ひどいツールもあるもんだな・・・

283 :デフォルトの名無しさん:03/07/12 12:51
>>281
凄げぇツールだ……。良ければ、名前を教えてくれ。

284 :ひげぽん:03/07/12 17:18
>>280
ご指摘ありがとうございます。
Semaphoreの件は対応いたします。

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

285 :山崎 渉:03/07/15 10:02

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

286 :デフォルトの名無しさん:03/07/15 12:54
| 悲しいときー! |     |レスがついたと思ったら山崎渉だったときー!|
   ̄ ̄ ̄∨ ̄ ̄ ̄      ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧∧             ∧_∧
    ( ゚Д゚)            ( ´д`)
   ⊂○ ○ヽ           ||””””””””””|
     |  | ̄          ( ) 山崎渉(^^)( )
     / /\\            .||_____|
    / /  > /            / /  ) )
   (_)  >          (_) (_)

287 :デフォルトの名無しさん:03/07/18 20:32
ほしゅ


288 :あぼーん:あぼーん
あぼーん

289 :_:03/07/18 20:55
http://homepage.mac.com/hiroyuki44/

290 :デフォルトの名無しさん:03/07/18 21:41
さいきん超先生みないね

291 :超先生@divRR=∞ ◆leaf/RYZgY :03/07/18 21:44
>-~ いるけどネタがないんだよね。

292 :デフォルトの名無しさん:03/07/18 21:57
どうすればいいんだ

293 :ひげぽん ◆Ngzcp/NZpA :03/07/19 00:00
ユーザーモードプロセスの実装の準備中

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

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

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


これが間違っている可能性が捨てきれないなあ。
intelのマニュアルを熟読せねば

294 :デフォルトの名無しさん:03/07/19 11:01
レベルの低いセグメントにfar-retまたはiretする時は戻りレジスタをpopした後常にスタックにあるss:espもpopするです。
ユーザーモードのプログラムを呼び出す時にこの機能を利用してスタックにss:espとcs:eipをpushしてiretするやり方があるです。
某OSも最近までこの方法を使ってました。( ̄ー ̄)

295 :ひげぽん ◆Ngzcp/NZpA :03/07/19 14:32
>>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しなくていいとかではないですよね。
うーむ。

296 :ひげぽん ◆Ngzcp/NZpA :03/07/19 15:38
久しぶりにbochsで実験したところ
iret時に
00015320592i[CPU ] (mch) iret: Return with DPL != RPL. #GP(selector)

とでていた。
これがてかがりになりそう?

297 :デフォルトの名無しさん:03/07/19 15:38
tssのリング0スタックは適切に設定してますか?

298 :デフォルトの名無しさん:03/07/19 15:41
それはセグメントのDPL(ディスクリプタで指定してるレベル)とRPL(セレクタの下位2ビットで指定するレベル)が一致していないエラーかな?

299 :ひげぽん ◆Ngzcp/NZpA :03/07/19 15:43
>>297
tssのリング0スタックは適切に設定してますか?
はい。
設定しています。

ということは、ユーザー用のコードセグメントのセレクタ値0x28が
間違っているということでしょうか。
試してみます。

300 :ひげぽん ◆Ngzcp/NZpA :03/07/19 15:48
ユーザーモードセレクタ値を0x28 | 0x3 = 0x2Bとしたところ

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

となりました。
現在調査中

301 :ひげぽん ◆Ngzcp/NZpA :03/07/19 15:55
特権レベル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が違うと起こられているっぽい。

302 :デフォルトの名無しさん:03/07/19 16:00
csもssも両方dpl3,rpl3にすればok

303 :ひげぽん ◆Ngzcp/NZpA :03/07/19 16:05
>>302さん
アドバイスありがとうございます。
現行TSSのss0は、dpl0ですが
rpl葉、あえてかえる必要はあるのでしょうか?

タイマ割り込み時にdpl3のCSはどうなるかが
分かっていないようです。

304 :デフォルトの名無しさん:03/07/19 16:10
特権命令を呼び出す部分のコードはdpl=rpl=0、通常のアプリケーションプログラムコードはdpl=rpl=3になるように設計汁。
割り込みはコンテキスト切り替えとかが絡むのでdpl=rpl=0のセグメントで動かすのが普通、かな?

305 :デフォルトの名無しさん:03/07/19 16:14
って言ってる事が違うかも・・・

割り込みでリング0に移行する時は割り込みゲートでdpl=rpl=0のcsをロードし、リングが変わるのでtssからdpl=rpl=0のssとespをロードするです。

306 :デフォルトの名無しさん:03/07/19 16:18
あと、割り込みゲート自体のdplはハードウェア割り込みや例外のような直接呼び出さないものはdpl0
システムコール等のリング3から直接呼び出す割り込みはdpl3にするのが普通です。

307 :ひげぽん ◆Ngzcp/NZpA :03/07/19 16:18
プロセススイッチ開始前
  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がこけているような
印象です。 

308 :デフォルトの名無しさん:03/07/19 16:20
dsとesもdpl=rpl=3のセグメントにしておかないとメモリアクセスでこけるよ

309 :デフォルトの名無しさん:03/07/19 16:24
csは割り込みゲートで設定したセレクタが入るので0x08を入れておけばいいんでない?

しかし携帯はきついw
そろそろ落ちる

310 :デフォルトの名無しさん:03/07/19 16:33
まとめ

最初
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をあえて別のセレクタにする意味はあまりないです。
んじゃ落ちです。

311 :ひげぽん ◆Ngzcp/NZpA :03/07/19 16:42
いろいろとありがとうございます。

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

それを無理やりユーザー用スタックセグメントとして
使用して怒られていました。

312 :某携帯厨:03/07/19 17:02
ひげぽんもガンガレ!!

313 :ひげぽん ◆Ngzcp/NZpA :03/07/19 17:07
某携帯厨さん

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

この実験を参考に実際にコードを整理していこうと思い案す。

314 :ひげぽん ◆Ngzcp/NZpA :03/07/19 19:10
新規プロセスの作成はこんな感じです。

  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);

315 :ひげぽん ◆Ngzcp/NZpA :03/07/19 19:54
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/

316 :ひげぽん ◆Ngzcp/NZpA :03/07/19 20:00
今後やっていきたいこと。

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

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

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

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

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

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

・ファイルシステムのユーザーモード化

317 :デフォルトの名無しさん:03/07/19 20:02
あ・・・そう。

318 :ひげぽん ◆Ngzcp/NZpA :03/07/19 20:05
今日は久々にMonaの開発に半日も時間をとることが出来たので
いろいろと進展がありました。

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

今後もゆっくりペースではありますが、続けていきますので
今後ともよろしくお願いいたします。m(__)m

319 :ひげぽん ◆Ngzcp/NZpA :03/07/20 13:29
今日の成果

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

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

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

課題

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

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

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

Semaphore関連でも同様

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

他のOSのスケジューラーがどのような方法を採用しているか
興味のあるところです。

320 :ひげぽん ◆Ngzcp/NZpA :03/07/20 19:57
>各プロセスのsleep/wakeupのタイミングで、dispatchキューにいるのに
>いつまでたってもCPUタイムをもらえないものがいる。

これは、単純なプログラムミスでした。

321 :ひげぽん ◆Ngzcp/NZpA :03/07/20 21:52
プロセススケジューラおよびシステムコールについていろいろ考えているのですが

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


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

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

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

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

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

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

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

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

        最悪の場合gccの吐くアセンブラコードの統計を取れば何とかなるとは思うのですが。。。

322 :デフォルトの名無しさん:03/07/20 21:55
Linuxのプロセススケジューラはお勧めできない。
gotoが読みづらい。
でも、2.5あたりでスケジューラに大きく手が入ってたから
2.6のtest版とかを見てみるのもいいのかも。

323 :デフォルトの名無しさん:03/07/20 22:33
相変わらずUzeeeeeeeeeeeeeeeeeeeeeeeeeeスレだな

324 :デフォルトの名無しさん:03/07/20 23:47
>>323
お前が相変わらずうざいだけに1票

325 :デフォルトの名無しさん:03/07/21 00:48
>>323
ふっふっふっふっふ、苦しめ苦しめw

326 :デフォルトの名無しさん:03/07/21 02:35
>>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の開発いいなぁー
俺もいつかは…

329 :デフォルトの名無しさん:03/07/21 07:39
ひげぽんはこのスレ作ってから勉強してここまできた奴だぞー。
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がそれだ。

ありがとうございます。きちんと規定されているようなので
安心して使用できそうです。

331 :ひげぽん ◆Ngzcp/NZpA :03/07/21 16:58
タイマ割り込みとスケジューラの計測をしてみました。

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

タイマ割り込み 10msのはずなので(どこで設定しているんだろう・・・)
スケジューラ 6nsほどということになります。

332 :ひげぽん ◆Ngzcp/NZpA :03/07/21 18:53
今日の作業

システムコールの実装をしているところで
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許可あたりだと思うので現在調査中です。

333 :デフォルトの名無しさん:03/07/21 22:33
>>331
Pentium4とPentium3以前では、結果が大きく変わります。
アーキテクチャが大きく変わって、P4はパイプライン20段+α、P3は10段+α。(だった気がする)
単純に考えると、パイプラインストールのコストの違いにより、モード切替コストが違います。
(詳細に述べると少し違いますが、あくまでも単純にってことで勘弁)
P4は動作クロックが大きく単位時間当たりの命令実行数が多いので相対的にモード切替コストがでかいです。
この辺は、nsec msec の世界だから、とりあえず気にしないってのもあり。

インテルアーキテクチャはマイクロコードで実行なので、
RDTSC命令の前(前後?)にシリアル化命令(?)ってのを入れると、より正確に計れるそうです。
RDTSC命令やシリアル化命令によって、動作が変わって正確じゃなくなりますけどね。

334 :デフォルトの名無しさん:03/07/21 23:06
モード切替オーバーヘッド軽減のためにsysenter命令使いませうヽ(`ー´)ノ

335 :デフォルトの名無しさん:03/07/22 09:43
VirtualPCやBochsでsysenterは、実装されてるのかな?
他にはAthlonやDuronやS3なども。

まぁ、Monaはマイクロカーネルなんだから、モード切替コストをおさえるために、
P4向けにはsysenterが必要になるでしょうね。


336 :デフォルトの名無しさん:03/07/22 09:47
マイクロカーネルは逆にモード切替をほとんどしないと思うんだけど・・・

337 :デフォルトの名無しさん:03/07/22 10:29
IPCをring3で出来ればそうなるねえ。
出来るかなぁ。


338 :ひげぽん ◆Ngzcp/NZpA :03/07/22 22:51
>>333さん
> RDTSC命令の前(前後?)にシリアル化命令(?)ってのを入れると、より正確に計れるそうです。
> RDTSC命令やシリアル化命令によって、動作が変わって正確じゃなくなりますけどね。

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

>>334さん

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

インテルのマニュアルで調べました。
おもしろいですね。まさにシステムコール用ですね。
サポートしているCPUがわりと限定されてしまいそうなのが残念です。

339 :デフォルトの名無しさん:03/07/23 01:51
これから出るcpuはsysenter命令に対応してるんだし
将来を考えるとsysenter命令に対応しておいた方が得策だと思う
sysenter命令用に設計したAPIはstubを細工すれば非対応cpuでも
int命令等で呼び出せるけど逆は難しい

ちなみにamdにはsyscallとゆう別の似た命令があるが
思想の違いからか動作が微妙に違う

340 :デフォルトの名無しさん:03/07/23 10:46
>>336
逆にマイクロカーネルこそモード切替が増えると思ってたけど、勘違いか。

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

341 : :03/07/23 18:22
        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)<  APIまだぁ?
             \_/⊂ ⊂_)_ \_______
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |            .|/

342 :デフォルトの名無しさん:03/07/23 18:26
>>340
モノリシックだとAPI処理で必ずカーネルモードに移行する
マイクロはどうしても必要な時以外ユーザーモードで処理する
マイクロでカーネルモードを頻繁に呼び出すのは設計に問題がある


343 :デフォルトの名無しさん:03/07/23 20:19
>>342
OSサーバをユーザプロセスとして動かしているわけだから、プロセス切替が起こり
当然モード切替も起こると、思っていたのですが、これは古い実装?
MacOSXがBSDサブシステムをカーネルにくっつけたのもこの辺が理由かと思ってたのですが。

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

344 :ひげぽん ◆Ngzcp/NZpA :03/07/23 21:01
>>339
> これから出るcpuはsysenter命令に対応してるんだし
> 将来を考えるとsysenter命令に対応しておいた方が得策だと思う

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

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

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

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

なるほど。MONAPI(もなぴ)おもしろいですね。

345 :デフォルトの名無しさん:03/07/25 16:40
monapiあげ

346 :デフォルトの名無しさん:03/07/26 21:07
MonAPIだろ。

347 :みつみ里美:03/07/28 17:55
保守(`□´)くわっ

348 :デフォルトの名無しさん:03/07/28 17:56
>>347
やらないか?

349 :デフォルトの名無しさん:03/07/31 23:04
>>331
6ns(ナノ秒)じゃなくて6μs(マイクロ秒)だよ。

350 :デフォルトの名無しさん:03/08/01 00:54
>>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なんて作れないとだけ言っておく
んじゃ!

351 :デフォルトの名無しさん:03/08/01 01:14
>>350
> んじゃ!
二度と来るなよ、基地外

352 :デフォルトの名無しさん:03/08/01 01:37
粘着基地外(゚听)カコワルイ

353 :デフォルトの名無しさん:03/08/01 02:12
激藁嘲笑厨は死滅スレへカエレ

354 :デフォルトの名無しさん:03/08/01 02:17
>>351-353
ひげぽん信者、ご苦労様です

355 :デフォルトの名無しさん:03/08/01 02:45
ひげぽんにアドバイスがあると
必ず粘着粘着って噛み付いてくる信者がいるね
おー、こわw

356 :デフォルトの名無しさん:03/08/01 02:58
その信者ってコーディングに貢献してんの?

357 :デフォルトの名無しさん:03/08/01 03:11
それ以前に>>350はまともなアドバイスなの?

358 :デフォルトの名無しさん:03/08/01 03:14
>>357
ひげぽんが俺ルールなのは独自主義を目指してるからじゃなくて
単に無知だからでしょ

359 :ひげぽん ◆Ngzcp/NZpA :03/08/01 22:47
>>350さん
こんばんは。ご指摘ありがとうございます。
mona-0.0.8というリリース名が良かったということですね。
次は忘れないようにmona-0.0.9といたします。m(__)m

360 :デフォルトの名無しさん:03/08/01 23:31
>>359
リリース名なんて気にしなくていいよ。それよりガンガレ!
応援してるぞ。

361 :デフォルトの名無しさん:03/08/01 23:40
何故、バージョン番号にそんなにこだわるのかわからない。
別に0.0.8aとかいうバージョン名なんて十分一般的。
自分の知ってるものだけが一般的とか思い込むのは、
視野を狭めるだけと、何度も言われたことがある。

362 :Alice ◆GG1SfzBGbU :03/08/01 23:57
前のスレで板違いって追い出されてきたんでこっちに住み着いてもいいですか?(゚听)

363 :デフォルトの名無しさん:03/08/02 02:08
おー、すげぇ進んでるなぁ。ちょっとずつだけど確実に。
漏れはプログラムなんてまっっっっっったくできないモンだから、何いってんのか
サッパリだけど、みんなガンガレ。
ああ、C++ならちょっとだけかじったよ。
インクr・・・ゴメンオレガワルカッタ。
楽しみにしてるよひげぽんサン!

364 :山崎 渉:03/08/02 02:19
(^^)

365 :デフォルトの名無しさん:03/08/02 15:49
>別に0.0.8aとかいうバージョン名なんて十分一般的。
>自分の知ってるものだけが一般的とか思い込むのは、
>視野を狭めるだけと、何度も言われたことがある。
前半と後半で矛盾してるぞ

366 :デフォルトの名無しさん:03/08/02 17:43
>>365
特に矛盾はしてないと思いますが。
『「(自分の知っているものだけが一般的)と思い込む」のは視野を狭める』

『自分の常識は、世間の常識とは限らない』
とは、別ですよ。

バージョン番号+a,b,cの形は、そんなに使われてませんかね。
よく見かけると思いますが。
ただ単に、文句言いたいだけならいいんですけど。

367 :デフォルトの名無しさん:03/08/02 18:12
荒れてるねえ

368 :デフォルトの名無しさん:03/08/03 12:08
>>365
プログラマーにむいてないよ

369 :デフォルトの名無しさん:03/08/03 13:05
>>368
プログラミング的な観点から論じたら?

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

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

370 :デフォルトの名無しさん:03/08/03 13:39
>>359
ひげぽんさんはなんでこんなにいい人なんだろう。
GPLは嫌いだからコーディングには協力できないけど、
応援の気持ちを込めてVMWareを寄贈しよっと♥

371 :デフォルトの名無しさん:03/08/03 19:38
>>369
> 比較が機械的に出来るのがx.x.x.xみたいな形の売り。

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

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

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

>>370
すげー。
あんたもいい人やね。

372 :デフォルトの名無しさん:03/08/03 20:12
Windows 5.1.2600なんて名前で売られても困る
αとかβとかはひげぽんが好きみたいだから出しただけ

373 :デフォルトの名無しさん:03/08/03 20:21
バージョンなんてリリースする人の趣味に合わせれば良いのに。
とある有名ソフトなんて、バージョン3から始まって、次がV3.1、その次がV3.14、その次が・・・
と、とても趣味に走ってるが文句を言う奴は見たことが無い。

374 :ひげぽん ◆Ngzcp/NZpA :03/08/03 21:26
>>370 匿名希望さん
御寄贈いただいたVMWare確かに受け取り、動作を確認できました。
Monaの開発を続けていくことでしか御礼は出来ませんが
本当にありがとうございました。
なお、詳細はメールでお送りさせていただきました。

375 :350:03/08/03 22:16
Monaはファイル名とリリース名で既に二本立てだったから聞いてみただけ
なぜかVMwareまで出てきて驚いたが俺のおかげだな(w

376 :デフォルトの名無しさん:03/08/03 22:24
>>375
それが良かったかどうかは分からんぞ。

そもそもいい人って理由だけでVPCやVMWをgetできるとは思えん。
きっつい交換条件とかあったんじゃないの?>ひげぽん
L氏だったら受け取りを拒否するだろう。
金を貰って言いなりになるくらいならっつって未踏を批判してたくらいだからな。

377 :デフォルトの名無しさん:03/08/03 22:46
少なくともひげぽんが376みたいなやつだったら
何もゲットできないどころかプロジェクト自体も袋小路に陥ってたかも
NWSOSは公開してすぐそんなトラブルがあったし…
少なくともMonaがひげぽんの人格に負う所が大きいってのは確かだろうね

378 :デフォルトの名無しさん:03/08/03 23:37
350はまったく関係なく、ひげぽんさんの人柄でしょうね。
VirtualPCも貰ってなかったっけ?

379 :デフォルトの名無しさん:03/08/03 23:59
>>372
Windows 95, Windows95A, Windows95B, Windows95 OSR-2 とかだったら困らないのか ?
俺なら、Windows 5.1.2600 のほうがいいよ。

380 :デフォルトの名無しさん:03/08/04 00:05
>>373
TeX だったっけ ? 今どこまでいってんだろ。

>>376
あんたの言ってることが事実かどうかはわからんけど、万が一事実だとしてもあんたがどうのこうの言う問題じゃないよ。
ひげぽんさんと >>370 さん間の問題だからね。
事実じゃないとしたら、あんたは >>370 サンに非常に失礼なことを言ってるんだけど、それはわかって書いてるのか ?

381 :デフォルトの名無しさん:03/08/04 00:31
ここにいるやつの大半はVMwareかVirtualPCを持ってるだろ
そんなありふれたものをあげるかどうかなんて大した問題じゃないだろ
彼女や嫁さんを一晩貸してくれる方がずっとすごいことだぞ

382 :デフォルトの名無しさん:03/08/04 00:37
ここにいるやつの大半は嫁さんか彼女がいるだろ
そんなありふれたものを貸すかどうかなんて大した問題じゃないだろ
VirtualPCやVMwareをくれる方がずっとすごいことだぞ

383 :デフォルトの名無しさん:03/08/04 00:42
>>382
うまく揚げ足を取ったつもりだろうが全然ちゃうぞ

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

1年間同じOSを使い続けるやつは多いが
結婚して1年間ずっと嫁さんとラブラブなやつは少ない
大抵フーゾクとかに行ってる
最初に付き合った相手と何年か後に結婚したようなやつでさえ

384 :デフォルトの名無しさん:03/08/04 00:45
>>383
Windows 3.1とWindowsNT 3.1が同じですか、そうですか、、

385 :デフォルトの名無しさん:03/08/04 01:20
同じだろ

386 :デフォルトの名無しさん:03/08/04 21:37
>>373
3.11ってのもあったな

あと、SPxとかSEも。

387 :mon:03/08/04 21:42
moooooooooooooooooooo

388 :デフォルトの名無しさん:03/08/04 22:01
>>383
> 女は年齢が同じでも一人一人全然違う

MS のバグより始末の悪いやつもいるからな。

389 :デフォルトの名無しさん:03/08/04 22:16
何故ひげぽんマンセースレになってんだ?
気持ち悪いんですけど。。

前スレ1000getしたやつの陰謀か?(w

390 :デフォルトの名無しさん:03/08/04 22:56
>>389
ひげぽんのスレだから別にいいかと...。
気持ち悪けりゃ来なきゃいいじゃん。

391 :デフォルトの名無しさん:03/08/04 22:58
VMware 寄贈つうても流出尻教えただけじゃねぇのか

392 :デフォルトの名無しさん:03/08/04 23:09

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



393 :デフォルトの名無しさん:03/08/04 23:28
>>390=自演ひげぽんwwwwwwwwwwwwwww

394 :デフォルトの名無しさん:03/08/04 23:29
>>370=自演ひげぽんwwwwwwwwwwwwwww

395 :デフォルトの名無しさん:03/08/04 23:31
ひげぽんって自演するから大好きん!!!!!!!!!!!!!!!


396 :デフォルトの名無しさん:03/08/04 23:34
>>391-395
夏だねぇ〜。

397 :デフォルトの名無しさん:03/08/04 23:42
馬鹿が来て騒いでるな
ここいらで疑惑を晴らすためいっちょMonaオフでもしないか?
当然、渦中のひげぽん、370は強制出席
このスレで時の人になったokuokuやわたもちも来ないと意味ねーな
でもさすがにLやKや横谷は無理か..........

398 :デフォルトの名無しさん:03/08/04 23:46
>>388
でもいい女は本当にいい。
……と気を許して結婚したのも束の間、
豹変してダンプ松本になるやつも多いが(泣

399 :デフォルトの名無しさん:03/08/04 23:48
ひげぽんの自演トークつまんね

400 :400:03/08/04 23:51
  〆〃ハハ
  ∬∬´▽`)
  (( ⊂   ) ⊃
    し(_)

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

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

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

    ノハハベ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (´▽`∬∬<やったぁ!ついに400ゲットできたよー
     (   U ))   \_________________
    (__)\ノ

401 :デフォルトの名無しさん:03/08/05 00:37
              _,.. ---- .._
            ,. '"       `丶、
            /            ` 、
          ,..-‐/    ...:  ,ィ  ,.i .∧ ,   ヽ.
.       ,:'  .l .::;',. :::;/..://:: /,':/  ', l、 .i  ヽ
.        ,'  ..::| .::;',' :;:','フ'7フ''7/   ',.ト',_|, , ',.',
     ,'   .::::::!'''l/!:;'/ /'゙  /     '! ゙;:|:、.|、| 'l
.       ,'.  .:::::::{ l'.l/  、_  _,.      'l/',|.';|
     l  :::::::::::';、ヾ      ̄     `‐-‐'/! ';. '
.      ! :::::::::::/ `‐、        ゝ   |'゙ |
     | ::::::::/   \    、_, _.,.,_ ノ::: !   ひげぽんが、幸せになりますように・・・
     |::::/.     _rl`': 、_     ///;ト,゙;:::::./
..    `´      /\\  `i;┬:////゙l゙l ヾ/   
              ,.:く::::::::`:、\ 〉l゙:l  / !.|
.          /:.:.:.:\:.:.:.:.`:、ソ/:.:|    | |
         /.:.:.:.:.:.:.:.:.:\:.:.:.:У:.:;l   /./
.        /:.:.:.:.:.:.:.r'´`‐,`、:/.,.:‐{   | !`:、
         ,'.:.:.:.:.:.:.:.:.';_,゚.,ノ.:./,:':.:.:.:',  | |`、:|
         !:.:.:.:.:.:.:.:.:.:.゙、:.::/:.:.:.:.:.:.ヽ, / ,!:.:`、

402 :ひげぽん ◆Ngzcp/NZpA :03/08/06 00:34
Monaの近況を報告。

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

などの設計をしています。
上記3つは、結構絡み合っていて楽しいです。

403 :デフォルトの名無しさん:03/08/07 21:14
>>ひげぽんさん
今必要かどうかわかりませんが、
 メモリの強制アクセス制御方式(Mandatory Access Control:MAC)
 バッファオーバフロー対策のOpenwall、SSP
などを知っていいたほうがいいかも。

404 :ひげぽん ◆Ngzcp/NZpA :03/08/07 23:53
>>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さんはどう考えてもぴげぽんさんよりも、成長が早いのは言うまでもなかったのに、
そこに突っ込んでしまった。正直、貴方のようなある程度極めている人としては、どっしりと構えて欲しかった。
もう一度言うが、あなたのほうがひげぽんさんよりも、どう考えても能力はすべて高い。
もちろん貴方が向上心を無くしてしまい、ひげぽんさんが向上心を保てば追いつく可能性があるがな。
そこが一番残念だと思った。



406 :デフォルトの名無しさん:03/08/08 17:58
オリジナルのLタソはもういないよ
今いるLタソは影武者

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

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

俺としては、ゆっくりでもいいとは思う。外部者だからかもしれん。ただここで技術を提供している人にも、あんたを遅いと思っている香具師はいるらしい。
まぁ実際「どこまでできるかな?」って冷ややかな目の香具師もいるだろう。
俺としては気にすることもないと思うが、まぁ協力者なのも事実だし、その辺の兼ね合いは、もめない程度にやってくれ。
もめたら一気にプロジェクトの破壊を招く。たった1日でな。その人間性をクズさんと、頑張れや

408 :デフォルトの名無しさん:03/08/08 18:02
遅いがageてしまった。・・・・鬱だぁぁぁぁっぁぁっぁぁぁぁっぁぁ

409 :デフォルトの名無しさん:03/08/09 00:45
いつからひげぽんのことをひげぽん”さん”とよぶやつがふえてきたの?

410 :デフォルトの名無しさん:03/08/09 00:56
そんなこと過去ログ嫁としか。

411 :デフォルトの名無しさん:03/08/09 02:39
あひゃ

412 :デフォルトの名無しさん:03/08/09 12:41
あびゃ!

413 :デフォルトの名無しさん:03/08/09 15:19
ちょっと聞きたいのですが。
.imgファイルを作成できたんだが、cygwinでそれからどうやってOSを起動するの?
それとも他の方法があるのでしょうか。
誰か教えてくれませんか?

414 :デフォルトの名無しさん:03/08/09 16:31
>>413
http://mona.sourceforge.jp/dynamic/pukiwiki/pukiwiki/pukiwiki.php?HowTo%2FBoot


415 : :03/08/09 19:55
ひげさんでいいじゃないか

416 :デフォルトの名無しさん:03/08/09 22:27
>>414
なんとかbochsをダウソロードして動かせました。
これを使ってOSの開発の動作テストできるんですね。
設定うまくやれば、ブートプログラムだけでもできるんでしょうか?
まぁ俺にはむりっぽそうだが。

417 :デフォルトの名無しさん:03/08/09 23:29
>>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
このあたりを見てみると面白いと思うよ。

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上で動作したのをみて、感動しました。

また長々とすみません。逝ってきます。

420 :デフォルトの名無しさん:03/08/10 02:50
キーモーイースーレー

421 :ひげぽん ◆Ngzcp/NZpA :03/08/10 11:43
>> 414さん
フォローありがとうございます。

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

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

syscall_sleepで、dispach_queueが空になってしまうと
NULLプロセスが実行されてしまうというお粗末なミスもありました。

422 :デフォルトの名無しさん:03/08/10 12:56
>>421
アイドルプロセスを作りましょう。
常にReadyかRUN状態で優先度は一番下。

423 :419:03/08/10 13:25
ちょっと難しいことを聞きたいのですが、上で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のことですか?

何か質問ばっかですみません。無知なことは承知です。

424 :デフォルトの名無しさん:03/08/10 13:42
monaはpc98用に出来てないから_

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

にしても、ひげぽんは頭がいいのか、すごい吸収力があるものだ。
あとここの住人の頭の良さにも脱帽です。

426 :ひげぽん ◆Ngzcp/NZpA :03/08/10 16:25
>>422さん
>アイドルプロセスを作りましょう。
>常にReadyかRUN状態で優先度は一番下。

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

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

のように逃げています。

427 :デフォルトの名無しさん:03/08/10 17:25
>>426
今日は休みだから、進歩できそうだな。
頑張れよ。動かして、できるもんなんだなぁと実感したよ。

428 :デフォルトの名無しさん:03/08/10 17:43
>>425
アセンブリはCPU同じだし、そんなに違わない。
つか同じ。
ブートアドレスとか、メモリマップとか、I/O周りとかが違う。


429 :デフォルトの名無しさん:03/08/10 17:48
>>428
情報ありがとうございます。参考にさせていただきます。

430 :デフォルトの名無しさん:03/08/10 18:19
>>429
メアドさらせ。PC98xx用の、その辺の書籍を譲ってやっても良いぞ。
「PC98シリーズテクニカルブック」とかいろいろ有る。
探せば「初めての8086」とかも出てくるはずなんだけど、今ちょっと見当たらんw



431 :デフォルトの名無しさん:03/08/10 18:25
関連スレ追加
ReactOSを見守るスレ
http://pc.2ch.net/test/read.cgi/os/1060475345/
現状完成度はまだまだだけど開発速度速い。今月末でexplorerが載るらしいのでそのupdateに期待してみる

432 :デフォルトの名無しさん:03/08/10 18:25
>>430
そこまでの技術を持っていないので、遠慮させていただきます。
気持ちはありがたくいただいておきます。


433 :デフォルトの名無しさん:03/08/10 19:25
>>426
> if (runキューが空) カレントプロセス=アイドルプロセス
この判定を省くのが、アイドルプロセスの利点の一つだと思うけど。
スケジューラは何回も呼ばれるので、性能に影響大です。
とりあえずの実装なら、少しだけ走って、キューの後ろにつなぐだけでいいのでは?

ひとつ質問ですが、runキューってReadyキューと同じ意味で使っています?
それとも、別物として実装してます?

434 :デフォルトの名無しさん:03/08/10 19:57
>>430様、>>429
横からで大変申し訳ないのですが『PC98シリーズテクニカルブック』を私に譲っていただけないでしょうか?


435 :デフォルトの名無しさん:03/08/10 20:24
>>434
よろしいですよ。429さんも現在は必要無いとの事なので。
ただし、今確認したところ手元に有るのは「ハードウェア編」のみです。
「bios編」は見当たらない所を見ると友人が持っていったくさい・・・w
これでもよければ送料だけもっていただくという事でどうでしょう?
まぁお礼は拒みませんけど(・∀・)



436 :デフォルトの名無しさん:03/08/10 20:43
>>432
UNDOCUMENTED 9801/9821 Vol.2 メモリ・I/Oポート編
http://www.webtech.co.jp/undoc/
ここから気楽に見てみるのもいいかもしれません

437 :デフォルトの名無しさん:03/08/10 20:47
>>436
おお、いいものありがとうございます。
って思ったら一度行ったことがあったようです。たぶん素通りしてしまったようです。
あらためて見させていただきます。
貴重な情報ありがとうございました。

あと明日学校の図書館行ってみます。
休業中でもやっているとのことで、たぶん人もほとんどいないと思うので、のんびりと探してみます。

438 :434:03/08/10 20:55
>>435
ありがとうございます。429さんよろしいですか?
スレ使うのも申し訳ないのでメールでしましょう
anonymouscoward@mail.goo.ne.jp

439 :デフォルトの名無しさん:03/08/10 21:15
>>438

/.逝ってよし!

440 :デフォルトの名無しさん:03/08/10 21:19
>>439
おまえもなー
おまえもなー

441 :デフォルトの名無しさん:03/08/10 23:44
このスレというか、板だと/.民も結構いるのかなぁ。

442 :ひげぽん ◆Ngzcp/NZpA :03/08/11 00:11
システムコール周りで苦戦中

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

ちょっとだけはまりぎみです。

443 :デフォルトの名無しさん:03/08/11 18:31
学校の図書館に行って本借りてきました。

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

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

計7冊借りてきました。
焦らずゆっくり理解していこうと思います。


444 :デフォルトの名無しさん:03/08/12 10:33
聖蹟桜ヶ丘のアートマンの上の本屋に
初めて読む8086が新書でうってたよ
ちょっとびっくり

僕は昔、2冊かって、2冊ともなくした。

445 : :03/08/12 13:20
>>444
もいっかい買え

446 :ひげぽん ◆Ngzcp/NZpA :03/08/13 00:32
>> 442
解決しました。
プロセスのコンテキストセーブ時にCS & 0x03をして
判断している部分でケアレスミスをしてました。

gccのインラインアセンブラを疑ってしまいました。
全く関係なかったですね(笑)

447 :デフォルトの名無しさん:03/08/13 12:56
>>445
じゃぁ今から買いに行きます。

最後の一冊だったらおいといてください>買いに行く人

448 :デフォルトの名無しさん:03/08/13 17:32
>>447
うってなかった

449 :デフォルトの名無しさん:03/08/14 04:00
すみません、ちょっと聞きたいのですが、
「初めて読む486」ってのは、i486のブートの方法とか載っていますか?
メモリマップみたいのですが。
注文して買ってみようかと思っていたので。

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

http://x86.ddj.com/intel.doc/486manuals.htm

450 :デフォルトの名無しさん:03/08/14 17:48
>>449
Intelドキュメントは大事だよー
intelのサイトから落とせなかったっけ?

451 :デフォルトの名無しさん:03/08/15 00:10
>>449
ないよ。
メモリマップはハードの設計依存だし。

ブートの方法は,手元にあるのだと"80x86/80x87ファミリーテクニカルハンドブック"つー本に載ってる。
10年前の本だが…


452 :デフォルトの名無しさん:03/08/15 01:27
>>451
おお、サンクソ。
ってことは上のURLから落としたPDFを解析しなければならないですね。
頑張ってみます。みなさんスレ汚しすみませんでした。

↓から、「ひげぽんのOS製作奮闘紀」に戻ります。

453 :ひげぽん ◆Ngzcp/NZpA :03/08/15 01:34
>> 449さん
PDFは重要そうなところは印刷して電車の中で読んだりしました。
やはり一番詳しいのと、意外と難しくないという印象でした。

今日はシステムコール中の割込み許可について
実験してました。
大体うまく言っている予感なので週末に検証しようと思っています。

454 :デフォルトの名無しさん:03/08/15 01:38
>>453
アドバイスありがとうございます。

455 :山崎 渉:03/08/15 15:49
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

456 :ひげぽん ◆Ngzcp/NZpA :03/08/16 15:25
□Monaで以下のようなことができるようになりました。

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

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

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

□おしらせ

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

□その他

Monaプロジェクト成果物のライセンスをGPLから修正BSDライセンスに変更することを検討しています。
ご意見のある方はMona PJ Wikiへお願いいたします。

457 :デフォルトの名無しさん:03/08/16 15:33
脱GPL宣言!

458 :デフォルトの名無しさん:03/08/16 22:31
あぼーん

459 :デフォルトの名無しさん:03/08/17 15:03
GPLから、BSDに移行って、不可能なのでは?
フルリライトするなら、別だけど。

460 :デフォルトの名無しさん:03/08/17 15:03
「はじめて読む486」をamazon.co.jpから購入しますた。
って言っても今日発送されただけなんだがね。在庫あと3点だったらしく、危なかったのかなぁ?
でも買う人そんなに居ないだろうし、まぁ良かったと。

461 :デフォルトの名無しさん:03/08/17 15:04
monaのソースってCygwinしかコンパイルできないの?

462 :デフォルトの名無しさん:03/08/17 15:13
>>459

参考にしたり、取り込んだソースが(あったとき) そのソースが GPL で
なければ問題ないよ。

463 :デフォルトの名無しさん:03/08/17 17:44
いままでのMonaソースはGPLで配布されてたと思ってた、確かめたら何も書いてなかった。

464 :ひげぽん ◆Ngzcp/NZpA :03/08/17 20:04
>> 463さん
こんばんは。

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

src/COPYINGにGPLに関して記述があります。
分かりづらくてすいません。

465 :460:03/08/17 23:50
こらーひげぽん、BBSにアマゾンのバナー付けて儲けようとするなー・・・・・・・
って思ってクリックしたら、アンケートに答えたら500円分のギフト券くれるだってぇ。
もったいねぇなぁ、もう注文してモロタ。

466 :デフォルトの名無しさん:03/08/18 22:02
ライセンス確認。
一度GPLで配布したものを、違うライセンスにすることは可能なのかな?

個人的には、NYSLが好きだけど。

467 :デフォルトの名無しさん:03/08/18 22:23
>>466
GPLはあくまでも配布する側と受け取る側と間の契約。
受け取った側は再配布する時にGPLに束縛されるが
オリジナルを配布する人はGPLによる拘束を受けないので
ライセンスを変更して配布することが可能。

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


・・・、あれ?stlport以下って大丈夫なのか?
ソースとしては独立してもコンパイル後に同じバイナリー内になる
ソースだったらライセンス違反になっちゃうぞー。
(GPLがそう強制してくる。)


468 :デフォルトの名無しさん:03/08/18 23:07
http://www.stlport.org/doc/license.html
ここのライセンスでいいのかな?
GPLではないっぽい。

469 :デフォルトの名無しさん:03/08/18 23:25
>>456
素晴らしい!
神のような決断!!!
脱GPL最高!!

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

470 :ひげぽん ◆Ngzcp/NZpA :03/08/18 23:47
>>465さん
>こらーひげぽん、BBSにアマゾンのバナー付けて儲けようとするなー・・・・・・・

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

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

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

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

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

471 :469:03/08/19 00:30
>>470
BSDLについて1つだけ。

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

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

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

他にBSDで喜ぶ人ってのは商売っ気のある人かな。
でも正直BeOSでさえ破綻したOS屋稼業なんか無理と思う。
だから商用うんぬんなんてのは実質意味を持たないよ。
(続く...)

472 :469:03/08/19 00:41
だから結局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に一本化させたりしたこともある。
当時作者はライセンスの知識や思想なんか全然なくて、
適当に他のソフトから持ってきただけだって言ってた。
ひげぽんに似てるかも。

473 :469:03/08/19 00:51
あと補足。
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化はダメ)

474 :XOrg:03/08/19 10:37
細かい亜種が色々あるけど本家が一番洗練されている。
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.
(後略)

475 :ひげぽん ◆Ngzcp/NZpA :03/08/21 00:35
むむ。
BSDLを採用することがBSD派?と、本当に思われて
PJ戦略上よろしくないのであればBSDLも考え直さなければならないですね。

476 :デフォルトの名無しさん:03/08/21 11:20
暇なんでNetBSDみたいだけど2chネラー向きのOSつーのを
作ってみるわ。もちろんWindowsネイティブな。少しまちなー。

477 :デフォルトの名無しさん:03/08/21 13:22
>>476
よっ、久しぶり。そして逃げるというオチ

478 :デフォルトの名無しさん:03/08/21 15:43
そういう場合は
「そろそろやってみるか」
じゃないと。


161 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)