用户登录(即使是终端服务)到Windows中时,操作系统为用户建立一个会话,每个子系统会话都有自己的会话空间,属于某一会话的资源将从该会话空间中分配。

win10android子系统 网络 win10子系统原理_System

 

通常我们运行的图形界面应用程序运行在默认桌面上。交互式窗口站有独立的剪贴板、键盘、鼠标、显示器等,在它们三个桌面中,任一时刻只有一个是激活的,输入输出设备归激活的桌面所有。

Windows子系统会话有一个RIT(Raw Input Thread)线程,负责从输入设备读取原始的输入事件,然后生成消息,寄送到正确的线程消息队列中。

DirectX(包括DirectDraw和Direct3D)允许应用软件绕过GDI图形引擎直接操纵显示器硬件。

 

进程(process)定义了一个执行环境,包括自己私有的地址空间、一个句柄表,以及一个安全环境;线程(thread)是一个控制流,有自己的调用栈(call stack),记录了它的执行历史,每个线程代表一个指令执行序列,同时也是一个调度单元。Windows是一个多进程操作系统环境,但它对处理器资源的分配是按照线程来进行调度的。

Windows内核结构中,进程和线程的核心机制是在微内核中实现的,而管理机制是在执行体中实现的。这正符合“机制与策略分离”的原则。线程调度由微内核完成,而线程和进程的创建、各种管理属性的设置由执行体来完成。

Windows内核除了接受来自应用程序的系统调用服务,自己也有一些线程用于各种用途,这些线程运行在一个特殊环境中,称为System进程。System进程的线程称为系统线程,其中有一组系统辅助线程(system worker thread)代表了操作系统或其它应用进程来完成一些特殊工作。

设备驱动程序或执行体可以在调用者进程中创建线程,也可以在System进程中创建线程。或者,也可以不创建任何线程,而是调用执行体函数ExQueueWorkItem或I/O管理器函数IoQueueWorkItem向系统辅助线程请求得到它们的服务。这两个函数负责把一个工作项目(WorkItem)放到一个队列中,而系统辅助线程从此队列提取工作项目并执行工作项目中指定的一个例程。因此,工作项目中的例程是在System进程的环境中执行的。

系统辅助线程实际是个线程池,Windows系统初始化时创建了一定数量的辅助线程而且随着辅助线程的负载变化,执行体也会动态创建一些辅助线程。

几个重要系统进程:

·系统空闲进程(Idle),PID为0,每个处理器或核对应一个线程

·System进程,PID为4,包含了内核模式系统线程。系统辅助线程,以及执行体和驱动程序通过PsCreateSystemThread创建的线程都在System进程中

·会话管理器(Session manager, smss.exe)是Windows系统中第一个创建的用户模式进程。它在Windows启动过程中承担了一些重要步骤,创建环境变量,启动子系统进程csrss.exe和登录进程winlogon.exe等。

·登录进程(winlogon.exe)。处理交互用户的登录和注销。

·Windows子系统进程(csrss.exe)。

·本地安全权威子系统进程(lsass.exe)。负责本地系统安全策略

·Shell进程(explorer.exe)。Windows的默认Shell(图形界面Shell,提供比如菜单、任务栏、资源管理器窗口等)

·服务控制管理器(services.exe)。管理系统服务