BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Google Fuchsiaの新しいマイクロカーネルであるZirconの概観

Google Fuchsiaの新しいマイクロカーネルであるZirconの概観

原文(投稿日:2018/04/15)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

GoogleはIoTとモバイルデバイスを対象とした新しいオペレーティングシステムであるFuchsiaに関する公式の本を出版している。FuchsiaはZirconと呼ばれる新しいマイクロカーネルをベースとしている。

C++で書かれたZirconはユーザスペースサービス、ドライバ、ライブラリのセットを加えたマイクロカーネルで構成されている。ライブラリは、システムブート、プロセス起動、その他の一般的なカーネルタスクを処理するために必要なものである。Zirconのシステムコールは、wait_onewait_manyport_waitsleepを除いて、基本的には非ブロッキングである。LinuxまたはmacOSシステムでZirconを構築し、ブート可能なbootfsイメージを作成することができる。ZirconはもともとLKのブランチであった。LKは、FreeRTOSThreadXの代替として無償で使用できる組み込みシステム向けにGoogleで開発されたZirconとは別のカーネルである。しかし、Zirconの動作要件は、多くのRAMと高速プロセッサを搭載した最新のデバイス上で動作するように設計されているLKに比べて厳しくない。

Zirconは、プロセッサ時間、メモリ、I/O、割り込み、シグナリング、待機の各リソースを管理する。リソースはハンドルを通してユーザーランドから使用される。ハンドルにはリソースに関連付けられた権限があり、それによって複製、転送、読み取り、書き込み、実行などのアクションを実行する権限が提供される。Zirconのドライバは、プロセスにロードされるELFライブラリとして実装される。デバイスマネージャプロセスであるdevmgrは、ドライバとデバイスを追跡し、ドライバの検出を管理し、デバイスへのアクセスを管理する。デバイスは、PCIプロトコルUSBプロトコルなどのC ABIを使用してプロトコルを実装することができる。

ZirconはUnixスタイルのシグナルをサポートしておらず、直接実装する方法もない。代わりにハンドルの待機をサポートし、それは、書き込み待ち、実行待ち、停止待ちなどの様々な異なるシグナル状態を持つ。同様に、ZirconはUnixのようなforkまたはexecを持っていないが、launchpad libraryを使用してプロセスを作成する。以下が、launchpadを使用してプロセスを作成する方法である。

   launchpad_t* lp;
   launchpad_create(job, "processname", &lp);
   launchpad_load_from_file(lp, argv[0]);
   launchpad_set_args(lp, argc, argv);
   launchpad_set_environ(lp, env);
//   << other launchpad_*() calls to setup initial fds, handles, etc >>
   zx_handle_t proc;
   const char* errmsg;
   zx_status_t status = launchpad_go(lp, &proc, &errmsg);
   if (status < 0)
       printf("launchpad failed: %s: %d\n", errmsg, status);

全貌を得るには、すべての文書を必ず読んでください。Zirconはまだ膨大な開発の下にあり、Googleは現時点で積極的に寄付を求めていない。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT