• 検索結果がありません。

OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 8-1- 応組み込みシステムに関する知識 と IT 知識体系との対応関係は以下の通り 科目名 応用レベル 応組み込みシステムに関する知識 組み込みアプリクロスコンパイル組

N/A
N/A
Protected

Academic year: 2021

シェア "OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 8-1- 応組み込みシステムに関する知識 と IT 知識体系との対応関係は以下の通り 科目名 応用レベル 応組み込みシステムに関する知識 組み込みアプリクロスコンパイル組"

Copied!
19
0
0

読み込み中.... (全文を見る)

全文

(1)

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. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。

(2)

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 1 IT-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.データ ベースの応用分野

4 IT-WS Webシステムとその技術 IT-WS1.Web技術 [1-Ⅰ-7] IT-WS2.情報アー キテクチャ [1-Ⅰ-7] IT-WS3.デジタル メディア IT-WS4.Web開発 IT-WS5.脆弱性 IT-WS6.ソーシャ ルソフトウェア 5 IT-PF プログラミング基礎 IT-PF1.基本データ構造 IT-PF2.プログラ ミングの基本的構 成要素 IT-PF3.オブジェ クト指向プログラ ミング IT-PF4.アルゴリ ズムと問題解決 IT-PF5.イベント 駆動プログラミン グ IT-PF6.再帰 6 IT-IPT 技術を統 合するためのプロ グラミング IT-IPT1.システム 間通信 [1-Ⅰ-3] IT-IPT2.データ割 り当てと交換 IT-IPT3.統合的 コーディング IT-IPT4.スクリプ ティング手法 IT-IPT5.ソフト ウェアセキュリ ティの実現 IT-IPT6.種々の問 題 IT-IPT7.プログラ ミング言語の概要

7 CE-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.アーキテ クチャ 9 IT-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.システ ム性能評価 コ ン ピュ ー タ ハー ド ウェ ア と アー キ テ ク チャ 13 CE-CAO コン ピュータのアーキ テクチャと構成 CE-CAO0.歴史と概 要 CE-CAO1.コン ピュータアーキテ クチャの基礎 CE-CAO2.メモリシ ステムの構成と アーキテクチャ CE-CAO3.インタ フェースと通信 CE-CAO4.デバイス サブシステム CE-CAO5.CPUアー キテクチャ CE-CAO6.性能・コ スト評価 CE-CAO7.分散・並 列処理 CE-CAO8.コン ピュータによる計 算 CE-CAO9.性能向上 14IT-ITF IT基礎 IT-ITF1.ITの一般 的なテーマ [1-Ⅰ-4] IT-ITF2.組織の問 題 IT-ITF3.ITの歴史 IT-ITF4.IT分野 (学科)とそれに関 連のある分野(学 科) IT-ITF5.応用領域 IT-ITF6.IT分野に おける数学と統計 学の活用 分野 組 織 関 連 事 項 と 情 報 シ ス テ ム 応 用 技 術 ソ フ ト ウェ ア の 方 法 と 技 術 シ ス テ ム 基 盤 10CE-NWK テレコミュニケーション

(3)

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 モデルカリキュラム固有の知識を示している)

(4)

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用 習得ポイント 8-1-応-1. 組み込みアプリケーション開発における留意点 対応する コースウェア 第 1 回 組み込みアプリケーション開発における留意点

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

スタートアップルーチンの実装や ROM 化において気をつけるべき点 Watch Dog Timer (WDT)の利 用など、組み込みアプリケーション開発において留意すべき様々な事項を紹介する。 【学習の要点】 * スタートアップルーチンはスタックの確保に注意する。 * ROM 化は手間がかかるので、ROM ライタを利用する前に十分にテストをする。 * ウォッチドッグタイマは異常が起きていないかを監視する目的で使用されるタイマで、暴走や異 常処理を検知する。 図 8-1-応- 1 スタック領域確保不十分によるリークとウォッチドッグタイマ

(5)

