频道栏目
读书频道 > 系统 > 其他综合 > 操作系统之哲学原理(第2版)
前言
2012-10-27 16:49:11     我来说两句
收藏   我要投稿
操作系统是计算机系统的核心系统软件,负责控制和管理整个系统,使之协调工作。本书对操作系统的核心内容进行了全面分析,包括操作系统的发展历史和基本概念、进程与线程、内存管理、文件系统、输入与输出、多核...  立即去当当网订购

In Pursuit of Absolute Simplicity求于至简,归于永恒

当你在电脑上玩游戏、与朋友聊天或编写一个程序并加载运行的时候,你有没有一种像在观看魔术的感觉?编写好的程序能够编译运行,计算出结果,并显示或打印出来。你有没有觉得它很神秘?

如果想揭开这层神秘的面纱,你就得学习操作系统

因为操作系统是掌控计算机运行的系统,在学习它的过程中,读者能够了解程序在计算机上运行的全景,或者说我们所认为的全景(见图1)。之所以这么说,是因为精确了解程序在计算机上运行的全景是极其困难的(有人认为这根本就是不可能的)。当然,这里的程序指的是有一定规模的程序,而不是那种只有几行代码的小程序(trivial program)。从某种程度上说,没有人敢肯定自己清楚计算机在任意时刻所处的状态。例如,在多流水线计算机上,如果发生中断或异常, 我们根本就得不到一个精准的状态。唯一能做的就是推倒重来。


 

计算机的心智

人有心智吗?我想所有人都会回答:有!人的心智就是人的灵气。这是每一个人的生命之气。就是这个灵气赋予了人丰富的思维、感受和行动能力(当然,也有人认为这是肉体进化的结果,不过这不是本书要讨论的问题)。

那么计算机有心智吗?这不是一个诡秘或者搞笑的问题。

人们通常认为能够运动的生命都是有灵气的,既然计算机能够完成一些人脑才能够完成的理性任务,它当然也有心智!而这个心智就是操作系统(见图2)。因为操作系统赋予了计算机活力。虽然读者有可能尚不明白操作系统是怎么一回事儿,但也许知道若没有操作系统,现代计算机是运转不起来的(这里需排除远古时代的古老计算机)。操作系统作为计算机赖以运转的控制中心,称其为计算机的心智可谓恰如其分。


 

众所周知,理解或看透一个人的心智是很困难的,所谓画虎画皮难画骨,知人知面难知心。依此类推,既然操作系统是计算机的心智,恐怕理解起来也是困难重重的了。而这正是许多人在学习和研究操作系统时的共同感受。

操作系统的奥秘

    记得小时候常常念过的一首诗是这样的:
    从小时候就开始数了。
    数到懂事、数到成熟,
    还没有数清。
    天上的星星为什么数不清呢?
    像记忆和幻想,
    永远背负着固执的谜……

对于许多大学计算机及相关专业的同学来说,操作系统就像天上的星星(见图3),隐藏着一个固执的谜,永远学不清楚。不过,操作系统真的学不清楚吗?

不是的。学不清楚是因为没有看到其背后的奥秘。这个奥秘不是所有的人都知道的。即使是研究操作系统的人也不一定意识到它,更别提计算机初学者了。


 

那么这个奥秘是什么呢?

天上的星星数不清是因为我们试图做的事情是数星星。如果我们换个角度,不去数星星,而是寻找星星的设计师,让他告诉我们星星的数量,不就清楚了吗?

这也正是学习操作系统的奥秘。要理解操作系统,就要找到操作系统的设计师,让他们告诉我们操作系统所蕴涵的所有秘密。当然,这里的寻找设计师并不是真的找来他们,因为找到所有的设计师是不可能的。这里的设计师指的是一种抽象,一种所有设计师所共有的人生哲学,因为设计师在设计操作系统时会不自觉地将自己的思维或人生追求构造在操作系统里,从而赋予操作系统以心智,而操作系统也就在这种心智的指挥下运行着。

