UNIX操作系统教程 第3版
作者 : 张红光 李福才 编著
出版日期 : 2009-11-23
ISBN : 978-7-111-28374-4
定价 : 38.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 352
开本 : 16
原书名 : UNIX/Linux操作系统教程 第3版
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

第3版修订中删减了第2版中一些过时的UNIX技术和描述;增加了针对Linux系统设计技术和使用技术的阐述;增加了对UNIX环境编程实用技术的描述。其中第1章是有关UNIX技术的概述,第2~4章描述UNIX应用技术,第5~6章重点说明UNIX环境的编程技术,第7~11章阐述UNIX内核实现技术,第12~14章描述UNIX扩展知识。

图书特色

UNIX操作系统和所包含的核心技术在经历了近半个世纪的风雨和磨难后,在新的流行操作系统如火如荼发展的今天又重新受到大家的关注,因为学术界、产业界和教育界都意识到了此项技术对于今天操作系统发展所起到的不可替代的作用和产生的重要影响。因此如何科学地研究、学习和掌握UNIX技术?如何把握好UNIX技术研究和UNIX应用技术学习的尺度?如何将操作系统的理论学习和实际系统的设计技术相结合?如何在系统学习操作系统技术的同时,给学生或读者提供概念清晰、易于实践的教学读本?是很多操作系统授课老师时常思考的问题。经过多年的教学实践,作者对上述问题有了自己独特的理解,并力求将这些解决方案集中体现在本教程的第3次修订中,希望广大读者和教师能从中获益。
在本次修订中,特别增添了一些UNIX实用编程设计技术,同时为满足学生和读者提出的自学要求,添加了一些指导性的实例教学内容。为配合部分高校老师的教学,对有些教学内容和教学层次也做了适当修订。
本书即可作为高等院校相关专业的操作系统课程教材,也可为需要了解和研究UNIX技术和应用的设计开发人员提供有益的支持和参考。

图书前言

