Windows内核学习:OS体系结构
2009-09-17 08:40
351 查看
作者:shenzi
链接:http://blog.csdn.net/shenziWindows内核学习:OS体系结构
Windows发展史
Windows NT(New Technology)是Windows核心内核,Windows操作系统的演化也就是Windows NT内核的演化。我们最为熟悉的Windows XP系统是基于NT5.1内核。
1.1Windows NT的主要特点32位操作系统,多重引导功能,可与其它操作系统共存。
实现了“抢先式”多任务和多线程操作。
采用SMP(对称多处理)技术,支持多CPU系统。
支持CISC(如Intel系统)和RISC(如Power PC、R4400等)多种硬件平台。
可与各种网络操作系统实现互操作。如:UNIX、Novel Netware、Macintosh等系统;对客户操作系统提供广泛支持,如MS-DOS、Windows、Windows NT。
安全性达到美国国防部的C2标准。
1.2Windows操作系统家族
发行时间 | 产品名称 | 版本号 |
---|---|---|
1993年9月 | Windows For Workgroups 3.11 | 3.11 |
1994年9月 | Windows NT 3.5 | NT 3.5 |
1995年5月 | Windows NT 3.51 | NT 3.51 |
1995年8月 | Windows 95 | 4.0.950 |
1996年7月 | Windows NT 4.0 | NT 4.0.1381 |
1998年6月 | Windows 98 | 4.10.1998 |
2000年2月 | Windows 2000 | NT 5.0.2195 |
2001年10月 | Windows XP | NT 5.1.2600 |
2003年4月 | Windows Server 2003 | NT 5.2.3790 |
2007年1月 | Windows Vista | NT 6.0.6002 |
2008年2月 | Windows Server 2008 | NT 6.0.6002 |
2009年10月 | Windows 7 | NT 6.1.7600 |
Windows体系结构
2.1总体结构还是先来看看Windows系统组成吧,Windows到底有些什么东西?
图1-1 Windows NT体系结构
文件名 | 组件 |
Ntoskrnl.exe | 执行体和内核 |
Ntkrnlpa.exe | 支持物理地址扩展(PAE)的执行体和内核,允许多大64GB的物理内存的寻址 |
Hal.dll | 硬件抽象层 |
Win32k.sys | Win32子系统的内核模式部分(图形子系统) |
Ntdll.dll | 内部支持函数和执行程序函数的系统服务调度占位程序(stub) |
Kernel32.dll Advapi.dll User32.dll Gdi32.dll | Win32子系统DLL |
表1-1 Windows NT内核系统文件
2.2
Windows系统关键组件
图1-2 Windows NT体系结构2
用户模式,内核模式介绍
为
了避免用户应用程序访问和(或)修改重要的操作系统数据,Windows采用两种处理器访问模式态:用户模式和内核模式。用户应用程序在用户模式下运行,
而操作系统代码(如系统服务和设备驱动程序)则在内核模式中运行。内核模式是指处理器的执行方式,而该处理器授予所有系统内存和所有CPU指令访问权限。
通过为操作系统软件提供高于应用程序软件的特权级别
,处理器就为操作系统设计人员提供了必要的基础,以确保错误应用不会破坏整个系统的稳定性。
尽管每个Win32应用程序都有其自身转悠的内存空间,但内核模式操作系统和设备驱动程序代码共享同一虚拟地址空间。一旦处于内核模式,操作系统和设备驱动程序代码就拥有对系统空间内存的完全访问,因此在加载第三方设备驱动程序时应该小心,因为设备驱动程序运行于内核态。
用
户应用程序在调用系统服务时从用户模式切换到内核模式,从用户模式到内核模式的切换时通过使用特殊的处理器指令而实现的,该指令导致处理器切换到内核模
式。操作系统俘获该指令,注意到系统服务正在被请求,验证线程传递给系统函数的参数,然后执行内部函数。在将控制返回给用户线程之前,处理器模式再切换回
用户模式。
注意:从用户模式到内核模式的切换(和返回)不影响本身的线程调度——模式切换并不是环境切换。
环境子系统
Windows NT原先支持三个环境子系统:Windows,OS/2,POSIX
.
Windows子系统
在Windows操作系统中
必须的,Windows子系统退出Windows将会崩溃。
OS/2,POSIX子系统事实上是Windows应用程序。
OS/2子系统在WIN 2000中被舍弃,
POSIX则在XP/Server 2003
系统中被舍弃。
Windows环境子系统
API DLLs | Kernel32.DLL, Gdi32.DLL, User32.DLL,Advapi32.DLL |
环境子系统进程 | CSRSS.EXE(Client/Server Runtime Server Subststem) |
内核模式图形驱动 | Win32.sys |
通过对Ntoskrnl.exe和Win32.sys的调用将存档的Win32 API函数翻译为合适的非存档的内核模式系统调用。
CSRSS.EXE
:
WINSRV.DLL 控制台窗口,HardError
CSRSRV.DLL 进程,线程维护,调试
BASESRV.DLL 安全,登陆
Win32.sys:
窗口管理器,图形设备接口(实现USER&GDI 函数)
,调用底层图形设备驱动实现图形显示和打印机功能
。
对于客户端
的每一线程,在Win32子系统进程中都有一个专用的,配对的服务器线程等待客户线程的请求。一个特殊的被称为快速LPC
的进程间通信工具用来传送线程间的信息。和一般的线程环境切换不同,使用快速的LPC的配对线程间切换在内核中不产生重新调度事件,所以在内核的抢先型线程调度程序中,服务器线程在获得它的时间片之前可以在客户线程的剩余时间片中运行。
图1-3 用户程序调用
NTDLL.DLL
NTDLL.DLL主要是用于子系统DLL的一个特殊系统支持库。它包含两种类型的函数:
Windows系统服务调用接口:
图1-4
[b] 子系统,子系统DLL和其它本机映像使用的内部支持函数
:
图1-5
执行体程序
执行体程序是
Ntoskrnl.exe的上层:
[b]配置管理器 [/b] | [b]进程与线程管理器 [/b] | [b] 安全引用管理器 [/b] | [b]I/O管理器 [/b] | 电源管理器 |
LPC功能 | 高速缓存管理器 | 虚拟内存管理器 | ... | ... |
内核
内核由Ntoskrnl.exe中的一系列函数组成,它提供执行程序组件所使用的基本机制(如线程调度和同步服务)以及低级硬件体系结构的相关支持(如中断和异常调度),它们在每一处理器体系结构上是不同的。
内核中的许多函数存档在DDK中,因为需要它们实现设备驱动程序。
设备驱动程序
设备驱动程序是可加载的内核模式模块(通常以.sys结尾),它是I/O管理器与相关硬件的接口。
设备驱动程序不直接操作硬件,但它们调用HAL中的函数来实现对硬件的操作。
硬件抽象层
HAL是可加载的内核模式模块(HAL.DLL),它为Windows运行的硬件平台提供低级接口。它隐藏硬件相关细节,如I/O接口,中断控制器和多处理器通信机制——指定结构和机器相关的函数。
Windows需要平台相关信息时,不直接访问硬件,内部组件以及用户编写的设备驱动程序通过调用HAL例程获得移植。
参考资料:
Mark E. Russinovich and David A. Solomon,
Microsoft Windows Internals, 4th Edition, Microsoft
Press, 2004.
深入研究Windows内部原理系列之一:Windows的昨天、今天和明天
深入研究Windows内部原理系列之二:Windows体系结构-从操作系统的角度
深入研究Windows内部原理系列之三:Windows体系结构-从应用程序的角度
相关文章推荐
- windows内核初窥(一)------体系结构
- Win内核原理与实现学习笔记3-windows系统结构
- windows内核初窥(一)------体系结构
- Windows内核 WDM驱动程序的基本结构和实例
- windows内核初窥(一)------体系结构 学习
- Windows Driver Foundation - KMDF 内核模式驱动框架结构 第二部分
- windows与unix体系结构图(图)
- Windows内核学习小记之系统启动顺序
- linux内核学习(9)启动全过程概述之内核映像结构
- Windows网络体系结构总结
- (基础学习)MySQL体系结构
- oracle ocp 学习day5总结(oracle 体系结构基础)
- windows内核原理与实现学习笔记 (一) windows 系统结构
- 学习MySQL:体系结构及相关概念
- 《Spring技术内幕》学习笔记__IoC容器体系结构
- windows与unix体系结构图
- WPF and Silverlight 学习笔记(三):WPF体系结构
- 深入学习heritrix---体系结构(Overview of the crawler)
- Windows网络体系结构总结
- Windows内核学习笔记(四)-- 编写程序手动加载驱动程序