认识Windos 95结构 Win 95支持的特权级 所谓特权级是386以上档次的微处理器在硬件一级提供的一种保护功能。该特权级共分为4级，具有不同级别的程序对硬件资源的使用权限是不同的。这样的目的是防止那些有缺陷的程序对操作系统进行破坏。 4个特权级由0-3级组成，其中0级的特权级最高，3级最低。这4个级别可形象地看成是4个同心圆或环（0级也称铂环，l级称金环，2级称银环，3级称铜环）。出于性能的考虑，Win 95仅使用了其中的两级：0级和3级。 在Intel的硬件结构中，处理器在0级下运行时，可以使用处理器的所有资源和能力。这一级是为核心的操作系统组件保留的，如内存管理、分页和低级输人／输出操作。3级是为应用程序和较高级的操作系统功能保留的。程序在3级下运行时，得到一个虚拟环境。这个虚拟环境由操作系统设置并使应用程序互相隔离。因此，各个程序之间就不太可能相互干扰。
Windows 95的0级环
0级下的主要组件有：虚拟机管理、抢光多任务。内存分页管理。文件系统服务、网络以及配置管理。这些组件构成了操作系统的核心基础。
与Windows 3.x相比，Win 95的0级环组件有三个主要变化：（1）支持抢先多任务和多线程；（2）文件管理子系统为32位保护模式；（3）支持即插即用设备。
下面分别谈谈0级环的主要组件。
一、虚拟机管理子系统
1．虚拟机管理程序
虚拟机管理程序（VMM）是Win95中最重要的组件之一，它提供了一个称做系统虚拟机的特殊虚拟机和多个同步的虚拟机（每个都能运行DOS）以及包括实际计算机全部特征的虚拟环境，如CPU、内存和输人／输出设备等。
VMM提供的虚拟环境是通过对实际设备的分时共享或通过模拟实际并不存在的设备特征来实现的。例如对虚拟内存的模拟，可以向程序提供一个比实际内存更多（或更少）的内存供程序使用。一个DOS虚拟机可用内存就比实际存在的物理存储器要少。此外，VMM还负责多线程的抢先时间片调度。
Win 95的VMM功能与Win 3.x的VMM相比，最主要的一点是Win 95可动态地加载和卸载VxD文件（虚拟设备驱动程序），故实现了即插即用功能。而且在Win 95中，每一个32位线程和16位Windows应用程序以及每个DOS虚拟机均可由VMM调度程序调度。
2．虚拟设备驱动程序
虚拟设备驱动程序，即.VXD文件，也是虚拟机管理子系统的组成部分之一，这些VXD文件使得设备虚拟化。Win 95动态地加载或卸载不同的设备驱动程序，如果需要，VXD文件也可被重载。
虚拟设备驱动程序（VxD）概念起始于Windows 386增强模式。这个机制使Mierosoft和第三方供应商能为特定的硬件设备写驱动程序，使得很多不同类型的设备都可以用一种标准化的方式处理。Win 95采用了动态地检测硬件配置并自动加载合适的设备驱动程序的方式。只有确实需要的驱动程序才加载，并且加载以后，驱动程序还能根据需要动态地进行清除。从而实现了完全意义上的即插即用功能。
3．内存分页管理和虚拟内存
VMM中的内存管理有两个功能模块：一是用来管理虚拟内存的内存分页管理调度程序；二是用来为DOS虚拟机提供扩展内存的DOS保护模式接口（DPMI）服务程序。
在Win 95中，虚拟内存按“页”进行管理，每页大小固定（4096字节）。CPU访问内存时，对每个地址均要进行映射，即通过对“页表”的查找，把虚拟内存地址映射成实际内存地址。由于采用了硬件地址映射和页表，Win 95的虚拟内存不仅具有好的性能而且还能提供保护。当一个程序试图去访问没有分配给它的内存时，硬件会发出一个保护信号，然后操作系统会来进行处理。
Win 95可以访问的整个地址空间达4GB，即32位地址的寻址范围（232），在Win 95下运行的每个进程也都有其独占的4GB空间。在这4GB空间中，应用程序可寻址低端的ZGB空间，而高端的ZGB则保留给Win 95系统使用，并且其中有的部分可由所有正在运行的进程共享。由于只有386以上的处理器才具有32位地址空间，因此，Win 95只能在386以上的CPU环境下工作。
4．DPMI 服务器
DPMI是为DOS开发的虚拟控制程序接口（VCPI）的一种改进产品。除了包含在Win 3.1和Win 95之内的DPM U即EMM386.EXE ）外，也有第三方供应商在其产品中实现的DPMI，如QEMM和386MAX等。这个规范使DOS程序通过使用扩展内存充分利用IMB以上的内存。Win 95的DPMI服务程序可用来为DOS程序提供一个共享的扩展内存环境。
为了使多个DOS应用程序共享扩展内存，所采用的方法是，在第一个应用程序把控制权交给第二个应用程序之前，要记录下它使用内存的组织方式。第二个应用程序得到控制权之后可以完全按照自己的方式对内存重新组织和使用。而在第二个应用程序要交出控制权时，它不但要记录下它使用内存的组织方式，而且还要把内存恢复到它使用之前的状态，然后再把控制权交回给前一个应用程序。
DPMI采用与应用程序独立的方式提供分配和释放扩展内存的基本服务，要使不同的应用程序共享扩展内存，这些程序必须遵守DPMI协议。如果某个应用程序不用DPMI服务并且不遵守DPMI协议，那么该应用程序使用扩展内存就有可能潜在地破坏另外应用程序的数据，从而造成各种错误的出现和死机。
5．进程、线程、多任务及其调度
所谓进程，在Win 95中，就是指一个程序的执行过程。线程则是由进程派生出来的一组代码（指令组）的执行过程。一个进程可以产生多个线程，这些线程都共享该进程的地址空间，它们可以并行和异步执行。采用线程最主要的好处是：使同一个程序能有几个并行执行的路径，以提高执行速度；线程需要的系统开销比进程要小。在Win 95中，“任务”是指线程而不是指进程。
多任务执行是指一个计算机系统同一时刻运行多个程序。Win 95采用的是带优先权的多任务方式来运行基于32位的应用程序，这种方式称为“抢先式多任务”。在该方式下，Win 95可以在需要时中断当前任务，再按照任务队列中各个任务的优先级别来进行任务的调度。为兼容起见，基于16位的应用程序仍采用协作式方式完成多任务执行。
Win 95抢先式多任务执行实际上就是抢先式多线程执行。为了抢先式多线程执行的实现，每个线程有一个优先级值，范围是从oyg31。优先级0最低，保留给系统使用。优先级1到31分成四类：空闲（l-6），正常（5-ll），高（11-15）和实时（16-31）。正常类又进一步分为两级：后台（5-9）和前台（6-11）。注意范围是有重叠的，这样做允许灵活调度，例如，允许某些后台任务可比某些前台任务更重要，尽管在通常情况下，前台任务的优先级应该更高。使用实时优先级时要非常当心。当一个任务的优先级设得太高时，可能导致系统中其它任务不能执行。
VMM负责在分时抢先的环境里调度各个进程和线程，VMM包括以下服务：生成线程、管理线程、撤消线程和线程调度。VMM中有两个调度程序：主调度程序和时间片调度程序。主调度程序负责确定最高优先级的线程。只有最高优先级的线程才会运行，其它伉先级数低的都将被封锁。时间片调度程序负责为所有具有最高优先级的可运行任务分配时间片。
系统运行过程中，线程的优先级可由系统或设备驱动程序（或两者）改变。例如，一旦产生中断，处理这个中断的线程优先级可临时提高，以使它可立即得到时间来处理该中断。完成后，优先级可以再降低。
在抢先式多任务中，基于Win 32的应用程序不必让位给其它程序就能以友好的方式实现多任务。操作系统会根据系统的需要把控制权交给某个运行中的任务，或从某个运行中的任务移走控制权。这才是真正的多任务操作系统。
二、文件管理子系统
从用户角度看，Win 95文件管理子系统的主要特点是允许使用长文件名。用户可用长达255个字符的有意义的名字命名其文件，突破了在DOS和Win3.x中文件命名的“8.3”规则。
从系统角度看，Win 95文件管理子系统的主要特点是采用了全新的32位文件管理和动态高速缓存，从而能管理更大容量的磁盘驱动器，更合理分配和使用磁盘空间，更合理使用内存。
1．可安装的文件系统管理程序
一台微机和网络中，可能存在多种类型的外部设备，例如本机磁盘、CD-ROM、网络驱动器等，因此构成了多种类型的文件系统。这些不同的文件系统具有不同的驱动程序和不同的访问方式。可安装的文件系统管理程序的作用就是针对要访问的设备选择合适的方法，完成与设备驱动程序的匹配，从而实现对计算机中存在的多种类型文件系统的访问。
2．虚拟高速缓存
虚拟高速缓存是一个32位保护模式高速缓存驱动程序，它取代了过去的SMARTDRV。VCache的主要功能是在内存中开辟一个公共缓冲区供VFAT（32位虚拟文件分配表）驱动程序、网络重定向程序和CDFS驱动程序（CD-ROM文件系统）使用。VCache与SMARTDRV虽然都是利用内存来作为缓冲区，但两者在管理和使用缓冲区的方式上并不相同：SMARTDRV使用的缓冲区大小固定，而VCache管理的内存区则可根据系统加载情况扩展或收缩。由于VCache能被不同的文件系统共享，所以也提高了内存的利用率。
3．文件分配表
作为DOS系统和Window。系统所使用的主要磁盘格式，FAT经历了12位、16位和32位的发展而日趋完善。16位FAT的最大问题是不能支将超过2GB的磁盘驱动器，也就是说，在16位FAT的管理下，一个分区的容量不能超过2GB。
而在Win 95中，则采用了32位的虚拟文件分配表。VFAT是一个32位的与DOS兼容的文件系统，但VFAT系统并不能真正改变磁盘上的结构，这样做的目的是为了保持与FATI6的兼容性。
Win 95 OSRZ以后的Windows版本则采用了全新的32位FAT，FAT32的主要特点有：
（1）支持多达2000GB的驱动器；
（2）能以更小的“簇”来分配磁盘空间，有利于提高硬盘利用率。
4．网络重定向程序
在Win 95中，网络重定向程序取代了DOS中的实模式重定向程序，其功能是实现与各种网络通讯协议的接口。与DOS实模式重定向程序相比，Win 95的网络重定向程序是作为一个驱动程序来实现的，是可安装文件系统的一部分，而DOS实模式重定向程序是作为TSR程序来实现的，必须使用IMB以下的实际内存。
由于网络重定向程序是IFS的一部分，所以Win 95能同时支持多种协议。例如，一台Win 95机器能同时使用IPX／SPX（IPX／SPX通常被Netware网络所用）。Net-BEUI和TCP／IP协议进行通讯门CP／IP常常与广域网WAN和UNIX相联系）。
5．CD-ROM文件系统
在Win 95中，CD-ROM文件系统是一个用于支持CD-ROM的设备管理程序，支持ISO 9660格式的CD-ROM，它取代了DOS实模式的MSCDEX程序。CDFS对CD-ROM支持的逻辑类型与VFAT部件对硬盘的支持是一样的，它提供了对CD-ROM数据的32位保护模式的高速缓冲。
在Win 95中，CDFS是内置的，加载时不占用传统实内存，效率比MSCDEX和实模式高速缓存高，能够更好地实现访问CD-ROM时的多任务和动态高速缓存。
6．块输入／输出子系统
块输人／输出子系统是用于管理外部存储设备如磁盘、光盘等输人／输出设备的一个子系统。
块输入/输出子系统的组成及含义如下：
I／O监督程序：负责设备驱动程序从底向上的加载和初始化。
卷跟踪驱动程序：负责跟踪在介质可移动设备里插人的当前卷。例如，跟踪软盘驱动器或者CD-ROM驱动器中的当前磁盘或光盘是否被更换。这种跟踪的目的是为了避免读写的数据受到破坏。
专用类型驱动程序：在本质上可以认为是所有相同类型设备驱动程序的通用部分。例如，on-non rso负责各种CD-ROM驱动器的通用功能，磁盘TSD负责各种硬盘的通用功能，而不考虑特定型号的特殊功能。这种机制使实际的设备驱动程序可以更为短小、紧凑，并可以使用由Microsoft测试和调试好的通用程序代码。
SCSI格式化程序：包括磁盘SCSI格式化程序和CD-ROM SCSI格式化程序。它们负责完成一般命令向专用SCSI命令的转换。在需要使用SCSI设备时，TSD首先把命令发送给SCSI格式化程序，由这个SCSI格式化程序把一般命令转换成指定设备的专用SCSI命令。SCSI格式化程序完成转换后，再将命令发送给SCSI端口驱动程序。
端口驱动程序：包括IDE和SCSI等端口驱动程序，每个端口驱动程序支持一种专门的设备。端口驱动程序的主要功能是检测并初始化适配器、发送输入输出请求、处理来自设备的中断以及负责错误恢复和登记等。
实模式映射程序（RMM）：RMM的功能是实现对那些没有得到Win 95自然支持的设备的兼容。从本质上说，RMM是把来自IOS的32位调用转换成16位请求，然后将其发送给16位模式DOS驱动程序。从16位实模式驱动程序返回的结果再转换成标准的32位格式后送回给IOS。
三．配置管理程序（CM）
配置管理程序是Win 95中即插即用环境的核心。配置管理程序负责维护注册表中描述当前配置情况的信息库，负责给对应的设备驱动程序通报它们所分配的资源，处理对注册表的所有调用，并完成设备驱动程序的加载、执行和卸载。
配置管理程序子系统包括：即插即用配置管理程序、枚举程序、仲裁程序和设备驱动程序四部分。
注册表（Registry）是Win 95中极为重要的部分，它实际上是一个用来存放用户应用程序和计算机系统的配置信息数据库。注册表由两个独立的文件组成：
SYSTEM.DAT：用于存放计算机的系统信息，如安装的硬件及设备驱动程序信息；
USER.DAT：用于存放用户特有的信息（如墙纸。窗口颜色等）以及其它应用程序信息。
注册表中的硬件部分通常用来支持Win 95的即插即用特性。当Win 95检测到机器上的各种设备时，就把结果保存在注册表中，因此注册表是实现即插即用功能最重要的条件之一。
枚举程序负责收集总线上的设备，一台机器上可以有几种总线，例如有ISA总线和PCI总线。另外，系统设备，如时钟、数学处理器（浮点处理器）以及主板上的其它设备也被认为是在总线上的，枚举程序可对总线上的所有设备调用设备子程序。在工作时，枚举程序顺序访问每个设备，并依次查问与记录各个设备的特征。在所有设备循环一周后，再调用总线仲裁程序。
仲裁程序负责资源的分配并解决设备之间的冲突。分配资源时，有固定资源要求的传统设备总是先分配，并将这些资源从可用区中除去，然后，对每个设备作一试验性的资源分配。如果发生冲突，会要求即插即用设备放弃所得到的资源，然后再分配新的资源。
配置管理程序、枚举程序和仲裁程序之间的关系是：配置管理程序负责启动枚举程序，再由枚举程序来请求仲裁程序，最后再调用设备驱动程序。
Windows 95的3级环
在Intel x86结构中，3级环保护级是最低的特权级。在这一级运行的主要是Windows应用程序以及较高级的操作系统功能。
在3级环中运行应用程序和操作系统组件的好处是能使操作系统更好地把各个组件互相隔离开来，这种隔离是为了改善系统的总体稳定性。这样，一个组件（不管它是应用程序还是Windows自身的一部分）失败时，不会使整个系统崩溃。
0级环中的VMM组件为在3级上运行的程序提供一个虚拟机环境。在Win 95中，可以有多个DOS虚拟机和一个称做系统VM的特殊虚拟机，每一个虚拟机都提供一个完整的应用程序运行的虚拟环境。每一个虚拟机都有虚拟内存、虚拟I／O端口和虚拟CPU。各个虚拟机之间隔离意味着一台虚拟机失败不会影响其它的虚拟机。但是，对Win 95来说，这一级保护（防止一个DOS虚拟机影响另一个）并没有创建一个完全防止崩溃的系统。因为所有的Windows应用程序都在一个系统虚拟机上运行，一个应用程序可以潜在地影响系统虚拟机内的其它应用程序。
1．DOS虚拟机
在启动Win 95时，如果有AUTOEXEC.BAT和CONFIG.SYS文件存在，系统会继承这些文件中的所有实模式驱动程序和任何已被加载的常驻内存程序并建立起一个实模式的DOS环境。每当启动一个DOS任务，就建立一个DOS虚拟机，这个DOS虚拟机将获得系统启动时形成的实模式DOS环境的一个“副本”。每个DOS虚拟机都在各自的“副本”环境下运行，互不干扰。
2．系统虚拟机
系统虚拟机是一种特殊的虚拟机，所有Windows应用程序都在其中运行。此外，在系统虚拟机上运行的还有传统的USER、GDI和KERNEL模块。
USER：负责在屏幕上看见的大部分功能，如控制窗口、对话框。菜单等等。
GDI：图形设备接口，负责所有的图形组件。例如，GDI处理屏幕上的画线、图标和位图图像（BMP文件）。
KERNEL：控制与内存管理有关的系统任务，还负责处理输人消息和排队、通讯等等任务。
USER、GDI和KERNEL既有16位组件也有32位组件，以便在不同的场合下使用。
（何宗琦）