标题: 到底改进了什么?Win7/2008 R2核心剖析 [打印本页] 作者: 默默巫 时间: 2009-11-24 14:38 标题: 到底改进了什么?Win7/2008 R2核心剖析 [转自IT168]
Windows 7/Windows Server 2008 R2发布已经有近一个月了,加上RC/beta阶段,相信很多人都已经接触或者使用过了。很多人都已经知道在界面,以及DirectX、图形架构上的改进,然而却很少有清晰、令人信服的资料,说明操作系统变得更快强、更强、更稳定,有的只是功能变的更加复杂了。有没有最基本、最核心的改动,可以让人们决定升级到新的版本呢?
Windows Server 2008 R2,和Windows 7基于相同的内核,当然后面可以看到,它们还是有些区别的
[attach]57646[/attach]
Windows Server 2008 R2
[attach]57647[/attach]
大致上,4~5年就会有一个Major Release(主要发布),而每两年多就会有一个Release Update(发布升级)
[attach]57648[/attach]
较老的路线图
从路线图上可以看出,Windows 7和Windows Server 2008 R2都属于发布升级,而之前的Vista/Server 2008则属于主发布。不过,从下面的资料以及从后面的文章内容上看,其实更新的东西还是挺多的。Windows 7/Server 2008 R2的6.1的版本号有部分的因素是考虑到兼容性。一些程序会需要检查主版本号(6)。
[attach]57649[/attach]
和Vista/2008版本号仅增加0.1的版本号主要是为了兼容性
下面我们将会看到Windows NT内核上的多种变化,主要目标放在了NT 6.1(Windows 7和Windows Server 2008 R2)上,但是也会涉及到NT 6.0(Windows Vista和Windows Server 2008)和NT 5.0(Windows XP/Windows Server 2003)。首先我们会看到的是对Windows NT架构的简要描述。
作者: 默默巫 时间: 2009-11-24 14:41
在谈及Windows的内核的时候,我们首先介绍一下Windows NT的架构。Windows 9x系列采用的是单内核的设计,而Windows NT则是微内核的设计,它们是很不相同的。如Windows 2000、Windows XP/Windows Server 2003、Windows Vista/Windows Server 2008一直到现在的Windows 7/Windows Server 2008 R2,都是基于、沿用了Windows NT的架构设计。
在199x年,微软与IBM合作开发OS/2决裂,之后,微软来自原DEC的人马开始专心制作盖茨梦想中的操作系统,新的操作系统部分基于OS/2 3.0,同时还带有DEC VMS的因素,这个操作系统被命名为Windows NT,NT就是New Technology新技术的意思。
[attach]57651[/attach]
Microsoft Windows NT 3.1,1993年,一直到现在,发展了16年
为此什么称之为NT呢?Windows NT采用了全新的设计思想,这牵涉到操作系统内核上的理念。在80年代前,主流的操作系统,要么是属于原始的没有内核的产品,要么属于单内核产品,到了80年代,学术界开始流行一种微内核的风潮,出现了如Mach(1985年)这样的经典微内核操作系统。典型的单内核系统则有各种Unix和类Unix。
[attach]57653[/attach]
Windows NT内核, 适合3.1~3.51版本
作为一个以GUI为根本的操作系统,图形性能是基础。在通常情况下,微内核的性能比单内核性能要低,因为单内核通过系统调用而微内核通过消息传递。虽然Windows NT发布的时候采用了特别的方式改进了图形性能,如优化的消息传递协议LPC(Local Procedure Call,本地过程调用,用来和RPC对应),并且还从中特别创造了Quick LPC,通过事件对(Event Pair)这个特别的结构来加速CSR subsystem(Win32子系统)的图形操作。然而微软感到还未足够,到了1996年发布的Windows NT 4.0,微软将图形相关的部分从用户层放入了内核层:
[attach]57654[/attach]
Windows NT 4.0架构图,带颜色的部分在之前的版本中原本属于CSR subsystem的一部分;Windows NT 4.0之前,驱动程序也有一部分在用户层
在Windows NT系统中,所有的图形界面操作都和Win32子系统(上图是CSR subsystem)相关,系统通过调用Win32子系统的GDI(Graphics Device Interface,图形设备接口)API,然后GDI部件调用显卡驱动来实现图形操作,后一种调用比前一个调用频繁的多,因为一个简单的GDI命令需要和显卡驱动进行频繁的交流来完成。在Windows NT 4.0之前,GDI和搭配的USER、WIndows管理器都在CSR subsytem进程中,也就是在用户层,因此图形操作会需要频繁地在用户态和核心态之间切换,引起很多的系统开销。而在Windows NT 4.0中,只有数量相对较少的GDI API调用会导致用户态和核心态之间切换,因此图形性能得到了很明显的改进。如PowerPoint的性能就提升了15%-20%。在“便宜”的高端工作站上,Windows NT 4.0开始和Unix竞争。Windows NT 4.0的内核的大架构一直沿用到现在。
*Windows Vista在LPC机制当中还引入了一个新的ALPC(Advanced Local Procedure Call)。作者: 默默巫 时间: 2009-11-24 14:44
相信没听说过进程和线程概念的人应该很少,作为程序运行的实体,我们每天都在不停地创建、运行进程和线程。
Windows NT基于内核级线程模型,所有的线程都由内核管理调度,这个调度由内核的叫做Dispatcher分发器(也叫Scheduler调度器)的部件完成进行。进程的调度则由位于执行体的进程管理器来完成。
Dispatcher管理着线程的列表,以及各种时钟,如下图所示,Windows Server 2003也就是Windows NT 5.0具有一个大的Dispatcher Lock,下面管理着多个Timer Lock。Lock锁是一个共享/同步机制,同一时间只能有一个拥有者获得一个锁,并获得锁代表的系统资源。锁的概念让多线程的编程模型变的简单,然而却不利于并行运行,因为在一个拥有者获得资源的时候,其他用户只能等待,无所事事。Windows Server 2003确保了同一时间只能由一个线程来修改相关的状态,以及定时器:
[attach]57655[/attach]
虽然Windows NT一开始就支持多处理器,然而多个CPU上的线程必须排队等候获得Dispatcher的锁
[attach]57656[/attach]
到了Windows Server 2008(也就是NT 6.0),修改各种定时器终于不再需要先获得Dispatcher的锁了,分散的锁让2008的多线程性能有所提升。如同配置的终端服务器上,2008可以比2003支持30%多的并发用户
Windows Server 2008相对Windows Server 2003在锁上面的改进不算太大,没有动到筋骨,然而Windows Server 2008 R2上的变动可就大了:Windows Server 2008 R2彻底去掉了Dispatcher的锁。
[attach]57657[/attach]
在Windows Server 2008 R2上,以往的单个Dispatcher锁被更细小的、以对象为单位的小锁代替,同时还有很多的操作是无锁化的,这些都彻底提升了多线程的运行性能。
Windows Server 2008 R2提供了一个新的特性叫做FTH(Fault Tolerant Heap,容错堆)来减缓这个问题,虽然它主要是为开发者准备,不过对最终用户也有一些作用,在监测到堆污染后,系统将会对崩溃的程序进行监视以及应用一些特别的措施。
[attach]57675[/attach]
[attach]57676[/attach]
在可靠性方面,Server 2008 R2在内核之外还有一些改进,如DWM模型的改进、降低图形驱动导致的崩溃等,见:比Vista更完善 Windows 7图形架构解析,此外,Server 2008 R2当中,系统缓存、分页池以及系统代码现在具有了独立的Working Set,之前它们是公用一个Working Set,这对可靠性以及性能都有些好处。作者: 默默巫 时间: 2009-11-24 15:59
我们已经谈及了Windows 7/Windows Server 2008 R2在核心上的多个改进,如两个大锁的去除,提升了多线程运行的性能并提高了系统的多核扩展性,这很符合现下处理器走向多核、并行处理的现状。为了更好的并行处理,DPC等个方面也有所改进。总体而言,不管你有多么喜欢Windows XP,Windows 7/Windows Server 2008 R2可以更好地配合现在的新硬件,功能更强,性能更好。
[attach]57677[/attach]
Windows Server 2008 R2,2009年10月22日
透过前文,我们也可以发现,有些特性只有Windows Server 2008 R2才具有,客户版的Windows 7缺少DPC分布式定时器,32位Windows 7缺少用户级线程。对于一些发烧友来说,Windows Server 2008 R2也是一个可以选择的桌面系统。而对于原来的桌面PC/服务器,Windows 7/Windows Server 2008 R2是一个值得升级的对象,当然,这最后还要取决于你愿不愿意花升级的钱。