- N +

鴻蒙系統底層是linux嗎 鴻蒙os底層架構

大家好,感謝邀請,今天來為大家分享一下鴻蒙系統底層是linux嗎的問題,以及和鴻蒙os底層架構的一些困惑,大家要是還不太明白的話,也沒有關系,因為接下來將為大家分享,希望可以幫助到大家,解決大家的問題,下面就開始吧!

鴻蒙的底層是安卓嗎

不是安卓。

鴻蒙系統內核不是安卓,但是鴻蒙系統目前處于過度階段,為了兼容安卓APP應用,則有采用與安卓一樣的Linux內核。在未來將會去掉linux內核,只保留鴻蒙微內核。

鴻蒙系統的底層架構跟安卓一樣嗎

底層構架不一樣

安卓與鴻蒙手機操作系統基本都是基于Linux開發的,但兩者的構架是不同的:

安卓系統是基于linux的宏內核設計:宏內核包含了操作系統絕大多數的功能和模塊,而且這些功能和模塊都具有最高的權限,只要一個模塊出錯,整個系統就會崩潰,這也是安卓系統容易崩潰的原因。好處就是系統開發難度低

華為“鴻蒙”系統為什么不基于Unix開發

在手機操作系統領域,android基于Linux開發,蘋果IOS基于UNIX開發,那么華為的“鴻蒙”操作系統為什么不能基于UNIX開發呢?下文具體分析一下。

Unix內核

Unix是一個閉源的操作系統,Unix的源代碼需要通過與它的所有者AT&T達成協議才能獲得許可。UNIX系統在學術界發展迅速,產生了很多分支,其中最著名的就是BSD(伯克利軟件發行版),而蘋果的MacOS和IOS均是BSD衍生產品,采用了BSD的內核。

Linux內核

Linux從誕生開始就是開源的自由軟件,任何人都可以免費的使用。集成了Unix的核心設計思想,但是并沒有采用Unix的源碼。所有的Linux組建都是自由和開放的源代碼,任何人都可以創建一個Linux的發行版,比如ubuntu、debian、centos等等。

Unix和Linux的區別

Unix系統是閉源的,屬于商業軟件;Linux是開源的,屬于自由軟件。

Unix系統大多數與硬件配套;Linux可以運行在多種硬件平臺上。

操作系統內核

IOS和MacOS是蘋果的系統,以流暢性著稱,IOS和MacOS均采用了UNIX內核。IOS和MacOS的內核均是UNIX的一個分支(Darwin),基于喬布斯以前創立的NEXT公司開發的操作系統OpenStep(1993年),而OpenStep在衍生于加州大學伯克利分校發布的BSD版本,是UNIX的一種分支。

Android的核心是Linux內核,誕生于2003年,后來在2005年由google收購,主要用以移動設備的操作系統。google收購了android之后,組建了開放手機聯盟,成員來自硬件廠商、電信運營商、互聯網廠商等85家大型企業組成,并且實現了android系統的開源。

華為“鴻蒙”操作系統

根據網上的消息,華為早在2012年就開始布局自研手機操作系統,基于Linux系統,對Linux進行了優化,其部分成果已經應用于華為手機,如下圖所示。

“鴻蒙”為什么不采用UNIX?

從上文可以看出,UNIX系統屬于商業軟件,不開放源代碼,如果使用需要得到相關授權,并且UNIX系統的核心幾乎有美國壟斷。蘋果IOS系統之所以能夠基于UNIX,并且實現了商業的成功,與喬布斯是分不開的,IOS和MacOS均是基于喬布斯在1993年發布的OpenStep系統(BSD衍生)。

華為如果基于UNIX系統開發操作系統,第一:需要授權,授權被美國牢牢限制,而linux系統沒有這個問題;第二:門檻很高,蘋果IOS已經近30年的發展和改進,而華為2012年才開始搞自己的操作系統,短時間內很難打造一個“生態鏈”。

總之,華為的“鴻蒙”操作系統是無法使用UNXI內核的,只能基于Linux內核進行研發,畢竟華為也是Linux聯盟的重要成員。

鴻蒙系統基于什么

從余承東對外發布的信息看,鴻蒙系統直接基于linux開發的可能性非常大,android

底層的內核系統也是linux,也就是鴻蒙系統很可能是安卓一樣的角色,但是在性能上肯定會比安卓有所改進,鴻蒙系統設計的理念的支持安卓應用以及各種web應用,同時性能上要比安卓有所提升,從技術角度上考慮就是換一套安卓應用的解析和運行機制,很可能和之前發布的方舟編譯器有著千絲萬縷的聯系。

華為鴻蒙操作系統內核是Linux系嗎

針對好多Linux愛好者對內核很有興趣卻無從下口,本文旨在介紹一種解讀linux內核源碼的入門方法,而不是解說linux復雜的內核機制;