操作系统之哲学原理

正如前面所述,让设计师告诉我们操作系统的秘密是理解操作系统的最好办法。他们所用的载体就是其所遵循的生活哲学,这些生活哲学就是操作系统所遵循的哲学原理。

本书就是试图从这些哲学原理(也就是人类生活哲学)的视角来阐述操作系统,从而揭开操作系统的神秘面纱。

例如,CPU管理(进程与线程)、内存管理(虚拟存储)、外存管理(文件系统)、I/O管理(输入与输出)等操作系统的核心机制不外乎是对资源的管理,它们都遵循着一切人类资源管理的基本原则,即如何有效地发掘资源、监控资源、分配资源和回收资源。

除了提供管理的功能外,操作系统还需要保证自己的正常运转,即它必须尽力使自身不发生失效或崩溃,因为这是提供其他一切功能的基础。这与人类确保自身健康生活作为开发利用资源的前提是一个道理。

如果我们掌握了资源的根本属性,即资源管理必然涉及共享和竞争的管理,理解了操作系统必须首先保障自己的正常运转,就会理解操作系统的一切行为。前者指引着操作系统功能的设计与进化,后者则推动着操作系统可靠性的演变。

资源管理也好,保证自身的正确性也好,它们都存在着根本的线索。这条根本线索就是人类在长期的生活实践中摸索出来的管理社会和保障自身安全的各种办法。这些办法是随着人类哲学思维的变化而改进的。因此,只要明白了人类的哲学思维,就能明白操作系统所遵循的哲学原理,进而明白整个操作系统的设计与构造。

除了使操作系统易于理解外,从哲学的层面阐述操作系统的原理还有如下好处:

操作系统可以变化,但支持其存在的哲学原理是不变的。这样,本书的内容可以在操作系统不断演变的环境下保持有效,而不会像其他书中的内容,随着时间的推移而过时。

对于很多人来说,操作系统所采取的机制、策略和手段看上去十分枯燥,如果从哲学原理上给它们赋予人性的特点,这些机制、策略和手段便不再枯燥。

通过将人生哲学与操作系统结合起来,从操作系统哲学原理的层次阐述操作系统的核心技术,就能够理解和掌握操作系统的精髓。

本书内容安排

为清楚地阐述操作系统的哲学原理,也为了使内容显得紧凑,逻辑上一气呵成,本书只选择了操作系统的核心内容进行分析,放弃了对操作系统核心以外内容,如安全、多媒体系统、虚拟机技术、光盘技术等的论述。本书集中精力对操作系统发展的历史背景、进程与线程、内存管理、文件系统、输入与输出、多核环境下的进程调度和操作系统设计进行了哲学原理层面上的分析与论述,而将安全、多媒体、虚拟机等技术留给别的专业书籍进行论述。对内容的这种安排有如下好处:

可使本书重点突出、逻辑清晰、内容连贯,便于学生顺利掌握操作系统的核心与关键。

操作系统的核心内容经过长久的研究与实践,已经变得较为稳定并且形成了众所公认的标准,讲解起来没有歧义。

操作系统的非核心部分由于研究的时间短,工业界参与的程度较低,并无公认的标准,论述起来要么不全面,要么显得凌乱,使刚刚接触操作系统的读者感到迷惑。

只要掌握了核心内容的原理,读者便能通过自学掌握操作系统核心以外的知识。

本书覆盖全国硕士研究生入学统一考试计算机学科《研究生考试大纲》中操作系统部分全部内容。

本书分为8篇,分别是基础原理篇、进程原理篇、线程原理篇、内存原理篇、文件原理篇、I/O原理篇、多核原理篇和操作系统设计篇,内容结构如图4所示。


 

基础原理篇

