众所周知,Apple的区别于其他消费电子厂商很大的一个特色就是拥有自己的软件生态系统,即两条腿走路:硬件设计+软件。
由于本人从工作以来就没有停止过对OS kernel的研究(Linux/Unix/BSD/Darwin),今天根据自己的一些经验来跟大家分享下Apple软件生态系统的核心操作系统kernel/Core。
首先Kernel/Core是什么?请看下图:
用户其实看到的是上层的UI即脸面,而支撑这个漂亮脸蛋的是后台默默无闻的核心模块,今天我们要讨论的就是最下面的kernel environment。
首先我们来了解下类Unix操作系统的发展史,因为苹果的内核与Unix的发展紧密相关,请看下图:
类Unix操作系统家族图谱
从图中可以看出苹果系统的内核Darwin其实并不是从零(Win的内核姑且可以说是从头开发的,当然不准确,因为win是从买来的DOS开始开发的)开发出来的,而是基于很多Unix的分支并结合自己的定制,其中继承最多的是FreeBSD,除了内核,也包含很多用户空间的应用程序以及编译环境。但是Apple并没有将他们的成果开源,这一点有点“忘本”的嫌疑。
现在我们来了解下Darwin的实现。由于Linux与BSD等都是类Unix系统(类的意思是说他们的设计思想是一致的,但是实现上有一些差异),而Apple又是闭门修炼的,我先用一张Linux的kernel来给大家展示下内核的功能模块。
从这张图我们可以看出仅仅设计出一个操作系统核心是多么复杂的一件事情,计算苹果这样的大公司也是从BSD等开源软件借鉴(也可以说是抄袭)了很多代码,加以优化,定制才做出许多优秀的产品。
今天粗略的给大家介绍了下,Apple底层的实现,希望大家喜欢。
本文为原创作品,转载请注明。注:文中图片为网络获取,如有侵犯版权请及时沟通。
领取专属 10元无门槛券
私享最新 技术干货