同样的内核,为什么linux干净稳定,而android臃肿又乌烟瘴气?
要知道如今Windows 11的系统安装包大小在4G~5G之间,而Windows 1的系统安装包仅有300KB左右。毫无疑问Windows 11比Windows 1臃肿了无数倍。Windows 1能作为现如今的生产力工具吗?显然是不能。翻看Windows近50年的历史我们就会发现Windows每一个版本都会增加许多新的功能,可不仅仅是界面变得花里胡哨更好看了。实际上就算实现一个非常小的功能,就需要大量的代码作为支撑。
在前台操作的我们可能很多功能都没有用到,但确确实实有很多人因此而受益了。俗话说“众口难调”,而微软却在调制一款符合绝大多人口味的Windows,这也是Windows这么多年仍然占据桌面操作系统80%以上市场份额的原因,微软的Windows同样遵循着摩尔定律和市场需求在不断变胖。
很多人都把Linux和Windows、MacOS放在一起做比较,这也并没有什么错。严格意义上来讲Linux是一个遵循GNU通用公共许可证(GPL)的开源作业系统核心,它包含了图形界面和其他使用工具,任何个人和机构都可以自由地使用Linux的所有底层原始码,也可以自由地修改和再发布。从Android的系统架构图我们就会发现,Android同样基于Linux内核。2017年3月Android全球设备数量和网络流量超越了微软的Windows,成为了全球第一大操作系统。毫无疑问,Android之所以能够取得这样的成功在于Google在Linux内核的基础之上做了一些改变和创新。
上面提到Linux是GPL开源协议,按照这个逻辑下去,高通、MTK这些芯片厂商的驱动都得开源,这个他们是不愿意的。谷歌于是就在Linux的上层添加了HAL层(Hardware Abstract Layer)将内核和驱动程序隔离了,这样Linux社区就不会认为Android是Linux的分支版本。芯片厂商不用开源驱动,隔离驱动之后系统升级也就变得更为简单,简直就是一举两得。因此Android采用了Apache开源协议,对免费开放的Android系统修改之后可以不进行开源。
很多人都在吐槽Android采用了Java和Dalvik/ART,大幅的拖慢了软件的执行效率。Android采用Java初衷挺简单的,就是让庞大数量的Java程序员可以非常容易地转到Android开发,这样短时间就可以丰满Android的生态系统,这点和独立专行的Windows Phone形成了鲜明的对比。既然选择了Java那么逃避不了的就是虚拟机,于是就有了Dalvik,而ART其实就是优化之后的Dalvik。
Android并没有采用直译的机器码来运行,而是采用了Runtime,很大一部分原因基于“手机”来进行考虑。手机必然有很多用户的隐私数据,所以就需要为每一个APP定制相互隔离的沙盒环境,Runtime就是这样诞生的。Android杀内存这件事也同样被很多人吐槽,很多人都拿IOS的“墓碑”后台做对比。Android杀内存是因为早先的Android系统内存太小了,几百M是非常常见的,所以Android就设计了Low Memory Killer来干掉很久不用的后台APP,留给用户当前能看到的APP用。
如今Android原生版本其实对于后台APP是相当宽松的,内存显然够用了,强杀内存的策略一般是手机厂商自己定制的,这样手机就可以更省电,而用户也能感觉手机可以非常流畅地运行。谁曾想到原先展开仅有几百M的安卓系统,如今展开有10GB大小,如今任何一个程序都比之前的安卓系统大。微信1.0仅有457.7KB,仅有文字聊天功能,如今微信添加了各种各样的功能,比如语音信息、朋友圈、支付、小程序等等,如今微信安装包150MB左右,用一段时间之后轻轻松松就近10GB。软件、系统越来越臃肿的原因在于给我们提供了更多的功能,方便我们的日常生活、工作。所以还就真别较真Android变胖了,实际上IOS也变胖了。
本文系作者 @河马 原创发布在河马博客站点。未经许可,禁止转载。
暂无评论数据