我们知道,操作系统是电脑、手机上最基本的软件,任何其他的软件都必须在操作系统的支持下才能够运行。同理,软件的启动也必须在操作系统的支持下才能够运行。对于iOS系统来说,操作系统内核是XNU(X is not Unix),那么在一个app的启动过程中,XNU发挥了什么作用呢?本篇文章,我们来探究一下这个问题。

--------

总结

到这里,就完成了XNU如何将一个Mach-O文件以及dyld加载到内存中的流程分析。其实不看源码,大体流程我们也可以猜到,操作系统想要启动一个app,无非是给这个app分配进程,以及相应的进程空间,之后是给app分配内存,将app映射到内存中。通过源码,能看到每一步是如何实现的。这里只是分析到了XNU将Mach-O文件加载到内存中,实际上后续用户态的dyld还要做一些工作,才能真正的将一个app启动。关于后续dyld做的工作,之后的文章再介绍。


————————————————
版权声明:本文为博主「TuGeLe」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

------------------越是喧嚣的世界,越需要宁静的思考------------------ 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。