読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます。新機能の詳細をご覧ください。
GoogleはIoTとモバイルデバイスを対象とした新しいオペレーティングシステムであるFuchsiaに関する公式の本を出版している。FuchsiaはZirconと呼ばれる新しいマイクロカーネルをベースとしている。
C++で書かれたZirconはユーザスペースサービス、ドライバ、ライブラリのセットを加えたマイクロカーネルで構成されている。ライブラリは、システムブート、プロセス起動、その他の一般的なカーネルタスクを処理するために必要なものである。Zirconのシステムコールは、wait_one
、wait_many
、port_wait
、sleep
を除いて、基本的には非ブロッキングである。LinuxまたはmacOSシステムでZirconを構築し、ブート可能なbootfs
イメージを作成することができる。ZirconはもともとLKのブランチであった。LKは、FreeRTOSやThreadXの代替として無償で使用できる組み込みシステム向けに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
- Editor Review
- Chief Editor Action