国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Fuchsia入門-簡介和代碼介紹

yzcdx ? 來源:OS與AUTOSAR研究 ? 作者:OS與AUTOSAR研究 ? 2022-11-28 10:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Fuchsia操作系統號稱谷歌的“三兒子”,前兩個是Android和Chrome OS。Android和Chrome OS的內核都是Linux,不同的是Chrome OS是針對PC的,核心功能基于Chrome瀏覽器,一切都在瀏覽器中使用,數據都在云上,更適合上網筆記本的使用,一個大的弊端是沒有桌面程序,這還怎么用?Android大家都知道針對的是移動設備,最常見的手機就是。但是安卓有很多技術弊端,例如內存碎片化、安全性、HAL層雞肋、對硬件渲染支持等缺點,后續會進行說明。所以需要一個新的OS。

7424aa74-6eb3-11ed-8abf-dac502259ad0.png

隨著各種設備例如手機、平板、PC、物聯網設備等各種智能設備的普及,谷歌就想做一個統一的OS,而且要脫離Linux的魔爪,在2016年 8 Fuchsia正式推出,Fuchsia的說明是“Pink(粉紅)+Purple(紫色)=Fuchsia。它不再基于 Linux 內核,而是基于名為Zircon的微內核,并且是一個開源的實時操作系統,并使用Dart和Flutter打造全新的 UI。這下可炸鍋了,大家一看谷歌還能這么玩,各個頭部公司就紛紛入局。

更多了解參考Fuchsia中文社區:https://fuchsia-china.com/

鴻蒙 Harmony OS與Fuchsia OS

Fuchsia在2016年就開始起步了,但是幾年沒有一個對外的版本,華為的HarmoneyOS雖然在2019 年8 月華為開發者大會正式發布,但是進展神速。在手機還有各種家用電器物聯網領域HarmoneyOS的裝機量據說明年就要突破10億臺了。谷歌可以說“起了個大早,趕了個晚集”,一方面有自家的安卓,改革的動力不足。另一方面是不是因為“互聯網基因”,但是安卓系統都也維護的好好的,技術應該也沒問題,底層技術應該也很有功底,也可能是“目標太宏大,什么都想支持”所以有點難產,換句話說就是先進的思想太多了,啥都想要,最后非常多的代碼搞的沉重難行。

不得不說Fuchsia真是個好東西,里面有很多先進的技術值得去分析和學習,但是谷歌就這么開源了,可能就是現在的新玩法:不怕別人抄,重要的獲得市場,讓更多的設備用起來,相對于競爭者,更多的是愿意不付錢合作的客戶。只要領先,別人會一直在追趕但是超越不了,真是這么霸氣?;叵胂庐斈臧沧亢腿嗟亩窢幘褪且粋€活生生的例子,攪局者也許真能獲得勝利。

2020 年谷歌再次推動宣傳,Fuchsia開始二次發育,希望通過平臺開放為其吸引更多軟件開發支持者。2021 年初,先是項目的 F1 分支,之后又有 F3 分支,隨著一個個重要代碼開發步驟的落地,Fuchsia 的面貌及發展方向也開始愈發清晰。具體其官網文檔介紹網址:

雖然華為目前鴻蒙的裝機量和技術發展的很好,但是谷歌老大的地位還是不可撼動,搖旗一呼,小弟們就乖乖的歸位了,目前三星、索尼、聯發科、小米、華為、OPPO、ViVo、高通等公司已經在參與Fuchsia 項目。眾所周知,華為的風格一向比較霸道,動不動就世界第一,遙遙領先,愿意合作的商家比較少,怕被搶了飯碗。但是國家還是力挺華為,鹿死誰手,還是將來見分曉,至少:

華為現在有跟谷歌剛的資格了。

2. 揮淚拋棄Linux

Linux一直是開源軟件的領頭羊,但是我們的世界還是由商業組成的,沒有利益就沒有動力啊。Linux內核是基于GPL協議的,GPL協議意味著對源碼的任何修改與引用都必須開源,Android底層采用的Linux 內核,所以Android是開源的,而硬件廠商給Android開發的驅動是不可能開源的.

當初Google為了解決這個問題,找到了一個解決辦法,底層Linux內核做了修改,但是把驅動程序放在了Linux內核上層跑,而且特意搞了一個隔離層叫HAL,即Hardware Abstraction Layer,硬件抽象層,所以,Android 系統架構中的HAL層本質是為了規避 GPL 協議而生的,這事在當時還蠻有爭議的,但是不得不說,Google 的這種思路徹底解決了問題,既保護了「不想開源」的硬件廠商的利益,又解決了「軟硬件兼容」,既利用出色而現成的 Linux Kernel 又防止了被 Linux Kernel 傳染上GPL 后遺癥。

單一的開源協議還是生命力不那么旺盛,Fuchsia就采用了綜合的開源協議(包括BSD、 MIT 和 Apache許可證) ,任何人都可以在 Google 的公共 Git 倉庫中查看和下載。所有的代碼模塊化,其他廠商想開源就開源,隨意集成,不用擔心很多法律問題,特別是進行代碼修改后的OTA相關操作。

3.Zircon微內核歷史

74de4fce-6eb3-11ed-8abf-dac502259ad0.png

Fuchsia早期是一個研究型的項目,感覺這點跟國內的不太一樣,應該是外國有錢的公司會搞一個研究所,招一些高學歷、行業內厲害的人物,隨意發揮的搞研究,偶爾會有能商用的東西就可以了,想想真是下血本搞創新啊。國內的大公司目前也開始這么搞了,可以說是暫時養了一堆高薪水的閑人,給他們自由,來搞研究,甚至能發論文就是成果。牛人就喜歡這類工作,不是做產品,出版本,上線設備維護,處理客戶需求等低級勞動。

下面介紹一個牛人TravisGeiselbrecht,其個人主頁:http://tkgeisel.com/

網頁翻譯后,如下:

74fd3fe2-6eb3-11ed-8abf-dac502259ad0.png

感覺這也是一個老外的傳統,我見過一些教授會把自己的研究成果,學習工作經歷,甚至旅游或者生活的照片都放到個人主頁上,然后就是個人愛好,真是彰顯的個性十足,估計以后死了別人看這些資料也能了解他的一生。

Little Kernel是Travis Geiselbrecht 寫的一個針對 ARM嵌入式開源操作系統,https://github.com/littlekernel/lk 。另外他還搞過IOS等其他OS。

然后介紹另外一個牛人Brian Swetland,他是安卓初創團體的成員,谷歌另外一個項目Magenta是從 LK 出發,提供多進程、安全空間等支持的,針對大型機(有很多 RAM,接口豐富)的內核。然后, LK for embedded + Magenta 就算是 Fuchisa OS 系統了。

4.Fuchsia與VR/AR技術領域

對于Android和Chrome OS的技術短板,Fuchsia當然是重點發力的地方,有兩個新的點就是硬實時和基于物理硬件的渲染,結合起來有一個很適合的領域就是VR/AR,Facebook都開始發力元宇宙了,大家可以看一個電影《頭號玩家》里面對虛擬現實的描述還是有那么會事??梢姽雀柘碌氖且槐P大棋。

5.多語言應用支持和模塊化

7548c25a-6eb3-11ed-8abf-dac502259ad0.png

在編碼領域,為一種新的語言,某個應用要“重復造輪子”幾乎是不可能的,例如用java寫了一個應用,再用C++寫一遍,基本很難。目前市場上的安卓程序員用java做的安卓應用還需要在IPone上用object-c再寫一遍,還要在網頁上再實現一遍,還要在小程序上再實現一遍,真是要了老命了。這個角度新的OS都是在搶應用,就是要支撐各種語言平臺的應用都可以在自己的OS上運行,來增強自己的生命力。Fuchsia已經超越平臺的角度,站在了語言的角度來支撐應用了。

原生前端應用程序是在Dart/Flutter中開發的,這將極大地促進從Android平臺到Fuchsia的遷移。同時支撐C,C++,Rust,Go和Dart等語言程序的應用。

Fuchsia,被設計成一個完全模塊化的系統,允許其庫和應用程序完全刪除,更新和添加,而不會影響系統。除了確保系統完整性之外,這還使其更加安全,例如可以使用簡單的軟件包輕松獲得安全補丁更新,而不會影響用戶數據或其他應用程序。

個語言優缺點詳細參考:

https://blog.csdn.net/weixin_39658118/article/details/104530466?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EESLANDING%7Edefault-8-104530466-blog-84035260.pc_relevant_landingrelevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EESLANDING%7Edefault-8-104530466-blog-84035260.pc_relevant_landingrelevant&utm_relevant_index=9

6.架構介紹

756ac864-6eb3-11ed-8abf-dac502259ad0.png

本部分參考官網文檔:

https://fuchsia.dev/fuchsia-src/get-started/sdk/learn/intro?hl=en

最小特權原則:

該系統的核心是Zircon,用于處理系統啟動和引導的內核和庫集合。所有其他系統組件都在用戶空間中實現并相互隔離,強化了最小特權原則。這包括:設備驅動程序、文件系統、網絡堆棧。

簡而言之,這要求在操作系統環境的抽象層中,每個模塊(例如進程,用戶或應用程序)只能訪問其執行所需的信息和資源。

模塊化/包容性和可升級:

模塊化意味著系統與語言無關。由于它被設計為可擴展的,并允許集成用多種語言和運行時編寫的軟件,因此您可以使用C,C++,Rust,Go,Python或Dart /Flutter進行開發。

可升級意味著Fuchsia軟件包被設計為獨立更新,甚至是即時交付,或Enphemery,這意味著軟件包被設計為解耦,因此根據需要從設備隨意添加刪除更新,并且系統始終保持最新狀態。

內核:

系統核心是Zircon,它是具有一組庫的內核,用于管理系統的啟動和引導。內核之外的所有系統組件都是在所謂的用戶空間中實現的,并且與系統的關鍵層完全隔離 - 正如我們已經在這里討論的那樣,加強了最小特權的原則 - 所以即使是設備驅動程序也在用戶空間中隔離。

Zircon帶來了我們通過微內核了解的架構和許多概念。這種架構使Fuchsia能夠盡可能地減少信任代碼的數量,從而限制內存管理,調度和IPC(進程間通信)。

75932b88-6eb3-11ed-8abf-dac502259ad0.png

因此,我們遇到了一個可能的問題:如果系統的整個核心與用戶空間隔離,我們如何開發需要信息甚至與系統“對話”的應用程序?

我們的代碼執行交互,例如:手動內存管理,系統任務或進程,IPC,設備I / O等;我們可以使用系統調用。這些執行系統調用的進程由VDSO(虛擬動態共享對象 — libzircon.so)庫執行,該庫讀取生成的內核映像,而不是直接讀取內核中的文件。

用戶空間進程通過訪問系統調用libzircon.so- 一個虛擬動態共享對象(vDSO)。Zircon vDSO 是一個ELF格式的共享庫,內核將其映射到每個新進程的地址空間。這個庫被認為是“虛擬的”,因為它直接由內核映像公開,而不是從文件加載。

Zircon 公開了三個用于運行代碼的主要內核對象:

線程:給定地址空間內的執行線程。

進程:在私有、隔離的地址空間中運行的一組可執行指令。

作業:一組相關的流程和作業。所有作業形成一個單根樹。

流程構成了系統功能的基礎。每個進程都通過它持有的各種句柄被授予一組能力。

Fuchsia 軟件可能會也可能不會在單個進程的范圍內運行。作業允許將由多個進程組成的“應用程序”作為單個實體進行控制。

75ab634c-6eb3-11ed-8abf-dac502259ad0.png

進程間通信:

Zircon通道是Fuchsia接口定義語言(FIDL)描述的服務級IPC 協議的基礎 . FIDL協議是Fuchsia 程序使用的主要IPC方法。

Zircon 包含以下用于進程間通信 (IPC) 的內核對象類型:Event、Socket、Stream、Channel、FIFO,在這些對象中,通道特別適合協助啟動新進程,因為它們能夠將句柄(以及功能)轉移到另一個進程。

通道恰好有兩個端點句柄,每個句柄都由一個單獨的進程擁有。只有所有者可以讀取或寫入消息,但端點的所有權可以從一個進程轉移到另一個進程。當句柄寫入通道時,它們將從發送進程中刪除。當從通道中讀取帶有句柄的消息時,會將句柄添加到接收進程。

75c78194-6eb3-11ed-8abf-dac502259ad0.png

這里跟seL4很像,基于能力權限的通信,也是最小化權限原則的體現,就是把需要的權限都定義出來,不大片的賦予權限。

組件管理器:

組件框架的核心是組件管理器。它負責協調所有組件實例的執行,為它們提供功能,并在組件之間建立中介連接。

組件可以顯式啟動(例如,從 URL)或從對特定功能的請求中隱式啟動。組件管理器執行必要的決議以確定是啟動新組件還是將請求路由到現有實例。為了進行這種路由,每個組件都必須聲明它提供給系統的任何功能以及它使用的任何功能。組件通過capabilities獲得訪問更廣泛系統的各個部分的權限。

組件的組織:

75e8103a-6eb3-11ed-8abf-dac502259ad0.png

7. 代碼下載編譯運行

參考官網說明:

https://fuchsia.dev/fuchsia-src/development?hl=en

官網說的很詳細,這里不展開說明了,需要了自己查看。

直接查看源代碼的網址:

https://cs.opensource.google/fuchsia/fuchsia

下載的代碼目錄:

75fca5cc-6eb3-11ed-8abf-dac502259ad0.png

zircon: 操作系統內核主體代碼,bootloader, 內核的進程,內存管理,內核對象,arch相關代碼; 以及運行在用戶態的系統核心進程,系統調用和library都在這里

garnet: 基礎軟件層的主體代碼,主要是屬于garnet層的bin文件代碼,

topaz:應用層,最關鍵的是dart,flutter的runtime

src:操作系統的基礎代碼模塊,應該來說很多屬于garnet層,這里有camera,網絡connectivity,graphics,media,security, storage

build基本上是gni文件,構建需要的

sdk構建sdk/ddk所需要的配置和腳本

boards全部是gni文件,和板子相關的編譯配置

tools本地pc機上運行的工具,比如fidl的工具

third_party從外部引入的庫,比如flatbuffers,go,dart,ssl,iperf,libpng,protobuf等等

examples一些c/c++/rust/go的是示例代碼,可以學習在fuchsia上怎么開發

bootloader:Gigaboot引導加載程序。Gigaboot引導加載程序是一個針對Zircon的UEFI引導加載程序,可以通過鏈接從iPXE、UEFI可訪問的文件系統或本地磁盤分區加載圖像。

kernel內核主體部分,進程調度,內存管理 內核對象object等

system運行在用戶態的核心系統進程,bootsvc,devmgr,svchost等,這個后面細細的品;一些基礎的library ulib和基礎的工具uapp

vdso偏底層的系統調用相關的fidl文件

在vituralbox的ubuntu上運行:fx qemu -N

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 操作系統
    +關注

    關注

    37

    文章

    7402

    瀏覽量

    129313
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

    73973
  • 智能設備
    +關注

    關注

    5

    文章

    1159

    瀏覽量

    53435

原文標題:Fuchsia入門-簡介和代碼介紹

