シングルスレッド
英語の宿題が終わったら数学の宿題をやる。
これを毎日ループするイメージ。
ごく普通にプログラムを書くとこうなる。
マルチスレッド
分身の術のような感じで2つ以上のプログラムを同時に実行する。
プログラムはループするプロセスが複数が並立する感じになる。
プロセス同士の調整がキモ。
マルチコア
デュアルコアならコアが2つあるので2つのプログラムを同時に実行できる。
2つのプログラムでデータをやり取りする場合には調整が必要になる。
マルチコア&マルチスレッド
リアルタイム処理
それぞれのプロセスは、問い合わせがあった瞬間に即座に答えを出せるよう、決められた時間内にプロセスを終了させて待機している必要がある。
またやりとりするデータの書き換えなどが同時に起こると不都合なので、そこもケアしなくてはならない。
さらにデッドロックという、互いに互いの終了を待つという状態に入ると、システムがフリーズしてしまう。
μITRONやFreeRTOSなど、組み込みOSと呼ばれるものはこのリアルタイム処理が得意。
次回
実際にArduinoIDEとESP32でサンプルプログラムを実行してみます。
シリーズ記事: