Q1 |
リアルタイムとは何ですか。 |
|
A1 |
英語では「即時」、「実時間」などの意味ですが、組込みシステムではあらかじめ決められた時間内で処理を完了することを言います。このように決められた時間内に処理を行うことを「リアルタイム処理」と呼びます。 |
|
|
Q2 |
GPSを使うと何が求められるのですか。 |
|
A2 |
GPS用の人工衛星は24個あり、この人工衛星を利用して現在位置を計測するシステムです。3つの衛星からの電波を受信することにより緯度、経度を測定することができ、4つ以上の衛星からの電波を受信することで更に高度を計測することができます。 |
|
|
Q3 |
安全、安心には規格があるのですか。 |
|
A3 |
近年機能安全という考え方が生まれ、機能安全規格IEC61508が発行されています。IEC61508では機能安全の指標として、安全性インテグリティレベル(SIL:Safety
Integrity Level)で安全性能が定義されています。 |
|
|
Q4 |
組込み技術者について説明した資料はありませんか。 |
|
A4 |
情報処理推進機構(IPA) ソフトウェア・エンジニアリング・センター(SEC)から組込みスキル標準(ETSS)に関する説明資料が公開されています。組込みソフトウェア開発力強化推進委員会活動報告(6月)の中に「組込みスキル標準領域活動報告書」「ETSS
スキル標準(2006年版)」「ETSS スキル基準 Version1.1」「ETSS キャリア基準 Version1.0」「ETSS
教育研修基準 Version1.0」「ETSS 教育カリキュラムデザイン ガイドブック Version1.0」が公開されていますので、参考にしてください。 |
|
|
Q5 |
組込みOSにはどのようなものがあるのですか。 |
|
A5 |
パソコンに使われているOSや汎用OSとは異なり、組込み機器に搭載されているOSです。特徴としてはリアルタイム性や要求されるメモリ量が少ないことです。組込みシステムで使用されているOSの例としてはμITRON、T-Kernel、VxWorks、WindowsCE、Symbianなどがあります。 |
|
|
Q6 |
OSを使用しない組込みシステムはありますか。 |
|
A6 |
接続されているハードウェアの種類が多くない場合には、作成することができます。この場合にはOSが支援を行っているハードウェアとの信号やデータのやり取りをアプリケーションプログラムから直接行い実現します。 |
|
|
Q7 |
アドレス帳を作成している時に電話が掛かってきたときはどうなるのですか。 |
|
A7 |
非リアルタイム処理であるアドレス帳の作成や編集、メールの作成、ブラウザのアクセス時にリアルタイム処理が必要な電話が掛かってくると、それまで行っていた非リアルタイム処理を一時中断して、リアルタイム処理である通話に必要な処理を行います。これは、リアルタイム処理が必要な着呼イベントにより割込みが発生し、RTOSがそれまで行っていた非リアルタイム処理を一時中断させるからです。もちろんそれまで行っていた処理の内容は保存されますし、通話の終了後には中断していた部分から継続することができるようになっています。 |
|
|
Q8 |
携帯電話以外で組込みシステムはありますか。 |
|
A8 |
自動車をはじめとしてカーナビゲーションシステム、電気炊飯器、電気洗濯機、腕時計、リモコンなども組込みシステムです。このように身近なところにある電気製品は、ほとんどコンピュータを内蔵した組込みシステムです。 |
|
|
Q9 |
デバイスとは何ですか。 |
|
A9 |
コンピュータに搭載され接続された周辺装置を意味します。このデバイスを認識し制御するものがデバイスドライバと呼ばれるプログラムです。したがってデバイスドライバは周辺装置ごとに作成する必要があります。 |
|
|
Q10 |
音声認識とは何ですか。 |
|
A10 |
マイクなどから取り込んだ人間の音声を文字として認識するシステムです。日本語以外にも複数の言語の音声認識を行うことができます。 |
|
|
Q11 |
太陽の内部温度はどのようにして計測するのですか。 |
|
A11 |
非常に高温の物体からは、光子が放射されています。特に恒星の内部のように熱力学的平衡状態にある場合には、黒体輻射と近似されます。この黒体輻射スペクトルを観測することで温度を求めることができます。 |
|
|
Q12 |
介護用に開発されたロボットにはどのようなアクチュエータが使用されているのですか。 |
|
A12 |
扱う対象が人間であることから、工業用のロボットで使われているモータとは異なり、音の小さい連続的に滑らかな動きを助けるモータが使われています。人間でいう関節の部分に使われています。 |
|
|
Q13 |
画面に表示される文字の形が異なるのはなぜですか。 |
|
A13 |
コンピュータに表示・印刷される文字の形をフォントと呼びます。フォントにはゴシック体・明朝体など非常に多くの種類があり、使用する目的に応じて使い分けられます。フォントにはビットマップフォントとアウトラインフォントがあり、文字の拡大縮小にはアウトラインフォントが適しています。同じ文字でもフォントが異なれば表示されるイメージが異なることになります。 |
|
|
Q14 |
非機能要件とは何ですか。 |
|
A14 |
システムに要求される、性能・信頼性・セキュリティ・開発環境・拡張性など、システムが持つ働き・役割を示す機能要件以外の用件です。 |
|
|
Q15 |
汎用プロセッサ、ワンチップマイコン、システムLSI、SoCの区別は何ですか。 |
|
A15 |
これらのプロセッサの違いを明確な線引きで分類するのは難しいものがあります。ただ、一般的に、実装されている機能によって次のように分類しています。
(1)汎用プロセッサ:MPUとしての基本機能だけを実装したもので、MPUの周辺に必要なI/Oや機能をボード上に実装して付加することで汎用目的に利用できるプロセッサです。
(2)ワンチップマイコン: 汎用プロセッサに、ROMやメモリ、タイマ、シリアルI/Fなど基本的なI/Oを実装したものです。
(3)システムLSI: ワンチップマイコンにさらに、利用目的に応じて複雑な周辺I/Oや機能を実装したものです。
(4)SoC: システムLSIのひとつとして分類されますが、システムLSIよりさらに、製品に特化した機能を組み込んだものです。最近では、複数のMPUを実装するSoCも多くなってきています。 |
|
|
Q16 |
コアMPUには、どのようなものがありますか。 |
|
A16 |
コアMPUとして、MPUのアーキテクチャをIPとしてライセンスをしているMPUには、その用途や目的によっていくつかの種類があります。
その中でも、有名なものがデジタルテレビなどで利用されているMIPSや携帯電話などで利用されているARMなどがあります。 |
|
|
Q17 |
ビッグエンディアンとリトルエンディアンは、プログラムを書くとき意識する必要がありますか。 |
|
A17 |
ビッグエンディアンとリトルエンディアンは、MPU内部動作の違いのため、通常のプログラミングで意識することは少ないでしょう。しかし、デバイスドライバを書いたり、ネットワークのプロトコルを処理するプログラムを書いたりするときは注意が必要です。
両者に共通するのは、MPUと外部のデータを扱うということです。ネットワークのプロトコルや画像、音楽データなどは、基本的にビッグエンディアンの並びになっています。 |
|
|
Q18 |
割込み処理中に別の割込みが発生したときは、どのようになるのですか |
|
A18 |
割込みにはその種類によって優先順位が決められて、MPUは割込み処理プログラムを実行中、現在の処理中の割込みよりも優先順位の低い割込みの受付を禁止します。しかし、現在処理中の割込みよりも優先順位の高い割込みが発生した場合は、現在の割込み処理プログムの処理を中止して、より優先順位の高い割込み処理プログラムを呼び出します。そのため、割込み処理プログラムを書くときは、同じ変数の共有などはしてはいけません。通常は、MPUが持っているスタックポインタを利用するようにします。また、割込み処理プログラムは出来る限り短時間で終了するようにしなければなりません。 |
|
|
Q19 |
外部割込みと内部割込みでは、MPU内部の処理に違いがありますか。 |
|
A19 |
外部割込みと内部割込みも、その割込みの要因が変わるだけで、基本的にMPU内部の動作は同じものです。
ただ、外部割込みは、プログラムの実行と関係なく、どのタイミングで発生するか予測がつきません。それに対して、内部割込みは、プログラムの動作と関係して発生します。内部割込みの種類は、MPUのアーキテクチャによってその種類は異なりますが、ゼロで割り算を行うと発生する割込み、内部割込みを発生させる命令は、すべてのMPUが持っています。OSを呼び出すときに使用する、内部割込みを発生させる命令は、プログラムで意図的に発生させる割り込みの典型的な例です。 |
|
|
Q20 |
翌朝の決まった時間までに終了しなければならない銀行システムの夜間バッチ処理などは、なぜリアルタイムシステムと呼ばれないのですか。 |
|
A20 |
リアルタイムを直訳すると「即時」や「瞬時」といった意味になります。
銀行などのエンタプライズ系のシステムでもリアルタイムと呼ばれる処理が存在します。たとえば、端末操作によってホストサーバ上の情報を参照するようなケースです。これは即時(リアルタイム)性を要求されるもので組込みシステムに要求される時間制約と同様の性質のものです。
逆に、バッチ処理は「一括処理方式」とも呼ばれ、大量の処理を順番に効率よく実現することに主眼を置かれています。したがって即時(リアルタイム)性は期待されていません。設定される時間制約も運用上の制約であり、一般的なリアルタイムシステムに要求される時間制約とは性質の違うものといえます。 |
|
|
Q21 |
リアルタイム処理の時間制約の値はどのように決めるのですか。 |
|
A21 |
標準的な時間制約の値は存在しないため、開発対象製品に対する様々な要求事項や、センサなどの入力デバイスの検出時間、モータやアクチュエータなどの出力デバイスの反応時間などの様々な要素を総合的に組みあわせて、リアルタイム処理の制約時間を導き出すことになります。
それだけではなく、システムの設計段階では抽出できない不測の要素などが開発が進むごとに発覚することもあり、その都度システム全体で最適となるように時間制約の値を調整していきます。 |
|
|
Q22 |
なぜすべての処理をリアルタイム処理としないのですか。 |
|
A22 |
システムが持つ性能に対して実装される処理の負荷が比較的少ない場合、すべての処理をリアルタイム処理とすることも可能です。
しかし一般的に組込みシステムは、制約された性能のハードウェアに多くの処理を実装していかなければなりません。そのような場合複数のリアルタイム処理が同時に起動されるとハードウェアが持つ性能で処理しきれなくなり、リアルタイム性の実現ができなくなります。
システムが持つ機能の中にはリアルタイムに動作する必要のないもの(非リアルタイム処理)もあり、これらの実行中にリアルタイム処理が発生した場合優先的にリアルタイム処理を実行させ、リアルタイム性の実現が可能となります。
このように、リアルタイム処理と非リアルタイム処理をバランスよく配置してシステム全体として適正な性能を出せるように実装します。 |
|
|
Q23 |
なぜハードリアルタイムとソフトリアルタイムを区別しなければならないのですか。 |
|
A23 |
組込みシステムでは、ハードリアルタイムを実現するか、あるいはソフトリアルタイムで十分なのかによって、システムを構成するハードウェアや、ソフトウェアが変わることがあります。特に厳しい時間制約を要求されるハードリアルタイムを実現するためには、ハードウェアやOSをハードリアルタイムに対応した構成とすることを、予め、検討のうえ設計・実装しなければなりません。そのため、開発するシステムの中の処理が、ハードリアルタイムなのかソフトリアルタイムなのかを区別し、その特性や要求レベルなどを、開発工程の早い段階で把握し、実現する必要があります。 |
|
|
Q24 |
ハードリアルタイムの「ハード」はハードウェアに関するリアルタイム性のことを意味するのですか。 |
|
A24 |
ハードリアルタイムの「ハード」は、「非常に厳重な」あるいは「厳密な」といった意味です。逆にソフトリアルタイムの「ソフト」は「穏やかな」といった意味あいです。この「非常に厳重な」や「穏やかな」といった形容詞は、そのリアルタイムが持つ時間制約や、時間制約を満足できなかった際に引き起こされる影響や損害にかかるものです。
つまり「ハードリアルタイムは、非常に厳重(ハード)な時間制約があり、その制約を満足できない場合、厳しい(ハード)損害や影響を引き起こす性質のリアルタイム」のことなのです。
ハードリアルタイムやソフトリアルタイムの「ハード」や「ソフト」をハードウェアやソフトウェアのそれと混同している人が多いのですが大きな間違いです。 |
|
|
Q25 |
デジタルカメラのシャッタ制御が間に合わないからといって、人命の喪失や大きな損害にはならないから、この例はソフトリアルタイムではありませんか。 |
|
A25 |
確かに人命や直接大損害をこうむるということにはなりませんが、シャッタ制御による写真品質が劣化するということはデジタルカメラという商品としての基本機能を満足しておらず致命的な欠陥といえます。
シャッタ制御に関する時間制約が実現できなければ商品として流通させてしまった場合、重大なクレームを受けることが予想されます。そのためこの事例はハードリアルタイムといえるのです。 |
|
|
Q26 |
組込みシステムのタスクの考え方は、なぜシステム資源に重点を置くのですか。 |
|
A26 |
一般的に組込みシステムのシステム資源は性能や容量などの制約があります。また、リアルタイム性の要求も高く、これらの条件を満足するためにはシステム資源をいかに効率よく活用し共有するかを念頭に置かなければなりません。
そのため必然的にタスクの考え方はシステム資源の管理に重点が置かれているのです。 |
|
|
Q27 |
Ready状態は実行可能な状態とありますが、システム資源を使用しない処理は実行できるのですか。 |
|
A27 |
Ready状態では、システム資源にはMPUも含まれるため、タスクとしては何の処理も実行できません。また、タスクの状態遷移はOSなどによって提供されるスケジューラが管理を行うためタスク側では認識することができません。
先行するRun状態のタスクが処理を終了しシステム資源利用の権利を開放したところで、Ready状態のタスクにMPUを含むシステム資源の利用権利がスケジューラによって譲渡され、ここではじめてRun状態となり処理が実行可能となるのです。 |
|
|
Q28 |
タスクスケジューラもプログラミングするのですか。 |
|
A28 |
リアルタイムOSを使用したシステムの場合、OSの機能として通常タスクスケジューラが提供されるため通常プログラミングの必要はありません。
リアルタイムOS自体の開発者や、OSのない環境でタスク管理を行う場合は、タスクスケジューラを設計し、プログラミングしなければならないケースもありえます。 |
|
|
Q29 |
プリエンプションの発生に対してプログラム実装上考慮すべきことはありますか。 |
|
A29 |
プリエンプションが発生すると複数の処理間でシステム資源利用の権利が移動することになります。そのため先行していた処理が使用していたシステム資源の状態が、プリエンプション中に改ざんされてしまうと復帰後にプログラムが正しく動作できなくなります。
その対策のためにOSなどによって提供される資源の排他制御や同期を取るための機能を活用し解決を行います。
また、同様に複数の処理で使われる共有ライブラリ関数などは、関数内の使用変数を同一の管理領域に配置するとプリエンプション中に破壊されてしまう可能性があります。そのためマルチタスク環境下における共有関数などは、再入可能(リエントラント)なものにする必要があります。再入可能な関数とは、関数内で使用する変数を処理(タスク)別に管理するようにプログラムの設計と実装が施されたものです。 |
|
|
Q30 |
ラウンドロビンスケジューリングはどのような処理に向きますか。 |
|
A30 |
ラウンドロビンスケジューリングでは、制限時間(タイムスライス)ごとに平等にプリエンプションを行うため、自タスクの処理時間のほかに、他のタスクが処理されている間の待ち時間やプリエンプション時のオーバヘッドの時間などが加わり、トータルの処理時間を予測しづらいといった性質があります。
このため、ラウンドロビンスケジューリングは、ハードリアルタイムのように厳しい時間制約があるものには不向きで、長時間あるいは定常的に実行される優先度の低い処理に使われることが多いのです。 |
|
|
Q31 |
ラウンドロビンの由来は何ですか。 |
|
A31 |
ラウンドロビン(round robin)とは17〜18世紀ころのフランスの農民が、領主に対して嘆願する際に、嘆願者の名前をリボン(ribbon)状に署名したことが由来と言われています。
リボンのように円形で名前を書くことで特定の人物に処罰が集中することなく、署名したものが皆平等に罰せられました。これらのことからラウンドロビンは、「役割や出番を、たくさんの物事や人員によって分担する」といったやり方をさすようになりました。
また、「駒鳥(robin)が枝を順序よくわたっていく様子」という解釈もあります。 |
|
|
Q32 |
汎用OSって何ですか。 |
|
A32 |
使用目的を特定しないコンピュータで使用されるOSのことです。
デスクトップPCやノートPCの場合には、WindowsやLinuxなどがこれにあたります。 |
|
|
Q33 |
OSのサイズが大きい・小さいとはどういうことですか。 |
|
A33 |
OSはアプリケーションと共に、ハードディスクやROMなどに格納されます。
この格納サイズが多くの容量を必要とする場合には大きなサイズのOSと言われます。
また、OSが実行される際に使用するRAMなどのメモリ使用量を指し、大きい・小さいと表現する場合もあります。
この大きい、小さいの判断基準は無く、その環境に応じた判断基準で語られる事が多いことに注意が必要です。 |
|
|
Q34 |
カーネルって何ですか。 |
|
A34 |
OSの基本機能を提供するソフトウェアを指します。
汎用OSなどでは、OSの機能としてファイルシステムや通信機能を具備しています。
カーネルとはこられ付加的機能を除き、タスク管理やメモリ管理などの基本的な機能のみが対象となります。 |
|
|
Q35 |
システムコールって何ですか。 |
|
A.35 |
アプリケーションからOSの機能を利用する際に呼び出す仕組みです。
通常、ソフトウェアは関数やクラスなどを呼び出しつつ、目的の処理を行います。
タスク管理やメモリ管理などOSの持つ機能を利用する場合には、このシステムコールを利用します。 |
|
|
Q36 |
APIって何ですか。 |
|
A36 |
APIは、Application Programming Interfaceであり、アプリケーションからある機能を呼び出すためのインタフェースです。
汎用OSやミドルウェア、ライブラリなどを含めたプラットフォームがコンピュータ上に提供されている場合、アプリケーション開発者はプラットフォームが提供する機能を、定義されたAPIに基づいて使用することで、少ない労力で目的の機能を実現可能となります。 |
|
|
Q37 |
アプリケーションって何ですか。 |
|
A37 |
特定の目的を達成するソフトウェアであり、OSのようにコンピュータの基本機能を提供するものではありません。汎用コンピュータ向けでは、ワープロや表計算ソフトウェアが代表的なアプリケーションと言えます。
応用ソフトウェアとも呼ばれるように、コンピュータを応用するためのソフトウェアです。
組込みシステムの場合には、システム自体が汎用的でなく、特定目的のために設計されているため、汎用コンピュータのようにアプリケーションが明確に分離できないケースもあります。 |
|
|
Q38 |
外部割込みって何ですか。 |
|
A38 |
組込みシステムにおけるプロセッサの外部からの割込みを指します。
タイマ割込みなどのプロセッサ周辺でなく、プロセッサが制御するセンサやアクチュエータ、通信デバイスなどの動作に関する割込みを外部割込みといいます。 |
|
|
Q39 |
ORって何ですか。 |
|
A39 |
論理和のことで、基本的な論理演算のひとつです。
0or0⇒0、 0or1⇒1、 1or0⇒1、 1or1⇒1となります。 |
|
|
Q40 |
外部仕様って何ですか。 |
|
A40 |
組込みシステムにおける実装を意識しない仕様であり、要求される機能・性能、実現すべき機能・性能などを指します。
一般的には、製品のカタログやマニュアルなどに記載される仕様です。
組込みシステムの開発においては、この外部仕様を実現するため、内部仕様の設計を進め、ハードウェアやソフトウェアとして製品を実現します。 |
|
|
Q41 |
オーバヘッドって何ですか。 |
|
A41 |
目的の処理を実現する際に、それを実現するために必要不可欠となる処理が存在します。
アプリケーションが処理を行う際には、OSの機能を利用する場合が多くありますが、このOSの処理をオーバヘッドとして考えておく必要があります。
システムコールを発行し、OSが処理を完了するまでのわずかな時間でも、これを何回も繰り返すことで、多くの処理時間を要していることになります。
組込みシステム開発の際には、これらOSによるオーバヘッドを考慮した設計が求められます。 |
|
|
Q42 |
パソコンのドライバのバージョンは頻繁に変わりますが、テストをしているのですか。 |
|
A42 |
パソコン側のドライバは、パソコンのOSの改版に従って改版したり、USBなど通信経路の高速化によって改版するなどの必要があります。このために、ある版でテストを十分に行っても、OSやハードの環境に対応する必要性から、機器側よりも頻繁に改版をすることになります。 |
|
|
Q43 |
複数のプリンタデバイスドライバが1つのパソコンにインストールされたら対応がつくのですか。 |
|
A43 |
プリンタとデバイスドライバの対応をつけるためのIDはOSが保持、管理しているので複数のドライバを同時に保持することができます。 |
|
|
Q44 |
割込みとイベントの違いは、どこにあるのですか。 |
|
A44 |
一般的に割込みは、ハードウェアの信号名称やコンピュータアーキテクチャの機構名として利用されています。
イベントはソフトウェアの設計に多用される言葉で、何らかの出来事を指します。
イベントには、事象という和訳も使われます。このため、ハードウェア的な動作表現として組込みシステムが外部の状況と連動して動作する場合には、「割込みが発生したので応答プログラムが対処した」という言い方をし、ソフトウェア的な動作表現としては、「イベントに対して応答プログラムが対処した」という言い方をします。 |
|
|
Q45 |
レート型のドライバであっても周期が早ければイベント型の動作ができますか。 |
|
A45 |
できます。しかし、イベント型の応答が必要なときに、それに見合うものをレート型ドライバで実現するとなると、イベント型で必要なプロセッサよりも格段に高速なものが必要となります。よって試作などのケースを除けば、経済性からイベント型をレート型で代用することはまれです。 |
|
|
Q46 |
タスク部とハンドラ部は、常に分離するものなのですか。 |
|
A46 |
小規模な組込みリアルタイムシステムでは、分離しないケースが多々あります。このような場合には、ドライバという呼び方よりも割込み処理ルーチンと呼ぶ場合が多いです。また、RTOSであっても、ドライバを完全に独立させず、優先度の高いタスクの一部として設計してしまうケースもありますので、ここで示した構造は典型例であると思ってください。 |
|
|
Q47 |
ビルドテストは、ソフトウェアの何をビルドしたテストですか。 |
|
A47 |
テスト技法の名称の多くは、パソコンやネットワークが発展した以前から使われています。
今日でいうビルドとは、大型コンピュータの時代と同じ名称ですが、少しニュアンスが異なっています。
組込みソフトウェアの場合では、ビルドテストは、システムを構成するサブシステムを1つの単位としてテストするものです。自動車をシステムと捉えた場合に、ブレーキサブシステムのテストなどは、ビルドテストといえます。 |
|
|
Q48 |
構成管理とデグレードの関係のような間接的な検証は、他にもあるのですか。 |
|
A48 |
ソースコードの複雑性やモジュールサイズとバグ混入率については、相関が高いといわれています。ただし、食品の品質検査のような絶対値でブドウ球菌がいくつ以下ならば合格といった指標にはなっていません。そのために、現状は各ソフトウェア開発部門が自らデータを取って品質管理に利用している状況です。 |
|
|
Q49 |
どんなに通信経路を多重化しても、それをまとめる回路やソフトは1つだから解決にはならないと思いますが、実態はどうなのですか。 |
|
A49 |
通信、論理回路など個々のシステムコンポーネントには、ソフトとハードを統合した結果の信頼度があります。この信頼度と環境悪化の頻度の積が事故の発現確率となります。
通信経路を多重化すると、全ての経路が異常を起こすというきわめて起こりにくい事態でのみ通信の途絶が発生します。つまり、多重化によって事故の発現確率が小さくなりますから多重化は、事故を防ぐために有効です。 |
|
|
Q50 |
ヒューマンスキルに依存しないプログラム開発はできないのでしょうか。 |
|
A50 |
航空機は、離陸から着陸まで完全に自動化が可能になりつつあります。これと同じように、今後プログラミングにおいても多くの技術的な作業が自動化されてゆくでしょう。
しかし、プログラミングに必要な発想をするという能力は技術ではない人間固有のヒューマンスキルです。これなしでは新しいプログラムは作れません。 |
|
|
Q51 |
十分なテスト設計を行うにはどうすればよいのですか。
|
|
A51 |
テスト設計の十分性は、論理的、かつ現実的な時間内で知ることはできないものです。このため、アプリケーション設計にあたってはテスト量が最小になるようにモジュール分割に配慮して設計します。
また、詳細のテスト設計に先立って、テスト設計戦略を立ててシステム全体におけるテストのカバレッジと深さが最適になるようにします。 |
|
|
|