《系统编程与操作系统》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)D.M.Dhamdhere著;徐旭东等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2001
  • ISBN:7505369059
  • 页数:540 页
图书介绍:

第一部分 系统编程 1

第1章 语言处理程序 1

1.1 引言 1

1.2 语言处理工作 4

1.2.1 程序生成 4

1.2.2 程序执行 6

1.3 语言处理的基础 7

1.3.1 简易的编译程序 10

1.4 语言规格基本说明 15

1.4.1 程序设计语言的语法 15

练习1.4 23

1.4.2 约束和约束时刻 23

1.5 语言处理程序开发工具 25

1.5.1 LEX 26

1.5.2 YACC 27

参考文献 28

第2章 语言处理程序的数据结构 31

2.1 查找型数据结构 32

2.1.1 表的组织 35

2.1.2 链表和树型结构组织形式 40

练习2.1 42

2.2 分配型数据结构 43

2.2.1 栈 43

2.2.2 堆 45

参考文献 47

3.1 扫描 49

第3章 扫描与分析 49

练习3.1 52

3.2 分析 53

3.2.1 自顶向下的分析 53

练习3.2.1 60

3.2.2 自底向上的分析 61

练习3.2 68

参考文献 69

第4章 汇编程序 71

4.1 汇编程序要素 71

4.1.1 汇编语言语句 72

4.2 简单的汇编模式 75

4.1.2 汇编程序的优点 75

4.3 汇编程序的遍扫描结构 77

4.4 两遍扫描汇编程序的设计 79

4.4.1 高级的汇编指示语句 79

练习4.4.1 81

4.4.2 汇编程序的第1遍扫描 81

4.4.3 中间代码形式 83

4.4.4 祈使语句的中间代码 84

4.4.5 说明语句与汇编程序指示语句的处理 86

练习4.4 88

4.4.6 汇编程序的第2遍扫描 88

4.4.7 列表和错误信息报告 89

练习 4.4.7 90

4.4.8 有关组织结构的一些话题 91

练习4.4.8 92

4.5 用于IBMPC机的单遍扫描汇编程序 92

4.5.1 Intel 8088微处理器的体系结构 92

4.5.2 Intel 8088的指令 94

4.5.3 Intel 8088汇编语言 97

4.5.4 单遍扫描汇编程序的问题 101

4.5.5 汇编程序设计 103

参考文献 108

第5章 宏与宏处理程序 111

5.1 宏定义与宏调用 111

5.2 宏扩展 112

5.3 嵌套的宏调用语句 116

5.4 高级宏设施 117

5.4.1 条件扩展 119

5.4.2 用于扩展时循环的其他设施 120

5.4.3 语义扩展 121

练习5.4 122

5.5 宏预处理程序的设计 122

5.5.1 设计概述 123

5.5.2 数据结构 124

5.5.3 宏定义的处理 128

5.5.4 宏扩展 129

5.5.5 嵌套的宏调用 131

练习5.5 133

5.5.6 宏-汇编程序的设计 134

练习5.5 135

参考文献 136

第6章 编译程序和解释程序 137

6.1 组成编译的各个方面 137

6.2 内存分配 140

6.2.1 静态和动态内存分配 140

6.2.2 体结构语言的内存分配 141

6.2.3 数组的分配与访问 149

练习6.2 152

6.3 表达式编译 153

6.3.1 一个用于表达式的代码生成器 153

练习6.3.1 159

6.3.2 表达式的中间代码 159

6.4 对控制结构的编译 163

练习6.3.2 163

练习6.4 169

6.5 代码优化 169

6.5.1 优化变换 170

6.5.2 局部优化 172

6.5.3 全局优化 175

练习6.5 179

6.6 解释程序 180

6.6.1 解释程序纵观 181

6.6.2 一个小(型)解释程序 181

6.6.3 解释程序与不纯解释程序 183

练习6.6 184

参考文献 185

第7章 连接程序 187

7.1 重定位和连接的概念 188

7.1.1 程序的重定位 188

7.1.2 连接 190

7.1.3 目标模块 191

7.2 连接程序的设计 192

7.2.1 段寻址的重定位和连接需求 192

7.2.2 重定位算法 194

7.2.3 连接需求 194

练习7.2 196

7.3 自(身)重定位程序 196

7.4 一个适用于MS DOS的连接程序 197

练习7.3 197

练习7.4 205

7.5 覆盖块的连接 207

练习7.5 209

7.6 装入程序 209

练习7.6 210

参考文献 210

第8章 软件工具 211

8.1 程序开发软件工具 211

8.1.1 程序设计和编码 212

8.1.2 程序输入和编辑 212

8.1.3 程序测试与调试 212

8.1.4 提高程序性能 215

8.1.6 设计软件工具 217

8.1.5 程序文档编制 217

8.2 编辑器 218

8.2.1 屏幕编辑器 218

8.2.2 文字处理器 219

8.2.3 结构编辑器 219

8.2.4 设计编辑器 219

8.3 调试监视程序 220

8.4 编程环境 221

练习8.4 223

8.5 用户界面 223

8.5.1 命令对话 224

8.5.4 用户界面的结构 225

8.5.2 数据的呈现 225

8.5.3 联机帮助 225

8.5.5 用户界面管理系统 226

练习8.5 227

参考文献 227

第二部分 操作系统 231

第9章 操作系统功能的演化 231

9.1 操作系统的功能 231

9.1.1 资源分配及相关功能 231

9.1.2 用户接口相关功能 233

9.2 操作系统功能演化 233

9.3 批处理系统 234

9.3.2 批监控程序的功能 235

9.3.1 用户服务 235

9.3.3 支持批处理的特殊特征 241

练习9.3 241

9.4 多道程序系统 241

9.4.1 多道程序管理的结构支持 243

9.4.2 用户服务 248

9.4.3 多道程序管理程序的功能 248

练习9.4 254

9.5 分时系统 255

9.5.1 调度 256

9.5.2 存储器管理 258

9.6 实时操作系统 259

练习9.5 259

练习9.6 261

9.7 操作系统结构 262

参考文献 265

第10章 进程 267

10.1 进程定义 267

练习10.1 268

10.2 进程控制 268

10.2.1 进程创立 268

10.2.2 进程状态 269

10.2.3 与进程相关的事件 270

10.2.4 进程控制块 270

10.2.5 进程调度 271

10.3 进程交互 272

10.2.6 进程终止 272

10.2.7 总结 272

10.3.1 同步控制 273

10.3.2 数据访问同步 274

10.3.3 进程间通信 275

练习10.3 276

10.4 实现进程交互 276

10.4.1 Fork-Join 277

10.4.2 Parbegin-Parend 277

10.4.3 Unix中的进程 278

10.5 线程 279

练习10.5 284

参考文献 284

11.1 调度策略 285

第11章 调度 285

11.1.1 非抢占调度 287

练习11.1.1 289

11.1.2 抢占调度 289

练习11.1.2 291

11.2 作业调度 291

11.3 进程调度 293

11.3.1 事件监视 294

11.3.2 进程调度机构 296

11.3.3 多道程序设计中的进程调度 297

11.3.4 分时系统中的进程调度 299

11.3.5 多级调度 300

11.4 Unix中的进程管理 302

练习11.3 302

练习11.4 303

11.5 多处理器操作系统中的调度 303

11.5.1 主-从配置 304

11.5.2 对称多处理器 305

练习11.5 305

参考文献 305

第12章 死锁 309

12.1 定义 309

12.2 建立资源状态模型 310

12.2.1 资源请求和分配图及等待图中的路径 312

12.3 处理死锁 313

12.2.2 死锁的条件 313

12.4 检测和解决死锁 318

12.4.1 死锁检测算法 319

12.4.2 死锁解决 320

12.5 避免死锁 321

12.5.1 所有的请求在一起提出 321

12.5.2 资源分级 322

12.5.3 银行家算法 322

12.6 死锁处理的混合方式 326

练习12.6 327

参考文献 328

第13章 进程同步 329

13.1 实现控制同步 329

13.2 临界区 331

练习13.1 331

13.2.1 临界段实现的特性 332

13.2.2 实现临界段的历史 332

13.2.3 用临界段实现进程同步 333

13.2.4 临界段的算法实现 334

练习13.2 338

13.3 经典的进程同步问题 339

13.3.1 有限长度缓冲区的生产者消费者问题 339

13.3.2 读者和写者 340

13.3.3 哲学家进餐 341

13.4 进程同步语言特征的演化 342

13.5 信号量 343

13.5.1 实现信号量 345

13.5.2 使用信号量的生产者消费者 346

13.5.3 使用信号量的读者和写者 347

练习13.5 349

13.6 临界区 350

13.7 条件临界区 352

练习13.7 354

13.8 管程 355

13.8.1 抽象 355

13.8.2 封装 357

13.8.3 管程特性 357

13.8.4 磁盘调度器:实例分析 361

练习13.8 363

13.9.1 Ada中的任务 364

13.9 Ada中的并行程序设计 364

13.9.2 Ada中的实时程序设计 366

练习13.9 369

参考文献 370

第14章 进程间通信 373

14.1 进程间消息 373

14.2 关于实现的问题 373

14.2.1 命名 374

14.2.2 消息传送协议 374

14.2.3 进程间消息的缓冲 376

14.2.4 进程间消息的传送 377

练习14.2 378

14.3.2 使用邮箱的好处 379

14.3.1 一个邮箱的实现 379

14.3 邮箱 379

练习14.3 381

14.4 UNIX环境下的进程间消息 381

