16日目(後半)「優先順位って、全然難しそうな雰囲気がないから、もっと難しそうな雰囲気を出してくれ!」

 なんとか分かったぞ。なんとか、なんとかな。もうこれ以上理解するのは無理! 不可能! すでに俺の頭脳の許容量の120%を使用しているからもう無理。無理。ホント勘弁してください(ピキーッ、ぼくはわるいスライムじゃないよ)。
 というかですよ。16日目は個人的に、かなり難易度高いよ。正直6日目の悪夢を思い出しましたよ。ただ、あれは著者が「6日目はむずいよ?」といっていたので、心の準備といいますか、まぁ心の準備ができたわけですけどね(だから心の準備だね?)。ただ、今回はなんの予告もないですから。いきなりですから。いきなり後ろから殴られた感じですから。スライムを倒してレベル上げようとフィールドを歩いていたら、いきなりドラキーが出てきたようなもんですから。
「おいおい、ドラキーとか強いよ〜、これは逃げるしかねー」にげる選択
「はりぼては逃げた。しかし、まわりこまれてしまった…」
ドラキーの攻撃!」 ガンッ!!! 「はりぼてに8のダメージ!!!」
「はりぼては死んでしまった…」テラリラ、テラリラ、テラリラ、テラリ〜…

川合秀実「ああ、はりぼてよ、死んでしまうとはなさけない…」

 ちくしょー、ゴールド半分かよー(ってそれはドラクエだけだから、ドラクエの世界だけだからーー)。
 って、話がそれたけど。今回、俺が本当に難しいと思ったところは、タスク管理の優先順位というところだ。例えば音楽を鳴らすタスクや、マウスを動かす処理を受け持っているタスクというのは、一般的に、ほとんど途切れてはいけない処理。んで、逆に一定時間毎に数値をカウントする処理なんかは、ある特定の時間以外は別に何もしてなくてもよいわけで。つまり、タスクの種類によって、どのくらいCPUに働かせようかを決めなければならないわけだ。そして、それが優先順位という仕組み(少なくとも本書ではそう読んでいる)で実現するのだが、ホント、もうややこしいったらありゃしない。なんかこれまで学んできたこと総動員で、しかもタスク管理自体も難しくて、マジでこれは難易度高いと思う。ホッホッホッ、私の難易度は…53万です(フリーザ様〜〜)。
 それで、例えばもっとも処理を必要とするタスクをレベル0とし、もっとも処理を必要としないタスクをレベル10とする。そして、すべてのタスクをこのレベル0〜10までの範囲で振り分けて、なるべくレベル0の方から順にCPUに処理させるような仕組みを作る必要がある。前にも学んだとおり、CPUは一個しかないので、一瞬(1クロック?)で処理できる命令は必ず1つなのだ。つまり、1つのタスクしか処理をしていないため、ものすごい、本当にものすんごいスピードでタスクの間を行ったりきたりして処理していかなければならない。
 ここで、どのタスクをどれくらい優先させて処理させるか? ということが重要になってくる。すべてのタスクを均一に同じ期間だけ処理させるというのなら、さほど難しくはない。難しいのは、タスク別にどれだけ優先させるかという仕組みを作ることだ。
 それで、まさに分からんかったのはこれです。優先順位! 本当に完璧なまでのアルゴリズムな話なんですよ。本当に壁だと思うんだけど、俺だけなのかなー。
 というわけで、一応、ある程度理解したので、セイカブツを残します→本当に30日でOSが出来上がるのかを試してみるページ。マウスの動きとかウィンドウを移動したときの動きとかが微妙にあやしいのは、優先順位処理を最後までちゃんとやってないから。でも、なんとか理解はできたと思うから、明日のコンソールを作るついでにやったります。それに、この本は、そのときは分からなくても、読み進めていくと分かってくる場合もあるのだ(6日目同様)。だからとりあえず、この本を読んで楽しむことが重要なんじゃないのかな(多分)。
 あと、この辺りになると著者がちょっとノリにノッっているのが分かる。最初の方よりもOSっぽくなってきて、書く側としても面白く感じるのかもしれんです。テキストも内容もどんどんさくさく進んでいくし(速すぎてついていくのがやっとだけど(汗))。
 まぁというわけで、とりあえずは進む! 明日はコンソール。ずっと前からやりたいと思っていたところだ!! よっしゃー!! がんがったる!!!
 乞うご期待!