組込み・ファームウェア
プリエンプティブなRTOSで、優先度の低いタスクの実行中に、優先度の高いタスクが待っていたデータを受け取って実行できる状態になった。一般にどうなるか。
- A低いタスクが自分から終わるまで、高いタスクは待つ
- B両方のタスクが止まり、マイコンが再起動する
- C低いタスクを途中で止めて、すぐに高いタスクに切り替える
答えと解説を見る
正解:C. 低いタスクを途中で止めて、すぐに高いタスクに切り替える
プリエンプティブなRTOSでは、割り込みなどをきっかけに優先度の高いタスクが実行できる状態になると、カーネルが実行中の低いタスクの状態を保存して止め、高いタスクに切り替えます。高いタスクが終わるか待ち状態になると、低いタスクが続きから再開します。そのため、高い優先度の処理の応答の時間を短く予測しやすくできます。
- A. それは協調的(ノンプリエンプティブ)な切り替えです。
- B. 再起動はしません。
- C. 正しい。これがプリエンプション(横取り)です。