环境子系统是操作系统中名词。环境子系统向应用程序提供环境和
应用程序编程接口(Appplication Programming Interface, API)。Windows 2000/XP支持三种环境子系统:Win32、POSIX和OS/2,其中最重要的环境子系统是Win32子系统,其他子系统都要通过Win32子系统接收用户的输入和显示输出。环境子系统的作用是将基本的执行体
系统服务的某些子集提供给应用程序。 用户应用程序调用
系统服务时必须通过一个或多个子系统
动态链接库作为中介才可以完成。
发展
环境子系统的作用也就是将一些基础的 Windows 可执行系统服务暴露给应用程序,用户程序不直接调用系统服务,而是经由一个或者多个子系统DLL 进行,这些库导出公开的接口,供连接到当前子系统的应用程序调用。
Win32
Win32 子系统提供 Win32 API 。符合 Win32 API 的应用程序可以不加修改地运行在所有32位平台上。Win32 子系统DLL (如 Kernel32.dll , Advapi32.dll , User32.dll , Gdi32.dll )实现了Win32 API 函数。
Windows拥有一个内核, 多个子系统.
Window的环境子系统其实就是内核的client, 内核为环境子系统提供服务.
最早时设计了三个环境子系统, OS/2, POSIX, Windows. 到今天Windows操作系统中就只剩下了Windows环境子系统了.
Windows的环境子系统的服务器进程是CSRSS.EXE, 全称是Client/Server Runtime Server Subsystem. 它包括三个DLL.
WINSRV.DLL 最基本的dll, 提供包括管理控制台窗口, hard error(内核的驱动程序发起, 有csrss.exe报告的错误).
CSRSRV.DLL 进程,线程维护, 调试
BASESRV.DLL 负责安全和登录.
Windows子系统还有一个内核模块, 它工作在内核之中, Win32K.sys
包括
GDI, 窗口绘制.
USER 用户输入
OS、2子系统
OS/2子系统使OS/2应用程序能够运行
POSIX
POSIX子系统提供遵从 POSIX 1003.1 标准的API
Win32 子系统是最重要的子系统,因为它控制着到图形设备的访问。其他两个子系统如OS/2 主要是为了
向前兼容,而POSIX子系统在功能上受到严格限制。后两个子系统实际上也是Win32 应用程序,它们使用 Win32 API 来提供自己的API 集。 本质上,所有子系统都是基于 Win32 子系统
内核的。