8-1-応 組み込みシステムに関する知識 - ipa · 2020-01-10 ·...

19
OSS モデルカリキュラムの学習ガイダンス 8-1-組み込みシステムに関する知識 1. 科目の概要 組み込みシステムの開発について留意点や、様々な Linux 環境での相違点を解説する。 また組み込みシステム自体のアーキテクチャや組み込みシステムを取り巻くネットワーク 環境の特徴やソフトウェア/ハードウェア要件などについて解説する。 2. 習得ポイント 本科目の学習により習得することが期待されるポイントは以下の通り。 習得ポイント シラバスの対応コマ 8-1-応-1.組み込みアプリケーション開発における留意点 スタートアップルーチンの実装やROM化において気をつけるべき点Watch Dog Timer (WDT)の利用など、組み込みアプリケーション開発において留意すべき様々な事項を紹介 する。 1 8-1-応-2.CPUの特徴によるメモリ管理の違い CPUのMMU(Memory Management Unit)搭載の有無によるメモリイメージおよび管理違い について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ モリアクセスの仕組みを解説する。 4 8-1-応-3.組み込みLinuxにおけるメモリ管理の特徴 Linuxの利用形態におけるメモリ管理の差異を説明する。論理アドレスの管理方法の違いや 利用環境における適切なメモリ管理の選択方法について解説する。 5 8-1-応-4.組み込みLinuxにおける割り込み処理の流れ 組み込みLinuxにおける割り込み処理の流れを解説する。ハードウェア割り込みの発生から ソフトウェアで処理されるまでの流れを説明する。 6 8-1-応-5.リソースの排他とデッドロック 複数の組み込みアプリケーション同士でシステムリソースを共有する場合に注意すべきデッ ドロックの概念、デッドロックの回避について具体的な実装を挙げて説明する。 7 8-1-応-6.ファイル入出力プログラムの構成 ファイルシステムの概要と、リエントラント性やデバイス独立性などファイルシステムに求めら れる要件を説明する。さらに実際のファイルアクセスに関する動作の詳細を示し、組み込み アプリケーションからファイルを利用する操作手順の概要について述べる。 8 8-1-応-7.組み込みコンピュータネットワーク 携帯電話による通信や、赤外線通信、ユビキタスネットワークなど、組み込みシステムで利 用できるインターネット以外のネットワークアーキテクチャについて解説する。さらに組み込 みシステムにおけるIPv6の利用動向についても述べる。 9 8-1-応-8.リアルタイムシステムの処理方法と設計 マルチタスクOSの一つであるリアルタイムOSについてその特徴、メリットを紹介する。マルチ タスクOSとの違いや設計、実装で気をつけるべきことを紹介する。 10 【学習ガイダンスの使い方】 1. 「習得ポイント」により、当該科目で習得することが期待される概念・知識の全体像を把握する。 2. 「シラバス」、「IT 知識体系との対応関係」、「OSS モデルカリキュラム固有知識」をもとに、必要に応じて、 従来の IT 教育プログラム等との相違を把握した上で、具体的な講義計画を考案する。 3. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。 独立行政法人 情報処理推進機構

Upload: others

Post on 24-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

OSS モデルカリキュラムの学習ガイダンス

8-1-応 組み込みシステムに関する知識 ※ 1. 科目の概要 組み込みシステムの開発について留意点や、様々な Linux 環境での相違点を解説する。

また組み込みシステム自体のアーキテクチャや組み込みシステムを取り巻くネットワーク

環境の特徴やソフトウェア/ハードウェア要件などについて解説する。

2. 習得ポイント 本科目の学習により習得することが期待されるポイントは以下の通り。

習得ポイント 説 明 シラバスの対応コマ

8-1-応-1.組み込みアプリケーション開発における留意点スタートアップルーチンの実装やROM化において気をつけるべき点Watch Dog Timer(WDT)の利用など、組み込みアプリケーション開発において留意すべき様々な事項を紹介する。

1

8-1-応-2.CPUの特徴によるメモリ管理の違いCPUのMMU(Memory Management Unit)搭載の有無によるメモリイメージおよび管理違いについて説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメモリアクセスの仕組みを解説する。

4

8-1-応-3.組み込みLinuxにおけるメモリ管理の特徴Linuxの利用形態におけるメモリ管理の差異を説明する。論理アドレスの管理方法の違いや利用環境における適切なメモリ管理の選択方法について解説する。

5

8-1-応-4.組み込みLinuxにおける割り込み処理の流れ組み込みLinuxにおける割り込み処理の流れを解説する。ハードウェア割り込みの発生からソフトウェアで処理されるまでの流れを説明する。

6

8-1-応-5.リソースの排他とデッドロック複数の組み込みアプリケーション同士でシステムリソースを共有する場合に注意すべきデッドロックの概念、デッドロックの回避について具体的な実装を挙げて説明する。

7

8-1-応-6.ファイル入出力プログラムの構成ファイルシステムの概要と、リエントラント性やデバイス独立性などファイルシステムに求められる要件を説明する。さらに実際のファイルアクセスに関する動作の詳細を示し、組み込みアプリケーションからファイルを利用する操作手順の概要について述べる。

8

8-1-応-7.組み込みコンピュータネットワーク携帯電話による通信や、赤外線通信、ユビキタスネットワークなど、組み込みシステムで利用できるインターネット以外のネットワークアーキテクチャについて解説する。さらに組み込みシステムにおけるIPv6の利用動向についても述べる。

9

8-1-応-8.リアルタイムシステムの処理方法と設計マルチタスクOSの一つであるリアルタイムOSについてその特徴、メリットを紹介する。マルチタスクOSとの違いや設計、実装で気をつけるべきことを紹介する。

10

※ 【学習ガイダンスの使い方】

1. 「習得ポイント」により、当該科目で習得することが期待される概念・知識の全体像を把握する。 2. 「シラバス」、「IT 知識体系との対応関係」、「OSS モデルカリキュラム固有知識」をもとに、必要に応じて、

従来の IT 教育プログラム等との相違を把握した上で、具体的な講義計画を考案する。 3. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。

独立行政法人 情報処理推進機構

Page 2: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

OSS モデルカリキュラムの学習ガイダンス

3. IT 知識体系との対応関係 「8-1-応 組み込みシステムに関する知識」と IT 知識体系との対応関係は以下の通り。

1 2 3 4 5 6 7 8 9 10

8-1-応 組み込みシス

テムに関する知識

組み込みアプリケーション開発における留意点

クロスコンパイル環境の作成

組み込みシステム環境の構築

CPUによるメモリ資源の管理方法

組み込みLinuxにおけるメモリ資源の管理方法

組み込みLinuxにおける割り込みの管理方法

リソースの排他とデッドロック

入出力資源管理組み込みシステムのネットワーク機能

リアルタイムシステムの構成と仕組み

科目名応用レベル

<IT 知識体系上の関連部分> 科目名 1 2 3 4 5 6 7 8 9 10 11 12 13

1IT-IAS 情報保証と情報セキュリティ

IT-IAS1.基礎的な問題

IT-IAS2.情報セキュリティの仕組み(対策)

IT-IAS3.運用上の問題

IT-IAS4.ポリシー IT-IAS5.攻撃IT-IAS6.情報セキュリティ分野

IT-IAS7.フォレンジック(情報証拠)

IT-IAS8.情報の状態

IT-IAS9.情報セキュリティサービス

IT-IAS10.脅威分析モデル

IT-IAS11.脆弱性

2

IT-SP 社会的な観点とプロフェッショナルとしての課題

IT-SP1.プロフェッショナルとしてのコミュニケーション

IT-SP2.コンピュータの歴史

IT-SP3.コンピュータを取り巻く社会環境

IT-SP4.チームワーク

IT-SP5.知的財産権

IT-SP6.コンピュータの法的問題

IT-SP7.組織の中のIT

IT-SP8.プロフェッショナルとしての倫理的な問題と責任

IT-SP9.プライバシーと個人の自由

3 IT-IM 情報管理IT-IM1.情報管理の概念と基礎

IT-IM2.データベース問合わせ言語

IT-IM3.データアーキテクチャ

IT-IM4.データモデリングとデータベース設計

IT-IM5.データと情報の管理

IT-IM6.データベースの応用分野

4IT-WS Webシステムとその技術

IT-WS1.Web技術 [1-Ⅰ-7]

IT-WS2.情報アーキテクチャ [1-Ⅰ-7]

IT-WS3.デジタルメディア

IT-WS4.Web開発 IT-WS5.脆弱性IT-WS6.ソーシャルソフトウェア

5IT-PF プログラミング基礎

IT-PF1.基本データ構造

IT-PF2.プログラミングの基本的構成要素

IT-PF3.オブジェクト指向プログラミング

IT-PF4.アルゴリズムと問題解決

IT-PF5.イベント駆動プログラミング

IT-PF6.再帰

6IT-IPT 技術を統合するためのプログラミング

IT-IPT1.システム間通信 [1-Ⅰ-3]

IT-IPT2.データ割り当てと交換

IT-IPT3.統合的コーディング

IT-IPT4.スクリプティング手法

IT-IPT5.ソフトウェアセキュリティの実現

IT-IPT6.種々の問題

IT-IPT7.プログラミング言語の概要

7CE-SWE ソフトウェア工学

CE-SWE0.歴史と概要

CE-SWE1.ソフトウェアプロセス

CE-SWE2.ソフトウェアの要求と仕様

CE-SWE3.ソフトウェアの設計

CE-SWE4.ソフトウェアのテストと検証

CE-SWE5.ソフトウェアの保守

CE-SWE6.ソフトウェア開発・保守ツールと環境 [1-Ⅰ-4]

CE-SWE7.ソフトウェアプロジェクト管理

CE-SWE8.言語翻訳CE-SWE9.ソフトウェアのフォールトトレランス

CE-SWE10.ソフトウェアの構成管理

CE-SWE11.ソフトェアの標準化 [1-Ⅰ-6]

8

IT-SIA システムインテグレーションとアーキテクチャ

IT-SIA1.要求仕様IT-SIA2.調達/手配

IT-SIA3.インテグレーション [1-Ⅰ-4]

IT-SIA4.プロジェクト管理

IT-SIA5.テストと品質保証

IT-SIA6.組織の特性

IT-SIA7.アーキテクチャ

9IT-NET ネットワーク

IT-NET1.ネットワークの基礎

IT-NET2.ルーティングとスイッチング

IT-NET3.物理層IT-NET4.セキュリティ

IT-NET5.アプリケーション分野 [1-Ⅰ-5]

IT-NET6.ネットワーク管理

CE-NWK0.歴史と概要

CE-NWK1. 通信ネットワークのアーキテクチャ

CE-NWK2.通信ネットワークのプロトコル

CE-NWK3.LANとWAN

CE-NWK4.クライアントサーバコンピューティング [1-Ⅰ-3]

CE-NWK5.データのセキュリティと整合性

CE-NWK6.ワイヤレスコンピューティングとモバイルコンピューティング

CE-NWK7.データ通信

CE-NWK8.組込み機器向けネットワーク

CE-NWK9.通信技術とネットワーク概要

CE-NWK10.性能評価

CE-NWK11.ネットワーク管理

CE-NWK12.圧縮と伸張

CE-NWK13.クラスタシステム

CE-NWK14.インターネットアプリケーション [1-Ⅰ-5,7]

CE-NWK15.次世代インターネット

CE-NWK16.放送

11IT-PT プラットフォーム技術

IT-PT1.オペレーティングシステム [1-Ⅰ-3]

IT-PT2.アーキテクチャと機構

IT-PT3.コンピュータインフラストラクチャ

IT-PT4.デプロイメントソフトウェア [1-Ⅰ-4]

IT-PT5.ファームウェア

IT-PT6.ハードウェア

12CE-OPS オペレーティングシステム

CE-OPS0.歴史と概要

CE-OPS1.並行性CE-OPS2.スケジューリングとディスパッチ

CE-OPS3.メモリ管理

CE-OPS4.セキュリティと保護

CE-OPS5.ファイル管理

CE-OPS6.リアルタイムOS

CE-OPS7.OSの概要CE-OPS8.設計の原則

CE-OPS9.デバイス管理

CE-OPS10.システム性能評価

コンピュー

ハー

ドウェ

アと

アー

キテクチャ

13CE-CAO コンピュータのアーキテクチャと構成

CE-CAO0.歴史と概要

CE-CAO1.コンピュータアーキテクチャの基礎

CE-CAO2.メモリシステムの構成とアーキテクチャ

CE-CAO3.インタフェースと通信

CE-CAO4.デバイスサブシステム

CE-CAO5.CPUアーキテクチャ

CE-CAO6.性能・コスト評価

CE-CAO7.分散・並列処理

CE-CAO8.コンピュータによる計算

CE-CAO9.性能向上

14 IT-ITF IT基礎IT-ITF1.ITの一般的なテーマ [1-Ⅰ-4]

IT-ITF2.組織の問題

IT-ITF3.ITの歴史

IT-ITF4.IT分野(学科)とそれに関連のある分野(学科)

IT-ITF5.応用領域IT-ITF6.IT分野における数学と統計学の活用

CE-ESY0.歴史と概要

CE-ESY1.低電力コンピューティング

CE-ESY2.高信頼性システムの設計

CE-ESY3.組込み用アーキテクチャ

CE-ESY4.開発環境CE-ESY5.ライフサイクル

CE-ESY6.要件分析 CE-ESY7.仕様定義 CE-ESY8.構造設計 CE-ESY9.テストCE-ESY10.プロジェクト管理

CE-ESY11.並行設計(ハードウェア、ソフトウェア

CE-ESY12.実装

CE-ESY13.リアルタイムシステム設計

CE-ESY14.組込みマイクロコントローラ

CE-ESY15.組込みプログラム

CE-ESY16.設計手法

CE-ESY17.ツールによるサポート

CE-ESY18.ネットワーク型組込みシステム

CE-ESY19.インタフェースシステムと混合信号システム

CE-ESY20.センサ技術

CE-ESY21.デバイスドライバ

CE-ESY22.メンテナンス

CE-ESY23.専門システム

CE-ESY24.信頼性とフォールトトレランス

分野

組織関連事項と情報システム

応用技術

ソフトウェ

アの方法と技術

システム基盤

10CE-NWK テレコミュニケーション

複数領域にまたがるもの

15CE-ESY 組込みシステム

独立行政法人 情報処理推進機構

Page 3: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

OSS モデルカリキュラムの学習ガイダンス

独立行政法人 情報処理推進機構

4. OSS モデルカリキュラム固有の知識 OSS モデルカリキュラム固有の知識は、OSS を用いた組み込みシステムに関する知識

である。OSS を活用した携帯電話などの事例を扱う。

科目名 第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回 第10回

(1) スタートアップルーチン

(1) 組み込みアプリケーションのコンパイル方法

(1) 組み込みシステムの構築方法

(1) MMUのよるメモリ管理

(1) ページング (1) Linuxにおける割り込み

(1) リソースのデッドロック

(1) 入出力設計の重要項目

(1) 通信ハードウェア (1) リアルタイム処理とは

(2) スタック (2) コンパイルの種類 (2) 組み込みLinuxの構築

(2) CPUのメモリ管理 (2) CPUにおけるページングの違い

(2) 割り込み処理の流れ

(2) デバイスドライバの基本機能

(2) 低速な通信インタフェース

(2) アプリケーションのリアルタイム設計

(3) ROM化 (3) クロスコンパイラの作成

(3) ターゲット環境への書き込み

(3) uCLinux (3) TLBによるページングキャッシュ

(3) 割り込みの注意点

(3) ファイル入出力の構成

(3) 高速・大容量な通信インタフェース

(4) ウォッチドックタイマ

(4) クロスコンパイル (4) 動作の確認 (4) 通信ミドルウェア

(5) 組み込みシステムにおける通信機能の設計

8-1-応 組み込みシステムに関する知識

(網掛け部分は IT 知識体系で学習できる知識を示し、それ以外は OSS モデルカリキュラム固有の知識を示している)

Page 4: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

スキル区分 OSS モデルカリキュラムの科目 レベル

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用

習得ポイント 8-1-応-1. 組み込みアプリケーション開発における留意点

対応する

コースウェア

第 1 回 組み込みアプリケーション開発における留意点

8-1-応-1. 組み込みアプリケーション開発における留意点

スタートアップルーチンの実装や ROM 化において気をつけるべき点 Watch Dog Timer (WDT)の利

用など、組み込みアプリケーション開発において留意すべき様々な事項を紹介する。

【学習の要点】

* スタートアップルーチンはスタックの確保に注意する。

* ROM 化は手間がかかるので、ROM ライタを利用する前に十分にテストをする。

* ウォッチドッグタイマは異常が起きていないかを監視する目的で使用されるタイマで、暴走や異

常処理を検知する。

図 8-1-応- 1 スタック領域確保不十分によるリークとウォッチドッグタイマ

8-1-応 - 1

Page 5: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

【解説】

1) スタートアップルーチン

* コンピュータは電源が投入される、またリセットをされたときにブートとよばれる起動動作を行う。

ことのときに最初に呼び出され、実行されるプログラムがスタートアップルーチンである。

* スタートアップルーチンは ROM にあり、起動されると以下の動作を順に行う。

- CPU のレジスタを設定し、ハードウェア・ソフトウェアを初期化する。

- ソフトウェアを初期化し、プログラムが動作するために必要なヒープとスタックメモリを設定し

た後に、割り込み関連の設定を行う。

- OS が存在する場合は、まず OS を起動する。OS が存在しない場合はアプリケーションのメ

インルーチンにジャンプする。

* スタートアップルーチンの実装において気をつけるべきことは、スタックメモリの設定である。スタ

ック領域の確保が十分ではないと、ヒープがスタックを浸食しデータを破壊するという事態にな

る。

2) 例外処理

* 一般的に例外処理をもつ言語系は、例外処理とデストラクタが一組になるように実装されている。

これは、コンパイラにおいて生成されるコードが、例外処理が送出されるタイミングでデストラクタ

を実行するようになっていることである。このコードがプログラムの肥大化を招く事態になる。

* また例外が適切にコーディングされない場合、メモリインスタンスのリークが起きる場合がある。こ

れを例外安全性の破綻という。

3) ROM 化

* 組み込みにおいては、スタートアップルーチンなど電源投入により起動するプログラムは ROM

化する必要がある。このときに ROM ライタを利用するが、この作業は手間がかかるので、手戻り

がないように十分にテストを行ってから ROM 化をする必要がある。

4) 安全化設計

* 特にミッションクリティカルな場面で組み込みシステムが使用される場合、バグが発生すると大き

な事故や損害を招く事態になる可能性がある。これを防ぐ設計手法を安全化設計という。

* 安全化設計の基本は、アプリケーションのバグが発生してもシステム全体として、被害が最小に

なるようにとどめることである。これを実現するためには次の指針が必要である。

- リスクの軽重により、モジュールを分離する。

- シンプルな設計を採用し、バグの混入、例外の発生を抑える。

5) ウォッチドッグタイマ

* ウォッチドッグタイマはシステムから独立して暴走や異常処理が発生していないかを監視し検知

する目的で使用されるタイマである。

* ウォッチドッグタイマの内部にはカウンタを持っていて、周期的にカウンタをカウントダウンするこ

とで、カウンタ値が 0 になったらタイマ割り込みを発生させる。プログラムや OS は周期的にウォッ

チドッグタイマのカウンタを初期化することで、正常であることをウォッチドッグタイマに伝達する。

正常ならば、カウンタが初期化し続けられ、タイマ割り込みが発生しないこということになる。

8-1-応 - 2

Page 6: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

スキル区分 OSS モデルカリキュラムの科目 レベル

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用

習得ポイント 8-1-応-2. CPU の特徴によるメモリ管理の違い

対応する

コースウェア

第 4 回 CPU によるメモリ資源の管理方法

8-1-応-2. CPU の特徴によるメモリ管理の違い

CPU の MMU(Memory Management Unit)搭載の有無によるメモリイメージおよび管理違いについ

て説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPU からのメモリアクセスの

仕組みを解説する。

【学習の要点】

* メモリ管理の方法は CPU の MMU 搭載有無について変わる。

* MMU が搭載されていない場合は、物理メモリのみとなりソフトウェアから見えるアドレスがそのま

ま物理アドレスとなる。

* MMU が搭載されている場合は、物理メモリが仮想メモリに変換される。そのため、ソフトウェアか

ら見えるアドレスがそのまま物理アドレスとはならない。

図 8-1-応- 2 CPU によるメモリ管理の違い

8-1-応 - 3

Page 7: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

【解説】

1) プログラムのメモリアドレス

プログラムから見たメモリアドレスには次の2種類がある。

* アドレス空間をメモリ全体で一意に割り当て、プロセス間ですべてのメモリを共有する物理アドレ

ス。

* アドレス空間をプロセスごとに割り当て、それぞれ独立したメモリ空間をもつ仮想アドレス。

仮想アドレス方式にて物理アドレスへの変換を受け持つハードウェアを MMU と呼ぶ。

2) メモリアドレスの種類

* 物理アドレス

プロセスのアドレス空間がメモリ全体で一意に割り当てられている。すべてのメモリ空間にアクセ

スできるため、別プロセスのデータ領域や、ハードウェアアクセスなどを直接アドレス指定で行う

ことができる。しかし、プロセス内でバッファのオーバーフローなどのメモリ破壊が発生した場合

に、他のプロセスやハードウェアに対してもデータ破壊などを生じさせる。このような事態が発生

しても CPU はエラーや例外などを発生させず動作し続けるため、原因の認知や究明が遅くなる

場合があるので、物理アドレスでの動作におけるデータの取り扱いは十分に注意することが大

切である。

* 仮想アドレス

プロセスのアドレス空間をそれぞれ独立して割り当てる方式。プロセスごとにアドレス空間が変

わるので、プロセス間でデータ領域を参照することはできない。また、ハードウェアへのアクセス

の際にも、物理アドレスを論理アドレスに変換してアクセス必要がある。その反面、プロセスごと

にアドレス空間が独立しているため、バッファオーバーフローなどで別のプロセスに対して影響

を与えることがないというメリットがある。なお、仮想アドレスの管理方法には以下の種類がある。

- ベースアドレス方式

ベースアドレス方式は、アクセスしようとするアドレスにベースアドレスレジスタの値を加えて

からアクセスする方式である。

- セグメント方式

セグメント方式は、メモリの複数のセクションに分割し、セクションごとにベースアドレスレジ

スタを持たせる拡張をした方式である。

- ページング方式

ページング方式は、メモリのページと呼ばれるブロックごと(セクションよりも細かい)にベー

スアドレスレジスタを持たせる拡張をした方式である。

3) MMU

物理アドレスと論理アドレスの変換を行うハードウェアであり、以下の機能を持つ。

* 物理アドレスと仮想アドレスとのアドレス変換機能。

* 仮想アドレスをオーバーランした場合などに例外を通知するメモリ保護機能。

* メモリアドレスに対してのアクセスレベル(特権レベル)に応じてアクセス可能、不可能といったア

クセス制御機能。

8-1-応 - 4

Page 8: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

スキル区分 OSS モデルカリキュラムの科目 レベル

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用

習得ポイント 8-1-応-3. 組み込み Linux におけるメモリ管理の特徴

対応する

コースウェア

第 5 回 組み込み Linux におけるメモリ資源の管理方法

8-1-応-3. 組み込み Linux におけるメモリ管理の特徴

Linux の利用形態におけるメモリ管理の差異を説明する。論理アドレスの管理方法の違いや利用環

境における適切なメモリ管理の選択方法について解説する。

【学習の要点】

* MMU 環境での Linux は、大容量のメモリを効率的に扱うことができるように、ページメモリの階層

構造を採用している。

* この階層構造はCPUアーキテクチャによって変わる。階層を複数から選択できるCPUでは実行

速度やメモリリソースの制約によって、その数を選択する。

図 8-1-応- 3 ページングを利用した論理、物理アドレス変換

8-1-応 - 5

Page 9: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

【解説】

1) CPU アーキテクチャにおけるメモリ管理の種類

メモリ管理については、まず MMU の有無によって変わる。MMU を利用しない場合には物理アドレ

スのみの管理になり、MMU を利用する場合には物理アドレスと論理アドレスの対応を管理する必

要がある。

論理アドレスの管理には物理メモリをある一定の大きさ(ページ)に区切り、そのページ(ページフレ

ーム)ごとに管理するページング方式がある。しかし、ページの情報をアドレスすべてに対して持つ

ことは非効率であるため、Linux ではこれを階層構造にし、実際に利用可能な領域のページのみを

管理することで、メモリ管理領域の節約を実現している。

2) ページングメモリの階層構造

Linux では PGD(Page Global Directory)、PUD(Page Upper Directory)、PMD(Page Middle

Directory)、PTE(Page Table Entry)の 4 階層までサポートしており、CPU アーキテクチャによって

利用できる階層が変わる。一般的に階層を増やすことでメモリ管理が容易になる半面、変換のため

のコストがかかる。

3) CPU アーキテクチャが対応する階層

* 2 段階のページテーブル(PGD、PTE)

- IA-32 アーキテクチャ

- ARM アーキテクチャ

* 3 段階のページテーブル(PGD、PMD、PTE)

- IA-32 アーキテクチャの PAE(Physical Address Extension、物理メモリ拡張)

- ARM アーキテクチャ

* 4 段階のページテーブル(PGD、PUD、PMD、PTE)

- x86-64 アーキテクチャ(AMD 社による x86 命令の 64bit 拡張)

- IA-64

- POWER アーキテクチャ

4) TLB(Transfer Lookaside Buffer)

このように論理アドレスから物理アドレスへの変換がおこなわれるが、アクセスされる度に変換をす

ることは非効率である。このため、TLB と呼ばれるキャッシュに対応表の一部を持ち、物理メモリへ

のアクセスを高速化している。

8-1-応 - 6

Page 10: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

スキル区分 OSS モデルカリキュラムの科目 レベル

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用

習得ポイント 8-1-応-4. 組み込み Linux における割り込み処理の流れ

対応する

コースウェア

第 6 回 組み込み Linux における割り込みの管理方法

8-1-応-4. 組み込み Linux における割り込み処理の流れ

組み込み Linux における割り込み処理の流れを解説する。ハードウェア割り込みの発生からソフトウ

ェアで処理されるまでの流れを説明する。

【学習の要点】

* ハードウェアやソフトウェアでの割り込みは CPU からカーネルに渡される。

* カーネルに渡された割り込みは、アプリケーションから登録されたハンドラへ渡されることで処理

される。

図 8-1-応- 4 割り込み処理の流れ

8-1-応 - 7

Page 11: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

【解説】

1) 一般的な割り込み処理

一般的な割り込み処理では、外部のハードウェアから CPU に割り込み信号が入ると、CPU の割り

込みハンドラに登録された処理が動作を開始する。割り込み処理が開始するとアプリケーション側

の動作は完全に停止してしまう。これにより割り込み処理の最中は他の処理ができないため、割り

込み処理は最小限の時間にする必要がある。

2) Linux での割り込み処理

上記のような注意点から、Linux では割り込みを 2 段で処理している。まず CPU に入ってくる割り込

み信号から割り込みハンドラが起動し、ここではカーネルに対して割り込みが発生したことのみを通

知して処理を完了する。

カーネルでは割り込みが入ったことをカーネルスレッドにて監視し、割り込みを検出すると実際の割

り込み処理の動作を開始する。

このように割り込み処理を 2 段構成にすることで割り込み処理時間を短縮し、より多くの割り込みを

処理することができる。一方で、割り込み処理にカーネルを介するため、応答性は低下する。

3) 割り込み処理の注意点

ハードウェエアからの割り込みが入り、割り込みハンドラが動作を開始するとき、そのハンドラは直

前に動作していたプロセス空間のカーネルスタックを利用する。割り込み処理中にさらに重複して

別の割り込みが入ることも可能である。

そのため、割り込み処理に時間をかける、また割り込み処理が短い間隔で続くと、スタックを消費し、

オーバーフローを引き起こす可能性がある。

これを防ぐためにも割り込み処理は簡潔に行う必要がある。どうしても割り込み処理で時間のかか

る処理を行いたい場合には、スピンロックを利用して別の割り込みを止めることや、遅延割り込みを

利用するなどの処置を考慮する必要がある。ただし、これらは応答速度を遅延させることになるた

め、出来る限り割り込みハンドラ内では処理を行わせることのないようにすることが必要である。

8-1-応 - 8

Page 12: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

スキル区分 OSS モデルカリキュラムの科目 レベル

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用

習得ポイント 8-1-応-5. リソースの排他とデッドロック

対応する

コースウェア

第 7 回 リソースの排他とデッドロック

8-1-応-5. リソースの排他とデッドロック

複数の組み込みアプリケーション同士でシステムリソースを共有する場合に注意すべきデッドロック

の概念、デッドロックの回避について具体的な実装を挙げて説明する。

【学習の要点】

* 排他処理の副作用として、複数の排他を利用した場合にお互いお互いを待って双方が動けな

くなるデッドロックと呼ばれる現象が発生する。

* デッドロックの発生条件には時間やタイミングなど偶然の要素もあるため、原因究明には時間掛

かるので排他処理の際にはそれを考慮した実装を考える必要がある。

図 8-1-応- 5 デッドロックを起こす状況の例

8-1-応 - 9

Page 13: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

【解説】

1) デッドロック

デッドロックとは、複数のタスクがリソース要件を満たせずに処理が全く進まなくなってしまう状態で

ある。

デッドロックを引き起こす原因として、複数のプロセスが複数の排他区間(クリティカルセクション)に

入るために排他オブジェクトを取得する場合におこりやすい。

A) あるプロセス(X)がクリティカルセクション(1)を実行中に、別のクリティカルセクション(2)を実行し

ようとする。

B) すでに別のプロセス(Y)によって、その排他オブジェクト(2)が取得されていると、プロセス(X)は

待ち状態に入る。

C) その状態で、プロセス(Y)が排他オブジェクト(1)を取得しようと試みると、プロセス(Y)の処理完了

を待っているプロセス(X)がすでに取得しているため、プロセス(Y)は取得できない。

D) 両方のプロセスともに待ち状態に入ってしまう。

2) デッドロックの検出

デッドロックの発生には時間的要因や、偶発的要因など確実に再現させることが難しい場合が多

い。そのため、デッドロックの発生原因を十分に理解し、デッドロックが発生しない設計・実装を行う

ように心がける。

3) デッドロックの回避

デッドロックは排他オブジェクトを複数取得する場合に発生するため、クリティカルセクションを短く

し、排他オブジェクトの複数取得をなくすことが最善である。クリティカルセクションが長ければ別の

プロセスの動作を止めてしまうことにもなるので、システム全体としての性能が低下する可能性もあ

る。

4) その他の回避手段

クリティカルセクションへのアクセス特性によっては排他処理を利用しない方法も存在する。

* リード・コピー・アップデート(Read Copy Update : RCU)

厳密には排他処理ではないが、あるクリティカルセクションでのリソースアクセスで書き込みに対

して読み込みが多い場合に有用な手段である。

* シーケンスカウンタロック(seq ロック)

RCU と同様にあるクリティカルセクションでのリソースアクセスで書き込みに対して読み込みが多

い場合に有用な手段である。スピンロックを利用しないため、より高速に処理を行うことができ

る。

8-1-応 - 10

Page 14: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

スキル区分 OSS モデルカリキュラムの科目 レベル

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用

習得ポイント 8-1-応-6. ファイル入出力プログラムの構成

対応する

コースウェア

第 8 回 入出力資源管理

8-1-応-6. ファイル入出力プログラムの構成

ファイルシステムの概要と、リエントラント性やデバイス独立性などファイルシステムに求められる要

件を説明する。さらに実際のファイルアクセスに関する動作の詳細を示し、組み込みアプリケーショ

ンからファイルを利用する操作手順の概要について述べる。

【学習の要点】

* 組み込みシステムのファイルシステムには、リエントラント性、デバイス独立性といった要件があ

る。

* 組み込みアプリケーションからファイルシステム、デバイスドライバを通して外部機器を利用する

手順を学習する。

* 組み込みで使われるファイルシステムでは JFFS (Journaling Flash File System)などフラッシュデ

バイス用のファイルシステムの採用が進んでいる。

図 8-1-応- 6 ファイルシステムの位置づけ

8-1-応 - 11

Page 15: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

【解説】

1) ファイルシステムの機能

ファイルシステムはディスク入出力のデータをユーザにとって使いやすい「ファイル」という形式に変更

する仕組みを提供する。

* 組み込みシステムのファイルシステムにはリエントラント性、デバイス独立性といった要件があ

る。

- リエントラント性は、複数のタスクから同期・非同期にアクセスされても正しいデータを返す

性質を指す。

- デバイス独立性は、ハードウェアに依存したコードを書かずに済むようにすることであり、フ

ァイルシステムがデバイスドライバを包含する構成を取ることにより実現される。

* カーネルの提供するインタフェースにより、統一的なアクセスが得られる。

- VFS (Virtual File System)という仮想ファイルシステムにより(II-6-5.)、各種ファイルシステ

ムのアクセス方法の差異を吸収する仕組みが Linux では採用されている。

- アプリケーションが open, read, write などのシステムコールを発行すると、カーネル内のシ

ステムコールを経て、VFS により各ファイルシステム固有の処理が実行される。

2) ファイルシステムタスク

* i ノードによるファイルとディスクの関連づけ

- VFS では、i ノード(index node)がディスクのインデックスを持ち、ファイルとディスクの情報を

関連づける。

* ブロック単位のディスク管理

- Unix では伝統的にディスクをブロックという固定長の単位(4kbytes など)で管理する方法を

とっていた。Ext2fs(ext2)はその代表例である。

- ext2 ファイルシステムでは、作成時に平均的なファイルサイズの予測を行ってブロックのサ

イズを決定する(1024, 2048, 4096bytes のいずれか)。作成されたブロックをブロックグルー

プとして管理する。

3) 組み込みシステムファイルシステムの具体例

* JFFS (Journaling Flash File System)

- Linuxで初期から使われていたNOR型フラッシュメモリ用のジャーナリングファイルシステム

である。近年は、デバイスの寿命を延ばすための改良版である JFFS2 や NAND 型フラッシ

ュデバイスに対応した YAFFS (Yet Another Flash File System), およびその拡張である

YAFFS2 などが利用される。

* cfamfs

- 読み込み専用の圧縮ファイルシステムである。小さな ROM などに焼き付ける用途の設計

であり、ファイルサイズは 16MB 未満、ファイルシステムは 256MB 以下に制限される。

* その他

- XFS, Reiserfs なども組み込みシステムで利用される。

8-1-応 - 12

Page 16: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

スキル区分 OSS モデルカリキュラムの科目 レベル

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用

習得ポイント 8-1-応-7. 組み込みコンピュータネットワーク

対応する

コースウェア

第 9 回 組み込みシステムのネットワーク機能

8-1-応-7. 組み込みコンピュータネットワーク

携帯電話による通信や、赤外線通信、ユビキタスネットワークなど、組み込みシステムで利用できる

インターネット以外のネットワークアーキテクチャについて解説する。さらに組み込みシステムにおけ

る IPv6 の利用動向についても述べる。

【学習の要点】

* 携帯電話による通信や赤外線、RFID によるユビキタスネットワークなど、インターネットを離れて

もネットワークは広く利用されている。

* 組み込みの分野で市場規模の大きいネットワークの例としては、自動車の車載ネットワークと工

場で利用される FA システムがあげられる。

* IPv6 の普及によりあらゆる機器に IP アドレスを持たせインターネットによる通信が可能となること

から、現在は通信機能のない家庭用電化製品への適用など、幅広い利用が期待されている。

図 8-1-応- 7 広がる組み込みコンピュータのネットワーク

8-1-応 - 13

Page 17: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

【解説】

1) インターネット以外の組み込みコンピュータネットワークと IPv6

* 組み込みシステムにおいても、他のシステムと同様に、赤外線通信、ユビキタスネットワークなど

のインターネット以外のコンピュータネットワークが利用されている。

* IPv6 の普及により、全ての機器やデバイスが個別に IP アドレスを持ちインターネットを利用した

通信の実現が可能となり、期待されている。

* 組み込みシステムにおける IPv6 の利用は、TCP/IP プロトコルスタックの実装をハードウェア

(ROM 化)で行う場合と、ソフトウェアで行う場合がある。ソフトウェアで行う場合は、OS を利用す

る場合が大多数である。

* インターネット以外の組み込みコンピュータネットワークで市場シェアとして大きいものは、自動

車や車両に用いられる車載ネットワークと、生産工場で利用される FA ネットワークである。

2) 車載ネットワーク

