[计算机]深入解析windows操作系统第五版中文翻译

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[计算机]深入解析windows操作系统第五版中文翻译
1.
概念和工具
在这一章中,我们将介绍将在本书中使用的视窗操作系统的关键概念和术语,如视窗
应用编程接口、进程、线程、虚拟内存、内核模式和用户模式、对象、句柄、安全和注册表。

我们还将介绍您探索视窗
用于内部机制的工具,如内核调试器、可靠性和性能监视器、来自窗口
系统内部(/TechNet/sys inners)主要工具。

此外,我们将解释您如何使用窗口。

驾驶员
套件(WDK)和视窗软件开发套件(软件开发套件)被用作在视窗系统内发现更多信息的资源。

确保你理解这一章的所有内容——本书的其余部分假设你已经理解了所有内容。

1.1.
Windows操作系统版本
这本书涵盖了基于视窗NT内核的最新两个版本:视窗Vista(32位和64位版本)和视窗服务器2008(32位和64位版本)。

除非另有规定,本文件的所有版本均适用。

作为背景信息,表1-1列出了Windows NT 内核的发布版本、它们的内部版本号和外部产品名称。

1.2.
基本概念和术语
在本书的过程中,我们将引用一些读者不熟悉的结构和概念。


这一部分,我们将在整本书中定义这些术语。

在进入本章的其余部分之前,您将熟悉这些术语。

1.2.1.
窗子
应用程序编程接口是一个面向操作系统家族的系统编程接口。

前面介绍的64位版本的视窗XP和视窗服务器2003,以及32位版本的视窗操作系统编程接口被称为Win32 API,以区别于原来的16位视窗API,后者是原来的16位版本的视窗编程接口。

在本书中,术语“视窗应用编程接口”指的是视窗Vista和视窗服务器2008的32位和64位编程接口。

请注意,在软件开发工具包文档中描述了窗口应用编程接口(请参见本章后面的窗口软件开发工具包)。

此文档可在.免费在线查看。

它还包括微软开发网络的所有订阅级别(MSDN,微软对开发者的编程支持)
级别).需要更多信息,可以查看。

对于基于窗口的
最好的应用编程接口描述是“窗口
《通过C/C++》(第五版,杰弗里·里克特和克里斯托夫·纳萨尔著,微软出版社2007年)。

视窗应用程序接口包数以千计的可调用函数。

它可以分为以下主要类别:■基本服务)■组件服务)■用户界面服务)■图形和多媒体服务■消息和协作(混乱)老化和协作)■网络服务本书重点介绍内部关键的基本服务,如进程和线程、内存管理、IO和安全性。