第3版前言
  《UNIX操作系统教程》自2003年出版以来,得到许多高校师生的认同和支持,尤其是本书第2版自2006年1月第1次印刷以来,到目前已重印了9次,并被多所高校确定为授课教材。有很多读者通过多种渠道与我们联系,讨论本书涉及的教学和各种技术问题,并提出很多中肯的批评和建议。这些积极热情的反馈建议说明了读者对我们的支持和厚爱,我们在表示由衷感谢的同时也感到责任的重大。为回报大家的关爱,在本书出版近4年之际,我们决定进行第三次修订。本次修订是在前两版的基础上对教程内容进行的又一次重要调整,主要完成的工作包括:
  1)删减了第2版中一些过时的UNIX技术描述;
  2)增加了针对Linux系统的设计和使用方法的阐述;
  3)将书中所有的举例程序都重新在Linux 2.6系统上进行了运行验证;
  4)增加了对UNIX环境的编程实用技术描述。
  修订后的教程将更便于读者自学,并可以做到边学习边实践。教程中给出的程序实例都在Linux 2.6环境中进行了调试验证,包括头文件和语法格式都进行了调整。这样做的意义是使大多数读者将学习重点放在理解UNIX相关概念和消化UNIX实用设计技术上,避免过多地关注高级语言的语法细节。另外,在设计书中的程序举例时,我们充分考虑了读者进行扩展练习的需要,一般都是给出一个最基本的格式,在这个格式下读者可以进行多种扩展,以完成一个典型的应用实例。
  本书的目标是以介绍UNIX应用技术为起点,进而描述UNIX核心技术和实现策略,修订后的教程应该更适合本科教学和读者自学,因为无论是在系统性方面,还是在由浅入深的技术阐述方面,教程都有了进一步的完善和改进。修订后的教程共包括14章,其中第1章是有关UNIX技术的概述,第2~4章是UNIX应用技术的描述,第5~6章重点说明UNIX环境的编程技术,第7~11章是UNIX内核实现技术的阐述,第12~14章是有关UNIX扩展知识的描述。这些章节的内容,构成了我们为读者设计的学习UNIX技术的不同阶段,即学习UNIX基本知识的第一个阶段,掌握UNIX实用技术的第二个阶段,理解UNIX核心实现技术的第三个阶段以及了解和掌握UNIX扩展知识的第四个阶段。经历过这些阶段的学习和实践,希望能使读者对UNIX操作系统技术有一个比较全面的理解和认识,同时还能具备一定的UNIX环境编程开发能力。由于UNIX系统的核心实现技术是操作系统原理的很好应用和延展,因此在学习过程中最适宜的做法是采用理论与实践相结合的方式,循序渐进地掌握操作系统理论。希望这种学习方式可以提升读者对操作系统技术的学习兴趣,能够适当地减轻传统操作系统教学中理论枯燥、概念抽象等给人带来的困扰。
  本书适合用做高等院校计算机及相关专业的UNIX系统技术和操作系统课程的教学和辅导教材,同时也适合对UNIX系统技术感兴趣的软件开发人员自学。学习本书内容,需要读者具备一定的计算机体系结构和C语言程序设计的知识(当然,这些知识的掌握也可以同步进行)。在进行教学时,课程实验环境建议建立在Linux 2.6系统中,基本的编程语言采用C语言。学习中除了本教程中给出的例题外,读者还可以参考与本教程第2版配套的实验教材。需要指出的是,书中的这些内容对读者只是起到抛砖引玉的作用,读者应该在基本知识建立的基础上充分发挥自己的主观能动性,多做实验,做好实验,力求将UNIX系统知识和操作系统理论融会贯通,真正领会其中的技术真谛。
  本书的第1、2、11章由李福才修订,其余章节由张红光修订,张红光对全书进行了统稿。作者在本次修订过程中参阅了大量的相关著作和资料,并就修订的相关专题与有关专家和学者进行了多方面的探讨,我们还非常重视南开大学历届使用本教材的本科生阅读学习的意见,同学们在使用本书中曾提出了许多非常宝贵的反馈意见和修改建议,这些我们都力图在本次修订中加以体现。
  另外非常感谢对本书的编写做出无私贡献的所有人员,对直接参与并为完成本教材修订做了大量工作的潘岳、张勇、兰旭泽等人表示衷心的感谢,另外还要感谢机械工业出版社华章分社的编辑们,正是他们卓有成效的努力和细致用心的工作才使本书得以顺利出版。
  尽管在本书修订和编写过程中,我们力图认真工作、细心整理,但由于水平所限,书中难免存在谬误和不足之处,我们诚恳地期待读者的批评指正。联系的电子邮箱是:zhanghg@nankai.edu.cn。

作者
2009年8月于南开园

上架指导

计算机\操作系统

封底文字

UNIX操作系统和所包含的核心技术在经历了近半个世纪的风雨和磨难后,在新的流行操作系统如火如荼发展的今天又重新受到大家的关注,正是因为学术界、产业界和教育界都意识到了此项技术对于今天操作系统发展所起到的不可替代的作用和产生的重要影响。因此如何科学地研究、学习和掌握UNIX技术?如何把握好UNIX技术研究和UNIX应用技术学习的尺度?如何将操作系统的理论学习和实际系统的设计技术相结合?如何在系统学习操作系统技术的同时,给学生或读者提供概念清晰、易于实践的教学读本?是很多操作系统授课老师时常思考的问题。经过多年的教学实践,作者对上述问题有了自己独特的理解,并力求将这些解决方案集中体现在本教程的第3次修订中,希望广大读者和教师能从中获益。
在本次修订中,特别增添了一些UNIX实用编程设计技术,同时为满足学生和读者提出的自学要求,添加了一些指导性的实例教学内容。为配合部分高校老师的教学,对有些教学内容和教学层次也做了适当修订。
本书即可作为高等院校相关专业的操作系统课程教材,也可为需要了解和研究UNIX技术和应用的设计开发人员提供有益的支持和参考。

