内核模式组件并不实现用户界面,我们看见的是称为子系统的系统扩展组件。根据工作内容的不同,子系统可以分为两个大类:整体子系统和环境子系统。
1.整体子系统
整体子系统执行一些必要的系统功能,比如:装载、管理和卸载服务以及驱动程序,与帐号管理器和LOGON进程一起实现系统的安全性管理等。
2.环境子系统
环境子系统主要是为应用程序提供编程接口和执行的环境。Microsotf定义了几种应用程序编程接口(API,Application Program Interface),用户模式代码把它们看成是操作系统服务的抽象。这些API形成不同环境子系统,应用程序代码驻留其中。当前,如下所列的环境子系统包括在Win 2K OS中。
(1)Win32子系统是Win 2K OS的本机模式API。
其它子系统都依赖它执行自己的工作。所有新的Win 2K 应用程序(以及大多数移植的应用程序)都依赖于Win32子系统。我们的上层总控软件和Win32子系统有着密切的关系,所以需要对它引起足够的重视,本文也将作较为详细的介绍。
Win32子系统负责以下工作:
系统用户可见的图形用户接口(GUI,Graphic User Interface)。它实现并显示可视窗口、对话、控件和总的系统风格。
控制台I/O,包括键盘、鼠标,以及整个系统的显示。
Win32API的实现,是应用程序和其它子系统与执行程序交互的接口。因为Win32子系统拥有系统中的特殊状态,以及对高性能的内在要求,这一子系统不同于任何其它子系统。特别的,win32子系统分割成一些以用户模式运行的组件和一些以内核模式运行的组件。通常,Win32函数可以分为如下三类:
USER函数,管理窗口、菜单、对话和控件。
图形设备接口(GDI,Grarphic Device Interface)函数,在物理设备(屏幕和打印机等)上执行绘图操作。
KERNEL函数,管理非GUI资源,诸如进程、线程、文件和同步服务。
在Win 2K OS中,USER和GDI函数被移入内核模式,因而请求GUI服务的用户进程直接用系统服务接口发送到内核模式。实现USER和GDI函数的内核代码驻留在WNI32Ksys模块中。
(2)DOS虚拟机(VDM,Virtual DOS Machine)子系统为老式DOS应用程序提供一个16位的MSDOS环境。
(3)WOW(Windows On Windows)子系统支持老式16位Windows应用程序(即Windows3.x程序)。
(4)POSIX(可移植Unix操作系统接口)子系统为符合POSIX1003.1源代码标准的Uhix风格的应用程序提供API支持。
(5)OS/2子系统为16位的05/2应用程序创建执行环境。