よもぎのメモ帳

備忘録的な感じで技術的なことをストックしていきます。

よもぎのOS自作入門 16日目/30日

はじめに

これは2020年夏休み企画「30日でOS自作してみよう!」16日目の記事です。

企画についてはこちら

y0m0g1.hatenablog.com

昨日やったことを書いていきます。

おや!2日ぶりの投稿だね!ミッ*1

昨日の進捗

f:id:y0m0g1:20200905001621p:plain
タスク管理に優先順位がつけられた

タスク管理を自動化し、複数ウインドウにして、タスク管理にプライオリティーを導入しました。

昨日やったこと

前回はタスクのアレコレを手動で設定して、コンテキストスイッチも手動でやっていた感じですが、 まず今回は手動で行っていた作業を自動化しました。*2

またコンテキストスイッチされた先のタスクでやることがない場合に、HLT命令を回し続けるのではなくスリープ状態にしました。 このあたりの話は学部のときの実験でちょっと出てきた気がする……?

f:id:y0m0g1:20200905002114p:plain
HLT命令を回し続けたとき
f:id:y0m0g1:20200905002158p:plain
スリープ状態にしたとき(速くなってる)

タスク管理を自動化したのでウインドウを増やすみたいなことしました。 なぜかタスクb2が値が倍くらい良い、なんでだろ。

f:id:y0m0g1:20200905002307p:plain
ウインドウx4

そしてタスクに優先度(プライオリティー)を導入しました。ここでは優先度の値とタスクに割り当てられる連続実行可能時間が比例しています。 Linuxだと負の値ほど優先度が高くなっていたと思うので、逆ですね。

明日も一日頑張るぞい!

*1:Press F for play

*2:脱手動という意味での自動化