图书介绍

操作系统原理、设计与应用【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

操作系统原理、设计与应用
  • (美)斯图尔特著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302223184
  • 出版时间:2010
  • 标注页数:457页
  • 文件大小:38MB
  • 文件页数:483页
  • 主题词:操作系统-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

操作系统原理、设计与应用PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 操作系统简介1

1.1 什么是操作系统1

1.1.1 资源管理者2

1.1.2 服务提供者2

1.1.3 虚拟机2

1.2 操作系统的功能3

1.2.1 进程3

1.2.2 存储器4

1.2.3 I/O设备4

1.2.4 文件系统4

1.2.5 安全性5

1.2.6 联网5

1.2.7 用户接口6

1.3 操作系统的历史6

1.3.1 裸机7

1.3.2 批处理操作系统7

1.3.3 分时操作系统8

1.3.4 分布式操作系统9

1.4 组织操作系统的技术9

1.4.1 单块设计10

1.4.2 分层设计10

1.4.3 微内核设计10

1.4.4 虚拟机设计11

1.5 引导12

1.6 系统调用13

1.6.1 系统调用示例13

1.6.2 系统调用机制14

1.7 本章小结14

1.8 练习15

第2章 操作系统示例16

2.1 兼容分时系统16

2.1.1 组织结构16

2.1.2 引导17

2.2 多路信息和计算服务17

2.2.1 组织结构17

2.2.2 系统调用19

2.3 RT-1119

2.3.1 组织结构19

2.4 第6版UNIX20

2.4.1 组织结构20

2.4.2 系统调用21

2.5 虚拟内存系统21

2.5.1 组织结构21

2.5.2 引导22

2.5.3 系统调用22

2.6 4.3BSD22

2.6.1 组织结构23

2.6.2 系统调用23

2.7 Windows NT23

2.7.1 组织结构24

2.8 TinyOS24

2.8.1 组织结构25

2.9 Xen25

2.9.1 组织结构25

2.10 本章小结26

2.11 练习26

第3章 Inferno的结构与初始化27

3.1 Inferno的起源27

3.2 基本概念28

3.3 组织结构30

3.3.1 基本体系结构30

3.3.2 源代码组织结构31

3.4 初始化32

3.4.1 启动Inferno33

3.4.2 宿主操作系统的特定初始化34

3.4.3 与宿主操作系统无关的初始化37

3.4.4 启动分时39

3.5 系统调用40

3.6 本章小结41

3.7 练习41

第4章 Linux的结构与初始化42

4.1 Linux的起源42

4.2 组织结构43

4.2.1 基本体系结构43

4.2.2 模块44

4.2.3 源代码组织结构45

4.3 初始化46

4.3.1 引导47

4.3.2 特定处理器初始化49

4.3.3 与处理器无关的初始化52

4.3.4 启动分时56

4.3.5 初始化管理级的初始化56

4.4 系统调用58

4.4.1 处理应用方的系统调用59

4.4.2 处理内核方的系统调用60

4.5 本章小结60

4.6 练习61

第5章 进程管理原理62

5.1 进程的概念62

5.2 实现进程62

5.2.1 进程操作63

5.2.2 进程状态64

5.2.3 进程表64

5.3 线程65

5.4 调度66

5.4.1 先来先服务66

5.4.2 最短作业优先66

5.4.3 轮转法68

5.4.4 优先级调度69

5.4.5 调整调度参数71

5.4.6 两级调度71

5.4.7 实时调度72

5.4.8 嵌入式系统的调度74

5.5 上下文切换74

5.6 进程的创建与终止76

5.7 临界区77

5.7.1 中断控制78

5.7.2 原子操作指令78

5.7.3 Peterson算法79

5.7.4 信号量80

5.7.5 管程81

5.7.6 消息传递82

5.7.7 示例82

5.8 死锁85

5.8.1 充分必要条件86

5.8.2 处理死锁86

5.9 本章小结91

5.10 练习91

第6章 进程管理示例93

6.1 CTSS93

6.1.1 进程状态93

6.1.2 系统调用94

6.1.3 调度94

6.2 Multics95

6.2.1 系统调用95

6.2.2 进程状态95

6.2.3 调度95

6.3 RT-1196

6.3.1 系统调用96

6.3.2 进程状态97

6.3.3 进程表97

6.3.4 调度97

