2.4 现代操作系统的特征
现代操作系统针对硬件中的新发展、新的应用程序和新的安全威胁。促使操作系统发展的硬件因素主要有:
-
多处理器的计算机系统
-
高速增长的机器速度
-
高速网络连接
-
容量不断增加的各种存储设备
多媒体应用、internet和web访问、客户/服务器计算等应用领域也影响着操作系统的设计。在安全性方面,互联网的访问增加了潜在的威胁和更加复杂的攻击,例如病毒、蠕虫和黑客急速,这些对操作系统的设计产生了很深远的影响。
在实验用和商用操作系统中有很多不同的方法和设计要素,大致可分为:微内核体系结构、多线程、对称多处理、分布式操作系统、面向对象设计。
至今,大多数操作系统都有一个单体内核(monolithickernel),大多数认为操系统应该提供的功能由这些大内核提供,包括调度、文件系统、网络、设备驱动器、存储管理等。典型情况下,这个大内核是作为一个进程实现的,所有元素都共享相同的地址空间。微内体系结构只给内核分配一些最基本的功能,包括地址空间、进程通信(InterProcess Communication,简称IPC)和基本调度。微内核方法可以使系统结构的设计更加简单、灵活,很适合于分布式环境。实质上,微内核可以以相同的方式与本地和远程的服务进程交互,使分布式系统的构造更为方便。
多线程技术是指把执行一个应用程序的进程划分成可以同时运行的多个线程。线程和进程有以下差别:
-
线程:可分派的工作单元。它包括处理器上下文环境(包含程序计数器和栈指针)和栈中自己的数据区域(为允许子程序分支)。线程顺序执行,并且可中断,这样处理器可以转到另一个线程。
-
进程:一个或多个线程和相关系统资源(如包含数据和代码的存储器空间、打开的文件和设备)的集合。这紧密对应于一个正在执行的程序的概念。通过把一个应用程序分解成多个线程,程序员可以给在很大程度上控制应用程序的模块性和应用程序相关事件的时间安排。
多线程对执行许多本质上独立、不需要串行处理的应用程序是很有用的,例如监听和处理很多客户请求的数据服务器。在同一个进程中运行多个线程,在线程间来回切换所涉及的处理器开销要比在不同进程间进行切换的开销少。
随着性能要求的不断增减以及微处理器价格的不断降低,计算机厂商引进了拥有多个微处理器的计算机。对称多处理不仅指计算机硬件结构,而且指反映该硬件结构的操作系统行为。对称多处理计算机可以定义为具有以下特征的独立的计算机系统:
-
有多个处理器。
-
这些处理器共享同一个内存和I/O设备,它们之间通过总线或别的内部连接方案相互连接。
-
所有处理器都可以执行相同的功能(因此称为对称)
对称多处理操作系统可调度进程或线程到所有的处理器允许。对称多处理结构比单处理器结构具有更多的潜在优势,如下所示:
-
性能:如果计算机完成的工作可组织为让一部分工作可以并行完成,那么有多个处理器的系统将比只有一个同类型处理器的系统产生更好的性能,如图2.12所示。对多道程序设计而言,一次只能执行一个进程,此时所有别的进程都在等待处理器。对多处理器系统而言,多个进程可以分别在不同的处理器上同时运行。
-
可用性:在对称多处理计算机中,由于所有的处理器都可以执行相同的功能,因而单个处理器的失败不会使机器停止。相反,系统可继续运行,只是性能有所降低。
-
增量增长:用户可以通过添加额外的处理器来增强系统的功能。
-
可扩展性:生产商可以根据系统配置的处理器的数量,提供一系列不同价格和性能特征的产品。
这些只是潜在的优点,而不是确定的。操作系统必须提供发掘对称多处理计算机系统中并行性的工具和功能。对称多处理技术一个很具有吸引力的特征是多处理器的存在对用户是透明的。操作系统负责在多个处理器中调度线程或进程,并且负责处理器间的同步。
分布式操作系统使用户产生错句,使多机系统好像具有一个单一的内存空间、外存空间以及其他的统一存取措施,如分布式文件系统。尽管集群正变得越来越流行,但是,分布式系统的技术发展水平落后于单处理器操作系统和对称多处理操作系统。
操作系统设计的另一个改革是使用面向对象技术。面向对象设计的原理用于给小内核增加模块化的扩展性。操作系统一级,基于对象的结构使程序员可以定制操作系统,而不会破坏熊的完整性。面向对象技术使得分布式工具和分布式操作系统的开发变得更容易。
2.5 微软的WINDOWS概述
2.5.1 历史
WINDOS操作系统是由微软公司为第一台IBM个人计算机开发的,称为MS-DOS或着PC-DOS。最初的DOS 1.0是在1981年8月发行的,它由4000行汇编语言源代码组成,使用Intel 8086微处理器运行在8KB的内存中。
微软公司在1983年发布了DOS 2.0 ,它包含对硬件的支持,并且提供了层次目录。1984年微软发布了DOS 3.0,DOS 3.1是3.0的升级,它同年发布,DOS 3.1支持PC间的联网,常驻部分的大小没有改变,这是通过增加操作系统交换量实现的。1987年发布了DOS 3.3提供了对新型IBM机器PS/2的支持,这个版本没有使用PS/2中处理器能力,这些是由80286和32位的80386芯片提供的。常驻部分最少增长到了46KB。
1990年,微软有了一个GUI版本,称作WINDOWS3.0,它需要在DOS上运行。1993年发布了第一版Windows NT(3.1),Window NT 3.1是一个新的32位操作系统,具有支持老的DOS和Windows应用程序的能力,并提供了对OS/2的支持。在2000年,发布了Windows 2000,它的重点是增加支持分布处理的服务和功能,它的新特征的核心元素是活动目录(AD),这是一个分布目录服务,能够将任意对象名映射到关于这些对象的任意类型的信息上。于此通吃它还增加了即插即用和电源管理工具。在2001年,微软发布了最新的桌面操作系统Windows XP,同时提供家用和商业工作站两种版本,同样在2001年发布了64位版本的WINDOWS XP。在2003年,微软发布了新的服务器版本Windows Server 2003,包括32位和64位,该服务器主要为Intel的Itanium硬件设计。2007年,windows vista作为最新的桌面版本的windows操作系统发布,于此同时发布的服务器版本是Windows Server 2008.
2.5.2 单用户多任务
Windows(从Windows2000以后)是微机操作系统新潮流的一个重要例子。Windows的动因是开发当今的32位和64位微处理器能力的需求,在速度、硬件完善度和存储能力几个方面与大型机和小型机进行竞争。
这些新操作系统的一个重要特征是:单用户多任务操作系统。发展单用户多任务操作系统的两个主要原因是:
-
随着微处理器的速度和存储能力的不断增长以及虚拟存储器的支持,应用程序变得更加复杂且相关性更强。
-
客户/服务器计算的发展。
2.5.3 体系结构
图2.13显示了windows2000的整体结构,以后的各种版本的Windows,包括Vista,在这一层本质上都有相同的结构。Windows把面向应用的软件和操作系统核心软件分开,后者包括在内核态下运行的执行体、内核、设备驱动器和硬件抽象层。内核模块软件可以访问系统数据和硬件,在用户态运行的其余软件被限制访问系统数据。
2.5.3.1操作系统组织
Windows的体系结构是高度模块化的。每个系统函数都正好由一个操作系统部件管理,操作系统的其余部分和所有应用程序通过相应的部件使用标准接口访问这个函数。关键的系统数据只能通过相应的函数访问。从理论上讲,任何模块都可以移动、升级或替换,而不需要重写整个系统或它的标准应用程序接口(API).
Windows的内核态组件包括以下类型:
-
执行体:包括操作系统基础服务,例如内存管理、进程和线程管理、安全、I/O和进程间通信。
-
内核:控制处理器的执行。内核管理包括线程调度、进程切换、异常和中断处理、多处理器同步。跟执行体和用户级的其他部分不同,内核本身的代码并不在线程内执行,因此,内核是操作系统中唯一不可抢占或分页的一部分。
-
硬件抽象层(Hardware Abstraction Layer,HAL):在通用的硬件命令和响应与某一特定平台专用的命令和响应之间进行映射,它将操作系统从与平台相关的硬件差异中隔离出来。HAL使得每个机器的系统总线、直接存储器访问(DMA)控制器、中断控制器、系统计时器和存储器模块对内核来说看上去都是相同的。它还对对称处理(SMP)提供支持,随后对部分进行解释。
-
设备驱动:用来扩展执行体的动态库。这些库包括硬件设备驱动程序,可以将用户I/O函数调用转换为特定的硬件设备I/O请求,动态库还包括一些软件构件,用于实现文件系统、网络协议和其他必须运行在内核态中的系统扩展功能。
-
窗口和图形系统:实现图形用户界面函数(简称GUI函数),例如处理窗口、用户界面控制和画图。
Windows执行体包括一些特殊的系统函数模块,并为用户态的软件提供API。以下是对每个执行体模块的简单描述:
-
I/O管理器:提供了应用程序访问I/O设备的一个框架,还负责为进一步的处理分发合适的设备驱动程序。I/O设备管理器实现了所有的Windows I/O API,并实施了安全性、设备命名和文件系统(使用对象管理器)。
-
高速缓存管理器:通过使最近访问过的磁盘数据驻留在内存中以提供快速访问,以及在更新后的数据发送到磁盘之前,通过在内存中保持一段很短的时间以延迟磁盘写操作,来提高基于文件的I/O性能。
-
对象管理器:创建、管理和删除Windows执行体对象和用于表示诸如进程、线程和同步对象等资源的抽象数据类型。为对象的保持、命名和安全设置实施统一的规则。对象管理器还创建对象句柄,对象句柄是由访问控制信息和指向对象的指针组成的。
-
即插即用管理器:决定并加载为支持一个特定的设备所需的驱动。
-
电源管理器:调整各种设备间的电源管理,并且可以把设备置为休眠状态以达到节电的目的,甚至可以将内存中的内容写入次胖,然后切断整个系统的电源。
-
安全访问监控程序:强制执行访问确认和审核产生的规则。Windows面向对象模型允许统一一致的安全视图,直到组成执行体的基本实体。因此,Windows为所有受保护对象的访问确认和审核检查使用相同的例程,这些受保护对象包括文件、进程、地址空间和I/O设备。
-
虚拟内存管理器:管理虚拟地址、物理地址和磁盘上的页面文件。控制内存管理硬件和响应的数据结构,把进程地址空间中的虚地址映射到计算机内存中的物理页。
-
进程/线程管理器:创建、管理和删除对象,跟踪进程和线程对象。
-
配置管理器:负责执行和管理系统注册表,系统注册表是保存系统和每个用户参数设置的数据仓库。
-
本地过程调用(LPC)机制:为本地进程实现服务和子系统间的通信,而实现的一套高效的跨进程的过程调用机制。
2.5.3.2 用户态进程
Windows支持4种基本的用户进程类型:
-
特殊系统进程:需进行管理系统的用户态服务,如会话管理程序、认证子系统、服务管理程序和登录进程等。
-
服务进程:打印机后台管理程序、事件记录器、与设备驱动协作的用户态构件、不同的网络服务程序以及许多这样的程序。
-
环境子系统:提供不同的操作系统的个性化设置(环境)。支持所有的子系统有Win32/WinFX和POSIX。每个环境子系统包括一个在所有子系统应用程序都会共享的子系统进程和把用户应用程序调用转换成本地调用(LPC)和原生Windows调用的动态练级库(DLL).
-
用户应用程序:可执行程序(EXE)和动态链接库(DLL)向用户提供使用系统的功能。EXE和DLL一般是针对特定的环境子系统。
最重要的子系统是Win32。Win32是在windows NT和windows 95及后继版本和windows9X中都实现了API。最新的windows API是winFX,基于微软的.NET编程模型。WinFX在Windows中时作为win32的更高一层来实现的,而不是一个独立的子系统类型。