小型組み込み機器向けLinux ──MMUを持たないマイクロプロセッサで動作するしくみ

Michael Durrant, Michael Leslie

tag: 組み込み 半導体

技術解説 2001年8月20日

uClinuxとは――一般的なLinuxとの違い

 uClinuxと通常のLinuxの根本的な違いは,MMUをサポートしていないことです.しかし,カーネルとユーザ空間に及ぶ影響はわずかです.

 MMUがない環境での開発課題を熟知している組み込みシステム開発者はともかく,一般的なLinux開発者の場合,uClinuxを使用すると多少の違いに気づきます.LinuxとuClinuxの違いは,メモリ・プロテクションと仮想メモリ・モデルをサポートしていないことです.これらはuClinuxからMMUサポートを除いた結果といえます.カーネルやユーザ・アプリケーションの開発に携わる設計者にとっては重大な違いであり,カーネルへの特定のシステム・コールにも影響を及ぼします.

●メモリ・プロテクション

 メモリ・プロテクション機能を持たないことに起因する問題として,特権のあるプロセスでなくてもエラーを引き起こす原因となったり,潜在的に障害が発生する可能性が残ったり,最悪の場合,ポインタへの不正な参照によってシステムのシャットダウンを招くといったことが挙げられます.システムそのものに関連するこうしたコードについては,安定性とセキュリティを確保するための,念入りなプログラミングとテストが必要になります.

●仮想メモリ

 仮想メモリなしでLinuxを走らせる場合,大きく三つの課題があります.

 まず最初に,カーネルでロードされたプロセスは,メモリ内で独立して実行されなければなりません.これを実現するためには,いったんRAMにロードされた時点でプログラム内のアドレス参照を固定するか,もしくは相対アドレッシング(ポジション独立コードを参照する)によるコードを生成しなければなりません.uClinuxは,上記のどちらの方法もサポートしています.

 次に,フラットなメモリ・モデル内で起こるメモリの割り当てと開放の問題があります.動的なメモリ割り当てを行うと,システムに不完全なリソースを残すフラグメンテーションを発生しやすくなります.動的なメモリ割り当てを行うアプリケーションを安定動作させるためには,malloc()コールを前もって割り当てたバッファ・プールからのリクエストに置き換える必要があります.

 uClinuxでは仮想メモリが使われておらず,再びRAM内の同じ場所にロードされる保証がないため,実メモリのスワッピング・ページ・インおよびページ・アウトの機能は実装されていません.しかし組み込みシステムでは,実質的に使用可能なサイズを超えるRAMを使用してアプリケーションをサスペンドすることはほぼありえないので,問題にはならないでしょう.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日