II-27-4. 性能に対する制約とトレードオフの考慮

コスト面からの制約や拡張性の問題など、求められる性能に対して課される組み込みシステムの制約について説明する。さらに性能と制約のトレードオフを勘案してシステムを設計した具体的な例として、MMUを持たないMPUに対応したLinuxの実装例を紹介する。

【学習の要点】

* 性能要件を定義する際には、ソフトウェアとハードウェアの制約や拡張性を考慮しなくてはならない。

* 制約としては、開発費、材料費、開発期間といったコストが、拡張性としては、ハードウェアの耐用年数、CPU・メモリ、筐体サイズなどが挙げられる。

* トレードオフを勘案する例として、uCLinux があり、uCLinuxではMMUを持たないMPUに対応する仕組みが与えられている。

図II-27-4. 性能要件定義におけるトレードオフの検討

【解説】

1) システムとしての制約条件

* コスト面からの検討として、以下の項目が挙げられる。

- 量産価格

- 部品の流用とのトレードオフ

- 材料費用

* 拡張性からの検討として、以下の項目が挙げられる。

- ハードウェア耐用年数とのトレードオフ

- MPU、メモリ等の拡張性

- 筐体サイズとのトレードオフ

2) トレードオフを考慮した例(uClinux)

* uClinux (http://uclinux.org/)はローエンドの組み込み機器など、メモリ管理ユニット(MMU)の無い組み込み環境でLinuxの利点を生かす目的で開発された。

- 1998年にPalm Pilot向けに開発されて以降、OSSとしてARM, MIPS, SPARC, Hitachi SH, Motorolla coldfireなどの環境に移植されている。

- 多数のデバイス、ファイルシステム、ネットワークプロトコルをサポートしている。

- 組み込みLinuxで最初に商業的に成功したディストリビューションと言われており、オープンソースコミュニティによる開発が継続されている。

* 通常のLinuxとuClinuxとの違いは、メモリ保護機構と仮想メモリ機構の有無である。ハードの制約を満たすために、ソフトウェア開発の負担が生じる。

- メモリ保護機構が無いため、特権プロセスでないプロセスでも意図しないメモリ領域の書き換えを起こす危険性がある。そのため、ポインタなどの扱いに注意したセキュアなプログラミングを心がけ、十分にテストをする必要がある。

- 仮想メモリ機構が無いため、カーネル部分を含めたすべてのプロセスが同じメモリ空間を使う。そのため一つのプロセスの暴走がシステム暴走につながる。また、動的なメモリ割り当ての結果、フラグメンテーションが生じやすくなってしまう。

* 通常のLinuxのコードをuClinuxに移植する際には、メモリ処理コードの更新が必要となる。

- Linuxのシステムコールのforkは、呼び出し元プロセスを複製して新しいプロセスを生成する。ネットワークサービスのデーモンプログラムなどではforkを多用している。

- uClinuxではMMUをサポートしていないため、プロセスの複製を確実に行えず、そのためfork命令も用意されていない。代わりにvfork命令が用意され、呼び出し元プロセスと新しいプロセスと双方で同じメモリ空間を利用する。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。