OS側、レディーキューの操作まで読みました。

レディーキューの操作はC言語で良く出てくるリンクリストの管理で理解できるのですが、レディーキュー自体が、「実行可能だが他のスレッドが実行されているので実行できないでいるスレッドだけを並べたキュー」なのか、「レディーキューの先頭は実行中のスレッドである」のかが良く分からないため、これだけの処理で十分なのかはっきりしません。

さらに次セクションのスレッドの起動と終了も一通り目は通しましたが急激に内容がジャンプしたように感じます。何でこれで良いのかピンとこないことが一気に増えて困ってしまいました。

今までの経験からすると、こういう時はいい加減な理解で先に進みすぎても全く分からなくなるし、かといって完全に納得しないと絶対先に進まないと決めてもいやになってしまうので、自分をだましだまし何度も読む込むしかなさそうです。

しばらく自分と上手に付き合うことが必要なようです。

OS側の修正です。

ブートローダーで追加されたブートスタックと割込みスタックに、各スレッドが利用するユーザースタックが追加されます。

スレッドのディスパッチ関数も追加されます。引数はスレッドのスタックポインタの値が格納されているメモリのアドレスです。

スタック操作が沢山出てくるので良く考えないとすぐ混乱してしまいます。次セクションからが本当の山場になりますね。

ブートローダー側の修正です。

起動処理用のブートスタックと割込み処理用の割込みスタックを分けますが、スレッド毎に確保するユーザスタックは、ブートローダーはスレッドを持たないのでありません。

ただ、上記2つは別物としてはいますが同じアドレスが起点になっており、なぜそれで良いのかはピンときていません。

次のセクションはOS側の修正で大幅に変更されます。大変そうですがここが本書の山場と思いますのでがんばって理解したいと思います。