Windows操作系统原理(第2版)
作者 : 陈向群 向勇 王雷 马洪兵 郑扣根 (美)Dave Probert 著
出版日期 : 2004-11-03
ISBN : 7-111-10538-9
定价 : 39.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 427
开本 : 16开
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书讲述当代计算机操作系统的原理,并具体分析操作系统原理在 Windows Server 2003中的实现技术和方法,将抽象的原理与具体的实例相结合,既有设计思想精要的提炼,又有具体实现细节的分析。
  本书保留了第1版将操作系统的一般原理与分析Windows内部体系结构相结合的特色,并根据Windows操作系统的发展趋势,增加了对Windows Server 2003体系结构的介绍。
  本书由国内知名大学操作系统的主讲教师编写,适合作为高等院校计算机和电子工程相关专业的操作系统教材,也是一本用于设计、开发基于Windows的应用软件,以及编写Windows操作系统驱动程序的重要参考书,还是在Windows Server 2003平台上进行设计开发的技术人员的必备参考书。
  版权所有,侵权必究。
  本书所涉及的部分技术内容已获得微软出版社的授权。

图书特色

图书前言

本书是《Windows操作系统原理》一书的第2版,和第1版比较,第2版的主要变化反映了Windows Server 2003对内核的改进,并以Windows Server 2003为实例来介绍Windows操作系统的基本原理。所以,这是一本以Windows Server 2003内核源代码分析为基础,介绍Windows操作系统内部体系结构的教材。
  随着计算机系统的广泛应用和普及,作为计算机系统软件基础的计算机操作系统日益受到信息行业技术人员和普通计算机使用者的广泛关注。人们普遍认识到,计算机操作系统是整个信息技术领域中一块极其重要的基石,要构建现代化的、稳固而又可靠的信息技术大厦,不掌握计算机操作系统是行不通的。作为一种广泛使用的主流操作系统,Windows操作系统一直拥有众多的应用开发人员和极为广泛的使用者,为了满足人们希望了解最新Windows操作系统基本工作原理的愿望,以最新Windows Server 2003为基础修改再版此书是有必要的。
  我们希望本书可用作高等院校相关专业的操作系统课程教材或参考书,也可作为在Windows操作系统平台上从事应用软件设计和开发的技术人员的参考书。本书的读者对象主要是在高等院校学完操作系统原理课程,需要深入了解Windows操作系统的教师和学生;在信息技术行业从事软件开发,需要了解Windows操作系统内部体系结构的技术人员;从事微机接口和外设研发,需要了解如何编写Windows操作系统驱动程序的技术人员。当然,本着开卷有益的宗旨,凡是希望了解Windows操作系统内部原理的读者都会从本书中得到启示。当然,这本书的真正价值需要由读者去评价。

  回顾本书的编写过程,其中确有一些故事值得我们去回忆。
  本书第1版于2001年8月出版后受到许多读者的关注,我们收到很多反馈意见,希望我们能把这个工作继续下去,及时准确地反映Windows操作系统技术的新发展和新变化。这种反馈也逐渐成为几位编者的共识,当Windows Server 2003临近发布时,在微软亚洲研究院的支持下,我们于2002年8月开始着手进行本书的编写工作。参加本书编写工作的有:北京大学计算机科学技术系的陈向群、北京航空航天大学计算机学院的王雷、清华大学计算机科学与技术系的向勇和电子工程系的马洪兵、浙江大学计算机学院的郑扣根和美国微软公司的Dave Probert。编写小组中的几位中国高校教师都是从事计算机专业本科生操作系统课程教学的主讲教师,他们曾编写和翻译出版过多本操作系统方面的教材,并正在从事相关研究工作。 Dave Probert在加入微软公司前曾经从事UNIX操作系统的设计和开发长达20年,目前是微软Windows内核开发组骨干成员。在本书第1版的出版过程中,Dave就曾给予大量帮助,这次更成为编写小组的一员。无疑,编写小组的组成人员是本书质量的重要保证。
  由于本书第1版的成功出版和良好影响,本书的编写工作从一开始就得到美国微软公司和微软亚洲研究院的大力支持,他们提供了许多Windows Server 2003的第一手资料,并授权我们可以在本书中引用这些资料。在此基础上,Dave Probert还受编写小组的委托,请微软公司内部多位从事Windows内核研发的技术人员解答了许多有关Windows实现的具体问题。有关的问题和解答内容均已经融入到本书的各个章节之中,以便本书的读者也能够了解来自Windows内核研发人员的技术观点。为了在本书中很好地反映Windows Server 2003内核实现中的变化,在美国微软公司的授权下,Dave Probert还带着Windows Server 2003的内核源代码于2003年3月上旬专程来到北京,在微软亚洲研究院与编写小组的全体成员一起分析研究Windows Server 2003内核源代码。本书中的许多内容就是在集中分析内核源代码这段时间内形成的。这也是微软公司第一次在国内授权高校教师阅读其最新操作系统的源代码,而这段时期恰恰是北京抗击非典的非常时期。Dave Probert谢绝了为了其健康,建议他立即返回美国的提议,坚持在北京和编写小组一起坦然迎击非典灾害,共渡难关。直至整个工作任务顺利完成,Dave Probert才离开北京回国。在告别时,Dave Probert曾经笑言道,一到美国他会主动进行医学隔离,直到观察期结束。Dave Probert的大力支持和积极参与对本书的顺利完成是十分关键的。
  本书的结构和编排布局如下:全书共分为7章,第1章“操作系统概述”(陈向群),第2章“Windows Server 2003的体系结构”(陈向群),第3章“进程和处理机管理”(向勇),第4章“存储管理”(王雷),第5章“文件系统”(陈向群、郑扣根),第6章“设备管理与I/O系统”(马洪兵、陈向群),第7章“Windows环境下的程序设计”(马洪兵)。
  本书在出版过程中还得到了微软亚洲研究院张高和马歆的大力支持,没有他们的帮助,本书是不可能出版的。感谢机械工业出版社华章分社温莉芳总编辑和编辑们的支持,她们为本书的顺利出版付出了大量的辛勤劳动。感谢参加本书校对工作的研究生们,他们是朱伟、余啸海、胡建钧、王俊、刘志成、周晶、胡纲,他们勤奋而认真的工作成果已经融入本书的字里行间。
  感谢在本书编写过程中支持和理解我们工作的所有朋友们。
  尽管本书的编写小组作出了努力,但是限于水平,书中难免会有一些疏漏与不足。这些可能存在的问题与美国微软公司、微软亚洲研究院和Windows操作系统无关。我们真诚地期待广大读者朋友能提出宝贵的意见和建议。


