Suche senden
Hochladen
Fuchsia概略その1
•
Als ODP, PDF herunterladen
•
2 gefällt mir
•
6,167 views
L
l_b__
Folgen
GoogleのMobileOS Fuchsiaについて、Zircon周りを。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 52
Jetzt herunterladen
Empfohlen
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
Kohei Nakamura
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクル
Masaru Kurahayashi
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
Yoshiki Shibukawa
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Akihiro Suda
IETF111 RATS: Remote Attestation ProcedureS 報告
IETF111 RATS: Remote Attestation ProcedureS 報告
Kuniyasu Suzaki
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
Androidの新ビルドシステム
Androidの新ビルドシステム
l_b__
いまどきの組込みOSの ZephyrRTOSと OpenThreadを Arduino環境で遊んでみる
いまどきの組込みOSの ZephyrRTOSと OpenThreadを Arduino環境で遊んでみる
裕士 常田
Empfohlen
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
Kohei Nakamura
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクル
Masaru Kurahayashi
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
Yoshiki Shibukawa
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Akihiro Suda
IETF111 RATS: Remote Attestation ProcedureS 報告
IETF111 RATS: Remote Attestation ProcedureS 報告
Kuniyasu Suzaki
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
Androidの新ビルドシステム
Androidの新ビルドシステム
l_b__
いまどきの組込みOSの ZephyrRTOSと OpenThreadを Arduino環境で遊んでみる
いまどきの組込みOSの ZephyrRTOSと OpenThreadを Arduino環境で遊んでみる
裕士 常田
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Kenjiro Kubota
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Naruhiko Ogasawara
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Masaaki Kakimoto
Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築
ichikaway
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
Kuniyasu Suzaki
ネイティブコードを語る
ネイティブコードを語る
Kenji Imasaki
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?
Kengo Nakajima
ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議
emasaka
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
DeNA
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
SEGADevTech
Code Golf
Code Golf
Shinichiro Hamaji
Android デバッグ小ネタ
Android デバッグ小ネタ
l_b__
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
Kuniyasu Suzaki
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
Hideki Takase
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
Masataka Kondo
Weitere ähnliche Inhalte
Was ist angesagt?
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Kenjiro Kubota
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Naruhiko Ogasawara
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Masaaki Kakimoto
Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築
ichikaway
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
Kuniyasu Suzaki
ネイティブコードを語る
ネイティブコードを語る
Kenji Imasaki
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?
Kengo Nakajima
ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議
emasaka
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
DeNA
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
Kohei Tokunaga
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
SEGADevTech
Code Golf
Code Golf
Shinichiro Hamaji
Android デバッグ小ネタ
Android デバッグ小ネタ
l_b__
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
Kuniyasu Suzaki
Was ist angesagt?
(20)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
ネイティブコードを語る
ネイティブコードを語る
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?
ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
Code Golf
Code Golf
Android デバッグ小ネタ
Android デバッグ小ネタ
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
Ähnlich wie Fuchsia概略その1
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
Hideki Takase
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
Masataka Kondo
ownCloud のあれこれ July Tech Festa 2016
ownCloud のあれこれ July Tech Festa 2016
Tetsurou Yano
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
dynamis
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
Keep a diary
Keep a diary
幸雄 村上
ソフトウェア工学2023 13 ドキュメンテーション
ソフトウェア工学2023 13 ドキュメンテーション
Toru Tamaki
minneで学ぶクラウド脳
minneで学ぶクラウド脳
Uchio Kondo
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Takayuki Shimizukawa
CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門
KokiMakita1
KEONとPEAKが無くてもFirefox OS開発出来る
KEONとPEAKが無くてもFirefox OS開発出来る
android sola
Windows Azure PHP Tips
Windows Azure PHP Tips
Microsoft Openness Japan
Jap1
Jap1
Naveen N
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
ABC 2012 Spring Robot Summit
ABC 2012 Spring Robot Summit
三七男 山本
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
Lesson01
Lesson01
MRI
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
1MB
1MB
arase_utagoe
BBBBB
BBBBB
arase_utagoe
Ähnlich wie Fuchsia概略その1
(20)
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
ownCloud のあれこれ July Tech Festa 2016
ownCloud のあれこれ July Tech Festa 2016
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Keep a diary
Keep a diary
ソフトウェア工学2023 13 ドキュメンテーション
ソフトウェア工学2023 13 ドキュメンテーション
minneで学ぶクラウド脳
minneで学ぶクラウド脳
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
CAMPHOR- day 2020 - Docker 超入門
CAMPHOR- day 2020 - Docker 超入門
KEONとPEAKが無くてもFirefox OS開発出来る
KEONとPEAKが無くてもFirefox OS開発出来る
Windows Azure PHP Tips
Windows Azure PHP Tips
Jap1
Jap1
Docker Compose 徹底解説
Docker Compose 徹底解説
ABC 2012 Spring Robot Summit
ABC 2012 Spring Robot Summit
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
Lesson01
Lesson01
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
1MB
1MB
BBBBB
BBBBB
Mehr von l_b__
Android,Brillo,ChromeOS
Android,Brillo,ChromeOS
l_b__
ABS2015 のセッション紹介
ABS2015 のセッション紹介
l_b__
Androidのリカバリシステム (Androidのシステムアップデート)
Androidのリカバリシステム (Androidのシステムアップデート)
l_b__
Binderのはじめの一歩とAndroid
Binderのはじめの一歩とAndroid
l_b__
Binderのはじめの一歩
Binderのはじめの一歩
l_b__
Open binder
Open binder
l_b__
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
l_b__
PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達
l_b__
Yapf2013
Yapf2013
l_b__
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
l_b__
Intentの概要
Intentの概要
l_b__
Stagefright入門
Stagefright入門
l_b__
Stagefright入門
Stagefright入門
l_b__
Mehr von l_b__
(13)
Android,Brillo,ChromeOS
Android,Brillo,ChromeOS
ABS2015 のセッション紹介
ABS2015 のセッション紹介
Androidのリカバリシステム (Androidのシステムアップデート)
Androidのリカバリシステム (Androidのシステムアップデート)
Binderのはじめの一歩とAndroid
Binderのはじめの一歩とAndroid
Binderのはじめの一歩
Binderのはじめの一歩
Open binder
Open binder
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達
Yapf2013
Yapf2013
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
Intentの概要
Intentの概要
Stagefright入門
Stagefright入門
Stagefright入門
Stagefright入門
Fuchsia概略その1
1.
Fuchsia 概略その 1 横浜
Android and モバイル OS プラットフォーム部 第 40 回勉強会 2018/4/21 @l_b__
2.
今日の内容 ● 2016 年
8 月に突如公開された Google の OS Fuchsia について概略を簡単に。 ● 内容は https://fuchsia.googlesource.com/docs/+/master/README.md に書かれていることがメインです。 ● 今回はカーネルとその上の OS 基本機能まで で、アプリケーション実行環境はほとんど 触れていません。
3.
自己紹介 ● Twitter ID:@l_b__ ● PF
部の司会進行役 兼 懇親会手配役 兼 配信 係 兼 雑用係 ● フレームワーク周りが好物です ● BeOS 好きだったのと Java-er なので Be 関 係者が多い ( 多かった )Android に惹かれま したので Fuchsia にも。 ● 仕事は某 SIer で Android フレームワーク修正 からアプリ作成までやっていましたがここ
4.
Fuchsia とは
5.
Fuchsia とは ● https://fuchsia.googlesource.com/ に前触れ なしに突如ソース公開された OS
6.
Fuchsia とは ● 一番の特徴として Linux
カーネルを使用して いない OS 。 ● 公開当初は Magenta 、現在は Zircon と呼ば れるマイクロカーネルを使用している。 ● ユーザーランドも新規構築された Linux とも Android とも全く異なるシステム。
7.
Fuchsia とは ● GUI やアプリケーションフレームワークを持 つので、様々な用途に使用できそうだが、 いつ何に使用されるかは明確にされていな い。 –
現状の対応アーキテクチャは x64 と ARM ● 噂レベルでは Android や ChromeOS の置き 換えという話もあるが…
8.
Fuchsia とは ● Web ブラウザ上で動く非オフィシャルな
GUI デモが公開されている。 – https://mgoulao.github.io/fuchsia-web-demo/
9.
ソースの取得とビルド ● https://fuchsia.googlesource.com/docs/+/master/d ● https://fuchsia.googlesource.com/docs/+/master/g ● repo
ライクな jiri を使ってソースを取得 ● fx set x64 or arm64 でターゲット設定 ● fx full-build でビルド ● ビルドツールは Ninja
10.
実行 (QEMU) ● fx run
でソースツリーに含まれる QEMU 上 で実行 – fx run -g でグラフィック有効にして実行とあ るが ...
11.
ディレクトリ構成 $ ls / blob boot
カーネル、デバイスドライバ、システムコマンド data ローカル永続ストレージ dev デバイスツリー install pkgfs svc コンポーネントに提供されるサービス system システム実行ファイル、ライブラリ tmp 一時記憶域 volume ※ 正確な意味は Namespace の項を参照
12.
起動時プロセス
13.
Fuchsia の構成
14.
Fuchsia の Layer ● Fuchsia
は以下の 4Layer で構成される Layer 名 概要 Zircon OS 基盤。カーネルやデバイスマネージャ、デバイスドライ バ、 libc やその他システムライブラリ、 FIDL 、 C/C++ バックエ ンドが含まれる。 Garnet システムサービス。ネットワーク、メディア、グラフィック、 パッケージ管理、アップデートシステムが含まれる。 Peridot マルチデバイスユーザーエクスペリエンスの作成に必要なサービ ス。デバイス、ユーザー、 Story Runner 、 Ledger 、 Resolver が 含まれる。 Topaz Module( カレンダ、 E メール、ターミナル等 ) 、 Agent(E メール / チャットコンテンツプロバイダ等 ) 、 Shell (ベースシェル、ユー ザーシェル)、 Runner ( Web/Dart/Flutter Runner )の 4 つの主 要なソフトウェアカテゴリが含まれる。
15.
Zircon
16.
Zircon とは ● マイクロカーネル (
ソースツリーの zircon/kernel 以下 ) とユーザー空間のシス テムサービス、ドライバ、ライブラリ (zircon/system 以下 ) で構成される OS 基盤
17.
Zircon カーネル ● 元々は Magenta
という名前でリリースされ た。 ● 元になったのは組み込み機器向けの LittleKernel(LK) – https://github.com/littlekernel/lk ● Qualcomm が Android のセカンドブートロー ダーとして採用。 – https://android.googlesource.com/kernel/lk/
18.
LK ● LK を作ったのは Fuchsia
の初期開発者の一 人、 Travis Geiselbrecht 氏。 ● NewOS の作者でもある。 NewOS は BeOS の後継を目指す Haiku OS のカーネルとし て採用されている。 ● 同じく Fuchsia の初期開発者である Brian Swetland 氏と共に、そもそも BeOS のカー ネル開発者の一人。
19.
Zircon カーネルと LK
の違い ● LK は小さな組み込み機器向け、 Zircon は携 帯電話や PC などが対象。 ● Zircon は LK に C++ のラッパーを被せ、 LK には無いプロセスの概念等を追加してい る。 ● LK では全てのコードが信頼される が、 Zircon は Capability-based security が 採用されている。
20.
Zircon カーネルのコンセプト ● Zircon カーネルは様々なカーネルオブジェク トを管理している。 –
Process オブジェクト、 Thread オブジェク ト、仮想メモリオブジェクト、 Channel オ ブジェクト、 Socket オブジェクト etc ● ユーザー空間のコードは、システムコールを 介してカーネルオブジェクトのハンドルを 取得し対話することでカーネル機能を利用 する。
21.
システムコール ● https://fuchsia.googlesource.com/zircon/+/master ● システムコールは仮想ダイナミック共有オブ ジェクト (vDSO)
である libzircon.so によっ て C ELF ABI 関数として提供される。
22.
カーネルオブジェクト カテゴリ オブジェクト 概要 IPC
Channel 双方向のプロセス間通信 Socket 双方向ストリーム型通信 FIFO FIFO キュー
23.
カーネルオブジェクト カテゴリ オブジェクト 概要 Tasks
Process プロセス 一つ以上のスレッドによって実行される命令と リソースの集合 Thread スレッド 時分割共有 CPU 実行コンテキストを表す構造 体 Job プロセスのグループを制御 Task “Runnable”(suspend/resume/kill 可能 ) なカーネ ルオブジェクト。 Process 、 Thread 、 Job は全て Task 。
24.
カーネルオブジェクト カテゴリ オブジェクト 概要 Signaling
Event ユーザーが通知出来るオブジェクト Event Pair 並行プログラミングで使用される、相互に通知 可能な Event のペア Futex Fast Userspace muTEX
25.
カーネルオブジェクト カテゴリ オブジェクト 概要 Memory and address space Virtual
Memory Object 仮想メモリコンテナ Virtual Memory Address Region 仮想メモリアドレス空間の連続領域 Bus Transaction Initiator DMA 機能
26.
カーネルオブジェクト カテゴリ オブジェクト 概要 Waiting
Port シグナリングとメールボックスを表すプリミ ティブ Kernel objects for drivers Interrupts UserMode I/O の割り込み Resource 階層的なリソース権限管理 Log カーネルデバッグログ
27.
Zircon デバイスモデル ● Zircon ではデバイスドライバはユーザー空間 の
DeviceHost(DevHost) プロセスにロード される共有ライブラリ (.so) として実装され る。 ● DeviceManager(devmgr) プロセスがドライバ の発見、デバイスとドライバの追 跡、 DeviceHost プロセス生成・管 理、 DeviceFilesystem の管理を行う。
28.
Zircon デバイスモデル ● 実行されているデバイスツリーは dm
dump コマンドで表示可能 – DeviceFilesystem の /dev/sys 配下に bind され る。 ● posix スタイルの open/close/read/write と ioctl がサポートされる。 – 将来的には Fuchsia's IDL(FIDL) がサポートさ れる予定
29.
libc ● Zircon は Posix
システムコールインター フェースをサポートしないため、 Posix モ デルの C 関数を必ずしもサポートしない。 – 例えば signal/fork/exec はサポートしない ● Fuchsia ではプログラムは自由に自前の libc を使用できる。ただし Fuchsia は各プログ ラムが動的リンクできる libc.so を提供す る。
30.
libc ● Zircon は Posix
システムコールインター フェースをサポートしないため、 Posix モ デルの C 関数を必ずしもサポートしない。 – 例えば signal/fork/exec はサポートしない ● Fuchsia ではプログラムは自由に自前の libc を使用できる。ただし Fuchsia は各プログ ラムが動的リンクできる libc.so を提供す る。
31.
libc ● Fuchsia の libc
は C11 標準を実装している。 ● Fuchsia では Filesystem はユーザー空間に実 装されるため、 libc に File I/O 関数は用意 はされるが呼び出しは必ず失敗す る。 libfdio.so をリンクすることで Channel IPC 経由で File や BSD Socket を使用する 事が可能になる。
32.
libc ● pthread は一部が実装される。コア部分と pthread_mutex_t のような同期プリミティ ブがサポートされる。 ● Signal
はサポートされない。そのため libc は シグナルセーフの概念を持たない。 ● fork と exec はサポートされない。プロセス 生成には代わりに launchpad が使用され る。
33.
libfdio ● fdio はファイル、ソケット、サービス、パイ プなどのリソースに統一されたインター フェースを提供する。 ● read 、
write 、 open 、 close 、 seek などの 関数を定義し、 Channel を使って該当する Filesystem Server や NetworkStack へのア クセスを提供する。
34.
liblaunchpad ● launchpad は新しいプロセスを生成 /
開始す る機能を提供するライブラリ。 ● 詳細ドキュメントはヘッダファイルに記述さ れている。
35.
ユーザー空間の起動シーケンス ● Zircon から Fuchsia
が起動される際には以下 の通りとなる。 – ※ ドキュメントの記述は古い可能性あり ● 1. appmgr – appmgr は環境ツリーをホストし、その環境で プロセスを生成する。 – appmgr は空の root 環境を生成 し、 /system/data/appmgr/initial.config に記 述された最初のアプリケーションを作成す る。 ● ※QEMU 環境上にはこのファイルが存在しない
36.
ユーザー空間の起動シーケンス ● 2. sysmgr –
ブート環境を作成し、ブート環境で複数の初 期アプリケーションを作成する。 – sysmgr が最初にサービスへの要求を受け取る と、 sysmgr は遅れてそのサービスを実装す るアプリケーションを作成し、そのアプリ ケーションに要求をルーティングする。どの アプリケーションがどのサービスを実装して いるか は /system/data/bootstrap/services.config に 記述される。
37.
ユーザー空間の起動シーケンス ● 2. sysmgr –
起動時に実行するアプリケーションのリスト は、 /system/data/bootstrap/apps.config ファ イルに記述される。 ● ※QEMU 環境には /system/data/bootstrap 以下 が存在しない
38.
ユーザー空間の起動シーケンス ● 3. device_runner –
ユーザーログインとユーザー管理のための対 話型フローを設定する。 – システムのルートビューにアクセス し、 Device Shell を起動し、ルートビューに Device Shell を描画する。 – User Provider FIDL API を介して Device Shell に公開されるユーザーデータベースも管理す る。
39.
FIDL ● Fuchsia Interface
Definition Language (FIDL) はプログラムで使用されるプロセス間通信 ( IPC )プロトコルを記述するために使用 される。 – ※AIDL のようなもの ● C/C++/Go/Rust 向けのバインディングが提供 されている。
40.
Namespace ● ファイルアクセスとサービス発見のための機 能。 ● Namespace はコンポーネントに提供される ファイル、ディレクトリ、ソケット、サー ビス、デバイス、およびその他の名前付き オブジェクトの複合階層を指す。
41.
Namespace ● “ls / “
と打つと、シェルの Namespace からア クセス可能なオブジェクトのリストが表示 される。 – Fuchsia には " ルートファイルシステム " は無 い。 ● グローバル "root" 名前空間は無い。各コン ポーネントが独自の root を持っているの で、「 chroot-ed 環境で実行」という概念 が無い。
42.
Namespace ● ファイルへのアクセスを制御するために使用 されるメカニズムを使用して、サービスお よびその他の名前付きオブジェクトへのア クセスをコンポーネントごとに制御するこ とが可能。 ● Namespace 内のアイテムは Object
と呼ばれ る。 – Files,Directories,Sockets,Services,Devices,Ac cessing Objects
43.
Namespace ● オブジェクト名はオブジェクトをコンテナ内 (ディレクトリなど)に配置するための ローカルで一意なラベル – オブジェクト名はオブジェクト自体のプロパ ティではなくサブオブジェクトのコンテナの テーブルのプロパティ
44.
Namespace ● Namespace への参加者 – ファイルシステム ●
ファイルを Namespace で利用できるようにす る。 ● 他の Namespace に属するファイルのようなオ ブジェクトをパブリッシュする単なるコン ポーネント – サービス ● 名前空間を使用して検出できる FIDL インタ フェースの実装を提供するオブジェクト
45.
Namespace – コンポーネント ● ある環境内でインスタンス化さ れ、
Namespace が与えられた実行可能プロ グラムオブジェクト – 環境 ● コンポーネントのコンテナ。コンポーネントが アクセスできるオブジェクトと、名前による サービスの要求が特定の実装にどのようにバ インドされるかを決定する。
46.
BlockDevice ● Fuchsia の BlockDevice
は、他のデバイスド ライバと同様に IPC 経由でアクセス可能な ユーザスペースサービスとして実装されて いる。 ● BlockDevice への読み書き要求は DevHost プ ロセスへ RPC メッセージとして送信さ れ、 DevHost はドライバが理解できる I / O トランザクションに変換する。最終的に BlockDevice ドライバから実際の HW へ送 信される。
47.
ファイルシステム ● Fuchsia のファイルシステムはカーネルでは なくユーザー空間に存在する。 – カーネルはファイル、ディレクトリ、ファイ ルシステムに関する情報を持たない。 ● ファイルシステムへのアクセスは、ファイル システムサーバーとの通信
Channel 上の送 受信メッセージに限られる。 – このプロトコルを実装すれば、仮想ファイル システムとしての機能アクセスが可能。
48.
ファイルシステム ● Fuchsia では Namespace
はクライアント内 に存在する小さなファイルシステムであ る。典型的な " グローバル”ファイルシステ ムの代わりに、 Fuchsia のプロセスには root を表すディレクトリハンドルを提供す ることが可能で、 Namespace の範囲を制 限できる。
49.
ファイルシステム ● 現在のファイルシステムは以下の通り – MemFS :メモリ内ファイルシステム ●
/ tmp のような一時ファイルシステムや /boot に 使用されている。 – MinFS :永続的なファイルシステム ● 単純な従来のファイルシステム。 MemFS とは 異なり、ブロックデバイスへの追加ハンドル が必要。フォーマット用の "mkfs" 、検証用 の "fsck","mount”,"umount” が提供される。
50.
ファイルシステム – Blobfs :不変の完全性検証パッケージ記憶 ファイルシステム ●
Blobfs は、アプリケーションパッケージなどの 「追記型、読み取り専用」の署名付きデータ 用に最適化された単純でフラットなファイル システム。 – ThinFS : Go で書かれた FAT ファイルシステ ム
51.
Ledger ● 各アプリケーション ( 正確には各コンポーネ ント
) に提供される個別のデータストア。 コンポーネントのコンテキストを通して Fuchsia フレームワークによってクライア ントアプリケーションに提供される。 ● 同じユーザーの他のアプリ、同じアプリの他 のユーザーからは非公開。 ● 各データストアはクラウドプロバイダを介し て、そのユーザーのデバイス間で透過的に
52.
以上 ● 次回はグラフィックス周りやアプリケーショ ン実行環境を調べられるといいなと。 ● キーワードとして Story/Module/Agent や Magma/Escher/Scenic
など。
Jetzt herunterladen