第1編
組込みリアルタイムOS入門（2013年度改訂版）
YRP Ubiquitous Networking Lab.
T-Engine Forum2

第一章
情報処理型コンピュータと組込みコンピュータ(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

3

情報処理型のコンピュータ（１）▶

パーソナルコンピュータ

▶

サーバ

▶

スーパーコンピュータ

IBM▶

コンピュータらしいコンピュータ(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

4

情報処理型のコンピュータ（２）ENIAC

Atanasoff-Berry Computer“K”（京）スーパーコンピュータ

IBM 360

Cray 1

Apple II(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

5

組込み型のコンピュータ（１）
▶

携帯電話

▶

自動車

▶

ビデオカメラ

▶

カーナビ

▶

デジカメ

▶

MDプレイヤ▶

コピー機▶

DVDデッキ

▶

ファックス

▶

自動販売機



これらにも全部、コンピュータが入っている「組込みコンピュータ」（Embedded Computer）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

DVD

6

組込み型のコンピュータ（２）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

7

二種類のコンピュータ▶

情報処理型コンピュータ いわゆる、「コンピュータ」らしいコンピュータ 主な目的は、「情報」を扱うこと。
 情報＝数値、文字、絵、音声、動画、…

 人間に例えると、「頭脳」型コンピュータとも言われる。

▶

組込み型コンピュータ
 最終形が、「コンピュータ」と呼ばれないものに組込まれているコン

ピュータ
 主な目的は、実世界の中で、「機器」を制御すること。
 人間に例えると、「反射神経」型コンピュータとも言われる。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

8

マーケット比較（出荷数、2012）

MCU Market

Computing Market

4〜8bit16bit
32bit
Sub Total

PC
Smartphone
Sub Total

2012 (Units)
6,343 M
7,227 M
3,700 M
17,271 M
355 M
712 M
1,067 M

組込系

非組込系

IC Insights: “Research Bulletin: MCU Market on Migration Path to 32-bit and ARM-based Devices”, April 25, 2013
http://www.icinsights.com/data/articles/documents/541.pdf
IDC: “Soft PC Shipment in Fourth Quarter Lead to Annual Decline as HP Holds Top Spot, According to IDC”
http://www.idc.com/getdoc.jsp?containerId=prUS23903013#.UO9hyW9QWSq
IDC: “Strong Demand for Smartphones and Heated Vendor Competition Characterize the Worldwide Mobile Phone Market atthe End of 2012, IDC says”

https://www.idc.com/getdoc.jsp?containerId=prUS23916413(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

9

組込み型コンピュータ、ますます小さいところへ
半導体技術の進歩により、コンピューターが小型化され、様々な「モノ」に組込めるように

情報処理型コンピュータ

組込み型コンピュータ

ユビキタスコンピューティング(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

10

これまで...
高機能化してきた組込み

GMの自動車の制御ソフトウェア規模の増大

NASA: “NASA Study on Flight Software Complexity”より(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

11

宇宙船のソフトウェアコードサイズの増大

NASA: “NASA Study on Flight Software Complexity”より(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

12

13

情報処理型コンピュータと組込みコンピュータの接点▶

情報処理型コンピュータと組込み型コンピュータがクロスオーバー 携帯電話、情報家電が代表▶

組込みシステムへの新たな要求
 ソフトウェアの肥大化、高抽象化(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

14

分解されて、ネットワークに溶け込む組込み機器
IoT, M2M時代の組込み

15

背景：通信機能を備えた小型デバイスとクラウド

クラウドコンピューティング用
サーバーシステム

通信機能を備えた超小型デバイス(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

（例）Google Cloud Print (with EPSON)

http://www.epson.jp/connect/gcp/(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

16

（例）クラウド対応体組成形（Gooからだログ）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

17

M2M, IoT型組込みアーキテクチャ
クラウドサーバー
一体化

ユーザ
センサー

インタ
フェース
クラウド（インターネット）

データ閲覧

データ送信

センサーとUIの分離

従来型の組込機器（血圧計）

ネットワーク機能つき
超小型血圧センサー(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

超小型組
込み機器

スーマートフォン18

コストベネフィット▲5%／年

ハードウェアソリューション
ムーアの法則（半導体ソリューション）
コンピュータソリューション
ネットワークソリューション(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

19

20

第二章
トロンプロジェクト（TRON Project）

21

トロンプロジェクト since 1984“

トロンプロジェクトはUbiquitous Computing
研究開発の先駆け”

トロン（TRON）
The Real-time Operating system Nucleus(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

22

トロンプロジェクト▶

1984年に設立
 プロジェクトリーダー：坂村健（東京大学教授）▶ プロジェクトの目標
 ユビキタスコンピューティングの実現▶ プロジェクトの手法
 オープンアーキテクチャ
 Closed ArchitectureからOpen

Architecture への歴史的転換
 ロイヤリティフリー

Ken Sakamura: “TRON Project 1987”(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

23

技術プロジェクト
▶

ITRON
 組み込み機器用リアルタイムOS開発

▶

BTRON
 コミュニケーション・マシン用OS開発

▶

CTRON
 サーバー用リアルタイムOS開発▶

TRON Chip
 32bit CPUのための独自標準CPUの開発

▶

MTRON
 「どこでもコンピュータ」全体のためのシステム開発▶

ユーザインタフェース標準化
 「誰でも使える」を重視
 画面上のGUIだけでなく物理的なスイッチまでを対象(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

24

ITRON
▶

▶

組み込み機器用リアルタイム
OS
他のTRONすべてのカーネルとなる(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

25

BTRON
▶

コミュニケーション・マシン用OS 「どこでもコンピュータ」環境の中での、人間と機械の接点を担当するコミュニケーション専
用機をイメージ▶ そのためのマン・マシン＝イン
タフェース機能 電子ペンを前提としたGUI機能

 人間工学に基づいたTRON

キーボードユニット
 実身／仮身モデルによる独自のネットワーク型ファイル管理 多国語処理機能

 イネーブルウェア機能(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

26

CTRON
サーバー用リアルタイムOS(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

27

TRON Chip▶

32bit CPUの標準API開発▶

現在の日本の独自32bit CPUのベースに(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

28

トロン電脳生活HMI仕様書▶

▶

コンピュータ組込み機器が身の回りにあふれた時に、それらのヒューマンマシンインタ
フェースを統一化するためのガイドライン
国際標準化機関IECのtechnical Reportとして標準化された
 "Guidelines for the userinterface in multimedia
equipment for general
purpose use", 2001.
 Technical Report IEC TR

61997,(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

29

TRON電脳住宅 [1989年]▶

333m2の住宅に、1000個のコンピュータとセンサーとアク
チュエータを組み込んだ(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

30

TRON電脳住宅内のコンピュータ間での協調動作▶

窓とエアコンの連動による空調▶

インテリジェント・トイレ▶

張り巡らされた各種のセンサーで人間の位置を感知：(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

31

TRONは組込システム世界No.1シェア(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

32

組込みリアルタイムOSのマーケット(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

33

リアルタイムOS分野での事実上の世界標準
IEEEのComputer Societyから仕様書(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

34「はやぶさ」帰還、OSはμITRON▶

「はやぶさ」本体
 CPU
 SH-3 (SH7708) を三重化
 OS

TRONSHOWに出展された
MINERVA複製品

 μITRON▶

探査機MINERVA
 CPU

はやぶさ

 SH-3 (SH7708)
 メモリ
 ROM：512KB
 RAM：2MB
 フラッシュメモリ：2MB

 OS
 μITRON(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

35

金星探査機「あかつき」、ソーラー電力セイル実
証機「IKAROS」にT-Kernel採用▶

概要
 金星探査機「あかつき」と小型

ソーラー電力セイル実証機「IKAROS（イカロス）」にTKernelが搭載
 宇宙航空研究開発機構（JAXA）が2010年5月21日に打
ち上げ成功
▶ 用途
 「あかつき」に搭載された、金星の大気の様子を撮影する観測カメラの制御や、撮影した写真のデータ処理に利用
 「IKAROS」の帆（ソーラーセイ
ル）を展開・制御する計算機に利用(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

36

イプシロンによって打ち上げられた
衛星「ひさき」（JAXA）▶

"Hisaki (Sprint-A)"
 惑星観測専用の宇宙望遠鏡
 T-Kernelでほぼ全体を制御(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

37

第三章
「組込み」システムとは？

38

組込みシステムの定義▶

▶

センサやアクチュエータ、他の機械システム等と協調して動作するコンピュータシステム

例 家電製品の制御システム
 ファックスやコピー機の制御
 自動車の制御システム
 携帯電話など…

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

39

組込みシステムの要件（従来からの要件）▶

リアルタイムシステム
 計算処理よりも、入出力処理、通信処理が中心
 モノを制御するため、高い応答性能が要求される▶

性能、サイズのチューニング
 （特にハードウェア）コストを極限まで下げる
 結果として厳しいリソース制約上でソフトウェア開発
 コンパクトな実装▶

専用化されたシステム
 必要のない機能を削除することでチューニング可能

▶

高い信頼性
 組込みシステムは、クリティカルな応用の場面も多い ネットワークアップデートなどの仕組みがないものは、システムの改修に多大なコスト(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

40

ライフクリティカルな製品の不具合
http://panasonic.co.jp/(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

41

IoT、M2M時代の組込みシステムの新しい要件▶

ネットワーク通信機能 サーバとの連携で、機能を実現
 他の製品やサービスとの連携▶

セキュリティ
 暗号通信 認証通信▶

省資源・省電力
 増えるモバイル型の組込み機器
 バッテリーの持続時間は、製品競争力上重要
 世界的な省エネルギー意識の高まりから、省電力であることは重要▶

使いやすく、やさしい利用者インターフェース 幼児からお年寄りまで。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

42

第四章
「リアルタイム」システム
Real-time System

43

組込み型コンピュータで特に重要な実時間性▶

身の回りの「組込みコンピュータ」の仕事は？
 給料計算や数値計算をするわけではない。

▶

実世界の動きにあわせ、人間にサービス 実世界の時間に合わせて動作する▶

「リアルタイム（実時間）システム」（Real-time System）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

44

リアルタイムシステムとは？
▶

一般的には、次々に起こる実世界の事象（イベント）に合わせて素早く処理することが求められるようなシステム

▶

入出力処理

▶

機器類の制御▶

実時間の進行に追従した処理を重視▶

きちんとした定義は難しい（後のスライド…）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

45

リアルタイムシステムを考える…
▶

根本的には、「素早い」応答、実世界の実時間に追従▶

では、計算処理性能が高いコンピュータであれば、リアルタイ
ムシステムか？
 半分あたり、半分はずれ▶

実世界の実時間に応答・追従のための「時間制約」を満たすた
めに、コンピュータが十分「速い」ことは必要条件
 計算処理性能が高いコンピュータであるにも係らず、時間制約を満たせてないケースもある（つまり、十分条件ではない） リアルタイム向きにできていないことが原因（次のスライド）
 どこまで短い時間制約にまで対応できるかも、重要な指標（後述）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

46（例）時間制約を守る
ビデオの再生 現在のビデオ動画  1秒間に30フレームを表示して再生※ 1秒間に100枚の画像を表示する能力（平均処理性能）があっても、1/30
秒に必ず1枚表示することができるとは限らない。

スムーズな動画再生（例：DVDプレイヤ）

t

平均処理
性能は

同じ、、

不自然な動画再生（例：パーソナルコンピュータの動画プレイヤ）

しかし、、

t

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

47

リアルタイムシステムの定義▶

リアルタイムシステムは、利用できる計算機資源（resource）に限りがある中で、故障のような厳しい結果をもたらす応答時
間制約を満たすことができるシステム
 「故障」＝システム仕様での要求を満たせないこと▶

リアルタイムシステムとは、その論理的正当性が、アウトプットの正確性とその時刻の両方に依存するシステム
 （例）システムへの要求＝「127＋382の答えを求めなさい。答えは３分後までに出しなさい（現在：12時23分）」
 （答）509（12時30分）
 リアルタイムシステムでは計算失敗の例となる

 （答）509（12時24分）
 リアルタイムシステムでも計算成功の例(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

48

ソフトリアルタイムとハードリアルタイム▶

ソフト・リアルタイム・システム
 「ソフトリアルタイムシステム」とは、時間制約を満たす事に失敗した時に、性能低下はあるがシステム故障は起こさない▶

ハード・リアルタイム・システム
 「ハードリアルタイムシステム」とは、時間制約を満たす事に失敗することが一回でもあると、完全に破壊的なシステム故障につながるかもしれないシステム▶

ファーム・リアルタイム・システム
 ファームリアルタイムシステムとは、いくつかの時間制約ミスではトータ

ルな故障にはならないが、多くの時間制約ミスがあると完全に破壊的なシステム故障につながるかもしれないシステム！ソフトとハードは、求められる時間制約の長短によって区別されるものではない。
(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

49

リアルタイムシステムの理論モデル（１）n入力／m出力input 1

Output 1

input 2

Output 2

input 3
input 4Computer System…

…

input nOutput 3
Output 4
Output m

一つの処理の一つの時間制約をだけを満たすのは、簡単（自明）。
リアルタイムシステムは、複数の入力を処理して、複数の出力をする。
複数の時間制約を抱えて、それらをすべて満たすことが要求される。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

50

リアルタイムシステムの理論モデル（２）リアルタイム制御システム

camera input

Display Data

Sensor 1

Sensor 2

Computer System

Control Signal 1

Sensor3

Control Signal 2nm…
Sensor…
Control Signal

複数の制御を、それぞれの時間制約を満たして制御することで、機械のきちんとした動きを実現できる。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

51

時間制約を守る手法▶

方針１
 デッドライン（deadline）の近い処理を先に実行する
 直感的にも自然な方法
 一定の条件のもとでは最適な方法であることが理論的にも証明されている（RMS: Rate Monotonic Scheduling）▶

方針２①各処理それぞれの実行時間の予測②処理時間が予測できれば、すべての時間制約を守るように処理の順番を調整（スケジューリング）③処理時間が予測できない部分は、最悪処理時間を保証できる仕組みを入れる（タイムアウト）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

52

方針１
デッドラインが近い処理を先に実行(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

53

スケジューリング（scheduling）▶

▶

複数の処理があるとき、どういう順番で処理を進めれば、都合が良い・最適な仕事をやれるか、を求める問題のこと。

リアルタイムシステムでは、時間制約を満たす（＝デッドライ
ンを守る）ことができる順番で処理をしたい(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

54

一般的なスケジューリング
▶

Round Robin Scheduling（ラウンドロビン） 一定時間毎に処理を順番に実行していくやりかた もともとは大型計算機で、処理のCPU使用時間に比例した従量課金を処理しやすいためのスケジューリング方式
 デッドラインと処理の順番に関係がなく、リアルタイムシステム向けでない(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

55

デッドラインが先の処理を先に行なう
スケジューリング▶
▶

▶

▶

処理に優先度が付けられる優先度の高い処理は他から（より優先度の低い処理には）邪魔されない。

優先度の高い処理は、低い優先度の処理を横取りする（Preemption）

優先度の高い処理は、優先度の低い処理より優先して実行されるため、先に終えることができる(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

56

より現実に近い例：組込み型と情報処理型の違い
Response for Y

Event Y

wait

Task B

Handling X

Handling X
Deadline for Y

wait

Handling Y

Task C

Response Response
Event Y
for Y
for X

Priority

Task A
Task B

Handling Y

Event X

Handling X

Handling X

Task C(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

Deadline for Y

Prioritized
Preemptive
Scheduling

Deadline for X

Event X

Response for X

Deadline for X

Round Robin
Scheduling
Task A

57【参考】 Rate Monotonic Scheduling理論▶

▶

システムに、処理（タスク）の優先度をつけて、優先度の高い処理は低い処理を横取りできるメカニズムがある前提で、締切が近いタスクから高い優先度をつけて処理するのが、最適スケ
ジューリングであることを証明した理論
リアルタイムOSが優先度＋横取りスケジューリングを備えている、理論的根拠となっている。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

58

方針２
処理の予測可能化＋スケジューリング(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

59

処理時間を予測できるためには？
▶

▶

基本的には、コードを見て、計算機の処理性能がわかれば、処理時間は予測できるはず（理論的には）。

予測できないケース１：他の処理に邪魔される場合（例）処理の最中に、他の処理に邪魔され、しばらくの間処理が中断していしまうケース。

▶

予測できないケース２：I/Oやネットワーク通信など、自分が管理できない外部の処理に依存する場合（例）インターネットのパケットの返事がいつ戻ってくるか？
 パケットロスしていたら、永遠に戻らない（例）ハードディスクの読み取りがいつ終わるか？
 故障していたら、永遠に終わらない(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

60

ケース１：他の処理に邪魔される▶

（例）他の処理に邪魔されしばらくの間処理ができないケース

When?

▶

解決方法
 急ぎの処理は優先度を高くして、他の処理に邪魔されない仕組み

 処理への「優先度」と「処理の横取り（Preemption）」の導入
 優先度の高い処理は、優先度の低い処理を横取りして、優先して実行されるメカニズム(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

61

ケース２：自分が管理できない外部の処理に依存
I/Oやネットワーク通信など（例）インターネットのパケットの返事がいつ戻ってくるか？
▶

 パケットロスしていたら、永遠に戻らない（例）ハードディスクの読み取りがいつ終わるか？
 故障していたら、永遠に終わらない

When?
▶

When?

解決方法
 処理に “Time Out” を設定し、どうしてもダメな時の最悪時間を設定できるようにする(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

62

応答性能

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

63

高い応答性＝応答性能▶

応答性能
 ここでは、「どこまで短い時間制約を満たす能力があるか？」とする。

▶

考え方
 高い性能のCPUを持つ事  重要な要件、しかしそれだけではない。

（次のページ）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

64

Round Robin Scheduling（ラウンドロビン）

Task A
Task B
Task C(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

65

状況とタイミングによってかわる
処理実行開始までの時間
処理

処理

処理

要求

要求

要求

wait

wait time = 0

wait

Task A

Task A

Task A

Task B

Task B

Task B

Task CTask CTask CTask D

最も短い応答時間と、最も長い応答時間の差を
Task E

ジッター（Jitter）と呼ぶ。
OSで保証できる応答時間は、

Task F

コンテキストスイッチ時間＋ジッターになる。

Task M(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

66

優先度ベースは、応答性能もよい
Response for Y

Event Y

wait

Task B

Handling X

Handling X
Deadline for Y

wait

Handling Y

Task C

Response Response
Event Y
for Y
for X

Priority

Task A
Task B

Handling Y

Event X

Handling X

Handling X

Task C(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

Deadline for Y

Prioritized
Preemptive
Scheduling

Deadline for X

Event X

Response for X

Deadline for X

Round Robin
Scheduling
Task A

67

情報系OSカーネルの応答性能上の限界▶

▶

情報系OSカーネルで行うリアルタイム処理には、技術的限界

ユーザインタフェースを中心とした、数ミリ秒の時間制約（応答）を扱う場合
 情報系OSカーネルでも可能▶

機械制御、通信制御を目的とした、マイクロ秒を争う時間制約（応答）を扱う場合
 実現のためには、リアルタイムカーネルが必須(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

68

まとめ
▶

リアルタイムシステム
 故障のような厳しい結果をもたらす応答時間制約を満たすことができる

システム

▶

締切が近い処理を優先的に実行 優先度ベース、Preemptive（横取り）スケジューリング
 Rate Monotonic Scheduling▶

処理の予測可能性に基づいたスケジューリング
 高い優先度づけによって他のタスクに邪魔されない タイムアウト機能による最悪時間保証▶

高い応答性能（＝短い応答時間制約が扱える） = Jitter性能
 優先度ベース、Preemptiveなスケジューリングが有効(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

69

第五章
組込みリアルタイムシステ
ムの機能

70

組込みリアルタイムシステムの例[EVENT]
コピー文書
セット[EVENT]
コピーボタ
ン押下

Copy Processing
Task[EVENT]
紙づまり

Copy Processing
Task

Exception Handing
Task[EVENT]
印刷データ
受信[EVENT]
FAX受信

Print Processing
Task

Fax Processing
Task
2013 YRP UNL andYRP and
UNL, All Rights
Reserved.machine
all-in-one(C)(copier,fax,
printer)

71

組込みリアルタイムシステムの内部

Fax Processing
Task

相互協調

Copy Processing
Task

組込み
リアルタイムOS

Print Processing
Task

相互協調

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

Exception Handing
Task

72

組込みリアルタイムOSの機能▶

複数のタスクやハンドラの間の協調動作を管理する▶

具体的には…

1.

タスク（スレッド、プロセス）管理

スケジューリング、ディスパッチング

2.

タスク間同期

3.

タスク間通信4.

資源（記憶）管理

5.

時刻／時間管理(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

73

１ タスク管理
（Task
Management）

74

組込みリアルタイムシステムの例（再度）[EVENT]
コピー文書
セット[EVENT]
コピーボタ
ン押下

Copy Processing
Task[EVENT]
紙づまり

Copy Processing
Task

Exception Handing
Task[EVENT]
印刷データ
受信[EVENT]
FAX受信

Print Processing
Task

Fax Processing
Task
2013 YRP UNL andYRP and
UNL, All Rights
Reserved.machine
all-in-one(C)(copier,fax,
printer)

75

マルチタスク処理▶

並列に動作する独立な処理＝タスク（task）
 ...各「タスク」が独立に発生した事象を扱う
 ファックス受信 Fax Processing Task

 印刷データ受信 Print Processing Task

 コピーボタン押下 Copy Processing Task

 紙づまり検知  Exception Handling Task▶

１つのコンピュータの上で、複数の独立した処理を同時に動かす機能  マルチタスク処理（multitask）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

76

タスクスケジューリング（task scheduling）▶

▶

一つのコンピュータ上で、複数のタスクに動作させる処理＝マ
ルチタスク処理
同時とはいっても、CPUを使う時間帯を複数のタスクに別々に振り分けて、順番に使う＝タスクスケジューリング
※時間分割の長さ、分割方法によって様々な方式(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

ラウンドロビン方式（Round Robin
Scheduling）▶
▶

▶

ラウンドロビン方式は、OSによる最も簡素なスケジューリング方式
各タスクに同じ時間だけ同じ順番で、優先度をつけずにスケジューリングする
簡素で実装も容易である。また、タスクはstarvationが発生しない。

Task A
Task B
Task C(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

77

FCFS方式 (First Come First Served
Scheduling)▶
▶

FCFSは待ち行列に到着した順番に従ってスケジュールされる方式
優先度をもたず、時間制約（デッドライン）のある処理には適さないTask A
Task B
Task C

waiting

waiting(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

78

79

リアルタイム方式（Real-time Scheduling）▶

以下の方式を融合したものが一般的▶

優先度ベース（Priority-Based Scheduling）
 A task can have a priority.
 Tasks with higher priorities can be allocated a CPU in prior to tasks

with lower priorities.
▶

横取り型（Preemptive Scheduling）
 A scheduling is called preemptive if it is capable of forcibly removing

processes from a CPU when it decides to allocate that CPU to anotherprocess.
▶

イベント駆動型（Event-Driven Scheduling）
 Event-driven scheduling switches tasks only when an event of higher

priority needs service.
 This is also called preemptive priority, or priority scheduling.

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

80

優先度ベースとラウンドロビン
ラウンドロビン
スケジューリング

Yへの応答

Event Y

Event X

Handling Y

wait

Handling X

Task C

優先度ベース
スケジューリング

Task A

Task B

優先度

Event Y

Yへの
応答

Xへの
応答

Handling Y

Event X

Handling X

Deadline for X

Handling X

Deadline for X

wait

Deadline for Y

Task B

Deadline for Y

Task A

Xへの応答

Handling X

Task C(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

81

２

同期
Synchronization

82

同期（Synchronization）の必要性▶

▶

タスクの相互関係
 タスクが全く独立なわけではない。
 互いに関係がある...どんな関係？
【相互関係１】仕事の依存関係
 Ａの仕事がおわらないと、Bの仕事が始まらない。

（例）学生のレポートが提出されて、初めて教師は採点する。
▶

【相互関係２】道具を共有している関係
 AとBが同じ道具を使って仕事をする。

（例）2人の大工に１つののこぎり▶

タスクの間の相互関係に合わせて、処理の実行を調節すること 同期（Synchronization）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

83【相互関係１】仕事の依存関係による同期▶

依存関係
 Ａの仕事がおわらないと、Bの仕事が始まらない。

（例）学生のレポートが提出されて、初めて教師は採点する。
▶

必要な同期機構
 生徒Aの宿題が終わる→（同期）→教師Bが採点を開始する

宿題

生徒A

教師B

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

84【相互関係１】仕事の依存関係がある時の同期
イベントフラグ（event flag）▶

仕事に依存関係がある状況で…
 先に仕事をしていたタスクが、ある処理が終わったという「事象（イベント）」を、次のタスクに伝える  イベントフラグ▶

イベントフラグの機能
 事象の通知をタスク間で通信する
 ビットパターンを事象に割り当てることで利用 OR待ちやAND待ちなどの事象待ちが可能

 パターンが一致すれば同時に複数のタスクを待ち状態から復帰可能(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

85

イベントフラグの基本機能▶

イベントフラグは、２種類の状態を持つ
 Set状態
 Clear状態▶

イベントフラグへの基本操作
 セット (Set)命令  イベントフラグは”Set”状態になる
 クリア (Clear)命令 イベントフラグは “Clear”状態になる ウェイト (Wait)命令

イベントフラグが”Clear”状態
 そのタスクをイベントフラグが”Set”状態になるまで待たせる。
 イベントフラグが”Set”状態
 そのタスクは動作をそのまま継続する▶

１つのイベントフラグは１ビットで実現可能 上記の基本操作では8個、16個等のイベントフラグをまとめて操作 複数イベントフラグのAND待ちやOR待ちができる(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

86

イベントフラグの例：Task B終了Task A起動①イベントフラグを作る
tk_cre_flg()

Tasks A
優先度：高(Priority = High)⑤イベントフラグ待ち解除②イベントフラグを待つ
tk_wai_flg()

実行可能状態（READY）

実行状態
（RUN）

Task B
優先度：低(Priority = Low)

待ち状態
(WAIT)

待ち状態(WAIT)

⑥処理実行
実行状態
（RUN）

③処理実行

④イベントフラグをセット
tk_set_flg()

実行状態
（RUN）

実行可能状態（READY）

Event Flag F
Event Flag Fを
作る

F≠1

F=1

Event flagにより
タスク起動

0

0

1

1

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

87【相互関係２】道具の共有関係による同期▶

依存関係
 AとBが同じ道具を使って仕事をする。
 （例）2人の大工に１つののこぎり▶

必要な同期機構
 Aがのこぎりを使い終わる→（同期）→Bがのこぎりを使い始める(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

88【相互関係２】道具を共有している時の同期排他制御（mutual exclusion）▶

排他制御（mutual exclusion）
 同期方式の一つ
 複数のタスクで、道具を共有している関係で、同じ道具を複数のタスクが同時に使うと、おかしなことがおこる。そこで、ある道具を使えるタスクを一つに限定し、その処理が終わるまで、他を排除する制御が必要▶

実例
 データを更新している最中にそのデータを読み出すと、中途半端な値が得られてしまう。
 データの更新処理が始まってから終わるまでは、同じタスクがずっとア

クセスし続けるようにする。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

89

セマフォア（Semaphore） (1)(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

90

セマフォア（Semaphore） (2)▶

▶

▶

並行プログラミング環境において、複数のタスク（プロセス）から共通資源へのアクセス を制御するために用いられる、防御変数 or 抽象データ型
セマフォは競合状態を防ぐ為に用いる。
問題点
 セマフォアを用いると、デッドロックが起こる可能性がある。
 例：dining philosophers

problem(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

91

セマフォアの基本動作（バイナリセマフォア）
P命令
P(S)

S==0の状態でP命令が呼ばれた場合は、他のタスクがV命令を発行し、S==1にするまでWAITする

V命令
S == 0「きわどい領域」に入る事が禁止されて
いる状態

V(S)

S==1
「きわどい領域」に入ることが出来る状態

T-KernelでのP命令、V命令

一般機能名
P (S) wait semaphore
V (S) signal semaphore

T-Kernel システムコール
tk_wai_sem()tk_sig_sem()(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

92

２種類のセマフォア▶

バイナリセマフォア
 共有資源にアクセスするタスク（プロセス）を一つに限定するためのメカニズムで。
 変数の値として“true/false” ( = locked/unlocked) を持つ。

▶

計数セマフォア
 共有資源にアクセスするタスク（プロセス）の数を、決まった複数個に限定するメカニズム。
 アクセスする上限数〜0の間の値をとる。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

93

競合状態の回避するプログラミング例
Task 1

Task 2

:

:

P(S);

P(S);

…際どい領域（競合しうる状態）…

…際どい領域（競合しうる状態）…

V(S)

V(S)

:

:

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

94

セマファの例：Task B獲得Task A獲得⑦セマファを獲得成功③イベント

Tasks A
優先度：高(Priority = High)

待ち状態(WAIT)①セマファを作る
tk_cre_sem()Task B
優先度：低(Priority = Low)

実行状態
（RUN）

②セマファを獲得
tk_wai_sem()  成功
実行状態
（RUN）

④セマファを獲得
tk_wai_sem()  失敗

⑧処理実行

待ち状態
(WAIT)

実行状態（RUN）⑥セマファを解放
tk_sig_sem()

⑤処理実行
実行状態
（RUN）

実行可能状態（READY）

実行可能状態（READY）

Semaphore S
Sを作る(S = 1)

S=0

S=0(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

S=1

S=0

95

３

通信
Communication

96

通信 （Communication）▶

▶

仕事・処理の結果や情報を、あるタスクから別のタスクに伝えてやること＝通信（Communication）

例：学生がレポートを書く 教師はレポート採点
 学生・教師間の通信 ＝ レポートの内容(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

97

通信の方式（１）共有記憶とメッセージ▶

複数のタスクが通信する方式の分類...

▶

共有記憶方式とメッセージ方式
 共有記憶方式（Shared Memory）
 AとBが同じ記憶領域を読み書きして情報交換 メッセージ方式（Message Passing）
 AからBへ情報を渡して情報交換

メッセージ

共有記憶
A

B

A

共有記憶方式(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

B
メッセージ方式

98

通信の方式（２）同期型メッセージ・非同期型メッセージ
同期型メッセージ

同期している
send to “B”

Task A
処理結果通知メッセージを処理
Task B
receive from” A”

非同期型メッセージ

send to “X”

Task A

同期していない
Mailbox X
メッセージを処理
Task B
receive from” X”(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

99

通信の方式（３）
直接通信・間接通信
直接通信
送信先を直接指定する

send to “B”

Task A
メッセージを作成

メッセージを処理

Task B
receive from” A”

間接通信
通信の媒介となる資源を指定する
send to “X”
Task A
メッセージを作成
Mailbox X
メッセージを処理
Task B
receive from” X”(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

100（補足）直接通信、間接通信の例▶

直接通信
 タスクイベントの送信 tk_sig_tev (ID tskid, INT tskevt);▶

間接通信 メッセージバッファへ送信 tk_snd_mbf (ID mbfid, VP msg, INT msgsz, TMO tmout);(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

101

４ 実時間処理102

時間を扱う機能▶

リアルタイムシステム／実時間システム▶

時間を扱ったプログラムを書くことが必須
例えば、.....
 ５分たったら休みたい。
 ７時になったら起こしてね。
 ５分おきに○×したい。
 ところで、今何時？

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

103

時間を明示的に扱う機能▶

時刻の取得、設定
 相対時間 絶対時間▶

時間割込み処理 ある時間になったら、あらかじめ決めておいたモジュールのルーチンを起動する
 アラーム 周期割込み▶

タイムアウト指定
 ある一定時間以内に処理が終わらない⇒その処理をやめる。
 タイムアウト指定つきサービスコール(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

104

１．時刻の取得、設定▶

相対時刻
 OS立ち上げ時からの相対的な時刻。
 ハードクロックのカウンタを持つハードウェアタイマを使用する。

▶

絶対時刻
 年、月、日、時、分、秒で表される一意の時刻。
 不揮発の時刻情報を保持可能なRTC（Real Time Clock）のハードウェ

アを使用する。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

105

２．タイマ割込み処理▶

アラーム
 特定の時刻または一定時間後にタイマ割込みを発生させ、特定の処理を実行させる。
 例：ビデオ録画予約では、予約した日時にタイマ割込みが発生し、録画処理が実行される。
▶

周期割込み
 一定時間間隔でタイマ割込みを発生させ、処理を実行させる。
 例：ビデオ表示では、33ｍ秒に1回割込みを発生させ、割込み毎に１フレームの表示を行う。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

106
106

アラームの例
アラームハンドラ（割込ルーチン）

アラーム
ハンドラ
の作成

起動

タイマー
開始

割込み

・・・ 時間
割込時間

システム時刻・・・(C) 2013 T-Engine Forum, All Rights Reserved.

107
107

周期割込み

アラームハンドラ（割込ルーチン）起動

アラームハンドラ（割込ルーチン）アラームハンドラ（割込ルーチン）

起動

割込み

起動

アラームハンドラ（割込ルーチン）

起動

割込み

割込み

割込み

・・・ 時間システム時刻

割込み周期

割込み周期

割込み周期

・・・
(C) 2013(C) 2013
YRPT-Engine
UNL andForum,
YRP UNL,All Rights
All Rights
Reserved.
Reserved.

108

３．タイムアウト処理▶

待ち時間が永久に継続される可能性がある場合
 予め待ち時間を設定し、待ち時間が経過した場合、別の処理を実行させたい。
 例：ハードディスクのI/O完了待ち
 ディスクの故障時にI/Oが完了しない場合がある。このため、I/O完了待ち時間を設定し、その時間が経過した場合、ディスク故障のメッセージを表示する等のエラー処理を行う。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

109

５ 記憶管理110

メモリプール管理（１）▶

処理の途中で多くのメモリが必要になること
 必要最大のメモリを常に独占するのは無駄 必要な時だけにメモリを確保する
 必要がなくなったら解放する

そのためには.....
▶

どのメモリをどのタスクが使っているか管理メモリプール管理機能(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

111

メモリプール管理（２）▶

あらかじめ確保した大きなメモリ領域を管理
 タスクからの要求に応じて、空いている部分から必要量だけ割り付ける（memory allocation）
 不要になったメモリは返却（memory free）

メモリプール
割付

返却

タスクA

タスクB

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

112

【発展】
メモリマップI/O▶
▶

I/Oもメモリ空間に割り当てる方式が多い
メモリにアクセスするのと同じ命令で、I/Oをread、writeする(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

113

【発展】
記憶保護
▶

記憶空間を保護したい コード領域とデータ領域を別々にして、互いに保護
 OSが扱うシステム領域とユーザタスクが扱うユーザ領域を別々にして、ユーザタスクがシステム領域を触れないように保護▶

メモリ保護機能▶

ユーザタスクを他のタスクから保護したい 論理記憶空間の導入
 MMU（メモリ管理ユニット）の利用(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

114

【発展】
論理記憶空間▶

▶

物理メモリ領域を再配置して、物理アドレスと独立した論理的なアドレスをメモリに与えられる
再配置の単位 固定長（ページ）  ページング（Paging）
 可変長（セグメント）  セグメンテーション（Segmentation）▶

論理空間を複数用意
 互いに保護したい単位で論理空間を分離 論理空間単位で記憶保護を行う。

(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

115

【発展】
仮想記憶
▶

メモリ量の制約を気にせずにプログラミング もともと大型計算機での要求。でも便利は確か。

▶

▶

実メモリ量よりも大きな論理アドレス空間を提供する機能＝「仮想記憶」
実メモリに格納しきれない情報は二次記憶に退避（swapping）
 二次記憶装置が必要
 swapping処理によってリアルタイム性が損なわれる(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

116

第六章
なぜリアルタイムOSか？

117

リアルタイムシステムは複雑▶

実世界とのかかわり ランダムに起きる事象への対応
 実時間を扱う必要性

複雑な処理が要求される。
▶ そのための技術▶

 並行処理（タスク、スケジューリング）
 同期
 通信
 実時間処理 記憶管理(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

118

なぜRTOSが必要か？
▶

これをすべてユーザプログラムで実現できるか？
 実現できても、共通機能として常駐システム化したほうが楽なものも多い。
 実現できないものもある。

▶

何らかの汎用的なシステムでサポート
 リアルタイムOS（Real-time OS: RTOS）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

119

RTOS導入のメリット▶

プログラム作成が容易に←リアルタイム処理の基本処理を扱ってくれる
 並行処理・スケジューリングのサポート

 タスク分割設計が容易に、効率的なI/Oも簡単に実現
 同期処理のサポート

 タスク間の通信・同期の実現が容易に
 記憶管理のサポート

 記憶管理の細部に関らないでもすむ。
▶

プログラムの再利用性の向上▶

保守性・拡張性の向上(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

120

RTOS導入のメリット
１．プログラム作成が容易に▶

機能毎にタスク分割して開発

計算処理タスク

イベント処理タスク:
a = in (port_x);:
while (forever) {if(a == XXX) {:out (port_y);:}:a = b + c;
:
}

RTOS
(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

イベント
応答

121

RTOS導入のメリット
２．プログラムの再利用性

アプリケーション
プログラム

ＲＴＯＳ

再利用

移植

アプリケーション
プログラム
ＲＴＯＳ

移植による改造（少ない）ハードウェアＡ

ハードウェアＢ

既存製品

新製品(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

122

RTOS導入のメリット
３．保守性・拡張性の向上▶

システム全体のモジュール性が向上
 他への影響を抑えて拡張できる
 モジュール単位で保守できる 責任分界点も明確に▶

関連製品の利用 ミドルウェアや各種ソフトウェア資産の利用
 開発支援ツールの利用(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

123

まとめ（RTOS）

124

RTOSとは何か？
▶

▶

▶

▶

リアルタイム・組込みシステム開発において、共通に使用される管理プログラム
リアルタイムシステム向きの機能を持つ（各イベントに対して高速に応答できる）
タスク切換時間、各サービスコール時間があらかじめ予測できる
コンピュータの持つ資源を仮想化し、効率利用できる（再利用性）(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

125

リアルタイムシステムの必要な機能とRTOS
RTOSが提供する機能▶

タスク管理機能▶

タスク同期管理機能▶

同期通信機能▶

メモリ管理機能▶

時間管理機能▶

割込み管理機能

RTOSが提供しない機能
入出力管理機能▶ 通信・ネットワーク機能▶ ファイル管理機能▶ ユーザインターフェース機能（GUI)▶ 音声認識、音声合成▶ 画像圧縮伸張など▶

▶

上位のミドルウェアでサポート(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

126© 2013YRP UNL and T-Engine
Forum
All Rights Reserved(C) 2013 YRP UNL and YRP UNL, All Rights Reserved.

【講座】T-Kernel/ITRON入門テキスト「組込みリアルタイムシステ
ム入門」
著者 T-Engine Forum
本テキストは、クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライ
センスの下に提供されています。
http://creativecommons.org/licenses/by-sa/4.0

Copyright ©2014 T-Engine Forum【ご注意およびお願い】
1.本テキストの中で第三者が著作権等の権利を有している箇所については、利用者の方が当該第三者から利用許諾を得てください。
2.本テキストの内容については、その正確性、網羅性、特定目的への適合性等、一切の保証をしないほか、本テキストを利用したことにより損害が生じても著者は責任を負いません。
3.本テキストをご利用いただく際、可能であれば office@t-engine.org までご利用者のお名前、ご所属、ご連絡先メールアドレスをご連絡いただければ幸いです。