Ubuntu 18.04.1 LTSでやる 30日OS本 〜15日目〜

Ubuntu 18.04.1 LTSでやる 30日OS本、15日目です。 他の章へのリンクはここにあります。

1. ・2.

10秒だと長いと感じたら、3秒でスイッチするようにしても良いかも知れません。うまく動かない可能性を考えると早く結果が分かるに越したことは無いので… タスクBから帰ってくる時間の5秒についても同様です。

3.・4. 簡単なマルチタスクをやってみる

575。

task_b_maincountを本ではint型で持っていますがunsigned intの方が良いと思います。sprintf中の%d%uに変更。

5. ・6.

符号なし32 bit整数の取りうる範囲は0〜4,294,967,295なので、表示桁数は10桁で十分です。 実機で測定を行い、30回分の平均を取ると8.39086(2)×107カウントでした。

7. もっとマルチタスク

「Harimainからタスクスイッチ関係の部分を消す」とあるのは、farjmptimer_tsあたりを消すということです。tss_atss_bに関する記述は 残しておきます。また、bootpack.cからmt_initを呼ぶ必要があります。

前節と同様に実機で測定を行い、30回分の平均を取ると8.39106(2)×107カウントでした。確かに速くなっています。 13日目最後の測定結果と比較すると、次の表のようになりました。

カウント数
13日目最後 1.6813335(3)×108 1
15日目-6 8.39086(2)×107 0.499060
15日目-7 8.39106(2)×107 0.499072

大体1/2程度のカウント数になっています。CPUの処理速度が高いせいか、本に書かれているほど大きな差は出ませんでした。