1.1 Unix
Unix系统是一个强大、健壮和稳定的操作系统。因为它:
- Unix很简洁。仅提供几百个系统调用。
- 在Unix中,所有的东西都被当做文件对待。这种抽象使对数据和对设备的操作是通过一套相同的系统调用接口来进行的。
- Unix的内核和相关的系统工具软件是用C语言编写而成,因此被广大开发人员接受。
- Unix的进程创建迅速,并且有 fork() 系统调用。
- Unix提供一套非常简单但又很稳定的进程间通信元语。
1.2 Linux
Linux是类Unix系统,但不是Unix,因为它没有直接使用Unix的源代码。
Linux是一个非商业化产品,Linux内核也是自由(公开)软件。一般来说,Linux这个词主要指内核。
1.3 操作系统与内核
操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分,这些部分应该包括内核、设备驱动程序、启动引导程序、命令行shell或其他种类的用户界面、基本的文件管理工具和系统工具。
用户界面是操作系统的外在表象,内核才是操作系统的内在核心。内核有时被称作管理者或操作系统核心。
内核一般处于系统态,独立于普通应用程序,拥有受保护的内存空间和访问硬件设备的所有权限。
在系统中运行的应用程序通过系统调用与内核通信。
内核负责管理系统的硬件设备。当硬件设备想和系统通信时,它首先发出一个异步的中断信号去打断处理器的执行,继而打断内核的执行。中断通常对应一个中断号,内核通过这个中断号查找相应的中断服务程序,并调用此程序相应和处理中断。
我们可以将每个处理器在任何指定时间点上的活动概括为三者之一:
- 运行于用户空间,执行用户进程。
- 运行于内核空间,处于进程上下文,代表某个特定的进程执行。
- 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断。
1.4 Linux内核与传统Unix内核比较
- Linux支持动态加载内核模块。
- Linux支持对称对处理(SMP)机制
- Linux内核可以抢占。
- Linux对线程支持的实现:内核并不区分线程和其他的一般进程。
- Linux提供具有设备类的面向对象的设备模型、热插拔事件,以及用户空间的设备文件系统。
- Linux忽略一些设计得很拙劣的Unix特性。
- Linux体现了自由。