发展历史
Windows NT 的最久远的历史是 Microsoft 公司为最初的 IBM PC 设计的MS-DOS或PC-DOS。最早的版本DOS 1.0,在 1981年8月发布。它由 4000行汇编代码组成,运行于8KB内存中,使用Intel 8086 微处理器。随着Intel 不断推出功能越来越强大的 CPU 以及 PC 领域各种新技术的问世,Microsoft 不断推出新的 DOS版本。但DOS并不能充分发挥一些新的CPU的强大功能。
早在20世纪80年代早期,Microsoft就开始研究图形用户界面(GUI)以方便使用。到1990年,Microsoft 已经有了GUI的一个版本Windows 3.0。Windows 3.0 界面友好,达到Macintosh机的水平,但仍需要DOS的支持。随后,Microsoft开发出自己的Windows NT。Windows NT与Windows 3.x建立在完全不同的概念之上,它能充分发挥当前处理器的能力,提供了完全的多任务、单用户环境。1
Windows NT系统功能整个Windows NT系统的设计包括一个功能强大的执行模块,它运行于特权(或核心)处理器模式下。系统设计还提供系统服务、内部处理和一套称为受保护的子系统的非特权服务器。这些子系统运行于执行模块外的非特权(或用户)模式下。值得注意的是,执行模块提供进入系统的唯一入口,任何其他损坏安全或破坏系统的可能入口都是不存在的。
一个受保护的子系统可以作为一个常规(本地)进程运行于用户模式下。与应用程序相比,子系统也可以有一些扩展的权力,但是它不能看成是执行模块的一部分。因此,子系统不能越过系统安全结构或使用其他方式对系统造成破坏。子系统使用高性能的本地过程调用(LocalProcedure Call,LPC)与它们的客户机进行通信,或互相之间进行通信。
Windows NT执行模块包括一套用于系统服务的组成部分:对象管理器( Object Manager)、系统安全监控器(Security Reference Monitor)和进程管理器(Process Manager)等。这些模块的主要功能是从发出请求的子系统或应用程序中选定一个已经存在的线程(thread)。首先它判断要处理的线程是否有效,然后执行这个线程并把线程的控制权交回发出请求的程序。2
Windows NT特点Windows NT具有非常强的可维护性和可扩展性。Windows NT的系统设计十分简洁,整个系统设计中都使用了通用的编程标准,程序编码就像文档一样直截了当,后续的编程开发人员能够完成系统设计中的任何一块小的工作。
由于使用子系统来实现系统的主要部分,因此Windows NT能隔离并控制所依赖的系统环境。例如,POSIX 标准的变化只会影响一个系统组成部分,即 POSIX 子系统,进程结构的设计、内存管理和同步原语等都不会受到影响。Windows NT 设计适应了需求的改变和增长,如子系统可以在不对基本系统产生影响的情况下增加系统的功能,可以在不修改Windows NT执行模块的情况下,加入新的子系统。
在Windows NT4.0里,许多Win32的图形用户界面(GUI)子系统,如窗口管理器(Window Manager)、图形设备界面(GDI)和相关的图形驱动程序等,都从运行于csrss.exe子系统进程里的一段代码移到核心模式设备驱动程序(Win32k.sys),控制台、系统关闭和硬件错误处理等部分仍然保留在用户模式下,这种改变大大提高了系统性能,同时降低了内存需要,对应用程序开发人员没有丝毫影响。
Windows NT 具有非常高的鲁棒性。系统的核心模式部分输出定义精确的 API,通常没有模式参数或其他标志。API 实现简单、测试容易和归档方便。系统主要组成部分(如Win32、OS/2和POSIX)都被分割成独立的子系统,每个子系统设计简单,要实现的只是其API集合需要的某些特性。
Windows NT中广泛使用基于帧的异常控制器,使Windows NT和其子系统能以一种可靠有效的方式捕捉编程错误,过滤坏的或无法寻址的参量。
由于划分成核心模式系统服务和子系统,所以系统通过参量有效性的判断能更加有效地防止运行不良的应用程序破坏操作系统。