Windows操作系统的发展.pdf
《Windows操作系统的发展.pdf》由会员分享,可在线阅读,更多相关《Windows操作系统的发展.pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、专题报道Cover FeaturesCommunications of CCF 2008/940Windows操作系统的发展潘爱民 戴夫普罗伯特引言Windows是微软公司在操作系统领域中的品牌和产品系列。微软公司在操作系统领域中的发展最早开始于MS-DOS操作系统,并在20世纪80年代后期分为2个分支:一个分支是基于MS-DOS的Windows开发平台,最后发展成为Windows 95/98/Me等一系列操作系统;另一个分支则发展成以Windows NT为代表的操作系统系列,经历了Windows NT、Windows 2000、Windows XP/Server 2003,直到Windows
2、 Vista/Server 2008。其中,第2个分支是按照20世纪80年代后期的硬件水平进行全新设计的操作系统,包含了现代操作系统的各个要素,也奠定了Windows作为现代操作系统典范的基础。毫无疑问,Windows是一个成功的商业操作系统。在个人计算机产业中,无论是台式机,还是服务器,Windows都是主流的预装操作系统,占据了相当大的市场份额。本文首先从Windows操作系统的各个发行版本来介绍Windows NT内核的发展史,其次讲述Windows NT内核的结构以及它的一些重要特征,再次讲述在Windows Vista/Server 2008和下一版本中内核的一些最新进展,最后介绍W
3、indows操作系统的发展对软件产业的影响。Windows操作系统的历史Windows NT内核是在1988年秋季开始设计的。当时的设计目标是提供一个真正的32位、抢占式调度和采用虚拟内存的网络操作系统。设计的初衷是让这个操作系统可以在多种硬件体系结构和平台上运行。但随着计算机硬件市场的逐步发展,Windows NT最终只能支持英特尔处理器兼容的体系结构。另一个值得一提的设计目标是兼容已有的操作系统,包括对于OS/21、POSIX2和Windows3的兼容性支持。但其间由于Windows 3.0在商业上取得巨大成功,Windows NT的设计也作了相应调整,改为以支持Windows应用程序的兼
4、容性为主,而把OS/2兼容性移到一个子系统中。Windows NT内核在设计之初就有清晰的目标,并且微软还集中了一批以戴维卡特勒4(David Cutler)为首的当时最有内核设计经验的专家来担当此任。在此背景下,不但使Windows NT内核有一个非常整齐、先进的体系结构,也使其综合考虑了安全性、扩展性1 当时IBM公司主导发展的一个兼容主机的操作系统2 针对UNIX类操作系统的一个接口标准3 基于MS-DOS版本的窗口系统4 VAX/VMS、RSX-11M和VAXELN等操作系统的设计者 Communications of CCF 2008/941等要素。该结构在接下来的20年发展历程中基
5、本保持不变,即使近几年硬件有了飞速发展,Windows XP/Vista、Server 2003/2008仍然沿袭了NT内核的基本结构,后文将对其进行讨论。基于Windows NT内核的第一个操作系统发布于1993年,为Windows NT 3.1。该版本支持Intel i386、Intel i486、MIPS R4000以及Digital Alpha处理器。此后,1994年秋天发布了Windows NT 3.5。1995年5月发布了Windows NT 3.51,并在这个版本中加入了对IBM PowerPC处理器的支持。这些版本均实现了Windows NT的基本设计目标。但是,从NT 3.1
6、到NT 3.51版本变化的主要目的是要让系统运行得更加可靠、速度更快,并且让系统自身的规模变得更加合理、精巧。Windows NT 3.13.51版本采用了Windows 3.1操作系统的窗口界面风格,并且保持了对MS-DOS和Windows 3.1应用程序的兼容性。之后,Windows NT 4.0于1996年7月发布。此版本完全融合了Windows 95的界面风格,并且对Windows子系统作了适当调整,特别是将GDI5转移到内核中,从而显著地提高了系统性能。Windows NT 4.0是一个相对比较成熟和稳定的网络服务器操作系统,并且内置了微软(Microsoft)IIS6作为基本的网络
7、(Web)服务器软件。在随后的3年多时间里,微软又为NT 4.0版本发布了一系列补丁,更进一步地完善了NT 4.0作为企业服务器操作系统的能力。Windows 2000是其后的下一个版本,综合了Windows NT 4.0及其补丁中的各种组件,如活动目录和COM+7等。而且,Windows 2000终结了Windows 9x这一分支的发展,也就是说,自Windows 2000以后,微软的客户端操作系统和服务器操作系统合并到一起。Windows 2000包含4个版本,既有客户端版本,也有服务器端版本。这些版本共享同样的内核文件。除了功能上的综合以外,Windows 2000在安全性方面也有显著提
8、高。它充分发挥了NT内核中安全框架的作用,为企业网络环境提供全方位的安全服务。微软于2001年8月发布了客户端操作系统Windows XP,并于2003年3月发布了服务器端操作系统Windows Server 2003。Windows XP采用了全新的用户界面风格,并且在稳定性和运行效率方面比Windows 2000有了较大改进。Windows XP首次采用了软件激活机制来应对软件盗版问题,实践证明这是一种有效的软件保护手段。Windows Server 2003在稳定性、安全性和易管理方面都超过了其前身Windows 2000服务器版本,是微软公司在服务器操作系统领域发展的一个重要里程碑,并
9、且也是微软在倡导可信计算(Trustworthy Computing)以后发布的第一个操作系统。顺便提及,从Windows XP和Windows Server2003开始,Windows操作系统除了发行32位版本,还发行64位版本,标志着Windows操作系统进入了64位计算的领域。Windows Vista和Windows Server 2008分别是Windows XP和Windows Server 2003的替代版本。Windows Vista于2007年1月发布,除了全面更新用户界面风格之外,还集成和增强了桌面搜索能力。Windows Vista比过去任何一个Windows操作系统更加
10、关注安全性。它避免了让用户直接在管理员权限下运行软件,从而防止了因滥用管理员权限而导致的入侵事件发生。Windows Server 2008集成了Vista的内核更新,并且在内存和处理器等硬件资源的热插拔方面提供了更好的支持,从而减少了服务器系统因需要重新引导而停机的次数和时间。另外,Windows Server 2008对硬件失败和进程崩溃提供了更加全面的报告机制。Windows Server 2008所有的版本都支持多处理器,不再区分单处理器和多处理器版本。值得一提的是,Windows 5 Graphics Device Interface,图形设备接口6 Internet Informa
11、tion Server7 一种基于Windows操作系统的开放的构件标准专题报道Cover FeaturesCommunications of CCF 2008/942Server 2008新引入了对虚拟化的支持,此特性被称为Hyper-V。另外,Windows Vista和Server 2008改进了Windows NT文件系统NTFS(New Technology File System),文件可以在不重新启动的情况下做到自我修复。而在此之前,操作系统必须在重新引导之后才能修复数据损坏。由于采用了更新的SMB28协议,Windows Vista客户与Server 2008服务器之间的数据传
12、输效率也有较大的提高。Windows操作系统的核心结构NT内核经过将近20年的发展,已经非常成熟,其扩展性和安全性等重要的设计目标在这段发展历程中体现得淋漓尽致。Windows操作系统的每一个重要版本都将这一框架推向顶峰。在微软即将推出的下一个版本(NT内部版本7.0)中,这一框架依然会沿袭下来。Windows NT内核结构下面我们将介绍Windows操作系统的基本框架。Windows NT内核结构本身在Windows操作系统的发展历程中并没有重大变化,所以这些内容适用于自Windows 2000以后的各个版本。图1显示了Windows NT内核的基本结构图。NT内核采用了双模式(dual m
13、ode)结构来保护操作系统本身,以避免应用程序的错误波及到操作系统。操作系统核心运行在内核模式(kernel mode)下,应用程序的代码运行在用户模式(user mode)下。每次当应用程序需要用到系统内核或内核的扩展模块(内核驱动程序)所提供的服务时,应用程序都会通过硬件指令从用户模式切换到内核模式,当内核完成了所请求的服务以后,控制权又回到用户模式代码。这样,用户代码和内核代码有各自的运行空间,而且它们可以访问的内存空间也并不相同,在32位系统中,内核代码可以访问当前进程的整个4GB虚拟地址空间,而用户代码只能访问底端的2GB虚拟地址(或者3GB,如果打开了内核启动开关/3GB的话)。对
14、于每个进程而言,用户空间是独享的,而内核空间则是共享的,所以内核空间有时候也称为系统空间。从结构上看,N T内核分为三层,与硬件直接打交道的这一层称为硬件抽象层(Hardware Abstraction Layer,HAL)。这一层的用意是把所有与硬件相关联的代码逻辑隔离到一个专门的模块中,从而使上面的层次尽可能做到与硬件平台独立。HAL之上是内核层,包含了基本的操作系统原语和功能,如线程和进程、线程调度、中断和异常的处理、同步对象和各种同步机制以及内存管理等。在内核层之上则是执行体(executive)层。这一层的目的是提供一些供上层应用程序或内核驱动程序可以直接调用的功能和语义,包括进程和
15、线程管理、虚拟内存的管理、安全引用监视器(Security Reference Monitor)、I/O管理、即插即用设备管理、电源管理、缓存管理和一组辅助运行函数。在执行体中也包含一个对象管理器,用于统一管理执行体中的对象。内核层和执行体层有分工。内核层实现操作系统的基本机制,把所有的策略决定留给了执行体。执8 Server Message Block。图1 Windows NT内核结构?DLLWindows?NTDLL DLL?(executive)?(HAL)?/GDI*?*Graphics Device Interface?Communications of CCF 2008/943行
16、体中的对象绝大多数封装了一个或者多个内核对象,并且通过某种方式(比如对象句柄)暴露给应用程序。这种设计体现了机制与策略分离的思想。在内核中除了执行体、内核和HAL以外,其他的模块都以设备驱动程序的形式存在。Windows操作系统中的设备驱动程序并不一定要对应于物理设备。它既可以创建虚拟设备,也可以完全与设备无关。可以认为驱动程序是Windows内核的一种扩展机制。系统通过它们可以支持新的物理设备或者扩展功能。特别值得一提的是,内核模式下有一个特殊的驱动程序,称为Win32k.sys。它负责管理Windows的窗口和图形设备接口(GDI)。该驱动程序和用户空间中的Windows子系统进程(在Wi
17、ndows中为csrss.exe进程)以及一组系统动态链接库(Dynamic Link Libraries,DLL)合起来构成了Windows子系统。其中Windows子系统进程主要负责控制台窗口以及创建或删除进程和线程等。在Windows NT的早期版本中,Windows除了支持Windows子系统,还支持其他的环境子系统,包括POSIX和OS/2子系统。在Windows XP以后的发行版本中,微软只支持Windows子系统。图1中只显示了Windows子系统。Windows应用程序通过一组系统动态链接库与操作系统进行通讯。最基本的系统动态链接库包括Kernel32.dll、User32.d
18、ll、Advapi32.dll和GDI32.dll。应用程序也可以直接调用NTDLL.DLL中的函数与操作系统进行通讯。Windows操作系统对于应用程序的接口面是大量的API(Application Programming Interfaces,应用程序接口)函数,这些函数的具体实现都在系统动态链接库中。在必要的时候,系统动态链接库也通过NTDLL.DLL与操作系统进行通讯。所以,Windows应用程序开发人员在调用Windows API函数的时候,实际上调用了系统动态链接库中的函数。NTDLL.DLL负责将用户模式的请求转译为内核模式的服务,所以,此过程会涉及到模式切换(mode swit
19、ch),在英特尔 x86硬件体系结构上通过sysenter/sysexit来完成。总之,Windows应用程序与操作系统打交道有以下四种方式:1.应用程序调用Windows API函数,直接访问操作系统内核提供的功能,比如创建一个互斥体(mutex)对象。2.应用程序调用GDI32或User32的API函数以及调用Win32k.sys中的功能。3.应用程序通过本地过程调用(Local Procedure Calls,LPC)访问Windows子系统进程中的功能,比如创建进程。4.应用程序通过DeviceIoControl函数来调用设备驱动程序的功能,这是用户程序访问设备驱动程序的一种标准方法。
20、用户程序也可以通过WriteFile/ReadFile来访问驱动程序的标准数据传输方法。除了Windows子系统进程csrss.exe以外,另外还有一些系统进程对于Windows系统来说是必不可少的,它们是:系统空闲进程(Idle):其标识号(ID)为0,其中每个处理器或核对应一个线程。系统(System)进程:其标识号为4。它包含了内核模式系统线程。会话管理器(Session manager,smss.exe):Windows利用会话来隔离每个登录用户的运行空间。登录进程(Winlogon.exe):负责处理交互用户的登录和注销。本地安全认证服务进程(lsass.exe):负责执行与认证和安
21、全检查相关的工作。Shell9进程(Explorer.exe):这是Windows的默认Shell。服务控制管理器(Services.exe):负责管理Windows的系统服务。Windows操作系统特征上一部分介绍了Windows操作系统的基本框架,包括内核模式的系统组件和用户模式9 Shell就像一个壳层,介于用户和操作系统之间,负责将用户的命令解释为操作系统可以接收的低级语言,并将操作系统响应的信息以用户可以理解的方式来显示。专题报道Cover FeaturesCommunications of CCF 2008/944的系统进程。接下来,我们将从现代操作系统基本功能的角度来介绍Wind
22、ows操作系统的特征。进程和线程管理在Windows操作系统中,进程是系统分配资源的一个基本载体。它定义了一个独立的用户地址空间,所有在这个地址空间中特有的信息都由进程来管理,比如,进程的虚拟内存分配。在Windows中,进程本身并不是系统调度的对象,所以,它不参与CPU资源的分配,但是,每个进程至少有一个线程。操作系统按照线程来分配CPU资源。虽然Windows把空间资源的管理与计算资源的管理分开了,但是两者又有相互关联。下面分别介绍进程和线程。应 用 程 序 可 通 过 进 程 句 柄 来 访 问 一个进程。进程句柄对应于执行体中的一个EPROCESS10对象。在EPROCESS中又封装了
23、一个KPROCESS11,对应于内核层的一个对象。EPROCESS对象中包含的重要信息有:进程ID、各种配额限制(比如可使用多少非换页内存)、虚拟地址描述符、工作集信息(参见下文关于内存管理的介绍)、处理异常和调试的端口信息(允许其他进程通过这些端口接收异常或调试消息)、访问令牌(用于安全认证)、句柄表、进程环境信息(可执行文件的版本、基地址、堆(heap)等)以及Windows子系统所需要的一个信息块。KPROCESS对象是EPROCESS对象的一个组成部分,有时候也称为进程控制块(PCB,Process Control Block),其中包含了涉及线程调度所需要的一些信息,例如内核模式时间
24、和用户模式时间计数、进程的基本优先级、进程亲和性(affinity),更重要的是一个指向进程页目录的指针,代表了该进程的整个地址空间。在Windows中,线程是真正的调度单元。与之类似,线程的数据结构也分为ETHREAD和KTHREAD,分别对应于执行体层和内核层所需要的管理信息。ETHREAD中包含的信息有:创建和退出的时间信息、线程ID、线程的启动地址、身份信息、定时器信息,以及正在处理的I/O请求,并且还内嵌一个KTHREAD结构。KTHREAD中包含的信息有:用户模式和内核模式时间、内核栈信息、指向系统服务表的指针、线程调度信息、同步信息、待处理的APC(Asynchronous Pr
25、ocedure Call,异步过程调用)列表、定时器信息和等待对象的列表等等。值得一提的是,Windows应用程序通过系统API来创建进程和线程,不仅需要执行体层和内核层建立起相应的内部对象,还需要Windows子系统参与并维护相应的信息,因为这些进程和线程也是属于Windows子系统的。详细的过程请参考文献6。Windows以线程为单位进行调度,实现了一个基于优先级的抢占式调度算法。每个线程有一个基本的优先级和一个动态的优先级,系统在选择线程的时候按照动态优先级来决定顺序。在某些情况下线程的优先级会得到提升,比如当I/O完成以后(目的是让那些正在等待I/O完成的线程有更多的机会被立即运行)、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 操作系统 发展
限制150内