為什麼Linux可以同時相容x86和ARM,乙個作業系統不是只能對應特定的硬體系統嗎?

時間 2021-05-07 03:52:02

1樓:趙者也

因為linux 「X86版」和 linux「ARM版」實際上是兩個作業系統。

為什麼一句話能說明白的事情你們要說那麼多句話?

2樓:

為什麼乙個車子既可以跑普通水泥公路,也可以跑雪地?把輪胎換成雪地胎,就可以了。

為什麼Linux既可以跑在x86,也可以跑在arm?

把底層驅動硬體抽象層換一下就好了。

你看到的車還是那個車,但是輪子已經換了。你看到的Linux還是那個linux,只不過底層的程式已經換了。

這就是軟體架構設計裡面的分層思想。

3樓:

乙個作業系統只能對應特定的硬體系統?該結論從何而來?

理論上作業系統可是硬體無關的。你學作業系統課的時候,也不會講一堆硬體驅動的設計吧。

4樓:Biggee Lucloner

答案是否定的。linux不能同時相容x86和arm架構。

話說確實可以編譯為指定的架構,但是這個指定是有限制的,只能指定這麼幾種。一旦確定後,出來的系統也就不能修改了。原始碼是跨架構的,但linux不跨。

所以,linux只是有人去開發並準備了這些架構的原始碼或者配置檔案而已。既不能同時相容x86和arm,也不能額外去相容它所不知道的架構。

作為乙個開源系統,它只是歸納了幾條「走的人多的路」。

5樓:王平

自從作業系統以高階語言為主進行編寫之後,就容易相容多種硬體平台了。Unix 因為使用 C 語言開了先河,相容了眾多硬體。 Linux 只是繼承了 Unix 的優點, Windows 從 NT 開始也是以 C 語言為主開發,也是能跨 x86 和 Alpha 等多種硬體平台,蘋果的 MacOS 一樣。

現代以高階語言編寫的作業系統已經能夠輕鬆支援多種硬體平台了。

6樓:MacroLemonXD

這麼說吧,

原先的macOS甚至都不跑x86架構,而是跑Power架構,後來通過第一代Rosetta跑到x86陣營了。

現在的macOS也不跑x86架構,而是跑arm架構,通過第二代Rosetta從x86又跑出來了。

就連Windows也不是只跑x86啊,Windows on ARM都立項多少年了,桌面端從Windows 8時代就有Windows RT這種怪胎了,只不過之前一直沒法跑桌面應用所以沒人買,後來也只是支援到可以允許32位的應用;移動端從Windows CE到Windows Mobile,到Windows Phone,再到Windows 10 Mobile,名字花裡胡哨,核心還是Windows NT,說白了還是桌面端核心魔改,本質上還是一家;嵌入端還有Windows Embedded,當然現在應該叫Windows 10 IoT,還是一家人不說兩家話。

Android實際上也不單單支援arm架構,Android x86這個專案目前能查到的最早版本是Android 1.6,發布於2023年。直到現在還有一部分廠商及愛好者在做Android x86方面的工作,比如國內的Phoenix OS,國外的Prime OS以及Bliss OS等等。

所以這個「一種作業系統對應一種架構」完全是無稽之談。

Ps:據說現在WoA能跑64位的應用了,過兩天整台Lumia950試試。

7樓:天星

事實上linux 不僅支援x86和arm,還支援其他平台,比如mips,以及早期的PowerPc(不知道有沒有打錯),等等。

這是一張標準的GNU/Linux的框架,事實上,大多數軟體開發都停留在使用者空間。所以在系統呼叫之上的使用者空間,就已經完全脫離硬體平台了。

再看核心空間,也就是通常說的linux kernel,這裡的指的只是核心,不是各種linux發行版。linux 核心的幾大系統,程序管理、VFS、記憶體管理、網路套接字、包括中斷等系統,基本上大同小異。

那麼與平台相關的內容就放到,裝置驅動裡面了。事實上,做底層開發的人,可能都知道。linux把裝置驅動也抽象出來了,大多數情況下,平台之間的驅動框架也是大同小異。

最終不同的,在各硬體平台,同一架構下的不同平台,不同架構下的不同平台。不同架構的指令集有所差異,同一架構下,不同晶元平台的硬體初始化不同(時鐘,記憶體,儲存等)。

這裡可以看到,裝置驅動,起了承上啟下的作用。對作業系統之上,抽象出來通用的系統呼叫,驅動之下,就需要不同的平台來適配。這些適配工作,大多數都是驅動工程師做的。以上。

8樓:「已登出」

原始碼Linux(C語言形式存在)在檔案內部支援多種架構,x86,arm,mips,ppc,sparc等多種。但在編譯的時候(比如用gcc編譯生成二進位制)的時候會指定應用的平台,所以生成的可執行的作業系統就限定在具體的某種架構上了。

9樓:大澤Official

其實mac和Windows現在也可以了,例子就是m1晶元的mac和高通u的Windows本

關鍵是看做系統的那家給不給編譯和寫驅動

Linux是因為他開源了,社群有編譯和寫驅動的

10樓:自由人

不一定哦。將來可能會看到支援arm的Windows。Linux 也不止x86和arm 還有MIPS ,powerPC,alpha,IA-64,SPARC等等。

11樓:衝阿薩高對抗

把硬體相關的部分侷限在乙個邏輯模組內(不一定只對應乙個磁碟檔案),這也是軟體工程的基本思想之一:封裝差異(和繁瑣、容易出錯、理解和使用成本高的細節),提供同樣的訪問介面。上層軟體就可以不受這些限制。

for ARM和for x86可以用不同的映象——其中帶有不同實現的硬體抽象層(但對上層提供一樣的介面和服務)和一樣的上層軟體。

Android 基於 Linux,為什麼可以收費?

零豫星恆 首先 aNDROID 不收費,其次 when we talk about free we are reffering to freedom,not free of price. 布客飛龍 GPL協議的大意是 1 原始碼可以任意分發 2 如果你向別人提供二進位制,必需附帶原始碼 3 所有衍生...

鴻蒙os為什麼不相容windows,不相容ios,相容安卓!

適配API的逆向工程工作量遠高於適配Android 與PC相比,移動終端底層設定BIOS層級加鎖,出於安全維度考量,各家廠商對BIOS把控極其嚴格且敏感。 王銳 他帶了ANDOID子系統當然就相容ANDROID了,如果他用WINE製作乙個WIN32子系統當然也可以相容WINDOWS程式。 棒棒 忍不...

Salesforce 為什麼可以同時威脅到 SAP Oracle 和 Microsoft ?

朱尼 作為國內最早做salesoforce的那批人之一,SF在國外對其他軟體巨頭衝擊滿大,並且是可替代的。但是在國內,我一直認為它只是其他巨頭的附屬品,這與國內行業的風格有關。 汪楊 上面都說了很多,我只說兩點。1 SAAS 模式是未來的趨勢。補充樓上,不是農村包圍城市,而是城市影響農村 2 顛覆的...