* 組み込みシステムとして自動車を見た場合、組み込みインターネットなどの情報ネットワークに

比べて、高度の信頼性、リアルタイムの保証性が必要とされる。この車載ネットワークについて

は国際標準化が行われ、オープン化が進行している。

* 自動車向けの制御ネットワークとして国際標準として利用されているのが CAN(Controller Area

Network)である。

* アクチュエーターやセンサなどのデバイスをつなぐための低速・低コストのネットワークとしては、

LIN(Local Interconnect Network)が利用されている。

* CANはマルチマスタ方式のバス型ネットワークである。一つのバスに複数のノードが繋がれてお

り、通信はすべてのノードにメッセージのブロードキャストが行われる。メッセージには ID がつい

ており、この ID が優先度を表す。各ノードは ID をみて自分に必要なメッセージを取り込む。

* CAN においては、プロードキャストと優先度の確保がリアルタイムの保証を担保することになる。

3) FA ネットワーク

* FA システムのネットワークも高度の信頼性とリアルタイム保証が求められる分野である。

* FAシステムの組み込みシステムネットワークについては、次の三つのレベルに分けて考えること

ができる。

- コンピュータレベル:工場全体の管理を行う。

- コントローラレベル:生産ラインごとの管理・制御。

- デバイスレベル:一つの製造機器における制御コンピュータとセンサ・アクチュエータの管

理。

* コンピュータレベルのネットワークには Ethernet を利用して TCP/IP 経由の情報系ネットワーク

が利用されることが多い。

* CC-Link はコントローラ及びデバイスレベルのネットワークで、マスタースレーブ型のバス型ネッ

トワークである。CC-Link は日本の業界団体による普及活動が行われている。

8-1-応 - 14

Page 18: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

スキル区分 OSS モデルカリキュラムの科目 レベル

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用

習得ポイント 8-1-応-8. リアルタイムシステムの処理方法と設計

対応する

コースウェア

第 10 回 リアルタイムシステムの構成と仕組み

8-1-応-8. リアルタイムシステムの処理方法と設計

マルチタスク OS の一つであるリアルタイム OS についてその特徴、メリットを紹介する。マルチタスク

OS との違いや設計、実装で気をつけるべきことを紹介する。

【学習の要点】

* リアルタイムOSはスレッドのスイッチが優先度のみに依存するOSで、常にその時実行可能であ

る最高優先度のタスクのみ動作が可能である。

* 高優先度のスレッドが実行可能になった場合、即座に実行されるため時間的制約を厳守するシ

ステムに利用される。

* リアルタイム OS では異なる優先度の間では時分割されないので、高優先度のスレッドが長時間

動作することは避ける。

図 8-1-応- 8 リアルタイムシステムの特徴

8-1-応 - 15

Page 19: 8-1-応 組み込みシステムに関する知識 - IPA · 2020-01-10 · について説明する。論理アドレスから物理アドレスへのアクセス方法を紹介し、CPUからのメ

8-1-応 - 16

【解説】

1) リアルタイム OS の概要

μITRON などのリアルタイム OS ではスレッドの実行はそのときの最高優先度のスレッドのみ動き続

ける。逆に最高優先度のスレッドは実行可能になれば即座に動作を開始するため、ハードリアルタ

イムシステムを求められる環境で利用される。

* ハードリアルタイム

ある処理が指定された時間内に終わらないことで、致命的になるシステムである。

* ソフトリアルタイム

ある処理が指定された時間内に終わらなくとも、致命的にはならないようなシステムである。

2) リアルタイム OS における注意点

リアルタイム OS では優先度の異なるスレッド間はもとより、同一優先度のスレッド間であっても時分

割されない OS も存在する。そのため、高優先度のスレッドが CPU 時間を多く利用するようなソフト

ウェアでは低優先度のスレッドが動作できず、全体のスループットが下がってしまう。高優先度のス

レッドは CPU 時間を最低限にする必要がある。

3) リアルタイム OS における排他処理の注意点

リアルタイム OS にて排他処理を行う場合、以下のような優先度の逆転と呼ばれる状況が発生す

る。

A) 低優先度のスレッド(X)でクリティカルセクションの実行権を取得する。

B) 高優先度のスレッド(Y)が動き出し同じクリティカルセクションの実行権を取得しようとする。

C) スレッド(X)がすでに実行権を持っているため、スレッド(Y)が高優先度にも関わらず待ち状態に

なってしまう。

この優先順位の逆転を防ぐ方法として2種類の方法が存在する。

* 優先度上限プロトコル

セマフォなどのリソースに優先度が設定されており、そのリソースを取得したスレッドの優先度が

変更される。これにより、リソースを取得したスレッドの優先度が一時的に上がり、他の高優先度

スレッドの動作を停止させる。

ただし、優先度が変更されている間は他のスレッドが動作できないため、クリティカルセクション

が長すぎると、時間制約を守れない場合があるので注意すること。

* 優先度継承プロトコル

低優先度のスレッド(X)がセマフォなどのリソースを取得した時点では優先度は変更されず、別

の高優先度のスレッド(Y)が同じリソースを確保しようとした際に、そのスレッド(Y)の優先度と同じ

優先度にスレッド(X)の優先度を変更することで優先度の逆転を回避する。

ただし、リアルタイムかつタイムシェアリングされる OS の場合は、クリティカルセクション中にディ

スパッチが発生し、デッドロックが発生する危険もある。