目录CONTENTS 第1章操作系统概论1 1.1操作系统的作用1 1.1.1硬件系统和应用程序间的界面1 1.1.2资源管理者2 1.1.3推动操作系统发展的因素2 1.2操作系统的演变3 1.2.1串行处理系统3 1.2.2简单批处理系统4 1.2.3多道程序批处理系统6 1.2.4分时系统8 1.2.5实时系统10 1.2.6网络操作系统11 1.2.7分布式操作系统11 1.2.8嵌入式操作系统12 1.3操作系统的主要成就13 1.3.1进程13 1.3.2存储器管理15 1.3.3信息保护和安全性16 1.3.4调度和资源管理17 1.3.5系统结构18 1.4操作系统举例20 1.4.1Windows NT20 1.4.2UNIX System Ⅴ23 1.5操作系统主要研究的问题24 小结24 习题25 第2章进程描述与控制26 2.1进程状态26 2.1.1进程产生和终止27 2.1.2进程状态模型29 2.1.3进程挂起33 2.2进程描述36 2.2.1操作系统控制结构37 2.2.2进程控制结构37 2.2.3进程属性38 2.3进程控制40 2.3.1执行模式40 2.3.2进程创建40 2.3.3进程切换41 2.3.4上下文切换41 2.3.5操作系统的运行42 2.3.6微核43 2.4线程和SMP44 2.4.1线程及其管理44 2.4.2多线程的实现45 2.4.3进程与线程的关系47 2.4.4SMP47 2.5系统举例48 2.5.1UNIX System Ⅴ48 2.5.2Windows NT52 2.5.3Linux55 小结56 习题57 第3章并发控制——互斥与同步60 3.1并发原理61 3.1.1进程间的相互作用63 3.1.2进程间的相互竞争64 3.1.3进程间的相互合作65 3.1.4互斥的要求66 3.2互斥——用软件方法实现67 3.2.1Dekker算法67 3.2.2Peterson算法70 3.3互斥——用硬件方法解决71 3.3.1禁止中断71 3.3.2使用机器指令72 3.4信号量74 3.4.1用信号量解决互斥问题75 3.4.2用信号量解决生产者/消费者问题76 3.4.3信号量的实现80 3.4.4用信号量解决理发店问题81 3.5管程84 3.5.1带信号量的管程84 3.5.2用管程解决生产者/消费者问题85 3.6消息传递87 3.6.1消息传递原语87 3.6.2用消息传递实现同步88 3.6.3寻址方式88 3.6.4消息格式89 3.6.5排队规则90 3.6.6用消息传递实现互斥90 3.7读者/写者问题91 3.7.1读者优先92 3.7.2写者优先93 3.8系统举例95 3.8.1UNIX System Ⅴ95 3.8.2Windows NT97 小结98 习题99 第4章死锁处理101 4.1死锁问题概述101 4.1.1可重用资源101 4.1.2消耗型资源102 4.1.3产生死锁的条件103 4.2死锁处理策略104 4.2.1死锁预防104 4.2.2死锁避免105 4.2.3死锁检测108 4.2.4死锁恢复109 4.2.5处理死锁的综合方法110 4.3哲学家用餐问题110 小结112 习题112 第5章内存管理114 5.1概述114 5.1.1基本概念114 5.1.2虚拟存储器116 5.1.3重定位117 5.2存储管理的基本技术118 5.2.1分区法118 5.2.2可重定位分区法120 5.2.3覆盖技术122 5.2.4交换技术122 5.3分页存储管理123 5.3.1基本概念123 5.3.2纯分页系统125 5.3.3请求式分页系统126 5.3.4硬件支持及缺页处理128 5.3.5页的共享和保护129 5.4分段存储管理129 5.4.1基本概念130 5.4.2基本原理130 5.4.3硬件支持和缺段处理131 5.4.4段的共享和保护132 5.5段页式存储管理134 5.5.1基本概念134 5.5.2地址转换135 5.5.3管理算法135 5.6虚拟内存的置换算法136 5.6.1先进先出页面置换算法136 5.6.2最佳页面置换算法137 5.6.3最近最少使用页面置换算法137 5.6.4第2次机会页面置换算法138 5.6.5时钟页面置换算法138 5.6.6其他页面置换算法139 5.7系统举例139 5.7.1UNIX系统中的存储管理技术139 5.7.2Linux系统中的存储管理技术143 5.7.3Windows NT系统中的存储管理技术144 小结145 习题146 第6章处理机调度148 6.1调度类型148 6.1.1长程调度150 6.1.2中程调度150 6.1.3短程调度150 6.2调度算法150 6.2.1短程调度标准150 6.2.2优先权的使用152 6.2.3调度策略152 6.2.4性能比较159 6.2.5模拟模型161 6.2.6公平分享调度策略161 6.3多处理机调度163 6.3.1粒度164 6.3.2设计要点165 6.3.3进程调度策略166 6.4实时调度169 6.4.1实时操作系统的特性170 6.4.2实时调度172 6.4.3期限调度173 6.4.4比率单调调度175 6.5响应时间177 6.6系统举例178 6.6.1UNIX System Ⅴ178 6.6.2Windows NT179 小结181 习题181 第7章I/O设备管理183 7.1I/O系统硬件183 7.1.1I/O设备183 7.1.2设备控制器184 7.1.3I/O技术185 7.2I/O软件的层次结构189 7.2.1中断处理程序190 7.2.2设备驱动程序191 7.2.3与设备无关的I/O软件192 7.2.4用户空间的I/O软件193 7.2.5缓冲技术194 7.3磁盘调度198 7.3.1调度策略198 7.3.2磁盘高速缓存201 7.4系统举例203 7.4.1UNIX System Ⅴ203 7.4.2Windows NT I/O分析205 小结208 习题209 第8章文件管理211 8.1文件与文件系统211 8.1.1文件及其分类211 8.1.2文件系统及其功能212 8.2文件的结构及存取方式213 8.2.1文件的逻辑结构及存取方式214 8.2.2文件的物理结构及存储设备215 8.3文件目录结构与目录管理220 8.3.1文件目录结构220 8.3.2文件目录管理225 8.4文件存储空间的分配与管理226 8.4.1文件存储空间的分配226 8.4.2磁盘空间管理228 8.5系统举例——Windows NT230 8.5.1PE可移动执行的文件格式230 8.5.2PE文件首部232 8.5.3块表数据结构及辅助信息块234 小结238 习题 238 第9章分布计算239 9.1客户/服务器计算239 9.1.1什么是客户/服务器计算239 9.1.2客户/服务器模式的应用241 9.1.3中间件243 9.2分布式消息传递245 9.2.1分布式消息传递的方法245 9.2.2消息传递的可靠性246 9.3远程过程调用246 小结247 习题248 第10章分布式进程管理249 10.1进程迁移249 10.1.1进程迁移的动机249 10.1.2进程迁移机制249 10.1.3一种迁移方案251 10.1.4进程迁移的协商252 10.1.5进程驱逐253 10.1.6抢占及非抢占进程的迁移253 10.2分布式全局状态253 10.2.1全局状态及分布式快照253 10.2.2分布式快照算法255 10.3分布式进程管理——互斥256 10.3.1分布式互斥问题256 10.3.2分布式系统的事件定序——时戳方法258 10.3.3分布式互斥算法259 10.4分布式死锁263 10.4.1资源分配中的死锁263 10.4.2死锁预防264 10.4.3死锁避免265 10.4.4死锁检测265 10.4.5消息通信中的死锁268 小结270 习题270 第11章操作系统的安全性272 11.1安全性概述272 11.1.1安全性的内涵272 11.1.2操作系统的安全性273 11.1.3操作系统的安全性级别275 11.2安全保护机制276 11.2.1进程支持276 11.2.2内存及地址保护276 11.2.3存取控制279 11.2.4文件保护282 11.2.5用户身份鉴别284 11.3病毒及其防御286 11.3.1病毒概述286 11.3.2病毒的防御机制287 11.3.3特洛伊木马程序及其防御288 11.4加密技术289 11.4.1传统加密方法289 11.4.2公开密钥加密方法290 11.4.3密钥的管理291 11.5安全操作系统的设计293 11.5.1安全模型293 11.5.2安全操作系统的设计296 11.6系统举例——Windows 2000 的安全性分析299 小结301 习题301 第12章一个小型操作系统的实现303 12.1MINIX概述303 12.1.1MINIX的组成结构303 12.1.2头文件305 12.2进程307 12.2.1进程概述307 12.2.2进程的具体实现309 12.3I/O系统314 12.3.1I/O系统概述314 12.3.2设备驱动程序的实现316 12.4内存管理319 12.4.1内存管理概述319 12.4.2内存管理的实现322 12.5文件系统325 12.5.1文件系统概述325 12.5.2实现328 小结332 习题332 参考文献334第1章操作系统概论11.1操作系统的作用1 1.1.1硬件系统和应用程序间的界面1 1.1.2资源管理者2 1.1.3推动操作系统发展的因素2 1.2操作系统的演变3 1.2.1串行处理系统3 1.2.2简单批处理系统4 1.2.3多道程序批处理系统6 1.2.4分时系统8 1.2.5实时系统10 1.2.6网络操作系统11 1.2.7分布式操作系统11 1.2.8嵌入式操作系统12 1.3操作系统的主要成就13 1.3.1进程13 1.3.2存储器管理15 1.3.3信息保护和安全性16 1.3.4调度和资源管理17 1.3.5系统结构18 1.4操作系统举例20 1.4.1Windows NT20 1.4.2UNIX System V23 1.5操作系统的主要研究课题24 小结25 习题25 第2章进程描述与控制26 2.1进程状态26 2.1.1进程产生和终止27 2.1.2进程状态模型29 2.1.3进程挂起32 2.2进程描述36 2.2.1操作系统控制结构37 2.2.2进程控制结构37 2.2.3进程属性38 2.3进程控制40 2.3.1执行模式40 2.3.2进程创建41 2.3.3进程切换41 2.3.4上下文切换42 2.3.5操作系统的运行42 2.3.6微核44 2.4线程和SMP44 2.4.1线程及其管理44 2.4.2多线程的实现46 2.4.3进程与线程的关系47 2.4.4SMP48 2.5系统举例49 2.5.1UNIX System V49 2.5.2Windows NT52 2.5.3Linux56 小结57 习题58 第3章并发控制——互斥与同步61 3.1并发原理62 3.1.1进程间的相互作用64 3.1.2进程间的相互竞争65 3.1.3进程间的相互合作66 3.1.4互斥的要求67 3.2互斥——用软件方法实现68 3.2.1Dekker算法68 3.2.2Peterson算法72 3.3互斥——用硬件方法解决73 3.3.1禁止中断73 3.3.2使用机器指令73 3.4信号量75 3.4.1用信号量解决互斥问题77 3.4.2用信号量解决生产者/消费者问题78 3.4.3信号量的实现83 3.4.4用信号量解决理发店问题84 3.5管程87 3.5.1带信号量的管程87 3.5.2用管程解决生产者/消费者问题89 3.6消息传递90 3.6.1消息传递原语90 3.6.2用消息传递实现同步91 3.6.3寻址方式91 3.6.4消息格式92 3.6.5排队规则93 3.6.6用消息传递实现互斥93 3.7读者/写者问题95 3.7.1读者优先95 3.7.2写者优先96 3.8系统举例99 3.8.1UNIX System V99 3.8.2Windows NT101 小结102 习题103 第4章死锁处理105 4.1死锁问题概述105 4.1.1可重用资源105 4.1.2消耗型资源106 4.1.3产生死锁的条件107 4.2死锁处理108 4.2.1死锁预防108 4.2.2死锁避免109 4.2.3死锁检测113 4.2.4死锁恢复113 4.2.5处理死锁的综合方法114 4.3哲学家用餐问题114 小结116 习题116 第5章内存管理118 5.1概述118 5.1.1基本概念118 5.1.2虚拟存储器120 5.1.3重定位121 5.2存储管理的基本技术123 5.2.1分区法123 5.2.2可重定位分区法124 5.2.3覆盖技术125 5.2.4交换技术127 5.3分页存储管理127 5.3.1基本概念127 5.3.2纯分页系统130 5.3.3请求式分页系统131 5.3.4硬件支持及缺页处理132 5.3.5页的共享和保护133 5.4分段存储管理134 5.4.1基本概念134 5.4.2基本原理135 5.4.3硬件支持和缺段处理135 5.4.4段的共享和保护136 5.5段页式存储管理138 5.5.1基本概念138 5.5.2地址转换139 5.5.3管理算法140 5.6虚拟内存的置换算法140 5.6.1先进先出页面置换算法141 5.6.2最佳页面置换算法141 5.6.3最近最少使用页面置换算法141 5.6.4第2次机会页面置换算法142 5.6.5时钟页面置换算法143 5.6.6其他页面置换算法143 5.7系统举例144 5.7.1UNIX系统中的存储管理技术144 5.7.2Linux系统中的存储管理技术148 5.7.3Windows NT系统中的存储管理技术149 小结150 习题151 第6章处理机调度152 6.1调度类型152 6.1.1长程调度154 6.1.2中程调度154 6.1.3短程调度154 6.2调度算法154 6.2.1短程调度标准154 6.2.2优先权的使用156 6.2.3调度策略156 6.2.4性能比较164 6.2.5模拟模型165 6.2.6公平分享调度策略166 6.3多处理机调度167 6.3.1粒度168 6.3.2设计要点169 6.3.3进程调度策略170 6.4实时调度174 6.4.1实时操作系统的特性174 6.4.2实时调度177 6.4.3期限调度177 6.4.4比率单调调度180 6.5响应时间182 6.6系统举例183 6.6.1UNIX System V183 6.6.2Windows NT184 小结186 习题186 第7章I/O设备管理189 7.1I/O系统硬件189 7.1.1I/O设备189 7.1.2设备控制器190 7.1.3I/O技术191 7.2I/O软件的层次结构196 7.2.1中断处理程序196 7.2.2设备驱动程序197 7.2.3与设备无关的I/O软件198 7.2.4用户空间的I/O软件199 7.2.5缓冲技术201 7.3磁盘调度204 7.3.1调度策略205 7.3.2磁盘高速缓存208 7.4系统举例210 7.4.1UNIX System V210 7.4.2Windows NT I/O分析212 小结215 习题216 第8章文件管理218 8.1文件与文件系统218 8.1.1文件及其分类218 8.1.2文件系统及其功能219 8.2文件的结构及存取方式221 8.2.1文件的逻辑结构及存取方式221 8.2.2文件的物理结构及存储设备223 8.3文件管理228 8.3.1文件目录结构228 8.3.2文件目录管理233 8.4文件存储空间的分配与管理233 8.4.1文件存储空间的分配234 8.4.2磁盘空间管理235 8.5系统举例——Windows NT237 8.5.1PE可移动执行的文件格式238 8.5.2PE文件首部239 8.5.3块表数据结构及辅助信息块242 小结246 习题246 第9章分布计算247 9.1客户/服务器计算247 9.1.1什么是客户/服务器计算247 9.1.2客户/服务器模式的应用249 9.1.3中间件251 9.2分布式消息传递253 9.2.1分布式消息传递的方法253 9.2.2消息传递的可靠性254 9.3远程过程调用254 小结255 习题256 第10章分布式进程管理257 10.1进程迁移257 10.1.1进程迁移的原因257 10.1.2进程迁移的机制257 10.1.3一种迁移方案259 10.1.4进程迁移的协商260 10.1.5进程驱逐261 10.1.6抢占及非抢占进程的迁移261 10.2分布式全局状态262 10.2.1全局状态及分布式快照262 10.2.2分布式快照算法263 10.3分布式进程管理——互斥264 10.3.1分布式互斥问题265 10.3.2分布式系统的事件定序——时戳方法266 10.3.3分布式互斥算法268 10.4分布式死锁271 10.4.1资源分配中的死锁272 10.4.2死锁预防273 10.4.3死锁避免274 10.4.4死锁检测274 10.4.5消息通信中的死锁277 小结279 习题279 第11章操作系统的安全性281 11.1安全性概述281 11.1.1安全性的内涵281 11.1.2操作系统的安全性282 11.1.3操作系统的安全性级别284 11.2安全保护机制285 11.2.1进程支持285 11.2.2内存及地址保护286 11.2.3存取控制288 11.2.4文件保护292 11.2.5用户身份鉴别293 11.3病毒及其防御296 11.3.1病毒概述296 11.3.2病毒的防御机制297 11.3.3特洛伊木马程序及其防御298 11.4加密技术298 11.4.1传统加密方法299 11.4.2公开密钥加密方法300 11.4.3密钥的管理301 11.5安全操作系统的设计302 11.5.1安全模型303 11.5.2安全操作系统的设计305 11.6系统举例——Windows 2000的安全性分析308 小结310 习题311 第12章一个小型操作系统的实现312 12.1MINIX概述312 12.1.1MINIX的组成结构312 12.1.2头文件315 12.2进程317 12.2.1进程概述317 12.2.2进程的具体实现318 12.3I/O系统324 12.3.1I/O系统概述324 12.3.2设备驱动程序的实现325 12.4内存管理329 12.4.1内存管理概述329 12.4.2内在管理的实现332 12.5文件系统335 12.5.1文件系统概述335 12.5.2实现338 小结342 习题342 参考文献344