Windows 95的系统结构
Windows 95在许多方面类似于Windows3.1,尤其是虚拟机 VM(Virtual Machine)。基于Windows的应用都运作在系统的VM状态。旧的16位应用程序共用单一的地址空间,而新的32位应用程序则不共用地址空间,每个应用程序都有自己的私有地址空间。Windows 95通过操纵页表来达到这一目的。因此,一个应用程序看不见另一个应用程序,除非它们明确共享内存储器。Windows 95也支持虚拟8086模式或保护模式下MS-DOS程序的运作。
虚拟机管理器VMM(Virtual Machine Manager)是Windows 95系统的核心,它除了为虚拟设备驱动程序提供服务外,还提供低级内存储器管理和调度服务。
Windows 95的文件系统是新提供的主要部件,是完全重新设计的子系统,能同时支持多种文件系统。而在Windows3.1中,MS DOS的文件系统支持本地磁盘,虽然也支持CD-ROM和网络文件系统,但性能不佳。
Windows 95中,除了一些特殊设备需要旧的设备驱动程序外,其整个档案系统都是保护模式下的32位代码。此文件系统不仅支持本地磁盘和CD-ROM,而且还通过可安装档案系统接口(IFS),并可支持一个或多个网络接口,因此,利用Windows 95,用户可以在保护模式下建成一个很好的系统。此系统可以连接硬盘、软盘、CD-ROM、Bernoulli盒、基于 WindowsNT的服务器、Netware网络等。
Windows 95的人机界面服务机制与Windows3.1类似,但做了一些改进,以方便用户。系统服务中的KERNEL,USER,GDI仍用以前 Windows NT版本的名字,主要改变是,它们都已变为32位的,性能更好。如果用户开发应用程序,则要运作Win32 API,调用的其他服务也都是32位的,对内存储器管理的需求也不同以前,其用户的程序是全32位的。
Windows 95系统的基本结构如图 1所示。
二、系统保护环
Windows 95充分利用386处理器的能力,支援两个特权级。它用0和3两个特权级管理微处理器,也可称为两个环。环0中的部件是操作系统的底层,如包括对低级内存储器管理的支持,环0里的软件在整个系统中功能最强,包括了几乎所有微处理器的指令,并能存取关键的数据结构,如页表等。因此环0里的软件最可靠。
Windows 95允许用户安装新的虚拟设备驱动程序(VXD),这些VXD可以支持后加的硬件或提供系统范围内的软件眼务。VXD都在环0里运作,因此,如果VXD有一点差错,就会使整个系统崩溃。而如果要开发一种软件,使其能和失败的VXD分离,那将是非常困难的。
Mictosoft公司的开发人员开发了一种可调试内核(ebug xernel),使程序员在安装VXD之前能够先检查VXD对VMM服务的所有需求,这样就会避免在安装以后出现问题,这个可调试内核包含在Windows 95的DDK中。
有些操作系统试图利用Intel 386处理器提供的附加特权级,而 Wndows 95没有这样做,它只利用了两级。对于绝大多数应用,这种“双环模式”(two-ring model)工作得相当出色。
在Intel处理器中,环的过度(特权级的改变)会增加程序的运作时间,以 lute 486为例,如果没有环的过度,一个子程序调用另一个段中的代码需要20个时钟周期,有环的过度则需要69个时钟周期。这是因为当处理器的特权级变化时,处理器控制会发生变化,寄存器要重装。因此,较少的环过度意味着性能的提高,这也是Wndows 95 把其圆形系统的多数代码放在环3的主要原因。
Intel 386及其以上处理器提供了 4GB虚拟存储空间,Window 95都可以利用。在虚拟地址空间里,不同的系统部件和应用程序,占用的区域都有固定的界限,其结构如2所示。
Windews 95的VMM的任务之一就是把4GB的虚拟地址空间映射到内存储器上。下面作一说明:
虚拟地址空间中,最低的IMB用作当前执行的 MS-DOS VM,每个 VM在 IGB,ZGB内也有一段空间,允许系统本身寻址不活动的 VM段存储空间,一旦 MS DOS VM运作起来,就会定位在最低的IMB空间里。
本篇文章共4页,此页为首页 下一页
32位 Windows应用程序优先装入的空间为 4MB~1·5GB,标准开发工具也缺省地用这个空间,这主要和 WindOWS NT相匹配。当然,用户也可以选择较低的地址空间,这时,用户需要做起额外的工作。
系统为每个32位应用标记的低16KB空间不可获得,这主要是为了捕获程式的错误。许多程式常犯的错误是使用空指针,在Wndows 95中,空地址将产生内存储器错误,这对开发者及时发现指针错误是有益的。
三、虚拟机管理器
如前所述,虚拟机管理器VMM是Windows 95系统的核心,VMM的效率对整个系统的性能有看重要影啊。系统中许多复杂的部件都在这里。虚拟机管理器的代码包含以下几项特性:
在每个过程的私有地址空间里,32位的Windows应用程序都是抢先调度的;
每个32位的应用程序有一个私有的消息队列;
VXD能够动态装载和定位,减少系统的操作集;
许多系统资源都是按32位内存储器模式开发的,大大提高了系统能力。
Windows95有两种基本的VM:一是系统VM,KERNEL,USER,GDI部件和Windows的应用程序都在这里;M是 MS-DOS VM,运作一个MS-DOS应用程序,这个程序既能运作在虚拟8086模式,也能运作在保护模式。
四、支持MS-DOS应用程序
Windows支持MS-DOS应用程序,这就意味着当用户工作基于DOS的应用时,不必离开Windows95。Windows95软件也提供最新的MS-DOS 6.X版的代码和数据。
Windows 95支持单一的 MS-DOS应用模式。这种模式对MS-DOS应用提供绝对的兼容性。虽然开发人员做了很大的努力,使更多的MS-DOS程序能在MS-DOSVM下运作,但这种单一的MS-DOS应用模式为那些不能在Windows下运作的MS-DOS程序提供真正的兼容性,这就是说,此模式对以前的DOS版本向下兼容。
Windows 95因 MS DOS之关系,与W4indows3.1的最大区别是:基于Windows的应用完全不需要MS DOS代码支持。Windows已有许多的版本(如Win-dows3.1,Windows for Workgroup 3.1,Windows3·11等),每种都支持越来越多的MS DOS INT软件服务。而且,基于WindowS的应用程序在进出虚拟86模式时,对MS DOS代码的需要也在减少。
计算机教程Windows 95的系统结构来自www.itwen.comIT WEN计算机教程网
但这些版本的档案系统都没有什么变化,直到 Windows for Workgroup3,11版。只有Windows 95,最后打破了实模式MS DOS的所有束缚,几乎无不例外,甚至现存的16位Windows应用程序,也沿着保护模式的路径,通过新的档案管理系统进人磁盘。
五、虚拟机调度方式
Windows 95中的过程调度和虚拟机管理关系十分密切。在Windows 95中,线程是系统调度程序要处理的主要对象,也是调度的基本单元,假如用户熟悉Window NT,就会习惯处理线程。
下面是一些线程的特征:
(1)在过程里是一个可执行路径;
(2)能够被任何32位的Windows程序或运作在 Windows 95里的 VXD创建;
(3)有自己私有的堆叠存储器和执行价前后关系;
(4)固定的过程分享存储器;
(5)一个过程可以创建许多并发的线程。
线程有时也被称为“简单过程”(lighl weisht Process),因为创建和管理一个线程的操作比较简单。特别需要指出的是,一个线程可以分享其他过程的所有代码和全局数据,这意味着创建一个新的线程只需要很少的存储空间。
当Windows 95加载程序,以及创建与之联系的数据结构时,系统就把这个过程当做单一的线程——主线程来建立。许多程序在执行时只有一个线程。但只有32位的Windows应用程序和 Windows 95下的VXD可获得线程服务;MS DOS VM和16位的Windows应用程序不能调用线程的API。
一个MS DOS VM只提供一个线程,即一个MS DOS VM既是过程又是线程。16位的Windows应用程序也只有一个线程,这就为旧的应用程序保留了协同式多任务模式。任何VXD和 32位的 Windows 用程序都能创建附加线程,Windows 95能够抢先式调用这些线程。
Windows 95中的线程基于不同的程序来实现,如 MS-DOS应用程序、16位的Windows应用程序、32位的Windows应用程序等。但系统为每一个线程提供了相同的数据结构。因此,系统调度程序和系统内其他32位代码都可以用这些数据结构,并能顺利地在16位和32位应用程序中实现。
本篇文章共4页,此页为第2 页 上一页 下一页
六、调试程序
Windows 95的VMM实际上有两个调试程序,即主调度程序和时间片调度程序。前者负责并保证最高优先级的线程一直在执行;后者负责动态调整线程的优先级,以便提供合理的多任务。
那么调度的过程是如何呢?首先,主调度程序先检查系统中的每一个线程,然后选择出优先级最高的线程来执行。为了与Windows NT兼容,优先级从0到 31,共32级,数字越大优先级越高。
同时,为了与以前的Windows版本兼容,设备驱动程序的优先级能设置成比这32级还高。比最高优先级低的线程,主调度程序不予考虑。这里,最高优先级未必是31,假如只有两个线程,优先级一个是20,一个是16,那么最高优先级就是20;如果此时又来一个优先级是ZI的线程,那么21就成为最高优先级。
时间片调度程序增加了一个对前台线程和后台线程优先级升高的能力。为了阻止高优先级的线程独占CPU,时间限制器会周期地升高那些当前未运作的非停止的优先级线程,这就避免了后台线程被挂起来。在缺省情况下,线程的优先级每隔20ms重新计算一次。
除了纯粹的定量求优先级的值外,时间调度程序