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的加载就是由这个进程来完成的。
目录
相关文章
|
4月前
|
iOS开发 MacOS
MAC OS更新系统后IDEA中的SVN报错无法使用
MAC OS更新系统后IDEA中的SVN报错无法使用
|
12月前
|
消息中间件 Dubbo 中间件
在 Docker 中运行 Mac OS 是什么样的体验?
在 Docker 中运行 Mac OS 是什么样的体验?
|
7月前
|
前端开发 安全 Go
在Mac OS X上运行Go语言的GUI程序
在Mac OS X上运行Go语言的GUI程序
200 3
|
11月前
|
iOS开发 MacOS
MAC OS更新系统后IDEA中的SVN报错无法使用
IntelliJ IDEA无法正常使用SVN 报Cannot run program “svn” (in directory “/XXXX/XXXX/XXXX/XXX”): error=2错误! 解决方法来了!
1034 0
|
Oracle Java 关系型数据库
珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot)
也许有人从未听说过Python,但是不会有人没听说过Java,它作为一个拥有悠久历史的老牌编程语言,常年雄踞TIOBE编程语言榜首,其顶尖的霸主地位不可撼动,而M1 mac业已发布了一段时间,作为跨时代的顶级芯片系统,这两大巨头能否珠联璧合,让开发者们猛虎添翼、更上层楼?本次我们尝试在M1 mac系统中搭建Java开发环境,并且集成目前Web开发领域红的发紫的Springboot框架,另外,谁说玩儿Java就必须得用Eclipse或者IntelliJ IDEA?我们就骄傲地使用Vscode。
珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot)
|
Shell 调度 iOS开发
奇技淫巧玄妙无穷| M1 mac os(苹果/AppleSilicon)系统的基本操作和设置
最近有个朋友跟我说,说他新入职了一家公司,公司还不错,给他配了一台Mac,但是呢他以前一直在Windows环境下开发,对Mac os并不了解,他感到很彷徨,所以本次呢,我们来分享一下,当手头儿有一部崭新的Mac,我们应该怎么上手操作和配置,让它成为我们开发的好帮手。
奇技淫巧玄妙无穷| M1 mac os(苹果/AppleSilicon)系统的基本操作和设置
|
机器学习/深度学习 机器人 PyTorch
金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch)
笔者投入M1的怀抱已经有一段时间了,俗话说得好,但闻新人笑,不见旧人哭,Intel mac早已被束之高阁,而M1 mac已经不能用真香来形容了,简直就是“香透满堂金玉彩,扇遮半面桃花开!”,轻抚M1 mac那滑若柔荑的秒控键盘,别说996了,就是007,我们也能安之若素,也可以笑慰平生。好了,日常吹M1的环节结束,正所谓剑虽利,不厉不断,材虽美,不学不高。本次我们尝试在M1 Mac os 中搭建Python3的开发环境。
金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch)
|
机器学习/深度学习 开发框架 Java
别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境
在每个开发者心里,都会有一门“最好”的语言,在这个世界的某个深处,在一些矫矫不群的人们心中,这门语言的名字叫做Ruby,它今年二十八岁了,历史和Java一样的悠久,但是它没有大厂背书、它的性能被开发者诟病、时至今日依然无法高效利用多核资源,甚至于它每年都要被“死亡”一次,相比于有太阳计算机系统、甲骨文、IBM 这些大公司支持的 Java,它是那么的一无所有,但是,它又拥有全世界最虔诚的“信徒”,拥有最活跃的开发者社区,这一切,又让它是那么的应有尽有。是的,这就是Rubyist的理念:有的时候,你想证明给一万个人看,到后来,你发现只得到了一个明白的人,那就够了。
别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境
|
开发工具 iOS开发 MacOS
mac OS简单实用的包管理器Homebrew,真的非常好用
今天安装zookeeper时使用的是brew方式来安装,才深深的体会到brew的厉害之处,闲话少叙,进入正题。
285 0
|
iOS开发 MacOS
MAC OS dmg文件转换为ISO
MAC OS dmg文件转换为ISO
460 0
MAC OS dmg文件转换为ISO