6.4 第6版UNIX97

6.4.1 系统调用97

6.4.2 进程状态98

6.4.3 进程表98

6.4.4 调度99

6.5 4.3BSD99

6.5.1 系统调用99

6.5.2 进程状态与进程表100

6.5.3 调度100

6.6 VMS101

6.6.1 系统调用101

6.6.2 线程状态101

6.6.3 调度102

6.7 Windows NT102

6.7.1 系统调用103

6.7.2 线程状态103

6.7.3 进程表与线程表103

6.7.4 调度104

6.8 TinyOS105

6.9 Xen105

6.10 本章小结106

6.11 练习106

第7章 Inferno中的进程管理108

7.1 Inferno中的进程108

7.2 进程的状态109

7.2.1 内核进程109

7.2.2 用户进程110

7.3 进程的数据结构111

7.3.1 内核进程表111

7.3.2 内核进程表项112

7.3.3 用户进程表113

7.3.4 用户进程表项113

7.4 进程的创建115

7.4.1 解释进程创建指令116

7.4.2 实现进程创建116

7.5 进程的终止119

7.6 进程调度121

7.6.1 插入就绪表121

7.6.2 从就绪表中删除122

7.6.3 分时122

7.6.4 运行时间片124

7.7 本章小结126

7.8 练习126

第8章 Linux中的进程管理128

8.1 进程与线程128

8.1.1 Linux中的内核线程128

8.1.2 进程间的关系128

8.2 系统调用129

8.3 进程状态130

8.4 进程表131

8.5 进程的创建134

8.5.1 处理系统调用134

8.5.2 创建进程137

8.5.3 特定体系结构的步骤139

8.6 进程调度141

8.6.1 优先级141

8.6.2 队列结构142

8.6.3 时钟计时单元143

8.6.4 调度程序146

8.7 本章小结151

8.8 练习152

第9章 存储管理原理153

9.1 存储层次结构153

9.2 地址变换154

9.2.1 基址/上下界寄存器155

9.2.2 分段存储155

9.2.3 分页存储156

9.3 存储相关的服务158

9.4 存储布局159

9.5 内存分配技术160

9.5.1 空闲空间管理161

9.5.2 碎片162

9.5.3 分区162

9.5.4 选择策略163

9.5.5 伙伴系统管理165

9.6 过度分配技术166

9.6.1 交换167

9.6.2 段交换168

9.6.3 分页168

9.6.4 段页式175

9.6.5 内存映射文件175

9.6.6 写时复制176

9.6.7 性能问题176

9.7 嵌入式系统的存储管理178

9.8 本章小结178

9.9 练习179

第10章 存储管理示例181

10.1 CTSS181

10.2 Multics181

10.2.1 存储相关的系统调用182

10.2.2 存储布局182

10.2.3 段式管理与页式管理182

10.3 RT-11183

10.3.1 存储相关的系统调用183

10.3.2 存储布局183

10.3.3 USR与KMON交换184

10.4 第6版UNIX184

10.4.1 存储相关的系统调用185

10.4.2 存储布局185

10.4.3 空闲空间管理186

10.4.4 分配186

10.4.5 交换187

10.5 4.3BSD187

10.5.1 存储相关的系统调用187

10.5.2 存储布局187

10.5.3 空闲空间管理188

10.5.4 交换与页替换189

10.6 VMS190

10.6.1 页表190

10.6.2 存储布局190

10.6.3 空闲空间管理190

10.6.4 交换与页替换191

10.6.5 存储相关的系统调用192

10.7 Windows NT192

10.7.1 系统调用192

10.7.2 存储布局192

10.7.3 页式管理193

10.8 TinyOS194

10.9 Xen194

10.9.1 超级调用194

10.9.2 存储布局194

10.9.3 页式管理195

10.10 本章小结195

10.11 练习195

第11章 Inferno中的存储管理197

11.1 概述197

11.2 存储布局198

11.3 存储管理的数据结构199

11.3.1 存储池199

11.3.2 存储块201

11.4 存储管理的实现203

11.4.1 分配内存203

11.4.2 从树中删除空闲块208

11.4.3 释放内存210

11.4.4 把空闲块插入树中212

11.5 垃圾收集213

11.5.1 堆结构213

11.5.2 引用计数213

11.5.3 并发垃圾收集器214