一.核心源程序的文件組織:

1.Linux核心源程序通常都安裝在/usr/src/linux下,而且它有一個非常簡單的編號約定:任何偶數的核心(例如2。

0。30)都是一個穩定地發行的核心,而任何奇數的核心(例如2。1。42)都是一個開發中的核心。本文基于穩定的2。2。5源代碼,第二部分的實現平臺為RedhatLinux6。0。

2.核心源程序的文件按樹形結構進行組織,在源程序樹的最上層你會看到這樣一些目錄:

●Arch:arch子目錄包括了所有和體系結構相關的核心代碼。

它的每一個子目錄都代表一種支持的體系結構,例如i386就是關于intelcpu及與之相兼容體系結構的子目錄。PC機一般都基于此目錄;

●Include:include子目錄包括編譯核心所需要的大部分頭文件。與平臺無關的頭文件在include/linux子目錄下,與

intelcpu相關的頭文件在include/asm-i386子目錄下,而include/scsi目錄則是有關scsi設備的頭文件目錄;

●Init:這個目錄包含核心的初始化代碼(注:不是系統的引導代碼),包含兩個文件main。

c和Version。c,這是研究核心如何工作的一個非常好的起點。

●Mm:這個目錄包括所有獨立于cpu體系結構的內存管理代碼,如頁式存儲管理內存的分配和釋放等;而和體系結構相關的內存管理代碼則位于arch/*/mm/,例如arch/i386/mm/Fault。

c

●Kernel:主要的核心代碼,此目錄下的文件實現了大多數linux系統的內核函數,其中最重要的文件當屬sched。c;同樣,和體系結構相關的代碼在arch/*/kernel中;

●Drivers:放置系統所有的設備驅動程序;每種驅動程序又各占用一個子目錄:如,/block下為塊設備驅動程序,比如ide(ide。

c)。如果你希望查看所有可能包含文件系統的設備是如何初始化的,你可以看drivers/block/genhd。c中的device_setup()。它不僅初始化硬盤,也初始化網絡,因為安裝nfs文件系統的時候需要網絡其他:

如,Lib放置核心的庫代碼;

Net,核心與網絡相關的代碼;Ipc,這個目錄包含核心的進程間通訊的代碼;Fs,所有的文件系統代碼和各種類型的文件操作代碼,它的每一個子目錄支持一個文件系統,例如fat和ext2;Scripts,此目錄包含用于配置核心的腳本文件等。

一般,在每個目錄下,都有一個。depend文件和一個Makefile文件,這兩個文件都是編譯時使用的輔助文件,仔細閱讀這兩個文件對弄清各個文件這間的聯系和依托關系很有幫助;而且,在有的目錄下還有Readme文件,它是對該目錄下的文件的一些說明,同樣有利于我們對內核源碼的理解;

二.解讀實戰:為你的內核增加一個系統調用

雖然,Linux的內核源碼用樹形結構組織得非常合理、科學,把功能相關聯的文件都放在同一個子目錄下,這樣使得程序更具可讀性。

然而,Linux的內核源碼實在是太大而且非常復雜,即便采用了很合理的文件組織方法,在不同目錄下的文件之間還是有很多的關聯,分析核心的一部分代碼通常會要查看其它的幾個相關的文件,而且可能這些文件還不在同一個子目錄下。

體系的龐大復雜和文件之間關聯的錯綜復雜,可能就是很多人對其望而生畏的主要原因。

當然,這種令人生畏的勞動所帶來的回報也是非常令人著迷的:你不僅可以從中學到很多的計算機的底層的知識(如下面將講到的系統的引導),體會到整個操作系統體系結構的精妙和在解決某個具體細節問題時,算法的巧妙;而且更重要的是:在源碼的分析過程中,你就會被一點一點地、潛移默化地專業化;甚至,只要分析十分之一的代碼后,你就會深刻地體會到,什么樣的代碼才是一個專業的程序員寫的,什么樣的代碼是一個業余愛好者寫的為了使讀者能更好的體會到這一特點,下面舉了一個具體的內核分析實例,希望能通過這個實例,使讀者對Linux的內核的組織有些具體的認識,從中讀者也可以學到一些對內核的分析方法。

以下即為分析實例:

【一】操作平臺:

硬件:cpu

intelPentiumII;

軟件:RedhatLinux6。0;

內核版本2。2。5

【二】相關內核源代碼分析:

1.系統的引導和初始化:Linux系統的引導有好幾種方式:常見的有Lilo,Loadin引導和Linux的自舉引導(bootsect-loader),而后者所對應源程序為arch/i386/boot/bootsect。

S,它為實模式的匯編程序,限于篇幅在此不做分析;無論是哪種引導方式,最后都要跳轉到arch/i386/Kernel/setup。S,setup。S主要是進行時模式下的初始化,為系統進入保護模式做準備;此后,系統執行arch/i386/kernel/head。

