windows架构 windows10架构
Windows系统结构,如图:
Windows 采用了双模式结构来保护操作系统本身。操作系统核心运行在内核模式,应用程序的代码运行在用户模式下。每当应用程序需要用到系统内核或内核的扩展模块(内核驱动程序)所提供的服务时,应用程序通过硬件指令从用户模式切换到内核模式中;当系统内核完成了所请求的服务以后,控制权又回到用户模式代码。
一、 Windows内核结构
Windows内核分为三层,硬件抽象层(Hardware Abstraction Layer ,简称HAL), HAL之上是内核层,有时候也称为微内核,在内核层之上则是执行体(executive)层。
硬件抽象层的用意是把所有与硬件相关联的代码逻辑隔离到一个专门的模块中,从而使上面的层次可能做到独立于硬件平台。
内核层和执行层的分工是,内核层实现操作系统的基本机制,而所有的策略决定则留个执行体。
Windows 内核的组成结构,如图:
应用程序最终通过ntdll.dll 切换到内核模式下的执行API函数中,以调用内核中的系统服务。Ntdll.dll 是连接用户模式代码和内核模式系统服务的桥梁。
1.1 Windows内核中的关键组件
1.HAL(硬件抽象层)
Windows Server 2003 的HAL 列表(Intel X86 处理器)
HAL 文件
所支持的硬件系统
Hal.dll
标准PC
Halacpi.dll
ACPI(高级配置和电源接口)PC
Halapic.dll
APIC(高级可编程中断控制器)PC
Halaacpi.dll
APIC ACPI PC
Halmaps.dll
多处理器PC
Halmacpi.dll
多处理器ACPI PC
2. 内核(或微内核)
它是内核模块ntoskrml.exe 中的下层部分(上层部分为执行体),最接近HAL层,负责现场调度和中断、异常的处理;对于多处理器系统,还负责同步处理器之间的行为。
Windows 内核实现了抢占式线程调度机制。
Windows内核管理两种类型的对象:分发器对象(dispatcher object) 和控制对象。分发器对象实现了各种同步功能。Windows内核实现的分发器对象包括事件(event)、突变体(mutant)、信号量(semaphore)、进程(process)、线程(thread)、队列(queue)、门(gate)和定时器(timer)。控制对象被用于内核的操作,包括异步过程调用(APC)、延迟过程调用(DPC)、中断对象等。
3. 执行体
执行体是内核模块ntoskrnl.exe 的上层部分,包含5种类型的函数
执行体包含以下组件:
执行体还包含4组主要的支持函数,如下:
4. 设备驱动程序
设备驱动程式可以懂得加载到系统的模块,其文件扩展名为.sys,是标准的PE文件格式。
设备驱动程序有三种基本类型:
5. 文件系统/存储管理
Windows的原生文件系统是NTFS(NT File System),驱动程序为ntfs.sys。还有一个文件系统格式是FAT(File Allocation Table),是DOS时代发展的文件系统格式。
Windows支持两种形式的过滤驱动程序:一种直接插入到设备栈中,能够看到每个经过设备栈的文件I/O请求;另一种基于Windows提供的过滤管理器驱动程序(FltMgr)的I/O过滤框架,称为文件系统小过滤驱动程序,以回到方式来想要FltMgr的事件。
6.网络
Windows 主要的网络API:
二、 Windows子系统
Windows子系统包含内核模式和用户模式,内核模式部分核心是Win32k.sys ,包含2部分,窗口管理和图形设备接口,窗口管理负责收集分发消息,控制窗口显示和管理屏幕输出。图形设备接口部分包含各种形状绘制及文本输出功能。用户模式部分包括Windows子系统csrss.exe 以及一组动态链接库(DLL)。Csrss.exe 进程主要负责控制台窗口的功能,以及创建或删除进程和线程等。子系统Dll 则被直接链接到应用程序中,包括kernel32.dll ,user32.dll,
gdi32.dll,advapi.dll等,负责实现已经文档化的Windows API函数。
窗口管理:
Windows 子系统的用户界面管理有一个层次结构,通常应用程序只是在一个默认的桌面上运行。Windows子系统窗口管理层次结构:
每个子系统会话都有自己的会话空间,属于某一个会话的资源将从该会话空间中分配。当用户登录到Windows时,操作系统将为该用户建立一个会话;即使用户通过远程桌面或终端服务连接到一个系统中,系统也会为该用户建立一个单独的会话。
在一个会话中,有一个交互式窗口站,可能还有非交互式窗口站。交互式窗口站中通常有三个桌面:登录桌面、默认桌面和屏幕保护桌面。
图形设备接口:
Windows子系统的图形模块结构
Windows的图形引擎有两方面的特点
首先,它提供了一套与设备无关的编程接口,即GDI,这使得应用程序可以使用各种底层显示设备的差异;
其次,应用程序与图形设备驱动程序之间的通信足够高兴,从而即使在频繁的输出和刷新图形元素的情况下,Windows也能够为用户提供良好的视觉效果。
系统线程和系统进程
Windows 关键系统进程介绍:
系统空闲进程(Idle),PID为0,每个处理器或核对应有一个线程
System进程,xp,server2003 PID 为4,包含了内核模式系统线程
会话管理器(Session manager smss.exe),这是Windows系统中第一个创建的用户模式进程。启动了子系统进程csrss.exe 和winlogon.exe。
登录进程winlogon.exe,负责处理交互用户的登录和注销。
Windows 子系统进程csrss.exe , 负责为用户提供一个子系统环境,包括提供控制台窗口的功能,以及创建和删除进程和线程等。
本地安全权威子系统进程(lsass.exe),负责本地系统安全策略。
Shell 进程explorer.exe 。windows 默认Shell,提供了系统与用户打交道的各种界面,包括开始菜单,任务栏等。
服务控制管理器services.exe ,负责管理Windows的系统服务。