OSをつくろうpart4
■ このスレッドは過去ログ倉庫に格納されています
0001ひげぽん
NGNGスレッドになればと思います。
前々スレッド
OSをつくろうpart2
http://pc3.2ch.net/test/read.cgi/tech/1024411711/
前スレッド
OSをつくろうpart3
http://pc3.2ch.net/test/read.cgi/tech/1027080631/
0412LightCone ◆sSJBc30S5w
NGNGとりあえず、ソースのバイト数:
アセンブラ コード部:754KB
アセンブラ データ部:30.4KB
アセンブラ ヘッダ部:63.4KB
C言語 コード部:362KB
C言語 ヘッダ部:39.8KB
です。
今のところ、アセンブラ部が大きすぎると思うのですが、内訳は
初期化:34KB
カーネル:193KB
ファイル:99KB
割り込み:58KB
メモリ管理:66KB
DISK-DRIVER:37KB
内臓PROMPT:43KB
旧EMS MANAGER:32KB
旧DPMI MANAGER:53KB
このうち最後の3つは、今後削除する可能性があります。
0413みとこ ◆AEqcy/sQU6
NGNGDOSSHELLはタスク切り替えというよりタスクスワップの気が
めぐたんは現在フルアセンブリです。
ついでに、最新ビルドでもまだマルチタスクをサポートしてません(つД`)
0414ひげぽん
NGNGMonaは
アセンブラコード:10KB(ブートからプロテクトモード移行まで)
C++コード:70KB
C++ヘッダ:10KB
ただしC++部には、ごく一部インラインアセンブラが含まれています。
またdoxygenコメントに対応するため、コメント量が多くなっていますので
C++部は実際は半分のサイズくらいだと思います。
NWSOSとの規模の差が歴然ですね・・・
0415ひげぽん
NGNG気づきました。
タスクスイッチの前にEOIは発行しなければいけないと思うのですが
iretは?疑問がいっぱい出てきました。
この辺のことに詳しい資料とかないでしょうか。
そろそろ「はじめて読む486」だけでは限界がきたかもしれません・・・
もし良い資料等ありましたら教えてくださいm(__)m
0416FreeDOS教徒
NGNGインテルのマニュアルさえあればいいと思う。
iret自体は通常のretfにpopfを追加したものだった気がする。
必要なところを探す能力があれば、それなりに役に立つよ。
0417ひげぽん
NGNG>>iret自体は通常のretfにpopfを追加したものだった気がする。
>>
>>必要なところを探す能力があれば、それなりに役に立つよ。
ありがとうございます。
全くおっしゃるとおりですね。
ちょっと調べてみますです。
0418デフォルトの名無しさん
NGNGプロテクトモードのiretは結構違います
インテルの命令セットリファレンスに詳しい動作が書いてあります
0420デフォルトの名無しさん
NGNGhttp://www.intel.co.jp/jp/developer/download/index.htm
インテルの日本語マニュアルPDF版
0421超先生@OS板 ◆leaf/RYZgY
NGNG< `ー´>-~~~ TSSはあまり使ったことがないが・・・・。
IDT上に割り込みハンドラ用のタスクゲートを置くとかできたっけかな。。。
割り込みハンドラをタスクに見立ててTSSを作っておき、
iretの代わりに実行するTSSへ向かってjmpするとか。
for(;;)
{
/* 割り込み時はここへ飛んで来る */
....
....
jmp tss_next_task; /* 次のタスクへ */
}
0422超先生@OS板 ◆leaf/RYZgY
NGNG< `ー´>-~~~ TSSはあまり使ったことがないが・・・・。
IDT上に割り込みハンドラ用のタスクゲートを置くとかできたっけかな。。。
割り込みハンドラをタスクに見立ててTSSを作っておき、
iretの代わりに実行するTSSへ向かってjmpするとか。
for(;;)
{
/* 割り込み時はここへ飛んで来る */
....
....
jmp tss_next_task; /* 次のタスクへ */
}
0423デフォルトの名無しさん
NGNG0424みとこ ◆AEqcy/sQU6
NGNG割り込みでタスク切り替えするとCR0のNTフラグ?がたって
iret命令でこのフラグチェックするれす。
0425デフォルトの名無しさん ◆mXrBwDDzyw
NGNG0426デフォルトの名無しさん
NGNG0427ひげぽん
NGNG>>424 みとこさん
いろいろとアドバイスありがとうございます。
週末に試してみます。
やっぱり平日はなかなか作業できないっす。
そのかわり年末年始にガツンとがんばります。
0428デフォルトの名無しさん
NGNG過去ログどおりにやったら動いた。
ちょっと感動。
0429超先生@OS板 ◆leaf/RYZgY
NGNG∧_∧
< `ー´>-~~~
ということは割り込み用tssのtask chainに次のタスクを入れてiretすれば楽勝ですな。
元のtssはbusy flagを手動で消さないとダメか・・・。
0430超先生@OS板 ◆leaf/RYZgY
NGNG∧_∧
< `ー´>-~~~
ということは割り込み用tssのtask chainに次のタスクを入れてiretすれば楽勝ですな。
元のtssはbusy flagを手動で消さないとダメか・・・。
0431デフォルトの名無しさん
NGNG0432みとこ ◆AEqcy/sQU6
NGNG昔、RMに落ちた後PM戻るPG書いたとき一般保護例外発生して困って
よく調べたらビジーTSSが原因だった、、、(><
0433ひげぽん
NGNGと最近思います。
0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNGhttp://homepage2.nifty.com/nowsmart/index.htm
0437デフォルトの名無しさん
NGNG0439デフォルトの名無しさん
NGNGリンカ、ライブラリアン、アセンブラ、ANSI-Cコンパイラ、NWSOSですか・・・
どうも、漏れはケンカ売る相手、間違えたっぽい。
もう、このスレに来ません。ごめんなさい。
0440朝鮮製@OS板
NGNG< `ー´.>-~~~
へへへ、俺って顔つきも朝鮮人だろ?
発音も「超先生」と同じ、兄弟さ。
テポドンのOSを作ったのは、何を隠そう、このワシじゃ。
OSに関して、右に出るものはいない。
さぁ、質問してきなさい。HもLも。
ひゃひゃひゃ。
0441デフォルトの名無しさん
NGNG効果的な利用法ってあるのだろうか
0442超先生@OS板 ◆leaf/RYZgY
NGNG< `ー´>-~~~ PL1,2は使いものにならない、がファイナルアンサー。
ページレベル保護はU/Sの2段階しかないのでほとんど無意味ですな。
0443LightCone ◆sSJBc30S5w
NGNG私も同感です。
システムコールに一旦入ってしまえば、コール元の各種属性はいくらでも
知ることができるので、わざわざCPU定義のレベル1,2で判別する意味がない
ので、もし、レベル1,2に利用価値があるなら、CPU命令を実行中の自動保護、
例えば、「ページレベル保護」などに変化が付けられるなどに限定されるはず
なんですが、IA32の場合そこに実質的な変化が付けられないので意味がない、
という説明ができると思います。
結論的には、超先生のおっしゃる事の通りだと思います。
0444441
NGNGJITコンパイラ実装時にリミットの異なるセレクタを用意して、
JITコンパイラ自体を保護できないか、などと考えてみたのですが。
0445朝鮮製@OS板
NGNG< `ー´.>-~~~
ふむふむ、既に弟の超先生が、
レベル1,2の蛇足っぷりを示してしまったようだな。
0446ひげぽん
NGNGhttp://www.research.att.com/sw/tools/graphviz/
こんなツール入れたらdoxygenで生成されるドキュメントに
カッコイイ図が!!!
こんなの↓
http://mona.sourceforge.jp/html/classX86MemoryManager__coll__graph.png
0447デフォルトの名無しさん
NGNGうぉ。カコイイ これとかカコイイ
http://mona.sourceforge.jp/html/monaTypes_8h.html
0449デフォルトの名無しさん
NGNGX386でメモリ管理する場合って、
例えば、連結リストで物理アドレスにダイレクトマッピングして
管理しているとする時でも、eip, espって結局オフセット値ですよね?
だから、コンテキストスイッチするには
最低限度、cs:eip ss:esp cr3とかは退避しないと駄目なんですか?
ハードウェアのメモリ管理機構とOSでのメモリ管理との繋がりが
よくわからないです。書ボーン。
だれか〜目から鱗落させてクダサイ><
0450デフォルトの名無しさん
NGNGあれはどうなったのかな?
0451デフォルトの名無しさん
NGNG386アーキテクチャはちょっとむずいかも。
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNGあれにはページングがなかったからセグメントのレベルだけで
保護してたわけだけど、意味あったのかな?
もしかして386が4段階の動作レベルを持つのってその名残?
ウンチク的な役に立たない話ですんまそん。
0454デフォルトの名無しさん
NGNGセグメント+リミット+ページング+コールゲート
なのだ
0455朝鮮製@OS板
NGNG< `ー´>-~~~
>JITコンパイラ実装時にリミットの異なるセレクタを用意して、
>JITコンパイラ自体を保護できないか、などと考えてみたのですが。
ほうほう、君はひょっとして首藤クンかね?
0456デフォルトの名無しさん
NGNG0457朝鮮製@OS板
NGNG< `ー´>-~~~
図星かね?
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNG読みたかったのに。
だれか保存してたら下さい。
0460みとこ ◆AEqcy/sQU6
NGNG0461デフォルトの名無しさん
NGNGありがとうございます!
ですが。。。なぜか家に帰ってから見たらDAT落ちしてない。。
外で見たときは落ちてたのに。
なぜだぁぁぁ・・・
0462みとこ ◆AEqcy/sQU6
NGNG0463ひげぽん
NGNG年末年始にドーンと更新しようかと思います。(あくまで予定ですが)
タイマ割り込みでタスクスイッチできずです・・・
0464デフォルトの名無しさん
NGNGひげぽんタン、がんばれり。
なまあたたかく応援sage
0465ひげぽん
NGNGなまあたたかい応援ありがとうござます(笑)
ところでこのスレを見ている人たちは
他にはどんなスレッドを見ているのでしょうか。
やっぱりNWSOSやOSASKのスレッドですかね。
0466デフォルトの名無しさん
NGNGココしか見てない。他は自分にとってあまり有益でないから。。。と言うか『ひどいインターネット』だから
OSをつくろうはpart2から見てるけどすっごく勉強になってる。
0467デフォルトの名無しさん
NGNGhttp://www.cosmoe.com/
0468デフォルトの名無しさん
NGNG個人的にボードコンピュータを使用することがあるので、
monaを自分が制御したいもののタスクスイッチとして使えたら
いいなと思ってここ見てます。まだ夢の話ですが。
0469デフォルトの名無しさん
NGNG漏れの場合は、OSASK系スレがメイン。
ひげぽんのスレを見て和製OSを知ったり。
0470みつみ里美 ◆CBIOIS./eo
NGNG明示的に扱わないとハマるよ(`□´)くわ〜っ
さて原稿〜(;´д`)へろへろ
0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNG馬鹿なOS作って、実験かねて実機で動かして
マシンがぶっ壊れた(゚∀゚)なんてことはありうるのでしょうか?
あったら体験談おね
0473デフォルトの名無しさん
NGNG俺もここしか見ない。
OSASK は Web 見て、愕然としたから、もう見ない。
>>472
ディスクの中身を飛ばすことはあるが、ハードウェア的に壊れることはまずない。
(もちろん、その PC が、ロボットや溶鉱炉の制御してるとか言うんなら話は別だぞ。
あと、頑張れば BIOS 書き換えぐらいは可能性があるけど、意識的にやらないと
なかなか難しい。)
そう言う意味で、開発機と実験機は分けたほうがいいと思う。
(一緒だと、リブートの嵐だからね。)
今時なら、中古の Pen133MHz 機程度なら \5,000 ぐらいで売られてるから、そう言うのを
使えばいいと思うよ。
0474デフォルトの名無しさん
NGNGPCじゃないけど…ドライバいじってる時、なぜかNICが壊れた事あり。
原因はいまだに不明。
試作ハードだったから、ハード的な問題だったのかもしれない。
0475デフォルトの名無しさん
NGNG論理的に破壊された経験をもつものです(汗)。
原因は、PC-98x1のBIOS呼び出し時の、CFフラグの1,0が逆になって
いただけ。
それからというもの、ハードディスク書き込み恐怖症になり、
さらに厳重にするため、開発機と実験機を分けるようになりました。
一種のトラウマですが、良い経験だったかもしれませんね(^_^;;)
0476げすきー
NGNGOS開発時にHDを吹っ飛ばす痛さと、
どっちが痛いですか?
0477みつみ里美@しゅら場もーど ◆CBIOIS./eo
NGNG>>472
初代IBM PC/ATでPICのバッファリングモード使うと焼けるよ。
SP/ENがGND直結で危険(`□´;)
最近の統合chipsetではそんなこと絶対に起きないけどね(`ー´)ふふり
0478デフォルトの名無しさん
NGNGひげぽん、がんばれ〜こっちはマターリしてるからイイ!!
私は技術がないんでとても協力なんてできませんが
使う側としてmonaをしっかり見ていきたいと思います。
NWSOSは見てます、ちょいと揉めてるみたいですけど。
OSASKは見ていません。
でもでも、個人的にはメグOSが好きかなぁ(ボソ
キャラとかじゃなくてなんか、AIぽいのが好きなんです。HALとか・・・(オタ
0479みとこ ◆AEqcy/sQU6
NGNG0480デフォルトの名無しさん
NGNGひげぽんはMegaBBSとかいちごBBSでマターリやったほうがよかったんじゃないかと思う
0481デフォルトの名無しさん
NGNG別にいいと思うけど。
0482デフォルトの名無しさん
NGNGおまい、2chブラウザとかも使うなよ。
0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG0485デフォルトの名無しさん
NGNG0486ひげぽん
NGNGといってみるテスト
すべて使えるようにならなくていいっす
コレクションが使えるだけで十分です。
string.hで定義されている関数が必要になりそうです。
よろしくおねがいいたします。
0487デフォルトの名無しさん
NGNGbochs-winで起動させるディスクイメージは
どうやって作ってるの?
WINDOWSで。ddとかだとバグったし・・
0488ひげぽん
NGNGhttp://uranus.it.swin.edu.au/~jn/linux/rawwrite.htm
rawwrite.exeで作成しています。
この辺のことは、どこかにきちんと記述をしたほうがよさそうですね。
ご指摘ありがとうございます。
0490みとこ ◆AEqcy/sQU6
NGNG0492henoheno@OS板 ◆mXrBwDDzyw
NGNGSTLの話題を出されたので。
STLの移植に関してですが、STLportはいかがでしょう。
http://pc.2ch.net/test/read.cgi/os/1039075591/337
STLport は SGI STL を移植する方向に持って行ったものから
スタートしたものです。
0493ひげぽん
NGNG相変わらずレベル高し。
タイマー割り込みによりタスク切り替えを実現すべく
インテルのマニュアルを読んでいました。
(1)EFLAGSレジスタのNTフラグをセットする。
(2)現行タスクのバックリンクを次のタスクにする。
(3)(現行TSSビジーを解除?)
(4)iret
(1)(3)のやり方が分かりません。
そもそもそんなもんは不可能だ!等アドバイスいただけないでしょうか。
0494ひげぽん
NGNGありがとうございます。
>STLの移植に関してですが、STLportはいかがでしょう
ほう、こんなものがあるんですね。
STLは一部でも良いので使えるようになるとうれしいですね。
誰か詳しい人いないかな。
0495超先生@コーディネーター ◆leaf/RYZgY
NGNG< `ー´>-~~~
>(3)(現行TSSビジーを解除?)
NT=1でiretすれば自動的にbusy解除されるはずです。
>(1)EFLAGSレジスタのNTフラグをセットする。
popfd命令でEFLAGSを変更できるはず。
0496ひげぽん
NGNGpushfd,popfdを
組み合わせれば何とかいけそうな気がしてきました。
0497デフォルトの名無しさん
NGNGガンダムseedでつか?
0498ひげぽん
NGNGbochs君に IRET: TR not valid
と怒られました。
現在調査中です。
0499げすきー
NGNGLタンのGPL叩きの痛さと
どっちが痛いですか?
0500超先生@OS板 ◆leaf/RYZgY
NGNG< `ー´>-~~~ そういえば。
切り替え先TSSのbusyフラグを立てておかないと、無効TSSで落ちるかも。。。。
ctrl_xfer_pro.cppのBX_CPU_C::iret_protectedを参照。
0501デフォルトの名無しさん
NGNG痛さの単位。1ハナゲ。
どっかの学者が4/1に言ってたっけ。
0502デフォルトの名無しさん
NGNGMONAが先駆?
0503ぁゃしぃ肉球苦楽撫
NGNG0504デフォルトの名無しさん
NGNGNT系はC++じゃない?
0505ひげぽん
NGNG0506ひげぽん
NGNGご指摘の通り、切り替え先をTSSBusyにしたらOKでした。
いつもいつもありがとうございますm(__)m
ということでタイマ割り込みによりタスクスイッチする実験に
成功いたしました。
アドバイスいただいた方々ありがとうございました。
ところでbochs2.0ですが
文字色が違いますね。
ピンク(実機&bochs1.41)
紫(bochs2.0)
なぜ?
0507デフォルトの名無しさん
NGNGC++かもしれないが、多分殆どCに近い書き方なんじゃ
ないかなあ。C++で書くと一口に言っても、その内容は
ピンきりだからねえ。
0508デフォルトの名無しさん
NGNGそういう意味ではMonaは稀有。
0509デフォルトの名無しさん
NGNG書かれてる。。
0510デフォルトの名無しさん
NGNG俺はやらんが。
0511デフォルトの名無しさん
NGNGなぜそう思う?
■ このスレッドは過去ログ倉庫に格納されています