18. Linux 操作系统

背景回顾:我们已经了解操作系统作为 “状态机的管理者”,通过为应用程序提供 fork, execve, exit, mmap, pipe, open, read, write 等系统调用,配合 C/汇编实现的运行库,就为 “一个进程” 逐步构建出完整的应用世界做好了准备。

本讲内容:从理论到实践,Linux 世界到底是如何构建起来的?我们用一个 “最小” 的 Linux 系统的启动、initramfs 的探索,最终看到 systemd 是如何作为 “第一个进程” 真正被启动的。

18.1 Just for Fun

18.2 启动 Linux 🌶️

18.3 构建应用程序的世界 🌶️

Take-away Messages

我们从 CPU Reset 后的 “硬件初始状态” 到操作系统加载完 init 进程后的 “软件初始状态”,从此以后,计算机系统中的一切都是由应用程序主导的,操作系统只是提供系统调用这一服务接口。正是系统调用 (包括操作系统中的对象) 这个稳定的、向后兼容的接口随着历史演化和积累,形成了难以逾越的技术屏障,在颠覆性的技术革新到来之前,另起炉灶都是非常困难的。

课后习题/编程作业

1. 编程实践

🖥️编程

试着在最小的 Linux 中完成一些你感兴趣的任务,例如移植一些有趣的程序。你可能会遇到一些困难:程序可能需要依赖系统中的其他文件或服务,逐渐你就可以理解 systemd 这类系统的设计动机。