2.4 关键的系统组件
这一节将会深入介绍Windows内部结构和每个关键的系统组件所扮演的角色。下图是Windows核心组件更详细的图,它是2.1节的结构图细化版本。
环境子系统和子系统DLL
Windows最初有三个子系统:OS/2、POSIX和Windows。但是到了Windows XP以后,只有Windows子系统随系统一起发布。实际上Windows子系统已经成了Windows必不可少的组件,而其他两个子系统被配置成按需启动。
HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/SubSystems下面保存了子系统启动信息。其下的Required键值为必选子系统,被设置成Windows。其下的Optional键值为按需启动子系统,可以是Os2和Posix中的一个或全部。
环境子系统的角色是将Windows基本服务(Native API)的部分子集暴露给应用程序。
每一个可执行的映像(.exe)被绑定到唯一一个子系统上。映像文件的头部有子系统类型信息。Visual C++的链接器的/SUBSYSTEM选项可以指定此信息。已经链接好的映像,可以使用exetype工具来查看这个信息。
Windows子系统
组成部分: