第1章 Linux内核简介
1.1 Unix的历史
Unix特点
- 简洁:提供几百个系统调用且有明确的设计目的
- 所有东西被当做文件对待:数据和设备的操作使用相同的系统调用接口read()、write()、lseek()和close()
- C语言编写,移植能力强
- 进程创建迅速,独特fork()系统调用
- 简单且稳定的进程间通信元语
快速简洁的进程创建过程使 Unix 的程序把目标放在一次执行保质保量地完成一个任务上,而简单稳定的进程间通信机制又可以保证这些单目的的简单程序可以方便地组合在一起,去解决现实中变得越来越复杂的任务。正是由于这种策略和机制分离的设计理念,确保了 Unix 系统具备清晰的层次化结构。
1.2 追寻 Linus 足迹∶ Linux 简介
Linux是类Unix系统,但他不是Unix。Linux模仿了Unix的API,但实现存在不同。Linux没有抛弃 Unix 的设计目标并且保证了应用程序编程接口的一致。
Linux内核是自由(公开)软件。Linux 系统的基础是内核、C库、工具集和系统的基本工具,如登录程序和 Shell。Linux系统也支持现代的XWindows系统,这样就可以使用完整的图形用户桌面环境,如 GNOME。
1.3 操作系统和内核简介
操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分。这些部分应该包括内核、设备驱动程序、启动引导程序、命令行 Shell或者其他种类的用户界面、基本的文件管理工具和系统工具。
内核有时候被称作是管理者或者是操作系统核心。系统其他部分必须依靠内核这部分软件提供的服务,像管理硬件设备、分配系统资源等。
-
内核空间:系统态,拥有受保护的内存空间和访问硬件设备的所有权限 用户空间
-
允许它们使用的部分系统资源,并且只使用某些特定的系统功能,不能直接访问硬件,也不能访问内核划给别人的内存范围,还有其他一些使用限制
-
系统调用:系统中运行的应用程序通过系统调用来与内核通信
-
中断服务程序:异步的中断号去打断处理器的执行,继而打断内核的执行。中断通常对应着一个中断号,内核通过这个中断号查找相应的中断服务程序,并调用这个程序响应和处理中断。
可以将每个处理器在任何指定时间点上的活动必然概括为下列三者之一∶
·运行于用户空间,执行用户进程。
·运行于内核空间,处于进程上下文,代表某个特定的进程执行。
·运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断。
单内核和微内核
单内核
单内核就是把内核从整体上作为一个单独的大过程来实现,运行在一个单独的地址空间中,通常以单个静态二进制文件形式存储在磁盘中。通信小,内核可以直接调用函数,简单且性能高。
微内核
功能被划分为多个独立的过程,每个过程被叫作服务器。只有强烈请求特权服务的服务器才运行在特权模式下,其他服务器运行在用户空间。所有服务器保持独立,运行在自己的地址空间上,通过消息传递处理内核通信。