内容简介
本书围绕着现代操作系统代表Windows的设计与实现展开,内容涵盖了windows系统综述、进线程管理,内存管理、硬件与驱动以及其它一些相关内容,分为五章,34篇文章,每篇文章独立成章又相互有所关联,整体上在基本包含了内核设计与实现的主要内容,同时每篇文章重点突出1-2个系统机制实现的思想。系统综述重点阐述的是Windows一些有代表性的实现机制,如对象管理器、注册表机制、消息机制等,令读者在最开始有一个整体的认识,这部分内容避开在最开始就抛出N多概念令读者望而生畏的方式,而是尽量使用生活中的例子进行对比或者图表的方式使得读者能够有个逐步熟悉的过程;进线程管理部分讲解了进线程的基本概念以及调度的思想,同时介绍了DPC(延迟过程调用)和APC(异步过程调用)等内容;内存管理重点厘清了实模式与保护模式的区别,深入浅出的讲解了内存寻址机制,用户空间与内核空间的管理,以及物理页面的管理方法,特意利用一章说明了页目录自映射实现的缘由与思想;硬件驱动结合计算机的硬件知识(本人曾从事过多年的嵌入式系统开发),由底层到上层的讲解了windows中的驱动,即插即用机制,同时介绍了NTFS文件系统以及文件缓存管理器机制。最后一章讲解了一些读者会比较感兴趣的内容,如windows的溢出攻击,windows的调试机制,smss会话管理器等内容。
目录
- 第1章Windows内核系统综述
- 1.1一个清晰简洁的Windows内核框架
- 1.2 Windows的基础性机制——对象与句柄
- 1.3意外的保险机制——异常处理
- 1.4幕后英雄——服务机制
- 1.5窗口显示机制的灵媒——消息机制
- 1.6 Windows中的hook船长——消息钩子机制
- 1.7 Windows的独门秘术——注册表机制
- 1.8 Windows中的穿墙之术——系统调用
- 第2章内存管理相关
- 2.1 寻址那些事儿——保护模式下的寻址机制
- 2.2双重角色的扮演——页目录自映射
- 2.3跨界是怎样实现的——跨进程操作
- 2.4大粒度的内存管理——系统地址空间的页面管理
- 2.5一棵树的故事——用户地址空间的内存管理
- 2.6小粒度的内存管理——内存池管理
- 2.7 自助管理的范例——系统PTE的使用
- 2.8 Windows中共享内存的奥秘
- 2.9物理内存的直接管理者——物理页面的管理
- 第3章进线程管理相关
- 3.1 进线程初体验——进程和线程
- 3.2忙而不乱——线程的调度与切换
- 3.3 Windows中一个进程的诞生
- 3.4 如何向CPU投递一段代码——延迟过程调用(DPC)
- 3.5 如何向线程投递一段代码——异步过程调用(APC)
- 3.6 Windows中的红绿灯——同步机制
- 3.7代码共享的实践者——DLL文件的加载
- 第4章硬件与驱动
- 4.1 硬件机制的两个核心对象——驱动对象与设备对象
- 4.2 IRP的初级穿越——单层驱动调用
- 4.3 IRP的高级穿越——多层驱动调用
- 4.4数据传递的助力者——MDL机制
- 4.5复制、粘贴、剪切的背后——NTFS文件系统
- 4.6提高文件系统效率的机制——文件缓存
- 第5章四个趣味专题
- 5.1 几十万元奖金的背后——缓冲区溢出入门
- 5.2抓虫子(debug)的背后——调试机制
- 5.3两个怪进程——进程SMSS与CSRSS
- 5.4原子操作的范例——无锁单链表实现
- 参考文献
Windows内核实现的34个关键问题 精彩文摘
从创立到现在,微软公司一直坚持“以问题为导向,以解决实际问题为抓手”的原则,取得了几十年的持续发展,并一直保持着操作系统界的垄断地位。对于操作系统,大家并不陌生,但操作系统是如何实现的,却不是每个人都清楚,尤其是Windows这种非开源的操作系统,虽然被如此广泛地应用,也是经过几十年来无数的大牛对其进行逆向分析,以及伴随着微软公司逐步地开放老一些版本的源代码,人们才得以对Windows内核的实现有了较为全面的了解。
既然Windows是一种操作系统,那么其解决的问题自然也脱离不开操作系统的那些经典内容,如进线程管理、内存管理、硬件管理、同步等经典问题,同时Windows在具体实现上,也有与其他操作系统不同之处,如使用了对象管理器作为系统各组件的基础机制,独有的注册表机制储存了各种系统和用户数据,使用了多种手段来保证用户使用的便捷性、舒适性等。