Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows
操作系统原理
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
os.cs.tsinghua.edu.cn
os.pku.edu.cn
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
本书结构
全书共九章,含盖了操作系统原理课程的全部理论内容以及 Windows 2000/XP
操作系统构成的各个方面
九章的内容依次是:
– 第 1章 操作系统概述
– 第 2章 Windows 2000 / XP 的体系结构
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
– 第 3章 进程管理
– 第 4章 存储管理
– 第 5章 文件系统
– 第 6章 I/O系统
– 第 7章 网络
– 第 8章 应用程序设计
– 第 9章 驱动程序设计
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
章节结构
一般性原理+ Windows 2000/XP原理
– 一般性原理占全章篇幅的 1/3~ 1/2
– Windows 2000/XP作为与原理映照的实例约占 1/2~ 2/3篇幅
每章配有习题或思考题若干,可配合教学使用
实习
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的体系结构
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
本章要点
操作系统的设计目标
操作系统的设计阶段
几种常见的操作系统体系结构范型
Windows 2000/XP的操作系统模型
Windows 2000/XP的体系结构
– Windows 2000/XP的重要组成部分
– Windows 2000/XP的系统机制
Windows 2000/XP注册表、服务控制与管理机制
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
操作系统的设计问题
操作系统设计有着不同于一般应用系统设计的特征:
– 复杂程度高
– 研制周期长
– 正确性难以保证
解决途径:
– 良好的操作系统结构
– 先进的开发方法和工程化的管理方法
– 高效的开发工具
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
操作系统的设计目标
可靠性:正确性和健壮性
高效性:提高系统的运行效率
易维护性:易读、易扩充、易剪裁、易修改性
易移植性:一次开发,多处使用
安全性:计算机软件系统安全性的基础
可适应性
简明性
%100
smsuu
suu TTT TT?
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的设计目标
总原则:市场需求 驱动 设计目标
需求:
– 提供一个真 32位抢占式可重入的虚拟内存操作系统
– 能够在多种硬件体系结构和平台上运行
– 能够在对称多处理系统上运行并具有良好的可伸缩性
– 优秀的分布式计算平台,既可作为网络客户,又可作为网络服务器
– 可运行多数现有 16位 MS-DOS和 Microsoft Windows 3.1
应用程序
– 符合政府对符合 POSLX 1003.1的要求
– 符合政府和企业对操作系统安全性的要求
– 支持 Unicode,适应全球市场的需要
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的设计目标:
– 可扩充性
– 可移植性
– 可靠性及坚固性
– 兼容性
– 性能
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
操作系统的设计考虑
功能设计:操作系统应具备哪些功能
算法设计:选择和设计满足系统功能的算法和策略,并分析和估算其效能
结构设计:选择合适的操作系统结构
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
操作系统结构设计按照系统的功能和特性要求,选择合适的结构,使用相应的结构设计方法将系统逐步地分解、抽象和综合,使操作系统结构清晰、简单、可靠、易读、易修改,而且使用方便,适应性强
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
操作系统结构
程序结构
– 程序结构的两层含义
– 程序的结构良好的准则
软件结构
操作系统结构
– 重要性
– 解决什么问题,目标何在
– 困难在那里
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
几种常见的操作系统结构
模块组合结构模块组合结构的特点与适应性
– 模块间转接随便
– 数据基本上作为全程量处理
– 常常关中断,系统的并发性难以提高
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
层次结构
– 层次结构设计方法的核心思想
– 例如 E.W.Dijkstra的 THE系统:
1
2
3
4
5
处理器分配和多道程序内存和磁盘管理操作员-进程通信输入 /输出管理用户程序操作员
0
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
层次结构的特点
– 分解成许多功能单一的模块,各模块之间有清晰的组织结构和依赖关系
– 具有更高的可读性和可适应性
– 层次结构是单向依赖的,上层模块建立在下层基础上,设计了比较可靠的基础
– 很容易增加或替换掉一层而不影响其它层次
– 便于修改、扩充
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
层次结构的层间关系
全序
半序第 3层第 2层第 1层第 0层
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
进程分层结构
实现代价较大:
– 必须设立一个进程控制块,用以保留进程的状态信息,
增加了内存开销
– 进程之间的控制转移、状态保留及信息传送,均由核心去管理,时间消耗多,效率下降
– 系统并发活动过多,调度负担过重,且同步操作过于分散,易于造成死锁,影响了系统的安全性层次结构的两种类型核心
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
层次管程结构
– 进程:并发单位
– 类程:专用资源的抽象
– 管程:共享资源的抽象
– 一个动态的系统则由内核和一组有限个满足规定调用关系的进程 P、类程 C和管程 M构成。其中进程是系统中唯一能动的成分,管程和类程都是被动成分
– 存取图
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
优点
– 采用层次管程结构的系统结构清晰、统一
– 同步操作相对集中,系统安全性较高
– 用高级语言书写程序,研制周期短,通过编译技术获取更高的灵活性和效率
– 只用一种概念描述并发,减少了不必要的并行性,减少了系统开销。
缺点:
– 管程嵌套问题比较难于高效的解决
– 不便于管理多个资源和全局性资源
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
虚拟机结构
如 IBM大型机上的系列操作系统
基本思想:系统应该提供 1)多道程序能力 2)一个比裸机有更方便扩展界面的计算机 。但是二者的实现应该相互独立
优缺点
– 虚拟机概念可以实现完全保护
– 用软件从硬件逐层扩展
– 虚拟机方法把多道程序和扩充机器的功能完全分开了,使每一部分都简单、灵活,更易于维护。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
370裸机
VM/370
CMS CMS CMS
系统调用陷入
I/O指令陷入若干个 370虚拟机
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
微内核(客户 /服务器结构)
CMU的 Mach、早期的 Windows NT……
非常适宜于应用在网络环境下,应用于分布式处理的计算环境中
由下面两大部分组成,
–,微”内核
– 若干服务
主要特点:
– 机制与策略分离比较彻底
– 可靠
– 灵活
– 适合分布式计算的需求
– 缺点:效率较低
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
其它体系结构
外展式核心( Exokernels)
– 这种观点认为操作系统应该只负责在竞争的用户之间安全、有效的分配计算资源
– 传统操作系统的绝大部分功能应该在系统库中以可选的方式链接进用户程序
可扩展系统
– 可扩展系统认为应该将尽可能多的模块以一种受保护的方式放进核心当中。操作系统的构造者可以先构造从一个只包含稍微多余核心保护机制的一个最小核心。而其它的功能则通过不断的往核心中添加受保护的模块实现。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP系统模型
融合了分层操作系统和微内核操作系统的设计思想,使用面向对象的分析与设计,采用整体式的实现
Windows 2000/XP通过硬件机制实现了核心态以及用户态两个特权级别 。对性能影响很大的操作系统组件运行在核心态。核心内没有保护。
设计充分体现了机制与策略分离的思想
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的核心态组件使用了面向对象设计原则
出于可移植性以及效率因素的考虑,大部分代码使用了基于 C语言的对象实现。
Windows 2000/XP的很多系统服务运行在核心态,这使得 Windows 2000/XP更加高效,而且也是相当稳定的。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
系统支撑处理器系统支持进程 服务进程 用户程序 环境子系统子系统动态链接库用户态用户态核心态核心态硬件抽象层(HAL)
执行体核心 设备驱动程序图形引擎
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的构成
用户态组件
– 系统支持进程( system support process),不是
Windows 2000/XP服务,不由服务控制器启动。
– 服务进程( service process),Windows 2000/XP的服务。
– 环境子系统( enviroment subsystems),它们向应用程序提供操作系统功能调用接口包括,Win32、
POSIX和 OS/2 1.2。
– 应用程序( user applications),五种类型,Win32、
Windows 3.1,MS-DOS,POSIX 或 OS/2 1.2。
– 子系统动态链接库:调用层转换和映射
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
核心态组件
– 核心( kernel)包含了最低级的操作系统功能,例如线程调度、中断和异常调度、多处理器同步等。同时它也提供了执行体( Executive)用来实现高级结构的一组例程和基本对象。
– 执行体包含基本的操作系统服务,例如内存管理器、
进程和线程管理、安全控制,I/O以及进程间的通信。
– 硬件抽象层( HAL,Hardware Abstraction Layer)将内核、设备驱动程序以及执行体同硬件分隔开来,实现硬件映射。
– 设备驱动程序( Device Drivers)包括文件系统和硬件设备驱动程序等,其中硬件设备驱动程序将用户的 I/O
函数调用转换为对特定硬件设备的 I/O请求。
– 窗口和图形系统包含了实现图形用户界面( GUI,
Graphical User Interface)的基本函数。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
可移植性的获得
两种手段
– 分层的设计。依赖于处理器体系结构或平台的系统底层部分被隔离在单独的模块之中,系统的高层可以被屏蔽在千差万别的硬件平台之外。提供操作系统可移植性的两个关键组件是 HAL和内核。依赖于体系结构的功能在内核中实现,在相同体系结构中,因计算机而异的功能在 HAL中实现。
– Windows 2000/XP大量使用高级语言 —— 执行体、设备驱动程序等用 C语言编写,图形用户界面用 C++编写。只有那些必须和系统硬件直接通信的操作系统部分,或性能极度敏感的部分是用汇编语言编写的。汇编语言代码分布集中且少。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
对称多处理器支持
代码对处理器的可伸缩性好
IPC和锁机制完善
核心态组件代码可重入程度极高
多优先级占式调度,多数核心态组件代码都可以被抢占
设计抽象度高,SMP硬件设置对绝大多数组件不可见、也无需关心
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
系统支持进程 服务进程 应用程序环境子系统服务管理器本地安全验证服务
Windows登陆会话管理器任务管理器
Windows
浏览器用户级应用程序子系统动态链接库系统级线程用户态核心态系统级服务调度进程核心态可调用接口图形驱动程序
I/O设备管理器设备、文件系统驱动程序局部过程调用注册表配置管理器进程和线程虚拟存储器电源管理器即插即用设备管理器对象管理器文件系统缓存管理器系统核心硬件抽象层(HAL)
硬件接口
(总线、I/O设备驱动、中断、时钟间隔、直接内存存取(DMA)、存储器缓存控制器等等)
安全指向监视器
Windows 2000/XP的关键系统组件
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
内核
功能
– 线程安排和调度
– 陷阱处理和异常调度
– 中断处理和调度
– 多处理器同步
– 供执行体使用的基本内核对象
始终运行在核心态,代码精简,可移植性好。除了中断服务例程( ISR,
interrupt service routine),正在运行的线程不能抢先内核。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
内核对象
– 帮助控制、处理并支持执行体对象的操作,以降低系统策略代价
– 控制对象,这个对象集和包括内核进程对象、
异步过程调用( APC,asynchronous
procedure call)对象、延迟过程调用( DPC,
deferred procedure call)对象和几个由 I/O系统使用的对象,例如中断对象。
– 调度程序对象集合负责同步操作并影响线程调度。调度程序对象包括内核线程、互斥体
( Mutex)、事件( Event)、内核事件对、信号量( Semaphore)、定时器和可等待定时器
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
内核与硬件
– 使得执行体和设备驱动程序同硬件无关
– 实现手段:一组在多个体系结构上可移植、同语义的接口
– 内核也有部分代码不具有移植性
支持虚拟 8086模式的代码,用以运行一些古老的 16位 DOS程序
高速缓存管理
描述表切换
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
硬件抽象层( HAL)
实际硬件与 Windows 2000/XP抽象计算机描述的接口层和功能映射层
隐藏各种与硬件有关的细节,例如 I/O接口、中断控制器以及多处理器通信机制等
实现多种硬件平台上的可移植性
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
执行体
提供的功能性调用
– 从用户态导出并且可以调用的函数。这些函数的接口在 NTDLL.DLL中。通过 Win32API或一些其他的环境子系统可以对它们进行访问。
– 从用户态导出并且可以调用的函数,但当前通过任何文档化的子系统函数都不能使用。
– 在 Windows 2000 DDK中已经导出并且文档化的核心态调用的函数。
– 在核心态组件中调用但没有文档化的函数。例如在执行体内部使用的内部支持例程。
– 组件内部的函数。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
包含的功能实体
– 进程和线程管理器创建及中止进程和线程。对进程和线程的基本支持在 Windows 2000内核中实现,而执行体给这些低级对象添加附加语义和功能。
– 虚拟内存管理器实现“虚拟内存”。内存管理器也为高速缓存管理器提供基本的支持。
– 安全引用监视器在本地计算机上执行安全策略。它保护了操作系统资源,执行运行时对象的保护和监视。
– I/O系统执行独立于设备的输入 /输出,并为进一步处理调用适当的设备驱动程序。
– 高速缓存管理器通过将最近引用的磁盘数据驻留在主内存中来提高文件 I/O的性能,并且通过在把更新数据发送到磁盘之前将它们在内存中保持一个短的时间来延缓磁盘的写操作,这样就可以实现快速访问。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
– 对象管理:创建、管理以及删除 Windows 2000/XP的执行体对象和用于代表操作系统资源的抽象数据类型,
例如进程、线程和各种同步对象。
– 本地过程调用( LPC,Local Procedure Call)机制,
在同一台计算机上的客户进程和服务进程之间传递信息。 LPC是一个灵活的、经过优化的“远程过程调用”
( RPC,Remote Procedure Call)版本。
– 一组广泛的公用运行时函数,例如字符串处理、算术运算、数据类型转换和完全结构处理。
– 执行体支持例程,例如系统内存分配(页交换区和非页交换区)、互锁内存访问和两种特殊类型的同步对象:资源和快速互斥体。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
设备驱动程序
可加载的核心态模块
I/O系统和相关硬件之间的接口
使用 WDM以及加强的 WDM方式
分类
– 硬件设备驱动程序操作硬件。
– 文件系统驱动程序接受面向文件的 I/O请求,
并把它们转化为对特殊设备的 I/O请求。
– 过滤器驱动程序截取 I/O并在传递 I/O到下一层之前执行某些特定处理。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
环境子系统
将基本的执行体系统服务的某些子集以特定的形态展示给应用程序,函数调用不能在不同子系统之间混用,因此每一个可执行的映像都受限于唯一的子系统
三种环境子系统,POSIX,OS/2和
Win32( OS/2 只能用于 x86系统)
Win32子系统必须始终处于运行状态,其他两个子系统只是在需要时才被启动,
Win32子系统是 Windows 2000/XP运行的基本条件之一。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Win32子系统
– Win32环境子系统进程 CSRSS,包括对下列功能的支持:控制台(文本)窗口、创建及删除进程与线程、
支持 16位 DOS虚拟机( VDM)进程的部分。
– 核心态设备驱动程序( WIN32K.SYS)。
– 图形设备接口( GDI,Graphics Device Interfaces)
– 子系统动态链接库,它调用 NTOSKRNL.EXE和
WIN32.SYS将文档化的 Win32 API函数转化为适当的非文档化的核心系统服务。
– 图形设备驱动程序,包括依赖于硬件的图形显示驱动程序、打印机驱动程序和视频小型端口驱动程序。
– 其他混杂的函数,如几种自然语言支持函数。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
POSIX子系统
– 设计的强迫性目标
– 实现了 POSIX.1,功能局限,用处不大
– Windows XP实际上并不包含 POSIX子系统
– 今后产品的 POSIX/UNIX子系统将大大加强
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
NTDLL
主要用于子系统动态链接库的特殊系统支持库
功能
– 提供系统调用入口
– 为子系统、子系统动态链接库、及其他本机映像提供内部支持函数
– NTDLL也包含许多支持函数,例如映像加载程序、堆管理器和 Win32子系统进程通信函数以及通用运行库。
– 用户态异步过程调用( APC)调度器和异常调度器。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
系统支持进程
Idle进程
系统进程
会话管理器 SMSS
Win32子系统 CSRSS
登录进程 WINLOGIN
本地安全身份验证服务器 LSASS
服务控制器 SERVICES及其相关的服务进程
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的系统机制
陷阱调度,包括中断、延迟过程调用( DPC,
Deferred Procedure Call)、异步过程调用
( APC,Asynchronous Procedure Call)、异常调度( Exception Dispatching)和系统服务调度
( System Service Dispatching)
执行体对象管理器( Executive Object Manager)
同步( Synchronization),包括自旋锁( Spin
lock)、内核调度程序对象( Kernel Dispatcher
Objects)
本地过程调用( LPC,Local Procedure Call)
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
陷阱调度中断服务例程陷阱处理程序中断系统服务系统服务调用硬件异常软件异常异常结构异常调度程序异常处理程序虚拟地址异常虚拟存储器页面管理程序
当异常或中断发生时,硬件或软件可以检测到,处理器会从用户态切换到核心态,
并将控制转交给内核的陷阱处理程序,该模块检测异常和中断的类型,
并将控制交给处理相应情况的代码
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
异常和中断
– 中断是异步事件,可能随时发生,与处理器正在执行的内容无关。中断主要由 I/O设备、处理器时钟或定时器产生,可以被启用或禁用
– 异常是同步事件,它是某一特定指令执行的结果。在相同条件下,异常可以重现。例如内存访问错误、调试指令以及被零除。
– 系统服务调用也视作异常。
– 软件和硬件都可以产生异常和中断。
陷阱帧:完整的线程描述表的子集,用于现场保护
陷阱处理程序处理少量事件,多数转交给其他的内核或执行体模块处理
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
中断调度硬件中断高优先级电源故障处理器内部中断时钟中断软件中断设备设备低优先级正常线程执行配置文件
中断分类和优先级
– 中断请求级别
( IRQL,
Interrupt
Request Level)
– 硬件中断
– 软件中断
APC
DPC
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
硬件中断处理过程
– 保存计算机的状态
– 禁用中断
– 调用中断调度程序
– 提高处理器的 IRQL到中断源的级别
– 重新启用中断
– 在中断分配表中查找处理特定中断的例程
– 服务例程执行
– 降低处理器的 IRQL到该中断发生前的级别
– 加载保存的机器状态
– 中断返回
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
定时器到时,系统核心将一个
DPC放入DPC队列中。并且释放正在等待定时器的线程。
然后核心请求软件中断当中断优先级低于
DPC/dispatch的时候,
DPC中断产生
DPC/dispatch
低优先级电源故障高优先级中断调度表队列调度程序
DPC中断之后,系统控制权交给(线程)调度程序调度程序执行DPC队列中的每一个例程,直到DPC队列为空。如果需要,调度程序也会重新安排处理器。
软件中断的处理
– 延迟过程调用
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
–异步过程调用
异步过程调用为用户程序和系统代码提供了一种在特殊用户线程的描述表
(一个特殊的进程地址空间)中执行代码的方法
有用户态 APC和核心态 APC
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
异常调度
异常直接由运行程序的执行所产生。
除了那些可由陷阱处理程序解决的简单异常外,所有异常都是由异常调度程序接管
结构化异常处理
基于框架的异常处理程序
异常调度过程
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
陷阱处理程序异常记录异常调度程序调试器端口调试器端口异常端口调试器
(第一次)
调试器
(第二次)
环境子系统核心缺省处理例程函数调用基于框架的处理例程
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
系统服务调度
在 Alpha处理器上执行 syscall指令或在
Intel x86处理器上执行 int 2E指令都会引起系统服务调度
系统服务调度程序将依次作下面几件事:
– 校验参数
– 调用者的参数从线程的用户堆栈复制到它的核心堆栈中
– 执行系统服务
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
W I N 3 2 核心A P I
W I N 3 2 应用程序
Kernel32.dll
中的WriteFile
调用
WriteFiles()...
调用
NtWriteFile返回结果
Win32
专用
Ntdll.dll中的
NtWriteFile
返回结果用于所有子系统软件中断
Ntoskrnl.exe中的
KISystemService
Ntoskrnl.exe中的NtWriteFile
调用NtWriteFile
关中断执行操作返回结果
Win32 USER和 GDI API
应用程序调用USER或
GDI服务例程
Gdi32.dll
或User32.dll
返回结果
W i n 3 2 专用软件中断
Ntoskrnl.exe中的
KISystemService
Win32k.sys中的服务入口点执行操作返回结果调用Win32例程关中断用户态核心态
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
对象管理器
执行体组件之一
用于创建、删除、保护和跟踪对象
提供使用系统范围内资源使用的公共、
一致的机制
实现对象的集中保护
实现了资源的访问控制
对象管理器有一套对象命名方案和统一的保留规则,能够容易地操纵现有对象
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
执行体对象
– 由执行体的各种组件实现
– 进程管理器、内存管理器,I/O子系统等
内核对象
– 由内核实现的原始的对象集合
– 这些对象对用户态代码是不可见的,它们仅在执行体内创建和使用
内核对象提供了一些基本性能,许多执行体对象内包含着一个或多个内核对象。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
对象命名
对象头:存储对象管理信息和描述信息
类型对象:保存特定对象类型的类型信息
对象的生存周期
对象方法
对象句柄
对象安全
配额和资源记帐
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
同步机制处理器A 处理器B
尝试获得
D P C 队列的
spinlock
尝试获得
D P C 队列的
spinlock
DPC队列临界区成功成功成功从队列移出DPC
向队列加入DPC
释放DPC队列中的spinlock 释放DPC队列中的spinlock? 内核同步
– 内核的临界区是修改共用数据结构的代码段
– 最大问题是中断
– 自旋锁
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
执行体同步
– 自旋锁使用的限制
被保护的资源必须被快速访问,并且没有与其他代码的复杂的交互作用。
临界区代码不能换出内存,不能引用可分页数据,
不能调用外部程序(包括系统服务),不能生成中断或异常情况。
– 调度程序对象
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
本地过程调用
一个用于高速信息传输的进程间通信机制(使用共享内存)
LPC常常被使用在一个服务器进程与该服务器的一个或多个客户进程之间,以及在两个用户态进程之间或一个核心态组件和一个用户态进程之间
常被视作经过高度优化的 RPC的本地版本
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
LPC的三种交换信息的方法:
– 使用包含信息的缓冲区调用 LPC可以发送少于 256字节的信息。然后,这个信息又从发送进程的地址空间复制到系统地址空间,再从那里拷贝到接收进程的地址空间。
– 如果用户和服务器想交换大于 256字节的数据,
那么他们可以选择使用双方都映射了的共享区。发送方将信息数据放到共享区,然后向接收方发送一小段信息表明在共享区的什么地方可以找到数据。
– 当服务器想读或写大量数据,而共享区又太小时,数据可以直接从客户地址空间读出或向客户地址空间写入。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
系统工作线程
代表其它线程履行职责
三种系统工作线程
– 延迟工作线程运行在优先级 12,处理非时间关键的工作项,它们的堆栈在等待工作项时可以被换出到页交换文件。
– 关键工作线程运行在优先级 13,处理时间关键工作项,在 windows2000 server中它们的堆栈始终在物理内存中。
– 一个单独的高度关键工作线程运行在优先级 15,
堆栈也始终在物理内存中,处理管理器使用这种工作线程的“收割机”功能释放终止的线程。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
注册表
保存所有有关系统和每个用户的设置信息
Windows 2000系统管理机制的关键数据库
组成:
– 主键
– 键值
– 主键可以包含若干主键(或称为这个主键的子键)和键值,而键值则存储数据,顶级主键称为根键
– 六个根键
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
HKEY_CURRENT_USER 存储与当前登录用户有关的信息。
HKEY_USER 存储了所有用户的信息。
HKEY_CLASSES_ROOT 存储与文件类型和 COM对象相关的信息
HKEY_LOCAL_MACHINE 存储与系统设置相关的信息
HKEY_PERFORMANCE_DATA 存储与系统性能相关的信息
HKEY_CURRENT_CONFIG 存储了当前硬件配置文件的信息
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Window 2000/XP服务
Win32 服务由三部组成:
– 服务应用程序
– 服务控制程序( SCP)
– 服务控制管理器( SCM)
服务帐号
– 本地系统帐号方式
– 备用帐号方式
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
主线程主流程服务处理程序调度暂停服务处理程序服务处理程序 服务处理程序表连接SCM的管道服务线程登记服务处理程序初始化处理客户请求客户服务的连接
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
服务的控制
– 服务的启动
正常启动
特殊启动(接受最近一次的正确配置)
启动的参数传递
– 服务的关闭
– 服务错误
– 服务失败
– 共享
– 服务控制程序
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows管理机制
基于 Web-Based Enterprise Management,
WBEM标准的实现
事务数据收集和管理
强伸缩性和强扩展性
四个主要的组件:
– 管理程序
– WMI 基础设施
– 数据生产者
– 被管理的对象集合
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
数据库应用程序
Web浏览器 C/C++应用程序管理程序
ActiveX
控制
Windows 管理程序接口
WMI的基础设施仓库 C M I 对象管理(C M I O M )
SNMP对象生产者
Win32对象生产者寄存器对象生产者对象生产者接受管理的对象寄存器对象
Win32对象SNMP对象
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
数据生产者
– 定义对象
– 为 WMI提供这些对象的编程接口
CIM和 MOFL
WMI名字空间
WMI对象浏览器
WMI的安全
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows
操作系统原理
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
os.cs.tsinghua.edu.cn
os.pku.edu.cn
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
本书结构
全书共九章,含盖了操作系统原理课程的全部理论内容以及 Windows 2000/XP
操作系统构成的各个方面
九章的内容依次是:
– 第 1章 操作系统概述
– 第 2章 Windows 2000 / XP 的体系结构
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
– 第 3章 进程管理
– 第 4章 存储管理
– 第 5章 文件系统
– 第 6章 I/O系统
– 第 7章 网络
– 第 8章 应用程序设计
– 第 9章 驱动程序设计
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
章节结构
一般性原理+ Windows 2000/XP原理
– 一般性原理占全章篇幅的 1/3~ 1/2
– Windows 2000/XP作为与原理映照的实例约占 1/2~ 2/3篇幅
每章配有习题或思考题若干,可配合教学使用
实习
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的体系结构
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
本章要点
操作系统的设计目标
操作系统的设计阶段
几种常见的操作系统体系结构范型
Windows 2000/XP的操作系统模型
Windows 2000/XP的体系结构
– Windows 2000/XP的重要组成部分
– Windows 2000/XP的系统机制
Windows 2000/XP注册表、服务控制与管理机制
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
操作系统的设计问题
操作系统设计有着不同于一般应用系统设计的特征:
– 复杂程度高
– 研制周期长
– 正确性难以保证
解决途径:
– 良好的操作系统结构
– 先进的开发方法和工程化的管理方法
– 高效的开发工具
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
操作系统的设计目标
可靠性:正确性和健壮性
高效性:提高系统的运行效率
易维护性:易读、易扩充、易剪裁、易修改性
易移植性:一次开发,多处使用
安全性:计算机软件系统安全性的基础
可适应性
简明性
%100
smsuu
suu TTT TT?
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的设计目标
总原则:市场需求 驱动 设计目标
需求:
– 提供一个真 32位抢占式可重入的虚拟内存操作系统
– 能够在多种硬件体系结构和平台上运行
– 能够在对称多处理系统上运行并具有良好的可伸缩性
– 优秀的分布式计算平台,既可作为网络客户,又可作为网络服务器
– 可运行多数现有 16位 MS-DOS和 Microsoft Windows 3.1
应用程序
– 符合政府对符合 POSLX 1003.1的要求
– 符合政府和企业对操作系统安全性的要求
– 支持 Unicode,适应全球市场的需要
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的设计目标:
– 可扩充性
– 可移植性
– 可靠性及坚固性
– 兼容性
– 性能
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
操作系统的设计考虑
功能设计:操作系统应具备哪些功能
算法设计:选择和设计满足系统功能的算法和策略,并分析和估算其效能
结构设计:选择合适的操作系统结构
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
操作系统结构设计按照系统的功能和特性要求,选择合适的结构,使用相应的结构设计方法将系统逐步地分解、抽象和综合,使操作系统结构清晰、简单、可靠、易读、易修改,而且使用方便,适应性强
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
操作系统结构
程序结构
– 程序结构的两层含义
– 程序的结构良好的准则
软件结构
操作系统结构
– 重要性
– 解决什么问题,目标何在
– 困难在那里
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
几种常见的操作系统结构
模块组合结构模块组合结构的特点与适应性
– 模块间转接随便
– 数据基本上作为全程量处理
– 常常关中断,系统的并发性难以提高
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
层次结构
– 层次结构设计方法的核心思想
– 例如 E.W.Dijkstra的 THE系统:
1
2
3
4
5
处理器分配和多道程序内存和磁盘管理操作员-进程通信输入 /输出管理用户程序操作员
0
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
层次结构的特点
– 分解成许多功能单一的模块,各模块之间有清晰的组织结构和依赖关系
– 具有更高的可读性和可适应性
– 层次结构是单向依赖的,上层模块建立在下层基础上,设计了比较可靠的基础
– 很容易增加或替换掉一层而不影响其它层次
– 便于修改、扩充
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
层次结构的层间关系
全序
半序第 3层第 2层第 1层第 0层
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
进程分层结构
实现代价较大:
– 必须设立一个进程控制块,用以保留进程的状态信息,
增加了内存开销
– 进程之间的控制转移、状态保留及信息传送,均由核心去管理,时间消耗多,效率下降
– 系统并发活动过多,调度负担过重,且同步操作过于分散,易于造成死锁,影响了系统的安全性层次结构的两种类型核心
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
层次管程结构
– 进程:并发单位
– 类程:专用资源的抽象
– 管程:共享资源的抽象
– 一个动态的系统则由内核和一组有限个满足规定调用关系的进程 P、类程 C和管程 M构成。其中进程是系统中唯一能动的成分,管程和类程都是被动成分
– 存取图
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
优点
– 采用层次管程结构的系统结构清晰、统一
– 同步操作相对集中,系统安全性较高
– 用高级语言书写程序,研制周期短,通过编译技术获取更高的灵活性和效率
– 只用一种概念描述并发,减少了不必要的并行性,减少了系统开销。
缺点:
– 管程嵌套问题比较难于高效的解决
– 不便于管理多个资源和全局性资源
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
虚拟机结构
如 IBM大型机上的系列操作系统
基本思想:系统应该提供 1)多道程序能力 2)一个比裸机有更方便扩展界面的计算机 。但是二者的实现应该相互独立
优缺点
– 虚拟机概念可以实现完全保护
– 用软件从硬件逐层扩展
– 虚拟机方法把多道程序和扩充机器的功能完全分开了,使每一部分都简单、灵活,更易于维护。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
370裸机
VM/370
CMS CMS CMS
系统调用陷入
I/O指令陷入若干个 370虚拟机
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
微内核(客户 /服务器结构)
CMU的 Mach、早期的 Windows NT……
非常适宜于应用在网络环境下,应用于分布式处理的计算环境中
由下面两大部分组成,
–,微”内核
– 若干服务
主要特点:
– 机制与策略分离比较彻底
– 可靠
– 灵活
– 适合分布式计算的需求
– 缺点:效率较低
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
其它体系结构
外展式核心( Exokernels)
– 这种观点认为操作系统应该只负责在竞争的用户之间安全、有效的分配计算资源
– 传统操作系统的绝大部分功能应该在系统库中以可选的方式链接进用户程序
可扩展系统
– 可扩展系统认为应该将尽可能多的模块以一种受保护的方式放进核心当中。操作系统的构造者可以先构造从一个只包含稍微多余核心保护机制的一个最小核心。而其它的功能则通过不断的往核心中添加受保护的模块实现。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP系统模型
融合了分层操作系统和微内核操作系统的设计思想,使用面向对象的分析与设计,采用整体式的实现
Windows 2000/XP通过硬件机制实现了核心态以及用户态两个特权级别 。对性能影响很大的操作系统组件运行在核心态。核心内没有保护。
设计充分体现了机制与策略分离的思想
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的核心态组件使用了面向对象设计原则
出于可移植性以及效率因素的考虑,大部分代码使用了基于 C语言的对象实现。
Windows 2000/XP的很多系统服务运行在核心态,这使得 Windows 2000/XP更加高效,而且也是相当稳定的。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
系统支撑处理器系统支持进程 服务进程 用户程序 环境子系统子系统动态链接库用户态用户态核心态核心态硬件抽象层(HAL)
执行体核心 设备驱动程序图形引擎
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的构成
用户态组件
– 系统支持进程( system support process),不是
Windows 2000/XP服务,不由服务控制器启动。
– 服务进程( service process),Windows 2000/XP的服务。
– 环境子系统( enviroment subsystems),它们向应用程序提供操作系统功能调用接口包括,Win32、
POSIX和 OS/2 1.2。
– 应用程序( user applications),五种类型,Win32、
Windows 3.1,MS-DOS,POSIX 或 OS/2 1.2。
– 子系统动态链接库:调用层转换和映射
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
核心态组件
– 核心( kernel)包含了最低级的操作系统功能,例如线程调度、中断和异常调度、多处理器同步等。同时它也提供了执行体( Executive)用来实现高级结构的一组例程和基本对象。
– 执行体包含基本的操作系统服务,例如内存管理器、
进程和线程管理、安全控制,I/O以及进程间的通信。
– 硬件抽象层( HAL,Hardware Abstraction Layer)将内核、设备驱动程序以及执行体同硬件分隔开来,实现硬件映射。
– 设备驱动程序( Device Drivers)包括文件系统和硬件设备驱动程序等,其中硬件设备驱动程序将用户的 I/O
函数调用转换为对特定硬件设备的 I/O请求。
– 窗口和图形系统包含了实现图形用户界面( GUI,
Graphical User Interface)的基本函数。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
可移植性的获得
两种手段
– 分层的设计。依赖于处理器体系结构或平台的系统底层部分被隔离在单独的模块之中,系统的高层可以被屏蔽在千差万别的硬件平台之外。提供操作系统可移植性的两个关键组件是 HAL和内核。依赖于体系结构的功能在内核中实现,在相同体系结构中,因计算机而异的功能在 HAL中实现。
– Windows 2000/XP大量使用高级语言 —— 执行体、设备驱动程序等用 C语言编写,图形用户界面用 C++编写。只有那些必须和系统硬件直接通信的操作系统部分,或性能极度敏感的部分是用汇编语言编写的。汇编语言代码分布集中且少。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
对称多处理器支持
代码对处理器的可伸缩性好
IPC和锁机制完善
核心态组件代码可重入程度极高
多优先级占式调度,多数核心态组件代码都可以被抢占
设计抽象度高,SMP硬件设置对绝大多数组件不可见、也无需关心
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
系统支持进程 服务进程 应用程序环境子系统服务管理器本地安全验证服务
Windows登陆会话管理器任务管理器
Windows
浏览器用户级应用程序子系统动态链接库系统级线程用户态核心态系统级服务调度进程核心态可调用接口图形驱动程序
I/O设备管理器设备、文件系统驱动程序局部过程调用注册表配置管理器进程和线程虚拟存储器电源管理器即插即用设备管理器对象管理器文件系统缓存管理器系统核心硬件抽象层(HAL)
硬件接口
(总线、I/O设备驱动、中断、时钟间隔、直接内存存取(DMA)、存储器缓存控制器等等)
安全指向监视器
Windows 2000/XP的关键系统组件
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
内核
功能
– 线程安排和调度
– 陷阱处理和异常调度
– 中断处理和调度
– 多处理器同步
– 供执行体使用的基本内核对象
始终运行在核心态,代码精简,可移植性好。除了中断服务例程( ISR,
interrupt service routine),正在运行的线程不能抢先内核。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
内核对象
– 帮助控制、处理并支持执行体对象的操作,以降低系统策略代价
– 控制对象,这个对象集和包括内核进程对象、
异步过程调用( APC,asynchronous
procedure call)对象、延迟过程调用( DPC,
deferred procedure call)对象和几个由 I/O系统使用的对象,例如中断对象。
– 调度程序对象集合负责同步操作并影响线程调度。调度程序对象包括内核线程、互斥体
( Mutex)、事件( Event)、内核事件对、信号量( Semaphore)、定时器和可等待定时器
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
内核与硬件
– 使得执行体和设备驱动程序同硬件无关
– 实现手段:一组在多个体系结构上可移植、同语义的接口
– 内核也有部分代码不具有移植性
支持虚拟 8086模式的代码,用以运行一些古老的 16位 DOS程序
高速缓存管理
描述表切换
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
硬件抽象层( HAL)
实际硬件与 Windows 2000/XP抽象计算机描述的接口层和功能映射层
隐藏各种与硬件有关的细节,例如 I/O接口、中断控制器以及多处理器通信机制等
实现多种硬件平台上的可移植性
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
执行体
提供的功能性调用
– 从用户态导出并且可以调用的函数。这些函数的接口在 NTDLL.DLL中。通过 Win32API或一些其他的环境子系统可以对它们进行访问。
– 从用户态导出并且可以调用的函数,但当前通过任何文档化的子系统函数都不能使用。
– 在 Windows 2000 DDK中已经导出并且文档化的核心态调用的函数。
– 在核心态组件中调用但没有文档化的函数。例如在执行体内部使用的内部支持例程。
– 组件内部的函数。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
包含的功能实体
– 进程和线程管理器创建及中止进程和线程。对进程和线程的基本支持在 Windows 2000内核中实现,而执行体给这些低级对象添加附加语义和功能。
– 虚拟内存管理器实现“虚拟内存”。内存管理器也为高速缓存管理器提供基本的支持。
– 安全引用监视器在本地计算机上执行安全策略。它保护了操作系统资源,执行运行时对象的保护和监视。
– I/O系统执行独立于设备的输入 /输出,并为进一步处理调用适当的设备驱动程序。
– 高速缓存管理器通过将最近引用的磁盘数据驻留在主内存中来提高文件 I/O的性能,并且通过在把更新数据发送到磁盘之前将它们在内存中保持一个短的时间来延缓磁盘的写操作,这样就可以实现快速访问。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
– 对象管理:创建、管理以及删除 Windows 2000/XP的执行体对象和用于代表操作系统资源的抽象数据类型,
例如进程、线程和各种同步对象。
– 本地过程调用( LPC,Local Procedure Call)机制,
在同一台计算机上的客户进程和服务进程之间传递信息。 LPC是一个灵活的、经过优化的“远程过程调用”
( RPC,Remote Procedure Call)版本。
– 一组广泛的公用运行时函数,例如字符串处理、算术运算、数据类型转换和完全结构处理。
– 执行体支持例程,例如系统内存分配(页交换区和非页交换区)、互锁内存访问和两种特殊类型的同步对象:资源和快速互斥体。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
设备驱动程序
可加载的核心态模块
I/O系统和相关硬件之间的接口
使用 WDM以及加强的 WDM方式
分类
– 硬件设备驱动程序操作硬件。
– 文件系统驱动程序接受面向文件的 I/O请求,
并把它们转化为对特殊设备的 I/O请求。
– 过滤器驱动程序截取 I/O并在传递 I/O到下一层之前执行某些特定处理。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
环境子系统
将基本的执行体系统服务的某些子集以特定的形态展示给应用程序,函数调用不能在不同子系统之间混用,因此每一个可执行的映像都受限于唯一的子系统
三种环境子系统,POSIX,OS/2和
Win32( OS/2 只能用于 x86系统)
Win32子系统必须始终处于运行状态,其他两个子系统只是在需要时才被启动,
Win32子系统是 Windows 2000/XP运行的基本条件之一。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Win32子系统
– Win32环境子系统进程 CSRSS,包括对下列功能的支持:控制台(文本)窗口、创建及删除进程与线程、
支持 16位 DOS虚拟机( VDM)进程的部分。
– 核心态设备驱动程序( WIN32K.SYS)。
– 图形设备接口( GDI,Graphics Device Interfaces)
– 子系统动态链接库,它调用 NTOSKRNL.EXE和
WIN32.SYS将文档化的 Win32 API函数转化为适当的非文档化的核心系统服务。
– 图形设备驱动程序,包括依赖于硬件的图形显示驱动程序、打印机驱动程序和视频小型端口驱动程序。
– 其他混杂的函数,如几种自然语言支持函数。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
POSIX子系统
– 设计的强迫性目标
– 实现了 POSIX.1,功能局限,用处不大
– Windows XP实际上并不包含 POSIX子系统
– 今后产品的 POSIX/UNIX子系统将大大加强
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
NTDLL
主要用于子系统动态链接库的特殊系统支持库
功能
– 提供系统调用入口
– 为子系统、子系统动态链接库、及其他本机映像提供内部支持函数
– NTDLL也包含许多支持函数,例如映像加载程序、堆管理器和 Win32子系统进程通信函数以及通用运行库。
– 用户态异步过程调用( APC)调度器和异常调度器。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
系统支持进程
Idle进程
系统进程
会话管理器 SMSS
Win32子系统 CSRSS
登录进程 WINLOGIN
本地安全身份验证服务器 LSASS
服务控制器 SERVICES及其相关的服务进程
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows 2000/XP的系统机制
陷阱调度,包括中断、延迟过程调用( DPC,
Deferred Procedure Call)、异步过程调用
( APC,Asynchronous Procedure Call)、异常调度( Exception Dispatching)和系统服务调度
( System Service Dispatching)
执行体对象管理器( Executive Object Manager)
同步( Synchronization),包括自旋锁( Spin
lock)、内核调度程序对象( Kernel Dispatcher
Objects)
本地过程调用( LPC,Local Procedure Call)
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
陷阱调度中断服务例程陷阱处理程序中断系统服务系统服务调用硬件异常软件异常异常结构异常调度程序异常处理程序虚拟地址异常虚拟存储器页面管理程序
当异常或中断发生时,硬件或软件可以检测到,处理器会从用户态切换到核心态,
并将控制转交给内核的陷阱处理程序,该模块检测异常和中断的类型,
并将控制交给处理相应情况的代码
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
异常和中断
– 中断是异步事件,可能随时发生,与处理器正在执行的内容无关。中断主要由 I/O设备、处理器时钟或定时器产生,可以被启用或禁用
– 异常是同步事件,它是某一特定指令执行的结果。在相同条件下,异常可以重现。例如内存访问错误、调试指令以及被零除。
– 系统服务调用也视作异常。
– 软件和硬件都可以产生异常和中断。
陷阱帧:完整的线程描述表的子集,用于现场保护
陷阱处理程序处理少量事件,多数转交给其他的内核或执行体模块处理
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
中断调度硬件中断高优先级电源故障处理器内部中断时钟中断软件中断设备设备低优先级正常线程执行配置文件
中断分类和优先级
– 中断请求级别
( IRQL,
Interrupt
Request Level)
– 硬件中断
– 软件中断
APC
DPC
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
硬件中断处理过程
– 保存计算机的状态
– 禁用中断
– 调用中断调度程序
– 提高处理器的 IRQL到中断源的级别
– 重新启用中断
– 在中断分配表中查找处理特定中断的例程
– 服务例程执行
– 降低处理器的 IRQL到该中断发生前的级别
– 加载保存的机器状态
– 中断返回
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
定时器到时,系统核心将一个
DPC放入DPC队列中。并且释放正在等待定时器的线程。
然后核心请求软件中断当中断优先级低于
DPC/dispatch的时候,
DPC中断产生
DPC/dispatch
低优先级电源故障高优先级中断调度表队列调度程序
DPC中断之后,系统控制权交给(线程)调度程序调度程序执行DPC队列中的每一个例程,直到DPC队列为空。如果需要,调度程序也会重新安排处理器。
软件中断的处理
– 延迟过程调用
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
–异步过程调用
异步过程调用为用户程序和系统代码提供了一种在特殊用户线程的描述表
(一个特殊的进程地址空间)中执行代码的方法
有用户态 APC和核心态 APC
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
异常调度
异常直接由运行程序的执行所产生。
除了那些可由陷阱处理程序解决的简单异常外,所有异常都是由异常调度程序接管
结构化异常处理
基于框架的异常处理程序
异常调度过程
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
陷阱处理程序异常记录异常调度程序调试器端口调试器端口异常端口调试器
(第一次)
调试器
(第二次)
环境子系统核心缺省处理例程函数调用基于框架的处理例程
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
系统服务调度
在 Alpha处理器上执行 syscall指令或在
Intel x86处理器上执行 int 2E指令都会引起系统服务调度
系统服务调度程序将依次作下面几件事:
– 校验参数
– 调用者的参数从线程的用户堆栈复制到它的核心堆栈中
– 执行系统服务
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
W I N 3 2 核心A P I
W I N 3 2 应用程序
Kernel32.dll
中的WriteFile
调用
WriteFiles()...
调用
NtWriteFile返回结果
Win32
专用
Ntdll.dll中的
NtWriteFile
返回结果用于所有子系统软件中断
Ntoskrnl.exe中的
KISystemService
Ntoskrnl.exe中的NtWriteFile
调用NtWriteFile
关中断执行操作返回结果
Win32 USER和 GDI API
应用程序调用USER或
GDI服务例程
Gdi32.dll
或User32.dll
返回结果
W i n 3 2 专用软件中断
Ntoskrnl.exe中的
KISystemService
Win32k.sys中的服务入口点执行操作返回结果调用Win32例程关中断用户态核心态
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
对象管理器
执行体组件之一
用于创建、删除、保护和跟踪对象
提供使用系统范围内资源使用的公共、
一致的机制
实现对象的集中保护
实现了资源的访问控制
对象管理器有一套对象命名方案和统一的保留规则,能够容易地操纵现有对象
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
执行体对象
– 由执行体的各种组件实现
– 进程管理器、内存管理器,I/O子系统等
内核对象
– 由内核实现的原始的对象集合
– 这些对象对用户态代码是不可见的,它们仅在执行体内创建和使用
内核对象提供了一些基本性能,许多执行体对象内包含着一个或多个内核对象。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
对象命名
对象头:存储对象管理信息和描述信息
类型对象:保存特定对象类型的类型信息
对象的生存周期
对象方法
对象句柄
对象安全
配额和资源记帐
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
同步机制处理器A 处理器B
尝试获得
D P C 队列的
spinlock
尝试获得
D P C 队列的
spinlock
DPC队列临界区成功成功成功从队列移出DPC
向队列加入DPC
释放DPC队列中的spinlock 释放DPC队列中的spinlock? 内核同步
– 内核的临界区是修改共用数据结构的代码段
– 最大问题是中断
– 自旋锁
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
执行体同步
– 自旋锁使用的限制
被保护的资源必须被快速访问,并且没有与其他代码的复杂的交互作用。
临界区代码不能换出内存,不能引用可分页数据,
不能调用外部程序(包括系统服务),不能生成中断或异常情况。
– 调度程序对象
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
本地过程调用
一个用于高速信息传输的进程间通信机制(使用共享内存)
LPC常常被使用在一个服务器进程与该服务器的一个或多个客户进程之间,以及在两个用户态进程之间或一个核心态组件和一个用户态进程之间
常被视作经过高度优化的 RPC的本地版本
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
LPC的三种交换信息的方法:
– 使用包含信息的缓冲区调用 LPC可以发送少于 256字节的信息。然后,这个信息又从发送进程的地址空间复制到系统地址空间,再从那里拷贝到接收进程的地址空间。
– 如果用户和服务器想交换大于 256字节的数据,
那么他们可以选择使用双方都映射了的共享区。发送方将信息数据放到共享区,然后向接收方发送一小段信息表明在共享区的什么地方可以找到数据。
– 当服务器想读或写大量数据,而共享区又太小时,数据可以直接从客户地址空间读出或向客户地址空间写入。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
系统工作线程
代表其它线程履行职责
三种系统工作线程
– 延迟工作线程运行在优先级 12,处理非时间关键的工作项,它们的堆栈在等待工作项时可以被换出到页交换文件。
– 关键工作线程运行在优先级 13,处理时间关键工作项,在 windows2000 server中它们的堆栈始终在物理内存中。
– 一个单独的高度关键工作线程运行在优先级 15,
堆栈也始终在物理内存中,处理管理器使用这种工作线程的“收割机”功能释放终止的线程。
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
注册表
保存所有有关系统和每个用户的设置信息
Windows 2000系统管理机制的关键数据库
组成:
– 主键
– 键值
– 主键可以包含若干主键(或称为这个主键的子键)和键值,而键值则存储数据,顶级主键称为根键
– 六个根键
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
HKEY_CURRENT_USER 存储与当前登录用户有关的信息。
HKEY_USER 存储了所有用户的信息。
HKEY_CLASSES_ROOT 存储与文件类型和 COM对象相关的信息
HKEY_LOCAL_MACHINE 存储与系统设置相关的信息
HKEY_PERFORMANCE_DATA 存储与系统性能相关的信息
HKEY_CURRENT_CONFIG 存储了当前硬件配置文件的信息
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Window 2000/XP服务
Win32 服务由三部组成:
– 服务应用程序
– 服务控制程序( SCP)
– 服务控制管理器( SCM)
服务帐号
– 本地系统帐号方式
– 备用帐号方式
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
主线程主流程服务处理程序调度暂停服务处理程序服务处理程序 服务处理程序表连接SCM的管道服务线程登记服务处理程序初始化处理客户请求客户服务的连接
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
服务的控制
– 服务的启动
正常启动
特殊启动(接受最近一次的正确配置)
启动的参数传递
– 服务的关闭
– 服务错误
– 服务失败
– 共享
– 服务控制程序
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
Windows管理机制
基于 Web-Based Enterprise Management,
WBEM标准的实现
事务数据收集和管理
强伸缩性和强扩展性
四个主要的组件:
– 管理程序
– WMI 基础设施
– 数据生产者
– 被管理的对象集合
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
数据库应用程序
Web浏览器 C/C++应用程序管理程序
ActiveX
控制
Windows 管理程序接口
WMI的基础设施仓库 C M I 对象管理(C M I O M )
SNMP对象生产者
Win32对象生产者寄存器对象生产者对象生产者接受管理的对象寄存器对象
Win32对象SNMP对象
Mi
cr
os
of
t?
W
indow
s
2
00
0/X
P
数据生产者
– 定义对象
– 为 WMI提供这些对象的编程接口
CIM和 MOFL
WMI名字空间
WMI对象浏览器
WMI的安全