目录 第1章绪论1 1.1操作系统概念1 1.2操作系统的历史2 1.2.1手工操作阶段3 1.2.2批处理系统阶段3 1.2.3多道程序系统阶段6 1.2.4分时操作系统阶段7 1.2.5通用操作系统阶段7 1.2.6操作系统的进一步发展8 1.3操作系统的基本类型8 1.3.1批处理系统9 1.3.2分时系统9 1.3.3通用操作系统10 1.3.4个人计算机操作系统10 1.3.5网络操作系统10 1.3.6分布式操作系统11 1.4操作系统的功能12 1.4.1处理机管理12 1.4.2内存管理12 1.4.3设备管理12 1.4.4信息管理13 1.4.5用户接口13 1.5计算机硬件简介13 1.5.1计算机的基本硬件元素13 1.5.2与操作系统相关的主要寄存器14 1.5.3存储器件的访问速度15 1.5.4指令的执行与中断16 1.6操作系统启动17 1.6.1操作系统启动过程17 1.6.2Linux操作系统启动实例18 1.7算法的描述19 1.8操作系统研究的几种观点20 本章小结21习题22 第2章用户界面23 2.1概述23 2.2作业和作业组织24 2.2.1作业24 2.2.2作业的组织24 2.2.3输入输出方式25 2.3命令控制接口27 2.4Linux与Windows的命令控制接口28 2.4.1Linux的命令控制接口28 2.4.2Windows的命令控制接口30 2.5系统调用32 2.6Linux与Windows的系统调用33 2.6.1Linux的系统调用33 2.6.2Windows的系统调用34 本章小结36 习题36 第3章进程和线程38 3.1进程的概念38 3.1.1程序的顺序执行和并发执行38 3.1.2进程的定义42 3.2进程的描述42 3.2.1进程控制块42 3.2.2进程上下文及其切换44 3.2.3进程空间和大小46 3.3进程控制46 3.3.1创建与撤销47 3.3.2阻塞与唤醒48 3.3.3进程状态及其转换49 3.4进程互斥50 3.4.1概念50 3.4.2互斥锁53 3.4.3信号量与P、V原语54 3.5进程同步58 3.5.1概念58 3.5.2同步的信号量实现59 3.5.3生产者消费者问题61 3.6死锁62 3.6.1概念62 3.6.2死锁的排除方法63 3.7进程间通信65 3.7.1进程间通信的方式65 3.7.2消息缓冲机制66 3.7.3邮箱通信67 3.7.4管道68 3.8线程71 3.8.1概念71 3.8.2描述和控制72 3.8.3线程的实现73 本章小结75 习题76 第4章CPU调度78 4.1分级调度78 4.1.1作业的状态及其转换78 4.1.2调度的层次79 4.1.3作业与进程的关系80 4.2作业调度80 4.2.1功能81 4.2.2调度目标与性能衡量82 4.3进程调度83 4.3.1功能83 4.3.2调度的时机84 4.3.3调度性能衡量85 4.4调度算法85 4.4.1常用调度算法85 4.4.2算法评价89 4.5实时系统94 4.5.1特点94 4.5.2调度算法96 本章小结96 习题97 第5章内存管理99 5.1背景99 5.1.1虚拟内存99 5.1.2地址变换100 5.1.3内存的管理与保护102 5.2分区管理104 5.2.1基本原理104 5.2.2内存的分配与回收107 5.2.3有关分区其他问题的讨论110 5.3分页管理111 5.3.1基本原理111 5.3.2静态分页管理112 5.3.3动态分页管理115 5.3.4页帧置换算法117 5.3.5内存保护120 5.3.6分页管理的优缺点120 5.4段式管理121 5.4.1基本原理121 5.4.2地址变换123 5.4.3段的共享与保护125 5.4.4段页式管理126 5.4.5段式管理小结128 5.5覆盖与交换128 5.5.1覆盖技术129 5.5.2交换技术130 5.6局部性和系统抖动131 本章小结133 习题134 第6章文件系统136 6.1概述136 6.1.1文件系统的引入136 6.1.2文件系统中的重要概念137 6.1.3文件的分类138 6.2文件138 6.2.1逻辑结构138 6.2.2物理结构140 6.2.3存取方法143 6.2.4存取控制145 6.3文件目录147 6.3.1层次结构147 6.3.2目录共享150 6.3.3目录管理151 6.4文件系统的实现与管理152 6.4.1文件系统结构152 6.4.2用户接口153 6.4.3层次模型153 6.4.4存储空间管理155 本章小结157 习题158 第7章设备管理159 7.1I/O设备原理159 7.1.1I/O设备159 7.1.2设备控制器160 7.1.3内存映射I/O161 7.2数据传送控制方式162 7.2.1轮询163 7.2.2中断164 7.2.3DMA165 7.2.4通道167 7.3中断技术169 7.3.1中断的概念169 7.3.2中断的类别与优先级170 7.3.3软中断170 7.3.4中断处理过程171 7.4缓冲技术172 7.4.1缓冲的引入172 7.4.2缓冲的种类173 7.4.3缓冲池的管理173 7.5设备分配175 7.5.1设备分配使用的数据结构176 7.5.2设备分配原则和策略177 7.5.3设备分配算法179 7.6I/O控制179 7.6.1I/O控制的引入179 7.6.2I/O控制的功能179 7.6.3I/O控制的实现180 7.7设备驱动程序181 本章小结181 习题182 第8章Linux操作系统184 8.1概述184 8.2进程管理185 8.2.1概述185 8.2.2进程控制191 8.2.3进程调度195 8.2.4进程通信198 8.3内存管理208 8.3.1虚拟内存空间及其管理208 8.3.2请求调页技术209 8.4文件系统212 8.4.1概述212 8.4.2虚拟文件系统214 8.4.3注册和挂载221 8.4.4进程与文件系统的联系225 8.4.5Ext4文件系统226 8.5设备管理235 8.5.1块设备235 8.5.2字符设备237 本章小结237 习题238 第9章虚拟化技术239 9.1概述239 9.1.1系统虚拟化的基本概念239 9.1.2虚拟化的实现方式240 9.1.3虚拟机监视器的类型241 9.1.4虚拟化的优势242 9.1.5虚拟化的发展历程243 9.2CPU虚拟化244 9.2.1基本思想244 9.2.2受限执行245 9.2.3上下文切换247 9.3内存虚拟化248 9.3.1客户机物理地址空间249 9.3.2地址映射250 9.3.3访存请求截获与处理253 9.4I/O虚拟化253 9.4.1基本思想254 9.4.2软件模拟的I/O全虚拟化254 9.4.3软件模拟的I/O半虚拟化255 9.4.4硬件辅助的I/O虚拟化256 9.5容器258 9.5.1镜像与容器258 9.5.2命名空间260 9.5.3控制组262 本章小结264 习题265 第10章操作系统结构演进趋势266 10.1微内核操作系统266 10.1.1引言266 10.1.2进程间通信机制267 10.1.3资源访问控制270 10.1.4现有的微内核操作系统272 10.1.5小结273 10.2库操作系统274 10.2.1引言274 10.2.2镜像的构建275 10.2.3现有应用的兼容275 10.2.4增强的安全性277 10.2.5小结277 10.3基于外核的操作系统278 10.3.1引言278 10.3.2安全绑定280 10.3.3资源的可见回收281 10.3.4中止协议281 10.3.5小结281 10.4面向离散化数据中心的操作系统282 10.4.1离散化数据中心282 10.4.2系统架构283 10.4.3监视器284 10.4.4小结286 本章小结286 习题287 参考文献288