Windows操作系统架构
作者:网络转载 发布时间:[ 2014/6/16 13:44:43 ] 推荐标签:Windows 操作系统
Kernel
Kernel里面实现的是操作系统基本的功能,比如线程调度和同步等等。
Kernel的代码是平台相关的,用来处理与平台相关的一些功能,比如中断和异常分发。
Kernel也会通过WDK接口向驱动导出一些函数,比如Ke[XXXX]
kernel与executive的区别在于,kernel几乎不做任何决策,只是提供基础的支持功能。
kernel自己做决策的是线程的调度与分发。
kernel objects
kernel提供的object是基本的对象,方便进行创建和管理。
而executive用到的objects大都是特化的object,里面包含不同的overhead,因此往往一个executive object,包含几个的kernel objects.
kernel objects分为几类:
1. Control Objects
APC objects, DPC objects, Interrupt objects
2. Dispatcher Objects
kernel thread, mutex, event, kernel event pair, semaphore, timer, waitable timer
Kernel Processor Control Region(KPCR)
用来保存与processor相关的信息,也可以理解为与平台相关的信息。
比如:
Interrupt Dispatcher Table(IDT)
Task-State Segment(TSS)
Global Descriptor Table(GDT)
在32位Windows操作系统中,fs:[0]可以索引到KPCR;
在x64 Windows操作系统中, gs:[0]可以索引到KPCR;
在IA64 Windows操作系统中, 0xE0000000FFFF0000可以索引到KPCR;
在KPCR中有一个内嵌的结构体叫KPRCB(Kernel Processor Control Block)
里面保存的是不公开的内容,主要是与Processor相关的信息,比如Nonpaged pool和paged pool的lookaside list保存在KPRCB中。
HAL
Device Driver
System Processes
系统进程
1. Idle Processes
Idle 和 System是两个比较特殊的进程,因为这们不是完整意义的进程,没有实际的映像文件。
Idle Process是0号进程。
2. Interrupts and DPCs
这两个不是进程,而是中断发生时,内核提供的异步处理机制。
但是这两种全程会消耗CPU,因此为了提供更多的关于CPU使用情况的细节,许多系统监视器都会将二者列出来。
3. System Process and System Threads
4号进程。
提供了一个供内核线程运行的进程空间,但是注意,这个进程只包含内核地址空间,而不包含用户地址空间。
内核和驱动可以调用PsCreateSystemThread来创建System Thread,通常只在需要Thread Context的情况下才会创建System Thread,比如
ISR和DPC不是System Thread。
4. Session Manager (Smss.exe)
负责初始化后阶段的内核态进程创建了smss.exe这个进程,这是用户态的第一个进程。
Session Manager还有很多特殊的任务,比如完成delayed rename/delete file operation。
Session Manager会创建Subsystem server processes(csrss.exe),csrss.exe进程会创建剩余的system processes。
对于Session 0,smss.exe会创建wininit.exe进程,除此之外,smss.exe会为每个session创建一个Winlogon.exe进程。
5. Winlogon, LogonUI, LSASS和Userinit
SAS(Control + Alt + Delete), Secure Attention Sequence,是用来保证用户会调用到正确的Winlogon进程,因为这三个键的组合是不允许在用户态被拦截的。
Winlogon进程会在需要的情况下,创建LogonUI,用来提供用户登陆界面。
LSASS服务进程会提供认证的功能,认证成功后,lsass会创建一个access token,对于UAC情况下,对于拥有管理员权限的用户,还会创建一个权限受限的access token,并且让用户在正常情况下使用这个受限的access token。
6. Service Control Manager (SCM)
services,也是用户态的无界面进程,和Linux的Daemon Process一样。
service进程通常不与logon user产生任何互动。
services也是正常的进程,只是它们的生命周期是通过特殊的API与SCM通信来控制的。
services可以拥有自己的执行映像,比如lsass.exe,也可以只提供一个dll,而借用通用的svchost.exe来启动进程。

sales@spasvo.com