2016 - 2024

感恩一路有你

深入解析Mac OS X系统启动过程

浏览量:3753 时间:2024-04-09 18:26:48 作者:采采

电源开启与固件代码执行

当用户开启Mac电脑时,系统启动过程即刻开始。首先,电源被投入,随后固件中的代码开始执行。这些代码负责收集硬件信息并初始化硬件,然后选择启动项。通常情况下,系统会选择启动操作系统,但有时也可能需要进行硬件测试等其他操作。

启动引导器及内核加载

在选择启动项后,控制权被交给/System/Library/CoreServices/BootX,也就是启动引导器。BootX负责加载内核并展示操作系统标识。它会尝试载入之前缓存的设备驱动列表,这些信息存储在mkext缓存中。如果缓存丢失或损坏,BootX将在/System/Library/Extensions中搜索当前方案所需的扩展。

内核初始化与服务启动

接着,系统执行内核中的init例程,确定要启动的系统的根设备,并初始化各种Mach/BSD数据结构。随后进行I/O设备初始化,并启动Mach服务命名(引导程序)后台。此时,启动过程逐渐转向用户等级,最终启动传统的BSD初始化进程以确定运行等级。

网络启动和文件系统检查

在启动过程中,可能会遇到网络启动的情况,此时系统会运行来处理网络启动的参数特征。另外,在必须进行文件系统一致性检查时,会显示图形界面。安全模式启动时总会运行文件系统检查。成功退出后,多用户启动脚本将会运行,挂载本地文件系统并清理特定Unix和Mac目录。

系统参数设置与服务启动

在启动过程中,各种sysctl变量被设置,同时syslogd开始运行。系统还会创建机器检查符号文件以及启动kextd后台进程,用于加载内核扩展。此外,还会运行其他服务如portmap和netinfo,并进行系统文件一致性检查并启动虚拟内存系统。

最终启动项处理

最后,在整个启动过程完成后,系统会启动/sbin/SystemStarter处理启动项,包括从/System/Library/StartupItems和/Library/StartupItems加载的项目。SystemStarter会处理各项启动项的属性列表文件,包括Deion、Provides、Requires等信息,确保系统的正常启动。CoreGraphics也会启动Apple类型服务后台。

通过深入了解Mac OS X系统的启动过程,我们能更好地理解系统背后复杂而精密的工作流程,为日常使用提供更加稳定和高效的体验。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。