11.5.4 实现并发垃圾收集215

11.6 本章小结218

11.7 练习219

第12章 Linux中的存储管理220

12.1 存储布局220

12.2 系统调用221

12.3 分配机制222

12.3.1 管理区页的分配222

12.3.2 slab分配器223

12.3.3 内核的内存分配223

12.4 页管理223

12.4.1 页表223

12.4.2 页替换224

12.5 存储管理的数据结构225

12.5.1 进程分配的表示225

12.5.2 虚拟内存区表示227

12.6 存储管理的实现228

12.6.1 处理分配系统调用228

12.6.2 增加区域230

12.6.3 处理缺页233

12.6.4 解决缺页错误235

12.6.5 处理新页面237

12.7 本章小结239

12.8 练习239

第13章 I/O设备管理原理241

13.1 I/O子系统的要素241

13.2 I/O设备的硬件特性242

13.2.1 磁盘驱动器242

13.2.2 串口通信245

13.2.3 控制器接口技术246

13.3 I/O设备类型248

13.3.1 通信设备与存储设备249

13.3.2 流设备与块设备250

13.4 I/O子系统设计的目标250

13.5 I/O设备服务251

13.6 设备驱动器的结构251

13.7 设备管理技术253

13.7.1 缓冲区253

13.7.2 交叉存取253

13.7.3 电梯算法254

13.7.4 RAID256

13.7.5 水位标志258

13.7.6 人工输入处理259

13.7.7 伪设备260

13.8 本章小结260

13.9 练习260

第14章 I/O设备管理示例262

14.1 CTSS262

14.2 Multics263

14.3 RT-11264

14.4 第6版UNIX265

14.5 4.3BSD266

14.6 VMS267

14.7 Windows NT268

14.8 TinyOS269

14.9 Xen269

14.10 本章小结269

14.11 练习270

第15章 Inferno中的I/O设备271

15.1 设备驱动程序结构271

15.2 并行端口支持272

15.2.1 为写请求服务273

15.2.2 写入单字节274

15.3 键盘支持275

15.3.1 初始化键盘控制器277

15.3.2 处理键盘中断278

15.4 IDE磁盘支持282

15.4.1 处理I/O请求283

15.4.2 初始化IDE控制器操作285

15.4.3 处理IDE控制器中断289

15.5 本章小结291

15.6 练习291

第16章 Linux中的I/O设备293

16.1 块请求支持293

16.2 两半中断处理程序结构294

16.3 并行端口驱动程序295

16.3.1 处理系统调用295

16.3.2 选择适合的低层写入298

16.3.3 从缓冲区写入字节300

16.3.4 配置控制器303

16.4 软盘驱动程序304

16.4.1 处理请求305

16.4.2 调度软盘操作306

16.4.3 执行软盘操作306

16.4.4 启动命令309

16.4.5 准备数据传输310

16.4.6 控制器编程311

16.4.7 处理软盘中断313

16.4.8 完成软盘操作314

16.5 本章小结315

16.6 练习315

第17章 文件系统原理317

17.1 文件系统服务317

17.1.1 共享与独占访问318

17.1.2 访问模式318

17.1.3 文件结构319

17.1.4 元数据320

17.1.5 内存映射文件320

17.2 总体文件系统设计321

17.2.1 文件系统形式321

17.2.2 主要数据结构322

17.3 名称空间323

17.3.1 驱动器指示符324

17.3.2 账户说明符324

17.3.3 分层命名325

17.3.4 文件扩展名326

17.3.5 文件版本327

17.3.6 特殊文件与目录327

17.3.7 相对路径名与绝对路径名328

17.4 管理存储空间328

17.4.1 文件系统元数据328

17.4.2 数据单位329

17.4.3 空闲空间管理329

17.4.4 普通文件330

17.4.5 稀疏文件332

17.4.6 分支332

17.4.7 目录333

17.4.8 别名333

17.5 一致性检测334

17.6 日志与日志结构的文件系统335

17.7 块高速缓存336

17.8 本章小结337

17.9 练习337

第18章 文件系统示例339

18.1 CTSS339

18.1.1 第一个CTSS文件系统339

18.1.2 第二个CTSS文件系统340

18.2 Multics340

18.3 RT-11342

18.4 第6版UNIX342

18.5 4.3BSD344

18.6 VMS345

