Microsoft® Windows XP Analysis 1---Architecure Overview

来源:互联网 发布:湖州市公务员网络学堂 编辑:程序博客网 时间:2024/05/16 04:32

 

Author: Harold Wang

http://blog.csdn.net/hero7935

1. OS Model of Windows XP

Windows XP 不是单纯地使用某种体系结构,而是融合了分层操作系统和客户/服务器(微内核)操作系统的特点。同样实现了两个特权级——管态(kernel mode)和目态(user mode)。

Windows XP核心态组件使用了面向对象设计原则,表现在数据的封装、信息隐藏上。但是它又不是一个严格的面向对象系统,处于可移植性以及效力因素的考虑,其大部分代码不是用某种面向对象语言写成,而是使用了C语言并采用了基于C语言的对象实现。

最开始的设计是微内核的,但是随着对性能的不断优化改进,现在已经不再是微内核了。

image

1.1 Windows XP 可移植性

一、通过分层获得可移植性。操作系统可移植性的关键组件是HAL和内核。具体来说,依赖于体系结构的功能(如线程描述表切换)在内核中实现;在相同体系结构中,因计算机而异的功能在HAL中实现。二、通过高级编程语言实现。Windows XP几乎全部使用高级语言C编写——执行体、实用程序和设备驱动程序。图形子系统和用户界面实用C++编写的。当然性能过于敏感部分是汇编。

1.2 Windows XP 体系结构

image

-----核心

内核仅执行最基本操作:1线程调度2陷阱处理和异常调度3中断处理和调度4多处理器同步5供执行体使用的基本内核对象。内核始终运行于和核心态,除ISR中断服务历程,正在运行的线程是不能抢先内核的。内核通过一组称为“内核对象”的简单对象帮助控制、处理并支持执行体对象的创建,以降低这种开销。大多数执行体级别的对象都封装了一个或多个内核对象。

Author: Harold Wang

http://blog.csdn.net/hero7935

------硬件抽象层(HAL)

HAL是多硬件平台移植性的关键。HAL是一个可加载的核心态模块HAL.dll,它为运行在windows XP上的硬件平台提供低级接口,它隐藏了各种与硬件有关的细节。

------执行体

windows XP的执行体是NTOSKERL.EXE的上层(下层是内核)。包括5种类型的函数:
1.从用户态导出并且可以调用的函数。接口在NTDLL.DLL中。通过win32API或一些其他的环境子系统可以对它们进行访问
2.从用户态导出并且可以调用的函数,但当前通过任何文档化的子系统函数都不能使用
3.在windows xp DDK中已经导出并且文档化的核心态调用的函数
4.在核心态组件中调用但没有文档化的函数,仅供内部支持历程。
5.组件内部函数

--------设备驱动程序

可加载的核心态模块(.SYS),是I/O系统和相关硬件之间的接口。不直接操作硬件,通过HAL

--------环境子系统和子系统动态链接库

windows xp 有3种不同环境子系统:POSIX、OS/2和Win32。其中Win32是windows xp 运行时环境,其他子系统仅在需要时启动。环境子系统的作用是将基本的执行体系统服务的某些子集提供给应用程序。每一个可执行映像(.EXE)都受限于唯一的子系统,进程创建时,程序映像头中的子系统类型代码会告诉windows新进程所属的子系统。

Win32子系统关键组件构成:
1.系统进程CSRSS
2.核心态设备驱动程序WIN32K.SYS
3.图形设备接口GDI
4.子系统动态链接库(USER32.DLL ADVAPI32.DLL GDI32.DLL KERNEL32.DLL),它们调用NTOSKRNL.EXE和WIN32.SYS将文档化的Win32 API函数转化为适当的非文档化的核心系统服务
5.图形设备驱动程序,如显卡驱动

NTDLL.DLL系统支持库:
NTDLL.DLL是一个特殊的系统支持库,主要用于子系统动态链接库。包含两种类型的函数:执行体提供的系统服务调度占位程序;子系统、子系统动态链接库以及其他本机映像使用的内部支持函数。

---------系统支持进程

Idle进程(ID=0)
系统进程(包含核心态系统线程ID=2)
会话管理器SMSS
Win32子系统CSRSS
登陆进程WINLOGIN
本地安全身份验证服务器LSASS
服务控制器SERVICES机器相关服务进程

Author: Harold Wang

http://blog.csdn.net/hero7935

1.3 windows xp 注册表

注册表是一个数据库,它的结构与磁盘的逻辑结构相似。注册表包括主键和键值。注册表的逻辑结构:6个根主键,这些主键不可以被删除,也不能添加新的根主键。

HKEY_CURRENT_USER存储与当前登陆用户有关的信息
HKEY_USER存储了所有用户的信息
HKEY_CLASSES_ROOT存储与文件类型和COM对象相关的信息
HKEY_LOCAL_MACHINE存储与系统设置相关的信息
HKEY_PERFORMANCE_DATA存储与系统性能相关的信息
HKEY_CURRENT_CONFIG存储了当前硬件配置文件的信息

1.4 Windows XP 服务

Win32服务由三部分组成:一个服务应用程序;一个服务控制程序SCP;服务控制管理器SCM

---------服务应用程序

我们通过CreateService函数实现注册。高级应用程序接口动态链接库Asvapi32包括了所有客户端SCM应用程序接口。注册了一个服务之后,一条消息就会被发送到SCM中服务的所在地,然后SCM将为服务在HKEY_LOCAL_MACHINE/SYSTEM/Currentcontrolset/Services新建一个注册主键。每个服务的独立的注册主键定义了可执行程序的包括服务、参数、配置内容的镜像路径。

1.5 Windows XP 管理机制

Windows Management Instrumentation(WMI)是基于网络的企业管理标准的实现。WMI包含4个主要的组件:管理程序、WMI基础设施、数据生产者和被管理的对象集合。

image

Author: Harold Wang

http://blog.csdn.net/hero7935