第一章 绪论
linux 系统是类 Unix 操作系统,其他类 Unix 系统参照下图。
.-----------. .------------------.
SVR4 | AT&T <-收费系统鼻祖-> 4.4BSD | 加州大学伯克利分校
| '-----------' '------------------'
|
| .------------------. .-----------.
| Digital Unix | DEC Free BSD
| '------------------' '-----------'
|
| .---------. .-----------.
| AIX | IBM NetBSD
| '---------' '-----------'
Unix-like System |
| .----------. .-----------.
| HP UX | HP OpenBSD
| '----------' '-----------'
|
| .-------------. .--------------.
| Solaris | Sun MAC OS | Apple
| '-------------' '--------------'
|
| .-------------.
'> Linux | Linus
'-------------'
- Linux 是真正的 Unix 内核,但不是完整的 Unix 操作系统,像文件系统,窗口系统等等没有包含,但这些都可在GNU免费获得;
- Linux 是开源系统(地球人都知道)GPL 协议;
- 所有 Unix 系统都在遵循通用的标准,如 IEEE 的 POSIX(Portable Operating System based on Unix)和 X/Open 的 CAE(Common Applications Environment);
- 现有标准仅指定 App 编程接口,也就是说对于内核的内部设计没有任何限制,但通常类 Unix 内核通常共享基本的设计思想,了解人一个内核都有助于理解其他内核;
现代 Unix 操作系统的特点:
- 虚拟内存;
- 虚拟文件系统;
- 轻量级进程;
- 可靠的信号;
- SVR4 进程间通信;
- 对称多处理器(Symmetric Multiprocessor,SMP)
Linux 的有名的商用 Unix 系统的竞争评价:
- Linux 内核结构是传统的单块结构(还有其他的内核结构?),是一个庞大复杂的 DIY 程序;
- Linux 内核支持动态地按需装载和卸载部分内核代码(模块module)(现代操作系统都可以);
- 内核线程(kernel thread)Linux 内核线程以一种十分受限制的方式来周期性的执行几个内核函数。Linux 内核线程不能执行用户程序,它不代表基本的可执行上下文的抽象(等待解惑??)
- 支持多线程应用程序。多线程用户程序由多个轻量级进程(Lightweight process LWP)或进程组成,当所有商用 Unix 内核的 LWP 都基于内核线程时,Linux 却把 LWP 当做基本的可执行上下文,并通过非标准的系统函数 clone() 来处理它们。
- Linux 是非抢占式(nonpreemptive)内核。完全抢占式内核(Solaris 2.x 和 Mach 3.0)和固定抢占点内核;非抢占意味着没有“特权流”,各个进程或线程无须担心被中断,也无须担心数据被另一个线程改变。
- 多处理器支持。Linux 2.2 支持多处理器,但没有支持并发处理;
- 文件系统相对较弱,但可引入像面向对象的虚拟日志文件系统;
- 流。像编写设备驱动的 I/O 流子系统,Linux 没有这类子系统;
Linux 的优势
- 免费,开源,可随意定制;
- 可流畅运行在低配机器上;
- 充分挖掘了硬件特点,运行快,效率高,Linus 之所以抛弃 I/O 流,就是因为其性能差;
- 对源代码的质量要求高;
- 内核非常小,而且紧凑(甚至可以把内核映像和完整的根文件系统和所有基本系统程序,放在1.4M的软盘上);
- 与很多常见系统高度兼容;
- 有很好的支持;
操作系统的基本概念
操作系统要与硬件部分交互作用,为所有包含在硬件平台上的底层可编程部件提供服务,并为运行在计算机上的应用程序提供执行环境。内核和操作系统是同义词。
类 Unix 系统在用户应用程序前把与计算机物理组织相关的所有底层细节都隐藏起来,程序若要使用硬件资源必须向系统发出请求,得到系统许可后内核代替应用程序和硬件进行交互;而像 MS-DOS 系统则允许所有用户程序直接与硬件部分进行交互。
为实现这种机制硬件为 CPU 引入了至少两种不同的执行模式,应用程序的非特权模式(User Mode)和内核的特权模式(Kernel Mode)