はりぼて日記
2007 | 01 | 02 | 03 | 04 | 05 | 07 | 08 | 10
2006 | 11 | 12
10月 09 (火曜日) 2007
14:37
17日目
 
17日目〜。

むっずかしいタスク管理。完全に解らなかったのがちょっと
くやしいが今度はコンソールだ!。サクサク進めるはずだぞー!?

・・・いきなりまたタスクですか・・・ orz

ん? あれ?

でも、これならわかるぞ? 番兵でしょ?
P337
うん!大ジョブ大ジョブ! これなら解る解る!
(  あーよかった・・・(^^;  )

P338
さてさて!
いよいよコンソール作り〜! こういうのはなんか楽しいな♪

P344
あーん。なるほどねぇ。ここでTASK構造体にFIFOが入るのかぁ。

P345
&fifoを&task->fifoに書き換えると・・・なるほどなるほど。もっともです。

P347
うーん。なつかしいなぁ。これ見るたび、かつてhideyOSiを
作ってた時のこと思い出すです。(いやそりゃ、ぜんぜん
レベルが違いますが・・・(^^;  )

P352
コラムに書いてあることをウチでも実験・・・・
あっれ〜??? ウチのはちょっとちがうぞ??

QWER UIOP
ASDFGHJKL:"|
BN?

ウチのキーボード+WindowsXPだと、両Shift押しだとこれしか
入力できないようだ・・・。こういうのはなんの仕様なんだろう?
キーボード? それともマザーボードかなんかかな???


さてさて〜。
タスク管理と違ってツルツル進むぞ! ←逆恨み

そんなわけで、17日目終了〜
 
30日を過ぎたBlogにはコメントできません。
13:12
16日目2
 
P324
タスクに優先順位かぁ。なるほど確かにこれは必要な仕組みですね。
そのために、TASK構造体にプライオリティーという変数を追加と。

P326
ふむふむ。タスクが2個以上ないとスイッチしないと。なるほどなるほど。

P327
なるほどぉ〜。タスクを走らせる時に優先順位をこういうふうに
指定すれば近い値が出ますなぁ。たしかに。

P328
・・・さ〜て! ここからが課題。
っと言うのは、以前はどうもここがわからなかったからなんです。

おっとっと!
さっそく!。やることがなくなるとスリープすると。
えっと。これどういう仕組みだったっけ?。チョット復習。

あー!ここ、ここ! P316だ。
なるほど。やることがなくなった場合はtaskctl->tasks[]内から
削除されると。これは要するに、順番待ちの名簿から名前を
削除されるのと同じことだね。スリープというとなにか特殊な
感じがするけど、ようは名簿から外れたので呼び出し(タスク切り替え)
が起こらず、結果なにもしないタスクということになるわけか。

P329
・・・むむむ・・・これがどうもわからんなぁ。
マウスと音楽。共に大事なんだけど、その大事なのがぶつかって
しまったら。まあそれはよくわかるんだけど、たとえばプライオリティーを
もっと細かく(たとえば100段階とか)にするってんじゃダメなのかなぁ・・・

タスクにレベルを設ける。で、上のレベルが空にならない限り、下のレベルのタスクにはやってこないと。
うーむ!。でも、例えば音楽再生みたいにずーっと処理されるようなタスクが
二個あったら、下のタスクには永遠に切り替わらない???

あ”っーーーー! ちょっと違うなぁ。

これは逆の考え方のほうがいいのかな。つまり、いままでの
優先順位だけだとタスクは全て切り替わる。順位はあるが
必ず切り替わると。
音楽再生のように忙しいタスクが出現した場合はいくつかの
タスクが下のレベルに追い出され、終わるまでは切り替わらない。
そういう考え方なのかな??


うーーーん・・・・
P331のtask_switchsub()がどうもわからないなぁ・・・

・・・こりゃちょっとダメかもしれん・・・
さすがに「3巡目」ってのはないけど、ここはちょっと棚上げ。

以上、2巡目もまた惨敗だが先に進むことを優先し、不本意ながら16日目終了・・・orz
 
30日を過ぎたBlogにはコメントできません。
8月 03 (金曜日) 2007
18:44
16日目
 
16日目〜。

P312。
ふむふむ。これはいつものパターンだよね。(Kタンのパターンなのか、プログラミング上の定石なのか??)

・・・ふーん・・・
これ見ていて思ったのだが、各関数や構造体の「入れ子状態」を
図にしてみると解りやすいかもしれん・・・
(だって〜! タスクならtaskxxばっかりでややこしいんだもん!
徳川さんチの人がみーんな家xってのと同じような。覚えにくい!)

P316
えーっと。自分自身を寝かせる関数・・・
task_sleepに渡されたtask構造体。この構造体にはflagsというパラメータがある。
このパラメータが2ならそのタスクは動作中。1ならそのタスクは動いていないというマーク。
最初のifで、動いていて、かつ、現在動作中のタスクかどうかを判断させ、tsで記憶する。
tasks[]からはずされてしまうので、次回タスクが切り替わる時にはこのタスクは対象外となる。
・・・しかし、今回はまだ切り替えを行わない。まだ動いているから・・・・
こんな感じかな???


P318
なるほど〜。これはそうむずかしくないな。


むむ〜。複雑だなぁ。タスクがスリープをするかどうかをよく
把握していないと・・・

P321
??「偶然飛び先はよくなったので性能が上がった」???
あれかな? 飛び先が4の倍数の番地だと早くなるっていう・・・

P321のコード部
・・・うむむ・・・
確かにながーいけど、なんとなくわかるぞこれは。
この構造だと基本的にはtask_bが一個だったいままでとそんなに
変わらないもんなぁ。
今はまだ未完成状態のせいだろうけど、かえって、もっとまとめられないかなぁなんて思えるくらい。
 
30日を過ぎたBlogにはコメントできません。
7月 30 (月曜日) 2007
19:14
15日目4
 
15日目4〜。

P307。
いよいよちゃんとしたマルチタスク。

ふむふむ。
ようするに、タスク切り替え専用のタイマを作って、こいつが
勝手に自動的に切り替えを繰り返すと。

これはむずかしくなかったぞ〜。

そんなわけで、やっとこさ15日目終了〜
 
30日を過ぎたBlogにはコメントできません。
16:29
15日目3
 
15日目3〜

まだP296・・・・orz

えーっと・・・ちょっと整理してみよう。「今回のHariMainの一部」の表。

・まず、なにもしない。初めて動くタスクなわけだから、ほとんどの
 レジスタは「0」でいいと。
・tss_b.eip。eipは次に実行する命令の番地を管理してる。今回は
 task_b_mainという関数のアドレスを格納している。まあつまり、
 今回初めてtask_b_mainを動かすんだから、この関数の一番最初の
 番地を入れておくという感じね。
・tss_b.eflags。eflagsはフラグの集まり。各ビットひとつひとつに
 意味があるレジスタ。
 えーっと。なになに?STIした後の値とな??
 STIってなんだっけ・・・・
 あー。そか。P89。割り込みの可否のレジスタね。
 うーん・・・これ16進数で0x00000202なんて書いてあるから意味
 わからんかった。これをP89の表&二進数に変換すると・・・

┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│15│14│13│12│11│10│9 │8 │7 │6 │ 5│4 │3 │2 │ 1│ 0│
├─┼─┼─┴─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│ │NT│IOPL │OF│DF│IF│TF│SF│ZF│ │AF│ │PF│ │CF│
├─┼─┼─┬─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
│1 │0 │0 │0 │0 │0 │0 │0 │0 │0 │0 │0 │0 │0 │1 │0 │
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘

こういう値が入るわけね。(・・・なんだろ?この値??なんか意味があるのだろうか???)

・tss_b.esp
 タスクBが使うスタックの番地(開始番地?)のアドレスをセットすると。
 (まあこれは当然だよね)

・es,cs,ss,ds,fs,gs
 ふーむ・・・。asmhead.nasと同じ?えとえと???
 うえーーん!わかんねぇ!P134のDS、ES、SSの思い込みのこと??
 ここはちょっと棚上げ・・・
 

P299
えーっと・・・ESP+4かぁ。
これはどういう意味かというと、P69参照。Cから渡された引数を
読みたい場合にこうするというだけ。


P301
「川合先生!秀吉君がまたかよって言ってます!」 (笑
 
●K@Guest -- 08/25 11:04
0x0202を2進数にすると、bit1とbit9だけが1になります。だからbit15が1なんじゃなくて、IFが1ですよ。

30日を過ぎたBlogにはコメントできません。
7月 15 (日曜日) 2007
17:43
15日目2
 
ふむふむ。
まずはTSS構造体を定義する。
そしてその定義に従って二つの構造体変数を宣言。
んで、レジスタ退避意外の要素、TSSの設定変数に初期値を代入と。

で、これを実際のGDTに登録〜!

・・・あれ? リミットってなんだっけ??

あー! そっかそっか! 「このセグメントの大きさはいくつ」だ!

本来のセグメントはこれを自由に好きなように設定できるけど、
TSSはP292のとおり104バイトしかいらないから、その大きさつーことね。

ふむふむ。以上で準備がOKとなったわけね。

で、タスクの切り替え。

・TRレジスタに現在のタスク番号?(実際にはTSS番号)*8を代入
・あとは切り替えたいタスク番号にファージャンプ!

なるほどなるほど!

P296、
うーん。これは、パチンとタスクがタスク4に切り替わったとき、
全てのレジスタがこうなるということを設定するわけか。
今回は初めて切り替わるので、事実上初めて動き出すのと同じこと。
なので、ほとんどのレジスタは0なわけか。
(まあつまり初期値なので0にしとくかってレベルのはず。
 
30日を過ぎたBlogにはコメントできません。
12:52
15日目
 
15日目〜。
さーていよいよマルチタスクだ!

マルチタスクは同時進行ではない。高速に切り替えているだけ。
忍者の分身の術と同じなわけですね。

ちなみに猿飛び佐助は実在しませんが霧隠れ才蔵は
実在したorモデルとなる忍者がいたとか・・・ ←超どうでもいい

ふむふむ。TSSはセグメントの一種と。

ldtrは0に。iomapは0x40000000をとりあえず代入と・・・なんでーー????
(たぶん後で出てくるはず)




 
●uchan@Guest -- 07/16 08:05
僕もiomapはよく分からなかったですが、調べてみました。URL:http://haribote.org/index.php?uchan

30日を過ぎたBlogにはコメントできません。
12:37
14日目3
 
ひさびさ〜

高解像度。まあこれは特にわからんことはなくトントンと進んでます〜。
P279、ほっほ〜。ES:DIにビデオカードの情報があると。なるほどなるほど。


P282
キーボードかぁ。
ここの表でもいいんだけど、オイラの時は実際の配置との照らし合わせに
ちょっと苦労した記憶があるのでこんなのを作っとります。
よろしかったらご活用ください〜。


P288
うーん。スルスルと解りすぎて書くことないなぁ・・・←なにを偉そうに!

動くだけで反応しないマウス・・・・
そんなの飾りです! かわい人にはそれが解らんのです!


そんな小ネタとともに、14日目終了〜
 
30日を過ぎたBlogにはコメントできません。
5月 14 (月曜日) 2007
16:51
14日目2
 
14日目2〜

ヽ(`Д´)ノモルァ わかんねー!
棚上げは棚上げで進もう!


 
30日を過ぎたBlogにはコメントできません。
5月 13 (日曜日) 2007
21:24
14日目
 
14日目〜

うみゅーー!
ここまでで一息入れて、これまででわからなかったことを整理しろと!?
ふーむ。今現在オイラが解っていないことはここのリストにまとめてある。一度調べてみるか・・・
 
30日を過ぎたBlogにはコメントできません。
1 2 (3) 4 5 6 7 8 9 10 11 12 » 

PopnupBlog V3 Denali created by Bluemoon inc.