1.操作系统在计算机系统中的地位
操作系统在计算机系统中具有以下重要作用。
(1)计算机系统管理中心(相当于社会中的政府地位)。
(2)最复杂、最精确的人工开发的管理系统。
(3)在计算机系统中不可缺少,如果缺少操作系统,用户不可能上机使用计算机资源。
2.操作系统的运行环境
计算机硬件所提供的支持构成现代操作系统的硬件环境,其中最为重要的是中断机构。事件引发中断,中断必须加以处理,操作系统由此被驱动。操作系统是一个众多程序模块的集合,根据运行环境,这些模块大致分为3类:第1类是在系统初启时便与用户程序一起主动参与并发运行的,如作业管理程序、输入/输出程序等,它们由时钟中断、外设中断所驱动。第2类是直接面对用户态(亦称常态、或目态)程序的,这是一些“被动”地为用户服务的程序。这类程序的每一个模块都与一条系统调用指令对应,仅当用户执行系统调用指令时,对应的程序模块才被调用、被执行。系统调用指令的执行是经过陷入中断机构处理的。因此从这个意义上说,第2类程序也是由中断驱动的。第3类是那些既不主动运行也不直接面对用户程序的、隐藏在操作系统内部的、由前2类程序调用的模块。既然前两类程序是由中断驱动的,那么第3类程序也是由中断驱动的。应当注意,操作系统本身的代码运行在核心态(亦称管态、特态),从用户态进入核心态的唯一途径是中断。
操作系统具有五大特征,其中前两项是操作系统的基本特征,不具备这两项的管理程序不能被称为操作系统。
1.并发性
并发性是从宏观上看到多个程序在同时活动,微观上这些程序在计算机系统内的各个硬件上交替运行,由操作系统负责这些程序之间的运行切换;从外部宏观上,人们看到的是多个程序都在系统中运行。多个程序的并发执行是通过引入进程来实现的,程序本身是静态实体,系统必须分别为每个程序建立进程。进程是指在系统中能独立运行并作为资源分配的基本单位,它由一组机器指令、数据和堆栈等组成,是一个活动实体。
并行性和并发性是两个既相似又有区别的不同概念。并发是指在某一时间间隔内,计算机系统内部有多个程序活动。并行是指在同一时刻计算机系统内的多个程序都在运行,这些程序的运行依赖于CPU。所以,基本部件同一时刻都处于工作状态时称为并行工作。在单机系统中,多个程序是不能并行的。
进程和并发是现代OS中最基本的概念,也是OS运行的基础。长期以来,进程都是OS中可以拥有资源和独立运行的基本单位。线程的概念在20世纪80年代中期才出现,它是比进程更小的单位。通常一个进程中包含若干线程。线程基本上不拥有资源(也称为轻载进程),运行起来更轻松,能够更好地提示系统内多个程序间并发执行的程度。
2.共享性
共享性是指多个用户或程序对软、硬件资源的共同占用或使用。操作系统通过充分的资源共享来提高整个资源利用率,所以资源共享是现代操作系统的一个重要特征。
共享方式分为互斥共享和同时共享。互斥共享的资源不允许两个以上进程或线程同时使用,只能一个作业用完并释放以后,另一个作业串行使用。另一种共享方式是同时共享,允许多个作业交替使用,一个作业暂时不使用时,可以让另一个作业使用。宏观上看仍是多个作业同时使用,即同时共享。互斥共享的资源有打印机、绘图仪等,同时共享的资源有磁盘等。
软件资源的共享也可以分为互斥共享和同时共享两种。其中,只读的数据、数据结构、只读文件及纯的可执行文件是同时共享的。而可写的数据、数据结构及文件均为互斥共享的。
并发和共享是OS中的两个最基本的特征,又是互为存在的条件。一方面,程序(进程)的并发执行是资源共享的条件,系统若不允许程序并发执行,就不能存在资源共享问题;另一方面,若系统不能对资源共享实施有效管理、对共享资源的诸进程进行协调,就必然影响程序并发执行的程度,以至于无法并发执行。
3.虚拟性
在操作系统中所谓的“虚拟”,是指通过某种技术把一个物理机器虚拟成若干个逻辑上的机器,使得每个用户都感觉是“独占”机器。在多道分时系统中,虽然只有一个CPU,但每个终端用户却都认为是有一个CPU在专门为他服务,即利用多道程序技术可以把一台物理上的CPU虚拟为多台逻辑上的CPU,称为虚拟处理器。类似地,也可以把一台物理I/O设备虚拟为多台逻辑上的I/O设备,称为虚拟设备。在操作系统中虚拟的实现,主要是通过分时使用的方法来实现的。
4.异步性
异步性又称不确定性,是指进程以人们不可预知的速度向前推进。在多道程序系统下,多个进程允许并发执行,但由于资源等因素的限制,通常,进程的执行并非“一气呵成”,而是以“走走停停”的方式运行。内存中的每个进程在何时执行,何时暂停,以怎样的速度向前推进,每道程序总共需多少时间才能完成,都是不可预知的,很可能是先进入内存的作业后完成;而后进入内存的作业先完成。或者说,进程是以异步方式运行的。尽管如此,但只要运行环境相同,作业经多次运行,都会获得完全相同的结果,因此,异步运行方式是允许的。此即进程的异步性,是操作系统的一个重要特征。
5.可重构性
可重构性支持对计算机系统可靠性和配置动态化的考虑。在多处理器系统中应使操作系统具有这样的能力:当系统中某台处理器或存储模块等资源发生故障时,系统能自动切除故障资源,换上备份资源,对系统进行重构使之继续工作。现代操作系统允许在系统运行过程中动态地改变硬件的配置。当配置变更时,操作系统截获变更信息,然后自动地重构系统配置信息。例如,Windows 95的即插即用(Plug and Play)方案允许用户将便携式系统从台式停靠站卸下并迅速移到另一位置。在此期间用户不必关闭计算机。当用户再度用机时,即插即用子系统已经重构好了Windows 95的新配置,用户马上就可以继续他原来的工作。现在,对于动态配置的要求越来越强烈。如用户有时用一个PCMCIA卡上的调制解调器作为COM1端口插入到便携机上,而有时又需要将便携机安装到停靠站上。又如,无线网络要支持可移动工作站,也必须能够进行动态配置。即插即用是一个受到关注的方案。
从资源管理的角度看,操作系统主要功能分四大模块,包括处理器管理,存储器管理,设备管理,文件、作业管理、通信事务管理。此外,为了方便用户使用操作系统,还给用户提供了一个友好的用户接口。
1.处理器管理
处理器管理是指操作系统根据一定的调度算法分配处理器。在单处理器系统中,进程管理也属于这一范围。在采用多道程序设计技术的操作系统中,处理器在操作系统的控制下交替地被多道程序所占用。在多处理器系统中,处理器的管理要复杂一些。一方面必须了解每台处理器的功能,以便把适合于该处理器的任务分配给它;另一方面,也应确切地知道一个作业中各个任务之间的串、并行关系。处理器集的概念较好地解决了多处理器调度问题。
2.存储器管理
存储器管理是指分配、收回与保护存储单元。一道程序在启动执行前必须装入主存,操作系统应当根据程序的大小和当前主存空间的实际情况,为每一道程序分配使之能运行的必要的存储空间。当程序执行完后,操作系统把该程序所占用的全部存储空间收回,以做他用。显然,一道程序未必要全部装入主存才能运行。如果主存空间充足,可以把程序全部装入。如果主存空间紧缺,则把程序的一部分装入,在运行过程中需要访问未装入的程序片段时,再把这些程序片段装入主存,由此产生了虚拟存储管理算法。一般认为,主存管理算法可推广到外存(磁盘、磁带、光盘)空间的管理上。在计算机系统中,外存属于外围设备。
3.设备管理
设备管理主要是对设备进行分配、回收与控制。通信设备在工作过程中的控制尤为重要。用户程序使用外围设备的步骤是先申请、再使用、最后释放。与此相应,操作系统必须把有限的设备进行优化调度以满足多个用户程序的要求,对分配出去的设备进行有效控制以发挥设备的最大能力,最后还要对用完的设备及时收回。为了提高设备利用效率,设备管理中引入了虚拟设备的概念和Spooling技术。
4.文件、作业管理、通信事务管理
文件管理涉及文件存储空间的分配与回收、文件目录管理、文件读/写与保护等。由于现代计算机系统中的信息资源常以文件的形式出现,因此管理好文件就能使软件资源发挥更好的效益。目前,一个全方位的以文档为中心的资源管理方法受到用户的欢迎。用户希望只需要对文档进行操作,而不必关心被操作的文档究竟是文件、程序、目录、声像数据、磁盘卷标还是操作系统中的其他一些对象。
作业管理、通信事务管理是操作系统提供给用户的最直接的服务。一个作业从进入系统到运行结束,一般要经过收容、运行、完成三个阶段。相应地,操作系统提供作业注册、作业调度、作业终止等服务。电子邮件服务、文件传送与远程存取服务、作业的传送与操作服务是最常见的通信服务。
5.提供友好的用户接口
操作系统是系统软硬件资源的管理者,同时又是方便用户使用和提供计算机与用户之间接口的桥梁。为此,操作系统又向用户提供了“用户和操作系统的接口”。该接口通常是以命令或系统调用的形式呈现在用户面前,前者提供给用户在键盘终端上使用,后者则提供给用户在编程时使用。在较晚出现的操作系统中,则又向用户提供了图形的接口。
图形用户接口可以很方便地将文字、图形和图像集成在一个文件中,不仅可以在文字型文件中加入一幅彩色图画,也可以在图画中写入文字,还可以将图画、文字和声音集成在一起。20世纪90年代推出的主流OS都提供了图形用户接口,计算机操作从此进入一个全新的阶段。
1.模块化结构
采用这种结构设计模式的操作系统由许多标准的、可兼容的基本单位构成,称为模块。采用模块化结构的操作系统被划分成若干模块,各模块功能相对独立,模块之间通过规定的接口相互调用,各模块可以单独设计,最后把各个模块连接起来合成一个完整的软件系统。模块化设计方法缩短了系统的开发周期,但由于模块之间的调用关系复杂,又相互依赖,因此使分析、移植和维护系统较为困难。
2.层次化结构
层次化结构是为了避免模块化结构的缺陷而提出来的。所谓层次化结构是指操作系统分成许多基本的模块,并将这些模块按照某种逻辑关系进行分层,各层之间只能单向依赖,即上层软件基于下层软件之后,不能构成循环。把一个复杂系统分解成若干单向依赖层次的方法,大大地简化了接口的设计,整个系统的正确性由各层次的正确性来保证,易于保证可靠性,也便于维护和移植。
举一个例子:一个学校的学生管理是要有相关的各职能部门的参与的,如果按“模块化结构”,学生处、教务处、各学院的学办、教务办都是相对独立的模块,一个学生想要转专业的这个行为与上述各职能部门均有联系,亦即这些职能部门因各种管理行为发生关联,当其中某个部门工作流程变动时,与之相关的管理行为就要进行调整,相应的各个职能部门也都要与之适应。从而“牵一发而动全身”,使分析、移植和维护系统较为困难。如果按“层次化结构”构建,即学校的校部下属各学院及各处室,学院下设各科室,层层管理,当一个科室工作流程变动时,只需其下层需要调整与之适应,其他模块则无须变化。可见后者结构优于前者,前者适用于相对简单的操作系统环境。
3.微内核OS结构
微内核(Microkernel)OS结构是20世纪90年代发展起来的。由于它能有效地支持多处理器运行,故非常适用于分布式系统环境。当前比较流行、能支持多处理器运行OS的,几乎全部都采用了微内核结构,如Carnegie Mellon大学研制的Mach OS,便属于微内核结构OS,又如当前广泛使用的Windows NT操作系统,也采用了微内核结构。
现代操作系统的一个趋势是将传统的操作系统代码放置到更高层,从操作系统中去掉尽可能多的东西,只留下一个最小的核心,即微内核技术。所谓微内核技术,是指精心设计的、能实现现代OS核心功能的小型内核,它与一般的OS管理程序不同,它更小、更精练,不仅运行在核心态,而且开机后常驻内存,不会因内存紧张而被换出内存。微内核并非是一个完整的OS,而只是为构建通用OS提供一个重要基础。
微内核OS的基本功能包括:进程管理、存储器管理、进程间通信、低级I/O功能。
值得指出的是,在微内核技术形成和发展的同一时期,客户/服务器技术、面向对象技术也在迅速发展,它们已渗透到软件的许多领域中,并应用到基于微内核结构的机器中,由此所形成的微内核OS结构,便具有了以微内核为OS核心,以客户/服务器为基础并且采用了面向对象的程序设计方法的特征。
4.客户/服务器模式
客户/服务器结构通常的方法是将大多数操作系统的功能,如文件服务、进程服务等,由用户进程来实现。为了获取某项服务,用户进程(称为客户进程)将该请求发送给一个服务器进程,服务器进程完成此操作后,把结果返回给客户进程。这样,服务器以用户进程的形式运行而不是运行在核心态,所以它们不直接访问硬件,某个服务器的崩溃不会导致整个系统的崩溃。
客户/服务器的另一个优点是它同样适用于分布式系统。
5.对象模式
随着计算机的发展,面向对象技术得到了广泛的重视和应用,由于其具有数据隐藏以及消息激活对象等特征,被广泛应用于操作系统的设计和实现中,特别是在网络操作系统和分布式操作系统中。
该技术是基于“抽象”和“隐蔽”原则来控制大型软件的复杂度的。所谓对象,是指在现实世界中具有相同属性、服从相同规则的一系列事物的抽象,而把其中的具体事物称为对象的实例。OS中的各类实体如进程、线程、消息、存储器等,都使用了对象这一概念,相应地,便有进程对象、线程对象、存储器对象等。
面向对象的操作系统中的对象是对操作系统管理的信息和资源的抽象,可以被视为受保护的信息或资源的总称。它拥有自己的状态和存储空间,其状态只能由事先定义好的操作来改变;而改变这些对象状态的操作又需要其他对象发来相应的消息后才能被启动,所以容易采取某种手段对对象实施保护。Windows NT就被称为对象操作系统。
6.对称多处理模式
如果一个操作系统在系统中的所有处理器上运行且共享同一内存,这样的系统就是一个对称多处理系统。采用对称多处理模式构造的操作系统最适合于共享存储器结构的多处理器系统,即紧耦合的多处理器系统。
一个高质量的操作系统具有高效性、可靠性、易维护性、可移植性、安全性、可伸缩性和兼容性等特征。不同的使用者对操作系统的需求也不同,所谓“仁者见仁,智者见智”。到目前为止,还没有一个统一的标准来衡量一个操作系统的好坏。下面从6个方面描述操作系统的设计规范。一个操作系统以下6个方面均最佳是不现实的,用户通常是根据性价比及客观实际对系统客观地、系统地评判的。
1.系统效率
系统效率是操作系统的一个重要性能指标。它包括资源利用率(高)、吞吐量(大)、周转时间(短)及响应时间(少)等。
2.系统可靠性
系统可靠性是指系统发现、诊断和恢复硬件与软件故障的能力,可以通过以下3个指标说明。
(1)可靠性R(Reliability)。通常用系统的平均无故障时间MTBF来度量。平均无故障时间指系统能正常工作的平均时间值。R越大,系统可靠性越高。
(2)可维护性S(Serviceability)。通常用平均故障修复时间MTRF(Mean Time Repair Fault)来度量。平均故障修复时间是指从故障发生到故障修复所需要的平均时间。S越小,系统可修复能力越强,可维护性越高。
(3)可用性A(Availability)。指系统运行的整个时间内,能正常工作的概率。
3.可移植性
可移植性是指把一个操作系统从一种硬件环境移植到另一种硬件环境时,系统仍能正常工作的能力。操作系统进行移植时,代码修改的量越小,系统效率越高。
4.可伸缩性
可伸缩性是指操作系统对添加软、硬件资源的适应能力,尤其是指可添加到硬件中的CPU资源的能力。亦即操作系统可运行在不同种类的计算机上,例如,从原来的单处理器扩充到多处理器的系统上,操作系统仍能正常运行。
5.兼容性
兼容性主要指软件的兼容性,是操作系统能够执行为其他版本操作系统或为属同一系列的早期版本操作系统所编写的软件的能力。
6.安全性
安全性是指操作系统应具有一定的安全保护措施,包括保护和保密。诸如密码设置、账号检查、系统接入检测、各用户资源分配和资源保护、用户的资源不受他人侵犯等。