iOS 系统架构
iOS 系统是基于 ARM 架构的,大致可以分为四层:
最上层是用户体验层,主要是提供用户界面。这一层包含了 SpringBoard、Spotlight、Accessibility。
第二层是应用框架层,是开发者会用到的。这一层包含了开发框架 Cocoa Touch。
第三层是核心框架层,是系统核心功能的框架层。这一层包含了各种图形和媒体核心框架、Metal 等。
第四层是 Darwin层,是操作系统的核心,属于操作系统的内核态。这一层包含了系统内核 XNU、驱动等。
![](http://upload-images.jianshu.io/upload_images/814874-8c86ee7a46d50083.png)
image.png
XNU 怎么加载 App?
![](http://upload-images.jianshu.io/upload_images/814874-6bf3c72b50506a5a.png)
image.png
小结
今天我跟你介绍了 iOS 系统的内核 XNU,以及 XNU 是如何加载 App 的。总体来说,XNU 加载就是为 Mach-O 创建一个新进程,建立虚拟内存空间,解析Mach-O文件,最后映射到内存空间。流程可以概括为:
fork 新进程;
为 Mach-O 分配内存;
解析 Mach-O;
读取 Mach-O 头信息;
遍历 load command 信息,将 Mach-O 映射到内存;
启动 dyld。