Chapter 1 - Linux 内核简介
Created by : Mr Dk.
2019 / 10 / 07 22:28
Nanjing, Jiangsu, China
1.1 Unix 的历史
Unix 诞生于贝尔实验室,是一个交互式的操作系统。1973 年,整个 Unix 用 C 进行了重写,给 Unix 系统的广泛移植铺平了道路。由于 Unix 设计简洁,且发布时提供源代码,因此出现了很多的变体:
- 贝尔实验室的 Unix System III
- AT&T 的 System V
- 加州大学伯克利分校的 Berkeley Software Distributions (BSD)
Unix 强大的根本原因:
- 简洁:只有几百个系统调用,且有明确的设计目的
- 一切皆文件:这种抽象使得对数据或设备的操作可以通过一套相同的接口完成
- 由 C 语言编写:在各种硬件体系结构面前都有较强的移植能力
- Unix 的进程创建十分迅速:
fork()
- Unix 提供一套简单而稳定的进程间通信原语
Unix 的成功归功于 简洁和一流的设计——归功于 Dennis Ritchie, Ken Thompson 和其它早期设计人员的最初决策,也归功于那些永不妥协于成见,从而赋予 Unix 无穷活力的抉择。
1.2 追寻 Linus 足迹:Linux 简介
1991 年,Linus Torvalds 为当时使用新推出的 Intel 80386 CPU 的计算机开发的一款全新的 OS。由于其许可证条款的约定,Linux 迅速成为多人合作开发项目,Linux 是 类 Unix 系统,但 不是 Unix。Linux 借鉴了 Unix 的许多设计,实现了 Unix 的 API(由 POSIX 或其它标准定义)。Linux 没有像其它 Unix 的变种那样,直接使用 Unix 的源代码。因此它们的 API 一致,但内部实现可能大相径庭。
Linux 是一个非商业化的产品。使用 GNU 的 General Public License (GPL) 2.0 作为限制条款,可以自由获取代码并随意修改。如果希望发布内核,则需要保证让得到该内核的人同时享有作者曾经享受过的所有权利(包括 source code)。
1.3 操作系统和内核简介
略过?
1.4 Linux 内核和传统 Unix 内核的比较
Unix 内核几乎都是一个不可分割的静态可执行库,以巨大、单独的可执行块的形式在一个单独的地址空间中运行。
单内核与微内核设计的比较
单内核从整体上,作为一个大的过程来实现,同时运行在一个单独的地址空间上。内核以单个静态二进制文件的形式存放在磁盘上,简单、性能高、内核之间的通信开销微不足道。
微内核被划分成独立的过程,每个过程被称为服务器。只有强烈请求特权服务的服务器运行在特权模式下,其它服务器运行在用户空间,服务之间通过 消息 进行通信,有效避免了一个服务的失效祸及另一个。实际中的微内核,让大部分或者全部的服务器运行于内核态,以减少开销——违背了微内核设计的初衷。Windows NT (Windows XP, Windows Vista, Windows 7) 和 Mach (Mac OS X 的一部分)
Linux 是一个单内核,但汲取了微内核的精华:
- 模块化设计
- 抢占式内核
- 支持内核线程
- 动态加载模块
Linux 内核和传统 Unix 系统之间存在的一些显著差异:
- Linux 支持动态加载内核模块
- 可以在需要的时候动态卸载或加载部分内核代码
- Linux 支持对称多处理机制 (SMP)
- Linux 内核不区分线程和一般进程
- Linux 提供具有设备类的面向对象的设备模型、热插拔事件,以及用户空间的设备文件系统 sysfs
- Linux 忽略了一些拙劣的 Unix 特性,忽略了难以实现的过时标准
- Linux 体现了自由的精髓
- 如果一个特性没有价值或创意很差,没有人会被迫去实现它
- 任何改变都必须要能通过简洁的设计和正确可靠的实现来解决
Summary
当成故事看看也蛮有意思的