您的位置:首页 > 运维架构 > 网站架构

软件调试笔记12 - Windows概要:架构和系统部件

2017-11-24 18:27 281 查看
内核空间

从职能角度看,内核空间主要包括以下部件:

1. 硬件抽象层,hardware abstraction layer,简称HAL。主要作用是隔离硬件差异性,使内核和顶层模块可以通过统一的方式来访问硬件。

2. 操作系统内核,负责线程调度、中断处理、异常分发、多处理器同步等关键任务,是操作系统最核心的部分。

3. 执行体executive,包含了操作系统的基本服务,包括内存管理、进程管理、输入输出、网络和进程间通信等。

4. 内核态驱动程序,包括文件系统和图形显示驱动程序,以及用于其他硬件的驱动程序,有些是WINDOWS自带的,有些是其他厂商开发的。是对内核功能的补充。

5. WINDOWS 子系统驱动程序Win32K.SYS,包括USER和GDI两大部分,USER负责窗口管理,用户输入等,GDI负责显示输出和各种图形操作。

6.内核支持模块,包括内核调试的KDCOM.DLL, 用于启动阶段的显示驱动BOOTVID.DLL, 检查模块完好性的DI.DLL, 支持日志功能的CLFS.SYS等。

内核文件

从文件角度看,内核和执行体都位于一个文件,即通常所说的NT内核文件,NT内核文件有几种版本,它们是使用同一套源代码通过不同编译选项编译出来的。

1. 针对单处理器系统优化的单处理器版本

2. 可用于多处理器系统的多处理器版本

那么系统是如何决定使用哪一个版本的呢?

首先安装程序在安装的时候会根据系统中处理器个数,选择单处理器还是多处理器版本中的一个复制到用户系统中system32目录。如果复制的是多处理器版本,那么会将其改为与单处理器版本相同的名字。多处理器版本可以运行在单处理器系统中,只是多处理器必须有的同步措施是没必要的,也会牺牲依稀一些性能。

系统和IDLE进程

系统进程system process和空闲进程idle process是两个特殊的进程,具有以下特征:

1. 普通的WINDOWS进程都是通过使用CreateProcess或类似的API并指定一个可执行映像文件而创建的,但这两个进程不是,它们没有对应的磁盘映像文件,是在系统启动的时候”捏造”出来的。

2。 普通的进程都有内核态和用户态两个部分,这两个只有内核态。

3. 有固定的进程ID,IDLE是0, 系统的是8或者4.

系统进程是系统内核和大多数系统线程的宿主和载体,在一个典型的系统中,系统进程中有几十个乃至上百个系统线程在工作。

可以使用!process来观察系统进程,



类似的,IDLE进程是IDLE线程的载体,IDLE线程的个数与系统中启用的处理器个数一致。当CPU没有其他线程需要执行时,CPU会执行IDLE线程。

用户空间

用户空间是应用程序代码和各种用户态模块运行的主要场所,运行以下进程:

1. 会话管理器进程SMSS.EXE, 它是系统中第一个根据映像文件创建的进程,是在系统启动后期由执行体的初始化函数创建的。运行后,会加载和初始化WIN32子系统的内核模块,创建Win32子系统服务器进程,并创建登录进程。

2. WIndows子系统服务器进程,负责维护WINDOWS子系统的日常事务,为子系统中各个进程提供服务,比如登记进程和线程,管理控制台窗口,管理DOS程序虚拟机进程等。

3. 登录进程,负责用户登录和安全相关事务。

4. 本地安全和认证进程,负责用户身份验证。

5. 服务管理进程,负责启动和管理系统服务程序。

6. OS/2子系统和POSIX子系统服务进程,用于在WINDOWS后台运行OS/2和符合POSIX标准的程序。

7. 壳进程Shell,默认为Explorer.exe,负责显示开始菜单,任务栏和桌面图标等

8. 用户安装的各种应用程序和服务。

NTDLL.DLL

是沟通用户空间和内核空间的桥梁,用户空间的代码通过它调用内核空间的系统服务。同时也是操作系统内核在用户模式下的“代理”,系统会在启动阶段把它加载到内存中,并把它映射到所有用户进程的进程空间,而且是映射在相同的虚拟地址位置。当内核需要用户空间的配合时,会使用它,因为它存在于每个用户空间的固定位置。它还包含了很多支持例程,比如程序映像加载,运行时函数,异常分发和调试支持等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: