目 录 第1章 计算机操作系统概述 1 1.1 操作系统简介 11.1.1 什么是操作系统 1 1.1.2 批处理操作系统 3 1.1.3 分时操作系统 5 1.1.4 实时操作系统 5 1.1.5 分布式操作系统 6 1.2 计算机系统结构 7 1.2.1 计算机硬件发展史 7 1.2.2 CPU 8 1.2.3 计算机运行原理 11 1.2.4 I/O结构 12 1.2.5 存储结构 13 1.2.6 硬件保护 18 1.3 操作系统结构 19 1.3.1 系统成分 19 1.3.2 系统功能 23 1.3.3 系统调用 25 1.3.4 系统程序 27 1.3.5 系统结构 28 1.3.6 虚拟机 32 1.3.7 Java 32 小结 34 综合练习一 35 一、选择题 35 二、填空题 36 三、简答题 36 四、应用题 36 第2章 进程与线程 37 2.1 进程的基础 37 2.1.1 进程的概念 37 2.1.2 进程状态 37 2.1.3 进程控制块 38 2.2 进程调度 39 2.2.1 进程调度队列 39 2.2.2 调度程序 40 2.3 进程控制 41 2.3.1 进程创建与撤消 41 2.3.2 进程切换 43 2.3.3 上下文切换 43 2.4 交互进程 44 2.5 进程间通信 46 2.5.1 消息传递系统 47 2.5.2 消息传递通信的实现方法 47 2.5.3 同步 48 2.5.4 消息格式 49 2.5.5 缓冲 49 2.5.6 生产者——消费者示例 50 2.6 线程的基本概念 50 2.7 多线程的优点 51 2.8 用户线程和内核线程 52 2.8.1 内核线程 52 2.8.2 用户线程 52 2.9 多线程模式 52 2.9.1 单对多模式 52 2.9.2 单对单模式 53 2.9.3 多对多模式 53 2.10 Solaris 2线程 53 2.11 Java线程 55 2.11.1 线程的创建 55 2.11.2 线程管理 56 2.11.3 线程的状态 56 2.11.4 多线程解决示例 57 小结 59 综合练习二 59 一、选择题 59 二、填空题 60 三、简答题 60 四、应用题 60 第3章 处理机调度 61 3.1 调度的基本概念 61 3.1.1 处理机调度的功能 61 3.1.2 处理机调度的时机 62 3.2 调度标准 62 3.3 调度算法 63 3.3.1 先来先服务调度算法 64 3.3.2 最短作业优先法 65 3.3.3 优先级数法 65 3.3.4 轮转法 67 3.3.5 多级反馈队列调度算法 68 3.4 多处理机调用 69 3.4.1 多处理机系统的基本概念 69 3.4.2 多处理机操作系统的分类 70 3.4.3 多处理机系统调度策略 71 3.5 实时调度 73 3.5.1 实现实时调度的基本条件 73 3.5.2 实时调度算法的分类 74 3.5.3 常用的几种实时调度算法 75 3.6 Java线程调度 77 3.6.1 时间片限制 77 3.6.2 线程优先级 78 3.6.3 基于Java的轮转法调度程序 78 3.7 并发进程 80 3.8 临界资源和临界区 81 3.8.1 临界资源 81 3.8.2 临界区 82 3.9 双作业的解决方案 82 3.10 硬件同步 85 3.11 信号量 87 3.11.1 实现 87 3.11.2 用法 89 3.11.3 死锁与饿死 90 3.12 经典同步问题 90 3.12.1 有界缓冲区问题 90 3.12.2 读者和写者问题 93 3.12.3 哲学家就餐问题 96 3.13 管程(monitor) 97 3.13.1 管程的定义 97 3.13.2 条件变量 98 3.13.3 用管程机制解决哲学家就餐问题 99 3.14 Java同步机制 100 3.15 死锁的定义 102 3.15.1 死锁的描述 103 3.15.2 解决死锁的方法 106 3.15.3 死锁预防 106 3.15.4 死锁避免 107 3.15.5 死锁的检测与恢复 108 小结 109 综合练习三 110 一、选择题 110 二、填空题 111 三、简答题 111 四、应用题 111 第4章 存储管理 113 4.1 背景知识 113 4.1.1 地址绑定 113 4.1.2 地址变换 114 4.2 分区管理及相关技术 115 4.2.1 分区管理 116 4.2.2 配置算法 118 4.2.3 覆盖技术 119 4.2.4 交换技术 120 4.3 页式管理 121 4.3.1 简单分页 122 4.3.2 辅助寄存器与快表 123 4.3.3 页表保护 125 4.3.4 多级分页 126 4.3.5 反向页表 126 4.3.6 共享页 127 4.3.7 页式管理的优缺点 128 4.4 段式管理 128 4.4.1 简单分段 129 4.4.2 段式地址转换 131 4.4.3 共享与保护 132 4.4.4 碎片管理 133 4.4.5 段式管理的特点 133 4.5 段页式管理 134 4.6 虚拟内存背景知识 136 4.6.1 分页式虚拟存储 137 4.6.2 分段式虚拟存储 138 4.7 虚拟内存请求页式管理 138 4.7.1 基本概念 139 4.7.2 请求页式管理工作性能 141 4.8 虚拟内存的页替换算法 143 4.8.1 基本机制 143 4.8.2 先入先出策略(FIFO) 145 4.8.3 理想页置换算法 147 4.8.4 LRU算法 148 4.8.5 LRU近似算法 149 4.8.6 计数算法 151 4.8.7 页缓冲算法 151 4.9 虚拟内存的页面分配 152 4.9.1 最小页面数 152 4.9.2 分配算法 153 4.9.3 全局替换与局域替换 154 4.10 抖动(Thrashing) 154 4.10.1 抖动的原因 154 4.10.2 局部性原理与工作集概念 155 4.10.3 缺页率 157 小结 157 综合练习四 159 一、选择题 159 二、填空题 160 三、简答题 160 四、应用题 160 第5章 文件系统 162 5.1 文件系统的概念 162 5.1.1 文件属性 162 5.1.2 文件操作 163 5.1.3 文件类型 165 5.1.4 文件结构 166 5.2 文件访问方式 168 5.2.1 顺序访问 168 5.2.2 直接访问 168 5.2.3 其他文件访问形式 169 5.3 目录结构 170 5.3.1 一级目录 171 5.3.2 两级目录 172 5.3.3 树形目录结构 173 5.3.4 非循环图目录结构 175 5.3.5 一般图形目录结构 177 5.4 文件保护 178 5.4.1 文件访问类型 178 5.4.2 访问表和组 179 5.4.3 其他文件保护方式 180 5.5 文件系统结构 180 5.6 文件存储空间分配与管理 181 5.6.1 连续分配 182 5.6.2 链接分配 183 5.6.3 索引分配 185 5.6.4 分配算法性能 187 5.6.5 空闲空间管理 188 小结 189 综合练习五 190 一、选择题 190 二、填空题 191 三、简答题 191 四、应用题 191 第6章 I/O系统 192 6.1 引言 192 6.2 I/O硬件 193 6.2.1 设备控制器 194 6.2.2 直接存储器访问 195 6.2.3 通道方式和输入/输出处理器 196 6.3 数据传送控制方式 198 6.3.1 程序方式 199 6.3.2 中断方式 200 6.3.3 DMA方式 204 6.3.4 通道控制方式 207 6.4 I/O子系统核心 209 6.4.1 I/O调度 209 6.4.2 缓冲技术 209 6.4.3 中断技术 210 6.4.4 出错处理 211 6.4.5 I/O请求处理 212 6.5 磁盘结构 213 6.6 磁盘调度 214 6.6.1 FCFS调度 214 6.6.2 SSTF调度 215 6.6.3 SCAN调度 215 6.6.4 C-SCAN调度 216 6.6.5 LOOK调度 216 6.6.6 磁盘调度算法的选择 217 6.7 磁盘管理 218 6.7.1 磁盘格式化 218 6.7.2 引导块 219 6.7.3 坏块 219 6.8 空间交换管理 220 6.8.1 交换空间的使用 221 6.8.2 交换空间分配 221 6.8.3 交换空间管理 221 6.9 磁盘可靠性 222 6.10 稳定存储 223 小结 224 综合练习六 225 一、选择题 225 二、填空题 226 三、简答题 226 四、应用题 227 第7章 分布式通信 228 7.1 背景知识 228 7.1.1 分布式系统的优点 228 7.1.2 网络拓扑结构 229 7.1.3 网络类型 231 7.2 通信 233 7.2.1 命名和名字协议 234 7.2.2 路由策略 234 7.2.3 连接策略 236 7.2.4 竞争 237 7.3 通信协议 237 7.3.1 OSI参考模型 237 7.3.2 TCP/IP参考模型 240 7.3.3 差错检测 241 7.3.4 通信示例 242 7.4 套接字编程 242 7.4.1 Java套接字 243 7.4.2 TCP套接字实例 244 7.5 远程方法调用 246 7.5.1 服务器开发 247 7.5.2 客户机开发 250 7.5.3 程序运行 254 7.6 CORBA 254 7.6.1 服务器开发 255 7.6.2 客户端开发 256 小结 256 综合练习七 257 一、选择题 257 二、填空题 257 三、简答题 258 四、应用题 258 第8章 分布式管理 259 8.1 事件排序 259 8.1.1 前于关系 259 8.1.2 实现 260 8.2 互斥现象 261 8.2.1 集中式算法 261 8.2.2 分布式算法 263 8.2.3 令牌环算法 264 8.2.4 三种算法比较 265 8.3 死锁处理 265 8.3.1 死锁预防 266 8.3.2 死锁检测 267 8.4 选举算法 269 8.4.1 欺负(bully)算法 270 8.4.2 环算法 271 8.5 分布式文件系统 271 8.5.1 概述 271 8.5.2 文件和目录服务 273 8.5.3 命名透明性 274 8.5.4 文件命名方法 274 8.5.5 文件复制 275 8.6 分布式缓存管理 276 8.6.1 缓存的位置 277 8.6.2 缓存的一致性 277 8.7 系统示例:NFS 279 8.7.1 NFS结构 279 8.7.2 NFS协议 280 8.7.3 NFS实现 281 8.8 分布式文件系统的发展 283 8.8.1 硬件 283 8.8.2 可扩充性 284 8.8.3 广域网 284 8.8.4 其他 284 小结 285 综合练习八 285 一、选择题 285 二、填空题 286 三、简答题 287 四、应用题 287 第9章 系统安全问题 288 9.1 安全威胁 288 9.1.1 威胁的类型 288 9.1.2 对计算机系统资源的威胁 289 9.2 数据加密技术 291 9.2.1 数据加密技术的发展 291 9.2.2 数据加密模型 292 9.2.3 加密算法的类型 292 9.3 访问控制技术和认证技术 293 9.3.1 访问矩阵(Access Matrix) 293 9.3.2 认证(authentication) 294 9.4 入侵者 295 9.4.1 入侵技术 295 9.4.2 口令 296 9.4.3 口令的选择 298 9.4.4 入侵检测 299 9.5 恶意软件 301 9.5.1 恶意程序 301 9.5.2 病毒的本质 303 9.5.3 病毒的类型 303 9.5.4 宏病毒 304 9.5.5 反病毒方法 305 9.6 可靠系统 305 小结 306 综合练习九 307 一、选择题 307 二、填空题 307 三、简答题 308 四、应用题 308 第10章 UNIX操作系统 309 10.1 UNIX的历史 309 10.2 设计总则 311 10.3 Shell命令 314 10.3.1 Shell的定义和基本功能 314 10.3.2 UNIX系统中标准流的定义 314 10.3.3 Shell命令解释功能 314 10.3.4 Shell的过滤功能 316 10.4 进程管理 317 10.4.1 UNIX中进程的描述 317 10.4.2 进程的创建和消亡 318 10.4.3 UNIX进程调度与管理 319 10.4.4 UNIX中进程的通信 320 10.5 内存管理 321 10.5.1 交换(Swapping) 321 10.5.2 分页(Paging) 322 10.6 文件系统 323 10.6.1 UNIX中的文件 323 10.6.2 文件系统设计 325 10.6.3 文件的检索 326 10.6.4 文件I/O 327 10.6.5 文件的存储 327 10.7 I/O系统 330 10.7.1 UNIX I/O设备管理结构 330 10.7.2 设备状态及设备控制 330 10.7.3 设备的读写方法 330 10.8 网络 331 10.8.1 UNIX网络分层结构 331 10.8.2 UNIX网络协议 331 小结 332 综合练习十 332 一、选择题 332 二、填空题 333 三、简答题 333 四、应用题 334 第11章 Linux操作系统 335 11.1 Linux的历史 335 11.2 Linux系统概述 336 11.2.1 Linux内核 336 11.2.2 Linux Shell 336 11.2.3 Linux文件结构 336 11.2.4 Linux实用工具 337 11.3 Linux内核概况 337 11.4 进程管理 338 11.4.1 进程和线程的基本概念 338 11.4.2 如何管理进程 340 11.4.3 进程调度 341 11.4.4 Linux运行模式 343 11.4.5 内存管理 344 11.5 文件系统 346 11.5.1 Linux核心文件系统简介 347 11.5.2 虚拟文件系统(VFS) 348 11.5.3 EXTended 2文件 系统(EXT2fs) 349 11.6 跨进程通信 350 11.6.1 信号 350 11.6.2 管道 350 11.6.3 系统V IPC机制 351 11.7 网络结构 351 11.8 Linux内核解读入门(补充) 351 小结 352 综合练习十一 353 一、选择题 353 二、填空题 353 三、简答题 354 四、应用题 354 第12章 Windows 2003操作系统 355 12.1 Windows 2003的历史 355 12.2 设计总则 356 12.3 系统架构 357 12.3.1 硬件抽象层(HAL) 358 12.3.2 内核(Kernel) 358 12.4 执行体 362 12.4.1 面向对象管理机制 362 12.4.2 对象命名 362 12.4.3 虚拟内存管理器 362 12.4.4 进程管理器 365 12.4.5 本地过程调用(LPC) 366 12.4.6 I/O管理器(I/O系统) 367 12.4.7 安全监控 367 12.5 外部环境子系统 367 12.5.1 Win32子系统 368 12.5.2 POSIX子系统 368 12.5.3 OS/2子系统 368 12.5.4 安全子系统 369 12.6 Windows 2003文件系统(NTFS) 369 12.6.1 NTFS在磁盘上的结构 369 12.6.2 可恢复支持 373 12.6.3 NTFS的安全性 374 12.6.4 容错支持 376 12.7 Windows 2003网络架构 377 12.7.1 ISO/OSI参考模型 377 12.7.2 传输协议 379 12.7.3 分布式应用机制 380 12.7.4 复位向与服务 381 12.7.5 域的基本管理 382 12.7.6 TCP/IP网络命名机制 382 12.7.7 IIS(Internet信息服务) 384 12.8 编程接口 385 12.8.1 窗口管理函数 385 12.8.2 国际性特性函数 386 12.8.3 图形设备接口函数 386 12.8.4 网络服务函数 387 12.8.5 系统服务函数 387 小结 388 综合练习十二 388 一、选择题 388 二、填空题 389 三、简答题 389 四、应用题 389 附录A Java语言基础 390 A.1 Java语言简介 390 A.1.1 一个Java Application程序 390 A.1.2 数据类型 391 A.1.3 标识符 391 A.1.4 运算符 392 A.1.5 语句 392 A.1.6 函数 394 A.1.7 类和对象 394 A.1.8 数组 396 A.1.9 包 397 A.2 继承 397 A.3 抽象类和接口 398 A.4 异常处理 402 A.5 Application和Applet 403 参考答案 405 第1章 405 第2章 406 第3章 407 第4章 409 第5章 411 第6章 412 第7章 414 第8章 415 第9章 417 第10章 418 第11章 419 第12章 420 参考文献 422
|