下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1. 概念和工具在这一章中,我们会介绍全书将会用到的关键的windows操作系统概念和术语,例如windows api、进程、线程、虚拟内存、内核模式和用户模式、对象、句柄、安全和注册表。我们也会介绍你用来探索windows 内部机制的工具,例如内核调试器、可靠性和性能监视器、来自windows sysinternals ( driver kit(wdk)和windows software development kits(sdk)作为资源来发现windows系统内部更多的信息。确保你理解本章的所有东西-本书的剩余部分假定你已经理解了一切。1.1. windows操作系统版本本书覆盖基于win
2、dows nt内核的最近两个版本:windows vista(32位和64位版本)和windows server 2008(32位和64位版本)。除非特殊说明,本文适用所有的版本。作为背景信息,表1-1列出了windows nt内核的发布版本,它们的内部版本号和外部产品名称。1.2. 基本概念和术语在本书的课程当中,我们将会引用一些对一些读者来说比较陌生的结构和概念。在这个部分,我们将会定义这些贯穿于全书的这些术语。你将在进入到余下章节之前熟悉这些术语。1.2.1. windows apiwindows应用程序编程接口(windows application programming inter
3、face)是对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文档中描述了windows api(参见本章后面的windows sdk)。这个文档可以在.在线免费浏览。它也包含了微软开发
4、网络(msdn,微软对开发者的编程支持)的所有订阅级别(subscription levels)。需要更多的信息,可以看。对基于windows api编程描述的最精彩的是windows via c/c+(第五版,作者jeffrey richter和christophe nasarre,微软出版社2007)。windows api包数千个可调用的函数,可以分成下面主要的类别:基础服务(base services)组件服务(component services) 用户接口服务(user interface services) 图形和多媒体服务(graphics and multimedia ser
5、vices) 消息和协作(messaging and collaboration) 网络networking web服务(web services)本书重点关注内部的关键基础服务,例如进程和线程、内存管理、io和安全。.net是什么?.net框架包含了一个称作fcl(framework class library)类库和一个公共语言运行时(common language runtime)(clr),clr提供了一个托管代码的执行环境,具有实时编译、类型校验、垃圾回收、代码访问安全等特性。clr也提供了一个开发环境,可以提高程序员的生产率、减少通常的编程错误。对于.net framework出色
6、的描述和它的内核架构,可以参考clr via c#, second edition by jeffrey richter (microsoft press,2006)。clr被实现成一个经典的代码运行在用户模式的dll com服务器。实际上,.net framework的所有组件都是在windows api基础上使用非托管代码实现成标准的用户模式windows dll(没有任何一个.net framework组件运行在内核模式。图1-1说明这些组件之间的关系。.win32 api的历史有趣的是,win32 并不是最初就作为微软windows nt的编程接口的候选名单。因为windows nt项
7、目开始是用来替代os/2 version 2的,主要的编程接口是32位os/2 外观管理(presentation manager)api。然而,项目做了一年以后,微软windows 3.0 上市并取代了它。因此微软改变了方向并把windows nt作为将来取代windows家族的产品而不是用来取代os/2。就是在这个时候,需要定义windows api在此之前,windows api仅以16位接口的形式存在。虽然windows api引入许多windows 3.1中没有提供的新函数,微软还是决定新的api要兼容16位api的函数名称、语义和数据类型,目的是为了降低移植现存的16位window
8、s程序到windows nt上的负担。因此对于那些第一次看到windows api,感觉许多函数名称和接口看起来不一致的人,应该记住这种不一致是为了确保windows api对16位windows api的兼容。1.2.2. 服务、函数和例程一些windows用户和编程文档中的术语在不同的上下文有不同的意思。例如服务可以指操作系统中可调用的例程、设备驱动,或者一个服务器进程。下面列出本书中的常用术语的意思。l 文档化的windows api函数、windows api中可调用的子例程,例如createprocess、createfile和getmessagel 未文档化的本地系统服务(或者执行
9、体系统服务),操作系统底层用户模式不能调用的服务。例如ntcreateprocessex是用来创建一个新进程的内部系统服务。(了解本地函数,参考第三章“系统服务分发”)。l 在操作系统内部的内核支持函数(或者例程),只可以在内核模式调用(后面的章节会定义),例如exallocatepoolwithtag是设备驱动调用从windows 系统堆中分配内存的函数。l 由windows服务控制管理器启动的windows服务进程。(虽然注册变中定义设备驱动为服务,但是我们在本书中不把设备驱动作为服务)。例如任务调度服务运行在用户模式进程,来支持at commands(类似于commands at or
10、cron)。l dll(动态链接库):一组可调用的例程链接在一起形成一个库文件,可以被应用程序动态加载使用这些例程。例子包括msvcrt.dll(c运行时库)和kernel32.dll(windows api子系统库之一)。windows用户模式组件和应用程序广泛的使用这些库。动态链接库提供的好处在于所有引用它的应用程序共享内存中的一份拷贝。1.2.3. 进程、线程和作业windows用户和编程文档中有几个术语在不同的上下文有不同的含义,例如“服务”可以指:虽然程序和进程表面上看起来是相似的,但是他们从根本上是不同的。程序是一个静态的指令序列,而进程是一个容器,包含了一些当执行程序的一个实例后
11、会用到的资源。在最高抽象层面上,windows进程包含下面这些:l 一个私有的虚拟地址空间,是进程可以使用的一些虚拟内存地址l 一个可执行程序,定义了初始的代码和数据并且被映射到进程虚拟地址空间中l 一些指向不同的系统资源的打开的句柄,例如进程中的所有线程可以访问的信号量、通信端口。l 称作访问令牌的安全上下文,用来标识用户、安全组、特权、用户访问控制(uac)、虚拟化状态、会话、和进程关联的受限的用户账户状态。l 一个称作进程id的唯一标识符(内部叫做客户id(client id)的标识符)。l 最后一个执行的线程(虽然一个空进程是可能的,但是是没有用的)每个进程也都会执行它的父亲或者创建者
12、金正,然而,如果父进程退出的话,这个信息是不会更新的。因此对一个进程来说,指向一个不存在的父进程是可能的。这并不是一个问题,因为没有任何东西依赖于这个信息。下面的这个实验说明了这个情况。实验:浏览进程树大多数工具都不会显示进程的父进程或者创建者,你可以通过性能监视器检索创建进程id或者采用编程的方式也可以。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)
13、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.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. expl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 双方合作推广2024年度旅游项目合同2篇
- 二零二四年度租赁合同标的物业描述及租金支付方式2篇
- 2024年度船舶建造合同标的为豪华游轮的设计与建造2篇
- 2024年度农产品出口合同的品质检验与履行
- 2024年陶瓷制零件相关陶瓷制品项目合作计划书
- 2024年度技术合作研发合同
- 2024年度信息安全技术升级改造合同
- 二零二四年度租赁办公设备合同
- 二零二四年度电子商务平台搭建与运营合同3篇
- 事业编制改革后2024年度合同制员工绩效考核合同3篇
- 言语治疗技术:Frenchay构音障碍评定内容及评分标准
- 2020新版个人征信报告模板
- 隧道开挖施工台架专项方案含计算书
- 死胎、死婴处置流程
- 九年级物理上第十四章欧姆定律
- 电气技术试题及答案
- 我与地坛(自创兼改编)
- 会议室预约管理系统方案设计书
- 三年级上册语文文言文专项训练(含答案)人教部编版
- 【课件】5.1.2植被第二课时课件人教版(2019)高中地理必修第一册
- 全自动胶囊填充机培训PPT课件
评论
0/150
提交评论