图书目录

第3版前言
第1章  绪论 1
1.1  操作系统概述 1
1.1.1  建立操作系统的目标 1
1.1.2  操作系统是用户与计算机的接口 1
1.1.3  操作系统是资源管理器 2
1.2  UNIX系统的主要特性 3
1.3  UNIX系统的发展史 4
1.4  开源软件与UNIX的推广发展 6
1.4.1  开源软件 6
1.4.2  促进UNIX发展的重要组织机构 7
1.4.3  各种UNIX系统分支 7
习题 9
第2章  UNIX基本概念及入门技术 10
2.1  UNIX系统基本常识 10
2.1.1  两种前端机 10
2.1.2  用户的注册与注销 11
2.1.3  账户的管理 12
2.1.4  用户口令的管理 12
2.1.5  用户组信息 13
2.2  初识UNIX的shell 13
2.2.1  什么是shell程序 13
2.2.2  shell的内部命令和外部命令 14
2.3  UNIX系统启动及用户登录过程 14
2.3.1  UNIX系统的启动方式 14
2.3.2  UNIX系统的启动过程 14
2.3.3  Linux引导过程实例 15
2.3.4  用户的登录过程 17
2.4  UNIX常用命令介绍 18
2.4.1  UNIX命令使用方法 18
2.4.2  多命令行及多行命令 19
2.4.3  一般常用命令 19
2.4.4  用于目录操作的命令 23
2.4.5  用于文件操作的命令 24
2.4.6  有关状态及信息查询的命令 28
2.4.7  用于网络和通信的命令 31
2.5  UNIX系统体系结构 34
2.5.1  传统UNIX系统体系结构 34
2.5.2  现代UNIX系统体系结构 35
2.6  UNIX系统使用注意事项 36
2.6.1  正确选择用户访问权限 36
2.6.2  移动存储设备的使用 36
2.6.3  UNIX对多种文件系统类型的支持 37
2.7  本章小结 40
习题 40
第3章  编辑UNIX的文本文件 42
3.1  标准编辑器ed 42
3.1.1  使用ed 的基本常识 43
3.1.2  元字符和正则表达式 43
3.1.3  如何进入ed、退出ed及保存文本
文件 44
3.1.4  ed中的常用命令 44
3.2  全屏幕编辑器vi 46
3.2.1  如何进入vi、退出vi及保存一个
文件 46
3.2.2  命令行方式下的常用命令 46
3.2.3  末行命令方式下的常用命令 47
3.2.4  进入插入编辑方式的常用命令 48
3.2.5  使用vi的注意事项 48
3.2.6  vi环境的设置 49
3.3  Emacs编辑器 50
3.3.1  Emacs的使用方法 51
3.3.2  Emacs主菜单功能简介 52
3.3.3  Emacs中的功能键 53
3.4  本章小结 53
习题 54
第4章  UNIX系统的shell 55
4.1  shell概述 55
4.1.1  shell的基本功能 55
4.1.2  多种UNIX的shell 55
4.2  shell的内部特性 57
4.2.1  shell的命令解释过程 57
4.2.2  UNIX系统定义的标准流 57
4.2.3  shell语法管理 58
4.2.4  标准流重定向与管道线控制 58
4.2.5  错误流重定向 60
4.2.6  命令执行控制及滤波功能 60
4.3  shell的环境设置 62
4.3.1  shell环境变量 62
4.3.2  Linux系统的shell环境配置 63
4.3.3  Korn shell环境设置 63
4.3.4  C shell环境设置 64
4.4  本章小结 66
习题 67
第5章  shell程序设计 68
5.1  shell编程的基本知识 68
5.1.1  shell程序可完成的工作 68
5.1.2  shell程序编写格式 68
5.1.3  shell程序的运行方式 69
5.2  shell变量的使用 69
5.2.1  shell变量及变量赋值 69
5.2.2  变量的访问及变量参数替换 70
5.2.3  变量的作用域 71
5.2.4  shell的预定义变量和环境变量 71
5.2.5  shell中命令的位置变量 72
5.2.6  变量替换 73
5.2.7  用命令做变量替换 73
5.3  test命令的使用 74
5.3.1  对文件特性的测试 74
5.3.2  对字符串内容的测试 74
5.3.3  对整数n的测试 75
5.4  shell程序的控制流 75
5.4.1  命令的返回状态 75
5.4.2  程序的控制结构 76
5.5  条件控制语句 77
5.6  循环语句 81
5.7  shell编程中常用的其他语句 84
5.8  shell程序的输出 85
5.9  shell程序的调试方法 86
5.10  本章小结 87
习题 88
第6章  UNIX系统编程基础 89
6.1  程序设计环境 89
6.1.1  理想中的程序设计环境 89
6.1.2  多任务环境下的程序执行 90
6.2  基于操作系统支持的程序设计 91
6.2.1  建立系统编程思想 91
6.2.2  UNIX提供的系统支持 92
6.2.3  关于UNIX的系统调用 94
6.2.4  系统调用与库函数的关系 95
6.3  在UNIX环境中完成C编程 96
6.3.1  编程需要掌握的工具 96
6.3.2  makefile文件编写 96
6.3.3  C程序的编译与调试 100
6.3.4  链接特殊库函数 101
6.4  常用函数库glib的使用 102
6.4.1  glib基本类型定义 102
6.4.2  glib的宏 103
6.4.3  内存管理函数 103
6.4.4  字符串处理函数 104
6.4.5  glib可支持的数据结构 105
6.4.6  GString 107
6.4.7  计时器函数 108
6.4.8  错误处理函数 108
6.5  其他有关函数库 108
6.5.1  libxml库 109
6.5.2  readline库 109
6.5.3  curses库 110
6.6  本章小结 112
习题 113
第7章  UNIX文件管理系统 114
7.1  UNIX文件的概念 114
7.2  UNIX文件分类 114
7.2.1  普通文件 114
7.2.2  目录文件 116
7.2.3  特殊文件 117
7.2.4  管道文件 117
7.2.5  链接文件 118
7.3  UNIX文件系统 118
7.3.1  文件的组织及命名 118
7.3.2  文件的许可机制 119
7.3.3  文件系统功能及结构 120
7.3.4  系统中的特殊目录 121
7.3.5  文件系统的安装与卸载 121
7.4  UNIX文件系统内部存储方式 123
7.4.1  逻辑卷与物理卷 123
7.4.2  文件系统的存储结构 125
7.4.3  索引节点和目录文件的作用 129
7.4.4  多重索引存储结构 130
7.5  UNIX文件系统的动态管理技术 132
7.5.1  支持多种文件系统的机制 132
7.5.2  文件信息的动态管理 133
7.5.3  文件的检索过程 135
7.5.4  文件共享方式 135
7.6  用于文件管理的系统调用 138
7.6.1  文件描述符 138
7.6.2  用于文件创建和文件链接的
系统调用 138
7.6.3  文件打开与关闭的系统调用 140
7.6.4  文件的读、写系统调用 140
7.7  文件随机存取技术 141
7.7.1  改变文件指针位置 141
7.7.2  捕获当前文件指针位置 143
7.8  文件记录管理技术 145
7.8.1  记录锁定技术描述 145
7.8.2  记录锁定技术举例 145
7.9  常用文件系统备份与恢复技术 147
7.10  本章小结 147
习题 148
第8章  UNIX的进程管理 150
8.1  进程的基本概念 150
8.1.1  程序的并发执行 150
8.1.2  进程的定义和描述 151
8.1.3  进程的状态 152
8.1.4  进程控制基本概念 154
8.2  UNIX进程管理机制 155
8.2.1  进程创建 155
8.2.2  进程描述 157
8.2.3  进程管理数据结构 157
8.3  UNIX命令执行及进程属性 163
8.3.1  命令执行与进程相关 163
8.3.2  进程属性说明 164
8.4  UNIX进程调度与管理 165
8.4.1  UNIX进程状态及其转换 165
8.4.2  UNIX进程调度程序 166
8.4.3  UNIX进程调度策略及其实现 167
8.5  UNIX进程管理的系统调用 169
8.5.1  进程管理系统调用的作用 169
8.5.2  进程的创建 170
8.5.3  控制进程执行特定任务 171
8.5.4  控制进程的终止 173
8.5.5  进程的同步 173
8.5.6  库函数system 174
8.6  本章小结 175
习题 176
第9章  UNIX存储管理 178
9.1  存储管理基本概念 178
9.1.1  存储器配置原则 178
9.1.2  存储管理基本任务 178
9.2  地址重定位 179
9.2.1  逻辑地址空间 179
9.2.2  物理地址空间 179
9.2.3  地址重定位 180
9.3  常用存储管理技术 181
9.3.1  连续内存分配方式 181
9.3.2  覆盖和交换技术 181
9.3.3  分页管理技术 182
9.3.4  段式管理技术 184
9.4  虚拟存储技术 185
9.4.1  局部性原理 185
9.4.2  虚拟存储思想 185
9.4.3  虚拟存储实现方法 186
9.4.4  虚拟存储页面置换算法 188
9.5  UNIX存储管理策略 191
9.5.1  交换策略 191
9.5.2  请求调页策略 191
9.6  Linux内存管理实现技术 192
9.6.1  Linux存储地址识别 192
9.6.2  Linux进程存储空间 193
9.6.3  Linux的分段模型 193
9.6.4  Linux的分页模型 194
9.6.5  Linux进程虚地址空间描述 195
9.6.6  Linux物理内存空间管理 196
9.6.7 基于Slab的缓存管理 197
9.7  本章小结 197
习题 198
第10章  UNIX系统的进程通信 200
10.1  进程通信的基本概念 200
10.1.1  进程通信的分类 200
10.1.2  进程间通信 200
10.1.3  进程通信实现方式 200
10.2  UNIX的基本通信技术 202
10.2.1  锁文件通信 202
10.2.2  记录锁定文件通信 202
10.2.3  信号 204
10.2.4  用信号完成通信 204
10.3  管道通信 207
10.3.1  管道的读写控制 208
10.3.2  无名管道通信 208
10.3.3  有名管道通信 210
10.4  共享存储区通信技术 213
10.4.1  共享存储区的概念 213
10.4.2  共享存储区的建立与操作 214
10.4.3  共享存储区通信实例 215
10.5  UNIX的IPC 216
10.5.1  UNIX System V IPC基本机制 217
10.5.2  消息队列 217
10.5.3  Linux系统的IPC机制 222
10.6  本章小结 222
习题 223
第11章  UNIX的设备管理 224
11.1  设备管理的基本概念 224
11.1.1  设备管理模块的功能 224
11.1.2  设备分类管理 225
11.1.3  I/O传输控制技术 225
11.1.4  虚拟设备管理技术 227
11.2  UNIX的设备管理结构 227
11.2.1  设备管理体系结构 227
11.2.2  UNIX的设备分类标识 228
11.2.3  UNIX的设备特殊文件 228
11.2.4  逻辑设备描述及访问 229
11.3  设备状态及设备控制 230
11.3.1  设备状态及其转换 230
11.3.2  设备控制策略 230
11.4  设备驱动与系统内核间的关联 232
11.4.1  设备驱动程序 232
11.4.2  驱动程序与内核间的关联 233
11.4.3  设备驱动程序与文件系统的关系 233
11.5  块设备的数据高速缓存机制 235
11.5.1  缓冲控制块的设置 235
11.5.2  缓冲池的结构 236
11.5.3  缓冲区的分配与释放 237
11.6  对设备做读写操作 238
11.6.1  块设备的读写 238
11.6.2  字符设备的读写 239
11.7  Linux系统设备管理问题 241
11.7.1  Linux设备驱动程序的特点 241
11.7.2  驱动程序与外界的接口 242
11.7.3  驱动程序的基本结构 242
11.7.4  常用设备接口 242
11.7.5  外设连接自动检测技术 244
11.8  本章小结 246
习题 247
第12章  UNIX的多线程环境 248
12.1  线程的基本概念 248
12.1.1  多线程基础 248
12.1.2  包含线程的进程模型 250
12.2  多线程平台特性 251
12.2.1  设计中可利用线程改进程序的
响应能力 251
12.2.2  处理器结构改善直接影响程序
执行效率 251
12.2.3  线程的执行状态及运行特性 251
12.3  多线程管理模式 252
12.3.1  纯用户级线程管理模式 252
12.3.2  纯核心级线程管理模式 253
12.3.3  组合型的线程管理模式 253
12.4  UNIX的多线程管理结构 254
12.5  多线程编程 255
12.5.1  多线程程序结构的改变 255
12.5.2  多线程标准库 256
12.5.3  多线程编程规则 257
12.6  多线程程序设计技术 259
12.6.1  创建和使用简单线程 259
12.6.2  对线程的常用操作 261
12.6.3  线程中使用的数据 263
12.7  多线程程序设计综合举例 264
12.8  本章小结 267
习题 269
第13章  UNIX网络特性及支撑环境 270
13.1  计算机网络基本知识 270
13.1.1  通信子网 270
13.1.2  资源子网 271
13.1.3  计算机网络的主要功能 271
13.1.4  计算机网络分类 272
13.1.5  计算机网络体系结构 272
13.1.6  网络中的传输介质和连接 274
13.1.7  网络操作系统 274
13.2  UNIX网络结构及支持协议 274
13.2.1  UNIX网络分层结构 274
13.2.2  UNIX中的TCP/IP协议 275
13.2.3  UNIX系统支持的UUCP协议 277
13.2.4  基于协议的Internet应用 278
13.3  网络间进程通信 278
13.3.1  套接字解决的问题 279
13.3.2  套接字通信的基本知识 279
13.3.3  套接字和套接字地址 280
13.3.4  套接字在虚电路服务中的应用 281
13.3.5  套接字在数据报服务中的应用 281
13.3.6  套接字协议族 282
13.3.7  套接字类型 282
13.3.8  套接字函数 282
13.4  用UNIX平台构建Internet网络环境 284
13.4.1  用户域名和IP地址 284
13.4.2  TCP/IP配置信息 285
13.4.3  电子邮件服务 286
13.4.4  远程文件传输服务 287
13.4.5  远程登录telnet服务 288
13.4.6  网络文件系统 290
13.5  本章小结 290
习题 291
第14章  X-Window及其他实用程序 292
14.1  X-Window 292
14.1.1  X-Window的特征 292
14.1.2  X-Window的工作方式 293
14.1.3  X-Window的组成部件 294
14.1.4  X-Window编程环境介绍 295
14.2  数据检索加工工具awk 296
14.2.1  awk基本描述 296
14.2.2  awk中的记录和字段 297
14.2.3  awk中使用的模式 298
14.2.4  awk中的操作语句 300
14.3  程序管理器 300
14.3.1  源代码控制系统SCCS 300
14.3.2  并行开发程序管理器 300
14.4  词法分析和语法分析生成工具 302
14.5  本章小结 303
习题 303
附录A  UNIX系统中的常用系统调用 304
附录B  Linux系统中的C环境 308
附录C  UNIX/Linux常用命令 314
参考文献 343

教学资源推荐
作者: 王春生 刘艺 等编著
作者: (美)M. Morris Mano; Charles R. Kime 著
作者: (美)Jeffrey A. Hoffer Mary B. Prescott
作者: (美)M. Morris Mano加州大学洛杉矶分校 Charles R.Kime威斯康星大学麦迪逊分校 著
参考读物推荐
作者: 陈大钢
作者: (美)Hinkmond Wong