リアルタイムOS入門 タスクの優先順制御


競合を回避するしくみ

FreeRTOSとそのタスク管理

図1 FreeRTOSは,組み込みシステム向けの軽量でシンプルな定番のリアルタイムOS.その機能はタスクの競合を回避する優先順位管理やスケジューリング.画像クリックで動画を見る.または記事を読む.[提供・著]後閑 哲也
詳細[VOD/KIT/data]Wi-Fi×32bit PIC!FreeRTOSプログラミング実習 オールインキット

リアルタイムOS(RTOS)とは?

リアルタイムOS(Real-Time Operating System,RTOS)は,処理を指定したタイミングで確実に実行する必要があるシステムで用いられるOSです.

RTOSはコンピュータの資源を効率的に管理し,タスク間の優先順位やタイムシェアリングを通じて,複数のタスクが協調的かつ確実に実行されるよう制御します.車載システムや産業用制御装置など,タイムクリティカルな場面での利用が一般的です.

FreeRTOSは,組み込みシステム向けの軽量でシンプルなRTOSとして広く知られており,現在では40種類以上のマイコンに移植されています.オープンソースであることや,小規模な構成でC言語を主に使用していることから,初心者でも取り組みやすい点が特徴です.

FreeRTOSのタスク管理とスケジューリング

FreeRTOSの中心的な機能は,タスク管理とスケジューリングです.以下にその主要な動作を解説します.

1.タスクの状態遷移

FreeRTOSではタスクが次の4つの状態をもちます.

  1. 実行中(Running):現在CPUで実行されているタスク
  2. レディー(Ready):実行の準備ができているが,CPUがほかのタスクを実行している状態.
  3. 待ち(Blocked):特定のイベント(例:タイマやセマフォの信号)を待機中
  4. サスペンド(Suspended):手動で一時停止された状態

タスクは`vTaskSuspend()`や`vTaskResume()`などのAPI関数を通じて,これらの状態間を遷移します.タスクの優先順位に基づき,スケジューラが最適なタイミングでタスク切り替えを行います.

2.プリエンプティブ・マルチタスク

FreeRTOSはプリエンプティブ(割り込み)マルチタスクに対応しており,特定のタスクが長時間CPUを占有しないよう制御します.タイム・スライスやイベント駆動の手法を用いて,ほかのタスクへの切り替えを行います.このしくみにより,応答性が求められるタスクが優先的に実行されるのです.

3.メモリ管理の選択肢

FreeRTOSは用途に応じて5種類のヒープ管理方式を提供します.動的に領域を割り当てる`Heap_4`方式では,隣接する空き領域を結合して効率的に利用する一方,固定的な割り当てを行う`Heap_1`方式はメモリ消費を予測しやすい利点があります.

タスクの競合回避のしくみ

リアルタイム・システムでは,複数のタスクが競合するリソースを使用する場合に,優先順位制御が重要な役割を果たします.

タスクの優先順位制御

FreeRTOSでは,タスクごとに優先順位を設定できます.この優先順位は整数値で表され,数値が大きいほど高い優先順位をもちます.スケジューラは現在レディー状態のタスクの中からもっとも高い優先順位をもつタスクを選択して実行します.これにより,時間的制約の厳しいタスクがほかのタスクに先行して処理されることが保証されます.

同じ優先順位をもつタスクが複数存在する場合,タイム・スライス機能が働き,一定周期でこれらのタスクが交互に実行されるしくみとなっています.

競合回避のしくみ

競合回避のために,FreeRTOSはセマフォやキューといった同期プリミティブを提供します.セマフォは,リソースの排他制御に使用され,複数のタスクが同時に同じリソースにアクセスするのを防ぎます.たとえば,I$^2$C通信を行う場合,セマフォを用いることで通信バスの競合を防ぎます.

タスク間でデータを安全にやり取りするために,FreeRTOSではメッセージ・キューが利用されます.このキューは,データの送受信を非同期に行えるため,タスクの独立性を保ちながらデータを共有することが可能です.〈著:ZEPマガジン〉

動画を見る,または記事を読む

著者紹介

  • 1971年 東北大学 工学部卒 大手通信機メーカにて制御機器開発に従事
  • 1996年 ホームページ「電子工作の実験室」を開設
  • 2003年 有限会社マイクロチップ・デザインラボ設立 代表取締役 計測制御システムコンサルタント,書籍執筆 セミナ講師
  • 2012年 神奈川工科大学 工学部 客員教授

著書

  1. [VOD/KIT/Book/data]ラズパイPico W×ChatGPT APIで学ぶ 会話型IoTエッジ開発,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]PICマイコン オールイン1日学習キット ,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]PICマイコン オールイン1日学習キット ,ZEPエンジニアリング株式会社.
  4. [VOD/Pi KIT]ラズベリー・パイで学ぶLinux&Pythonプログラミング超入門,ZEPエンジニアリング株式会社.
  5. [VOD/Pi KIT]ラズパイ×Node-REDで作ろう!IoTアプリ開発入門,ZEPエンジニアリング株式会社.
  6. 電子工作のための PIC16F1ファミリ活用ガイドブック,技術評論社.

参考文献

  1. [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]M5Stack Core2付き!ESP32で学ぶPython&Arduinoプログラミング入門,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]M5Stackで一緒に作ろう!IoTセンシング・エッジ×クラウド連携システム開発[改訂版],ZEPエンジニアリング株式会社.
  5. [VOD/KIT]実習キットでできる!ラズパイPicoでマイコン入門,ZEPエンジニアリング株式会社.
  6. [VOD/KIT]LabVIEW×Arduino!初めてのパソコン計測&制御【改訂版】,ZEPエンジニアリング株式会社.