Windows Session
序
一个系统可以同时登录多个用户(包括远程用户登录)
一个用户拥有一个会话(远程用户被称为远程会话)
一个会话拥有多个工作站和窗口。只能拥有一个交互式工作站(Winsta0)。
一个会话拥有一系列私有的进程和模块:Csrss.exe、WinLogin.exe、win32k.sys
一个会话拥有一个私有对象名字空间(\BaseNamedObjects),私有对象名字空间中的内核对象不能被其他会话访问。
一个交互式工作站最少拥有三个桌面:默认桌面、登陆桌面、屏保桌面
一个非交互式工作站最少拥有一个桌面
一个桌面拥有0-N个窗口(非交互式工作站中的桌面可以没有窗口)
一个与用户交互的桌面拥有一个Explorer.exe进程
窗口必须与一个桌面绑定
窗口之间不能跨桌面访问
用户登录到Windows系统之后,不管该用户是本地登陆还是远程登录,系统都会为这个用户分配一个新的会话ID(SID)。也就是说会话与用户的登录是相关联的。
会话
会话(session)是由进程和其他的系统对象(比如窗口站、桌面和窗口)构成的,他们代表了一个用户的工作站登录会话。
Windows系统是支持多会话的,因此会话空间(session space)包含了依稀而针对每个会话的全局信息。==》会话空间是用来管理会话的。
会话的组成
- 每个会话包含一个单独的win32k.sys
- 专门的换页池区域
- 私有wijndows子系统和登录进程的拷贝
- 系统空间中被映射的空间,被称为会话空间的区域
会话管理器
会话管理器(smss.exe)是系统中第一个创建的用户态模式进程,负责完成执行体和内核的初始化工作的内核模式系统现在最后阶段创建了实际的smss进程。
Windows会话过程
- 内核模式的系统线程初始化Windows执行体和内核,最后阶段创建实际的Smss进程。
- 在启动Windows的过程中,会话管理器负责许多重要的步骤,比如打开额外的页面文件、执行延迟的文件改名和删除操作(重启后删除或重启后重命名)、创建系统环境变量;它也将子系统进程(csrss.exe)he winlogon.exe进程启动起来,winlogon进程一次会创建其他的系统进程。
smss的初始化相关步骤在注册表中配置,对应注册表中的路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager。如下图: