Windows Internals 6th chap2

Page 33 扩展性 -- wdm支持过去,现在,将来的设备

移植性 -- 支持各种架构,x86/x64/arm。 HAL

可靠性,鲁棒性 -- 安全设施

兼容性 -- 历史包袱

性能 -- ETW。xperf!

Page 34 用户程序和操作系统运行于不同的特权级别。操作系统和驱动的代码均处于kernelmode,可以访问任意资源, mitigation: patch guard & kmcs

Page 37 Windows可以运行于x86/x64/arm/mips/alpha axp/powerpc

Page 38 可移植的主要原因有二:1)层次化设计,处理器架构和平台相关部分被封装与某些独立的模块中。处理器相关部分(线程上下文切换,陷阱分发)被封装于ntoskrnl.exe。平台相关部分被封装于HAL。2)大部分为C代码

Page 43 客户端和服务器版本的core files是相同的,区别是服务器版本针对吞吐量,而客户端针对响应时间分别做了优化。

Page 45 可以替换正式发行版中的ntoskrnl和hal为checked-build,从而充分利用checked build内置的各项严格检查。详细步骤:http://msdn.microsoft.com/en-us/library/windows/hardware/ff547188%28v=vs.85%29.aspx

Page 57 两种内核对象 1) control objects: DPC, APC, Interrupt etc. 2) dispatcher objects 主要用于同步,比如File,Process,Thread,Mutex,Timer etc.

Page 63 驱动代码主要运行于三种上下文:

1) 发起i/o操作的用户线程上下文

2)系统线程上下文

3)中断上下文(任意上下文,取决于中断发生时的当前进程/线程)

Page 70 系统线程默认属于system进程,但驱动程序可以在任意进程中创建系统线程,比如win32k在csrss中创建系统线程,这样可以直接访问csrss用户态地址空间的数据

Page 72 session manager (smss.exe) --第一个真正的用户态进程

主smss.exe的主要工作:1)创建全局环境变量 2)创建设备符号链接 3)运行boot execute程序 4) 执行pendingfilerenameoperations 以上操作所需信息都在ccscontrolsession manager键下

5)初始化paging file 6)初始化HKLMSoftware, SAM, and Security hives 7) 打开knowndlls并把它们map为section

8)创建smss去初始化session 0 9)创建smss去初始化session 1 10)等待session 0 csrss直到关机

session instance of smss.exe的工作:

1)创建session wide数据

2)创建csrss.exe

3)创建winlogon(交互式session)或者wininit (session 0)

4) 退出

Page 74 wininit运行SCM,运行Lsass,运行Lsm

Page 77 WinLogon 通过LogonUI去得到credentials,然后送Lsass做认证,Lsass通过Srm得到Token, UAC enabled会另外创建restricted token。然后运行userinit, userinit会运行logon脚本和应用group policy,然后运行shell (explorer.exe)

原文地址:https://www.cnblogs.com/littledot/p/3452347.html