トップページ⇒tech
982コメント407KB

OSをつくろうpart4

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001ひげぽんNGNG
独自にOSを作っているまたは、作ろうとしている人たちのための
スレッドになればと思います。

前々スレッド
OSをつくろうpart2
http://pc3.2ch.net/test/read.cgi/tech/1024411711/

前スレッド
OSをつくろうpart3
http://pc3.2ch.net/test/read.cgi/tech/1027080631/
0809デフォルトの名無しさんNGNG
>>805
cat mona.img /dev/zero|dd of=mona_fd.img bs=1k count=1440
かなあ?
0810ひげぽんNGNG
>>804
Bochsの記事を執筆された方のご厚意での紹介なので
そんなのはないです。紹介されただけで感激です。

>>808
ddでサイズを指定をする場合ってosでしたっけ
やり方が悪いのかうまくいきません。
0811ひげぽんNGNG
>>809
>cat mona.img /dev/zero|dd of=mona_fd.img bs=1k count=1440

出来ました。ありがとうございますm(__)m
0812Tino ◆sMrLqQHxo6 NGNG
カーネルがSTLを使ってリライトされそうな予感(w
0813ひげぽんNGNG
>>812
の予感による通り(笑)
Tinoさん提供のパッチと手ほどき書により
Monaの実装にSTLが使えるようになりました。!!!!
Tinoさんありがとうございます。m(__)m

これに伴い開発環境の移行をいたしました。
gcc2.95@cygwin→gcc3.2@cygwin

STLの導入で夢が広がりました。
こんなコードが動きます↓
0814ひげぽんNGNG
    // string
    std::string str = "---";
    str += "string";
    str += "@mona ";
    str += "is OK";
    str += "---";
    _sys_printf("string: %s\n", str.data());
    _sys_printf("string: str.substr(3, 11): %s\n", str.substr(3, 11).data());

    // list
    std::list<char*> li;
    li.push_back("micoro kernel ");
    li.push_back("operating system with ");
    li.push_back("network suit architecture ");
    li.push_back("\n");
    std::list<char*>::iterator it;
    _sys_printf("list  : iterate->");
    for (it = li.begin(); it != li.end(); it++) {
        _sys_printf("%s", *it);
    }
0815ひげぽんNGNG
    // vector
    std::vector<char*> ve;
    ve.push_back("1");
    ve.push_back("2");
    ve.push_back("3");
    ve.push_back("4");
    std::vector<char*>::iterator it2;
    _sys_printf("vector : iterate->");
    for (it2 = ve.begin(); it2 != ve.end(); it2++) {
        _sys_printf("%s ", *it2);
    }

    // argorithm
    std::reverse(ve.begin(), ve.end());
    _sys_printf("\nargorithm : reverse->");
    for (it2 = ve.begin(); it2 != ve.end(); it2++) {
        _sys_printf("%s ", *it2);
    }

    std::fill(ve.begin(), ve.end(), (char*)"7");
    _sys_printf("\nargorithm : fill with \"7\"->");
    for (it2 = ve.begin(); it2 != ve.end(); it2++) {
        _sys_printf("%s ", *it2);
    }
0816デフォルトの名無しさんNGNG
数日たったころにバグが出そうなコードですな。。。
0817デフォルトの名無しさんNGNG
C++でカーネル書くこと自体が良いのか悪いのかではなく、
色々、未知な領域なので、Cで書くよりは新しいことがいっぱい
で面白そうだ。

ところで、lightconeさんのnwsosカーネルの実行形式はなんなんだろ?
elf or pe ? もしくは coff...
0818LightCone ◆sSJBc30S5w NGNG
>>ところで、lightconeさんのnwsosカーネルの実行形式はなんなんだろ?
>>elf or pe ? もしくは coff...

 カーネルのソースは、COFF形式またはOMF形式のOBJファイルを作成して
から、自作リンカ(NWSL)で、独自形式(NWSOSのネイティブアプリケーションの
実行形式と同じ)にリンクしています。
 OBJの段階では、COFFでもOMFでもリンクできたと思います。
0819817NGNG
>818

そうでしたか。
というより、独自リンカで作成しているので、COFFかOMFでしたね。
今さっき、NWSLの仕様を見て気づきました。スマソ。
0820デフォルトの名無しさんNGNG
いや〜、part2〜part4、もうすぐpart5。
色々なものが出来上がりましたね。
これはすごいことだと思います。
さっそく、UNIX USER 2月号見てきますw
0821デフォルトの名無しさんNGNG
記事うpキボンヌ
0822デフォルトの名無しさんNGNG
>>821
禿同!
0823デフォルトの名無しさんNGNG
誰もC++で書かれたBeOSのことを語らないね、、なんで?
http://www.zdnet.co.jp/macwire/0001/19/c_igeek2.html

FBC問題、、
0824デフォルトの名無しさんNGNG
FBC(fragile base calss)

[邦訳] 脆い基本クラス

・オブジェクト(すなわち構造体やクラス)のサイズ
・(publicやprotectedである)「可視の」データまでのオフセット
・vtableの存在とサイズ
・vtable中の仮想関数へのオフセット

あなたのアプリがコンパイルされ、リンクされる時、それ[ダイナミック
ロード・ライブラリ]はこれらすべての情報を記録します。 これらのうち
の何かがライブラリ中で変更された場合、コンパイルされたアプリはもは
や動かないという問題。

以上参考までに・・・
0825デフォルトの名無しさんNGNG
>>823
思いっきり既出 >>710
0826デフォルトの名無しさんNGNG
今Monaがやってる部分はカーネルの中だから
ユーザーアプリのリンクとまったく関係ないので、
FBC問題の影響はありません。

とりあえずマイクロカーネルなんだから、
カーネル内部とは関係なくその上にOSサーバが来て、
その上にユーザーランドが来るので、
そういうことが関係してくるのはユーザーランド以降ですね。
0827IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0828ひげぽんNGNG
>>816
>数日たったころにバグが出そうなコードですな。。。
うう。勉強が足らないようです。STLの本買おうかな。

>>817
>色々、未知な領域なので、Cで書くよりは新しいことがいっぱい
>で面白そうだ
そうですね。面白いです。
STL使えるなんてわくわくです。

>>820
>さっそく、UNIX USER 2月号見てきますw
見て、気に入ったら買ってください(笑)

>>821
>記事うpキボンヌ
さすがにそれは、まずいと思うのでむりっす。m(__)m

0829デフォルトの名無しさんNGNG
> >数日たったころにバグが出そうなコードですな。。。
> うう。勉強が足らないようです。STLの本買おうかな。
そういう意味じゃないと思う。
0830デフォルトの名無しさんNGNG
STLは標準っていうくらいだから使えても当たり前で面白みないっす。
逆に言うと使えないと話しにならんってことだが。

とりあえず次はboostでlambdaですな。
こんなのが当たり前のように使われてるカーネル……わくわく
http://www.kmonos.net/alang/boost/classes/lambda.html
0831デフォルトの名無しさんNGNG
boostならlambdaの前にshared_ptrだろ
これ使ってJavaみたいにdeleteのないコードにしなきゃ
単なる悪趣味と言っても過言ではないゾ
0832ひげぽんNGNG
>> うう。勉強が足らないようです。STLの本買おうかな。
>そういう意味じゃないと思う。

どういう意味でしょうか。
OS作成には使わないほうが良いというアドバイスでしょうか。
0833デフォルトの名無しさんNGNG
>>832
STLの書き方を問題にしてるんじゃなくて、
STLを使うこと自体を問題にしてるんだろう

それを受けて >>817 氏が
> C++でカーネル書くこと自体が良いのか悪いのかではなく、
> 色々、未知な領域なので、Cで書くよりは新しいことがいっぱい
> で面白そうだ。
って応援してくださってるんっしょ
0834ひげぽんNGNG
>>833
納得しました。ありがとうございます。
0835デフォルトの名無しさんNGNG
とりあえずSTLじゃインパクトがなかったみたいなので
次はboostをおながいします
0836デフォルトの名無しさんNGNG
オナニーでOS作りましたってだけじゃ注目されない
一流のエンターテイメントを目指すのだ
0837デフォルトの名無しさんNGNG
カーネルの実装にSTL使えることは
結構すごいと思うけど
0838デフォルトの名無しさんNGNG
いろんな事いうヤシ居るけど、全部真に受けてたらろくなもん出来ないぞ。
エンターテイメントは大事だけど、最低どっか一つ輝く部分があればいい。

欲張りすぎると、どっかのKがつくOSみたいになる
0839デフォルトの名無しさんNGNG
>>352
友人から借りた?おいおい。MXで落とせば?
0840デフォルトの名無しさんNGNG
>>593
昔からとってたよ。
0841IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0842デフォルトの名無しさんNGNG
>256
意味ない。
0843デフォルトの名無しさんNGNG
1000!!!
0844デフォルトの名無しさんNGNG
なんで500も前にレスするですか?
0845名無したん ◆AEqcy/sQU6 NGNG
荒れてきてますネ・・・
0846デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0847デフォルトの名無しさんNGNG
ひげぽんガンバレ!
応援してます!
0848デフォルトの名無しさんNGNG
qb
削除整理、削除要請、削除議論、批判要望

live2
ニュース速報

tmp
ニュース極東、バカニュース、ちくり裏事情、違反の潰し方、薬・違法
少年犯罪、政治思想、ゴーマニズム、ペット苦手、download
ロビー、なんでもあり、厨房、最悪、学歴、人権問題
0849デフォルトの名無しさんNGNG
バカが数人紛れ込んできてるな。
ほかでやれよ。
0850デフォルトの名無しさんNGNG
>>849
相手にするな。
飽きて出て行くのを待つしかないよ。
0851デフォルトの名無しさんNGNG
567が良い事言った          
0852デフォルトの名無しさんNGNG
>>64
んじゃ、内容証明でも認識しえたってことになりません?
0853デフォルトの名無しさんNGNG
某○○は相手が事実を認識しえたと判った段階でレス汁w
0854デフォルトの名無しさんNGNG
博之が2ちゃんねる閉鎖を決めました。
0855名無したん ◆AEqcy/sQU6 NGNG
時々動作がおかしくなります。添削キボン(´・ω・`)
ttp://meg-os.org/2ch/fdc.asm
0856LightCone ◆sSJBc30S5w NGNG
ひょっとして、掲示板の動作が異常?
0857デフォルトの名無しさんNGNG
てすと?
0858デフォルトの名無しさんNGNG
>>856
ここの板は
> 2ちゃんねる20021219
ですから、
IP収集テストと関係ないはずなんですが、
何なんでしょうね。
http://www.zdnet.co.jp/news/0301/09/njbt_07.html
0859デフォルトの名無しさんNGNG
>>858
コピペの内容にIP収集テストの話題が入ってるけど、
IP収集テストによる動作不良かもと思わせる意図があるんだろ。

>>855
そういえば、前にこのスレのリンクから meg-os.org 逝った時に
「不適切なリファラーです」とか何とかいわれたけど、
meg-os.org って2ちゃんとなか悪いんじゃないの?
何でそんなとこにファイルおけるの?


0860デフォルトの名無しさんNGNG
>>1 もぅいいじゃないか。
開き直れよ! 俺は変態だ!!って。
変態の何処が悪いんだよ。
男はな、みんな大なり小なり変態なんだよ。
そのことを女の大半が知らないだけなんだよ。

結論として言えることは、女の無知が悪いってことだよ。 
0861名無したん ◆AEqcy/sQU6 NGNG
>>859
リファラチェックに関しては厳しくなったり緩くなっているのでなんとも言えませぬ。
IPとおおよそのアクセス日時を晒してくればエラーログから原因を推定できますが。

2chと仲悪かったらこんなところにコテハソで書き込みませんyo(藁
0862LightCone ◆sSJBc30S5w NGNG
 他のスレにも、昔の発言に対しての、元発言と全く関連性が無いようなレスが
IP実験開始あたりから頻出しているようです。
 ばれないようにテストしてるのか、それとも、バグかなんかでしょうか?
0863名無したん ◆AEqcy/sQU6 NGNG
>>862
荒らしは放置しましょう。
0864デフォルトの名無しさんNGNG
>863
実際のとこどうなの? 荒らしなの? (スレ違いスマソ)
0865デフォルトの名無しさんNGNG
>>861
ダイアルアップだし、時期も忘れてしまったのだけど、
そういえば、かちゅーしゃからリンクたどっから、リファラが憑いてなかったのかな。

>>864
100%荒氏でしょ。
でもこのスレに張り付いてるわけでは無さそう。
0866名無したん ◆AEqcy/sQU6 NGNG
>>865
リファラがない場合はリファラ関係のエラーは出ないはず。。。

リファラエラーが出る主な原因は怪しいリファラが漏れてる時なんで。
0867超先生@OS板 ◆leaf/RYZgY NGNG
  ∧_∧
<後ろ頭>-~~~ どれどれ書き込みテスト。
0868デフォルトの名無しさんNGNG
さぁ拳銃をてに入れて管理人を殺害しよう
0869デフォルトの名無しさんNGNG
>>858
すでにIP収集版に入れ替わってますね。。
>2ちゃんねる20030107a

ところでmonaをCVSでダウンロードすると
既にSTL対応版に入れ替わっていました。
イメージファイルも1.44MBで出力するように修正されています。
さすがひげぽんさん、素早いですね。
(・∀・)イイ!!

>>836
追いかけているだけで十分楽しめていますよ。
次は何が来るのでしょう?(^д^)
0870ひげぽんNGNG
>ところでmonaをCVSでダウンロードすると
>既にSTL対応版に入れ替わっていました。
>イメージファイルも1.44MBで出力するように修正されています
>さすがひげぽんさん、素早いですね。

ありがとうございます。でもあまり自分のやった仕事ではないのでもっとがんばります。
ついでに、Makefileも大幅に変更・改善しました。
0871デフォルトの名無しさんNGNG
ただ内部告発的なカキコも減ってしまう気もするんだが・・・
0872デフォルトの名無しさんNGNG
http://qb.2ch.net/test/read.cgi/accuse/1042131034/

312 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 19:59 ID:jWxHxvti
全部にいれてみた。

0873デフォルトの名無しさんNGNG
静かですねえ。
0874デフォルトの名無しさんNGNG
>>830-831
Monaでboostを試してみたけど
例外とかRTTIとかちゃんと扱えないと無理っぽい
なるべく贅肉を殺ぎ落としたほうが良いカーネル内部で
そこまでするのはやりすぎと思う

それ以前にboostはでか過ぎるし
必要なものだけ切り出すにしても無駄が多いしで
STLで止めといたほうがバランス的にいい

ひげぽんたんもboostには興味はあったんだったら
無視しないでコメントした方が盛り上がると思うよ
http://pc.2ch.net/test/read.cgi/os/1039075591/272

以上、boostの件は決着 >boost厨
0875デフォルトの名無しさんNGNG
http://pc3.2ch.net/test/read.cgi/tech/1039513920/
ここの106辺りに興味深いことが書かれてるな
0876ひげぽんNGNG
>>874
>Monaでboostを試してみたけど
>例外とかRTTIとかちゃんと扱えないと無理っぽい

調査ありがとうございます。
ここにもできる人がすばらしいです。

例外がないのはきついと思っておりましたが
やはり無理でしたか。

>必要なものだけ切り出すにしても無駄が多いしで
>TLで止めといたほうがバランス的にいい

調査結果から判断するとやはり、このご意見に賛成です。

>ひげぽんたんもboostには興味はあったんだったら
>視しないでコメントした方が盛り上がると思うよ

大変失礼いたしました。
いまは、STLが使用できるようになったので満足しています。
実際にSTLがカーネル実装にどの程度使えるかいろいろ実験しようと
思っています。task構造体の格納にコレクションを使うとか・・・
0877デフォルトの名無しさんNGNG
真っ先に帰るのが普通の客なんでないかな??冷やかしの人に裁判沙汰のリスクは
おえないでしょ。
本職はIP位ではへこたれずに留まるだろうけど、暫らくは半端な厨房が通常板へ
なだれ込んで無差別に悪さ(差別コピペ)をする、っつー事になりそう・・・

0878デフォルトの名無しさんNGNG
新しいテーマをだして書き込み募集したいんですけどどうしたらいいの?
0879デフォルトの名無しさんNGNG
パート2から見て、漏れも勉強したかったんだが、未だにはじめてよむ486が
手に入らず想像オナーニばっかしてる。
アマゾンでも在庫切れだってさ。。。
0880デフォルトの名無しさんNGNG
>>879
漏れはインテルのマニュアルで充分間に合ってる。
印刷するのがめんどいがな。
0881デフォルトの名無しさんNGNG
>>879
オンライン書店はamazonだけじゃない。
ttp://www.alles.or.jp/~teru1/washo.html
あとは自分で。
0882デフォルトの名無しさんNGNG
IP記録実験 Part3
http://qb.2ch.net/test/read.cgi/accuse/1042131034/

のレスをコピペしているようです。
ム板がちょっとした危機
0883デフォルトの名無しさんNGNG
ポリタンはギリギリのところで勝負してるっぽいとこが好きだ
0884デフォルトの名無しさんNGNG
まだ聞きたい事あったんだけどな
0885デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0886デフォルトの名無しさんNGNG
352 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 18:01 ID:rLfxQ17l
   悲しいときー。悲しいときー。
   正月に友人からエロゲーを借りて喜んで帰ってきたら、
   パソコンが壊れてたー。

   昨日ヨドバシカメラで部品買ってきて直しました。
0887デフォルトの名無しさんNGNG
誰かipを保存しない匿名掲示板を作って 
   
削除依頼があったら意地をはらずに
ほいほい消しちゃっていいからさ
0888デフォルトの名無しさんNGNG
テツandトモは仕込んでません
0889デフォルトの名無しさんNGNG
>>884
荒氏は無視して普通にレスすればいいじゃん。
0890デフォルトの名無しさんNGNG
合流したみたいなので本題をどうぞ
0891デフォルトの名無しさんNGNG
>>829
> > >数日たったころにバグが出そうなコードですな。。。
> > うう。勉強が足らないようです。STLの本買おうかな。
> そういう意味じゃないと思う。
そういう意味だと思う。

> std::list<char*> li;
> li.push_back("micoro kernel ");
char*で扱うのは最悪。
1. std::list<const char*>または
2. std::list<std::string>とするべき。

元のだと簡単にバッファオーバーランできる。
格納された文字列を操作するんなら
2にしといた方が無難。
せっかくstd::stringが使えるんだから
char*は可能な限り避けるべき。
そうしないと数日経った頃にバグが出るかも。

> STLの本買おうかな。
Cの知識だからSTLの本には書いてないと思う。
0892ひげぽんNGNG
OSに関する話題のほうが少ないなあ。
がんばります。

インテル推奨のタスクスイッチ方法(TSSに対してjmp,call)を使わないで
タスクスイッチする方法を調べています。

調べていたところ
ttp://204.215.248.28/board.jsp?message=1783
ttp://www.tldp.org/HOWTO/KernelAnalysis-HOWTO-6.html
ttp://osdev.neopages.net/tutorials/soft_ts.php

などが見つかりましたが、もうあと一歩です。
手順としては
・レジスタセーブ(push?タスク構造体に?)
・現スタック保存
・レジスタ復帰(pop?タスク構造体から?)
・スタック切り替え(TSS経由)
と、概要はつかめたのですが。

上記と割り込みハンドラ中の切り替え(スタックがカーネルスタック?)
や、eflags,eipなどのタスク初期化時の扱い等、細かい部分が
まだ良く分かりません。
どなたか良い資料等ありましたら教えてください。
ソースもあると大変助かります。
0893ひげぽんNGNG
>>891

ご指摘ありがとうございます。

>> std::list<char*> li;
>> li.push_back("micoro kernel ");
>char*で扱うのは最悪。
>1. std::list<const char*>または
>2. std::list<std::string>とするべき。

了解しました。const char*にはすべきだなあと
なんとなく気づいていたのですが放置していました。
おっしゃる通り、stringがよさそうなのでstringにいたします。
0894デフォルトの名無しさんNGNG
これはいい!
0895デフォルトの名無しさんNGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
0896デフォルトの名無しさんNGNG
>892

linux詳細カーネルの「プロセスの切り替え」
みたけど、結構複雑です。
FPU, 内部レベルステート、IOビットマップやらデバック情報など・・・。
OSとして例外処理、ページング、タスク管理機構ができあがるまでは、
TSSへJUMP切り替えのほうが無難では?プロセス生成時のステートの扱いの問題もあるし。
色々出来上がった後で、修正すればいいし。

割り込み処理コードはTSSを持たないらしいので(割り込み時のプロセスに
代わっての処理だから。カーネルレベルの話なら、スタック切り替えもない)。

0897デフォルトの名無しさんNGNG
後々の移植性とか考えると
TSSなんか使わないでページングだけで解決した方が無難だと思う。
0898デフォルトの名無しさんNGNG
>>892
「良い資料」などないよ。
そこは「考える部分」であって、調べたり、知識を吸収したりする部分
ではない。
0899LightCone ◆sSJBc30S5w NGNG
 「タスクスイッチする方法」を調べるのではなく、「タスクスイッチ」とは
「なんなのか」を突き詰めて考える事をお勧めします。

 「タスクスイッチ」をして、結果的に得たい動作は何なのかが分かれば、
必要な処理が自ずから分かってくると思います。

答えは、CPU内部の状態変数(それが何なのかは勉強の事)を切り替えるだけ
です。
0900超先生@OS板 ◆leaf/RYZgY NGNG
>>892
  ∧_∧
<後ろ頭>-~~~ ちょっとだけヒント出しておこう。

 /* task->stackは切り替え先タスクのスタック */
 *(task->stack-?) = ?; /* 汎用レジスタ値(popa用) */
 ...
 ebp = task->stack - ?;
 mov esp,ebp
 popa
 iret;
}
0901LightCone ◆sSJBc30S5w NGNG
>>892
頑張って考えてみてください。
0902ひげぽんNGNG
>>896
アドバイスありがとうございます。

>TSSへJUMP切り替えのほうが無難では?プロセス生成時のステートの扱いの問題もあるし。
>色々出来上がった後で、修正すればいいし。

なるほど。

現状の問題点・動機としては
・タイマー割り込みによるスケジューリングでタスクスイッチをしたい。
→backlinkの設定、NTフラグ設定、iretで実現しているが、一部タスクスイッチしない実機がある
→これは、果たして正しいタスクスイッチなのか?ありなのか?
→IDTにタスクゲートをおくという手もあるがスケジューリングしたい場合は
タスクスイッチが結局問題になる

・上記の問題点により、だったらタスクスイッチの中身の詳細を自分で把握できた方が
良いかなと考えています。

・最初はTSSへのjmp、callで実装しておき、あとから修正する場合
二度手間になってしまうかもというのもあります。
0903ひげぽんNGNG
>>897
>>後々の移植性とか考えると
>>TSSなんか使わないでページングだけで解決した方が無難だと思う。

私もそう思います。

>>898
>「良い資料」などないよ。
>そこは「考える部分」であって、調べたり、知識を吸収したりする部分
>ではない。

おっしゃる事は良く分かります。
ただ、私の知識・経験不足のため、考えるための材料が不足している。
と強く感じています。
そのための材料集めも含めて、
皆さまのご意見・アドバイスを頂けたらと思います。

>>899 LightConeさん
> 「タスクスイッチする方法」を調べるのではなく、「タスクスイッチ」とは
>「なんなのか」を突き詰めて考える事をお勧めします。

以前にも同様のアドバイスを頂きましたね。
ありがとうございます。m(__)m

今現在、実現したいのは、TSSjmpで実現できるタスクスイッチと
ほぼ同様のタスクスイッチです。
0904ひげぽんNGNG
> 「タスクスイッチ」をして、結果的に得たい動作は何なのかが分かれば、
>必要な処理が自ずから分かってくると思います。
>答えは、CPU内部の状態変数(それが何なのかは勉強の事)を切り替えるだけ
>です。

そうですね。概要だけは理解できていると思います。
あとは具体的な詳細部分の方法が理解できたらと思います。

>>900
超先生@OS板さん
>  ∧_∧
><後ろ頭>-~~~ ちょっとだけヒント出しておこう。

ヒントありがとうございます。
考えさせていただきます。
0905デフォルトの名無しさんNGNG
TASK_SWITCHの話題中、申し訳ないが、、、
INTEL CPUで考慮しなければならない(整列しなくてもよいが、整列すると効率的なのも含めて)
アライメントについて教えてください。

linuxなどのソースを見ると、
gdtr, idtrのメモリ配置は align 2で奇数ワード整列しています。
tr, ldtrのほうは align 4でダブルワード整列しています。
ここで謎なのが、GDTのディスクリプタ配列がなぜか align 3...
他にも整列したほうがよいデータ構造があれば教えて欲しいです。
0906ひげぽんNGNG
>>905
ページテーブルは4Kの倍数にあわせるとか
どこかで読んだような気がします。
0907デフォルトの名無しさんNGNG
>>905
gas(as)のalignのパラメータの解釈はシステムによって異なる
その場合align 3はアドレスの下位三ビットが0になるアドレスに整列するという意味
つまりmasmなどのalign 8と等価
0908デフォルトの名無しさんNGNG
905です。
>>ひげぽんさん, 907さん
ありがとうございます。

align 3(gas) = align 8(masm)
ですか!驚きました。

ということになると、
idtr, gdtrでのalign 2(gas)
ってのは下位2bitが0ってことで、align 4(masm)と等価?
奇数ワード整列(addr mod 4 = 2)に反する??

じゃなければ、そこのところはalign 2(gas) = align 2(masm)なのかな。

レス数が900を超えています。1000を超えると表示できなくなるよ。