不確定特異点

広く深く、ところどころ超深く

メモリ割り当てアルゴリズム (1)

uros という組み込み用途を想定したARM用のOSを書いてます。といっても、まだタスクの生成と単純なタスクディスパッチが出来る程度で、割り込み処理は SVC(スーパバイザコール) のみ、しかもタスクを切り替えるタイミングも陽にシステムコールを実行するという、まだまだOSとはほど遠いものです。

現状は優先度の高いタスクが実行を完了するまでは優先度の低い他のタスクに切り替えることが出来ません。これはタスクごとにスタックを用意せずに、カーネルとタスクで唯一のスタックを共有しているためです。(これではタスクを関数呼び出しするのと変わらないのでOSと呼べるものではありませんね。)

次のステップとしてはスタック領域をタスクごとに独立させ、もう少しまともなタスクディスパッチが出来るようにしてみたいと思います。そこで、まずはスタック領域を確保するためのメモリ割り当てアルゴリズムが欲しいところです。というわけで、前置きが長くなりましたが、比較的小型で高速なメモリ割り当て処理を検討してみたいと思います。