计算机的心智:操作系统之哲学原理
作者 : 邹恒明
出版日期 : 2009-04-20
ISBN : 7-111-26642-6
定价 : 38.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 310
开本 : 16开
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

形而上者谓之道,形而下者谓之器。-《易经》
  这是一个瞬息万变的时代。
  分布式计算的脚步渐行渐远,网格计算的热潮逐步退却,云计算和云存储正慢慢揭开面纱……在所有的变化中,不变的是这些计算的支柱:操作系统!能否深刻理解它也许会决定云时代的“浮沉”。
  本书从生活哲学的视角对操作系统的原理进行阐述,通过逻辑推理演绎操作系统核心技术的奥秘,讨论范围包括操作系统的所有基础内容:背景与历史、进程与线程、通信与同步、调度与死锁、分页与分段、磁盘与文件、输入与输出等。此外,作者以新颖的组织方式讲解了锁的实现、同步机制的发展逻辑、从分段到段页式的演变、多核环境下的同步与调度、操作系统设计的原则。
  本书对操作系统原理的讨论充满趣味性:每一章都力求细致地阐明一个主题,将通俗的哲学原理和逻辑推理贯穿于每一个主题,构成全书的有机整体,并适当地引入计算机组成和编译器知识,揭示操作系统在程序运行中发挥的作用,把读者对操作系统的理解带到一个崭新的境界。

图书特色

图书前言

In Pursuit of Absolute Simplicity求于至简,归于永恒
  谨以此书献给夫人蕾蕾,女儿雨洁、雨蓉、雨恒和雨宜。
  当你在电脑上玩游戏的时候,当你在电脑上与朋友聊天的时候,当你编写完一个程序需要加载运行的时候,你有没有一种像在观看魔术的感觉?编写好的程序能够编译运行,计算出结果,并显示或打印出来。你有没有觉得它很神秘?
  如果想揭开这层神秘的面纱,你就得学习操作系统。
  图1风靡世界的游戏“第二生命”因为操作系统是掌控计算机运行的系统,在学习它的过程中,读者能够了解到程序在计算机上运行的全景,或者说我们所认为的全景。之所以这么说,是因为精确了解程序在计算机上运行的全景是极其困难的(有人认为这根本就是不可能的)。当然,这里的程序指的是有一定规模的程序,而不是那种只有几行代码的小程序。从某种程度上来说,没有人敢肯定自己清楚计算机在任何一个时刻所处的状态。例如,在多流水线计算机上,如果发生中断或异常,我们根本就得不到一个精准的状态。唯一能做的就是推倒重来。
  计算机的心智
  人有心智吗?我想所有人都会回答:有!人的心智就是人的灵气。这是每一个人的生命之气。就是这个灵气赋予了人丰富的思维、感受和行动能力。
  那么计算机有心智吗?这不是一个诡秘或者搞笑的问题。人们通常认为能够运动的生命都是有灵气的,既然计算机能够完成一些人脑才能够完成的理性任务,它当然也有心图2计算机的心智就是操作系统智!而这个心智就是操作系统。因为操作系统赋予了计算机以活力。虽然读者有可能尚不明白操作系统是怎么一回事,但也许知道没有操作系统,现代计算机是运转不起来的(这里需排除远古时代的古老计算机)。操作系统作为计算机赖以运转的控制中心,称其为计算机的心智可谓恰如其分。
  前言前言众所周知,理解或看透一个人的心智是很困难的,所谓的“画虎画皮难画骨,知人知面难知心”。由此推断,既然操作系统是计算机的心智,理解起来恐怕也是困难重重。而这正是许多人在学习研究操作系统时的共同感受。
  操作系统的奥秘
  记得小时候常常念的一首诗是这样的:
  图3理解操作系统有点类似于
  数清楚天上的星星
  从小时候就开始数了。
  数到懂事、数到成熟,
  还没有数清。
  天上的星星为什么数不清呢?
  像记忆和幻想,
  永远背负着固执的迷……
  对于许多大学是学计算机及相关专业的同学来说,操作系统就像是天上的星星(如图3所示),隐藏着一个固执的迷,永远学不清楚。不过,操作系统真的难以学清楚吗?
  不是的。学不清楚是因为没有看到其背后的奥秘。这个奥秘不是所有人都知道的。即使是研究操作系统的人也不一定意识到它,初学计算机者自然就更加不会注意了。
  那么这个奥秘是什么呢?
  天上的星星数不清是因为我们试图做的事情是数星星。如果我们换个角度,不去数星星,而是寻找到星星的设计师,让他告诉我们星星的数量,不就数清楚了吗?
  这也正是学习操作系统的奥秘。要理解操作系统,就要寻找到操作系统的设计师们,让他们告诉我们操作系统所蕴含的所有秘密。当然,这里的寻找设计师并不是真的找来他们,因为找到所有的设计师是不可能的。这里的设计师指的是一种抽象,一种所有设计师所共有的人生哲学,因为设计师们在设计操作系统时会不自觉地将自己的思维或人生追求构造在操作系统里,从而赋予了操作系统以心智,而操作系统也就在这种心智的指挥下亘古运行着。
  操作系统之哲学原理
  正如前面所述,让设计师告诉我们操作系统秘密是理解操作系统的最好办法。他们所用的载体就是其所遵循的生活哲学,这些生活哲学就是操作系统所遵循的哲学原理。
  本书就是试图从这些哲学原理(也就是人类生活哲学)的视角来阐述操作系统,从而揭开操作系统的神秘面纱,令其不再晦涩难懂。
  例如,CPU管理(进程与线程)、内存管理(虚拟存储)、外存管理(文件系统)、I/O管理(输入与输出)等操作系统的核心机制不外乎是资源的管理,它们都遵循着一切人类资源管理的基本原则,即如何有效地发掘资源、监控资源、分配资源和回收资源。
  除了提供管理的功能外,操作系统还需要保证自己的正常运转,即它必须尽力使自身不发生失效或崩溃,因为这是提供其他一切功能的基础。这与人类把确保自身健康生活作为开发利用资源的前提是一个道理。
  如果我们把握了资源的根本属性,即资源管理必然涉及共享和竞争的管理,理解了操作系统必须首先保障自己的正常运转,就会理解操作系统的一切行为。前者指引着操作系统功能的设计与进化,后者则推动着操作系统可靠性地演变。
  资源管理也好,保证自身的正确性也好,它们都有着根本的线索。这条根本线索就是人类在长期的生活实践中摸索出来的管理社会和保障自身安全的各种办法。这些办法是随着人类哲学思维的变化而改进的。因此,只要明白了人类的哲学思维,就能明白操作系统所遵循的哲学原理,进而明白整个操作系统的设计与构造。
  除了使操作系统易于理解外,从哲学的层面阐述操作系统的原理还有如下好处:
  ●操作系统可以变化,但支持其存在的哲学原理是不变的。这样,本书的内容可以在操作系统不断演变的环境下保持有效,而不会像其他书的内容,随着时间的推移而过时。
  ●对于很多人来说,操作系统所采取的机制、策略和手段看上去十分枯燥,如果从哲学原理上给它们赋予人性的特点,这些机制、策略和手段便不再枯燥。
  通过将人生哲学与操作系统联系起来,从操作系统哲学原理的层次阐述操作系统的核心技术,就能够理解掌握操作系统的精髓。
  本书内容安排
  为清楚地阐述操作系统的哲学原理,也为了使内容显得紧凑,逻辑上一气呵成,本书只选择了操作系统的核心内容进行分析,放弃了对操作系统核心以外内容,如安全、多媒体系统、虚拟机技术、光盘技术等的论述。本书集中精力对操作系统发展的历史背景、进程与线程、内存管理、文件系统、输入与输出、多核环境下的进程调度和操作系统设计进行了哲学原理层面上的分析与论述。对内容的这种安排有如下好处:
  ●可使本书重点突出、逻辑清晰、内容连贯,便于学生顺利掌握操作系统的核心与关键。
  ●操作系统的核心内容经过长久的研究与实践,已经变得较为稳定并且形成了公认的标准,讲解起来没有歧义。
  ●操作系统的非核心部分由于研究的时间短,工业界参与的程度较低,并无公认的标准,论述起来要么不全面,要么显得凌乱,使刚刚接触操作系统的读者感到迷惑。
  ●只要掌握了核心内容的原理,读者便能通过自学掌握操作系统核心以外的知识。
  本书覆盖全国硕士研究生入学统一考试计算机学科专业基础综合考试大纲中操作系统全部内容。
  本书一共分为7篇22章。7篇分别是基础原理篇、进程原理篇、内存原理篇、文件原理篇、I/O原理篇、多核原理篇和操作系统设计原理篇。本书的内容结构如图4所示。 图4本书内容结构基础原理篇
  该篇包含第1章至第3章的内容。第1章的内容包括智者的挑战、人造学科、程序是如何运行的、什么是操作系统、魔术与管理、用户程序与操作系统、操作系统范畴和为什么学习操作系统。第2章探讨操作系统演变的主要过程:从单一控制终端单一操作员,到批处理、多道批处理、分时操作系统、实时操作系统、现代操作系统;对商业操作系统演变的过程进行分析,然后探讨操作系统分类和操作系统的未来发展趋势。第3章简要回顾计算机硬件基本知识,探讨什么是“抽象”,讲解用户态与内核态,阐述操作系统结构、系统调用、操作系统的壳等知识。
  进程原理篇
  该篇对操作系统最为核心的概念“进程”进行讲解,包括第4章至第10章的内容。第4章阐述的内容包括进程出现的逻辑必然性、多道编程的效率、进程的创建和消亡、进程的状态及其转换、进程与地址空间、进程管理和进程模型的缺陷。第5章讲解的内容包括线程、线程管理、线程的用户态、内核态和混合态实现、现代操作系统的线程实现模型、多线程之间的关系、线程主要考虑的问题。第6章的内容包括为什么要通信、管道、记名管道、套接字、信号、信号量、共享内存、消息队列等。第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、复合I/O、DMA)、输入输出软件之哲学原理、软件I/O模式(可编程I/O、中断驱动I/O、DMA)、I/O软件分层和设备驱动程序等。
  多核原理篇
  该篇对新出现的多核技术进行讲解。重点讨论多核环境给操作系统带来的影响。全篇分为多核结构和多核操作系统两章。第20章讲解的内容包括多核处理器结构(超线程结构、多核结构、多核超线程结构)、多核内存结构(UMA、NUMA、COMA、NORMA)、对称多核处理器计算机的启动过程、多处理器之间的通信和SMP缓存一致性等。第21章的内容包括多核进程同步、多核环境下的软件同步原语、旋锁及其实现、队列旋锁、多核环境下的进程调度、多核环境下的能耗管理和多核系统性能。
  操作系统设计原理篇
  该篇从高屋建瓴的角度对操作系统设计的十条哲学原理进行阐述。显然,操作系统的设计原则有很多,本篇选取的只是这诸多原则里面非常重要的十条。第22章将从操作系统和人类社会两个层面对这十条原理进行论述与比较,以使读者更加清楚地明白操作系统就是人类社会在计算机里面的反映。操作系统的其他设计原则读者可自行发现。
  本书的特点
  相对于国内外其它操作系统教材,本书的独特性体现在四个方面:逻辑导向,通过逻辑推理将核心原理演绎出来;联系生活,用人所熟知的生活实例来揭示奥秘;抽象提升,从哲学高度进行阐述以将各种原理串成有机整体;知识整合,引入相关编译和计算机组成的知识来加深读者对细腻之处的把握。这些特点赋予了本书风格上更加清新、内容上更加丰富、逻辑上更加严谨、叙述上更加幽默、解说上更加深刻、和层次上更加优美的引人入胜的效果。
  读者在阅读学习完本书后,将达到如下目标:
  ●了解操作系统在计算机软硬件整个体系中的中心主导作用。
  ●掌握操作系统的基本概念、原理、技术和实现机制。
  ●理解操作系统原理背后的人文背景与历史动机。
  ●运用操作系统知识来分析和解决问题。
  ●掌握操作系统设计的原理,为以后设计操作系统打下基础。
  这里需要提醒的是,本书阐述的是操作系统的原理,它不依赖于任何具体的实现,而是凌驾于所有具体商业操作系统的进程实现之上。即本书所阐述的思想和原理对所有操作系统都适用。但具体商业操作系统在应用这些原理时可以有很灵活的方式。事实上,具体的商业操作系统在应用这些原理时确实采取了不同的方式,有的更为精密,也有的偷工减料。另外,由于我们注重的是原理,对个体机制实现时采取的数据结构通常不作琐细的论述,而是点到为止。这是因为数据结构必须以真正的操作系统为蓝本进行讲解,而真正的商用操作系统使用的数据结构通常非常复杂,对此进行繁琐的讲解将把学生弄得晕头转向,而不利于对操作系统核心原理的把握。
  当然了,如果要达到能够设计开发真正商业操作系统的境界,读者还需要进行“操作系统工程”或“操作系统实现”的学习。而这种工程或实现的课程通常以具体的操作系统为对象进行讲述。这些具体的操作系统可以是Windows、UNIX、Linux,当然也可以是其他一些非主流商业操作系统。如果能够将本书阐述的原理与操作系统工程或实现相结合,将取得更好的效果。
  最后,本作者感谢下列人士为本书审阅书稿:上海交通大学的陈凌峰、张漳、顾夏申、徐燕和美国密歇根大学的鞠晓恩,其中陈凌峰和张漳将本人的讲课做了原始记录。
  现在就让我们一起来揭示秘密,数清操作系统里的星星吧。

封底文字

形而上者谓之道,形而下者谓之器。-《易经》 这是一个瞬息万变的时代。 分布式计算的脚步渐行渐远,网格计算的热潮逐步退却,云计算和云存储正慢慢揭开面纱……在所有的变化中,不变的是这些计算的支柱:操作系统!能否深刻理解它也许会决定云时代的“浮沉”。 本书从生活哲学的视角对操作系统的原理进行阐述,通过逻辑推理演绎操作系统核心技术的奥秘,讨论范围包括操作系统的所有基础内容:背景与历史、进程与线程、通信与同步、调度与死锁、分页与分段、磁盘与文件、输入与输出等。此外,作者以新颖的组织方式讲解了锁的实现、同步机制的发展逻辑、从分段到段页式的演变、多核环境下的同步与调度、操作系统设计的原则。 本书对操作系统原理的讨论充满趣味性:每一章都力求细致地阐明一个主题,将通俗的哲学原理和逻辑推理贯穿于每一个主题,构成全书的有机整体,并适当地引入计算机组成和编译器知识,揭示操作系统在程序运行中发挥的作用,把读者对操作系统的理解带到一个崭新的境界。

图书目录

前言
第一篇基础原理篇
第1章操作系统导论
引子:智者的挑战
11人造学科
12程序是如何运行的
13什么是操作系统
14魔幻与管理
15用户程序与操作系统
16操作系统的范畴
17为什么学习操作系统
思考题第2章操作系统历史
引子:操作系统进化的推动因素
21第一阶段:状态机操作系统
(1940年以前)
22第二阶段:单一操作员、单一控制
端操作系统(20世纪40年代)
23第三阶段:批处理操作系统
(20世纪50年代)
24第四代:多道批处理操作系统
(20世纪60年代)
25第五代之一:分时操作系统
(20世纪70年代)
26第五代之二:实时操作系统
27第六代:现代操作系统
(1980年以后)
28操作系统的演变过程
29操作系统的未来发展趋势
思考题
第3章操作系统基本概念
引子:“差不多”精神
31计算机硬件基本知识
32抽象
33内核态和用户态
34操作系统结构
35进程、内存和文件
36系统调用
37壳
思考题
第二篇进程原理篇第4章进程
引子
41进程概论
42进程模型
43多道编程的效率
44进程的产生与消失
45进程的层次结构
46进程的状态
47进程创立
48进程与地址空间
49进程管理
410进程的缺陷
思考题
第5章线程
引子
51进程的分身术——线程
52线程管理53线程的实现方式
54现代操作系统的线程实现模型
55多线程的关系
56讨论:从用户态进入内核态
57讨论:线程的困惑——确定性
与非确定性
思考题
目录目录第6章线程通信
引子
61为什么要通信
62线程对白:管道、记名管道、套接字
63线程电报:信号
64线程旗语:信号量
65线程拥抱:共享内存
66信件发送:消息队列
67其他通信机制
思考题
第7章进程同步
引子
71为什么要同步
72线程同步的目的
73锁的进化
74睡觉与叫醒:生产者与消费者问题
75信号量
76锁、睡觉与叫醒、信号量
77管程
78消息传递
79栅栏
思考题
第8章进程调度
引子
81调度的目标
82处理器调度的总体目标
83先来先服务调度算法
84时间片轮转
85短任务优先
86优先级调度
87混合调度算法
88其他调度算法
89实时调度算法
810高级议题:调度异常之优先级
倒挂
思考题
第9章锁的实现
引子:锁的实现哲学
91以中断启用与禁止来实现锁
92以测试与设置指令来实现锁
93以非繁忙等待、中断启用与禁止
来实现锁
94以最少繁忙等待、测试与设置
来实现锁
95中断禁止、测试与设置
思考题
第10章死锁应对
引子
101发生死锁的原因
102死锁的描述
103死锁的4个必要条件
104哲学家就餐问题
105死锁的应对
106消除死锁的必要条件
107银行家算法:冒险的代价
108哲学家就餐问题之解
109讨论:死锁的思考——综合
治理
1010讨论:死锁、活锁与饥饿
思考题
第三篇内存原理篇第11章基本内存管理
引子
111内存管理的环境
112内存管理的目标
113虚拟内存的概念
114操作系统在内存的位置
115单道编程的内存管理
116多道编程的内存管理
117闲置空间管理
思考题
第12章页式内存管理
引子
121基址极限管理模式的问题
122分页内存管理
123分页系统的优缺点
124翻译速度
125缺页中断处理
126锁住页面
127页面尺寸
128内存抖动
思考题
第13章页面更换算法
引子
131页面需要更换
132页面更换的目标
133随机更换算法
134先进先出算法
135第二次机会算法
136时钟算法
137最优更换算法
138NRU算法
139LRU算法
1310工作集算法
1311工作集时钟算法
1312页面替换策略
思考题
第14章段式内存管理
引子
141分页系统的缺点
142分段管理系统
143分段的优缺点
144段页式内存管理
145段号是否占用寻址字位
146讨论:否定之否定的嵌套——纯粹
分段与逻辑分段、分页与段页
思考题
第四篇文件原理篇第15章磁盘操作
引子
151磁盘组织与管理
152磁盘的结构
153盘面的结构
154磁盘驱动器的访问速度
155操作系统界面
156磁盘调度算法
思考题
第16章文件基础
引子
161为什么需要文件系统
162什么是文件系统
163文件系统的目标
164文件的基本知识
165从用户角度看文件系统
166地址独立的实现机制:文件夹
167文件系统调用
168内存映射的文件访问
思考题
第17章文件系统实现
引子
171文件系统的布局
172文件的实现
173目录实现:地址独立的实现
174闲置空间管理
思考题
第18章文件系统
引子
181文件系统访问控制
182主动控制:访问控制表
183能力表
184访问控制的实施
185文件系统性能
186提高系统性能的方法
187文件系统设计分析:
日志结构的文件系统
188海量数据文件系统
思考题
第五篇I/O原理篇第19章输入输出
引子
191什么是输入输出
192输入输出的目的
193输入输出硬件
194输入输出软件
195I/O软件分层
思考题
第六篇多核原理篇第20章多核结构与内存
引子
201以量取胜
202多核基本概念
203多核的内存结构
204对称多处理器计算机的启动
过程
205多处理器之间的通信
206SMP 缓存一致性
207多处理器、超线程和多核的
比较
思考题
第21章多核环境下的进程同步
与调度
引子
211多核环境下操作系统的修正
212多核环境下的进程同步与调度
213多核进程同步
214硬件原子操作
215总线锁
216多核环境下的软件同步原语
217旋锁
218其他同步原语
219多核环境下的进程调度
2110多核环境下的能耗管理
2111讨论:多核系统的性能
思考题
第七篇操作系统设计原理篇第22章操作系统设计之原理
引子
221操作系统设计的追求
222操作系统设计的第1条哲学原理:
层次架构
223操作系统设计的第2条哲学原理:
没有对错
224操作系统设计的第3条哲学原理:
懒人哲学
225操作系统设计的第4条哲学原理:
让困于人
226操作系统设计的第5条哲学原理:
留有余地
227操作系统设计的第6条哲学原理:
子虚乌有——海市蜃楼之美
228操作系统设计的第7条哲学原理:
时空转换——沧海桑田之变
229操作系统设计的第8条哲学原理:
策机分离与权利分离
2210操作系统设计的第9条哲学原理:
简单为美——求于至简、
归于永恒
2211操作系统设计的第10条哲学原理:
适可而止
思考题结语参考文献
〖=A(〗22357891112131414151616181920212225262727283131333536373942424344444647474949505252535354555660606162636464646569707171727273737375758184878891939396969797989899101102102103104106107107108109111113116117118118118120121122122128130132134134135138138139140140142143144150152153153154156160161163163164165167168168169169170170171172172173174179181181182184184185186188189190191192194194195195196197198199202203203203204205205205212214215216217217218219226231232233233234235236238239245248250251254254255256256262266269272272273273277279279281281282283283284284284285285286286289289292293295298298300300301302303304305305305306306307308310〖=〗

教学资源推荐
作者: [美]弗兰克 J. 法博齐(Frank J. Fabozzi),埃德温 H. 尼夫(Edwin H. Neave),[美]周国富(Guofu Zhou) 著
作者: [比]保罗•德•格劳威(Paul De Grauwe) 著