主要的系统软件包括

操作系统概论

计算机系统由硬件和软件两部分组成。硬件指计算机的各个部件,包括:存储器、处理器、输入/输出设备及电源、机箱等。软件是指存在计算机系统中或外存储器中的程序及数据的集合。

计算机软件分为系统软件和应用软件。

系统软件是计算机厂商为了便于用户使用计算机而驻存在计算机硬件(如硬盘和软盘)内的系统支持程序。主要的系统软件包括:操作系统、编译和解释程序、汇编程序、连接装入程序、编辑程序和设备驱动程序等。

应用软件是用户为了专门的应用目的,向计算机厂商或其他软件商购买的或者自己开发的解决某一类问题的软件。典型的有:数据库管理软件、图像处理软件、各种办公软件和杀毒软件等。

其中操作系统是一种首要的、最基本的、最重要的系统,也是最庞大、最复杂的系统软件。

1.1 什么是操作系统

通常把操作系统定义为用以控制和管理计算机系统资源,方便用户使用的程序和数据结构的集合。

(1)系统观点——计算机资源管理

在计算机系统中,CPU是计算机硬件的核心,是计算机系统的心脏;操作系统则是计算机软件的核心,是计算机系统的大脑,是整个系统的控制中心,是计算机或智能控制和管理系统中首要的、最重要的、最复杂的系统软件。

计算机系统内运行的程序无时无刻地争夺计算机有限的资源,操作系统的作用在于组织和管理整个计算机系统的硬件和软件资源,在用户和程序之间分配系统资源,使之协调一致、高效地完成各种复杂的任务。

(2)用户观点——用户使用计算机的界面

通过操作系统,计算机能提供更多、质量更高的服务。安装不同的操作系统,呈现在用户面前将会是完全不同的两类“虚拟”计算机,因此操作系统是用户与计算机硬件之间的接口。用户一般通过以下方式获得计算机系统提供的服务。

①命令方式:通过键盘输入有关命令直接使用计算机,以获得计算机所能提供的服务,也可以将若干命令集中在一个文件中,以批处理的方式连续运行命令,获得多种服务。

②系统调用:用户可在应用程序中调用操作系统向用户提供的服务程序,以获得系统服务。

③图形界面:用户可以在窗口环境中通过鼠标、按键、菜单和对话框等方式操纵计算机。

(3)软件观点——程序和数据结构的集合

操作系统是直接与硬件相邻的第一层软件,是由大量极其复杂的系统程序和众多的数据结构集成的。在计算机中的所有软件中,操作系统起到了核心和控制的作用,其它软件的运行都要依赖他的支持。操作系统是在系统中永久运行的超级程序。

1.2 操作系统的发展

1.早期的计算机和人工操作方式

在早期的计算机系统中,每一次独立的运行都需要很多的人工干预,操作过程烦琐,占用机时多,也很容易产生错误,在一个程序的运行过程中要独占系统的全部硬件资源,设备利用率很低。

2.脱机输入/输出和批处理系统

(1)脱机输入/输出

为了解决人工干预与CPU速度不匹配的矛盾,提高计算机的使用效率,在计算机中配备了“监控程序”。用户的控制指令和操作步骤可以写在源程序前或专门的控制卡片上。“监控程序”先读入控制命命令,并按命令的指示一步一步自动执行,这就是“操作系统”的雏形。

为了解决慢速输入/输出设备与CPU速度的不匹配问题,可将用户打在卡片上或纸带上的程序和数据通过外围小计算机预先输入到磁带上,运行时再从磁带上高速读入内存,输出也同样通过磁带中转。这种方式就是“脱机输入/输出”。

(2)批处理系统

脱机输入/输出进一步提高了极端及的运行效率,但自前一个惩处运行结束到启动后一个程序运行这段时间内,程序员或操作员还需要进行很多的人工干预。批处理的基本思想是:操作员取来一批作业,将它们输入到磁带中,操作系统先从磁带上将第一个作业读入内存,启动它运行,并将运行结果输出到另一个磁带中,当第一个程序运行完毕,操作系统自动的从输入磁带上读入下一个作业,并予以运行和输出,直到整批作业全部处理完毕。