1) スタートアップルーチン * コンピュータは電源が投入される、またリセットをされたときにブートとよばれる起動動作を行う。 ことのときに最初に呼び出され、実行されるプログラムがスタートアップルーチンである。 * スタートアップルーチンは ROM にあり、起動されると以下の動作を順に行う。 - CPU のレジスタを設定し、ハードウェア・ソフトウェアを初期化する。 - ソフトウェアを初期化し、プログラムが動作するために必要なヒープとスタックメモリを設定し た後に、割り込み関連の設定を行う。 - OS が存在する場合は、まず OS を起動する。OS が存在しない場合はアプリケーションのメ インルーチンにジャンプする。 * スタートアップルーチンの実装において気をつけるべきことは、スタックメモリの設定である。スタ ック領域の確保が十分ではないと、ヒープがスタックを浸食しデータを破壊するという事態にな る。 2) 例外処理 * 一般的に例外処理をもつ言語系は、例外処理とデストラクタが一組になるように実装されている。 これは、コンパイラにおいて生成されるコードが、例外処理が送出されるタイミングでデストラクタ を実行するようになっていることである。このコードがプログラムの肥大化を招く事態になる。 * また例外が適切にコーディングされない場合、メモリインスタンスのリークが起きる場合がある。こ れを例外安全性の破綻という。 3) ROM 化 * 組み込みにおいては、スタートアップルーチンなど電源投入により起動するプログラムは ROM 化する必要がある。このときに ROM ライタを利用するが、この作業は手間がかかるので、手戻り がないように十分にテストを行ってから ROM 化をする必要がある。 4) 安全化設計 * 特にミッションクリティカルな場面で組み込みシステムが使用される場合、バグが発生すると大き な事故や損害を招く事態になる可能性がある。これを防ぐ設計手法を安全化設計という。 * 安全化設計の基本は、アプリケーションのバグが発生してもシステム全体として、被害が最小に なるようにとどめることである。これを実現するためには次の指針が必要である。 - リスクの軽重により、モジュールを分離する。 - シンプルな設計を採用し、バグの混入、例外の発生を抑える。 5) ウォッチドッグタイマ * ウォッチドッグタイマはシステムから独立して暴走や異常処理が発生していないかを監視し検知 する目的で使用されるタイマである。 * ウォッチドッグタイマの内部にはカウンタを持っていて、周期的にカウンタをカウントダウンするこ とで、カウンタ値が 0 になったらタイマ割り込みを発生させる。プログラムや OS は周期的にウォッ チドッグタイマのカウンタを初期化することで、正常であることをウォッチドッグタイマに伝達する。 正常ならば、カウンタが初期化し続けられ、タイマ割り込みが発生しないこということになる。

(6)

開発体系分野 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 によるメモリ管理の違い

(7)

1) プログラムのメモリアドレス プログラムから見たメモリアドレスには次の2種類がある。 * アドレス空間をメモリ全体で一意に割り当て、プロセス間ですべてのメモリを共有する物理アドレ ス。 * アドレス空間をプロセスごとに割り当て、それぞれ独立したメモリ空間をもつ仮想アドレス。 仮想アドレス方式にて物理アドレスへの変換を受け持つハードウェアを MMU と呼ぶ。 2) メモリアドレスの種類 * 物理アドレス プロセスのアドレス空間がメモリ全体で一意に割り当てられている。すべてのメモリ空間にアクセ スできるため、別プロセスのデータ領域や、ハードウェアアクセスなどを直接アドレス指定で行う ことができる。しかし、プロセス内でバッファのオーバーフローなどのメモリ破壊が発生した場合 に、他のプロセスやハードウェアに対してもデータ破壊などを生じさせる。このような事態が発生 しても CPU はエラーや例外などを発生させず動作し続けるため、原因の認知や究明が遅くなる 場合があるので、物理アドレスでの動作におけるデータの取り扱いは十分に注意することが大 切である。 * 仮想アドレス プロセスのアドレス空間をそれぞれ独立して割り当てる方式。プロセスごとにアドレス空間が変 わるので、プロセス間でデータ領域を参照することはできない。また、ハードウェアへのアクセス の際にも、物理アドレスを論理アドレスに変換してアクセス必要がある。その反面、プロセスごと にアドレス空間が独立しているため、バッファオーバーフローなどで別のプロセスに対して影響 を与えることがないというメリットがある。なお、仮想アドレスの管理方法には以下の種類がある。 - ベースアドレス方式 ベースアドレス方式は、アクセスしようとするアドレスにベースアドレスレジスタの値を加えて からアクセスする方式である。 - セグメント方式 セグメント方式は、メモリの複数のセクションに分割し、セクションごとにベースアドレスレジ スタを持たせる拡張をした方式である。 - ページング方式 ページング方式は、メモリのページと呼ばれるブロックごと(セクションよりも細かい)にベー スアドレスレジスタを持たせる拡張をした方式である。 3) MMU 物理アドレスと論理アドレスの変換を行うハードウェアであり、以下の機能を持つ。 * 物理アドレスと仮想アドレスとのアドレス変換機能。 * 仮想アドレスをオーバーランした場合などに例外を通知するメモリ保護機能。 * メモリアドレスに対してのアクセスレベル(特権レベル)に応じてアクセス可能、不可能といったア クセス制御機能。

