Mac OS X的启动过程

简介: 在开启电脑之后,打开Console,从Log List中选择FILES目录下的system.log,可以大致了解系统启动之后进行的工作。首先,找到与电脑开启时间相符的log信息:localhost com.apple.launchd[1]:***launchd[1] has started up.*** 这说明launchd是在内核完成加载后,系统开启的第一个进程。

在开启电脑之后,打开Console,从Log List中选择FILES目录下的system.log,可以大致了解系统启动之后进行的工作。

首先,找到与电脑开启时间相符的log信息:localhost com.apple.launchd[1]:***launchd[1] has started up.*** 这说明launchd是在内核完成加载后,系统开启的第一个进程。

接着log信息里显示启动了各种进程,比如bootlog,blued,mDNSResponder等。系统是如何加载这些的呢?

launchd开启之后,会依次去完成以下的工作:

1)根据/System/Library/LaunchDaemons 和/Library/LaunchDaemons路径下的plist文件,加载系统级守护进程;

2)注册上述守护进程需要的套接字及文件描述符;

3)根据plist文件中的KeepAlive键值,启动那些需要在系统周期内一直保持的进程;

4)根据plist文件中的设定,在条件满足时启动进程;

5)关机时,给所有由launchd开启的进程发送SIGTERM信号。

这时,我们将log信息中的内容与/System/Library/LaunchDaemons路径下的plist进行对照,发现在系统开启之初的bootlog,blued,mDNSResponder等都能再该路径下找到。

LaunchDaemons路径下的plist指定的进程启动是否存在一定的先后顺序呢?

在launchd依次完成的工作中,可以看到它是先注册套接字和文件描述符,然后才去启动进程,因此plist指定的进程的启动先后顺序并不明确。

launchd配置文件总共有五个路径,在系统开启之初,只加载了/System/Library/LaunchDaemons 和/Library/LaunchDaemons路径下的plist文件,另外三个路径下的plist文件是在用户login之后才进行的。

用户的login是由loginwindow进程完成的,而loginwindow的启动又是由/System/Library/LaunchDaemons路径下的com.apple.loginwindow.plist指定的。用户登录之后,launchd才会去加载/System/Library/LaunchAgents 和/Library/ LaunchAgents以及~/Library/LaunchAgents路径下的plist文件,从而根据plist文件的具体设置去启动相应的进程。

在log信息中我们还可以看到这个进程: com.apple.SystemStarter 。StartupItems的加载就是由这个进程来完成的。
目录
相关文章
|
编解码 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)1
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
903 1
|
iOS开发 MacOS
MAC OS更新系统后IDEA中的SVN报错无法使用
MAC OS更新系统后IDEA中的SVN报错无法使用
|
编解码 开发工具 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
804 2
|
12月前
|
Linux C语言 iOS开发
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
241 0
|
Cloud Native 编译器 Linux
如何在Windows、Mac和Linux操作系统上安装Protocol Buffers(protobuf)编译器
如何在Windows、Mac和Linux操作系统上安装Protocol Buffers(protobuf)编译器
812 0
|
安全 Java iOS开发
MAC OS X 硬盘安装详细分解教程
MAC OS X 硬盘安装详细分解教程
385 1
|
编解码 Oracle iOS开发
VirtualBox虚拟机安装Mac OS X Lion系统详解
VirtualBox虚拟机安装Mac OS X Lion系统详解
704 1
|
安全 iOS开发 MacOS
Mac pro升级 MacOS 10.15 Catalina 后根目录是只读的, Recovery OS不能访问
Mac pro升级 MacOS 10.15 Catalina 后根目录是只读的, Recovery OS不能访问
368 0
|
Unix Shell Linux
史上最全:MAC OS X 命令行汇总
史上最全:MAC OS X 命令行汇总
342 0

热门文章

最新文章

推荐镜像

更多