计算机深入解析windows操作系统第五版中文翻译精品_第1页
计算机深入解析windows操作系统第五版中文翻译精品_第2页
计算机深入解析windows操作系统第五版中文翻译精品_第3页
计算机深入解析windows操作系统第五版中文翻译精品_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.概念和工具在这一章中,我们会介绍全书将会用到的关键的windows操作系统概念和术语,例如Windows API、进程、线程、虚拟内存、内核模式和用户模式、对象、句柄、安全和注册表。 我们也会介绍你用来探索Windows内部机制的工具,例如内核调试器、可靠性和性能监视器、来自 Windows sysinternals (/technet/sysinternals) 主要的工具。此外, 我们将解释你怎么使用Windows Driver Kit ( WDK )和 Windows Software development Kits(SDK )作为资源来发现 Wi

2、ndows系统内部更多的信息。确保你理解本章的所有东西-本书的剩余部分假定你已经理解了一切。1.1. Windows操作系统版本本书覆盖基于 Windows NT内核的最近两个版本:Windows Vista ( 32位和64位版本)和Windows Server 2008( 32位和64位版本)。除非特殊说明,本文适用所有的版本。 作为背景信息,表1-1列出了 Windows NT内核的发布版本,它们的内部版本号和外 部产品名称。table 1-1 Windows Operating System ReleasesProduct NameWindows NT 3.1internal Vers

3、ion Number3,1Release DateJuly 1993Windows NT 353.5September 1994Windows NT 3,513.51May 1995Windows NT 4 04.0JulyWindows 20005.0December 1999Windows XP5,1August 2001Windows Server 20035.2March 2003Windows Vista6tQ (Build 6000)January 20Q7Windows Server 20086.0 (Build 6001)March 20081.2.基本概念和术语在本书的课程当

4、中,我们将会引用一些对一些读者来说比较陌生的结构和概念。在这 个部分,我们将会定义这些贯穿于全书的这些术语。你将在进入到余下章节之前熟悉这些术语。1.2.1. Win dows APIWin dows 应用程序编程接口( Win dows applicati on program ming in terface )是对 Win dows操作系统家族的系统编程接口。前面介绍的Windows XP和Windows Server 2003的64位版本,Windows操作系统的32位版本的编程接口称作 Win32 API,以用来区别于原始的16位 Windows API,16位 Windows API

5、是原始的 Windows16位版本的编程接口。在本书中, 术语 Windows API 指的是 Windows Vista 和 Windows Server 2008 的 32 位和 64 位编程接口。注意在SDK文档中描述了 Windows API (参见本章后面的 Windows SDK )。这个文档 可以在 .在线免费浏览。 它也包含了微软开发网络(MSDN,微软对开发者的编程支持)的所有订阅级别(subscription levels)。需要更多的信息,可以看。对基于 Windows API 编程描

6、述的最精彩的是 Windows via C/C+(第五版,作者 Jeffrey Richter 和 Christophe Nasarre,微软出版社 2007)。Windows API包数千个可调用的函数,可以分成下面主要的类别:业础服务(Base Services)&件服务(Component Services)用户接口服务(User In terface Services)图形和多媒体服务(Graphics and Multimedia Services )消息和协作(Messaging and Collaboration )网络 Networki ngWeb 服务(Web Service

7、s)本书重点关注内部的关键基础服务,例如进程和线程、内存管理、10和安全。.Net是什么?.Net框架包含了一个称作 FCL ( Framework Class Library )类库和一个公共语言运行时(Common Lan guage Run time )( CLR) , CLR提供了一个托管代码的执行环境,具有实时编译、类型校验、垃圾回收、代码访问安全等特性。CLR也提供了一个开发环境,可以提高程序员的生产率、减少通常的编程错误。对于.NET Framework出色的描述和它的内核架构,可以参考CLR via C#, Seco nd Editi on by Jeffrey Richter

8、 (Microsoft Press,2006)。CLR被实现成一个经典的代码运行在用户模式的DLL COM服务器。实际上,.NETFramework的所有组件都是在windows API基础上使用非托管代码实现成标准的用户模式windows DLL (没有任何一个.NET Framework组件运行在内核模式。图1-1说明这些组件之间的关系。User mode(managed code)NET Application(Standard User-Mode EXEs)CLR DLLs(COM server)Framework Class Library Assembles(Standard Us

9、er-Mode DLLs)User mode unmanaged code)Windows API DLLsKernel modeWindows KernelFIGURE 1-1 Relationship between NET Framework 匚omponents.Win32 API的历史有趣的是,Win32并不是最初就作为微软windows NT的编程接口的候选名单。因为windows NT项目开始是用来替代 OS/2 version 2的,主要的编程接口是 32位OS/2外观管 理(Presentation Manager) API。然而,项目做了一年以后,微软windows 3.0

