“google发布Android时为什么不集成一些常见的驱动,手机硬件厂商为什么不能像PC厂商那样直接向用户提供设备的驱动。”
相信很多网友对于Android的碎片化都有所耳闻,而万碎万碎万万碎说出的这个问题确实是更好解决Android碎片化问题的最佳方案之一,而之所以没有成功的去实施这个方案的原因在于windows与安卓有很大的不同,这个不同点,就让小编给大家简单的说一下。
首先第一点,windows平台的硬件相对于Android的硬件来说简直太少了。
windows/linux由于对于x86/64架构的通用性完全标准化,这个其实是历史的原因。在很久很久以前,IBM还是传说中秒天秒地秒宇宙的时候,为了干掉竞争对手MAC,使出终极技能”PC规则规范化“然后带领着一众小弟Intel、windows这些小弟一起开辟新的世界。
然后把指令集统一,不管怎么换,都是那两家,而硬件接口、针脚、协议等等很多也都做出了相应的规范化。然后CPU、内存、南北桥下PCIE等等这些架构完全统一。这样就导致了各家OEM做的各式各样的东西随便换,随便玩。而这样做的好处就是windows面临的不同的CPU架构少之又少,造成了现在windows轻轻松松给这些硬件集成这些驱动。现在若要让windows开源,那场面简直酸爽。
而Android就不同了,Android需要面对不同的CPU架构,虽然一开始Google就学习IBM将软件部分开源了,但是众多的硬件在不同的厂商手机随便玩耍,也带来了就是各家维护各家的事情了。随便举个例子,例如Android在不考虑指令集的情况下有ARM/MIPS/x86三种,而如果把不同设备类型之间最基本的驱动全部写进内核里面,如果一个架构需要120MB,那么三个架构就是360MB,再加上乱七八糟的应用,导致刷机包可能会超过1GB,正因为这种原因导致了Android无法把驱动集成。
至于手机硬件商为什么不直接向用户提供设备驱动?
这个原因其实就是Android是运行在linux之上的操作系统。简单的拆解Android系统来看,Android的层次可以分为底层是linux,中间是叫做Dalvik的java虚拟机,而上面则是Android运行时库。而linux采用的是宏内核,内核和驱动是在一起的,如果要添加驱动,基本上就得需要重新编译内核了。
以上皆是小编的一些拙见,若有不对的地方,烦请诸位网友大神帮忙点出,小编在这里感激不尽。
新鲜科技,深度好文,微信中搜索IT之家或扫描二维码关注公众号
本文来源:不详 作者:佚名