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/
0369LightCone ◆sSJBc30S5w
NGNG#366では、コンパイラを作る時のボヤキだったんですが、
OSを作る上でも、もしかしたら、デストラクタの呼び出し
タイミングとかが問題になる可能性もあるかもしれませんね。
でも、きっと、純粋なCで書くより開発効率は上がると
思います。羨ましい。
0370デフォルトの名無しさん
NGNGでもOSを記述するなら、list vector などを void* ポインタ限定に
してしまえば、cでもSTLもどきは実現できる。
0371LightCone ◆sSJBc30S5w
NGNG>c++の本領が発揮するのはSTLだと思う。
>でもOSを記述するなら、list vector などを void* ポインタ限定に
>してしまえば、cでもSTLもどきは実現できる。
リストを自動化できれば便利ですよね。NWSOSでは、おっしゃっているような
方法を用いてます。同じリスト関数群で色んなリストに適用してます。
0372ひげぽん
NGNG記念にimgファイルを↓におきました。
http://mona.sourceforge.jp/に
今回の件は、Monaにとって大きな節目だと考えています。
イメージサイズも33kbになりました。
FreeDOS教徒さんのブートコードも順調です!!
今までアドバイスいただいた方、手伝って下さった方々に
深く感謝いたします。m(__)m
0373FreeDOS教徒
NGNGマルチタスク化おめ〜♪
0374LightCone ◆sSJBc30S5w
NGNGよくこんな状態にたどり着きましたね。未だに信じられません。
0375ひげぽん
NGNGありがとうございます。
これからもよろしくお願いしますね(必須)(笑)
>>374 LightCone さん
>それにしても、当初アセンブラも余り使われた事のないような状態から
>よくこんな状態にたどり着きましたね。未だに信じられません。
私も信じられないです(爆)
LightConeさんにはお世話になりっぱなしです。
0376デフォルトの名無しさん
NGNG* *
* ∧_∧ *
* (´∀`) *
* *
* *
* * *
|
|
Mona マルチタスク化 おめでとー
0378デフォルトの名無しさん
NGNG耳のずれ方にか?w
0379デフォルトの名無しさん
NGNGHurdと"MAC OS X "のコアMachはこのスレの住人的にはどうなのよ?
マイクロカーネルってMachかWindowsNT系以外思いつかんが
いちおリンク
http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/mach/public/www/mach.html
http://www.zdnet.co.jp/news/0104/09/e_torvalds.html
0380FreeDOS教徒
NGNGこれからもできる限りお手伝いさせて頂きますw;
>>379
当方マイクロカーネル方面に疎いため、
その方式のどこがいいのか分かりません。
モジュールに分割したら、何かいいことがあるのでしょうか。
0381LightCone ◆sSJBc30S5w
NGNG発想であって、論理的なモジュール分けを行うこと自体はモノリシックカーネル
でも行われます。単にカーネルの外にAPIの実装を出すのとも違うので、DLL
でAPIを実行するだけでは、マイクロカーネルとはいえません。
利点ばかりであれば、大手を上げて賛同したい所ですが、本来の
目的とは裏腹に、下手すると設計がむしろ複雑になる危険性や、
速度パフォーマンスの低下の問題などもあり、反対意見が出てもおか
しくないと思います。
(システムコール発行から結果が出るまでの速度(ターンアラウンド時間)
において不利な一方、割り込み禁止区間の粒度を「確実に」小さくできる
利点があったりして悩みどころ。)
0382LightCone ◆sSJBc30S5w
NGNGときに、「知りたい」と思う人が沢山出てきて、本当にその概念が「良いもの」
かどうかは別としてその新しい概念の研究が盛んに行われる傾向があるので、
研究が盛んであっても、その都度ちゃんと判断して見極めることが大事だと
思っています。その見極めがどっちに転ぶかは人それぞれということで。
0383LightCone ◆sSJBc30S5w
NGNG組み込み向けのiTRONと、超漢字(bTRON?)だけなんですか。
日立やNECのスーパーコンピュータのOSとかはどうなってるんでしょう。
日本では「研究」は盛んですが、実際に作っている人が少ないと
思うのは気のせいですか? あと、OSの研究とは、OSの歴史分類や概念の
取りまとめのことなんですか? 「実際の作り方」の研究はしない?
0384FreeDOS教徒
NGNGよく分かる説明をありがとうございます。
実装を軽くするにはモノリシックカーネル内でモジュール化
するほうが楽そうですね。参考になりました。
0385LightCone ◆sSJBc30S5w
NGNGさえあるのは、独立プロセスとしてサブシステムをどうやって記述すれば
いいかが自明でないからかもしれません。
仮想記憶とファイルシステムとの結びつき、メモリシステムと仮想記憶の
結びつき、サブシステム用のプロセスのローディングとファイルサブシステム
との結びつきなど、自明とは言いがたい問題が沢山あるため、研究してみな
いとマイクロカーネル自体の利点や問題点さえ正確に把握する事が
できないのかもしれません。
告白すると、わたしもよく知りません。
0386デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNG> あと個人的な疑問なんですが、日本で独自なOSを研究以外で作ってるのって、
>組み込み向けのiTRONと、超漢字(bTRON?)だけなんですか。
TRON系を除いて、私の知る範囲で入手可能である非研究OSは
以下のが挙げられます。きっと他にもあるでしょう。
XTAL
ttp://www.xtal.org/xt2.html
Human-OS
NOWSMART-OS
ttp://homepage2.nifty.com/nowsmart/nwsos.htm
H8/OS
ttp://www.linet.gr.jp/~mituiwa/h8/
GR-DOS
ttp://www.nekok.jp/green/k2/gr_dos/gr_dos.htm
> 日本では「研究」は盛んですが、実際に作っている人が少ないと
>思うのは気のせいですか?
気のせいです。
0389FreeDOS教徒
NGNGGR-DOSはもう一昔前に開発を終了しているはずですが?
あと、確かにこれ以外にも人知れずOSを開発してる人はいます。
世界と比べても、そう少ない割合だとは思いません。
0390LightCone ◆sSJBc30S5w
NGNGあと、x86、GUI付きに限定したりすると?
0391デフォルトの名無しさん
NGNGMac OS Xは動いてるしHurdもいちを実用段階には入ってるんだよね?
Machっていうのは単体で動くものなの?
0392デフォルトの名無しさん
NGNGなんでx86限定なんだw
たしかにゴミのように今後もあふれるであろう32bit-x86CPUの再利用っていうのは
大事なテーマになると思うが。
0393デフォルトの名無しさん
NGNGGUI実装目指して頑張ってください
0394デフォルトの名無しさん
NGNGそれぞれのサーバプロセスを複数のマシンに分散できたり・・・
カーネルを2台以上のマシンで走らせたり、カーネルマシンが落ちたとしても
ホットスタンバイしてるカーネルマシンにスイッチできたりとか・・・
ドラえもんレベルの空想でごめん。
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNGWindowsがあるし、linuxがあるし、BSDもBeOSもあるし。
特にGUIの性能はWindowsがずば抜けてるし、わざわざ用意する必要がない。
日本の場合、FEPの開発もせねばOSとして使い物にならないことが
多いゆえ、OS開発の敷居は高い。それこそ、「超漢字」などという名前のOSが
あるくらい。
一方、米国人だとか欧州人はとても裕福。
週休4日なんてあたりまえで、いわゆる自分の時間を多く確保しても
メシに困らないほどの経済力がある。だから、余暇でOSやツール群に
夢中になる人の割合が多い。
この差だ。
日立、富士通、NECなどの大手は30年も昔からスパコン用のOSを作ってる。
IBM機OSのエミュがあまりにも互換性が高すぎるゆえ、スパイ罪として逮捕された
事件もあるほど。
うぬぼれるな、青木。もっと見識を「豊か」にしろ。
0397ひげぽん
NGNGありがとうございます。
思うところがあって、Linkers&Loadersという本を買いました。
初心者向けっぽいですけど、勉強になりますね。
あと、Monaはマイクロカーネルで行く予定です。(あくまでも予定ですが・・・)
0399LightCone ◆sSJBc30S5w
NGNG出来ないのは単純に技術力がないからだと思ってたんですが。
0400ひげぽん
NGNGasm volatile("ljmp $0x20, $0\n");
はOKなのに
word selector = 0x20;
asm volatile("ljmp %0, $0": /* no output */:"g"(selector));
は
Error: suffix or operands invalid for `ljmp'
と怒られます。
この辺詳しい方いらっしゃいましたら教えていただけないでしょうか。
アセンブラ板のほうがいいのかもしれないですが・・・
0401デフォルトの名無しさん
NGNG日本は世界第二の経済大国ですが。
>日立、富士通、NECなどの大手は30年も昔からスパコン用のOSを作ってる。
それは、マルチタスクや、GUIを持ってましたか。
0402デフォルトの名無しさん
NGNG足引っ張るな!
0403デフォルトの名無しさん
NGNGgcc -Sしてみるとわかりますが
ljmp _selector , $0
というふうにインライン展開されています。
asmには定数を渡す必要があるので
#define FOO_CS 0x20
などとしてやる必要があります。
0404ひげぽん
NGNGありがとうございます。
ということは、ljmp先は動的に指定できないということでしょうか。
拡張インラインアセンブラの入力パラメータは使えない???
でも、ljmpのオペランドは即値だけでなくメモリ、レジスタもOKだと
思っているのですが・・・
何か大きな勘違いをやらかしてそうです。→私
0405デフォルトの名無しさん
NGNGセレクタだけメモリというわけにはいかないので
struct {
dword ofs;
word sel;
} far_ptr;
こんな感じで6byteのポインタを渡す必要があります。
あとあまりお奨めできない方法として
push word selector
push dword 0
retf
(NASM風記述。gasニーモニックは忘れました。)
0406ひげぽん
NGNG>dword ofs;
>word sel;
>} far_ptr;
>こんな感じで6byteのポインタを渡す必要があります
ありがとうございます。
出来ました!!!!
0407LightCone ◆sSJBc30S5w
NGNGhttp://www.ertl.jp/ITRON/SPEC/mitron4-j.html
スケジューリングなどが参考になります。
OSの勉強に使えそう。
0408FreeDOS教徒
NGNG32ビットでマルチタスクのOSといえば、OSASK、NWSOS、EOTA、MEG-OS、Mona
ぐらいしか思いつきません。
x86系、GUI付きOSはそれにMonaを除いてもう1つあります。
0409LightCone ◆sSJBc30S5w
NGNGSCE(SONY COMPUTER ENTERTAINMENT), 東芝, 米IBM が、2005年をめどに
新OS を開発中(SONY の AIBOは、Aperios という独自OSが載ってるらしい。)
大手電機メーカー各社のWorkstationには、UNIXの移植版が
載っている模様。
スパコンは、UNIXの他、独自OSが載っているのもあるらしい。
でも多分、ハードメーカーが載せてるUNIXは、海外ソフトメーカーに委託
したか、FreeBSD等を載せているんだと思う。
BTRONは、超漢字,EOTA など。
0410デフォルトの名無しさん
NGNGところが資金力尽きて、ついにWindows帝国に敗北。
正確には、土地バブルに載って購入した土地資産が1/10以下になって撃沈。
実力はあったのに本業をおろそかにして、
駄目だと言われ続けてたWindowsの拡張工事に余念のなかったマイクロソフトに
頭を下げたのが '93だから、あれからはや10年。
元、ジャスト社員より
0411超先生@OS板 ◆leaf/RYZgY
NGNG< `ー´>-~~~
PC-98用のMS-DOSについてきたDOS-SHELLは手動タスク切り替えもできたよな・・・。
ところで、高級言語とassembleの比率は今のところどのくらいなんでしょう。 >> NWSOS他
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を自分が制御したいもののタスクスイッチとして使えたら
いいなと思ってここ見てます。まだ夢の話ですが。
■ このスレッドは過去ログ倉庫に格納されています