ソフトでもハードでもノンリアルタイムでもOKなRTOS環境「SHaRK」リアルタイムOS列伝(55)(3/3 ページ)

» 2025年02月03日 08時00分 公開
[大原雄介MONOist]
前のページへ 1|2|3       

POSIXに慣れたプログラマーなら簡単にとっつきやすい

 カーネル類のAPIはPOSIX 1003.13のPSE52準拠とされている。POSIX 1003.13の場合、以下の4つのプロファイルが定義されている。

  • PSE51:最小構成。File SystemやMemory Protectionはなく、Mono-Process/Multi-Thread Kernelを提供
  • PSE52:PSE51+File System+Asynchronous I/O
  • PSE53:PSE51+Process Support+Memory Protection
  • PSE54:PSE53+File System+Asynchronous I/O

 これらの中ではPSE54がいわば全部入りである。SHaRKはPSE52なのでMemory Protectionのサポートがない。ただし、OSLib上で動くというSHaRKの構成を考えると、要するにSHaRKのプロセスそのものがホストOSのメモリ保護の管理下にあるという見方もできる。この辺はMPUなりMMUなりを操作しないと本来は管理できない部分であり、そこは妥協したというか、そこまでの作り込みは諦めたもようだ。

 もっとも、POSIX 1003.13のPSE52に完全準拠か? というとそうでもなく、「90%ほどをサポート」としており、具体的には以下のようになっている。

  • Standard C Libraryをサポート
  • File Systemをサポート
  • pthread libraryをサポート
  • Asynchronous I/Oは未サポート
  • Localeおよびsetjmpは未サポート

 まぁ、Localeやsetjmpは致し方ない気がする。

 実際に、デモの中にあるHello, worldのコードはリスト1のようになっている。

#include "kernel/kern.h"
int main(int argc, char **argv)
{
  cprintf("Hello, world!\n");
  return 0;
}
リスト1 「SHaRK」のHello, worldのコード

 非常にシンプルというか、POSIXに慣れたプログラマーなら簡単にとっつきやすいことが分かる。

 大学と研究所で開発されたものだけに、ライセンスはGPL v2での提供となっている。そんなわけで無償で利用可能だが、商用に使おうとするとGPLに従う必要があるので、ちょっと使いにくいのは事実。もっともこれを商用で使おう、というユーザーはあまりいない気もするが。

 最新バージョンは2007年11月にリリースされたVersion 1.5.4となっている。ロードマップそのものは2008年6月に更新されており、色々目標が書かれているが、今のところこれが実現されそうな目途は立っていない。プロジェクトは引き続きButtazzo氏が率いているようだが、同氏も忙しいのかもしれない。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.