编  者
2004年8月

图书序言

序(一)
杨芙清
  进入新世纪以来,中国的高技术产业,特别是信息产业持续快速发展,信息技术已经成为21 世纪经济发展的驱动力。
  信息是客观事物状态和运动特征的一种普遍形式。人类抽象的经验和知识正逐步由软件予以精确地体现,而软件是人类知识的固化,是知识经济的基本表征,它已成为信息时代的新型“物理设施”。
  软件是信息化的核心。国民经济和国防建设、社会发展、人民生活都离不开软件,软件无处不在。软件产业是增长最快的朝阳产业,是具有高附加值、高投入/高产出、无污染、低能耗的绿色产业。软件产业关系到国家经济安全和文化安全,体现了国家综合实力,是决定21 世纪国际竞争地位的战略性产业。
  计算机操作系统正是软件技术含量大、附加值高的部分,是软件系统的核心,是软件基础运行平台的主要成分。
  在操作系统的商业产品市场上,微软公司在20世纪80年代初期为IBM 公司的个人计算机配置了PC-DOS 操作系统,几年之后,又推出了Windows 操作系统。 由于Windows 采用了图形界面,易学易用,又辅之良好的市场策略,因此它逐渐占据了个人计算机市场的主要地位,并成为主要的操作系统产品。
  本书是在美国微软公司提供Windows 操作系统内部技术资料的基础上编写的讲述计算机操作系统原理的教科书。参加本书编写工作的作者均是国内一些重点高等院校从事计算机操作系统课程教学和科研的老师。这些老师把在操作系统课程中的长期教学经验和科研积累同分析Windows 操作系统内部技术原理结合起来,写作完成了这本操作系统教科书。
  本书第1版于2001年8月出版以来受到了读者的欢迎,读者提出了很多意见,并且希望本书能够不断修订,以便及时准确地反映Windows操作系统技术的新发展和新变化。在美国微软公司和微软亚洲研究院的支持下,本书的编写小组在与美国微软技术人员共同分析研究Windows Server 2003内核源代码的基础上,完成了本书第2版的写作工作。本书的内容反映了微软公司对Windows Server 2003内核的改进,并以Windows Server 2003为实例来介绍Windows操作系统的基本原理。
  我相信,本书会像其第1版一样,对使用Windows操作系统的读者有所帮助。


                    中国科学院院士 北京大学教授
                          杨芙清
                         2004年9月


