描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111588191
内容简介
本书是一本特色鲜明的操作系统教材,采用螺旋式方法由浅入深、循序渐进地阐述操作系统的相关概念和设计机理。全书共分六部分:第壹部分阐释操作系统的概念、视图、起源、分类、构建方法及实现基础;第二部分则渐进地介绍单进程操作系统、单用户多任务操作系统、单用户多任务/多线程操作系统、多用户操作系统、分布式和集群及网格相关的操作系统;第三部分和第四部分则按照传统方式集中讨论进程管理、内存管理、文件系统、输入/输出管理;第五部分介绍计算机网络、保护和安全以及分布式操作系统;第六部分则分别就Windows NT操作系统、Linux操作系统、Palm操作系统进行实例研究。另外,附录部分还简要介绍了比较现代的硬件体系结构的相关知识。每壹章结尾部分均配备有习题,可以帮助读者有针对性地加强相应知识的理解。
本书适合作为高等院校计算机及相关理工科专业的操作系统课程教材,同时也可作为业界人士设计和开发操作系统及相关系统软件的重要参考书。
本书适合作为高等院校计算机及相关理工科专业的操作系统课程教材,同时也可作为业界人士设计和开发操作系统及相关系统软件的重要参考书。
目 录
目 录
Operating Systems: A Spiral Approach
出版者的话
译者序
前言
教材使用说明
作者介绍
部分 操作系统概述
第1章 入门2
1.1 引言2
1.2 什么是操作系统3
1.3 操作系统的用户视图和系统视图4
1.3.1 用户视图及用户分类4
1.3.2 系统视图5
1.3.3 一个例子:移动鼠标(和鼠标指针)6
1.3.4 另一个比较大的例子:文件7
1.4 操作系统的一些术语、基本概念和图解7
1.4.1 基本术语7
1.4.2 这些图片说明了什么8
1.4.3 走近真实:个人计算机操作系统9
1.4.4 为什么设立抽象层10
1.5 操作系统发展导论11
1.5.1 操作系统的起源11
1.5.2 操作系统应当做什么12
1.6 小结13
习题13
第2章 操作系统概念、模块和体系结构14
2.1 操作系统做什么工作14
2.2 操作系统管理的资源及主要的操作系统模块16
2.2.1 操作系统管理的资源类型16
2.2.2 操作系统的主要模块18
2.3 进程概念和操作系统进程信息19
2.3.1 进程定义和进程状态19
2.3.2 操作系统维护的进程信息21
2.3.3 进程分类和执行模式21
2.4 面向功能的操作系统分类22
2.4.1 单用户单任务操作系统22
2.4.2 多任务操作系统22
2.4.3 分时操作系统和服务器23
2.4.4 网络和分布式操作系统24
2.4.5 实时操作系统25
2.5 操作系统构建方法25
2.5.1 整体式单内核操作系统方法25
2.5.2 分层式操作系统方法25
2.5.3 微内核操作系统方法26
2.6 操作系统实现中的一些问题和技术27
2.6.1 基于中断向量的中断处理27
2.6.2 系统调用28
2.6.3 队列和表28
2.6.4 面向对象的方法29
2.6.5 虚拟机29
2.7 操作系统功能及向后兼容的小化方法和化方法31
2.7.1 向后兼容31
2.7.2 用户化与硬件化32
2.8 小结32
参考文献32
网上资源33
习题33
第二部分 渐进式构建操作系统:面向广度的螺旋式方法
第3章 简单的单进程操作系统37
3.1 监控程序和CP/M37
3.1.1 监控程序:简单操作系统的前身37
3.1.2 为什么创建CP/M?什么是软件危机38
3.1.3 CP/M的构成39
3.2 简单的个人计算机系统的特征39
3.3 输入/输出管理40
3.3.1 键盘输入—可移植性与灵活性41
3.3.2 视频监视器输出—可移植性及功能与性能41
3.4 磁盘管理和文件系统42
3.4.1 磁盘系统42
3.4.2 文件系统43
3.5 进程和内存管理46
3.5.1 应用程序的创建与执行46
3.5.2 基于CCP的命令处理47
3.5.3 内存管理48
3.5.4 覆盖49
3.5.5 进程及基本的多任务49
3.6 小结50
参考文献50
网上资源51
习题51
第4章 单用户多任务操作系统52
4.1 简单的多任务系统53
4.2 Palm操作系统运行环境及系统布局54
4.2.1 基本内存为易失性随机访问存储器55
4.2.2 没有辅助存储器55
4.2.3 小屏幕尺寸55
4.2.4 没有键盘56
4.3 进程调度56
4.3.1 处理涂鸦式输入—实时操作系统任务56
4.3.2 应用程序进程—任何时候只能有一道进程持有焦点57
4.3.3 典型的用户应用程序57
4.3.4 真正的调度程序开始成形58
4.4 内存管理58
4.4.1 内存基础知识58
4.4.2 内存分配59
4.4.3 不可移动的内存块61
4.4.4 空闲空间监测61
4.5 文件支持62
4.5.1 数据库和记录62
4.5.2 资源对象62
4.5.3 辅助存储器63
4.6 基本输入/输出63
4.7 显示管理64
4.7.1 相应硬件64
4.7.2 高级图形化用户界面元素64
4.7.3 特殊的窗体类型64
4.7.4 低级图形化用户界面控件65
4.8 事件驱动的程序66
4.9 小结67
参考文献67
网上资源67
习题68
第5章 单用户多任务/多线程操作系统69
5.1 引言69
5.2 Mac计算机的起源69
5.3 Mac操作系统—第1版系统70
5.3.1 图形化用户界面70
5.3.2 单任务71
5.3.3 辅助存储器72
5.3.4 内存管理72
5.3.5 只读存储器74
5.3.6 增量版本74
5.4 第2版系统74
5.4.1 图形化用户界面75
5.4.2 多任务75
5.5 第3版系统75
5.5.1 多级文件系统75
5.5.2 网络76
5.6 第4版系统76
5.6.1 多重查找器76
5.6.2 多重查找器与图形化用户界面77
5.6.3 内存管理与多重查找器77
5.7 第5版系统78
5.8 第6版系统78
5.9 第7版系统79
5.9.1 图形化用户界面79
5.9.2 虚拟内存79
5.9.3 新型处理器80
5.9.4 输入/输出增强81
5.10 第8版系统82
5.10.1 多级文件系统升级版82
5.10.2 其他的硬件变化83
5.10.3 统一字符编码标准支持83
5.11 第9版系统84
5.11.1 多用户84
5.11.2 网络85
5.11.3 应用程序接口85
5.11.4 视频86
5.12 X版Mac操作系统86
5.12.1 新功能87
5.12.2 又一款新处理器87
5.13 小结87
参考文献87
网上资源88
习题88
第6章 多用户操作系统90
6.1 引言90
6.1.1 多用户操作系统的历史90
6.1.2 Linux操作系统的基本结构93
6.1.3 动态可加载模块94
6.1.4 中断处理95
6.1.5 文件系统目录树96
6.2 多用户操作系统环境96
6.2.1 文件访问权限97
6.2.2 文
Operating Systems: A Spiral Approach
出版者的话
译者序
前言
教材使用说明
作者介绍
部分 操作系统概述
第1章 入门2
1.1 引言2
1.2 什么是操作系统3
1.3 操作系统的用户视图和系统视图4
1.3.1 用户视图及用户分类4
1.3.2 系统视图5
1.3.3 一个例子:移动鼠标(和鼠标指针)6
1.3.4 另一个比较大的例子:文件7
1.4 操作系统的一些术语、基本概念和图解7
1.4.1 基本术语7
1.4.2 这些图片说明了什么8
1.4.3 走近真实:个人计算机操作系统9
1.4.4 为什么设立抽象层10
1.5 操作系统发展导论11
1.5.1 操作系统的起源11
1.5.2 操作系统应当做什么12
1.6 小结13
习题13
第2章 操作系统概念、模块和体系结构14
2.1 操作系统做什么工作14
2.2 操作系统管理的资源及主要的操作系统模块16
2.2.1 操作系统管理的资源类型16
2.2.2 操作系统的主要模块18
2.3 进程概念和操作系统进程信息19
2.3.1 进程定义和进程状态19
2.3.2 操作系统维护的进程信息21
2.3.3 进程分类和执行模式21
2.4 面向功能的操作系统分类22
2.4.1 单用户单任务操作系统22
2.4.2 多任务操作系统22
2.4.3 分时操作系统和服务器23
2.4.4 网络和分布式操作系统24
2.4.5 实时操作系统25
2.5 操作系统构建方法25
2.5.1 整体式单内核操作系统方法25
2.5.2 分层式操作系统方法25
2.5.3 微内核操作系统方法26
2.6 操作系统实现中的一些问题和技术27
2.6.1 基于中断向量的中断处理27
2.6.2 系统调用28
2.6.3 队列和表28
2.6.4 面向对象的方法29
2.6.5 虚拟机29
2.7 操作系统功能及向后兼容的小化方法和化方法31
2.7.1 向后兼容31
2.7.2 用户化与硬件化32
2.8 小结32
参考文献32
网上资源33
习题33
第二部分 渐进式构建操作系统:面向广度的螺旋式方法
第3章 简单的单进程操作系统37
3.1 监控程序和CP/M37
3.1.1 监控程序:简单操作系统的前身37
3.1.2 为什么创建CP/M?什么是软件危机38
3.1.3 CP/M的构成39
3.2 简单的个人计算机系统的特征39
3.3 输入/输出管理40
3.3.1 键盘输入—可移植性与灵活性41
3.3.2 视频监视器输出—可移植性及功能与性能41
3.4 磁盘管理和文件系统42
3.4.1 磁盘系统42
3.4.2 文件系统43
3.5 进程和内存管理46
3.5.1 应用程序的创建与执行46
3.5.2 基于CCP的命令处理47
3.5.3 内存管理48
3.5.4 覆盖49
3.5.5 进程及基本的多任务49
3.6 小结50
参考文献50
网上资源51
习题51
第4章 单用户多任务操作系统52
4.1 简单的多任务系统53
4.2 Palm操作系统运行环境及系统布局54
4.2.1 基本内存为易失性随机访问存储器55
4.2.2 没有辅助存储器55
4.2.3 小屏幕尺寸55
4.2.4 没有键盘56
4.3 进程调度56
4.3.1 处理涂鸦式输入—实时操作系统任务56
4.3.2 应用程序进程—任何时候只能有一道进程持有焦点57
4.3.3 典型的用户应用程序57
4.3.4 真正的调度程序开始成形58
4.4 内存管理58
4.4.1 内存基础知识58
4.4.2 内存分配59
4.4.3 不可移动的内存块61
4.4.4 空闲空间监测61
4.5 文件支持62
4.5.1 数据库和记录62
4.5.2 资源对象62
4.5.3 辅助存储器63
4.6 基本输入/输出63
4.7 显示管理64
4.7.1 相应硬件64
4.7.2 高级图形化用户界面元素64
4.7.3 特殊的窗体类型64
4.7.4 低级图形化用户界面控件65
4.8 事件驱动的程序66
4.9 小结67
参考文献67
网上资源67
习题68
第5章 单用户多任务/多线程操作系统69
5.1 引言69
5.2 Mac计算机的起源69
5.3 Mac操作系统—第1版系统70
5.3.1 图形化用户界面70
5.3.2 单任务71
5.3.3 辅助存储器72
5.3.4 内存管理72
5.3.5 只读存储器74
5.3.6 增量版本74
5.4 第2版系统74
5.4.1 图形化用户界面75
5.4.2 多任务75
5.5 第3版系统75
5.5.1 多级文件系统75
5.5.2 网络76
5.6 第4版系统76
5.6.1 多重查找器76
5.6.2 多重查找器与图形化用户界面77
5.6.3 内存管理与多重查找器77
5.7 第5版系统78
5.8 第6版系统78
5.9 第7版系统79
5.9.1 图形化用户界面79
5.9.2 虚拟内存79
5.9.3 新型处理器80
5.9.4 输入/输出增强81
5.10 第8版系统82
5.10.1 多级文件系统升级版82
5.10.2 其他的硬件变化83
5.10.3 统一字符编码标准支持83
5.11 第9版系统84
5.11.1 多用户84
5.11.2 网络85
5.11.3 应用程序接口85
5.11.4 视频86
5.12 X版Mac操作系统86
5.12.1 新功能87
5.12.2 又一款新处理器87
5.13 小结87
参考文献87
网上资源88
习题88
第6章 多用户操作系统90
6.1 引言90
6.1.1 多用户操作系统的历史90
6.1.2 Linux操作系统的基本结构93
6.1.3 动态可加载模块94
6.1.4 中断处理95
6.1.5 文件系统目录树96
6.2 多用户操作系统环境96
6.2.1 文件访问权限97
6.2.2 文
前 言
前 言Operating Systems: A Spiral Approach著书起因长期以来,我们深刻领会到传统的操作系统课程教学方法并非好的方法。本书将采用非传统教学方法来支持达成相关教学任务。当学习任何一门学问时,关于原理、规则、思想和概念的层级体系的学习次序,可能会让学习过程变得更加容易或者更为困难。通用的做法是把课程划分为若干个主题,然后逐个具体展开和分别进行学习。就操作系统而言,传统做法就是首先概括介绍操作系统和简要解释一些术语,然后让学生就进程和进程管理、存储管理、文件系统等孤立主题分别进一步深入学习。我们称之为深度导向的教学方法或纵向型教学方法。学生在学习这些孤立主题领域大量不相关细节知识的基础上,针对具体实例和实际操作系统例子进行分析研究,终实现不同主题的融会贯通,搞清楚如何把不同的功能模块整合到一起来形成一个实用的操作系统。
我们认为,儿童学习一门语言时可遵循的较好模型应当是:首先学习一些单词、一些语法、一些句型,然后(螺旋式)重复这一过程,即不断学习更多的单词、更多的语法、更多的句型。通过螺旋式重复相同的学习过程,终精通语言和征服语言的复杂性。我们称之为广度导向的教学方法或螺旋式教学方法。
本教材把螺旋式教学方法运用到操作系统课程教学中。前面几章给出一些基本的背景知识和概念定义。在此基础上,开始描述面向一个简单系统(早期的个人计算机)的非常简单的操作系统,然后逐渐向拥有更多功能的复杂系统演化:从有限的后台任务(譬如并发打印)到多任务,等等。对于任何一个阶段和相应的系统,我们始终坚持建立逐渐增加的需求与系统设计之间的关联关系,并阐明二者间的关联效应。当然,此间论述并不一定完全对应操作系统发展的确切的历史次序。特别是,为了能够讲清楚不同的操作系统模块之间如何相互衔接和彼此影响,我们在每个复杂层级上还选择了一个代表性的系统展开详细说明。我们确信,这种方法将有利于学生更好地理解和掌握操作系统每一层级的诸多功能是如何被整合到一起的。
之所以采用这种方法,在一定程度上也和所有计算科学专业学生均无一例外地要求必修操作系统课程存在一定关系。诚然,这些学生中的大部分将来从事操作系统开发工作的可能性微乎其微,然而,除极个别学生的工作可能与没有操作系统的嵌入式系统打交道外,大多数学生所从事的工作依赖的系统将运行在操作系统平台之上。对于他们而言,操作系统位于应用程序和硬件之间,若不能清晰理解操作系统基本知识,将意味着相关应用程序好不过是低效运行,坏情况下甚至危险运行。我们相信,相对于传统方法来讲,我们的方法将有助于引导学生更好地理解和掌握现代操作系统的整体结构。
内容组织在本书的部分,我们给出了一些通常的背景知识。它们涵盖操作系统的基本原理,并从不同角度诠释了操作系统。同时,还概括说明了操作系统所控制的典型计算机硬件。另外一章则阐述了进程、多道程序设计、分时、资源管理等概念及不同的操作系统体系结构和构建方法。
在本书的第二部分,我们采用螺旋式方法,按照复杂性逐渐递增的次序,依次介绍和说明了如下5种类型的操作系统:
1)简单的单进程操作系统(CP/M)。
2)允许简单系统多任务化的较为复杂的操作系统(Palm操作系统)。
3)针对单用户的完全多任务化的操作系统(苹果电脑Mac操作系统,OS X前身)。
4)多用户操作系统(Linux)。
5)分布式操作系统(主要是Globus集群)。
针对每一种操作系统,我们分别选择典型的操作系统展开讨论,使相关知识更加具体明了。典型操作系统的选择兼顾了实用性。我们首先从进程、内存、文件和输入/输出管理等方面讨论了简单的系统,然后通过逐渐引入多任务、分时、网络连接、安全和其他问题来(循序渐进地)讨论更为复杂的系统。有时候我们也会提到其他一些众所周知的操作系统作为特定类型的例子,譬如第3章的微软DOS操作系统(MS-DOS)和第4章的Symbian操作系统。
在本书的第三~五部分,我们转向深度导向的教学方法,针对各种操作系统主题(从进程到内存管理,再到文件系统)展开详细说明。我们还讨论了许多在操作系统领域近才出现的热点问题,如线程化、面向对象、安全以及并行和分布式系统的相关方法。在相应章节中,我们将重温第二部分曾讨论过的实例系统,并进一步详细解释(尤其是现代操作系统的)相关机制。
在第六部分,我们将以所谓实例研究的方式,就一些操作系统进一步展开深入探讨。鉴于我们已经在前面章节介绍了许多细节内容,所以在此我们将立足于从更深层次审视相关系统,从而探析某些功能的内部实现机制。其中的两个实例研究将围绕第二部分涵盖的操作系统进行分析讨论。
附录部分罗列了基本的计算机硬件体系结构,以方便那些不要求把此类课程作为操作系统课程先修课程的教育机构在选用本教材时使用。它们也可为那些需要复习特定主题的学习者提供参考。
写作风格我
我们认为,儿童学习一门语言时可遵循的较好模型应当是:首先学习一些单词、一些语法、一些句型,然后(螺旋式)重复这一过程,即不断学习更多的单词、更多的语法、更多的句型。通过螺旋式重复相同的学习过程,终精通语言和征服语言的复杂性。我们称之为广度导向的教学方法或螺旋式教学方法。
本教材把螺旋式教学方法运用到操作系统课程教学中。前面几章给出一些基本的背景知识和概念定义。在此基础上,开始描述面向一个简单系统(早期的个人计算机)的非常简单的操作系统,然后逐渐向拥有更多功能的复杂系统演化:从有限的后台任务(譬如并发打印)到多任务,等等。对于任何一个阶段和相应的系统,我们始终坚持建立逐渐增加的需求与系统设计之间的关联关系,并阐明二者间的关联效应。当然,此间论述并不一定完全对应操作系统发展的确切的历史次序。特别是,为了能够讲清楚不同的操作系统模块之间如何相互衔接和彼此影响,我们在每个复杂层级上还选择了一个代表性的系统展开详细说明。我们确信,这种方法将有利于学生更好地理解和掌握操作系统每一层级的诸多功能是如何被整合到一起的。
之所以采用这种方法,在一定程度上也和所有计算科学专业学生均无一例外地要求必修操作系统课程存在一定关系。诚然,这些学生中的大部分将来从事操作系统开发工作的可能性微乎其微,然而,除极个别学生的工作可能与没有操作系统的嵌入式系统打交道外,大多数学生所从事的工作依赖的系统将运行在操作系统平台之上。对于他们而言,操作系统位于应用程序和硬件之间,若不能清晰理解操作系统基本知识,将意味着相关应用程序好不过是低效运行,坏情况下甚至危险运行。我们相信,相对于传统方法来讲,我们的方法将有助于引导学生更好地理解和掌握现代操作系统的整体结构。
内容组织在本书的部分,我们给出了一些通常的背景知识。它们涵盖操作系统的基本原理,并从不同角度诠释了操作系统。同时,还概括说明了操作系统所控制的典型计算机硬件。另外一章则阐述了进程、多道程序设计、分时、资源管理等概念及不同的操作系统体系结构和构建方法。
在本书的第二部分,我们采用螺旋式方法,按照复杂性逐渐递增的次序,依次介绍和说明了如下5种类型的操作系统:
1)简单的单进程操作系统(CP/M)。
2)允许简单系统多任务化的较为复杂的操作系统(Palm操作系统)。
3)针对单用户的完全多任务化的操作系统(苹果电脑Mac操作系统,OS X前身)。
4)多用户操作系统(Linux)。
5)分布式操作系统(主要是Globus集群)。
针对每一种操作系统,我们分别选择典型的操作系统展开讨论,使相关知识更加具体明了。典型操作系统的选择兼顾了实用性。我们首先从进程、内存、文件和输入/输出管理等方面讨论了简单的系统,然后通过逐渐引入多任务、分时、网络连接、安全和其他问题来(循序渐进地)讨论更为复杂的系统。有时候我们也会提到其他一些众所周知的操作系统作为特定类型的例子,譬如第3章的微软DOS操作系统(MS-DOS)和第4章的Symbian操作系统。
在本书的第三~五部分,我们转向深度导向的教学方法,针对各种操作系统主题(从进程到内存管理,再到文件系统)展开详细说明。我们还讨论了许多在操作系统领域近才出现的热点问题,如线程化、面向对象、安全以及并行和分布式系统的相关方法。在相应章节中,我们将重温第二部分曾讨论过的实例系统,并进一步详细解释(尤其是现代操作系统的)相关机制。
在第六部分,我们将以所谓实例研究的方式,就一些操作系统进一步展开深入探讨。鉴于我们已经在前面章节介绍了许多细节内容,所以在此我们将立足于从更深层次审视相关系统,从而探析某些功能的内部实现机制。其中的两个实例研究将围绕第二部分涵盖的操作系统进行分析讨论。
附录部分罗列了基本的计算机硬件体系结构,以方便那些不要求把此类课程作为操作系统课程先修课程的教育机构在选用本教材时使用。它们也可为那些需要复习特定主题的学习者提供参考。
写作风格我
评论
还没有评论。