《操作系统 第2版》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:凤羽翚译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2009
  • ISBN:9787121065088
  • 页数:406 页
图书介绍:本书共20章。第1~4章介绍操作系统的基本概念、形成与发展,几种流行的操作系统和网络环境中的操作系统。第5章、第6章介绍操作系统的作业管理及批处理作业、交互型作业。第7~10章介绍程序和进程、互斥和同步、死锁及饿死、处理机调度。第11~13章介绍内存管理、文件系统和设备管理。第14章、第15章介绍进程通信和网络。第16章介绍分布式处理。第17~19章介绍权限、安全、备份与恢复。第20章介绍12个可供Linux操作系统上机实验的内容、具体操作步骤以及3个项目。本书在积累了作者多年教学经验的基础上编写而成,裁减有度,可操作性强,并以Linux源程序案例和实验来印证相应理论。与本书配套的教学资源(包括:课件、实验录屏、项目源代码)可在华信教育资源网(www.huaxin.edu.cn)免费下载。本书可作为高等院校计算机专业及相关专业的教材,也可供Linux爱好者参考。

第1章 操作系统的基本概念 1

1.1 定义 1

1.2 操作系统在计算机系统中的地位 1

1.3 操作系统的功能 2

1.3.1 用户接口 2

1.3.2 进程管理 2

1.3.3 存储器管理 3

1.3.4 设备管理 3

1.3.5 文件管理 3

1.3.6 网络功能 3

1.3.7 信息保护和安全功能 4

1.4 操作系统的主要性能指标 4

1.4.1 系统的可靠性、可维修性、可用性 4

1.4.2 系统吞吐量 4

1.4.3 系统响应时间 4

1.4.4 系统资源利用率 4

1.4.5 可维护性 4

1.4.6 可移植性 4

1.5 操作系统的特性 5

1.5.1 并发 5

1.5.2 共享 5

1.5.3 虚拟 5

习题 5

第2章 操作系统的形成与发展 6

2.1 手工操作时期 6

2.2 监控程序 7

2.3 多道批处理操作系统 8

2.4 分时操作系统 9

2.5 实时操作系统 9

2.6 个人操作系统 10

2.7 网络操作系统 11

2.8 分布式操作系统 12

2.9 嵌入式操作系统 13

2.9.1 概述 13

2.9.2 手机操作系统 13

2.9.3 其他嵌入式操作系统 15

2.10 现代操作系统的发展 16

2.10.1 微内核结构 16

2.10.2 多线程 16

2.10.3 对称多处理 16

2.10.4 面向对象 17

习题 17

第3章 几种流行的操作系统 18

3.1 UNIX 18

3.1.1 概述 18

3.1.2 历史 18

3.1.3 UNIX的结构 21

3.1.4 UNIX的主要应用版本 22

3.2 Linux 26

3.2.1 Linux的诞生 26

3.2.2 Linux特性综述 28

3.2.3 Linux的发行版本 29

3.2.4 Linux操作系统的结构 30

3.3 DOS、Windows 32

3.3.1 MS-DOS 32

3.3.2 Microsoft Windows 32

3.4 Mac OS 33

习题 34

第4章 网络环境中的操作系统 35

4.1 网络计算环境 35

4.2 服务器 36

4.3 服务器操作系统 39

习题 43

第5章 作业管理及批处理作业 44

5.1 操作系统接口概述 44

5.2 作业、作业步和作业流 45

5.3 作业管理的功能 46

5.4 作业的状态及其转换 46

5.5 批处理作业 47

5.5.1 程序接口 47

5.5.2 批量型作业的组织结构 49

5.5.3 作业控制 50

5.5.4 作业的输入与输出 50

5.5.5 作业调度 51

习题 53

第6章 交互型作业 55

6.1 交互型作业的特点 55

6.2 联机命令接口 56

6.3 Linux系统中的联机命令 56

6.4 X Window 56

6.4.1 X Window系统的安装与配置 56

6.4.2 桌面环境 57

6.4.3 X Window编程 60

习题 60

第7章 程序和进程 61

7.1 并发进程 61

7.1.1 程序顺序执行及其特点 61

7.1.2 程序并发执行及其特点 62

7.2 进程的描述 65

7.2.1 进程的引入和定义 65

7.2.2 进程控制块(PCB) 66

7.2.3 Linux的进程控制块 68

7.3 进程的状态及其转换 74

7.3.1 进程的不同状态 74

7.3.2 状态转换模型 74

7.3.3 Linux的进程状态 76

7.4 进程的控制 76

7.4.1 原语操作 77

7.4.2 Linux中的进程控制(编程实现) 81

7.5 线程 86

7.5.1 线程的引入 86

7.5.2 线程的概念 87

7.5.3 引入线程的优点 87

7.5.4 线程和进程的关系 88

7.5.5 线程的状态及其转换 88

7.5.6 Java中线程的状态及其转换 89

7.5.7 用户级线程和内核级线程 90

习题 91

第8章 互斥和同步 93

8.1 进程间的相互作用 93

8.1.1 互斥 94

8.1.2 临界资源和临界区 94

8.1.3 互斥的解决方案 95

8.1.4 信号量和P、V操作 95

8.1.5 用P、V操作实现互斥 96

8.1.6 同步 97

8.1.7 用信号量实现进程同步 98

8.1.8 经典的进程同步和互斥问题 98

8.2 管程 102

8.2.1 管程的引出 102

8.2.2 管程的概念 102

8.2.3 用管程实现同步 103

习题 105

第9章 死锁及饿死 111

9.1 死锁的形成 111

9.2 死锁的必要条件 112

9.3 死锁的预防 112

9.4 死锁的避免 113

9.5 死锁的检测 117

9.6 饿死的问题 118

习题 118

第10章 处理机调度 121

10.1 概念 121

10.1.1 进程调度的概念 121

10.1.2 进程调度的功能 121

10.1.3 引起进程调度的原因 122

10.1.4 选择进程调度算法的因素 122

10.1.5 进程调度的性能评价 123

10.2 处理机调度的类型 124

10.2.1 长程调度 124

10.2.2 中程调度 124

10.2.3 短程调度 124

10.3 进程调度算法 125

10.3.1 先来先服务调度算法 125

10.3.2 优先级调度算法 125

10.3.3 时间片轮转调度算法 127

10.3.4 最短进程优先调度算法 127

10.3.5 多级反馈队列调度算法 127

10.4 多处理机调度 129

10.4.1 多处理机系统简介 129

10.4.2 多处理机操作系统 132

10.4.3 多处理机调度 134

10.5 Linux的进程调度 136

10.5.1 Linux进程调度的时机 137

10.5.2 进程的权值 137

10.5.3 进程调度的实现 138

10.5.4 进程调度的策略 138

习题 139

第11章 内存管理 141

11.1 主存储器在计算机系统中的地位 141

11.2 存储器的物理组织 141

11.3 存储管理的研究内容 143

11.4 存储组织、管理及策略 144

11.5 地址重定位 145

11.5.1 用户程序的主要处理阶段 145

11.5.2 地址重定位 145

11.6 分区存储管理 146

11.6.1 单一分区 146

11.6.2 固定分区 146

11.6.3 可变分区(Variable Partition) 148

11.6.4 空闲区的分配和回收 150

11.6.5 分区的保护 150

11.7 简单页式存储管理 151

11.7.1 分区存储组织存在的问题及解决思路 151

11.7.2 分页的方法 151

11.7.3 页式存储组织的实现 152

11.8 简单分段式存储管理 154

11.8.1 实现原理 154

11.8.2 逻辑地址的表示 155

11.8.3 段表 155

11.8.4 控制寄存器 155

11.8.5 管理过程 156

11.8.6 段式管理的特点 156

11.9 覆盖技术 156

11.10 交换(Swapping)技术 157

11.11 虚拟存储管理技术和局部性原理 157

11.12 虚拟页式存储管理技术 158

11.12.1 思路 158

11.12.2 扩充页表 158

11.12.3 缺页中断 158

11.12.4 置换算法 159

11.12.5 性能问题 160

11.12.6 页式管理的优缺点 161

11.13 虚拟分段式存储管理技术 161

11.14 段页式存储管理技术 161

11.15 伙伴系统 162

11.16 Linux的内存管理实现机构 163

11.17 Linux的分页 163

