検索
連載

カーネルに見るSymbian OSのデザインポリシーSymbian OS開発の勘所(2)(2/3 ページ)

カーネルの構造や仕組みからSymbian OSの特徴に迫る。マイクロカーネル、スレッド、DLLなどから、Symbian OSらしさが見えてくるだろう

PC用表示 関連情報
Share
Tweet
LINE
Hatena

Symbian OSのプロセスとスレッド

 Symbian OSが提供しているユーザープログラムの実行モデルは、以下のような定義になります。


プロセス
ユーザープログラムの実行ごとの資源(メモリなど)管理の単位。プロセス境界を越えてのメモリのアクセスは禁止される。1つ以上のスレッドを持つ、スレッドのコレクションとしても定義できる。

スレッド
CPUを抽象化した実行の単位。スタックを1対1に持つ。いずれかのプロセスに属する。

 ここまでは、Windowsなどのプロセス、スレッドの定義とほぼ同じです(T-Kernelも、T-Kernel/SEでプロセスの概念がサポートされるようになったようです)。プロセス内には複数のスレッドが存在可能で、同一プロセスに属するスレッドは同じ仮想アドレス空間を参照します。

Symbian OSのプロセスとスレッド
図3 Symbian OSのプロセスとスレッド

 Windows(Windows CEを除く)と異なるのはここからです。Symbian OSのスレッドはリアルタイム処理を支援するため、64段階の優先順位をサポートしています。スケジューリングポリシーは優先順位駆動かつプリエンプティブなもので、最も優先順位の高いreadyスレッドが実行されます。ready対象が複数存在した場合はスレッドの属性により、

  • ラウンドロビンによる実行
  • 先発がブロックするまで実行されないFIFOによる実行

のいずれかになります。優先順位がサポートされたことで、Symbian OSでは緊急度の高いイベントを自然に扱うことができます。

 スレッド間の同期を取るための一般的なメカニズムであるセマフォおよびミューテックスなども提供されています。これらについても優先順位を考慮した拡張が行われています。

 このように、スレッドはSymbian OSの実行モデルの基礎となっており、プリエンプティブなマルチタスクが優先順位をサポートしたうえで実現されています。ただし、「スレッドを大量に使うプログラミングスタイルが推奨されているか」というのは別の問題です。この点については連載第5回で詳述したいと思います。

ROMサポート

 ROM(Read Only Memory)という用語は古くから使われていますが、当初あった「いったんシステムが走り始めたら、後は変更不能」というイメージから随分変わってきました。

ROMの分類
図4 ROMの分類

 いったん書き込んだら消せないマスクROM、消去可能ではあるが専用のROMライタを必要とするEEPROMなどと異なり、フラッシュROMはボードに装着したまま内容を消去、書き込みを行うことができます。この利便性と「不揮発である」という性質が相まって、携帯電話のストレージとして広く使われているのはご存じのとおりです。

 Symbian OSでも、このフラッシュROMをファイルシステムの基盤として利用するようにデザインされています。ただし、フラッシュROMといっても実際には以下の2つに大別されます。

名称 特徴 対応ファイルシステム
NOR型 バイト単位で読み出し可能(消去はブロック単位) ログフラッシュファイルシステム(LFFS)(注)
NAND型 ブロック単位でアクセス可能 フラッシュトランスレーションレイヤ(FTL)
表2 各フラッシュROMの特徴/注:書き込みを行わないRead Onlyの部分については、ROM File Systemも用意されます。

 それぞれの性質に合わせて、ファイルサーバは上記表内のファイルシステムを使用します。

XIP

 表2のとおり、NOR型フラッシュはバイト単位での読み出しが可能です。この性質を用いると、プログラムのイメージをRAMにコピーせず、直接実行することができます。このような実行の仕組みを「eXecute In Place(XIP)」と呼びます。ROMベースのシステムでは一般的な技法で、もちろんSymbian OSでもサポートされています。

 フラッシュROMはファイルシステムを経由して使用され、かつフラッシュROMの性質ごとにファイルシステムが異なるというのは先に示したとおりです。また、Symbian OSではRAMの節約という観点から、できるものはXIPで実行するというポリシーを持っています(注)。そのため、あるプログラムがXIPで実行されるか否かは、そのプログラムが格納されるファイルシステムに依存することになります。

※注:
この決定はDLLに意外な影響を与えています。詳しくは次ページにて。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る