
本书是"十二五"普通高等教育本科国家级规划教材,也是国防科技大学国家精品课程和国家优秀教学团队建设成果。操作系统作为计算机系统的核心系统软件,负责控制和管理整个计算机系统的资源并组织用户高效协调地使用这些资源。本书以多道程序技术为基础,以通用操作系统主要功能部件为主线,介绍操作系统的概念、功能、设计等内容。包括:绪论,操作系统运行机制与用户界面,进程与处理机管理,进程同步与通信、进程死锁,存储管理,设备管理,文件系统,并行与分布式操作系统,保护与安全,系统虚拟机,Linux 操作系统实例。附录提供与课程配套的实验与课程设计参考资料。配套有实验教材《Linux 操作系统实验教程》,为任课教师免费提供电子课件和习题解答。
前 言 操作系统是计算机系统的核心系统软件,它负责控制和管理整个计算机系统的资源并组织用户高效协调使用这些资源,使计算机各部件极大程度地并行运行。操作系统课程是计算机科学与技术专业的核心课程。随着计算机技术的发展,各类嵌入式系统得到广泛应用,其他相关专业也相继把操作系统作为一门重要的必修或选修课程。 本书阐述了操作系统的基本工作原理及设计方法,以多道程序技术为基础,以通用操作系统主要功能部件为主线,介绍操作系统的概念、功能、设计等内容。在最后一章给出了当前流行的Linux操作系统设计实例。 本书是“十二五”普通高等教育本科国家级规划教材,也是国防科技大学国家精品课程和国家优秀教学团队的建设成果。作者长期从事计算机操作系统设计开发和操作系统教学工作,根据20多年的科研和教学实践积累的经验,参考了国内外近几年出版的教材和文献,并结合科研开发工作对操作系统教学的要求,注意到当前我国计算机教育、研究与开发、应用的现实情况,编写了本书,剔除了传统操作系统教科书已无实际使用价值的内容,增加了实际操作系统的典型处理方法,使本书的内容具有先进性及实用性。并且本着循序渐进的原则,采用通俗的语言和先进的实例,全面阐述操作系统的基本概念、原理、方法。既注重对操作系统经典内容的论述,又注意介绍操作系统的发展趋势及重要的研究开发成果。本次修订,增加了第10章虚拟机系统,这是其他同类书中未见的全新内容。修订后全书共分11章,每章之后配有小结及习题,以加深理解。 第1章介绍什么是操作系统及操作系统的形成、发展及现状; 第2章介绍操作系统的运行机制与用户界面; 第3章介绍进程管理及线程的基本思想; 第4章介绍并发及死锁; 第5章介绍存储管理; 第6章介绍设备管理; 第7章介绍文件系统; 第8章介绍并行与分布式操作系统; 第9章介绍保护与安全; 第10章介绍系统虚拟机; 第11章介绍Linux操作系统实例。 附录提供与课程配套的实验参考资料。 其中,前7章是操作系统的核心内容,可根据教学要求及课时安排选择增加第8、9、10、11章内容。本书适于42~64学时的课堂教学。建议在讲完前4章时布置多进程编程等实验,穿插讲解习题及课程实验内容,本书同步编写了配套实验教材《Linux操作系统实验教程》(ISBN 978-7-121-08217-7),本教材为任课教师免费提供电子课件和习题解答。任课老师可通过http://www.phei.com.cn注册下载。 本书是罗宇、邹鹏、邓胜兰等编著的《操作系统》(第3版)的修订版。修订中,参考了全国硕士研究生入学统一考试操作系统大纲和实用新技术要求,对所有章节进行了改编和补充。本次修订由罗宇、邹鹏、邓胜兰完成,罗宇负责统稿,李思阳和罗宇补充编写了第10章系统虚拟机;陈燕晖、文艳军、晏益慧、张辉、许祥为本书修订提供了素材,做出了贡献。 本书可作为高等院校计算机及相关专业教材,对于具有高级程序设计语言初步知识和对计算机有一定了解的专业人士,亦是较全面的参考书。书中疏漏谬误之处恳请专家、读者指正。 编著者 于长沙国防科技大学计算机学院
目 录 第1章 绪论 1 1.1 什么是操作系统 1 1.1.1 计算机系统的软件构成 1 1.1.2 操作系统作为特殊子程序 2 1.1.3 操作系统作为资源管理者 3 1.1.4 操作系统提供程序并发运行机制 4 1.2 操作系统的发展历史 5 1.2.1 监督程序 5 1.2.2 专用操作系统 8 1.2.3 多种方式操作系统 13 1.2.4 PC操作系统、并行与分布式操作系统及发展 13 1.3 主要操作系统介绍 14 1.3.1 Windows系列及MS DOS 15 1.3.2 UNIX大家族(SVR4,BSD,Solaris,AIX,HP UX) 17 1.3.3 自由软件Linux和freeBSD等 21 习题1 25 第2章 操作系统运行机制与用户界面 26 2.1 中断和异常 26 2.1.1 中断和异常的区别 26 2.1.2 中断的分级 27 2.2 中断/异常响应和处理 29 2.2.1 中断/异常响应 29 2.2.2 中断/异常处理 31 2.3 操作系统运行模型 34 2.4 系统调用 36 2.5 人机界面 40 2.5.1 命令语言 40 2.5.2 图形化的用户界面 42 2.6 小结 44 习题2 44 第3章 进程与处理机管理 45 3.1 进程描述 45 3.1.1 进程定义 46 3.1.2 进程控制块 47 3.2 进程状态 49 3.2.1 进程的创建与结束 50 3.2.2 进程状态变化模型 51 3.2.3 进程挂起 53 3.3 进程控制与调度 55 3.3.1 进程执行 55 3.3.2 进程调度 57 3.3.3 调度算法 60 3.4 作业与进程的关系 64 3.5 线程的引入 66 3.6 小结 68 习题3 68 第4章 进程同步与通信、进程死锁 70 4.1 并发执行的实现 70 4.1.1 并发编程方法 70 4.1.2 并发执行的实现 71 4.2 进程的同步与互斥 72 4.2.1 同步与临界段问题 73 4.2.2 解决临界段问题的硬件实现方法 74 4.2.3 信号量 76 4.2.4 管程 79 4.2.5 进程同步与互斥举例 80 4.3 消息传递原理 84 4.3.1 消息传递通信原理 84 4.3.2 消息传递通信示例 85 4.3.3 管道通信简介 87 4.4 死锁 87 4.4.1 死锁示例 87 4.4.2 死锁定义 89 4.4.3 死锁防止 92 4.4.4 死锁避免 93 4.4.5 死锁检测 95 4.4.6 死锁的恢复 97 4.4.7 死锁综合处理 97 4.5 小结 98 习题4 99 第5章 存储管理 103 5.1 连续空间分配 103 5.1.1 单道连续分配 103 5.1.2 多道固定分区法 106 5.1.3 多道连续可变分区法 107 5.2 不连续空间分配 110 5.2.1 页式管理 110 5.2.2 段式管理 114 5.2.3 段页式管理 116 5.2.4 改进的页式管理 118 5.3 虚拟存储管理 118 5.3.1 页式虚存的基本思想 119 5.3.2 页式虚存管理实现 119 5.3.3 多级页表 122 5.3.4 页面替换策略 124 5.4 小结 130 习题5 131 第6章 设备管理 134 6.1 I/O硬件概念 134 6.1.1 常见外部设备分类 134 6.1.2 设备控制器(I/O部件) 135 6.1.3 I/O控制方式 136 6.1.4 I/O控制方式的发展过程 139 6.2 设备I/O子系统 139 6.2.1 设备的使用方法 139 6.2.2 I/O层次结构 142 6.2.3 设备驱动程序 144 6.2.4 缓冲技术 147 6.3 存储设备 150 6.3.1 常见存储外部设备 150 6.3.2 磁盘调度 153 6.3.3 磁盘阵列 156 6.4 小结 160 习题6 161 第7章 文件系统 162 7.1 文件结构 162 7.1.1 文件概念 162 7.1.2 文件的逻辑结构 163 7.1.3 文件的物理存储 164 7.1.4 文件控制块 166 7.2 文件目录结构 167 7.2.1 一级目录结构 167 7.2.2 二级目录结构 168 7.2.3 树形目录结构 169 7.2.4 无环图目录结构 170 7.2.5 目录操作 171 7.3 文件存储器空间布局与管理 171 7.4 文件访问接口 173 7.4.1 传统文件系统调用的实现 173 7.4.2 存储映像文件访问 175 7.5 文件保护 176 7.5.1 文件访问保护 176 7.5.2 文件备份 178 7.6 文件系统的基本模型 179 7.7 FAT文件系统磁盘布局 182 7.8 小结 183 习题7 184 第8章 并行与分布式操作系统 185 8.1 并行操作系统 185 8.1.1 对称多处理机 185 8.1.2 线程概念 187 8.1.3 线程实现 193 8.1.4 线程调度 198 8.2 分布式系统 202 8.2.1 分布式系统特点 203 8.2.2 几种分布式应用模型 205 8.2.3 分布式系统实现模型 208 8.2.4 分布式操作系统主要研究内容 210 8.2.5 分布式系统基础——通信协议层次简介 211 8.3 小结 214 习题8 215 第9章 保护与安全 216 9.1 安全威胁 216 9.1.1 病毒 216 9.1.2 蠕虫 217 9.1.3 特洛伊木马 217 9.1.4 隐蔽通道 218 9.2 安全机制 218 9.2.1 硬件保护机制 219 9.2.2 标识与鉴别 219 9.2.3 存取控制 221 9.2.4 最小特权管理 222 9.2.5 安全审计 223 9.2.6 入侵检测 224 9.2.7 网络信息安全技术 225 9.3 Linux的安全机制 228 9.4 安全评测标准 230 9.4.1 TCSEC橘皮书 230 9.4.2 中国国标GB17859-1999 232 9.5 小结 232 习题9 233 第10章 系统虚拟机 234 10.1 虚拟机概述 234 10.1.1 为什么需要虚拟机 234 10.1.2 虚拟机管理器的分类 235 10.1.3 系统虚拟化的优势及发展目标 235 10.1.4 虚拟机管理器的架构 236 10.2 CPU的虚拟化 237 10.2.1 软件完全虚拟化 237 10.2.2 硬件辅助虚拟化 238 10.3 内存虚拟化 239 10.3.1 软件实现内存虚拟化 239 10.3.2 EPT页表辅助内存虚拟化 240 10.4 I/O的虚拟化 240 10.4.1 完全的软件I/O虚拟化 241 10.4.2 半虚拟化设备 241 10.5 小结 242 习题10 243 第11章 Linux操作系统实例 244 11.1 进程管理 244 11.1.1 进程与进程描述符 244 11.1.2 进程状态及切换时机 245 11.1.3 进程的调度算法 247 11.1.4 进程的创建与消亡 248 11.2 存储管理 250 11.2.1 物理内存的管理 250 11.2.2 进程地址空间的管理 253 11.3 文件系统 256 11.3.1 VFS 256 11.3.2 EXT2文件系统 262 11.3.3 主要文件系统中系统调用的处理流程 266 11.4 设备管理 268 11.4.1 设备文件的概念 268 11.4.2 设备模型基础 269 11.4.3 相关数据结构 269 11.4.4 块设备文件的open(),read()操作 272 11.5 中断、异常及系统调用 273 11.5.1 中断/异常的基本知识 274 11.5.2 异常处理函数 274 11.5.3 系统调用 275 11.5.4 中断的处理 275 11.5.5 软中断 278 11.6 SysV进程间通信 279 11.6.1 共有的特性 279 11.6.2 信号量 281 11.6.3 消息队列 283 11.6.4 共享内存 284 习题11 287 附录A bash脚本编程简介 288 A.1 注释和简单命令 288 A.2 环境变量 288 A.3 控制结构 289 A.3.1 if语句 289 A.3.2 case语句 290 A.3.3 for语句 291 A.3.4 while语句和until语句 291 A.4 函数 292 A.5 小结 293 附录B 实现一个简单的Linux命令解释器 294 B.1 myshell的语法 294 B.2 程序框架 294 B.3 命令行的语法分析 295 B.4 简单命令的执行 298 B.5 Makefile 298 B.6 小结 298 附录C Linux常用命令 299 C.1 用户终端命令 299 C.2 vi编辑器的使用 307 附录D Linux常用函数 309 D.1 进程管理函数 309 D.2 文件管理函数 311 D.3 进程间通信函数 313 D.4 多线程库函数 316 参考文献 318
罗宇,国防科技大学计算机学院教授,参加过银河系列机操作系统的研发,是国防科技大学国家精品课程“操作系统”的主讲教师和责任教授,在理论教学和实践教学方面经验丰富。
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0261210