序(二)
沈向洋
  随着摩尔定律成为信息时代的“摩西诫言”,计算机硬件的生产商们不断加快产品更新换代的步伐,计算机操作系统也不再仅仅为了控制和管理计算机系统内各种硬件和软件资源,而是越来越被赋予新的含义,向着网络化、智能化和安全化方向发展。
  网络的发展正在引导着计算机以一般用户所难以想象的方式(分布式)转型—办公桌面上的台式电脑的各种功能正被分发、转移并融化到我们掌上的PDA、腕上的手表、驾乘的汽车甚至是储存食品的冷柜之中。几年以后,我们甚至可能发现自己找不到那台曾经熟悉的电脑主机了,然而它的影响却又无所不在。XML及Web服务技术的发展使软件集成程度达到了前所未有的水平:分散、组块化的应用程序通过因特网互相连接并与其他大型应用程序相连接。操作系统需要通过这些XML Web服务提供基于行业标准构建的可再次使用的组件,使开发人员可以在企业内部集成应用程序,跨网络连接合作伙伴和客户。
  这是一个充满信息的时代,几乎每一个人都被各种或有用或无用(通常情况下)的信息所包围。各种应用软件实现了不同程度的信息处理能力,但更加智能化的信息处理需要靠操作系统来协调实现。计算机能够根据人类的信息需求,变被动寻找信息为主动截获信息。通过持续提升的硬件性能和更加卓有成效的控制软件,计算机将实现更加智能化的用户界面和语音技术。基于更加智能的操作系统和更加灵活的计算形式的新的计算机将真正成为我们事业和生活的伴侣。
  计算机安全性正前所未有地得到广泛的重视。内联网(Intranet)、外联网(Extranet)和因特网(Internet)把计算机站点连接起来,超越了传统的局域网(LAN);病毒和计算机犯罪层出不穷;个人用户越来越关注其隐私。操作系统需要保证Web服务器的安全性,以保证用户在Web上安全地执行业务。操作系统需要为其他应用软件提供引擎以提高可靠性,并减少由常见的编程错误引起的安全漏洞。计算机将基于更可靠的个人认证系统(例如指纹、声控或虹膜),这样便能最大程度地保障用户的隐私不受侵犯,为安全筑起一条绝难逾越的长城。
  一本好的操作系统教材,除了要有系统的基础理论介绍,还应该结合当前主流操作系统的实例,配合专门的实验环节,这样不仅能反应最新的技术动态,更能有效地帮助学生理解和掌握复杂的操作系统的工作原理。微软公司作为一个主要的操作系统生产商,为操作系统的发展作出了巨大贡献。微软亚洲研究院一直极为关注中国教育事业的发展。微软亚洲研究院作为“教育部-微软长城计划”的具体实施者,与国内60余所高校在教材编写、义务授课等方面开展了广泛的学术交流与合作。以微软最新操作系统Windows Server 2003为内核技术的教材已经在2004年6月编写完毕。从这个意义上来讲,Windows作为操作系统教学的实例,结合完整的理论和实验教材,已经发展成为一个非常理想的操作系统教学平台。而这一系列教材的出版是离不开中国高校操作系统教师的努力和微软公司的支持的。
  微软亚洲研究院成立五年多以来,除了从事世界一流的基础研究之外,我们一直把支持中国高校的课程和教材建设、帮助中国培养高水平的计算机人才作为非常重要的工作。2004年1月15日,中国教育部授予微软亚洲研究院“捐资助教特殊贡献奖”,以感谢微软公司在支持中国教育事业发展过程中所做出的贡献。我欣喜地看到,由来自中国著名高校的操作系统专家组成的编写小组,经过不断地努力,从2000年全国操作系统课程研讨会上的倡议,到2001年去微软公司了解Windows XP源代码,再到2003年在微软公司Windows组的设计师指导下阅读Windows Server 2003的源代码。在短短的3年多时间内,终于把编写一系列适合高校操作系统教学的中文Windows操作系统教材的设想变成了现实。
  浏览全书,我感到这本书不仅包含了对操作系统原理的系统讲解,更重要的是紧密融入了微软最新的Windows Server 2003的核心技术,其中还配有大量相关的原理图、实例、实验等内容。书中绝大部分原理图都是几位老师在仔细阅读源代码并和Windows组的设计师一一讨论后结合自身丰富的教学经验绘制而成的。本书确实是一本目前难得的最新Windows现代操作系统的实例讲解教材。
  最后,我想借此机会代表比尔·盖茨先生及微软公司表示对支持中国教育事业的长期承诺和诚意。我们希望今后能和中国高校一起交流计算机技术的最新动态,写出更多这样的好教材,为中国信息产业的腾飞尽一份力。
  
                     微软亚洲研究院院长

                        2004年9月

