目次 このページのソースコードを表示
公開日:
更新日:

ここでは, OSには必ずなくてはいけない機能の一つであるタスク管理について説明します.

タスク管理には非常に多くのことが関わっているため以下のように分けていきます.

  • タスクコントロールブロック(TCB)
  • メモリの構造
  • 状態リスト
  • コンテクスト
  • システム割り込み
  • タスクを管理するにあたり, 各タスクの情報を保持しておく必要があります. このような情報の塊をタスクコントロールブロック(TCB)と呼びます.

  • ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.

  • それぞれのタスクにはそのタスクの状態というものがあります. 今回のOSでは, このタスクの状態を状態リストを用いて判別することにします. 以下から, タスク状態の種類, 状態リストの構造, リストを用いたタスク状態の切り替え方法を詳しく見ていきます.

  • タスクの切り替えをする際, その時のCPUの状態を保存する必要があります. このCPUの状態をコンテキストと呼びます. あるタスクから離れるときはコンテキストの保存を行い, あるタスクに復帰するときはコンテキストの復帰を行います.

    ここでは, コンテキストに関する詳しい説明とコンテキストの保存と復帰の方法について説明します.

  • OSがタスクの切り替えを行うためには, 定期的にOSが現在実行中のタスクの処理を中断してタスク切り替え処理を行う必要があります.

    ここでは, このようなOSが定期的に割り込み処理を行う方法を説明します. また, 割り込み時の処理について説明します.

「https://contentsviewer.work/Master/Arduino/ArduinOS/TaskScheduler」から取得