18.7 Windows NT346

18.8 本章小结347

18.9 练习347

第19章 Inferno中的文件系统349

19.1 文件服务器的作用349

19.1.1 Styx协议349

19.1.2 内置内核文件服务器352

19.1.3 用户空间文件服务器352

19.2 根设备服务器352

19.2.1 提供命名服务353

19.2.2 遍历根服务器树355

19.2.3 从根服务器读取355

19.3 通用Styx消息处理程序356

19.3.1 创建目录项356

19.3.2 生成命名356

19.3.3 遍历目录树357

19.4 本地Inferno文件系统360

19.4.1 初始化361

19.4.2 主服务进程365

19.4.3 处理Styx请求365

19.4.4 遍历目录树366

19.4.5 搜索目录369

19.4.6 读文件372

19.4.7 磁盘上的数据结构374

19.4.8 读取目录项378

19.4.9 读取文件块379

19.4.10 查找文件块379

19.4.11 处理间接块381

19.4.12 从缓冲区高速缓存中获取382

19.5 本章小结384

19.6 练习384

第20章 Linux中的文件系统386

20.1 虚拟文件系统386

20.1.1 超级块387

20.1.2 i-节点387

20.1.3 目录项387

20.1.4 文件387

20.2 EXT3文件系统388

20.3 EXT3的磁盘结构388

20.3.1 EXT3超级块390

20.3.2 EXT3-I节点391

20.3.3 EXT3目录项393

20.4 EXT3命名查找393

20.4.1 遍历路径394

20.4.2 通用目录查找(第一部分)399

20.4.3 通用目录查找(第二部分)400

20.4.4 EXT3目录查找401

20.4.5 EXT3目录搜索402

20.4.6 EXT3目录块搜索405

20.5 写入文件406

20.5.1 Linux的写入系统调用406

20.5.2 写入通用文件407

20.5.3 写入EXT3文件408

20.6 在EXT3中定位文件块409

20.6.1 标识间接块409

20.6.2 读取间接块411

20.7 本章小结412

20.8 练习412

第21章 操作系统安全原理413

21.1 用户认证413

21.1.1 用户名与密码413

21.1.2 散列函数加密414

21.1.3 回调414

21.1.4 挑战/响应认证415

21.1.5 一次性密码415

21.1.6 生物认证416

21.2 基本资源保护416

21.2.1 特权用户416

21.2.2 访问CPU特性417

21.2.3 内存访问418

21.2.4 简单的保护代码418

21.2.5 访问控制列表419

21.2.6 权能420

21.3 威胁类型421

21.3.1 中间人攻击421

21.3.2 特洛伊木马421

21.3.3 陷阱门421

21.3.4 逻辑/时间炸弹422

21.3.5 病毒422

21.3.6 蠕虫423

21.3.7 隐蔽通道423

21.3.8 拒绝服务424

21.4 橙皮书分级424

21.4.1 D组424

21.4.2 C组425

21.4.3 B组425

21.4.4 A组426

21.5 加密426

21.5.1 对称加密427

21.5.2 公钥加密学428

21.6 Multics的保护环430

21.7 Inferno的安全431

21.8 Linux的安全431

21.9 本章小结433

21.10 练习433

第22章 分布式系统原理435

22.1 基本概念435

22.1.1 资源共享435

22.1.2 同步操作438

22.1.3 一致性438

22.1.4 分布式互斥438

22.1.5 容错439

22.1.6 自稳定440

22.2 处理器共享440

22.2.1 对称多处理440

22.2.2 集群441

22.2.3 网格442

22.3 分布式时钟442

22.3.1 逻辑时钟443

22.3.2 物理时钟443

22.4 选举算法444

22.4.1 欺负算法444

22.4.2 环算法446

22.5 本章小结447

22.6 练习447

附录A 编译宿主Inferno449

A.1 建立配置449

A.2 编译器与开发工具450

A.3 PATH环境变量450

A.4 其他环境变量451

A.5 编译系统452

A.6 运行新版本452

A.7 小结452

附录B 编译本地Inferno454

B.1 建立配置454

B.2 创建工具链454

B.3 创建引导程序代码455

B.4 建立内核配置455

B.5 生成加载程序配置455

B.6 创建内核镜像455

B.7 生成软盘镜像456

B.8 运行新内核456

B.9 小结456

热门推荐