深入解析windows的的操作system[第5版中文翻译]

上传人:平*** 文档编号:10230606 上传时间:2017-10-06 格式:DOC 页数:4 大小:161.50KB
返回 下载 相关 举报
深入解析windows的的操作system[第5版中文翻译]_第1页
第1页 / 共4页
深入解析windows的的操作system[第5版中文翻译]_第2页
第2页 / 共4页
深入解析windows的的操作system[第5版中文翻译]_第3页
第3页 / 共4页
深入解析windows的的操作system[第5版中文翻译]_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《深入解析windows的的操作system[第5版中文翻译]》由会员分享,可在线阅读,更多相关《深入解析windows的的操作system[第5版中文翻译](4页珍藏版)》请在金锄头文库上搜索。

1、1. 概念和工具在这一章中,我们会介绍全书将会用到的关键的 windows 操作系统概念和术语,例如Windows API、进程、线程、虚拟内存、内核模式和用户模式、对象、句柄、安全和注册表。我们也会介绍你用来探索 Windows 内部机制的工具,例如内核调试器、可靠性和性能监视器、来自 Windows sysinternals ( Windows Driver Kit(WDK)和 Windows Software development Kits(SDK)作为资源来发现 Windows 系统内部更多的信息。确保你理解本章的所有东西-本书的剩余部分假定你已经理解了一切。1.1. Windows

2、 操作系统版本本书覆盖基于 Windows NT 内核的最近两个版本:Windows Vista(32 位和 64 位版本)和 Windows Server 2008(32 位和 64 位版本) 。除非特殊说明,本文适用所有的版本。作为背景信息,表 1-1 列出了 Windows NT 内核的发布版本,它们的内部版本号和外部产品名称。1.2. 基本概念和术语在本书的课程当中,我们将会引用一些对一些读者来说比较陌生的结构和概念。在这个部分,我们将会定义这些贯穿于全书的这些术语。你将在进入到余下章节之前熟悉这些术语。1.2.1. Windows APIWindows 应用程序编程接口( Windo

3、ws application programming interface)是对Windows 操作系统家族的系统编程接口。前面介绍的 Windows XP 和 Windows Server 2003的 64 位版本,Windows 操作系统的 32 位版本的编程接口称作 Win32 API,以用来区别于原始的 16 位 Windows API,16 位 Windows API 是原始的 Windows16 位版本的编程接口。在本书中,术语 Windows API 指的是 Windows Vista 和 Windows Server 2008 的 32 位和 64位编程接口。注意在 SDK 文档

4、中描述了 Windows API(参见本章后面的 Windows SDK)。这个文档可以在 .在线免费浏览。它也包含了微软开发网络( MSDN,微软对开发者的编程支持)的所有订阅级别(subscription levels)。需要更多的信息,可以看。对基于 Windows API 编程描述的最精彩的是Windows via C/C+ (第五版,作者 Jeffrey Richter 和 Christophe Nasarre,微软出版社 2007)。Windows API 包数千个可调用的函数,可以分成下面主要的类别:基础服务(Base Services)组件服务(Component Servic

5、es) 用户接口服务(User Interface Services) 图形和多媒体服务(Graphics and Multimedia Services) 消息和协作(Messaging and Collaboration) 网络Networking Web 服务( Web Services)本书重点关注内部的关键基础服务,例如进程和线程、内存管理、IO 和安全。.Net 是什么?.Net 框架包含了一个称作 FCL(Framework Class Library)类库和一个公共语言运行时(Common Language Runtime)(CLR),CLR 提供了一个托管代码的执行环境,具有

6、实时编译、类型校验、垃圾回收、代码访问安全等特性。CLR 也提供了一个开发环境,可以提高程序员的生产率、减少通常的编程错误。对于.NET Framework 出色的描述和它的内核架构,可以参考CLR via C#, Second Edition by Jeffrey Richter (Microsoft Press,2006)。CLR 被实现成一个经典的代码运行在用户模式的 DLL COM 服务器。实际上,.NET Framework 的所有组件都是在 windows API 基础上使用非托管代码实现成标准的用户模式windows DLL(没有任何一个.NET Framework 组件运行在内

7、核模式。图 1-1 说明这些组件之间的关系。.Win32 API 的历史有趣的是,Win32 并不是最初就作为微软 windows NT 的编程接口的候选名单。因为windows NT 项目开始是用来替代 OS/2 version 2 的,主要的编程接口是 32 位 OS/2 外观管理(Presentation Manager)API。然而,项目做了一年以后,微软 windows 3.0 上市并取代了它。因此微软改变了方向并把 windows NT 作为将来取代 windows 家族的产品而不是用来取代 OS/2。就是在这个时候,需要定义 windows API在此之前,windows API

8、 仅以16 位接口的形式存在。虽然 windows API 引入许多 windows 3.1 中没有提供的新函数,微软还是决定新的 API要兼容 16 位 API 的函数名称、语义和数据类型,目的是为了降低移植现存的 16 位windows 程序到 windows NT 上的负担。因此对于那些第一次看到 windows API,感觉许多函数名称和接口看起来不一致的人,应该记住这种不一致是为了确保 windows API 对 16位 windows API 的兼容。1.2.2. 服务、函数和例程一些 windows 用户和编程文档中的术语在不同的上下文有不同的意思。例如服务可以指操作系统中可调用

9、的例程、设备驱动,或者一个服务器进程。下面列出本书中的常用术语的意思。 文档化的 windows API 函数、windows API 中可调用的子例程,例如CreateProcess、CreateFile 和 GetMessage 未文档化的本地系统服务(或者执行体系统服务) ,操作系统底层用户模式不能调用的服务。例如 NtCreateProcessEx 是用来创建一个新进程的内部系统服务。 (了解本地函数,参考第三章“系统服务分发” ) 。 在操作系统内部的内核支持函数(或者例程) ,只可以在内核模式调用(后面的章节会定义) ,例如 ExAllocatePoolWithTag 是设备驱动调

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

11、好处在于所有引用它的应用程序共享内存中的一份拷贝。1.2.3. 进程、线程和作业Windows 用户和编程文档中有几个术语在不同的上下文有不同的含义,例如“服务”可以指:虽然程序和进程表面上看起来是相似的,但是他们从根本上是不同的。程序是一个静态的指令序列,而进程是一个容器,包含了一些当执行程序的一个实例后会用到的资源。在最高抽象层面上,windows 进程包含下面这些: 一个私有的虚拟地址空间,是进程可以使用的一些虚拟内存地址 一个可执行程序,定义了初始的代码和数据并且被映射到进程虚拟地址空间中 一些指向不同的系统资源的打开的句柄,例如进程中的所有线程可以访问的信号量、通信端口。 称作访问令

12、牌的安全上下文,用来标识用户、安全组、特权、用户访问控制(UAC) 、虚拟化状态、会话、和进程关联的受限的用户账户状态。 一个称作进程 ID 的唯一标识符(内部叫做客户 ID( client ID)的标识符) 。 最后一个执行的线程(虽然一个空进程是可能的,但是是没有用的)每个进程也都会执行它的父亲或者创建者金正,然而,如果父进程退出的话,这个信息是不会更新的。因此对一个进程来说,指向一个不存在的父进程是可能的。这并不是一个问题,因为没有任何东西依赖于这个信息。下面的这个实验说明了这个情况。实验:浏览进程树大多数工具都不会显示进程的父进程或者创建者,你可以通过性能监视器检索创建进程 ID 或者

13、采用编程的方式也可以。Tlist.exe(在 windows 调试工具箱)使用/t 开关可以显示进程树,这是一个从 tlist/t 的输出例子:1. C:tlist /t 2. System Process (0) 3. System (4) 4. smss.exe (480) 5. csrss.exe (548) 6. wininit.exe (612) 7. services.exe (656) 8. svchost.exe (848) 9. svchost.exe (880) 10. svchost.exe (924) 11. svchost.exe (980) 12. audiodg.

14、exe (1040) 13. svchost.exe (1108) 14. dwm.exe (123) 15. svchost.exe (96) 16. taskeng.exe (604) 17. tasking.exe (1532) 18. SLsvc.exe (1814) 19. svchost.exe (2988) 20. lsass.exe (672) 21. lsm.exe (680) 22. csrss.exe (624) 23. winlogon.exe (824) 24. explorer.exe (724) Program Manager 25. WINWORD.EXE (3512) WinInt5E_Chapter01.doc Compatibility Mode - Microsoft Word 26. cmd.exe (3936) Command Prompt - tlist /t 27. tlist.exe (1344) 这个列表缩进每个进程来表明父子关系。父进程不存在的进程靠左显示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号