15日目(タスクスイッチとマルチタスク)
ちょうど半分まで来た。
本書によると、OSの開発に最低限必要な知識は13日目辺りまでらしい。
なのでこの辺りに来ると構造がだいぶわかりやすくなってくると思う。
C言語にもだいぶ慣れてきたが、未だになんとなくわかった感じしかしていない。
また、実機で起動してみたくてUSBメモリにimgファイルを書き込んでみたが、どうしてもできないので諦めた。
BIOSの設定を変えれば起動できている人もいるようだが、簡単には行かないような話もよく見るのでよく解らない。
でもせっかくOSを作っているので、これはまたいずれ検討したい。
では続き。
マルチタスクの検証だが、最初は入力を止めたりまた動かしたりする程度でやることは地味。
いつものことだがnasmfanc.nasのsection .txtに追記を忘れて、エラーにかなり悩んだ。
(GLOBAL load_trとGLOBAL taskswitch4)
18行目あたりにいきなり出てくるvoid task_b_main(void)はプロトタイプ宣言だろうか?
だったら最後の行にあるやつはここに持って来れば良いんじゃないだろうか。(でも最後にあったほうがわかりやすいので、結局やってない)
harib12cではbootpack.cの構造体TIMERで*timer_tsの追記に気付いてなかった。
harib12d以降のカウントの数字は、いつものように"%10d"を"%d"に変更。
こうしないと数字が出なかった。
スピードアップのカウントは速すぎて、数字が全然追えなかったので正確にチェックできていない。
とにかく見ていると、速くなったことはなんとなくわかった。
あとはまたファイルが増えたので、mtask.c関連の追記をbootpack.hとMakefileに忘れないように。
ちょっと間が長かったので、忘れていることが多いのもミスの原因。
出来るだけこまめに進めていきたい。