这是一本从一个新的视角--平台角度来诠释计算机系统的教材。本书从读者熟悉的计算机操作平台入手,逐步深入到计算机硬件、计算机软件、计算机网络、设施和环境等几个层面。主要内容涉及操作系统功能及实现机制、计算机组成、信息表示、计算机网络服务及基础支持机制,以及机房设备与管理等。
本书深入浅出,内容面宽但有层次感,按照教育部《高等学校计算机科学与技术本科专业规范(信息技术方向)》的培养目标和规格要求,围绕规范要求的知识点来组织内容。因此,适合作为计算机专业信息技术方向的本科学生的专业基础课教材,同时也适合作为其他计算机相关专业的选修课教材,本书还可作为希望全面了解计算机系统的其他专业人员自学使用。
“十五”期间,教育部高等学校计算机科学与技术教学指导委员会编制了《高等学校计算机科学与技术专业发展战略研究报告暨专业规范》(试行),后简称《规范》. “计算机系统平台”是其中信息技术专业方向的建议课程之一。本教材是参照《规范》附录2.4A和2.4B的内容编写成的教科书。
按照《规范》建议的,“计算机系统平台”这门课的前导课程有“信息技术概论”、“信息技术应用数学入门”和“程序设计与问题求解”,后续可有“计算机网络与互联网”、 "Web系统与技术”、“应用集成原理与工具”和“系统管理与维护”等。开设课程的时间最早可以安排在一年级下学期,比较合适的是二年级上学期,但不要晚于二年级下学期。这是我们编写这本教材时考虑的一个基本定位。
从对信息技术专业方向人才培养的定位出发(见《规范》2.4节),我们力求内容的实用性。这种实用性,不仅体现在着重于基本概念及其关系的描述,不限于过于细节的讨论,而且还体现在一种问题引导的陈述方式。在这种方式下,一些关键技术产生所针对实际问题的背景得到了强调,从而有可能促进学生的思考,加深对技术的理解。我们追求内容深度和广度的平衡,以及表述的简洁和严谨。读者也许能体会到,本教材在具有一般可读性的同时,有些内容需要仔细推敲才能真正读懂,尽管没完全懂也不一定影响后续内容的学习。
以“计算机系统平台”为书名的教材,应该说还不多见。可以说这也正是信息技术方向所追求教学内容的一个特色。按照《规范》,信息技术方向的基本目标是围绕社会中各种组织机构(以及个人)的信息化需求,通过对计算技术的选择、应用和集成,创建优化的信息系统并对其运行实行有效的技术维护和管理。我们理解,“系统集成”是上述文字蕴涵的一个要义。所谓“系统集成”,大致上说就是让各种相关技术协同发挥作用以实现某种功能或目标的过程。如何进行有效的系统集成?过去几十年来人们的实践告诉我们,根据普遍的需求构建通用的平台,让满足特殊需求的系统集成在这样的平台上来进行是一条行之有效的技术路线。
那么,到底什么是平台?一般地讲,平台就是满足一类不同事物的共同需求,能够使那些事物方便地在其上形成、存在、运行与展现的基础设施。在生活中,火车站的月台就是一个平台,它支持各种火车的停靠、加水加油、旅客的上下车等。在工程中,造船厂的船坞就是一个平台,如果没有它上面的各种基本设施,一条船的建造不是不可能,但会麻烦很多。在计算机中,打开机箱,看到的上面有一个个插槽的主板就是一个平台,借助于它,各种配置的计算机就能够方便地构成。我们常常会听到的软件开发平台也是这个意思,即一整套基础软件工具和环境,可能是很通用的(例如Java) ,也可能是相对比较专用的(或者说面向领域的,例如Weblogic) ,使得开发软件变得容易起来。当谈到软件的时候,常常也区别“软件开发平台”和“软件运行平台”,有些只是开发平台(例如C语言编译器),另一些则只是运行平台(例如操作系统),还有些则二者兼任(例如整个Java体系).
根据信息技术方向的定位,本教材不讨论平台构建本身,而是从不同的角度或层面看“计算机系统平台”的含义,了解并掌握它们所提供的支撑功能,感受我们能在上面做哪些事情;当然也会扼要地介绍一些典型功能实现的基本原理。为此,全书分成五篇共9章进行介绍。
第一篇包含一章,介绍计算机操作运行平台,基本出发点是想回答这样的问题:当我们买来了一台计算机,上面已经装了操作系统,但还没有任何应用程序,此时能做些什么呢?取决于不同类型的用户,能做的事情有所不同。普通用户能做的就是进行各种配置,以及安装所需的应用软件;对于具有程序开发能力的用户,则还可以直接利用操作系统提供的函数编写程序。这一章的目的就是在不涉及实现细节的情况下使读者对操作系统有一个初步但实实在在的概念。
第二篇包含第2、3章,介绍计算机的硬件组成和计算机中信息的表示。由于本教材的定位不在于使读者对计算机原理有系统的了解,硬件部分的介绍主要就是结合PC的结构,从应用的角度给予介绍。在信息表示方面也类似,主要介绍二进制和典型信息在计算机中的编码,希望学生建立起的概念是:任何形式的信息都可以用0、1字符串编码。
第三篇由第4~6章构成,集中讲计算机软件平台。第4章介绍操作系统功能实现的基本原理。一个安装操作系统的具体例子则放到了附录中。第5章介绍计算机系统初始化的过程和Shell编程,前者在于加深读者对操作系统运行过程的理解,后者在于对操作系统作为一个平台所提供的功能的理解。第6章是对应用程序开发平台的简要介绍。具体的应用程序开发平台有很多,我们只是从“平台”的概念出发,解释它们的共性内容,即它们一般能为程序员提供的方便和设施,包括集成环境,预先实现的应用程序库接口等。
第四篇包含第7、8章,讲计算机网络平台。第7章是网络基础概念与知识,第8章是典型网络应用。同样,我们不追求系统介绍网络实现的原理,也不在于详细介绍各种网络应用的功能,重点在于从使用和维护的角度,介绍所涉及的各种配置及其功能表现的机制和基本原理。 第五篇也只有一章。一方面,我们将视野放开,离开常见的PC类计算机,介绍在企业和机构中常会用到的大型服务器和集群相关的概念,以及路由器和交换机等网络互联设备。另一方面,按照《规范》的要求,信息技术方向的学生希望能在大型计算机设施的运行和维护方面具有竞争力,我们特别对机房设施及其相关要求进行了一定的介绍。
如同《规范》中所论述的,信息技术是当代计算机学科发展的一个重要方向,计算机平台技术是该方向的一个核心内容。然而,如何根据信息技术的人才培养定位,编写出一本这样的教材来,对我们是一个挑战。本教材的构思来源于对《规范》中信息技术方向的理解,基本内容主要来自作者多年讲授计算机相关课程的教学实践,并根据《规范》的要求进行了适应性调整。尽管如此,鉴于作者的学识水平以及对信息技术人才知识结构的理解所限,书中定有不少欠妥甚至谬误之处,谨盼读者不吝指正。同时我们也意识到,将原本在传统计算机专业的几门课的内容抽取一部分成为一门课,对教师也是一个挑战。我们欢迎使用本教材的教师不仅能给教材提意见,而且也能将自己讲授课程的体会和经验与我们交流。
编者2009年4月
第一篇 计算机操作平台 1
第1章 操作系统3
1.1 终端用户的操作系统平台4
1.1.1 操作系统界面4
1.1.2 操作系统平台的基本功能6
1.1.3 操作系统平台的配置11
1.2 程序员的操作系统平台13
1.2.1 程序员的操作系统界面13
1.2.2 基本的系统调用14
1.3 操作系统存在的必要性17
1.3.1 操作系统的来历17
1.3.2 计算机系统的层次结构19
1.3.3 屏蔽硬件的利与弊22
1.4 常见操作系统及分类23
1.4.1 Windows操作系统24
1.4.2 Linux操作系统25
1.4.3 操作系统分类28
复习题33
讨论33
实验33
第二篇 计算机硬件平台 35
第2章 计算机硬件组成37
2.1 计算机组成结构39
2.2 总线44
2.3 存储器47
2.4 中央处理器CPU53
2.5 输入输出系统59
2.5.1 外围设备60
2.5.2 驱动程序78
2.5.3 外设与主机信息传送的控制方式80
2.6 计算机系统结构822.6.1 计算机系统结构类型82
2.6.2 计算机性能的提高82
复习题87
练习题87
讨论88
实验88 第3章 信息表示89
3.1 进位制及其转换89
3.1.1 进位制90
3.1.2 数的进制转换92
3.1.3 二进制数的运算98
3.2 数字的编码101
3.2.1 原码101
3.2.2 补码102
3.2.3 反码105
3.2.4 移码105
3.2.5 小数的表示106
3.3 字符编码106
3.3.1 简单字符的编码--ASCII码107
3.3.2 汉字字符的编码--GB2312109
3.3.3 字符的统一码--Unicode110
3.4 机器指令112
3.5 汇编语言和高级语言113
复习题116
练习题116
讨论117
第三篇 计算机软件平台 119
第4章 操作系统的内部实现机制121
4.1 进程的管理121
4.1.1 进程概念的引入121
4.1.2 进程的状态125
4.1.3 进程的调度128
4.1.4 进程的同步与互斥130
4.1.5 进程间的通信1324.1.6 线程135
4.2 内存的管理137
4.2.1 固定分区138
4.2.2 动态分区139
4.2.3 页式内存管理141
4.2.4 段式内存管理144
4.2.5 虚拟内存管理145
4.3 信息存储的管理152
4.3.1 外存管理和文件的物理组织154
4.3.2 文件操作156
4.3.3 文件保护161
4.3.4 虚拟文件系统164
4.4 外设的管理167
4.4.1 外设访问接口168
4.4.2 设备驱动程序169
4.4.3 设备分配170
4.4.4 中断技术171
4.4.5 缓冲技术173
复习题176
讨论177
实验177 第5章 系统初始化及Shell编程178
5.1 计算机系统初始化178
5.1.1 启动过程要做什么178
5.1.2 计算机启动过程181
5.1.3 操作系统的启动过程183
5.2 CMOS设置185
5.3 操作系统安装190
5.3.1 安装前的准备工作191
5.3.2 安装过程要点192
5.4 Shell编程195
5.4.1 Shell的启动195
5.4.2 Shell命令196
5.4.3 编写Shell脚本199
复习题215
练习题216 实验216 第6章 应用软件开发平台217
6.1 高级程序设计语言217
6.2 开发工具和开发环境219
6.2.1 单独的工具219
6.2.2 集成的开发环境226
6.2.3 可构建的集成开发环境232
6.2.4 更广泛的、更易使用的开发平台242
6.3 开发平台中的可重用代码242
6.3.1 函数243
6.3.2 类243
6.3.3 组件244
6.3.4 框架244
复习题246
讨论246
实验246
第四篇 计算机网络平台 247
第7章 网络平台的服务249
7.1 Web服务251
7.1.1 万维网概述251
7.1.2 Web服务器的性能提升258
7.2 电子邮件服务261
7.3 FTP服务266
复习题268
讨论268
实验268 第8章 网络平台基础知识269
8.1 计算机网络的层次结构269
8.1.1 分层动机269
8.1.2 分层与参考模型270
8.2 将计算机接入网络273
8.2.1 实现物理连接273
8.2.2 进行网络信息配置276
8.3 网络基础支持服务2878.3.1 DHCP服务287
8.3.2 域名系统289
8.3.3 网络管理294
复习题297
讨论297
实验297
第五篇 设施与环境平台 299
第9章 计算机系统基础设施301
9.1 主要设备301
9.1.1 服务器301
9.1.2 网络设备308
9.2 计算机机房313
9.2.1 机房的位置314
9.2.2 机房的环境条件314
9.2.3 机房的电气318
9.2.4 机房的干扰及防护320
复习题324
讨论325
实验325 附录A Fedora 9安装过程326
A.1 检测光盘326
A.2 识别环境326
A.3 网络配置327
A.4 时区配置329
A.5 root密码设置329
A.6 磁盘分区330
A.7 配置引导装载程序334
A.8 选择要安装的软件335
A.9 安装完毕337 参考文献338