文章出處:【微信號:OS與AUTOSAR研究,微信公眾號:OS與AUTOSAR研究】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【瑞薩RA6E2地奇星開發板試用】介紹、環境搭建、工程測試

    【瑞薩RA6E2地奇星開發板試用】介紹、環境搭建、工程測試 本文介紹了瑞薩 RA6E2 地奇星開發板的基本信息,包括產品特點、參數資源、開發環境搭建以及工程測試等。 介紹 RA6E2 地奇星是一款
    發表于 12-07 15:27

    GPIOB模擬spi的方法及lcd屏幕的接入

    越高,數據傳輸速率越快。由于spi接口較為簡單,同時《RISC-V架構與嵌入式開發快速入門》書中也詳細介紹過,在此原理部分介紹從略。 二、spi接口及lcd主要代碼實現 lcd所需
    發表于 10-30 07:59

    國密系列算法簡介及SM4算法原理介紹

    一、 國密系列算法簡介 國家商用密碼算法(簡稱國密/商密算法),是由我國國家密碼管理局制定并公布的密碼算法標準。其分類1所示: 圖1 國家商用密碼算法分類 就各種商用密碼的用途而言,如下
    發表于 10-24 08:25

    labview入門手冊

    電子發燒友網站提供《labview入門手冊.pdf》資料免費下載
    發表于 09-23 17:15 ?2次下載

    Perforce JRebel 簡介:即時加載代碼變更,加速Java應用開發

    Perforce JRebel 專為Java開發提速而生!支持跳過構建與重新部署,實時加載代碼變更,支持100+框架,無縫集成主流IDE與應用服務器。
    的頭像 發表于 08-14 14:35 ?759次閱讀
    Perforce JRebel <b class='flag-5'>簡介</b>:即時加載<b class='flag-5'>代碼</b>變更,加速Java應用開發

    CAN入門應用手冊

    電子發燒友網站提供《CAN入門應用手冊 .pdf》資料免費下載
    發表于 07-14 14:45 ?2次下載

    DSP從入門到精通全集

    這是一本循序漸進介紹DSP的書籍,從DSP的入門知識介紹到DPS的硬件,接口,應用,從DSP的ADC/DAC到數字濾波器處理。本文除了對DSP的各種軟硬件知識進行介紹后,還結合實際,接
    發表于 07-12 14:36

    DeepSeek:從入門到精通

    電子發燒友網站提供《DeepSeek:從入門到精通.pdf》資料免費下載
    發表于 05-28 14:12 ?5次下載

    藍牙LE Audio技術簡介和優勢分析

    Energy)技術的優點,同時又具備卓越的音頻性能。本文將從技術簡介和優勢分析兩個方面對藍牙LE Audio技術進行詳細的介紹。 一、藍牙LE Audio技術簡介 藍牙LE Audio技術是藍牙技術聯盟在
    的頭像 發表于 05-21 16:08 ?4584次閱讀

    代碼革命的先鋒:aiXcoder-7B模型介紹

    ? ? 國內開源代碼大模型 4月9日aiXcoder宣布正式開源其7B模型Base版,僅僅過去一個禮拜,aiXcoder-7B在軟件源代碼托管服務平臺GitHub上的Star數已超過2k。同時躋身
    的頭像 發表于 05-20 14:41 ?806次閱讀
    <b class='flag-5'>代碼</b>革命的先鋒:aiXcoder-7B模型<b class='flag-5'>介紹</b>

    典型電路原理、電路識圖從入門到精通等資料

    1、電路識圖從入門到精通高清電子資料 由淺入深地介紹了電路圖的基礎知識、典型單元電路的識圖方法,通過“入門篇”和“精通篇”循序漸進、由淺入深地介紹了電路圖的基礎知識、典型單元電路的識圖
    的頭像 發表于 04-15 15:53 ?2.4w次閱讀
    典型電路原理、電路識圖從<b class='flag-5'>入門</b>到精通等資料

    python入門圣經-高清電子書(建議下載)

    此資料內容是一本針對所有層次的Python 讀者而作的Python 入門電子書。 全書分兩部分:第一部分介紹用Python 編程所必須了解的基本概念,包括matplotlib、NumPy
    發表于 04-10 16:53

    電路識圖從入門到精通高清電子資料

    由淺入深地介紹了電路圖的基礎知識、典型單元電路的識圖方法,通過“入門篇”和“精通篇”循序漸進、由淺入深地介紹了電路圖的基礎知識、典型單元電路的識圖方法,以及典型小家電、電動車、洗衣機、電冰箱、空調器
    發表于 04-10 16:22

    矩陣混音技術快速入門

    A&H矩陣混音技術快速入門Live_Matrix_MixingChinese
    發表于 03-26 14:12 ?0次下載

    深入HarmonyOS NEXT開發中的ArkData操作SQLite數據庫

    大家好,我是 V 哥。今天給大家整理的內容是關于鴻蒙 NEXT 開發中使用 ArkData 操作 SQLite 數據庫的詳細介紹,從入門到精通,包含案例代碼和注釋,幫助小白快速入門到提
    的頭像 發表于 03-07 10:55 ?966次閱讀