由于系统作业是成批地进行处理,但内存中智能保持一个运行作业,故该类系统又称为单道批处理系统。

3.缓冲、终端和DMA技术

(1)缓冲技术

脱机、批处理还没有完全解决CPU与外部设备速度匹配问题,无论你是从读卡机还是从磁带中读入,相对于CPU来说,读入数据的速度总是嫌慢,进一步的解决方法是采用缓冲技术。原理:将数据存放在一个特定的缓冲区,当CPU从缓冲区中得到了数据,在对它进行运算之前吗,再启动输入设备以输入下一个数据至缓冲区。这样CPU在记性运算时,外部设备的输入工作也在同时进行。同样输出也采用缓冲技术。采用带缓冲的输入/输出技术后,CPU与外部设备能做到并行操作,减少了互相等待的时间,极大提高了CPU与各种外部设备的使用效率。

(2)中断技术

具有缓冲的输入输出也带来了新的问题。一个问题时处理机要知道I/O设备什么时候已经完成了输入操作,以便处理数据并启动CIA一个I/O。如果考CPU反复地查询输入设备的状态,就会浪费很多CPU时间。中断技术的出现解决了这个难题

只要I/O设备一旦完成输入/输出操作,它就会自动向CPU发出中断信号,CPU收到中断信号后,就会暂停当前的处理工作,在做一些必要的现场保护、中断处理工作后,转图中断服务程序。中断服务程序读出缓冲区的数据,然后启动下一个IU/O操作。从中断服务程序返回后,操作系统恢复被中断的运算过程。

中断处理机构需要在系统栈啥保存中断返回地址,还要保护中断时的其它现场。在完成中断服务,中断程序要恢复原先的中断现场,取得断口地址,使计算机基础原先的处理工作。CPU在处理一个中断事务时,若果又收到一个优先级更高的中断请求,就会暂停当前的中断服务,转为处理更为紧迫的操作,这样就想成了中断的嵌套。

(3)DMA技术

对于慢速的I/O设备,CPU在执行有关并的中断服务程序后,还可利用剩下的大部分时间来执行其他的计算工作。但是对于磁带、磁盘或高速网络通信接口,CPU响应中断和处理数据所费的时间可以比数据到达的时间间隔更长。这样,即使处理机的时间全部用于处理中断和接收输入数据,也仍然会发生数据丢失的情况。

为了解决这个难题,产生了直接存储器存取(DMA)技术。一旦收到DMA发来的中断请求后,CPU在设置了缓冲区、指针和计数器后,DMA就可以不再需要CPU的干预,在内存和设备之间传送整块数据。这样,通过DMA每传送一个数据块仅需要一次中断处理,而不是像低速设备那样每出传送一个数据都需要一次中断处理。

4.SPOOLING

使用缓冲技术可以提高CPU与外部设备工作的并行程度,如果CPU处理数据的速度比输入设备快得多,CPU总是要等待输入设备将数据送入缓冲区后才能读取和处理数据,输出也会发生类似的情况。开始时CPU能全速运行,但不久所有的系统缓冲区都会被塞满,此后CPU必须等待输出设备取走缓冲区中的数据,以便可以在其中存放新的输出结果。这种执行速度受到I/O设备限制的作业,成为受限于I/O的作业。另一方面,对于计算量很大的受限于CPU的作业,输入缓冲区经常
是满的,而输出缓冲区经常是空的。因此,缓冲技术虽然是有用的。但是在很多情况下作用并不明显。

磁盘系统的出现极大地改进了脱机输入输出的效果。磁带系统的问题时当CPU从磁带上读入数据时,读卡机等输入设备就不能在磁带的尾部写数据,所以慢速输入设备的数据不能通过磁带机白CPU联机的读入。磁盘设备消除了这个问题。磁盘的读写头很容易从磁盘中的一个区域移动到另一个区域,所以磁盘的读写位置能很快地从读卡机存入磁盘的区域移动到CPU需要读取的下一个记录的区域。

在磁盘系统中,读卡机等设备将数据写到磁盘中,卡片数据的映像记录存放在由操作系统的维护的一张表中。在一个作业执行期间需要请求读卡机输入数据时,实际读入的是存放在磁盘中对应记录向。类似的,当作业要将输出送至打印机是,该输出实际上是通过系统缓冲区写到磁盘中,在该作业运行结束后,才由操作系统自动打印存储在磁盘中的输出结果,这种由操作系统将磁盘模拟为输入/输出设备的处理方式称为SPOOLING(并行的外部设备操作联机)也称为“假脱机”。SPOOLING系统是以磁盘为几乎无限巨大的缓冲区来解决低速的I/O设备与高速CPU之间的速度匹配问题。

相比内存缓冲技术,SPOOLING技术还有其他优点:内存缓冲只能是作业的I/O与本身的计算工作重叠进行,SPOOLING能使多个作业的I/O与计算机重叠地进行。使用SPOOLING技术,计算机在执行一个作业时打印前面已完成了的计算任务的输出结果,还能读入尚未运行的作业,这样使得CPU和多台I/O设备能以很高速度进行并行地工作,提高系统的吞吐量。

SPOOLING还提供一种很重要的结构——缓冲池,操作系统可以根据系统当前的情况在这些作业中挑选下一个运行的作业,以提高CPU和外部设备的利用率。这样操作系统就能是一些CPU受限作业和I/O设备受限作业相搭配运行,以提高系统中各种设备的利用率。

5.多道程序设计 

脱机操作、缓冲和SPOOLING虽然能使CPU的计算与I/O设备的操作重叠地进行,却有一定的局限性,这些技术都不能使CPU和I/O设备时常保持忙碌状态。当一个作业必须等待I/O操作完成是(如从磁盘读入一个数据),CPU就不能执行下一步运算,往往只能空等。

作业调度使另一种新的计算基数——多道程序设计成为可能,能进一步提法哦CPU的利用率,使它几乎总有任务可执行,也能提高外部设备的利用率,使得多个作业的多种I/O操作可以并行运行。

在多道程序设计系统中,操作系统可以将多个作业存放在作业缓冲池中。在某一时刻,操作系统从缓冲池中挑选一个作业,并开始执行该作业。当执行中的作业因要等待用户键盘输入或等待其它设备I/O操作时,在多道程序设计中,操作胸膛呢过久可在缓冲池中挑选另一个作业,使其运行。当前一个作业结束了的等待状态后就可以再次获得CPU,继续运行下去。只要系统中总是存在可执行的作业,CPU就永远不会闲着。

多道程序设计技术都是相当复杂的,首先为了支持多道程序设计,要有足够大的内存,同时需要有比较复杂的存储和保护机构,同时还需要处理机调度机构,决定哪一个作业占用CPU,除此之外,还需要提供各种外部设备的调度和管理功能。

1.3现代操作系统的类型

 1.分时系统

为了降低交互式系统的等待时间和运行时间的比率,系统通过多态终端同时向很多用户提供运行环境,这种分时系统就能以合理的成本向用户提供交互式使用计算机的方便。

现在,大部分系统能同时支持批处理和分时。

分时系统具有以下几个基本特征

①多路性,一台主机可连接多条终端,多个终端用户可以同时使用计算机,共享系统的硬件和软件资源。

②独立性,各用户操作互不干扰,每个用户都认为整个计算机系统被他所独占,为他服务。

③交互性,用户能与系统进行对话,在一个多步骤作业的运行过程中,用户能通过键盘等输入数据或命令,系统获得用户的输入后做出响应,显示执行的状况和结果。

④及时性,系统一般能在1秒钟内接收和响应用户的输入命令或数据,在数秒内显示命令的执行结果。

比较著名的分时系统有:CTTS(兼容分时系统)和MULTICS(多路信息和计算系统)

2.实时操作系统

实时操作系统是一种能在限定的时间内对输入进行快速处理并做出响应的计算机处理系统,根据对响应时间限定的严格程度,实时系统又可分为硬实时系统和软实时系统。

硬实时系统主要用于工业生产的过程控制、航天系统的跟踪控制、武器的制导等。这类操作系统要求响应速度非常快,工作及其可靠安全,否则有可能造成灾难性的后果。在一些重要的控制系统中,为了进一步提高系统的可靠性,除了一台计算机控制系统工作外,还需要有一套后备系统。后备系统又可分为热备份和冷备份两种。

热备份就是除了一台当前工作的主控计算机外,另一台相同的计算机与主控机同步运行,两者之间还定时交换运行状态信息。当主控计算机发生故障时,控制立即被切换到同步运行的后备计算机上。如果中断一个较短的时间的工作不会发生严重事故或造成重大经济损失的控制系统,可采用冷备份方案。当主控计算机发生故障时再启动备用机,接管系统的控制权。

软实时系统主要应用于对响应速度要求不像硬实时系统那么高,且时限要求不是很严格的信息查询和事务处理领域,这些系统的响应时间一般在几秒至几十秒内,这类系统一般配备有大型文件系统或数据库。

3.微机操作系统

微机操作系统基本上是单用户系统,所有资源采用独享方式,不支持批处理、多任务或多到程序设计技术。微机操作系统通常提供较强的文件管理功能,通过命令解释器支持用户以交互的方式使用计算机。另一种微机操作系统是作为实时控制用,主要通过并行口和数/模转换设备与外部系统联系,控制其工作。

微型计算机的另一条发展途径是构成更为复杂的系统——工作站。工作站尽管只能同时被单个用户使用,但支持多道程序设计,不少工作站支持复杂的图像处理工作。大部分工作站采用分时操作系统UNIX。UNIX支持多道程序设计,提供大量的交互控制命令函数库、软件开发工具及窗口图形显示环境,并支持主要的网络协议。

Windows是美国微软推出的新一代视窗操作系统,提供功能强大的图形是操作系统,Windows
9x安装方便,即插即用使硬件设备的安装变得非常简单,仍然提供了对DOS向后兼容的虚拟机。

Windows
NT是在微机上实现的能取代UNIX且通用、可移植、操作简单的操作系统。采用面向对象的开发技术和客户——服务器(CS)模型,提供了现代操作系统的最新功能。

4.多机处理、分布式和网络操作系统

(1)多处理机系统

由于受到电磁速度的限制,单纯靠提高硬件的方法来提高计算机系统的运算速度总是有限的,在类似气象、地震预报、核聚变反应模拟等应用都对计算机的速度提出了更高的要求。多处理机系统可大大提高系统运行的并行性,由此诞生多处理机操作系统。

多处理机操作系统一般分为主从式和对称式。主从操作系统主要驻留并运行在一台主处理机上,控制所有系统资源,将整个任务分解为多个子任务,并将子任务分配给其他的从处理机执行,并协调从处理机的运行过程。

对称式系统在处理机中都配有操作系统,管理和控制本地资源和过程的运行。该系统在一段时间内可以指定一台或几台处理机来执行管理程序,协调所有处理机的运行。

多机处理系统有很高的运算速度,当系统某个处理机发生故障时,一般只因此昂系统的性能,可以用备用单元取代它,故不会造成系统的垮台。

(2)分布式操作系统

分布式系统是一种多计算机系统,这些计算机可以处于不同的地理位置,拥有不同的软硬件资源,并用通信线路连接起来,具有独立执行任务的能力。通常每台计算机没有完全独立的操作系统。分布式系统具有一个统一的操作系统,可以把一个大的计算任务划分成很多可以并行执行的子任务,并按一定的调度策略将它们动态地分配给每个计算机执行,并控制管理每个计算机的资源分配、运行及计算机之间的通信,以协调任务的并行执行。以上的所有管理工作对用户都是透明的。

(3)网络操作系统

计算机网络可以分为局域网和广域网,与分布式操作系统不同,网络操作系统不是一个集中、统一的操作系统,它基本上是在各种各样自治的计算机原有操作系统的基础上加上具有各种网络访问功能的模块,这些模块使网络上的计算机能方便、有效地共享网络资源,实现各种通信服务有关的协议。