该篇包含第1~3章的内容。第1章的内容包括智者的挑战、人造与神造、程序是如何运行的、什么是操作系统、魔术与管理、用户程序与操作系统、操作系统范畴和为什么学习操作系统。第2章探讨操作系统演变的主要过程:从单一控制终端、单一操作员,到批处理、多道批处理、分时操作系统、实时操作系统、现代操作系统;对商业操作系统演变的过程进行了分析,然后探讨操作系统的分类和未来发展趋势。第3章简要回顾计算机硬件基本知识,探讨什么是“抽象”,讲解用户态与内核态,阐述操作系统结构、系统调用、操作系统的壳等知识。

进程原理篇

该篇对操作系统最核心的概念——进程进行讲解,包括第4~6章的内容。第4章阐述进程出现的逻辑必然性、多道编程的效率、进程的创建和消亡、进程的状态及其转换、进程与地址空间、进程模型的实现和进程模型的缺陷。第5章讲解进程模型实现的手段:调度,主要内容包括调度的目标,先来先服务、时间片轮转、短任务优先、优先级调度、混合调度、实时调度等算法,并对优先级倒挂和线程的不确定性进行讨论。第6章的内容包括为什么要通信、管道、记名管道、套接字、信号、信号量、共享内存、消息队列等。

线程原理篇

进程虽然让并发从理想变为现实,但其自身却是串行的:进程只有一个执行序列。若要使进程本身也提供并发,则需要对线程进行讨论。该篇讨论了进程级的并发机制-线程模型,包括第7~10章的内容。第7章的内容包括进程分身术——线程、线程管理、线程的用户态和内核态以及混合态实现、现代操作系统的线程实现模型、多线程之间的关系、线程模型主要考虑的问题等。第8章的内容包括为什么同步、同步的目的、锁原语的进化、睡觉与叫醒原语、信号量、管程、消息传递和栅栏等。第9章对死锁的产生、发展、防止与避免进行讲解,并讨论死锁、活锁和饥饿的关系。第10章讲述如何使用中断启用和禁止、测试与设置来实现锁原语。

内存原理篇

该篇对操作系统的另外一个重要构成部分——内存管理进行阐述,包括第11~14章的内容。第11章讲述内存管理的环境、内存管理的目标、虚拟内存、操作系统在内存中的位置、单道编程的内存管理、固定加载地址、多道编程的内存管理、固定分区、非固定分区、交换、地址翻译、闲置空间管理等内容。第12章讲解的内容包括基址极限的问题、分页管理、页表、页面翻译过程、分页管理系统的优缺点、多级页表、地址翻译速度、锁住页面、内存抖动和页面尺寸设计。第13章对页面更换算法的来龙去脉、欲达到的目的、各种具体的页面更换算法进行细致讲解。第14章的内容包括分段管理系统、分段的优缺点、段号与寻址位数,并对否定之否定在内存管理模式发展过程中的作用进行了讨论。

文件原理篇

该篇对操作系统的第三个核心构件——文件系统进行讲解。包括第15~18章的内容。第15章讲述的内容包括磁盘结构、磁盘访问速度、磁盘的操作系统界面、磁盘访问过程和磁盘调度。第16章讲述为什么需要文件系统、什么是文件系统、文件系统的目的、文件的基本知识、文件的存储结构、文件类型、文件访问、文件属性、文件操作、文件夹、相对与绝对路径、共享与链接、内存映射的文件等内容。第17章的内容包括文件系统分布、文件的实现、文件夹的实现、共享文件的实现、磁盘空间的管理等。第18章的内容包括文件安全性能(文件访问控制、访问控制表、能力表)、文件可靠性能(持久性、一致性、日志、交易、随影、一致性检查)和文件系统的效率性能(提前读取、减少磁臂移动距离、日志结构的文件系统LFS)。

I/O原理篇

该篇对计算机与外界进行沟通的机制——输入与输出进行讲解。该篇仅有一章(第19章),讨论的内容包括输入输出的重要性和目的、输入输出硬件的哲学原理、物理I/O模式(专有通道I/O、内存映射的I/O、复合I/O、DMA)、输入输出软件的哲学原理、软件I/O模式(可编程I/O、中断驱动的I/O、DMA)、I/O软件分层和设备驱动程序等。

多核原理篇

该篇对新出现的多核技术进行讲解,重点讨论多核环境给操作系统带来的影响。该篇分为多核结构和多核环境下的进程同步与调度两章。第20章讲解的内容包括多核处理器结构(超线程结构、多核结构、多核超线程结构)、多核内存结构(UMA、NUMA、COMA、NORMA)、对称多核处理器计算机的启动过程、多处理器之间的通信、SMP缓存一致性等。第21章的内容包括多核进程同步、多核环境下的软件同步原语、旋锁及其实现、队列旋锁、多核环境下的进程调度、多核环境下的能耗管理和多核系统性能。

操作系统设计篇

该篇从高屋建瓴的角度对操作系统设计的十条哲学原理进行阐述。显然,操作系统的设计原则有很多,本篇选取的只是诸多原则里面非常重要的十条。第22章将从操作系统和人类社会两个层面对这十条原理进行论述与比较,以使读者更加清楚地明白操作系统就是人类社会在计算机里面的反映。读者可自行发现操作系统的其他设计原则。

本书特点

本书从哲学的视角对操作系统阐述了独到的见解。从人类自然的行为规范推演到操作系统的设计,以一条逻辑主线演绎了整个操作系统的各种原理。本书的特点是抽象提升(即从哲学原理上阐述操作系统的各种原理与设计)、联系生活(即通过人所熟知的生活实例来分析操作系统)、模块整合(即将操作系统的各个模块通过举例连结起来)、逻辑贯通(即将操作系统的各种机制以一根逻辑主线的发展依次讲解)和系统关联(即将涉及的其他学科知识点如体系结构和编译器等嵌入进来)。本书内容上更加新颖、系统上更加完整、逻辑上更加连贯、解说上更加易懂和层次上更加丰富的特点。

读者在阅读学习完本书后,将达到如下目标:

    ★ 了解操作系统在计算机软硬件整个体系中的中心主导作用。
    ★ 掌握操作系统的基本概念、原理、技术和实现机制。
    ★ 理解操作系统原理背后的人文背景与历史动机。
    ★ 运用操作系统知识来分析和解决问题。
    ★ 掌握操作系统设计的原理,为以后设计操作系统打下基础。

这里需要提醒的是,本书阐述的是操作系统的原理,它不依赖于任何具体的实现,而是凌驾于所有具体商业操作系统的进程实现之上,即本书所阐述的思想和原理对所有操作系统都适用。但具体商业操作系统在应用这些原理时可以有很灵活的方式。事实上,具体的商业操作系统在应用这些原理时确实采取了不同的方式,有的更为精密,也有的更加精简。另外,由于我们注重的是原理,对个体机制实现时采取的数据结构通常不做详细的论述,而是点到为止。这是因为数据结构必须以真正的操作系统为蓝本进行讲解,而真正的商业操作系统使用的数据结构通常非常复杂,对此进行繁琐的讲解将把学生弄得晕头转向,而不利于对操作系统核心原理的把握。

当然了,如果要达到能够设计开发真正商业操作系统的境界,读者还需要进行“操作系统工程”或“操作系统实现”等知识的学习。而这种工程或实现的课程通常以具体的操作系统为对象进行讲述。这些具体操作系统可以是Windows、UNIX、Linux,当然也可以是其他一些非主流商业操作系统(如 Android、Symbian等)。如果能够将本书阐述的原理与操作系统工程或实现相结合,将取得极好的效果。

此外,本书使用的伪代码采用类似C/C++的结构,每种原理的表示均以展示操作系统的思路为最高目标,并不对表示的细节进行优化,以使得逻辑清晰,方便绝大多数读者理解。

现在就让我们一起来揭示秘密,数清操作系统里的星星吧。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:操作系统之哲学原理(第2版)
下一篇:目录
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站