深入研究Windows系统架构和内部构件,并了解核心组件在幕后的工作原理。这本指南由微软内部专家团队撰写,针对Windows 10和Windows Server 2016进行了全面更新。无论你是一名开发人员还是IT专业人士,都可以学到关于Windows如何运作的关键的内部观点。通过亲身实践,你将体验到Windows操作系统的内部行为获取可用于改进应用程序设计、调试、系统性能和支持的知识。 本书将帮助读者: ● 了解Windows系统架构及其zui重要的实体,例如进程和线程; ● 了解进程如何管理资源以及在进程执行中如何调度线程; ● 观察Windows如何管理虚拟和物理内存; ● 深入了解Windows IO系统,了解设备驱动程序如何工作并与系统的其余部分整合在一起; ● 学习Windows安全模型,了解它如何管理访问、审核和shou权,并了解Windows 10和Windows Server 2016中的新机制。
內容簡介:
从Windows 8开始,微软开始了一个将操作系统融合的过程。而在Windows 10中,这个融合已经趋于完美,它运行在台式计算机笔记本电脑、服务器、XBOX One、手机(Windows Mobile 10)、HoloLens和各种物联网设备上。本书作为深度解析Windows操作系统这一系列的第7版(第1部分即卷1),其内容则涵盖了Windows从Windows 8到Windows 10演变过程中的各个方面。 本书介绍了Windows 10和Windows Sever 2016的架构与核心内部结构。通过本书,读者可以了解Windows系统架构及其一般组件,掌握如何使用诸如内核调试器之类的工具来探索内部数据结构,也可以了解Windows如何使用流程进行管理和隔离,理解和查看线程调度以及如何管理CPU资源,还可以深入理解Windows安全模型,包括在安全措施方面的*进展,并了解Windows如何管理虚拟和物理内存,以及输入输出系统如何管理物理设备和设备驱动程序。具体分为以下7个部分:概念和工具、系统架构、进程和作业、线程、内存管理、IO系统和安全。 本书内容丰富、信息全面,适合广大Windows平台开发人员、系统管理员及Windows爱好者阅读。
關於作者:
帕维尔尤西夫维奇(Pavel Yosifovich)是一位专注于Microsoft技术和工具的开发人员、培训师和作者。他是Microsoft的MVP和Pluralsight的作者。 亚历克斯约内斯库(Alex Ionescu)是CrowdStrike公司EDR战略副总裁,同时也是国际公认的低级别系统软件、操作系统研究和内核开发、安全培训和逆向工程方面的专家。 马克拉希诺维奇(Mark Russinovich)是微软全球企业级云平台Azure的首席技术官,也是分布式系统和操作系统领域公认的专家。他是Winternal软件公司的联合创始人,也是Sysinternals工具和网站的主要作者。 大卫所罗门(David Solomon)给世界各地的开发者和IT专业人士教授Windows内核的内部原理已有20年。他参与了本书每个版本的写作。大卫是1993年和2005年Microsoft Support Most Valuable Professional(MVP)奖的获得者。
目錄:
Introduction引言i
1 Concepts and tools第 1章 概念和工具1
1.1 Windows operating system versionsWindows操作系统版本1
1.1.1 Windows 10 and future Windows versions
Windows 10和后续Windows版本3
1.1.2 Windows 10 and OneCoreWindows 10和Windows系统核心3
1.2 Foundation concepts and terms基本概念和术语4
1.2.1 Windows APIWindows API4
1.2.2 Services, functions, and routines服务、功能和例行程序7
1.2.3 Processes进程8
1.2.4 Threads线程18
1.2.5 Jobs作业20
1.2.6 Virtual memory虚拟内存21
1.2.7 Kernel mode vs. user mode内核模式vs用户模式23
1.2.8 Hypervisor虚拟机管理程序27
1.2.9 Firmware固件版本29
1.3.0 Terminal Services and multiple sessions终端服务和多会话29
1.3.1 Objects and handles对象和处理30
1.3.2 Security安全31
1.3.3 Registry注册表32
1.3.4 UnicodeUnicode编码33
1.3 Digging into Windows internals深入挖掘Windows内部35
1.3.1 Performance Monitor and Resource Monitor
性能监控和资源监控36
1.3.2 Kernel debugging内核调试38
1.3.3 Windows Software Development KitWindows SDK43
1.3.4 Windows Driver KitWindows驱动套件43
1.3.5 Sysinternals tools五大利器44
1.4 结论44
2 System architecture第 2章 系统架构45
2.1 Requirements and design goals需求和设计目标45
2.2 Operating system model操作系统模型46
2.3 Architecture overview架构概述47
2.3.1 Portability可移植性50
2.3.2 Symmetric multiprocessing对称多处理51
2.3.3Scalability可扩展性53
2.3.4 Differences between client and server versions
客户端和服务端版本的差异54
2.3.5 Checked build已验证版本57
2.4 Virtualization-based security architecture overview
基于虚拟化技术的安全架构概述59
2.5 Key system components核心系统组件61
2.5.1 Environment subsystems and subsystem DLLs
环境子系统和子系统DLL62
2.5.2 Other subsystems其他子系统68
2.5.3 Executive执行性72
2.5.4 Kernel内核75
2.5.5 Hardware abstraction layer硬件抽象层79
2.5.6 Device drivers设备驱动82
2.5.7 System processes系统进程88
2.6 Conclusion结论99
3Processes and jobs第3章 进程和作业101
3.1 Creating a process创建一个进程101
3.1.1CreateProcess* functions argumentsCreateProcess*函数参数102
3.1.2Creating Windows modern processes创建Windows进程103
3.1.3Creating other kinds of processes创建其他类型线程104
3.2Process internals进程核心105
3.3Protected processes受保护的进程113
3.3.1Protected Process Light PPLPPL115
3.3.2Third-party PPL support第三方PPL支持119
3.4Minimal and Pico processes最小进程和微进程120
3.4.1Minimal processes最小进程120
3.4.2Pico processes微进程121
3.5Trustlets secure processesTrustlets(安全进程)123
3.5.1Trustlet structureTrustlet结构123
3.5.2Trustlet policy metadataTrustlet策略元数据124
3.5.3Trustlet attributesTrustlet属性125
3.5.4System built-in Trustlets系统内置Trustlets125
3.5.5Trustlet identityTrustlet标识126
3.5.6Isolated user-mode services隔离的用户模式服务127
3.5.7Trustlet-accessible system callsTrustlet可访问的系统调用128
3.6Flow of CreateProcess创建进程流程129
3.6.1Stage 1: Converting and validating parameters andflags
阶段1:转换并验证参数和标记131
3.6.2Stage 2: Opening the image to be executed
阶段2:打开要执行的镜像135
3.6.3Stage 3: Creating the Windows executive process object
阶段3:创建Windows可执行进程对象138
3.6.4Stage 4: Creating the initial thread and its stack and context
阶段4:创建初始线程以及它的堆栈和上下文144
3.6.5Stage 5: Performing Windows subsystem?Cspecific initialization
阶段5:执行Windows子系统的特殊初始化146
3.6.6Stage 6: Starting execution of the initial thread
阶段6:开始执行初始线程148
3.6.7Stage 7: Performing process initialization in the context of the new process
阶段7:在新进程中的上下文执行进程初始化148
3.7Terminating a process终止一个进程154
3.8Image loader镜像加载器155
3.8.1Early process initialization早期进程初始化157
3.8.2DLL name resolution and redirectionDLL名称解析和重定向160
3.8.3Loaded module database已加载组件的数据库164
3.8.4Import parsing导入解析168
3.8.5Post-import process initialization后导入进程初始化170
3.8.6SwitchBackSwitchBack171
3.8.7API SetsAPI集173
3.9Jobs作业176
3.9.1Job limits作业限制177
3.9.2Working with a job处理一个作业178
3.9.3Nested jobs嵌套作业179
3.9.4Windows containers server silos
Windows容器(服务器仓库)183
3.10Conclusion结论191
4Threads第4章 线程193
4.1Creating threads创建线程193
4.2Thread internals线程内部194
4.2.1Data structures数据结构194
4.2.2Birth of a thread线程的产生206
4.3Examining thread activity检查线程活性207
4.3.1Limitations on protected process threads
受保护进程中线程的限制212
4.4Thread scheduling线程调度214
4.4.1Overview of Windows schedulingWindows调度概述214
4.4.2Priority levels优先级等级215
4.4.3Thread states线程状态223
4.4.4Dispatcher database调度数据库228
4.4.5Quantum量子231
4.4.6Priority boosts提高优先级238
4.4.7Context switching上下文切换255
4.4.8Scheduling scenarios调度场景256
4.4.9Idle threads空闲线程260
4.4.10Thread suspension线程挂起264
4.4.11Deep freeze(深度)冻结264
4.4.12Thread selection线程选择266
4.4.13Multiprocessor systems多处理器系统268
4.4.14Thread selection on multiprocessor systems
多处理器系统的线程选择283
4.4.15Processor selection处理器选择284
4.4.16Heterogeneous scheduling big.LITTLE
多重调度(big.LITTLE)286
4.5Group-based scheduling基于组的调度287
4.5.1Dynamic fair share scheduling动态公平共享调度289
4.5.2CPU rate limitsCPU速率限制292
4.5.3Dynamic processor addition and replacement
动态处理器添加和替换295
4.6Worker factories thread pools工人工厂(线程池)297
4.6.1Worker factory creation创建工人工厂298
4.7Conclusion结论300
5Memory management第5章 内存管理301
5.1Introduction to the memory manager内存管理介绍301
5.1.1Memory manager components内存管理组件302
5.1.2Large and small pages大小页面303
5.1.3Examining memory usage检查内存使用305
5.1.4Internal synchronization内部同步308
5.2Services provided by the memory manager内存管理提供的服务309
5.2.1Page states and memory allocations页面状态和内存分配310
5.2.2Commit charge and commit limit提交调度和提交限制313
5.2.3Locking memory锁定内存314
5.2.4Allocation granularity分配粒度314
5.2.5Shared memory and mapped files共享内存和映射文件315
5.2.6Protecting memory内存保护317
5.2.7Data Execution Prevention数据执行保护319
5.2.8Copy-on-write写时复制321
5.2.9Address Windowing Extensions地址窗口化扩展232
5.3Kernel-mode heaps system memory pools内核模式堆(系统内存池)324
5.3.1Pool sizes池大小325
5.3.2Monitoring pool usage监控池的使用327
5.3.3Look-aside lists旁观列表331
5.4Heap manager堆管理332
5.4.1Process heaps堆进程333
5.4.2Heap types堆类型334
5.4.3The NT heapNT堆334
5.4.4Heap synchronization堆同步334
5.4.5The low-fragmentation heap低碎片堆335
5.4.6The segment heap分段堆336
5.4.7Heap security features堆安全功能341
5.4.8Heap debugging features堆调试功能342
5.4.9Pageheap页面堆343
5.4.10Fault-tolerant heap容错堆347
5.5Virtual address space layouts虚拟地址空间布局348
5.5.1x86 address space layoutsX86地址空间布局349
5.5.2x86 system address space layoutX86系统地址空间布局352
5.5.3x86 session spaceX86会话空间353
5.5.4System page table entries系统页面表条目355
5.5.5ARM address space layoutARM地址空间布局356
5.5.664-bit address space layout64bit地址空间布局357
5.5.7x64 virtual addressing limitations64虚拟地址限制359
5.5.8Dynamic system virtual address space management
动态系统虚拟地址空间管理359
5.5.9System virtual address space quotas系统虚拟地址空间配额364
5.5.10User address space layout用户地址空间布局365
5.6Address translation地址转化371
5.6.1x86 virtual address translationX86虚拟地址转化371
5.6.2Translation look-aside buffer旁观缓冲转化377
5.6.3x64 virtual address translationX64虚拟地址转化380
5.6.4ARM virtual address translationARM虚拟地址转化381
5.7Page fault handling页面错误处理383
5.7.1Invalid PTEs非法PTE384
5.7.2Prototype PTEs原型PTE385
5.7.3In-paging IO页面内IO386
5.7.4Collided page faults页面错误冲突387
5.7.5Clustered page faults页面错误聚集387
5.7.6Page files页面文件389
5.7.7Commit charge and the system commit limit
提交调度和系统提交限制394
5.7.8Commit charge and page file size提交调度和页面文件大小397
5.8Stacks栈398
5.8.1User stacks用户栈399
5.8.2Kernel stacks内核栈400
5.8.3DPC stackDPC栈401
5.9Virtual address descriptors虚拟地址描述符401
5.9.1Process VADsVAD进程402
5.9.2Rotate VADsVAD轮询403
5.10NUMANUMA404
5.11Section objects段对象405
5.12Working sets工作集412
5.12.1Demand paging分页需求413
5.12.2Logical prefetcher and ReadyBoot逻辑预取和启动准备413
5.12.3Placement policy安置策略416
5.12.4Working set management工作集管理417
5.12.5Balance set manager and swapper平衡集合管理器和置换器421
5.12.6System working sets系统工作集422
5.12.7Memory notification events内存提醒事件423
5.13Page frame number database页面框架序号数据库425
5.13.1Page list dynamics页面动态列表428
5.13.2Page priority页面优先级436
5.13.3Modified page writer and mapped page writer
修改和映射页面写入438
5.13.4PFN data structuresPFN数据结构440
5.13.5Page file reservation页面文件预定443
5.14Physical memory limits物理内存限制446
5.14.1Windows client memory limitsWindows客户端内存限制447
5.15Memory compression内存压缩449
5.15.1Compression illustration压缩图表450
5.15.2Compression architecture压缩架构453
5.16Memory partitions内存分割456
5.17Memory combining内存联合459
5.17.1The search phase寻找阶段460
5.17.2The classifi cation phase分类阶段461
5.17.3The page combining phase页面联合阶段462
5.17.4From private to shared PTE从私有PTE到共享PTE462
5.17.5Combined pages release联合页面释放464
5.18Memory enclaves内存区467
5.18.1Programmatic interface编程接口468
5.18.2Memory enclave initializations内存区初始化469
5.18.3Enclave construction区结构469
5.18.4Loading data into an enclave将数据加载到区471
5.18.5Initializing an enclave初始化一个区472
5.19Proactive memory management SuperFetch
主动内存管理(SuperFetch)472
5.19.1Components组件473
5.19.2Tracing and logging跟踪和记录474
5.19.3Scenarios场景475
5.19.4Page priority and rebalancing页面优先级和平衡调整476
5.19.5Robust performance鲁棒性能478
5.19.6ReadyBoost启动准备479
5.19.7ReadyDrive驱动准备480
5.19.8Process refl ection进程反射480
5.20Conclusion结论482
6IO system第6章 IO系统483
6.1IO system componentsIO系统组件483
6.1.1The IO manager IO管理器485
6.1.2Typical IO processing典型IO过程486
6.2Interrupt Request Levels and Deferred Procedure Calls
中断请求级别和延迟过程唤醒488
6.2.1Interrupt Request Levels中断请求级别488
6.2.2Deferred Procedure Calls延迟过程唤醒490
6.3Device drivers设备驱动492
6.3.1Types of device drivers设备驱动类型492
6.3.2Structure of a driver驱动结构498
6.3.3Driver objects and device objects驱动对象和设备对象500
6.3.4Opening devices设备打开507
6.4IO processingIO过程510
6.4.1Types of IOIO的种类511
6.4.2IO request packetsIO请求包513
6.4.3IO request to a single-layered hardware-based driver
基于单层硬件驱动的IO请求525
6.4.4IO requests to layered drivers分层驱动IO请求533
6.4.5Thread-agnostic IO未知线程IO536
6.4.6IO cancellation取消IO537
6.4.7IO completion portsIO完成端口541
6.4.8IO prioritizationIO优先级546
6.4.9Container notifications容器提醒552
6.5Driver Verifier驱动验证552
6.5.1IO-related verification optionsIO相关验证选项554
6.5.2Memory-related verification options内存相关验证选项555
6.6The Plug and Play manager即插即用管理器559
6.6.1Level of Plug and Play support即插即用支持级别560
6.6.2Device enumeration设备枚举561
6.6.3Device stacks设备栈563
6.6.4Driver support for Plug and Play支持即插即用的设备569
6.65Plug-and-play driver installation即插即用驱动安装571
6.7General driver loading and installation一般驱动的加载和安装575
6.7.1Driver loading驱动加载575
6.7.2Driver installation驱动安装577
6.8The Windows Driver FoundationWindows驱动基础578
6.8.1Kernel-Mode Driver Framework内核模式驱动框架579
6.8.2User-Mode Driver Framework用户模式驱动框架587
6.9The power manager电源管理590
6.9.1Connected Standby and Modern Standby连接待机和新版待机594
6.9.2Power manager operation电源管理操作595
6.9.3Driver power operation驱动电源操作596
6.9.4Driver and application control of device power
驱动和设备电源的应用程序控制599
6.9.5Power management framework电源管理框架600
6.9.6Power availability requests电源可用性请求602
6.10Conclusion结论603
7Security第7章 安全605
7.1Security ratings安全评级605
7.1.1Trusted Computer System Evaluation Criteria
可信计算基系统评估标准605
7.1.2The Common Criteria普遍标准607
7.2Security system components安全系统组件608
7.3Virtualization-based security基于虚拟化的安全611
7.3.1Credential Guard证书防护612
7.3.2Device Guard设备防护617
7.4Protecting objects保护对象619
7.4.1Access checks访问验证621
7.4.2Security identifiers安全标识625
7.4.3Virtual service accounts虚拟服务账户646
7.4.4Security descriptors and access control安全描述符和访问控制650
7.4.5Dynamic Access Control动态访问控制666
7.5The AuthZ APIAuthZ API666
7.5.1Conditional ACEs条件响应ACE667
7.6Account rights and privileges账户权限和特权668
7.6.1Account rights账户权限669
7.6.2Privileges特权670
7.6.3Super privileges超级特权675
7.7Access tokens of processes and threads进程和线程的账户口令677
7.8Security auditing安全审计677
7.8.1Object access auditing对象访问审计679
7.8.2Global audit policy全局审计策略682
7.8.3Advanced Audit Policy settings高级审计策略设置683
7.9AppContainers应用容器684
7.9.1Overview of UWP appsUWP应用概述685
7.9.2The AppContainer应用容器687
7.10Logon登录710
7.10.1Winlogon initializationWinlogon初始化711
7.10.2User logon steps用户登录步骤713
7.10.3Assured authentication确信的认证718
7.10.4Windows Biometric FrameworkWindows生物识别验证719
7.10.5Windows HelloWindows你好721
7.11User Account Control and virtualization用户账户控制和虚拟化722
7.11.1File system and registry virtualization
文件系统和注册表虚拟化722
7.11.2Elevation提升729
7.12Exploit mitigations攻击缓解735
7.12.1Process-mitigation policies进程缓解策略735
7.12.2Control Flow Integrity控制流完整性740
7.12.3Security assertions安全断言752
7.13Application Identifi cation应用程序标识756
7.14AppLocker应用锁757
7.15Software Restriction Policies软件限制策略762
7.16Kernel Patch Protection内核补丁保护764
7.17PatchGuard补丁防护765
7.18HyperGuard高度防护768
7.19Conclusion结论770