S(對經壓縮后存放的內核要先執行arch/i386/boot/compressed/head。S);head。S中定義的一段匯編程序setup_idt,它負責建立一張256項的idt表(InterruptDescriptorTable),此表保存著所有自陷和中斷的入口地址;其中包括系統調用總控程序system_call

的入口地址;當然,除此之外,head。

S還要做一些其他的初始化工作;

2.系統初始化后運行的第一個內核程序asmlinkagevoid__initstart_kernel(void)定義在/usr/src/linux/init/main。c中,它通過調用usr/src/linux/arch/i386/kernel/traps。

c中的一個函數void__inittrap_init(void)把各自陷和中斷服務程序的入口地址設置到idt表中,其中系統調用總控程序system_cal就是中斷服務程序之一;void__inittrap_init(void)函數則通過調用一個宏set_system_gate(SYSCALL_VECTOR,&system_call);把系統調用總控程序的入口掛在中斷0x80上;其中SYSCALL_VECTOR是定義在/usr/src/linux/arch/i386/kernel/irq。

h中的一個常量0x80;而

system_call即為中斷總控程序的入口地址;中斷總控程序用匯編語言定義在/usr/src/linux/arch/i386/kernel/entry。S中;。

華為“鴻蒙”操作系統為什么用Linux開發

華為操作系統基于linux是關于鴻蒙的“傳說”中最空穴來風的。但開發初始一代鴻蒙的平臺是linux沒什么奇怪的,畢竟linux提供的程序員友好的工具太多了。如果理解了交叉編譯就知道:現有的windows、macos、linux、freebsd都可以做開發工具的運行平臺。但必須選一個的話,我會選linux。而且,僅僅是在鴻蒙還不能替代linux之前的選擇。一旦鴻蒙本身具備條件,會第一時間把開發平臺切換到鴻蒙,這就是所謂的“吃狗糧”-讓開發者自己使用自己開發的產品。

鴻蒙的核心,余承東透露的是“下一代微內核”。對操作系統技術稍有了解的人,都知道linus對微內核架構的態度。有余承東這句話,鴻蒙的核心就不可能是linux。微內核架構,即便華為去買蘋果的操作系統核心也不可能在華為“工程師文化”下犯如此低級的錯誤。

而且,從華為操作系統對5g的時機卡位看,底層的實時性是肯定會考慮的,而linux的實時改造到現在都達不到5g毫秒級時延要求。再看看谷歌新系統和微軟新系統的宣傳,就知道了:5g對通用操作系統的實時性提出了挑戰,要充分發揮5g網絡性能,對操作系統底層必須做大調整。

再從備胎策略看,華為如果連標準組織的清除策略都考慮全了(例如,超級藍牙),沒有理由不考慮linux資源限制的情況。

那么整個備胎操作系統計劃可能是什么樣的呢?

在研究了操作系統歷史的情況下,華為極力投入5g開發,不會不知道操作系統是個機會。因此,我們看到鴻蒙起始時間大約在2010年左右,正是5g紙面規格基本確定的時候。鴻蒙初始選型應該持續了兩年。但可用的真的很有限,除了be操作系統號稱有實時性,其他通用系統幾乎都達不到備胎要求。那么,重新開發一個就成了重大選項。

第二個大難點是系統初始生態,新核心要繼承安卓生態,微內核架構是最成熟選擇,因為蘋果干過一次,證明有效的。然后,看華為“操作系統”往事中,大規模整理安卓架構,就知道這是在就這新系統安卓兼容服務在轉圈子。

做到這里,就是等一個時機了。顯然余承東是等不及了:gputurbo、編譯器、linkturbo分分扔出來做預熱了。就等一個時機了,恰好川普配合到位,順理成章了。否則,余承東恐怕還得適配谷歌新系統來適應5g要求,但谷歌開什么價就不好說了。

但操作系統就是操作系統嗎?除了適應頂層生態,還有適應底層一堆硬件,這個工作不做就是大麻煩。

我曾經說華為編譯器的出現是劍指芯片的,那么操作系統就更是如此,如果底層解決方案是華為提供,其他手機廠擴展,那么就解決了當初谷歌必須依賴linux的多硬件平臺適配資源解決硬件適應問題。這是最適合中國手機廠商路數的。

所以,鴻蒙大概率開源,開發系統大概率開源或至少象安卓和蘋果一樣免費。而完全從芯片解決方案(原聯發科生態模式)和自己終端上賺錢(蘋果模式)。這樣5g時代華為大約每年在芯片解決方案上提供至少200億營收,貼補軟件,而反過來芯片供貨規模擴大可降低芯片成本(現在是高中低都980解決量問題)。從而提高終端利潤,進一步投入研發。

如果你還想了解更多這方面的信息,記得收藏關注本站。

返回列表
上一篇:
下一篇: