33 | iOS 系统内核 XNU:App 如何加载?

2020-07-07  本文已影响0人  阳明先生x

iOS 系统架构
iOS 系统是基于 ARM 架构的,大致可以分为四层:
最上层是用户体验层,主要是提供用户界面。这一层包含了 SpringBoard、Spotlight、Accessibility。
第二层是应用框架层,是开发者会用到的。这一层包含了开发框架 Cocoa Touch。
第三层是核心框架层,是系统核心功能的框架层。这一层包含了各种图形和媒体核心框架、Metal 等。
第四层是 Darwin层,是操作系统的核心,属于操作系统的内核态。这一层包含了系统内核 XNU、驱动等。


image.png

XNU 怎么加载 App?


image.png

小结
今天我跟你介绍了 iOS 系统的内核 XNU,以及 XNU 是如何加载 App 的。总体来说,XNU 加载就是为 Mach-O 创建一个新进程,建立虚拟内存空间,解析Mach-O文件,最后映射到内存空间。流程可以概括为:

fork 新进程;

为 Mach-O 分配内存;

解析 Mach-O;

读取 Mach-O 头信息;

遍历 load command 信息,将 Mach-O 映射到内存;

启动 dyld。

上一篇下一篇

猜你喜欢

热点阅读