(8)

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用 習得ポイント 8-1-応-3. 組み込み Linux におけるメモリ管理の特徴 対応する コースウェア 第 5 回 組み込み Linux におけるメモリ資源の管理方法

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

Linux の利用形態におけるメモリ管理の差異を説明する。論理アドレスの管理方法の違いや利用環 境における適切なメモリ管理の選択方法について解説する。 【学習の要点】 * MMU 環境での Linux は、大容量のメモリを効率的に扱うことができるように、ページメモリの階層 構造を採用している。 * この階層構造は CPU アーキテクチャによって変わる。階層を複数から選択できる CPU では実行 速度やメモリリソースの制約によって、その数を選択する。 図 8-1-応- 3 ページングを利用した論理、物理アドレス変換

(9)

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 と呼ばれるキャッシュに対応表の一部を持ち、物理メモリへ のアクセスを高速化している。

(10)

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用 習得ポイント 8-1-応-4. 組み込み Linux における割り込み処理の流れ 対応する コースウェア 第 6 回 組み込み Linux における割り込みの管理方法

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

組み込み Linux における割り込み処理の流れを解説する。ハードウェア割り込みの発生からソフトウ ェアで処理されるまでの流れを説明する。 【学習の要点】 * ハードウェアやソフトウェアでの割り込みは CPU からカーネルに渡される。 * カーネルに渡された割り込みは、アプリケーションから登録されたハンドラへ渡されることで処理 される。

(11)

1) 一般的な割り込み処理 一般的な割り込み処理では、外部のハードウェアから CPU に割り込み信号が入ると、CPU の割り 込みハンドラに登録された処理が動作を開始する。割り込み処理が開始するとアプリケーション側 の動作は完全に停止してしまう。これにより割り込み処理の最中は他の処理ができないため、割り 込み処理は最小限の時間にする必要がある。 2) Linux での割り込み処理 上記のような注意点から、Linux では割り込みを 2 段で処理している。まず CPU に入ってくる割り込 み信号から割り込みハンドラが起動し、ここではカーネルに対して割り込みが発生したことのみを通 知して処理を完了する。 カーネルでは割り込みが入ったことをカーネルスレッドにて監視し、割り込みを検出すると実際の割 り込み処理の動作を開始する。 このように割り込み処理を 2 段構成にすることで割り込み処理時間を短縮し、より多くの割り込みを 処理することができる。一方で、割り込み処理にカーネルを介するため、応答性は低下する。 3) 割り込み処理の注意点 ハードウェエアからの割り込みが入り、割り込みハンドラが動作を開始するとき、そのハンドラは直 前に動作していたプロセス空間のカーネルスタックを利用する。割り込み処理中にさらに重複して 別の割り込みが入ることも可能である。 そのため、割り込み処理に時間をかける、また割り込み処理が短い間隔で続くと、スタックを消費し、 オーバーフローを引き起こす可能性がある。 これを防ぐためにも割り込み処理は簡潔に行う必要がある。どうしても割り込み処理で時間のかか る処理を行いたい場合には、スピンロックを利用して別の割り込みを止めることや、遅延割り込みを 利用するなどの処置を考慮する必要がある。ただし、これらは応答速度を遅延させることになるた め、出来る限り割り込みハンドラ内では処理を行わせることのないようにすることが必要である。

(12)

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用 習得ポイント 8-1-応-5. リソースの排他とデッドロック 対応する コースウェア 第 7 回 リソースの排他とデッドロック

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

複数の組み込みアプリケーション同士でシステムリソースを共有する場合に注意すべきデッドロック の概念、デッドロックの回避について具体的な実装を挙げて説明する。 【学習の要点】 * 排他処理の副作用として、複数の排他を利用した場合にお互いお互いを待って双方が動けな くなるデッドロックと呼ばれる現象が発生する。 * デッドロックの発生条件には時間やタイミングなど偶然の要素もあるため、原因究明には時間掛 かるので排他処理の際にはそれを考慮した実装を考える必要がある。

