编辑推荐
适读人群 :本书既可作为计算机及软件类本科专业课程教材或参考书,又可作为对于工程实践能力有着更高要求的面向卓越工程师培养的同样专业的课程教材或参考书,也可供计算机及软件行业工程技术人员阅读和参考。 1. 本书面向卓越工程师培养,理论与实践并重;2. 深入讲解操作系统原理,并提供了大量鲜活的应用实例,有助于活跃学生思维,激发学习兴趣,旨在培养较强实践能力的高级工程技术人才;3. 篇幅适当,本书配套有PPT、相关源代码、习题解答等。
内容简介
本书理论与实践并重,全面、系统地阐述了操作系统的重要概念和原理,深入、细致地剖析了操作系统的组成结构和运行机制,给出了相关概念、原理在Linux操作系统中的实现方法,提供了大量鲜活的应用实例,详细说明了Linux实验环境搭建方法,给出了完整可用的LinuxC源程序及编译和运行方法,方便读者无障碍实验学习和再创造,为培养具有扎实的专业理论知识和较强实践能力的高级工程技术人才提供可理解、可实践的内容和素材。全书共分8章,内容包括:操作系统概论、处理器管理、并发进程的同步、互斥与死锁、存储管理、设备管理、文件管理、操作系统安全机制、多处理机与多计算机操作系统,涵盖操作系统经典、核心内容及扩展内容。本书配套有PPT、相关源代码、习题解答等。
作者简介
申丰山,1970年出生,西安电子科技大学博士毕业,1999年至今在郑州大学信息工程学院担任教师工作,2013年至今负责操作系统(卓越工程师班)授课培训,担任校企联合实验室产学研课题研发指导。
目录
第1章 操作系统概论 1
1.1 操作系统的资源管理功能和目标 1
1.1.1 操作系统的定义 1
1.1.2 操作系统在计算机系统中的位置 2
1.1.3 操作系统的资源管理技术 2
1.1.4 操作系统运行程序的服务 3
实验1 Linux操作系统实验环境搭建 5
1.1.5 操作系统的目标 10
1.2 操作系统的功能 10
1.3 操作系统的主要特性 11
1.3.1 并发性 11
1.3.2 共享性 12
1.3.3 异步性 12
1.3.4 虚拟性 13
1.4 操作系统的发展和分类 13
1.4.1 操作系统的发展 13
1.4.2 操作系统的分类 15
1.5 操作系统的用户接口 16
1.5.1 程序接口 17
实验2 Linux程序接口实验 19
1.5.2 操作接口 20
实验3 Linux操作接口实验 21
1.6 操作系统的结构设计 25
1.6.1 操作系统的主要构件 25
1.6.2 操作系统的结构 26
1.6.3 操作系统运行模型 27
习题1 28
第2章 处理器管理 30
2.1 处理器 30
2.1.1 寄存器 30
2.1.2 指令系统、特权指令与非特权指令 30
2.1.3 处理器状态及切换 31
2.1.4 程序状态字寄存器 32
2.2 中断 32
2.2.1 中断概念 32
2.2.2 中断源分类 33
2.2.3 中断处理 34
2.3 进程及其实现 35
2.3.1 引入进程概念的必要性 35
2.3.2 进程定义和属性 35
2.3.3 进程状态与切换 36
2.3.4 进程描述 39
2.3.5 进程切换 43
2.3.6 模式切换 45
2.3.7 进程控制与管理 45
实验4 Linux进程控制实验 47
2.4 线程及其实现 49
2.4.1 多线程的引入 49
2.4.2 多线程环境中的进程与线程 50
2.4.3 多线程实现方法 52
实验5 结果不唯一的多线程并发运行实例 53
实验6 多线程共享资源并发访问控制 54
2.5 处理器调度系统 58
2.6 处理器调度算法 63
2.6.1 低级调度的功能和类型 63
2.6.2 作业调度和低级调度算法 64
习题2 70
第3章 并发进程的同步、互斥与死锁 73
3.1 并发进程 73
3.1.1 程序执行的顺序性 73
3.1.2 程序执行的并发性 74
3.1.3 与时间有关的错误 77
3.1.4 进程的交互 79
3.2 临界区管理 79
3.2.1 临界区调度原则 79
3.2.2 实现临界区管理的几种错误算法 80
3.2.3 实现临界区管理的Peterson算法 81
3.2.4 实现临界区管理的硬件设施 82
3.3 同步 84
3.3.1 同步与同步机制 84
3.3.2 信号量与PV操作 85
3.3.3 利用信号量实现互斥 87
3.3.4 利用信号量实现进程同步 88
3.3.5 Linux系统中的同步互斥功能 96
实验7 使用信号量解决生产者-消费者问题 97
3.4 管程 100
3.4.1 管程的概念 100
3.4.2 管程的实现 103
3.4.3 管程的应用 106
3.5 进程通信 109
3.5.1 管道通信机制 109
实验8 Linux管道通信 110
3.5.2 共享内存通信机制 113
实验9 Linux共享内存通信 114
3.5.3 消息传递通信机制 118
实验10 Linux消息传递通信 120
3.5.4 套接字通信机制 122
实验11 Linux套接字通信 123
3.5.5 信号通信机制 125
3.6 死锁 128
3.6.1 死锁的概念和产生的必要条件 128
3.6.2 死锁防止 130
3.6.3 死锁避免 130
3.6.4 死锁检测与解除 133
习题3 135
第4章 存储管理 138
4.1 存储器层次 138
4.2 地址重定位、存储保护和存储共享 139
4.3 连续存储管理 141
4.3.1 固定分区存储管理 141
4.3.2 可变分区存储管理 143
4.3.3 伙伴系统 145
4.3.4 主存不足的辅助存储管理技术 146
4.4 分页存储管理 146
4.4.1 分页存储管理方案 146
4.4.2 快表 148
4.4.3 分页存储空间的分配和释放 149
4.4.4 分页存储空间页面共享与保护 150
4.4.5 多级页表 150
4.4.6 反置页表 151
4.5 分段存储管理 152
4.6 虚拟存储管理 155
4.6.1 虚拟存储器原理 155
4.6.2 请求分页虚拟存储管理 156
习题4 166
第5章 设备管理 167
5.1 I/O硬件系统 167
5.1.1 I/O设备 167
5.1.2 I/O控制方式 169
5.2 I/O软件系统 172
5.2.1 I/O软件设计目标 172
5.2.2 中断处理程序 173
5.2.3 设备驱动程序 173
5.2.4 设备无关I/O软件 176
5.2.5 用户空间的I/O软件 179
5.3 磁盘管理 180
5.3.1 磁盘结构 180
5.3.2 磁盘调度算法 182
5.4 虚拟设备 185
5.4.1 虚拟设备原理 185
5.4.2 SPOOLing系统结构 186
习题5 188
第6章 文件管理 189
6.1 文件 189
6.1.1 文件概念 189
6.1.2 文件类型和属性 190
6.1.3 文件存取方法 191
6.1.4 文件操作 193
实验12 Linux文件操作 194
6.2 目录 196
6.2.1 目录项信息和结构 196
6.2.2 目录层次 198
6.2.3 目录操作 199
6.3 文件结构 200
6.3.1 文件逻辑结构 200
6.3.2 文件物理结构 200
6.4 文件系统功能及实现 201
6.4.1 磁盘信息分区 201
6.4.2 文件操作系统调用功能实现 202
6.4.3 文件共享 205
6.5 文件空间管理 208
6.5.1 文件空间分配方法 208
6.5.2 文件外存空间管理 212
6.6 内存映射文件 216
实验13 Linux内存映射文件 217
6.7 虚拟文件系统 220
习题6 222
第7章 操作系统安全 224
7.1 操作系统安全概念 224
7.1.1 信息安全及威胁 224
7.1.2 信息保护 226
7.2 信息安全保护机制 227
习题7 230
第8章 多处理机与多计算机操作系统 231
8.1 多处理机操作系统 231
8.2 多计算机操作系统 232
习题8 235
参考文献 236
前言/序言
操作系统是计算机系统的重要组成部分,是保证计算机功能正常、完整、可用的最基本的软件系统。操作系统几乎是每个计算机用户驾驭计算机的唯一系统工具。因此,每个用户理所当然地需要熟悉操作系统。然而操作系统又是一种异常复杂的软件系统,不仅代码规模庞大,而且组成结构和运行机制复杂,学习、理解操作系统内部奥秘极富挑战性。操作系统直接建立在硬件基础上,对硬件进行管理,向用户屏蔽复杂的硬件细节。计算机系统中的硬件品种众多,工作流程复杂。操作系统需要处理大量的并发任务及并行操作,良好协调这些任务及操作间的同步关系,防止错误的发生。总之,操作系统是计算机系统工作的指挥者、协调者、监控者。理解操作系统乃至进行新的设计及实现均离不开对操作系统概念和理论的熟悉和掌握,这些概念和理论是操作系统领域的共同语言。操作系统课程内容又是程序设计、软件工程等需要以操作系统作为工作支持环境及涉及操作系统内核要素的课程的基础。作为一种复杂的大规模的软件系统,操作系统的成功研制也是软件工程思想和方法应用的典范,并且为软件工程提供普遍的、可借鉴的、实用的实践方案和模板。例如,操作系统所包含的方便软件维护的模块化、层次化、分布式软件体系结构思想、复杂系统分治策略及各种资源管理中的数据结构在许多应用软件构造中有着类似的应用。因此,操作系统是一门重要的软件理论和方法基础课程。
全书共分8章,分别讲述了操作系统基本概念、理论体系、处理器管理、并发进程的同步、互斥与死锁、存储管理、设备管理、文件管理、操作系统安全机制、多处理机与多计算机操作系统,涵盖操作系统经典、核心内容及扩展内容。
第1章,介绍操作系统的定义、地位、功能、特性、发展、分类及结构。重难点内容是1.1.3 操作系统的资源管理技术;1.3 操作系统的主要特性;1.5.1 程序接口;1.6 操作系统的结构设计的理解与区分。
第2章,讲述进程管理的硬件基础、进程的定义、进程的结构、状态、进程控制、处理器调度以及线程概念和线程实现。重难点内容是2.1.2指令系统、特权指令与非特权指令;2.1.3 处理器状态及切换;2.2 中断等硬件设施与操作系统控制地位的实现关系;2.3 进程概念、进程逻辑结构与操作系统物理实现结构的关系;2.4.2 多线程环境中进程与线程的区别与联系、线程的应用;2.6 处理器调度算法的理解与应用及其评价标准。
第3章,讲述并发进程之间的关系,包括:并发进程的同步、互斥关系及信号量与PV和管程实现机制、死锁的产生及其解决方案、进程间的通信方案。重难点内容是3.1.3 并发进程与时间有关的错误;3.2.1 临界区调度原则;3.3 信号量结构与PV操作逻辑及其应用;3.4 管程结构、实现方法及应用;3.5 进程通信方案及应用;3.6 死锁的避免与检测和解除方法。
第4章,从简单到复杂讲述存储管理技术,包括连续存储管理技术(固定分区、可变分区、伙伴系统)、离散实存管理技术(分页、分段、段页式系统)和虚拟存储管理技术(请求分页、请求分段、请求段页式系统),重点讲述请求分页虚拟存储管理技术。重难点内容是4.2 地址重定位、存储保护和存储共享;4.4 分页存储管理;4.6 虚拟存储管理相关概念、工作原理及相关算法的理解与计算。
第5章,讲述设备管理的硬件基础知识、I/O软件系统层次、磁盘结构与磁盘I/O调度算法、虚拟设备技术。重难点内容是5.1.2 I/O控制方式及控制器硬件工作关键细节;5.2.3 设备驱动程序的用途及与中断处理程序的协作关系;5.3.2 磁盘调度算法与计算及磁盘速度与磁道/扇区编排的关系;5.4.2 SPOOLing系统结构。
第6章,讲述文件管理系统的文件及目录结构、用户接口功能及其实现、文件空间管理方法、内存映射文件技术及虚拟文件系统结构。重难点内容是6.1.4 文件操作应用;6.3 文件物理结构与逻辑结构;6.4.2 文件操作系统调用功能实现;6.4.3 文件共享技术;6.5 文件空间管理技术、内存映射文件的应用。
第7章,简述操作系统安全保护机制,了解系统安全隐患与相应的防护措施。
第8章,简述多处理机及多计算机环境下操作系统设计思想,了解复杂硬件条件下与单处理机环境下处理机管理的区别。
为了使读者能够近距离、可触摸地感知操作系统的概念和原理知识,尽可能向读者清晰展现操作系统的结构元素和运行逻辑,本书采用可见形式描述复杂抽象的概念和事物。对于相关硬件及软件的重要运作细节力求充分揭示。
对操作系统的内核功能进行实践应用是解除操作系统陌生感的重要学习形式,也是以工程实践能力为培养目标的教学内容的重要组成部分。本书包含了经过多年教学实践积累、完善形成的Linux操作系统内核功能完整实验程序和实验环境搭建方法,可供读者无障碍地验证和透彻理解操作系统的相关概念和理论,并在此基础上进行操作系统的应用创新和设计。实验内容包括:Linux操作系统实验环境的搭建、Linux程序接口实验、Linux操作接口实验、Linux进程控制实验、多线程并发运行与互斥访问实验、Linux进程同步与互斥实验、Linux多途径通信实验、Linux文件操作实验、Linux内存映射文件实验。实验选材既考虑操作系统概念、理论的验证性需求,同时也考虑相关技术在工程实践中的实用价值,达到学以致用的目的。
总之,本书理论与实践并重,满足各类读者的需要。既方便以理论学习为主的人员具体、完整地理解和掌握操作系统理论知识,又方便需要在理论学习基础上熟练掌握操作系统内核功能应用技术的人员顺利获得工程实践能力。对于安排有独立实验学时的班级,教材中的实验可以在实验学时进行。对于课程安排在实验室或机房,但是没有独立实验学时的班级,教材中的实验可以嵌入在理论讲授的适当时机进行,实验时长由教师根据学生情况及总学时合理确定。建议理论讲授与实验交替进行,防止学习形式的单调性,保持学生学习兴趣。对于不具备统一实验条件的班级,教材中的实验可以由学生课下进行,教师决定验收与否。略过教材中的实验章节,并不影响操作系统理论体系的完整性。
本书内容与知识结构图形象直观地描述了本书核心章节,同时也是操作系统各组成部分与所依赖的硬件系统各部件之间的对应关系及内部结构。该图帮助读者总览知识全局、准确定位知识细节。
本书由申丰山主编和统稿。作者所在团队的多名成员参与了课程讨论与部分编写工作。王黎明教授一直支持作者从事操作系统教学工作,使得作者有充分的时间和机会熟悉、积累和完善操作系统知识、探索讲授技巧,为本书的成稿积累了重要的素材。王黎明教授参与了教材第1章、第2章、第3章的部分编写工作。张卓博士参与讨论、编写了第4章、第5章和第6章的部分内容,职为梅和张岳参与讨论、编写了第7章和第8章的部分内容。书中某些章节参考或引用了文献中列出的国内外著作的部分内容以及互联网资源上的某些内容,谨此向各位作者一并表示衷心的感谢!本书的讲义版在卓越工程师班及计算机和软件类专业班的应用极大调动了学生学习和探索操作系统的兴趣,这是促成本书出版的重要动力。
由于作者水平有限,加上操作系统代码规模庞大、复杂,分析不易,难以获得系统、完整、准确的第一手资料作为佐证,书中内容难免存在错误,某些抽象、晦涩的内容可能改进不彻底,敬请读者批评、指正,以便共同改进教材。为方便课程讲授,华信教育资源网提供了教学课件等资源供教师下载,或与作者联系索取。
用于搭建实验环境的ubuntu Linux操作系统可从网址下载,也可从其他相关网站下载安装。ubuntu新版本不断推出,读者可能下载到高于本书使用的ubuntu版本,高版本ubuntu完全可以替代本书使用的低版本ubuntu顺利安装和完成实验。
编 者
2015年12月
操作系统原理与Linux实践教程 下载 mobi epub pdf txt 电子书 格式