参考资料:
1. 《Windows Internals》
5. WDK下载地址
知识点:
1. 用户模式下的四种基本进程类型:
● Fixed (or hardwired) system support processes, Such as the logon process & the session manager.
● Service processes, such as Task scheduler & Print spooler services.
● User applications
● Environment subsystem server processes
图1 简化的系统架构
2. 通过上图,我们可以看到用户应用程序并不是直接调用本地Windows操作系统服务,而是通过Subsystem DLLs。而Subsystem DLLs的作用就是将文档化的函数转换为合适的内部的本地系统服务的调用。这种转换可能会涉及给Environment subsystems发送消息。
3. Windows内核态组件包括:
● Windows Executive:包含基本的操作系统服务,如:内存管理、进程&线程管理、安全、I/O、网络和进程间通信。
● Windows Kernel:由底层的操作系统函数组成,如:线程调度、中断&异常分派和多进程同步。同时,它也为上层提供例程和基础对象。
● Device drivers:包括硬件设备驱动(将用户I/O函数调用转换为特定的硬件设备I/O请求)和非硬件设备驱动(文件系统驱动和网络驱动)。
● Hardware Abstraction Layer:起隔离作用,用以隔离{内核、设备驱动和Windows Executive其余部分}与特定平台下的硬件差别。
● Windowing & Graphics System:实现了GUI函数。
4. Windows是一个SMP操作系统。所有处理器共享同一内存空间。Windows支持三种现代多处理器系统类型:Hyper-Threading、NUMA(non-uniform memory architecture)和Multicore。
● Hyper-Threading:由Intel引入,为每个物理内核提供两个逻辑处理器。每个逻辑处理器拥有自己的CPU状态,但共享执行引擎和缓存Cache。
● NUMA系统:处理器被分组成更小的单元,这些单元被称为“节点”。每个节点都有自己的处理器和内存,且通过总线连接到更大的system。
5. 通过查看注册表中的HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions中的ProductType来区分系统版本。
6. 环境子系统的作用是暴露Windows Executive System提供的基础服务子集给应用程序,且不同子系统可访问的服务子集是不一样。用户应用程序不是直接调用Windows系统服务,而是通过子系统DLLs来使用的。可以使用Dependency Walker tool查看Windows模块的依赖模块关系树。
7. 子系统由Session Manager(Smss.exe)进程启动。子系统的启动信息被存在注册表的HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems。