1.1 操作系统简介
操作系统的理论是计算机科学中一个较为古老而又活跃的分支,是计算机科学与工程专业的核心课程,而操作系统的设计与实现则是软件工程的基础与核心,在计算机系统中占据着重要的地位。那么什么是操作系统?操作系统的作用是什么?实现这些作用的原理是什么?本章将对这些问题一一进行详细介绍。
1.1.1 计算机系统组成
一个完整的计算机系统(无论是大型机、小型机还是微型机)均是由硬件系统和软件系统两部分组成。计算机硬件系统一般是由运算器、控制器、存储器、输入设备和输出设备等部件组成,这些部件是用户操作计算机的物质基础和工作环境。没有任何软件支持的计算机称之为裸机,不能做任何工作,必须为其配置一些必要的软件才能使其工作。计算机系统所使用的各种软件的集合称为计算机软件系统。而软件是指为运行、维护、管理和应用计算机的所有程序和数据的总和。计算机的软件一般可分为两大类:系统软件和应用软件,其中系统软件的功能主要是用来管理计算机、维护计算机和某些功能的运行,以及对程序进行翻译、装入等服务工作,包括操作系统、程序设计语言程序以及工具软件等;应用软件是指那些为专门解决某一方面问题而编写的程序,或为用户的某一特定应用而设计的程序。
计算机是硬件和软件结合的产物,随着计算机技术的发展,计算机硬件的功能越来越强,软件资源也日趋丰富。计算机的硬件、软件以及应用之间是一种层次结构的关系,其结构如图1-1所示。
图1-1 计算机系统组成
裸机(硬件)位于计算机系统的最内层,主要是计算机的各个硬件部分,是计算机工作的基础;与其紧邻的是操作系统,主要负责提供资源管理功能和服务功能,将系统各个部件有机地融合成为一个整体,从而使计算机成为功能强大、使用便捷的工具;其次是系统软件(操作系统除外),主要以操作系统为依托实现各类程序的编译、数据库的管理以及一些与计算机密切相关的程序的操作;最外层为各种应用软件(定制型、研发型),它们以操作系统作为支撑环境,同时能够向用户提供完成其各个进程所需的各种服务。
下面来详细阐述这4部分的内容。
1.硬件
硬件是计算机应用的物质基础,主要由中央处理器(Center Processing Unit,CPU)、存储器、输入/输出(Input/Output,I/O)设备等组成。CPU是一种能够解释指令、执行指令并控制操作顺序的硬件设备;存储器存放指令和数据,并能由CPU直接随机存取;I/O设备主要负责信息的传输,包括将数据从外部传输到计算机内,或将主存中的信息传输到计算机的外部设备。
计算机的硬件结构是由著名数学家冯.诺依曼于20世纪40年代提出来的,也就是著名的冯.诺依曼原理:程序存储与程序控制。外界对计算机硬件的访问、资源的控制以及各种应用是通过指令系统来实现的,而指令系统与硬件系统的组织结构又是密切相关的。为了能使操作系统高效运行,对硬件系统的组织结构进行不断改进,指令系统也日益复杂和庞大,操作系统及其外层软件通过执行这些指令访问和控制各种硬件资源。
2.操作系统
操作系统是运行在裸机上的第一层软件,主要负责所有硬件的分配、控制等工作,同时也为上层软件的运行提供服务,从而为用户与计算机之间建立友好的界面。操作系统不仅是裸机上面的第一层软件,也是最基本的系统软件,是对硬件系统功能的首次扩充。计算机硬件结构对操作系统的实现技术有着一定的影响和制约,因此操作系统密切依赖于计算机硬件,直接管理系统中各种硬件和软件资源。操作系统还必须提供良好的、直观的用户界面以方便用户的使用,从而提高计算机的使用效率。
3.系统软件
系统软件与操作系统的核心程序有所不同,这些程序通常存放在磁盘上,只有在需要运行时才载入内存。该层的主要功能是为应用软件以及终端用户自己定制、编写的程序或数据提供服务。此外,计算机系统的管理员还可利用系统软件对系统进行日常维护。
系统软件是计算机系统的基本组成部分,通常由计算机系统的供应商提供,并随硬件及操作系统一起出售。常用的系统软件一般包括:文本编辑程序、装配程序、查错调试处理程序和程序设计语言。
4.应用软件
应用软件通常是由计算机用户或软件公司所编制,包括定制型和研发型两类。如数据库管理系统(如工资管理系统)、办公自动化系统(如Office)、游戏软件以及事务处理系统(如人事管理系统)等。这些应用软件通常作为计算机系统的选件,根据用户需求而进行有选择性的购买。
1.1.2 操作系统概念
操作系统是管理软、硬件资源,控制程序执行,改善人机界面,合理组织计算机工作流程和为用户使用计算机提供良好运行环境的一种系统软件。根据操作系统的定义可知,引入操作系统主要目的如下。
1)管理系统资源:操作系统能够很好地管理系统中所有硬件、软件资源。
2)扩充机器功能:操作系统能够对硬件设施进行改造、扩充,扩大机器功能。
3)方便用户使用:操作系统附着在硬件之上,与系统软件比邻,使计算机系统使用起来方便、快捷。
4)构筑开放环境:操作系统支持体系结构的可伸缩性和可扩展性,支持应用程序在不同平台上的可移植性和可互操作性,从而构筑一个开放的环境。
5)提高系统效率:充分利用计算机系统的资源,提高计算机系统的效率。
由此可见,从系统管理人员的角度来看,引入操作系统是为了合理地组织计算机的工作流程;从用户的角度来看,引入操作系统是为了给用户使用计算机提供一个良好的界面,从而使用户无须了解有关硬件和系统软件的细节,就能方便灵活地使用计算机。其工作示意图如图1-2所示。
图1-2 操作系统工作示意图
操作系统本身就是重要的系统软件,这种特殊的软件与其他的系统软件和应用软件有所不同,它有以下特性。
1.并发性
所谓并发,是指两个或两个以上的任务在同一时间间隔内同时发生。与并发相对应的还有一个概念——并行,所谓并行是指两个或两个以上的任务在同一时刻发生。在单处理器系统中通过采用多道程序设计技术,可以实现硬件之间的并行操作和程序之间的并发执行。
硬件之间的并行操作是一个微观概念,例如,当I/O设备在进行I/O操作的同时,CPU也可以进行一些计算等的工作;而程序之间的并发执行则是一个宏观上的概念,也就是说,从宏观上看,一段时间内有多道程序在同时运行,但从微观上看,任意时刻处理器上最多只能有一道程序运行。即宏观上多道程序在并发运行,而微观上这些程序却是在交替运行。
通常把能够并发执行的程序称为并发程序,相应的系统称为并发系统。现代计算机系统是一种并发系统。操作系统作为并发系统的管理者,必须支持程序中的并发执行。操作系统的并发性有效地提高了系统资源的利用率和系统的吞吐量,但也导致了操作系统的复杂化,使得操作系统必须具有控制和管理各种并发活动的能力。
2.共享性
所谓共享,是指系统中的资源不为某一用户所独占,而是提供给多个用户共同享用。操作系统是一种资源管理程序,对于多个用户在活动期间所提出的各类系统资源请求(如CPU请求,数据的输入/输出请求等),其要负责对这些请求进行协调和分配。当多个用户对同一个资源进行请求时,需要实现共享,由于系统资源的属性不同,那么对资源的共享方式也有所不同,一般分为互斥共享和同时共享两类。
(1)互斥共享
系统中的资源,可以提供给多个用户作业使用,但是有一些资源在一段时间内只允许并且只能有一个用户作业使用,其他需要访问该资源的作业必须等待其释放该资源后,才允许对该资源进行访问。在一段时间内只允许一个用户作业访问的资源称为临界资源(如打印机),临界资源只能被互斥共享。
(2)同时共享
同时共享是指在一段时间内,多个用户作业可以同时使用系统中的某个资源。事实上,所谓“同时”也只是宏观上的概念,微观上仍然是多个作业交替地对资源进行访问(如对磁盘存储设备的访问)。
简而言之,互斥共享是在一段时间内独占,而同时共享是一段时间内由多个作业同时使用。
3.不确定性
操作系统能处理随机发生的多个事件,由于事件是随机产生的,所以事件的先后顺序会有多种可能,操作系统可以处理各种事件序列,保证多个任务井然有序地执行。
4.虚拟性
所谓的“虚拟”,主要是通过分时使用的方法把一个物理上的实体映射为若干个逻辑上的对应物。例如,在多道分时系统中,虽然物理上只有一个CPU,但每个终端用户却都认为自己拥有一个单独的CPU在为其服务。这种虚拟性还可在系统其他地方出现,如虚拟存储器、虚拟设备等。
1.1.3 操作系统发展简介
操作系统是因为客观需求而诞生的,随着科学技术以及计算机技术的不断发展而逐步完善,其功能逐步强大,在计算机系统中的地位也不断提高。如今,操作系统已成为计算机系统必不可少的部分,并且成为计算机系统的核心。
根据计算机体系结构中逻辑元件的发展可将计算机的发展过程划分为4个阶段:电子管、晶体管、集成电路及大规模和超大规模集成电路,而操作系统的发展与计算机的体系结构是息息相关的。与计算机的发展相适应,操作系统也经历了人工操作系统、批处理系统、多道程序系统、分时操作系统、实时操作系统、通用操作系统、网络操作系统及分布式操作系统等阶段,下面就简单介绍一下计算机操作系统的发展历史。
1.人工操作系统
第一代计算机结构的主要元器件是电子管,其运算速度慢,没有操作系统,甚至也没有任何软件,用户对机器的操作是通过直接用机器语言或汇编语言编写程序来实现的,某一用户上机后就开始独占系统所有资源。
上机操作的大致过程如下:编好的程序或数据先经穿孔机送到纸带或卡片上,然后将纸带或卡片装入纸带输入机或卡片输入机等输入设备上;经手工启动输入设备,把程序和数据输入计算机内存,再通过控制台启动程序。若在程序运行过程中出现问题,可借助扳键和显示查找问题,并利用扳键进行修改,然后再次启动程序运行;程序运行完毕,打印机输出计算结果,用户取走并卸下纸带或卡片,然后才能让下一个用户上机操作。
可见,用户对计算机的操作基本采用人工操作方式。人工操作方式的特点如下。
1)用户独占资源。一台计算机的全部硬件资源均由一个用户所占用,不会出现资源被其他用户占用而引起的等待现象。
2)工作方式为串行。用户与用户之间,程序与程序之间,操作与计算机运行、计算机各部件之间都是串行工作,系统资源的利用率极低。
3)CPU利用率不高。计算机在人的直接联机干预下工作,当用户进行人工操作时,CPU及内存等资源需空闲等待。
人工操作降低了计算机系统资源的利用率。同时,随着计算机硬件技术的快速发展,CPU的高速度与I/O设备的低速度之间矛盾日益激化。后来引入脱机的输入/输出技术,在一定程度上缓解了这样的矛盾。
2.批处理
在人工操作阶段,计算机系统中没有任何管理软件,用户直接承担所有的运行管理和具体操作。随着计算机技术的发展,计算机的运行速度有了很大的提高,组成计算机系统的部件和设备日益增多,规模日益庞大,导致人机矛盾日趋严重,如何减少系统的空闲时间,提高CPU的利用率成为十分迫切的任务。
为了提高主机的使用效率,解决人机矛盾,20世纪50年代末到60年代初出现了批处理系统。所谓批处理,是把用户作业成批提交给系统,然后由系统根据监督程序进行作业运行的监控,使作业能够条理、有序执行。早期的批处理可分为联机批处理和脱机批处理两种方式。
(1)联机批处理
联机批处理是将输入/输出(I/O)设备和主机直接相连,这种批处理方式由于作业可以进行自动转接,所以在一定程度上减少了作业建立和人工操作的时间。但是输入/输出设备和主机之间仍处于串行工作,两者的速度相差悬殊,因此,在作业的输入和执行结果的输出过程中,主机CPU仍然需要停止等待,这样导致CPU资源存在着很大的浪费。
(2)脱机批处理
脱机批处理是在主机与输入/输出设备之间增加了一个卫星机,专门用来与低速的输入输出设备打交道。其具体操作过程:
1)低速的输入设备通过卫星机把作业输入到输入磁带。
2)输入磁带将信息送到主机。
3)主机工作,直到作业完成。
4)主机将结果送给输出磁带。
5)输出磁带通过卫星机将作业执行结果输出到输出设备。
该处理机制中高速的主机只需与速度相对较快的磁带机相互通信,这样主机与卫星机就可以并行工作,由此大大提高系统的处理能力。
批处理系统每次只调用一个用户程序进入内存进行运行,称之为单道运行。由于计算机系统对作业的处理是按顺序一道一道处理用户的作业,因此可能出现两种情况:
●以计算为主的作业,由于输入/输出数据量少,导致外围设备空闲。
●以输入/输出为主的作业,由于计算工作量少,导致主机空闲。
因此,计算机资源使用的效率仍然不高,为此出现了多道程序系统。
3.多道程序系统
多道程序系统是指在内存中允许同时存放多道作业,并允许这些作业合理搭配,交替运行,充分利用资源,提高效率。在批处理系统中采用多道程序设计技术,形成多道批处理系统。该系统将作业提交给系统,这些要处理的作业都存储在外部存储器中形成“后备队列”,等待运行。需要调入作业时,系统根据一定的调度原则从后备队列中选取多个作业调入内存运行。某个作业完成后,再调入一个或几个作业,依次反复。这样系统运行时,总是有作业不断地进入系统、退出系统,形成作业流,从而大大提高了系统资源的利用率。
由此可见,多道批处理系统的优点是资源利用率高,系统的吞吐量大。多道程序系统标志着操作系统日渐成熟,操作系统先后出现了作业调度管理、处理器管理、存储器管理、外部设备管理及文件系统管理等功能。但是,在多道程序系统中,并行运行的程序共享计算机系统的所有硬件、软件资源,从而导致资源竞争现象的出现。因此,同步与互斥机制成为操作系统设计中的重要问题。
4.分时操作系统
随着计算机技术和软件技术的发展,针对多道批处理系统的不足,20世纪60年代中期产生了分时操作系统。分时技术就是把处理器的运行时间分成很短的时间片,按照时间片轮流把处理器分配给各个联机作业使用,分时技术的应用是提高资源利用率的重要手段。早期著名的分时操作系统是1963年美国麻省理工学院研制的兼容分时系统(Compatible Time-Sharing System,CTSS)和1965年在ARPA的支持下MIT、贝尔实验室和通用电气公司联合开发的多路信息与计算服务(Multiplexed Information and Computing Service,MULTICS)系统。
分时操作系统是基于主从式多终端的计算机体系结构。一台功能强大的主计算机可以同时连接多个终端,满足多个用户同时上机操作。每个用户通过自己所操作的终端,把用户程序上传至主计算机,主计算机反过来也通过终端向各用户反馈其程序的运行情况。主计算机为各个终端上的用户服务,采用的是时间分片的方式。虽然实际上只有一台主计算机,但是每一个用户在使用主计算机时都可以得到及时的服务响应,就感觉主计算机是在专门为自己服务,这就是分时操作系统。
分时操作系统中的分时概念不同于硬件设计中分时使用某个设备或部件,它是将主计算机CPU的运行时间分割成一个个微小时间片,把这些时间片依次轮流地分配给各个终端用户的程序执行。虽然在微观上用户程序运行时是不连续的,但在宏观上,多个用户在共同使用主计算机,享受着主计算机为自己所提供的服务。分时操作系统具有多路性、独立性、及时性以及交互性等优点,但是分时时间片的长短是权衡分时操作系统性能的重要指标,如何确定时间片的长短是操作系统发展过程中要解决的主要问题。
5.实时操作系统
随着生活质量的提高,在计算机的应用中人们对计算机响应用户事件的时间上又提出了及时响应的需求,为满足这一需求问题,在20世纪60年代中期产生了实时操作系统。“实时”就是立即、及时的意思。实时操作系统是一种能在限定时间内对输入数据进行快速处理并做出响应的计算机处理系统,而且能够对所有实时设备和实时任务进行协调操作。实时操作系统主要应用于需要对外部事件进行及时响应并及时处理的领域,要求系统对输入的及时响应,对输出的按需提供,无延迟的处理。因此,响应时间对实时操作系统来说是最关键的性能指标。实时操作系统的主要特点是提供即时响应、独立、多路、交互以及高可靠。
实时操作系统可以分为实时控制系统(自动数据采集及监测系统)和实时信息系统(航空订票系统),两者的区别在于服务对象的不同和对响应时间的要求不同。
6.通用操作系统
随着计算机应用的日益广泛,以多道批处理系统、分时操作系统以及实时操作系统为基础,逐步出现了通用操作系统。
通用操作系统同时兼有多道批处理、分时处理及实时处理的功能。UNIX系统就是一个通用的多用户分时交互型的操作系统的典型案例,其核心功能足以与许多大型的操作系统相媲美,核心层以外可以支持庞大的软件系统。目前,广泛使用的各种工作站级的操作系统,如SUN公司的Solaris、IBM公司的AIX,都是基于UNIX的操作系统;Microsoft公司的Windows系列操作系统,主要原理也是基于UNIX系统的;目前较为流行的Linux系统也是从UNIX演变而成的。
7.网络操作系统
随着计算机技术和网络技术的不断发展和完善,将不同地域的具有自治功能的多个计算机系统通过通信设备互相连接起来,实现信息交换、资源共享、可互操作以及协作处理,构成计算机网络。连入网络中的计算机不但能使用网络上的其他资源,也可以使本机资源成为网络上诸多用户的共享资源。网络环境的开放性打破了单机的封闭性,方便了用户使用网络,实现了用户间的通信、资源共享,并提高了网络资源的利用率,促进了网络操作系统的诞生。
网络操作系统是使网络上各计算机能方便而有效地共享网络资源,为网络用户提供各种服务的软件和有关规程(如协议)的集合。网络操作系统除了具备普通操作系统的功能之外,还具有网络通信、资源管理、网络服务、网络管理以及网络互联的特殊功能。Linux是当今较为流行的网络操作系统。
8.分布式操作系统
随着程序设计环境、人机接口和软件工程等技术的不断发展,逐步出现了分布式操作系统,它是由高速局域网连接起来的多台计算机(需要配置相应的操作系统——分布式操作系统)所组成。分布式操作系统与计算机网络很相似,分布式操作系统也是通过通信设备将独立功能的数据处理系统或计算机系统互连起来,可实现信息交换、资源共享和协作完成任务等。
分布式操作系统有以下几方面的特点。
1)极强的系统处理能力。分布式操作系统为用户提供存取系统中各软件、硬件资源的能力,因此,处理器上一个用户可以使用其他处理器上的资源,使资源共享更加方便、有效。
2)极快的处理速度。分布式操作系统能够将待运行的进程分布到若干处理器上实现并发执行,极大地提高了处理速度。此外,还可以利用负载均衡机制将在某处理器上过载的进程,分散到负载较轻的处理器上运行,提高处理速度。
3)高可靠性。当系统中某台处理器由于软件或硬件故障而不能正常工作时,其他处理器会主动承担该台处理器的工作,使整个系统正常运行下去。一旦故障修复后,操作系统就会将该处理器立即添加到系统中,并使整个系统均衡工作。