软件调试笔记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:
是沟通用户空间和内核空间的桥梁,用户空间的代码通过它调用内核空间的系统服务。同时也是操作系统内核在用户模式下的“代理”,系统会在启动阶段把它加载到内存中,并把它映射到所有用户进程的进程空间,而且是映射在相同的虚拟地址位置。当内核需要用户空间的配合时,会使用它,因为它存在于每个用户空间的固定位置。它还包含了很多支持例程,比如程序映像加载,运行时函数,异常分发和调试支持等。
从职能角度看,内核空间主要包括以下部件:
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:
是沟通用户空间和内核空间的桥梁,用户空间的代码通过它调用内核空间的系统服务。同时也是操作系统内核在用户模式下的“代理”,系统会在启动阶段把它加载到内存中,并把它映射到所有用户进程的进程空间,而且是映射在相同的虚拟地址位置。当内核需要用户空间的配合时,会使用它,因为它存在于每个用户空间的固定位置。它还包含了很多支持例程,比如程序映像加载,运行时函数,异常分发和调试支持等。
相关文章推荐
- 软件调试笔记8 - Windows概要:进程和进程空间
- 软件调试笔记10 - Windows概要:进程结构:令牌,PEB,ID, 句柄
- 软件调试笔记9 - Windows概要:进程结构:EPROCESS
- 软件调试笔记21 - WINDOWS验证机制
- [软件调试学习笔记]WinDbg演示IA-32 CPU下的Windows 分页机制下的地址转换过程
- 面对软件错误构建可靠的分布式系统_笔记12
- 软件调试笔记22 - WINDOWS验证机制 :使用应用程序验证器
- web开发-Windows系统下使用git for Windows软件-学习笔记六
- 黑马程序员--.NET笔记--.net基础架构和win系统如何运行软件
- 学习笔记1:《大型网站技术架构 核心原理与案例分析》之 大型网站软件系统的特点
- Windows系统中设置软件的开机自动启动
- 软件各种系统架构图
- Android 输入系统架构 笔记1
- 面对软件错误构建可靠的分布式系统_笔记08
- Win系统及软件使用笔记
- 软件系统架构有感
- [RK3288][Android6.0] 调试笔记 --- 系统Dump Callstack方法
- 软件系统架构设计
- 系统设计与架构笔记:键值对在架构设计里的应用