练习14.4 382

14.5 MACH中的进程间消息 382

练习14.5 383

参考文献 383

第15章 存储器管理 385

15.1 内存分配的基础知识 386

15.1.1 内存重用 386

15.1.2 内存分配模型 391

15.2 连续内存分配 392

15.2.1 内存保护 393

15.2.2 程序重定位 394

15.2.3 内存碎片 395

15.2.4 程序初始装入 397

练习15.2 398

15.3 不连续内存分配 399

15.4 虚拟内存页式管理 401

15.4.1 页、页块和地址转换 401

15.4.2 请求分页式存储管理 403

15.4.3 分页硬件 406

练习15.4 411

15.4.4 分页软件 412

15.4.5 页面淘汰 414

15.4.6 控制程序的内存分配 419

15.4.7 页共享 421

练习15.4 422

15.4.8 Unix内存管理 423

15.5 虚拟内存段式管理 423

15.5.1 组织多段程序 424

15.5.2 管理物理内存 424

15.5.3 保护和共享 425

15.5.4 段页式 425

15.5.5 实例研究 426

练习15.5 428

参考文献 428

第16章 IO组织和IO编程 431

16.1 IO组织 432

16.2 IO设备 435

练习16.2 437

16.3 物理输入输出控制系统(PIOCS) 438

16.3.1 PIOCS的功能 439

16.3.2 PIOCS的数据结构 440

16.3.3 PIOCS功能的实现 441

16.3.4 设备驱动程序 446

练习16.3 448

16.4 基本文件组织 448

16.4.1 顺序文件组织 448

16.4.2 直接文件组织 448

16.4.3 索引顺序文件组织 449

16.5.1 记录的缓冲 450

练习16.4 450

16.5 高级IO程序设计 450

16.5.2 记录块 453

练习16.5 455

16.6 逻辑IOCS 456

16.6.1 LIOCS函数 456

16.6.2 LIOCS模块 457

16.6.3 LIOCS数据结构 458

16.6.4 LIOCS功能的实现 459

练习16.6 461

16.7 处理UNIX中的文件 462

练习16.7 463

参考文献 464

第17章 文件系统 465

17.1 目录结构 467

练习17.1 471

17.2 文件保护 471

17.3 分配磁盘空间 472

17.4 实现文件访问 473

17.4.1 打开文件时FS的活动 474

17.4.2 文件操作时的FCB的活动 475

17.4.3 FS在文件关闭时的活动 476

练习17.4 477

17.5 文件共享 477

17.6.1 FS完整性的丢失 479

17.6 文件系统的可靠性 479

17.6.2 FS可靠性技术 481

练习17.6 484

17.7 UNIX文件系统 484

练习17.7 486

参考文献 486

第18章 保护和安全 489

18.1 数据加密 489

18.1.1 对于加密系统的攻击 490

18.1.2 加密技术 490

18.2 保护和安全机制 491

18.2.1 保护机制 491

18.3 用户文件保护 492

18.3.1 加密用户文件中的数据 492

18.2.2 安全机制 492

18.3.2 用户文件的访问控制 493

18.3.3 用户的权限表(C-list) 495

18.4 权限 495

18.4.1 基于权限的计算机系统 496

18.4.2 对象的共享和保护 498

18.4.3 软件权限 500

参考文献 501

第19章 分布式操作系统 503

19.1 定义和例子 504

19.1.1 分布式系统模型 504

19.1.2 分布式操作系统的例子 505

19.2 分布式操作系统的设计问题 506

练习19.2 508

19.3 网络连接问题 508

19.3.1 网络拓扑结构 508

19.3.2 通信 508

19.3.3 交换策略 510

19.3.4 路由 510

19.4 通信协议 511

19.4.1 阻塞协议 511

19.4.2 非阻塞协议 512

19.4.3 远程过程调用 513

练习19.4 514

19.5 系统状态和事件前趋 514

19.5.1 系统状态 514

19.5.2 事件前趋 515

练习19.5 516

19.5.3 产生有用的时间戳 516

19.6 资源分配 517

19.7 分布式控制算法 518

19.7.1 理解分布式控制算法 518

19.7.2 分布式互斥算法 519

练习19.7 522

19.7.3 分布式死锁处理 522

练习19.7 525

19.8 文件系统 525

19.8.1 文件系统的透明性 526

19.8.2 分布式文件系统的设计 527

19.9.1 可靠性技术的分级体系 529

练习19.8 529

19.9 可靠性 529

19.9.2 数据恢复 530

19.9.3 故障的容错 530

19.9.4 弹性恢复技术 532

练习19.9 533

19.10 安全 533

19.10.1 解决消息安全威胁问题 534

19.10.2 密钥分配 535

19.10.3 解决消息回放攻击 536

19.10.4 Kerberos 536

练习19.10 538

参考文献 538