书单推荐 新书推荐 |
操作系统原理与实践 读者对象:本书可作为计算机类应用型本科专业操作系统相关课程的教材。 ![]()
操作系统是管理和控制计算机硬件与软件资源的计算机程序,是计算机系统的核心系统软件。操作系统课程是计算机类专业的核心课程和必修课程,操作系统的原理、管理技术和调度策略是计算机应用系统开发人员必须掌握的专业知识。本书共分 6 章,系统地阐述了操作系统的基本概念、原理、技术、方法及功能,尽可能全面地展示操作系统的精髓和特性,力求做到概念清晰、结构合理、取舍得当、由浅入深、通俗易懂。第 1 章为操作系统概论,第 2~5 章分别介绍操作系统中处理器管理及并发进程、存储管理、设备管理和文件管理等内容,第 6 章介绍 Windows 和 Linux 操作系统。为方便读者学习,每章末尾均附有小结和习题。附录部分是验证和重现操作系统基本理论的实验和课程设计项目,供读者选用。本书面向应用型本科、职业本科学生,原理和理论叙述简单明了,案例分析联系实际,全书内容易于理解和掌握。本书可作为计算机类本科专业操作系统相关课程的教材或参考书,也可作为从事操作系统原理研究与系统开发的工程技术人员的参考书。
姚军财,男,1979年生,教授,工学博士,硕士生导师,IEEE会员。主要从事图像和视频处理技术、目标跟踪和检测、计算机视觉及其交叉学科方面的研究工作。主持国家自然科学基金1项、省自然科学基金2项、厅局级自然科学基金4项,参与省部级及以上科研项目7项;以第一作者发表相关学术论文50余篇(核心及以上),SCI/EI收录20余篇;获发明专利、实用新型专利、软件著作权等10余项,新技术鉴定成果3项。获陕西省青年科技新星和"三秦人才”称号,获省部级自然科学技术奖3项(排名1/7,6/7,5/6)、厅局级自然科学技术奖5项(均排名第一)。
第 1 章 操作系统概论 ···················································································.1
1.1 操作系统的概念 ················································································.1 1.1.1 操作系统的定义和目标 ··············································································.1 1.1.2 操作系统的形成和发展 ··············································································.2 1.1.3 操作系统的主要特性 ·················································································.5 1.2 操作系统的功能 ················································································.6 1.2.1 处理器管理 ·····························································································.6 1.2.2 存储管理 ································································································.6 1.2.3 设备管理 ································································································.7 1.2.4 文件管理 ································································································.7 1.3 操作系统的接口 ················································································.8 1.3.1 操作接口和操作命令 ·················································································.8 1.3.2 程序接口与系统调用 ·················································································.9 1.4 操作系统的结构 ················································································.9 1.4.1 整体式结构 ····························································································.10 1.4.2 层次式结构 ····························································································.10 1.4.3 客户/服务器结构 ·····················································································.10 1.4.4 虚拟机结构 ····························································································.11 1.5 流行操作系统简介 ············································································.11 1.5.1 Windows 操作系统 ···················································································.11 1.5.2 UNIX 操作系统 ·······················································································.12 1.5.3 Linux 操作系统 ·······················································································.12 1.5.4 iOS 操作系统 ·························································································.13 1.5.5 Android 操作系统 ····················································································.14 本章小结 ·······························································································.15 习题 1 ··································································································.15 第 2 章 处理器管理及并发进程 ·····································································.16 2.1 多道程序设计 ··················································································.16 2.1.1 程序的顺序执行 ······················································································.16 2.1.2 程序的并发执行 ······················································································.16 2.1.3 多道程序设计 ·························································································.17 2.1.4 并发程序执行的条件 ················································································.18 2.2 进程 ······························································································.19 2.2.1 进程的定义及其属性 ················································································.19 2.2.2 进程的状态及其转换 ················································································.20 2.2.3 进程控制块 ····························································································.21 2.2.4 进程队列 ·······························································································.22 2.3 进程的控制 ·····················································································.23 2.3.1 操作系统内核 ·························································································.24 2.3.2 原语 ·····································································································.24 2.3.3 进程控制原语 ·························································································.24 2.4 进程调度 ························································································.26 2.4.1 进程调度简介 ·························································································.26 2.4.2 进程调度的算法 ······················································································.26 2.5 线程及其实现 ··················································································.32 2.5.1 为什么要引入多线程概念 ··········································································.32 2.5.2 多线程环境下的进程和线程 ·······································································.33 2.5.3 线程的优点及多线程的应用 ·······································································.34 2.5.4 多线程实现的三种方式 ·············································································.35 2.5.5 Java 环境下多线程设计举例 ·······································································.35 2.6 并发进程的概念 ···············································································.37 2.6.1 相关进程及其关系 ···················································································.37 2.6.2 与时间有关的错误 ···················································································.38 2.6.3 临界区概念及其管理要求 ··········································································.40 2.6.4 临界区管理的尝试 ···················································································.41 2.6.5 信号量与 PV 操作 ····················································································.44 2.7 进程的互斥和同步 ············································································.45 2.7.1 进程的互斥 ····························································································.45 2.7.2 进程的同步 ····························································································.48 2.7.3 进程互斥和同步的关系 ·············································································.59 2.8 管程 ······························································································.60 2.8.1 管程的概念 ····························································································.60 2.8.2 管程的特点及其组成 ················································································.60 2.8.3 Hansen 方法实现管程 ···············································································.62 2.8.4 Hansen 方法实现管程的实例 ······································································.62 2.9 进程通信 ························································································.65 2.9.1 消息传递概述 ·························································································.66 2.9.2 消息传递的两种方式 ················································································.66 2.9.3 消息传递应用举例 ···················································································.68 2.9.4 信号量与 PV 操作机制、管程和消息传递的关系 ·············································.69 2.10 死锁 ····························································································.69 2.10.1 死锁的定义与产生的原因·········································································.69 2.10.2 死锁的防止 ··························································································.70 2.10.3 死锁的避免与银行家算法·········································································.72 2.10.4 死锁的检测与解除 ·················································································.76 本章小结 ·······························································································.77 习题 2 ··································································································.78 第 3 章 存储管理 ·······················································································.80 3.1 存储系统的基本概念 ·········································································.80 3.1.1 存储器的分类 ·························································································.80 3.1.2 物理地址和逻辑地址 ················································································.80 3.1.3 地址重定位和存储保护 ·············································································.81 3.2 存储管理的基本概念 ·········································································.81 3.2.1 存储管理的功能 ······················································································.81 3.2.2 内存扩充技术 ·························································································.82 3.2.3 存储管理的分类 ······················································································.83 3.3 分区式存储管理 ···············································································.84 3.3.1 单一连续区存储管理 ················································································.84 3.3.2 固定分区存储管理 ···················································································.85 3.3.3 可变分区存储管理 ···················································································.87 3.4 简单分页式存储管理 ·········································································.92 3.4.1 基本原理 ·······························································································.92 3.4.2 地址转换 ·······························································································.93 3.4.3 相联存储器和快表 ···················································································.94 3.4.4 页面的分配与回收 ···················································································.95 3.4.5 页面的共享和保护 ···················································································.96 3.4.6 两级和多级页表 ······················································································.96 3.5 简单分段式存储管理 ·········································································.98 3.5.1 基本原理 ·······························································································.98 3.5.2 地址转换 ·······························································································.99 3.5.3 段的共享和保护 ······················································································.99 3.5.4 优点和缺点 ··························································································.100 3.6 虚拟存储管理 ················································································.101 3.7 请求分页虚拟存储管理 ····································································.102 3.7.1 基本原理 ·····························································································.102 3.7.2 内存页面分配策略 ·················································································.103 3.7.3 页面调入策略 ·······················································································.104 3.7.4 页面置换算法 ·······················································································.104 3.7.5 缺页中断率分析 ····················································································.106 3.8 请求分段虚拟存储管理 ····································································.108 3.8.1 基本原理 ·····························································································.108 3.8.2 地址转换 ·····························································································.109 3.8.3 段的动态链接 ·······················································································.109 3.8.4 段的动态增长 ·······················································································.109 3.9 请求段页式虚拟存储管理 ·································································.110 本章小结 ·····························································································.110 习题 3 ································································································.110 第 4 章 设备管理 ······················································································.112 4.1 设备管理概述 ················································································.112 4.1.1 设备管理的任务与目标 ···········································································.112 4.1.2 设备管理的功能 ····················································································.112 4.1.3 外部设备的分类 ····················································································.113 4.2 设备 I/O 控制方式 ···········································································.115 4.2.1 程序查询方式 ·······················································································.115 4.2.2 中断方式 ·····························································································.115 4.2.3 DMA(直接内存存取)方式 ····································································.116 4.2.4 通道方式 ·····························································································.117 4.3 设备 I/O 软件管理 ···········································································.119 4.3.1 I/O 软件的目标 ·····················································································.119 4.3.2 I/O 中断处理程序 ··················································································.120 4.3.3 设备驱动程序 ·······················································································.120 4.3.4 与设备无关的 I/O 软件 ···········································································.121 4.3.5 用户级的 I/O 软件 ·················································································.121 4.4 缓冲技术 ······················································································.122 4.4.1 单缓冲技术 ··························································································.122 4.4.2 双缓冲技术 ··························································································.123 4.4.3 多缓冲技术 ··························································································.123 4.4.4 缓冲池技术 ··························································································.123 4.5 外部设备分配、回收与启动 ······························································.124 4.5.1 设备相对号和绝对号 ··············································································.124 4.5.2 外部设备的分配和回收 ···········································································.124 4.6 磁盘驱动调度 ················································································.125 4.6.1 磁盘结构 ·····························································································.126 4.6.2 磁盘调度 ·····························································································.127 4.6.3 磁盘移臂调度 ·······················································································.128 4.6.4 磁盘的旋转调度 ····················································································.129 4.7 虚拟设备 ······················································································.131 4.7.1 脱机工作方式 ·······················································································.131 4.7.2 Spooling 技术 ·······················································································.132 4.7.3 虚拟设备 ·····························································································.133 本章小结 ·····························································································.133 习题 4 ································································································.134 第 5 章 文件管理 ······················································································.136 5.1 文件系统 ······················································································.136 5.1.1 文件和文件系统 ····················································································.136 5.1.2 文件的分类 ··························································································.137 5.1.3 文件系统的功能 ····················································································.138 5.2 文件目录 ······················································································.138 5.2.1 目录内容 ·····························································································.138 5.2.2 目录结构 ·····························································································.139 5.3 文件结构与存取方法 ·······································································.141 5.3.1 文件的逻辑结构及存取方法 ·····································································.141 5.3.2 文件的物理结构及存取方法 ·····································································.142 5.3.3 存储空间管理 ·······················································································.145 5.4 文件的使用 ···················································································.146 5.4.1 文件访问 ·····························································································.146 5.4.2 文件控制 ·····························································································.148 5.4.3 目录管理 ·····························································································.149 5.4.4 文件的共享 ··························································································.149 5.5 安全性和保护 ················································································.150 5.5.1 文件的访问权限 ····················································································.150 5.5.2 文件的存取控制 ····················································································.150 5.5.3 文件的完整性 ·······················································································.151 本章小结 ·····························································································.152 习题 5 ································································································.152 第 6 章 Windows 和 Linux ··········································································.154 6.1 Windows 操作系统 ··········································································.154 6.1.1 Windows 操作系统的发展历程和现状 ·························································.154 6.1.2 Windows 2000/XP 简介 ···········································································.155 6.1.3 Windows 操作系统总体架构 ·····································································.157 6.1.4 用户模式和内核模式 ··············································································.160 6.1.5 Windows 操作系统和应用程序 ··································································.162 6.2 Linux 操作系统 ··············································································.166 6.2.1 Linux 简介 ···························································································.166 6.2.2 Linux Shell ···························································································.166 6.2.3 vi 文本编辑器 ·······················································································.169 6.2.4 gcc 编译器和 gdb 调试 ············································································.171 本章小结 ·····························································································.176 习题 6 ································································································.176 附录 A 操作系统参考实验项目 ····································································.177 第一部分 基本实验部分 ········································································.177 实验 1 进程管理 ···························································································.177 实验 2 进程调度 ···························································································.177 实验 3 存储管理 ···························································································.179 实验 4 独占设备的静态分配模拟 ······································································.179 实验 5 文件管理 ···························································································.180 第二部分 创新实验部分(Linux) ···························································.181 实验 6 more 命令实现 ····················································································.181 实验 7 文件列表命令实现 ···············································································.184 实验 8 文件系统路径命令实现 ·········································································.190 附录 B 操作系统课程设计参考案例 ······························································.196 案例 1 多线程编程解决线程间同步和互斥问题 ···········································.196 案例 2 固定分区/可变分区存储管理算法的模拟 ··········································.199 案例 3 页面置换算法的模拟 ···································································.200 案例 4 银行家算法的模拟 ······································································.206 案例 5 移臂调度算法的模拟 ···································································.210 案例 6 一个简单文件管理器的实现 ··························································.215
你还可能感兴趣
我要评论
|