图书目录

第1章  操作系统概述 1
1.1  计算机系统概观 2
1.1.1  计算机的发展与分类 2
1.1.2  计算机系统 3
1.2  操作系统的概念 7
1.2.1  操作系统的地位 7
1.2.2  操作系统的定义 7
1.2.3  操作系统的特征 8
1.3  操作系统的功能 8
1.4  操作系统的用户接口 10
1.4.1  用户界面 11
1.4.2  程序设计用户接口—系统调用 11
1.5  操作系统简史 13
1.6  操作系统分类 16
1.7  研究操作系统的几种观点 19
1.8  Windows操作系统的发展历程 20
1.8.1  Windows的开发过程 20
1.8.2  Windows的版本 21
1.8.3  Windows 早期版本的技术特点 21
1.8.4  Windows 95和Windows 98 22
1.8.5  Windows NT操作系统的技术特点 24
1.8.6  Windows Embedded家族 26
1.8.7  Windows 服务器 27
1.8.8  Windows Server 2003 29
1.8.9  Windows XP 31
1.8.10  Windows开发的艰辛与规模 36
1.8.11  微软公司下一代客户端Windows操作系统Longhorn 38
习题 41
第2章  Windows Server 2003的体系结构 45
2.1  操作系统的设计 46
2.1.1  操作系统的设计目标 46
2.1.2  操作系统的设计阶段 48
2.1.3  操作系统的结构问题 48
2.1.4  操作系统的结构设计 49
2.1.5  近十年来操作系统结构的发展 55
2.2  Windows Server 2003的操作系统模型 57
2.2.1  Windows Server 2003的构成 58
2.2.2  Windows Server 2003的可移植性 59
2.2.3  多处理机和集群支持 59
2.3  Windows Server 2003的体系结构 61
2.3.1  内核 62
2.3.2  硬件抽象层 62
2.3.3  执行体 63
2.3.4  设备驱动程序 64
2.3.5  环境子系统和子系统动态链接库 64
2.3.6  系统支持进程 68
2.3.7  安全考虑 70
2.4  Windows Server 2003的系统机制 71
2.4.1  陷阱调度 71
2.4.2  对象管理器 79
2.4.3  同步 83
2.4.4  本地过程调用 87
2.4.5  系统工作线程 88
2.5  Windows Server 2003的注册表 88
2.5.1  注册表的数据类型 88
2.5.2  注册表的逻辑结构 89
2.6  Longhorn的体系结构 90
习题 93
第3章  进程和处理机管理 95
3.1  进程 96
3.1.1  程序的顺序执行和并发执行 96
3.1.2  进程的定义和描述 97
3.1.3  进程的状态转换 98
3.2  进程控制 102
3.2.1  进程的创建和退出 102
3.2.2  进程的阻塞和唤醒 103
3.2.3  Windows Server 2003进程管理 103
3.3  线程 105
3.3.1  线程的概念 105
3.3.2  进程和线程的比较 107
3.3.3  Windows Server 2003线程 107
3.4  进程互斥和进程同步 109
3.4.1  互斥算法 110
3.4.2  信号量 113
3.4.3  经典进程同步问题 116
3.4.4  管程 118
3.4.5  Windows Server 2003的进程互斥和同步 119
3.5  进程间通信 120
3.5.1  Windows Server 2003的信号 121
3.5.2  Windows Server 2003基于文件映射的共享存储区 122
3.5.3  Windows Server 2003管道 122
3.5.4  Windows Server 2003邮件槽 123
3.5.5  套接字 123
3.6  死锁问题 124
3.6.1  概述 124
3.6.2  死锁的预防 125
3.6.3  死锁的检测 125
3.6.4  死锁的避免 126
3.6.5  解决死锁问题的综合方法 126
3.7  处理机调度概述 126
3.7.1  处理机调度的类型 127
3.7.2  调度的性能准则 127
3.7.3  进程调度器 128
3.8  调度算法 128
3.8.1  先来先服务算法 128
3.8.2  最短作业优先算法 129
3.8.3  时间片轮转算法 129
3.8.4  多级队列算法 130
3.8.5  优先级算法 130
3.8.6  多级反馈队列算法 130
3.9  Windows Server 2003的线程调度 131
3.9.1  Windows Server 2003的线程调度特征 131
3.9.2  Win32的线程调度应用编程接口 132
3.9.3  线程优先级 132
3.9.4  线程时间配额 135
3.9.5  调度器数据结构 137
3.9.6  调度策略 138
3.9.7  线程优先级提升 140
3.9.8  对称多处理机系统上的线程调度 143
3.9.9  空闲线程 146
习题 146
第4章  存储管理 149
4.1  内存管理的基本原理 150
4.1.1  地址空间和存储空间 150
4.1.2  单一连续存储管理 151
4.1.3  分区式存储管理 151
4.1.4  覆盖和交换技术 153
4.1.5  页式存储管理 153
4.1.6  段式存储管理 157
4.1.7  段页式存储管理 158
4.1.8  页式和段式系统的区别 159
4.2  虚拟存储器 159
4.2.1  局部性原理 159
4.2.2  虚拟存储器的基本原理 159
4.2.3  请求分页系统 160
4.2.4  页面调度策略 161
4.2.5  工作集 163
4.2.6  请求分段系统 164
4.3  磁盘存储管理 164
4.3.1  磁盘结构 164
4.3.2  磁盘的种类 165
4.3.3  磁盘访问时间 165
4.3.4  磁盘调度算法 166
4.3.5  磁盘调度算法的选择 168
4.3.6  磁盘格式化 169
4.3.7  廉价冗余磁盘阵列 170
4.3.8  存储可靠性的实现 172
4.4  高速缓存管理 172
4.4.1  磁盘高速缓存的形式 173
4.4.2  数据交付 173
4.4.3  置换算法 173
4.4.4  周期性写回磁盘 174
4.4.5  提高磁盘I/O速度的其他方法 174
4.5  Windows Server 2003内存管理 175
4.5.1  32位地址空间的布局 176
4.5.2  32位地址转换机制 181
4.5.3  对64位地址模式的支持 188
4.5.4  体系结构兼容性设计 191
4.5.5  用户空间内存分配方式 192
4.5.6  系统内存分配 197
4.5.7  缺页处理 199
4.5.8  工作集 204
4.5.9  物理内存管理 208
4.5.10  其他内存相关机制 215
4.6  Windows Server 2003外存管理 219
4.6.1  Windows Server 2003存储的演变 219
4.6.2  分区 220
4.6.3  驱动程序 223
4.6.4  多分区卷管理 225
4.6.5  卷名字空间 229
4.7  Windows Server 2003高速缓存管理 231
4.7.1  高速缓存的结构 233
4.7.2  高速缓存的大小 235
4.7.3  高速缓存的数据结构 236
4.7.4  高速缓存的操作 240
4.7.5  高速缓存支持例程 245
4.8  小结 248
习题 248
第5章  文件系统 251
5.1  文件概念与实现 252
5.1.1  文件 252
5.1.2  文件实现 255
5.2  目录概念与实现 259
5.2.1  目录 259
5.2.2  目录实现 263
5.3  文件系统 264
5.3.1  文件系统模型 264
5.3.2  文件系统可恢复性 267
5.3.3  文件系统安全性 268
5.4  Windows文件系统概述 270
5.4.1  FSD 270
5.4.2  FSD与文件系统操作 271
5.4.3  FAT文件系统 272
5.5  NTFS文件系统 278
5.5.1  NTFS概述 278
5.5.2  NTFS文件系统驱动程序 280
5.5.3  NTFS的磁盘结构 280
5.5.4  NTFS文件组织 282
5.5.5  NTFS目录组织与索引 288
5.5.6  NTFS数据压缩 289
5.5.7  NTFS可恢复性 290
5.5.8  NTFS安全性 297
5.6  下一代Windows文件系统 301
习题 302
第6章  设备管理与I/O系统 305
6.1  设备管理概述 306
6.1.1  设备管理的重要性 306
6.1.2  设备的分类 307
6.1.3  计算机I/O系统的结构 309
6.1.4  I/O设备数据传送控制方式 310
6.1.5  设备管理的任务和功能 313
6.2  设备管理的实现技术 318
6.2.1  中断技术 318
6.2.2  缓冲技术 320
6.2.3  设备分配技术 322
6.3  I/O软件的结构 325
6.3.1  设备驱动程序 325
6.3.2  与设备无关的系统软件 327
6.3.3  用户空间的I/O 软件 329
6.4  Windows I/O系统的结构 330
6.4.1  概述 330
6.4.2  I/O管理器 332
6.4.3  PnP管理器 333
6.4.4  电源管理器 334
6.4.5  设备驱动程序 336
6.5  Windows I/O系统的核心数据结构 338
6.5.1  文件对象 338
6.5.2  驱动程序对象和设备对象 341
6.5.3  I/O请求包 346
6.6  Windows的I/O处理 351
6.6.1  I/O的类型 351
6.6.2  对单层驱动程序的I/O请求 352
6.6.3  对多层驱动程序的I/O请求 354
6.6.4  同步 355
6.7  小结 356
习题 357
第7章  Windows环境下的程序设计 359
7.1  Windows 应用程序设计模式 360
7.1.1  Win32 API 360
7.1.2  窗口 362
7.1.3  事件驱动 363
7.1.4  Windows应用程序的开发流程 365
7.2  Windows应用程序的基本结构 366
7.2.1  WinMain函数 366
7.2.2  窗口函数 371
7.3 结构化异常处理 373
7.3.1  异常处理 374
7.3.2  终止处理 377
7.3.3  软件异常 379
7.4  动态链接库 379
7.4.1  动态链接与静态链接 380
7.4.2  DLL到进程地址空间的映射 381
7.4.3  DLL的入口点函数 383
7.4.4  DLL的创建和使用 385
7.5  Windows驱动程序模型 386
7.5.1  设备和驱动程序的分层 386
7.5.2  IRP的处理 388
7.5.3  WDM驱动程序的结构 389
7.6  WDM驱动程序的编程实例 400
7.6.1  WdmDriver的源代码组成 400
7.6.2  初始化与清除 401
7.6.3  PnP与电源管理 401
7.6.4  WMI支持 404
7.6.5  分发例程 408
7.6.6  驱动程序的编译链接 410
7.6.7  驱动程序的安装 412
7.6.8  驱动程序的测试 415
习题 418
参考文献 421
索引 423

教学资源推荐
作者: [比]保罗•德•格劳威(Paul De Grauwe) 著
作者: [美]弗兰克 J. 法博齐(Frank J. Fabozzi),埃德温 H. 尼夫(Edwin H. Neave),[美]周国富(Guofu Zhou) 著