乍看起来,Linux这样的现代操作系统非常复杂,内部有多得令人眼花缭乱的各种组件在同步运行和相互通信。比如:Web服务器可以连接到数据库服务器,还有可能用到很多其他程序也在使用的公共组件。那么,整个系统究竟是怎样运作的呢? 理解操作系统工作原理最好的方法是抽象思维,换句话说,你可以暂时忽略大部分细节。就像坐车一样,通常你不会去在意车内固定发动机的装配螺栓,也不会关心你走的路是谁修筑的。如果你是一个乘客的话,你可能只关心车要做的事情(比如车要把你带到哪)以及车的一些基本操作(比如如何打开车门、怎样系好安全带)。 但如果你在开车的话,就需要了解更多的细节,比如如何控制油门、怎样换挡,还有如何处理意外情况。 如果我们觉得开车这个事情太复杂,就可以运用“抽象思维”来帮助理解。首先你可以将“一辆汽车在路上行驶”抽象为三个部分:汽车、道路和驾驶操作。这样有助于将复杂的问题分解开来。如果道路颠簸,你不会去埋怨车辆本身和你的驾驶技术。相反,你可能会问为什么这条路这么烂,或者如果这是条新修的路的话,那么筑路工人的活干得可真够差劲的。 软件开发人员运用抽象思维来开发操作系统和应用程序。在计算机软件领域有许多术语来描述抽象的子系统,如子系统、模块和包等。本书中我们使用组件这个相对简单的词。在软件开发过程中,开发人员通常不用太关心他们需要使用的组件的内部结构,他们只关心能使用哪些组件,以及怎么个用法。 本章概述了Linux操作系统涉及的主要组件。虽然每一个组件都包含纷繁复杂的技术细节,但我们将暂时忽略这些细节,而专注于这些组件在系统中发挥的功能。 1.1 Linux 操作系统中的抽象级别和层次 在组织得当的前提下,通过抽象将系统分解为组件有助于我们了解其工作机制。我们将组件划分为层次或级别。组件的层次(或级别)代表它在用户和硬件系统之间所处的位置。Web浏览器、游戏等应用处于最高层,底层则是计算机硬件系统,如内存。操作系统处于这两层之间。 Linux操作系统主要分为三层。如图1-1所示,最底层是硬件系统,包括内存和中央处理器(用于计算和从内存中读写数据),此外硬盘和网络接口也是硬件系统的一部分。 硬件系统之上是内核,它是操作系统的核心。内核是运行在内存中的软件,它向中央处理器发送指令。内核管理硬件系统,是硬件系统和应用程序之间进行通信的接口。 进程是指计算机中运行的所有程序,由内核统一管理,它们组成了最顶层,称为用户空间。(另一个更确切的术语是用户进程,无论它们是否直接和用户交互。例如,所有的Web服务器都是以用户进程的形式运行的。) 图1-1 Linux系统的基本组成 内核和用户进程之间最主要的区别是:内核在内核模式(kernel mode)中运行,而用户进程则在用户模式(user mode)中运行。在内核模式中运行的代码可以不受限地访问中央处理器和内存,这种模式功能强大,但也非常危险,因为内核进程可以轻而易举地使整个系统崩溃。那些只有内核可以访问的空间我们称为内核空间(kernel space)。 相对于内核模式,用户模式对内存和中央处理器的访问有一定程度的限制,可访问的内存空间通常很小,对CPU的操作也很安全。用户空间指的是那些用户进程能够访问的内存空间。如果一个用户进程出错并崩溃的话,其导致的后果也相对有限,并且能够被内核清理掉。例如,如果你的Web浏览器崩溃了,不会影响到你正在运行的其他程序。 理论上来说,一个用户进程出问题并不会对整个系统造成严重的影响。当然这取决于我们如何定义“严重的影响”,并且还取决于该进程拥有的权限。因为不同的进程拥有的权限可能不同,一些进程能够执行一些别的进程无权执行的操作。举个例子,如果拥有足够的权限,用户进程可以将硬盘上的数据全部清除。也许你会觉得这样太危险,但好在操作系统提供了一些相关的安全措施,而且大多数用户进程并没有这个权限。
精通Linux(第2版)——1.1 Linux 操作系统中的抽象级别和层次
书名: 精通Linux(第2版)
作者: [美] Brian Ward
出版社: 人民邮电出版社
译者: 姜南 | 袁志鹏
出版年: 2015-7
页数: 304
定价: 59.00元
装帧: 平装
ISBN: 9787115394927