百科问答小站 logo
百科问答小站 font logo



为什么Windows可以安装在所有不同的PC上,而安卓刷机包必须对应机型? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

Windows的驱动比安卓丰富,这个很多人都说了,我不重复,操作系统的尺寸摆在那呢。

@崔巍

提到了实模式和BSP,其实这跟实模式没什么关系,说BSP倒是对。而在x86体系里,最重要的一环是BIOS和ACPI。在这个问题里:

为什么Intel的CPU要规定加电时进入实模式?直接进保护模式不可以吗? - 中央处理器 (CPU) - 知乎

,我有更详细的说明。

操作系统要启动不同硬件配置的计算机,首先要知道硬件配置。比如说CPU是什么型号的,桥片是什么型号的,有多少条PCI,各个IRQ怎么连接的。在x86体系里,BIOS、ACPI可以告诉操作系统具体的硬件配置(UEFI也有类似接口)。

安卓的刷机包问题在于,非x86体系里,没有一套公共的机制能告诉操作系统,设备的具体硬件配置情况,这样的话软件根本没办法知道硬件驱动。比如网卡,在某个设备上用的IRQ是10,在另一个是11,而操作系统没办法知道这些信息。

所以安卓(以及Linux、嵌入式开发等)需要BSP(board support package),需要根据硬件来定制一些最基础的代码。

所以安卓系统不能像Windows那样适应多个机型,哪怕带上足够的驱动也不行。

那么ARM架构为什么不搞类似ACPI或者BIOS的东西?因为ARM是卖CPU的(准确的说只卖授权),BIOS这套体系是在IBM之类的卖机器的厂商推动下发展起来的,而不是单纯靠Intel推动的,两家走的路完全不同,自然ARM没办法做类似的事情。

(注:制定ACPI标准的时候,是Intel和微软一起坐下来讨论的,但ARM没这个条件,做硬件的是ARM没错,但做安卓的软件厂商就太多了,而且内核又是Linux,即使跟谷歌谈,也不一定能推动整个Linux社区跟着改)

ACPI也不是完美的,因为它实际上是在内存里放着的,有些硬件在软重启时不重置ACPI的信息,就可能导致ACPI有可能被人修改而导致安全问题,所以现在又有了UEFI,总之,这些东西是告诉软件,硬件都有什么东西。




  

相关话题

  网上有m1 mac 8g内存相当于x86 16g内存的结论,正确吗?请结合统一内存进行分析? 
  2019.10.10 发布的 OPPO Reno Ace 售价 2999 元起,有哪些亮点和不足? 
  如何评价华为 6 月 6 日发布的 GPU Turbo 技术? 
  不懂就问,若鸿蒙是换皮,为什么安卓,谷歌,美国不公之于众,再给华为一记重拳? 
  如何评价 OPPO 成为首个与 Cyanogen 合作的硬件厂商?对市场、双方而言意味着什么? 
  Android 刷机的文件大小是几十 MB,iOS 是 600-800 MB,为什么差距这么大? 
  为什么Windows可以安装在所有不同的PC上,而安卓刷机包必须对应机型? 
  如果升了鸿蒙系统后悔了,如何退回安卓系统? 
  想问下,Windows 10 和 Windows 11 最明显的是什么区别? 
  如何看待华为操作系统最早于今年秋天面市,且该系统打通手机、电脑、电视、汽车,兼容安卓、Web? 

前一个讨论
为什么 2016 年以后就不爱刷知乎了?
下一个讨论
64位操作系统,64位CPU,加SSD硬盘,是不是就可以省去内存,让CPU直接读取硬盘里的数据?





© 2024-12-18 - tinynew.org. All Rights Reserved.
© 2024-12-18 - tinynew.org. 保留所有权利