1.1 Unix 特点
- Unix 很简洁,不像其他动辄几千个系统调用并且设计目的不明确的系统,Unix 仅仅提供几百个系统调用并且有一个非常明确的设计目的。
- Unix 中所有的东西都被当作文件对待。
- Unix 内核和相关的系统工具软件是用 C 语言编写而成。
- Unix 进程创建非常迅速,并且有一个非常独特的 fork()系统调用。
1.2 Linux 简介
- Linux 是类 Unix 系统,但它不是 Unix 。
- Linux 是非商业化的产品,它使用 GNU 的 General Public License(GPL) 第二版本作为限制条款。
1.3 操作系统和内核简介
操作系统:指在整个系统中负责完成最基本功能和系统管理的那些部分。这些包括内核、块设备驱动程序、启动引导程序、命令行 shell 或者其他种类的用户界面、基本的文件管理工具和系统工具。
内核:系统的其他部分必须依赖内核这部分软件提供的服务,像管理硬件设备、分配资源等。内核有时候被称作管理者或者操作者核心。通常一个内核由负责相应中断的中断服务程序,负责管理多个进程而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。
系统调用:当一个程序执行一条系统调用,我们说内核正在代其执行,这种情况下,应用程序被称为通过系统调用在内核空间运行,而内核被称作运行于进程上下文中。
中断处理:许多操作系统的中断服务程序,包括 Linux 的,都不在进程上下文中。它们在一个与所有进程无关的、专门的中断上下文中运行。之所以存在这样一个专门的执行环境,是为了保证中断服务程序能够在第一时间相应和处理中断请求,然后快速地退出。
上下文代表着内核的活动范围,实际上我们可以将每个处理器在任何指定时间点上的活动概括为下列三者之一:
- 运行于用户空间,执行用户进程。
- 运行于内核空间,处理进程上下文,代表某个特定的进程执行。
- 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断。
以上所列几乎包括所有情况,即使边边角角的情况也不列外,例如当 CPU 空闲时,内核运行一个空进程,处于进程上下文,但运行于内核空间。
单内核与微内核:
单内核:所有的服务都在这样一个大内核地址空间上运行,内核之间的通信微不足道的,因为大家都运行在内核态,并处于同一个地址空间。
微内核:微内核的功能划分为多个独立的过程,没一个过程叫做一个服务。理想情况下,只有强烈请求特权服务的服务器才运行在特权模式,其他运行在用户空间。
Linux 是一个单内核,也就是说,Linux 内核运行在单独的内核地址空间上,不过 Linux 汲取了微内核的精华。
Linux 内核和传统 Unix 系统之间存在的显著差异:
- Linux 支持动态加载内核模块。
- Linux 支持对称多处理 (SMP) 机制。
- Linux 内核可以抢占,2.6版本以后的内核支持内核态抢占。
- Linux 对线程的支持实现比较有意思,内核并不区分线程和其它的一般进程,对于内核来说所有的进程都一样——只不过是其中的一些共享资源而已。
- Linux 忽略了一些 Unix 设计拙劣的特性。
- Linux 体现了*一词的精髓。
1.4 Linux 内核版本
从版本号可以看出该内核是稳定版还是处于开发中的版本,如果是偶数,此内核是稳定版,如果是奇数,那么它就是开发板。