文章介绍了初始化进程(init)应该具有的特点, 同时介绍了几个初始化进程以及其优缺点.
一个好的初始化进程应该:
- 尽可能少启动程序(仅必要时再启动), 并且并行启动这些服务.
- 并行启动所有监听 socket , 即先放置 “placeholder” , 当 socket 真正得到需要处理的消息时再启动与之相对应的服务.
- 并行启动 D-Bus 服务, 与 socket 类似.
- 并行挂载文件系统, 即先放置虚假的目录, 当被读取时阻塞调用进程并真正挂载文件系统, 然后处理并返回调用结果.
- 降低初始化进程为系统带来的额外的开销.
- 跟踪进程, 借助 cgroup 来跟踪进程所 fork 的子进程, 并防止其逃离监视.
- 控制进程的运行环境, 借助 cgroup 来控制进程所获得的资源.