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_main
でcount
を本ではint
型で持っていますがunsigned int
の方が良いと思います。sprintf中の%d
も%u
に変更。
5. ・6.
符号なし32 bit整数の取りうる範囲は0〜4,294,967,295なので、表示桁数は10桁で十分です。 実機で測定を行い、30回分の平均を取ると8.39086(2)×107カウントでした。
7. もっとマルチタスク
「Harimainからタスクスイッチ関係の部分を消す」とあるのは、farjmp
やtimer_ts
あたりを消すということです。tss_a
やtss_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の処理速度が高いせいか、本に書かれているほど大きな差は出ませんでした。