5.嵌入式操作系统和智能卡操作系统

(1)嵌入式操作系统

嵌入式操作系统就是运行在嵌入式芯片环境中,对整个芯片及它所操作和控制的各种部件装置等资源进行统一协调、调度、指挥和控制的系统软件。

(2)智能卡操作系统

智能卡实际上是一个单片微机系统,包括中央处理机,存储部件以及对外联络的通信接口。各类智能卡中都驻留了一个微型的操作系统,又称片内操作系统。

一般而言,智能卡操作系统具有4个基本功能:资源管理、通信管理、安全管理和应用管理。读写器和智能卡之间通过命令——响应对方式进行通信和控制。

1.4 操作系统的概念、特征和功能

1.作业和进程

(1)作业

请求计算机完成的一个完整的处理任务称为作业,它可以包括几个程序的相继执行。用户在键盘上输入的一条完整的命令就是一个作业,一条命令可以同时调用几个程序,相互配合来完成一个复杂的任务。一个复杂的作业可以由多个作业步组成。

(2)进程

在多道程序环境下,一个程序的活动具有并发和动态的特征,一个程序活动和其他程序活动之间存在相互依赖和相互制约的关系。程序和程序之间的活动也不存在像封闭的系统中那样严格的一一对应关系,因此,程序这个静态概念已经不能确切地反映程序活动这种动态特征。进程是操作系统最重要的概念之一,某些系统将进程称为任务,对UNIX系统上的进程定义为程序在数据集合上的运行活动,它是系统进行资源分配和调度的一个可并发执行的独立单位。

2.操作系统的特征

(1)并发

并发是指在某一时间间隔内计算机系统内存在着多个程序活动。并行是指在同一时刻计算机内有多个程序都在执行,这只有在多CPU系统中才能实现。在单CPU的系统中,多个程序时不可能同时执行的。并发是从宏观上看多个程序的运行活动,这些程序在串行地交错地运行,由操作系统负责这些程序之间的运行切换,人们从外部宏观上观察,有多个程序都在系统中运行。

(2)共享

共享是指多用户或程序共享系统的软、硬件资源。共享可以提高各种系统设备和系统软件的使用效率。在合作开发某一项目时,同组用户共享软件和数据库可以大大提高开发效率和速度。

共享方式可分为互斥共享和同时共享。互斥共享设备有打印机、磁带机、绘图仪等。这些设备不允许两个作业同时访问,当一个作业使用完毕并释放了所占的资源后,才允许另一个作业访问,有些快速设备如磁盘,尽管也只能允许多个作业串行地访问,但由于作业访问和释放该资源时间极短,在宏观上可看成允许多个作业同时访问,这类设备的共享方式也认为是同时共享。

软件的共享方式也可分为互斥的和同时的,一般来说,只读的数据、数据结构、只读的文件和纯可执行的文件可同时共享,而可写数据、数据结构和文件智能互斥共享。

(3)虚拟

操作系统向用户提供了比直接使用裸机简单方便得多的高级抽象服务,从而为程序员隐藏了硬件操作复杂性,这就相当于在原先的物理计算机上覆盖了一至多层系统软件,将其改造成一台功能更强大而且易于使用的扩展机或虚拟机。例如,分时系统就是把一个计算机系统虚拟为多台逻辑上独立、功能相同的系统,SPOOLING系统可以将一台I/O设备虚拟为多台逻辑设备,或将一台互斥共享设备虚拟成同时共享设备。一条物理信道也可虚拟为具有很多“端口”的多个逻辑信道。

(4)不确定性

不确定性是指使用同样一个数据集的同一个程序在同样的计算机环境下运行,每次执行的顺序和所需的时间都不相同。因此作业就在不可预测的次序中进行,即程序的执行过程是不可预测的。操作系统的不确定性不是指程序执行结果的不确定性。程序执行结果的不确定性的原因往往是由于程序设计本身的错误或由于用户的个程序之间的配合不当引起的。这种结果的不确定性又是在操作系统复杂的不确定性的环境下发生的,使得程序每次的执行情况不易复现。