什么是.网?
.网络框架包含一个名为FCL(Framework
班级
类库和公共语言运行时(CLR),CLR提供了一个托管代码执行环境,具有实时编译、类型检查、垃圾收集、代码访问安全性和其他功能。

CLR还提供了一个开发环境,可以提高程序员的工作效率,减少常见的编程错误。

for .净值
对框架及其核心架构的出色描述可以在CLR中找到
通过
杰弗里·里克特著第二版(微软出版社,2006年).CLR被实现为一个经典的动态链接库服务器,代码在用户模式下运行。

事实上,.净框架的所有组件都在窗口中
基于应用编程接口,它被实现为使用非托管代码的标准用户模式窗口动态链接库
框架组件在内核模式下运行。

图1-1说明了这些组件之间的关系。

.Win32
原料药历史
有趣的是,Win32最初并不是微软视窗NT编程接口的候选列表。

因为视窗NT项目最初是用来取代操作系统2版本2的,所以主要的编程接口是32位操作系统2表示管理器。

然而,项目完成一年后,微软视窗3.0
列出并替换了它。

所以微软改变了方向,占领了视窗
未来,NT将取代OS/2,取代windows系列。

正是在这个时候,窗口应用编程接口需要被定义——在此之前,窗口应用编程接口只作
为一个16位接口存在。

尽管视窗应用编程接口引入了许多视窗3.1中没有提供的新功能,微软仍然决定新的应用编程接口应该与16位应用编程接口的功能名、语义和数据类型兼容,以减少现有的16位视窗程序向视窗的迁移
新界。

所以对于那些第一次看到窗户的人来说
API,认为许多函数名和接口看起来不一致的人,应该记住这种不一致是为了确保窗口
与16位窗口应用编程接口兼容。

1.2.2.
服务、功能和例程
编程文档中的一些窗口用户和术语在不同的上下文中有不同的含义。

例如,服务可以引用可以在操作系统、设备驱动程序或服务器进程中调用的例程。

本书中常用术语的含义如下。

l
记录的窗口应用编程接口函数、窗口
可在应用编程接口中调用的子程序,如创建进程、创建文件和获取消息
l未记录的本地系统服务(或执行器系统服务),这些服务不能被操作系统的底层用户模式调用。

例如,NtCreateProcessEx是用于创建新流程的内部系统服务。

(有关本地功能,请参考第3章“系统服务分发”)。

操作系统中的内核支持函数(或例程)只能在内核模式下调用(在后面的章节中定义)。

例如,ExAllocatePoolWithTag是设备驱动程序调用的一个函数,用于从windows系统堆中分配内存。

窗口服务控制
管理器启动的窗口服务进程。

(尽管设备驱动程序在注册变更中被定义为服务,但在本书中,我们不使用设备驱动程序作为服务)。

例如,任务调度服务以用户模式运行,以支持at命令(类似于at或cron命令)。

动态链接库:一组可调用的例程链接在一起,形成一个库文件,可以被应用程序动态加载和使用。

例子包括msvcrt.dll(运行时库)和kernel32.dll(窗口
一个应用编程接口子系统库)。

这些库被Windows用户模式组件和应用程序广泛使用。

动态链接库的优点是所有引用它的应用程序在内存中共享一个副本。

1.2.3.
进程、线程和作业
Windows用户和编程文档中的几个术语在不同的上下文中有不同的含义。

例如,“服务”可以指:
虽然程序和过程看起来很相似,但本质上是不同的。

一个程序是一个静态的指令序列,而一个进程是一个包含一些资源的容器,这些资源将在程序的一个实例被执行时被使用。

在最高抽象层,windows 进程包括以下内容:一个私有虚拟地址空间,它是进程可以使用的一些虚拟内存地址;一个定义初始代码和数据的可执行程序,它被映射到进程虚拟地址空间中指向不同系统资源的一些开放句柄,例如信号量、进程中所有线程都可以访问的通信端口。

L称为访问令牌的安全上下文,用于标识用户、安全组、权限、用户访问控制(UAC)、虚拟化状态、会话、以及与该进程关联的受限
用户帐户状态。

一个唯一的标识符称为进程id(内部称为ID(客户端ID)。

执行的最后一个线程(尽管空进程是可能的,但它是无用的)每个进程也将执行它的父亲或创建者金正日,但是,如果父亲进程退出,这个信息将不会被更新。

因此,一个进程可能指向一个不存在的父进程。

这不是问题,因为没有任何东西依赖于这些信息。

下面的实验说明了这种情况。

实验:大多数浏览流程树的工具不会显示父流程或流程的创建者。

您可以通过性能监视器或以编程方式检索创建过程的标识。

Tlist.exe(在windows调试工具箱中)使用/t
交换机可以显示流程树,它是一个从设备
tlist /t的输出示例:1.
c:\ > t列表
/t 2.
系统
过程(0) 3.
系统
(4) 4.
smss.exe
(480)
5.
csrss.exe
(548)
6.
wininit.exe (612)
7.
服务.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.
tasken .exe (604)
17.
任务.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)
项目经理25.
WINWORD.EXE
(3512)
WinInt5E _第01章.doc
[兼容性
模式] -微软Word 26.
cmd.exe
(3936)
命令提示符-t列表/t 27.
Tlist.exe (1344)该列表缩进每个进程以指示父子关系。

父进程不
存在的进程显示在左侧。

相关文档
最新文档