10、上市并取代了它。因此微软改变了方向并把 windows NT作为将来取代 windows家族的产品而不是用来 取代OS/2。就是在这个时候,需要定义windows API在此之前, windows API仅以16位接口的形式存在。API虽然windows API引入许多windows 3.1中没有提供的新函数,微软还是决定新的要兼容16位API的函数名称、语义和数据类型,目的是为了降低移植现存的16位windows程序到windows NT上的负担。因此对于那些第一次看到windows API,感觉许多函数名称和接口看起来不一致的人,应该记住这种不一致是为了确保windows API对16位w

11、indowsAPI的兼容。1.2.2. 服务、函数和例程一些windows用户和编程文档中的术语在不同的上下文有不同的意思。例如服务可以 指操作系统中可调用的例程、设备驱动,或者一个服务器进程。下面列出本书中的常用术语的意思。文档化的 windows API函数、windows API中可调用的子例程,例如CreateProcessCreateFile 和 GetMessage未文档化的本地系统服务(或者执行体系统服务),操作系统底层用户模式不能调用的服务。例如NtCreateProcessEx是用来创建一个新进程的内部系统服务。(了解本地函数,参考第三章“系统服务分发”)。在操作系统内部的内

12、核支持函数(或者例程),只可以在内核模式调用(后面的章节会定义),例如ExAllocatePoolWithTag是设备驱动调用从 windows系统堆中分配内存的 函数。由windows服务控制管理器启动的 Windows服务进程。(虽然注册变中定义设备驱动为 服务,但是我们在本书中不把设备驱动作为服务)。例如任务调度服务运行在用户模式进程,来支持 at comma nds (类似于 comma nds at or cron )。DLL (动态链接库):一组可调用的例程链接在一起形成一个库文件,可以被应用程序动态加载使用这些例程。 例子包括 msvcrt.dll (C运行时库)和kernel3

13、2.dll( windows API 子系统库之一)。Windows用户模式组件和应用程序广泛的使用这些库。动态链接库 提供的好处在于所有引用它的应用程序共享内存中的一份拷贝。1.2.3. 进程、线程和作业Windows用户和编程文档中有几个术语在不同的上下文有不同的含义,例如“服务”可以指:虽然程序和进程表面上看起来是相似的,但是他们从根本上是不同的。程序是一个静态的指令序列,而进程是一个容器,包含了一些当执行程序的一个实例后会用到的资源。在最高抽象层面上,windows进程包含下面这些:一个私有的虚拟地址空间,是进程可以使用的一些虚拟内存地址一个可执行程序,定义了初始的代码和数据并且被映射

14、到进程虚拟地址空间中一些指向不同的系统资源的打开的句柄,例如进程中的所有线程可以访问的信号量、通信端口。称作访问令牌的安全上下文,用来标识用户、安全组、特权、用户访问控制(UAC)、虚拟化状态、会话、和进程关联的受限的用户账户状态。一个称作进程ID的唯一标识符(内部叫做客户ID( client ID )的标识符)。最后一个执行的线程(虽然一个空进程是可能的,但是是没有用的)每个进程也都会执行它的父亲或者创建者金正,然而,如果父进程退出的话, 这个信息是不会更新的。因此对一个进程来说, 指向一个不存在的父进程是可能的。这并不是一个问题,因为没有任何东西依赖于这个信息。下面的这个实验说明了这个情况

15、。实验:浏览进程树大多数工具都不会显示进程的父进程或者创建者,你可以通过性能监视器检索创建进程ID或者采用编程的方式也可以。Tlist.exe(在windows调试工具箱)使用/t开关可以显示进程树,这是一个从 tlist /t的输出例子:C:tlist /tSystem Process (0)System (4)smss.exe (480)csrss.exe (548)winin it.exe (612)services.exe (656)svchost.exe (848)svchost.exe (880)svchost.exe (924)svchost.exe (980)audiodg.exe (1040)svchost.exe (1108)dwm.exe (123)svchost.exe (96)taske ng.exe (604)taski ng.exe (1532)SLsvc.exe (1814)svchost.exe (2988)lsass.exe (672)lsm.exe (680)csrss.exe (624)winl ogo n.exe (824)explorer.exe (724) Progr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论