11.18 Linux的地址映射机制 165

11.19 Linux的存储管理 165

11.20 交换机制 166

习题 167

第12章 文件系统 169

12.1 概述 169

12.2 文件系统的引入 169

12.3 文件系统的有关概念 170

12.4 文件的逻辑结构与存取方法 171

12.4.1 流式文件 171

12.4.2 记录式文件 171

12.5 文件的物理结构与存储设备的特点 172

12.5.1 文件存储设备 172

12.5.2 文件的物理结构 173

12.6 文件存储空间管理 175

12.6.1 位示图法 175

12.6.2 空闲区表 175

12.6.3 空闲块链 176

12.7 目录管理 176

12.7.1 文件目录的概念 177

12.7.2 文件目录结构 177

12.7.3 文件访问的实现 178

12.7.4 文件的连接 180

12.8 文件的保护和保密 180

12.9 文件的使用 181

12.10 Linux文件系统概述 181

12.10.1 Linux文件系统的特点 181

12.10.2 Linux文件系统的结构 182

12.10.3 文件系统的注册 182

12.10.4 树型目录结构 183

12.10.5 文件系统的安装、卸载 184

12.11 Ext2文件系统 186

12.11.1 Ext2文件系统的磁盘布局 186

12.11.2 Ext2文件系统的索引节点 188

12.11.3 Ext2目录 190

12.11.4 文件查找 191

12.12 虚拟文件系统 192

12.12.1 VFS的超级块 192

12.12.2 VFS的索引节点 194

习题 196

第13章 设备管理 200

13.1 概述 200

13.1.1 外设的分类 200

13.1.2 设备管理的目标和功能 201

13.2 Linux的设备管理结构 201

13.3 I/O控制方式 202

13.3.1 设备控制器 202

13.3.2 循环测试I/O方式(程序直接控制方式) 203

13.3.3 中断技术及Linux的中断管理 203

13.3.4 直接存储器访问DMA 205

13.3.5 通道方式 206

13.4 缓冲技术 207

13.5 设备分配 207

13.5.1 设备分配用数据结构 207

13.5.2 设备分配策略 208

13.6 Linux的设备管理 209

13.7 Linux的设备驱动程序的框架 212

13.8 Linux的块设备驱动程序 214

13.9 Linux的字符设备驱动程序 215

习题 216

第14章 进程通信 217

14.1 进程通信的概念 217

14.2 最早的IPC方法:信号与管道 218

14.2.1 信号 218

14.2.2 管道 220

14.3 System V通信机制 225

14.3.1 消息队列 225

14.3.2 信号量 231

14.3.3 共享内存 236

习题 241

第15章 网络 243

15.1 概述 243

15.2 网络协议简介 243

15.3 Linux网络的分层结构 244

15.4 Linux的套接字及其缓冲区 245

15.4.1 套接字在网络中的地位 245

15.4.2 套接字的作用 246

15.4.3 Linux套接字的层次 246

15.4.4 套接字通信数据结构 246

15.5 Linux网络协议的实现 247

15.5.1 建立连接 247

15.5.2 撤销连接 247

15.5.3 数据发送 247

15.6 Linux的网络设备接口 248

15.6.1 结构 248

15.6.2 设备注册 249

习题 250

第16章 分布式处理 251

16.1 分布式操作系统 251

16.2 客户机/服务器计算 251

16.2.1 分布式环境的客户机/服务器模式 252

16.2.2 三(多)层浏览器/服务器结构 254

16.2.3 中间件 254

16.3 分布式进程通信 255

16.3.1 分布式消息传递 255

16.3.2 远过程调用 256

16.4 进程迁移 257

16.4.1 概念 257

16.4.2 进程迁移机制 257

16.5 分布式环境下的互斥及死锁 258

16.5.1 概念 258

16.5.2 逻辑钟 259

16.5.3 互斥算法 259

16.5.4 死锁 260

16.6 集群 260

16.6.1 概念 260

16.6.2 集群技术的分类 261

16.6.3 Beowulf和Linux集群 262

习题 262

第17章 权限 263

17.1 概述 263

17.2 权限的含义 263

17.3 授权 264

17.4 文件权限 264

17.5 文件权限的表示 265

