OS自作入門-15日目

さて、昨日さぼった。。。ゲフンゲフッ
もとい。熱心に勉強した成果を見せるか!!


いでよ!まーるーちーたーすーくーーーっ!!


さて、一言にマルチタスクといっても実際に何をすればいいかが具体的に分からん。
分からんかったけど、この本をここまで読んできて漠然としたイメージはある。
つまりは、CPUが現在やっている処理をメモリに書き込んで(復帰できる状態で)
他の処理の所から引っ張ってきて、CPUに放り込むということ。




で、切り替えの感覚なんだけど、本によると普通のOSでは切り替えは

0.01秒〜0.03秒で行われているそうです

とのこと。
まぁなんでかというとタスクを切り替えるには上で書いたようなことをするわけで、
もちろん切り替え自体の処理に少ないが時間がかかる。その分の無駄な処理が増える。
0.001秒ぐらいで切り替えるとCPU能力の10%を切り替えに使うことになるらしい。
だからその上の桁の0.01秒。。。これだと1%ぐらいだそうだ。


で、最初にやるのはメインからタスクに切り替える。
ハードコーディングなので10秒後に切り替える。。。だね。


んで、次は一旦タスクAに切り替えてからもっぺんもとのメインに戻す。
うーーん。マルチっぽくなってきた。


それにしても著者はスピードにもの凄いこだわってるね。関心関心。ジガチガウヨ


そういうえば、CPUはJMP処理で飛ぶメモリ番地によって処理するクロック周波数が変わるらしい。
まぁ謳われている周波数を超えることはないんだろうけど、メモリ番地で処理速度が変わるのは
なんでだーー?インテルのおじさんが決めたんだろうね。。。きっと。


んで、ここまではタスク切り替え処理をタスク自体にかきこんでいたんだえけど、
どうもそれだと「本物」のマルチタスクじゃないらしい。
というわけで、タスク側に切り替え処理を書かなくても言い様にリファクタリング
まぁ要するに、タスク自体に各々タイマーを仕掛けてタイムアウトしたら切り替わる
って処理方式にしてる。管理するには断然こっちだよなーとも思うけど、ヤッパリ賢い。
私なら。。。優先度とか先のことを考えずに、一定の間隔でタスクを強制的に切り替える
仕組みを作るかな〜。ああ。。。でもタイマーは使ってしまうのか。。。駄目やん。


んっと。ちょっと、はしょってるけど。こんな感じ。
んじゃー明日もマルチタスクー2ぁぁあーーー!!
ガンバロ〜。