(13)

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 と同様にあるクリティカルセクションでのリソースアクセスで書き込みに対して読み込みが多 い場合に有用な手段である。スピンロックを利用しないため、より高速に処理を行うことができ る。

(14)

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用 習得ポイント 8-1-応-6. ファイル入出力プログラムの構成 対応する コースウェア 第 8 回 入出力資源管理

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

ファイルシステムの概要と、リエントラント性やデバイス独立性などファイルシステムに求められる要 件を説明する。さらに実際のファイルアクセスに関する動作の詳細を示し、組み込みアプリケーショ ンからファイルを利用する操作手順の概要について述べる。 【学習の要点】 * 組み込みシステムのファイルシステムには、リエントラント性、デバイス独立性といった要件があ る。 * 組み込みアプリケーションからファイルシステム、デバイスドライバを通して外部機器を利用する 手順を学習する。

* 組み込みで使われるファイルシステムでは JFFS (Journaling Flash File System)などフラッシュデ バイス用のファイルシステムの採用が進んでいる。

(15)

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 なども組み込みシステムで利用される。

(16)

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用 習得ポイント 8-1-応-7. 組み込みコンピュータネットワーク 対応する コースウェア 第 9 回 組み込みシステムのネットワーク機能

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

携帯電話による通信や、赤外線通信、ユビキタスネットワークなど、組み込みシステムで利用できる インターネット以外のネットワークアーキテクチャについて解説する。さらに組み込みシステムにおけ る IPv6 の利用動向についても述べる。 【学習の要点】 * 携帯電話による通信や赤外線、RFID によるユビキタスネットワークなど、インターネットを離れて もネットワークは広く利用されている。 * 組み込みの分野で市場規模の大きいネットワークの例としては、自動車の車載ネットワークと工 場で利用される FA システムがあげられる。 * IPv6 の普及によりあらゆる機器に IP アドレスを持たせインターネットによる通信が可能となること から、現在は通信機能のない家庭用電化製品への適用など、幅広い利用が期待されている。

(17)

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 は日本の業界団体による普及活動が行われている。

(18)

開発体系分野 8-1-応 組み込みシステム開発に関する知識 応用 習得ポイント 8-1-応-8. リアルタイムシステムの処理方法と設計 対応する コースウェア 第 10 回 リアルタイムシステムの構成と仕組み

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

マルチタスク OS の一つであるリアルタイム OS についてその特徴、メリットを紹介する。マルチタスク OS との違いや設計、実装で気をつけるべきことを紹介する。 【学習の要点】 * リアルタイム OS はスレッドのスイッチが優先度のみに依存する OS で、常にその時実行可能であ る最高優先度のタスクのみ動作が可能である。 * 高優先度のスレッドが実行可能になった場合、即座に実行されるため時間的制約を厳守するシ ステムに利用される。 * リアルタイム OS では異なる優先度の間では時分割されないので、高優先度のスレッドが長時間 動作することは避ける。

(19)

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 の場合は、クリティカルセクション中にディ スパッチが発生し、デッドロックが発生する危険もある。

参照

関連したドキュメント

を占めている。そのうち 75 歳以上の後期高齢者は 1,872 万人(14.9%)、80 歳以上は 1,125 万

ESET Endpoint Security V9 / V9 ARM64 対応版、Endpoint アンチウイルス V9 / V9 ARM64 対応版のみとなります。. 

IDLE 、 STOP1 、 STOP2 モードを解除可能な割り込みは、 INTIF を経由し INTIF 内の割り. 込み制御レジスター A で制御され CPU へ通知されます。

[r]

Using the special C- mount ring adapter, the lens can be directly attached to a CCD camera, enabling it to be used as a low cost image ob- servation lens and variable focus lens

ユーザ情報を 入力してくだ さい。必要に 応じて複数(2 つ目)のメー ルアドレスが 登録できます。.

※ログイン後最初に表示 される申込メニュー画面 の「ユーザ情報変更」ボタ ンより事前にメールアド レスをご登録いただきま

“〇~□までの数字を表示する”というプログラムを組み、micro:bit