17.6 文件权限的设置 267

习题 269

第18章 安全 270

18.1 安全问题 270

18.2 安全评估 272

18.3 安全风险 275

18.4 身份验证 277

18.5 密码系统 278

18.6 入侵检测 280

18.6.1 入侵检测系统的分类 280

18.6.2 入侵检测系统的分析技术 281

18.6.3 入侵检测系统的设置 283

18.6.4 入侵检测系统的部署 283

18.7 安全策略 284

18.7.1 安全策略的内容 284

18.7.2 安全策略的类型 284

18.7.3 安全策略的制定 286

18.8 SELinux 287

18.8.1 传统Linux的缺点 287

18.8.2 SELinux的主要改进 287

18.8.3 SELinux的优点 288

18.8.4 SELinux的主要结构 289

18.8.5 SELinux的应用 289

习题 289

第19章 备份与恢复 290

19.1 备份策略 290

19.2 备份和恢复数据 291

19.3 备份系统的结构 292

19.4 磁带备份与恢复 293

19.4.1 磁带备份介质 293

19.4.2 备份内容 294

19.4.3 备份工具 294

19.5 磁盘备份与恢复 295

19.5.1 磁盘容错技术 295

19.5.2 第一级容错技术(SFT-Ⅰ) 296

19.5.3 第二级容错技术(SFT-Ⅱ) 296

19.5.4 廉价磁盘冗余阵列 297

19.5.5 备份与恢复 299

习题 300

第20章 操作系统实验指导 301

实验1 Linux操作入门 302

E1.1 Linux的启动 302

E1.2 Linux的登录 303

E1.3 退出 303

E1.4 关机 303

E1.5 虚拟终端 304

E1.6 超级用户与普通用户 304

E1.7 上机指导 305

E1.8 练习与思考 305

实验2 Linux的文件与目录管理 306

E2.1 Linux目录结构 306

E2.2 文件和文件名 308

E2.3 目录和目录名 308

E2.4 文件和目录管理常用命令 308

E2.5 上机操作 310

实验3 几个常用命令、重定向和管道 313

E3.1 几个常用命令 313

E3.2 重定向和管道 315

E3.3 上机指导 319

实验4 vi编辑器的使用和Linux环境下的编程 322

E4.1 vi编辑器 322

E4.2 Linux环境下的编程 325

E4.3 GCC编译器的使用 325

E4.4 调试源程序 326

E4.5 运行自己开发的程序 327

E4.6 上机指导 327

实验5 Linux的进程管理 330

E5.1 几个进程相关主要命令 330

E5.2 作业控制 332

E5.3 观察系统动态的进程控制和进程调度的工具 333

E5.4 上机指导 334

实验6 shell脚本的编制 338

E6.1 shell脚本的建立和执行 339

E6.2 上机指导 340

实验7 Linux文件系统 349

E7.1 Linux树型目录结构 349

E7.2 Linux的设备文件 350

E7.3 文件系统的挂装及卸载 350

E7.4 磁盘准备 351

E7.5 上机指导 352

实验8 Ext2文件系统的结构 355

E8.1 观察Ext2文件系统的主要数据结构源程序 355

E8.2 观察磁盘上的Ext2系统结构 355

E8.3 观察文件的Ext2结构 360

E8.4 观察目录的Ext2结构 361

E8.5 观察目录下的Ext2文件结构 363

E8.6 观察大文件的Ext2结构 364

E8.7 删除文件后的Ext2结构的变化 366

实验9 用户与用户管理 367

E9.1 用户 367

E9.2 用户组 369

E9.3 上机指导 371

实验10 配置和管理Internet服务 373

E10.1 Web服务器的建立 373

E10.2 MySQL数据库服务器安装和管理 378

实验11 安全性设置 381

E11.1 引导安全 381

E11.2 文件安全 382

E11.3 修改权限 382

E11.4 网络安全 383

E11.5 用户口令安全 386

E11.6 内核安全 388

实验12 Linux安装和删除 389

E12.1 Red Hat Linux的安装 389

E12.2 Linux的删除 400

项目1 进程创建 402

项目2 进程间通信 403

项目3 Socket通信 404

附录A 参考文献及参考网站 405