1 、Linux 操作系统中的抽象级别和层次
在组织得当的前提下,通过抽象将系统分解为组件有助于我们了解其工作机制。
我们将组件划分为层次或级别。组件的层次(或级别)代表它在用户和硬件系统之间所处的位置。
Web浏览器、游戏等应用处于最高层,底层则是计算机硬件系统,如内存。操作系统处于这两层之间。
Linux操作系统主要分为三层。如图1-1所示,最底层是硬件系统,包括内存和中央处理器(用于计算和从内存中读写数据),此外硬盘和网络接口也是硬件系统的一部分。
硬件系统之上是内核,它是操作系统的核心。内核是运行在内存中的软件,它向中央处理器发送指令。内核管理硬件系统,是硬件系统和应用程序之间进行通信的接口。
进程是指计算机中运行的所有程序,由内核统一管理,它们组成了最顶层,称为用户空间(user space)。(另一个更确切的术语是用户进程,无论它们是否直接和用户交互。例如,所有的Web服务器都是以用户进程的形式运行的。)
图1-1 Linux系统的基本组成
内核和用户进程之间最主要的区别是:内核在内核模式(kernel mode)中运行,而用户进程则在用户模式(user mode)中运行。在内核模式中运行的代码可以不受限地访问中央处理器和内存,这种模式功能强大,但也非常危险,因为内核进程可以轻而易举地使整个系统崩溃。那些只有内核可以访问的空间我们称为内核空间(kernel space)。
相对于内核模式,用户模式对内存和中央处理器的访问有一定程度的限制,可访问的内存空间通常很小,对CPU的操作也很安全。用户空间指的是那些用户进程能够访问的内存空间。如果一个用户进程出错并崩溃的话,其导致的后果也相对有限,并且能够被内核清理掉。例如,如果你的Web浏览器崩溃了,不会影响到你正在运行的其他程序。
理论上来说,一个用户进程出问题并不会对整个系统造成严重的影响。当然这取决于我们如何定义“严重的影响”,并且还取决于该进程拥有的权限。因为不同的进程拥有的权限可能不同,一些进程能够执行一些别的进程无权执行的操作。举个例子,如果拥有足够的权限,用户进程可以将硬盘上的数据全部清除。也许你会觉得这样太危险,但好在操作系统提供了一些相关的安全措施,而且大多数用户进程并没有这个权限。
2、 内核
我们之所以介绍主内存和状态,是因为内核的几乎所有操作都和主内存相关。其中之一是将内存划分为很多区块,并且一直维护着这些区块的状态信息。每一个进程拥有自己的内存区块,且内核必须确保每个进程只使用它自己的内存区块。
内核负责管理以下四个方面。
- 进程:内核决定哪个进程可以使用CPU。
- 内存:内核管理所有的内存,为进程分配内存,管理进程间的共享内存以及空闲内存。
- 设备驱动程序:作为硬件系统(如磁盘)和进程之间的接口,内核负责操控硬件设备。
- 系统调用和支持:进程通常使用系统调用和内核进行通信。
参考文章:
《精通Linux(第2版)》第1章概述