3.操作系统的功能

(1)CPU管理

CPU是整个计算机系统中的核心硬件资源。CPU的性能和使用情况对整个计算机系统的性能有关键的影响。有效管理CPU、充分利用CPU资源也是操作系统最重要的管理任务。

在多到程序的环境中,CPU分配的主要对象是进程(或线程)操作系统通过选择一个合适的进程占有CPU实现对CPU的管理,因此,对CPU的管理归根到底是对进程的管理。操作系统有关进程方面的管理任务很多,主要有进程调度、进程控制、进程同步与互斥、进程通信、死锁的检测与处理等。

(2)存储管理

存储器可以说是一种最重要的系统资源,一个作业要在CPU上运行,它的代码和数据就要全部或部分地驻在内存中,操作系统也要占据相当大的内存空间。在多道程序系统中,并发运行的程序都要占有自己的内存空间,存储管理的任务是对要运行的作业分配内存空间,当一个作业运行结束时,要收回所占用的内存空间,操作系统要对每一个作业的内存空间和系统内存空实施保护。

在现代的计算机系统中,并发运行的作业越来越多,有限的内存不能满足并发作业对内存的需求。为了解决这个问题,操作系统使用虚拟内存管理技术,可向作业提供大于实际物理内存的存储空间。运行作业的一部分代码和数据可先装入内存,另一部分则驻在外存,就当作业到达某个运行阶段需要访问这部分程序空间是,再将它们从外存调入内存。运行作业在内存部分和外存部分交换还要涉及地址变换技术。

(3)设备管理

计算机设备大致分为字符快设备和字符设备,主机与字符块设备之间每次传输一个块大小的数据,主要的块设备有硬盘、软盘、磁带和光盘,主机与字符设备之间每次传输一字节,常见的字符设备是终端、屏幕、打印机、绘图仪、串行口、并行口和通信口等。

为了提高CPU与设备运行的并行程度,CPU与设备进行数据传输时一般经过通道、控制器和中断进行。时钟是一种较为特殊的I/O设备,一般也归为字符设备。

设备管理的主要任务有设备的分配和回收、设备的控制和信息传输即设备驱动。设备管理方面的系统代码在操作系统核心中占相当大的部分。一般与各种设备密切相关的代码是由设备制造商或专门的软件生产商编制,以可装卸的形式植入操作系统的内核。

设备管理还涉及以下两部分,虚拟设备管理和缓冲管理。

(4)文件管理

文件是计算机中信息的主要存放形式,文件管理的主要目的是将文件长期、有组织、有条理地存放在系统之中,并向用户和程序提供方便建立、打开、关闭、目录管理、文件的存取操作与控制、文件的安全与维护、文件逻辑地址与物理地址的映像、文件系统的安装、拆除和检查等。

(5)用户接口

配置操作系统的很重要的目的就是为了方便用户使用计算机。操作系统内核通过系统调用向应用程序供了很友好的接口,方便用户程序对文件和目录的操作,申请和释放内存,对各类设备进行I/O操作,以及对进程进行控制。此外,操作系统还提供了命令级的接口,向用户提供了几百条程序命令,使用户方便地与系统交互。

为了便于系统的维护、管理和便于用户利用命令界面自动地完成复杂的作业以及运行和控制任务,操作系统一般都提供作业运行控制或命令程序接口,典型的是UNIX的Shell程序。由于命令程序的基本执行单位是命令,故其一条语句所能完成的工作比若干条普通高级语言语句强得多。一些系统的自举过程主要由命令程序完成的,这样也便于系统管理员通过修改这些程序来剪裁自己的系统配置。超级用户能利用命令文件自动地完成系统维护工作,普通用户也能利用命令文件进行软件设计与编制或进行大型软件系统的原型设计。

近年来图形用户界面发展得很快,这种以图形和菜单作为主要的显示界面以及鼠标作为主要的输入方式受到了广大计算机用户的欢迎,并对计算机的普及起到了关键性的作用。