目录
1.1操作系统的概念
1.1.1计算机体系结构
1.1.2操作系统的定义
1.2操作系统的发展过程
1.2.1操作系统的形成和发展
1.2.2手工操作
1.手工操作阶段
2.脱机输入输出方式
1.2.3批处理系统
1.单道批处理系统
2.多道批处理系统
1.2.4分时系统
1.2.5实时系统
1.2.6通用操作系统
1.2.7网络操作系统
1.2.8分布式操作系统
1.2.9嵌入式系统
1.3操作系统的功能和特征
1.3.1操作系统的功能
1.处理器管理
2.存储器管理
3.设备管理
4.文件管理
1.3.2操作系统的特征
1.并发性
2.共享性
3.虚拟性
4.异步性
1.4操作系统的运行环境
1.4.1操作系统的结构
1.模块化结构
2.层次化结构
3.虚拟机结构
4.客户机/服务器结构
5.面向对象结构
1.4.2处理机的执行状态
1.4.3中断及其处理
1.中断的概念
2.中断的类型
3.中断的分类
4.中断的处理过程
5.中断机制在操作系统中的作用
1.5操作系统用户接口
1.5.1命令接口
1.5.2程序接口
1.5.3图形接口
1.6现代主流操作系统
1.6.1UNIX操作系统
1.6.2Linux操作系统
1.6.3Windows系统
一个完整的计算机系统由计算机硬件和计算机软件两部分组成,如图1-1所示。
图1-1 计算机系统的构成
它们是一个统一的整体,各个组成部分之间相互协调、相互制约,共同完成所分配的各项任务。计算机硬件是指构成能正常工作的计算机所需要的各种硬件设备,即“看得到、摸得着”的实际物理部件,包括键盘、显示器等,它们是计算机系统的物质基础。按照不同的功能,硬件设备通常由五大部分组成:输入设备、输出设备、存储器、运算器和控制器,如图1-2所示,其中实线表示控制信号,虚线表示数据传输。
图1-2 计算机硬件系统的结构
计算机硬件设备中,运算器和控制器通常被称为中央处理器(CPU),它与存储器一起称为“主机”。CPU是硬件系统的核心,通过执行程序或软件方式,实现运算,并直接控制计算机各个部件的工作。主存储器(俗称内存)用于存放系统中运行的程序和数据。输入和输出设备(统称外围设备或外部设备)用于实现计算机系统与外界信息交换的各种硬件设备,包括键盘、鼠标、打印机等。
计算机软件是指由计算机硬件执行,以完成特定任务的程序及文档数据。程序是计算任务的处理对象和处理规则的描述,而文档则是为了便于了解程序所需的说明性的资料。计算机软件可分为系统软件和应用软件。计算机用户通过应用软件访问、使用计算机,使其为自己服务,应用软件则通过系统软件管理、控制计算机的硬件设备。
系统软件是负责管理计算机系统中各种硬件,使得它们协调工作的软件,其主要功能是简化程序设计,扩大计算机处理能力,提高计算机使用效率,充分发挥各种资源功能的作用。系统软件是应用软件与计算机硬件之间的接口,它将计算机硬件作为一个黑盒子,提供给计算机用户和其他应用软件,使得他们在使用或访问过程中,不需要考虑每个底层计算机硬件设备是如何具体工作的。系统软件主要包括操作系统和系统应用软件。操作系统是紧挨着硬件的第一层软件,直接控制和管理硬件设备,也是对硬件功能的首次扩充,其他软件则建立在操作系统之上。系统应用是由一些系列语言处理程序和系统服务程序构成,以扩充计算机系统的功能。通常情况下,它们存放在磁盘或其他外部存储设备上,仅当需要运行时,才被装入内存。系统应用软件主要为用户编制应用软件、加工和调试程序以及处理数据提供必要服务。常用的系统应用软件包括语言处理程序、编译软件,以及各种服务程序。
应用软件处于计算机层次结构的最外层的应用程序。它们是计算机用户为了使用计算机完成某一特定工作,或者解决某一具体问题而编制的程序,以满足应用要求、服务于特定的用户。应用软件主要通过调用系统软件所提供的接口服务,实现自己的特定功能,常用的应用软件包括办公软件、售票系统、浏览器、聊天软件、游戏软件等。
计算机系统中,硬件和软件是相辅相成、缺一不可的。计算机硬件是计算机的躯体和基础,计算机软件是计算机的头脑和灵魂,即计算机硬件是构成计算机系统所必须配置的设备,而计算机软件则只会计算机系统按照特定的要求进行工作。因此,没有软件的计算机和缺少硬件的计算机都不能称为完整的计算机系统。
随着信息技术的快速发展,计算机系统越来越复杂。这需要一个自动化的管理机构,组织各种硬件资源,提高其利用率,并实现各类软件资源的查找和调用,以方便用户使用计算机。操作系统就扮演了这种角色。
操作系统在计算机系统中具有举足轻重的作用,它不仅是硬件与所有其他软件直接的接口,而且任何电子计算机都必须配置操作系统,才能构成一个可以协调运转的计算机系统。只有在操作系统的指挥控制下,各种计算机资源才能被分配给用户使用,也只有在操作系统支撑下,其他软件才得以正常运行。没有操作系统,任何应用软件均无法运行。由此可见,操作系统实际上是一个计算机系统中硬、软件资源的总指挥部。
操作系统与软件、硬件的关系如图1-3,其中裸机是指没有配备任何软件的计算机,它是构成计算机系统的物质基础,不能直接被用户使用;操作系统是靠近硬件的软件层,其功能是直接控制和管理系统各类资源。在操作系统的管理和控制下,计算机硬件的功能才能发挥充分。
综上所述,操作系统是控制和管理计算机系统硬件和软件资源、合理地组织计算机工作流程,以方便用户使用的程序的集合。具体而言,可从一下几个方面理解操作系统:
操作系统是一种庞大的系统软件,由大量复杂的程序和众多的数据组合而成。操作系统具有层次和模块的特点,其内部分为三个层次:操作系统对象、控制和管理的软件集合、用户接口。操作系统的具体层次结构如图1-4所示,其中层与层之间通过调用和接口这两种方式进行通信服务,即每一层对其直接的上一层提供接口,对其直接的下一层进行调用。
用户接口位于最外层,它是用户与计算机之间的桥梁,为用户提供相应的接口程序或命令,通过调用下层的程序,供用户使用。控制和管理的软件集合是整个操作系统的核心部分,操作系统的绝大部分功能都是在这一层实现的。操作系统对象描述具体的物理设备的相关性质、功能特性等。
图1-4 操作系统的层次模型
操作系统的形成迄今已有60多年历史,其发展历程与硬件系统结构的发展有着密切的联系。电子计算机最初(真空管时代)没有配备操作系统。20世纪50年代中期(晶体管时代)出现了第一个简单的批处理操作系统,60年代中期(集成电路时代)产生了多道程序批处理系统,随后(大规模和超大规模集成电路时代)除了基于多道程序的分时系统,70年代(微机和网络的出现)产生了微机操作系统和网络操作系统,之后又出现了分布式操作系统。在这短短的60多年中,操作系统经历了从无到有、从简单到复杂的过程,其主要动力归结为以下四个方面:
目前,操作系统的种类繁多,根据应用领域,可分为桌面操作系统、服务器操作系统、主机操作系统、嵌入式操作系统;根据所支持的用户数目,可分为单用户操作系统,多用户操作系统;根据源代码的开发程度,可分为开源操作系统和不开源操作系统;根据硬件结构,可分为网络操作系统、分布式系统、多媒体系统;根据环境和对作业的处理方式,可分为批处理系统、分时系统、实时系统。
操作系统的发展过程经历了手工阶段(无操作系统)、批处理操作系统、多道程序系统、分时操作系统、实时操作系统、通用操作系统、网络操作系统、分布式操作系统和嵌入式操作系统等。下面主要介绍几种典型的操作系统。
20世纪40年代至50年代中期,计算机系统没有配置操作系统,也没有任何软件,用户通过手工操作方式操控计算机,独占计算机的全部资源。
手工操作的处理过程:程序员首先将存储了程序和数据的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动并运行程序,计算过程完成后,打印机输出计算结果,最后用户卸下纸带(或卡片),并取走结果。整个过程完成后,才允许下位用户使用计算机。
手工操作的特点:用户只能串行工作,工作时独占计算机,导致资源利用率低。此外,CPU等待手工操作,因而CPU利用率很低。
早期的计算机运算速度相对较慢,手工操作方式是可行的。随着晶体管时代的到来,计算机的运行速度得到了很大提升,手工操作的慢速度和计算机的高速度不匹配,严重降低了系统资源的利用率,出现了所谓的人机矛盾。
为了解决高速CPU与慢速输入输出(I/O)设备之间速度不匹配的矛盾,20世纪50年代末出现了脱机输入输出技术。该技术通过控制外围机方式,完成程序和数据的输入输出,即脱离主机进行程序和数据的输入输出操作,因而称为脱机输入输出方式;反之,程序和数据的输入输出是在主机控制下进行的,称为联机输入输出方式。
脱机输入输出的处理过程:事先将装有用户程序和数据的纸带放入纸带输入机,在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入到磁带上。当CPU需要这些数据(程序)时,直接从告诉的磁带上调入内存,从而大大加快数据(程序)输入过程,减少了CPU等待输入的时间。类似地,当CPU需要输出时,并不是把计算结果直接送至输出设备,而是高速输出至磁带上,然后在另一台外围机的控制下,把磁带上的计算结果送到相应的输出设备上,因而大大加快了输出过程。
脱机输入输出的特点:由于输入输出均由外围机控制完成,不占用CPU时间,因此,减少了CPU的空闲等待时间。此外,CPU需要输入或输出数据时,可从高速磁带上获取,因而提高了I/O速度。
批处理系统主要利用批处理技术,对系统中的一批作业自动进行处理,它包括单道批处理系统和多道批处理系统。
单道批处理系统是20世纪50年代中期在IBM701计算机上实现的第一个操作系统。单道批处理系统就是在监督程序的控制下,计算机系统能够自动地、成批地处理一个或多个用户的作业,其中作业是指将用户在一次事务处理过程中要求计算机系统所完成的工作(包括程序、数据和命令)的集合。
单道批处理系统的处理过程:首先由监督程序将磁带(盘)上的第一道作业装入内存,并把控制权交给该作业;当作业完成时,控制权重新交给监督程序,由监督程序将磁带(盘)上的第二道作业调入内存,再将控制权交给第二道作业,如此反复进行,直到这批作业全部运行完成。虽然作业处理是成批进行的,但内存始终保持一道作业,故称为单道批处理系统。单道作业的工作情况如图1-5所示。
图1.5 单道作业的工作情况
弹道批处理系统的特点:
单道批处理系统大大地减少了人工操作的时间,提高了计算机的利用率,但由于内存中仅存放一道作业,导致每次发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,使得CPU处于空闲状态。
为了解决单道批处理中CPU利用率低的问题,20世纪60年代中期引入了多道程序设计技术,形成了多道批处理系统。多道程序设计技术是指同时将多个程序装入内存,并允许他们交替运行,共享系统中的各种硬、软件资源。当某个程序因I/O请求而暂停运行时,CPU便立即去运行另一个程序。两道程序的运行情况如图1-6所示。
图1-6 两道程序的运行情况
多道程序系统的处理过程:假设内存中同时存放A、B两道程序,在系统的控制下,CPU可交替运行A和B。当程序A因请求I/O操作而放弃CPU时,程序B就占用CPU运行,使得CPU不再空闲,此时涉及I/O操作的设备也不空闲,即CPU和I/O设备都处于工作态度。
多道批处理系统的特点:
多道批处理系统的主要优点:
多道批处理系统的主要缺点:
为了解决多道批处理系统无交互能力的问题,满足人机交互的需求,20世纪60年代推出了分时操作系统。分时系统是指一台主机连接了多个配有显示器和键盘的终端,由此所组成了完整的系统,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。分时系统的结构如图1-7。
图1-7 分时系统的结构
分时系统的处理过程:假设系统中主机连接了k台终端,系统利用分时技术,将CPU的运行时间分成k个很短的时间片。首先将第一个时间片分配给第一个终端,执行第一个终端的作业或程序,待该时间片使用完成后,系统则将第二个时间片分配给第二个终端,执行第二个终端作业或程序,此过程依次重复,待第k个时间片结束后,系统结束此轮循环,进入新的一轮循环直至所有作业或程序结束。由于一台计算机可同时连接多个用户终端,且CPU速度不断提高,时间间隔(时间片)很短,每个用户均可在自己的终端上联机使用计算机,就感觉像自己独占计算机一样。
分时系统的特点:
分时系统中的关键问题:
多道批处理系统和分时系统能获得较令人满意的资源利用率和系统响应时间,但不能满足实时控制与实时信息处理两个应用领域的需求,为此产生了实时系统。实时系统是指能够及时响应随机发生的外部事件,在严格的时间范围内,完成对该事件的处理,并控制所有实时任务协调一致的运行。特定的应用中实时系统常作为一种控制设备来使用。
根据控制对象的不同,实时系统可以分成两大类:
实时系统的主要特点:
为了进一步提高计算机系统的适应能力和使用效率,20世纪60年代后期,产生了具有多种功能途径、多种类型操作特征的通用操作系统,该类系统可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。构造通用操作系统的目的是为用户提供多模式的服务,同时进一步提高系统资源的利用效率。
由于通用操作系统具有规模庞大、功能强大、构造复杂等特点,实际应用中同时具有实时、分时、批处理三种功能的操作系统并不常见。因此,通常将实时与批处理结合起来,或者将分时与批处理结合起来,构成前后台系统。实时批处理系统兼有实时系统和多道批处理系统的功能,它保证优先处理实时任务,插空进行批处理作业,故而该系统中实时任务常称为前台作业,而批处理作业称为后台作业。分时批处理则是具有分时系统和多道批处理系统的功能,即对时间要求不强的作业作为批处理处理,而对频繁交互的作业则采取分时处理,CPU优先运行分时作业。
随着20世纪80年代计算机网络的迅速发展,计算机网络正在改变人们的观念和社会能力。网络操作系统是指具有网络通信和网络服务功能的操作系统。它是在一般操作系统功能的基础上通过提供网络通信和网络服务功能而形成的,以方便计算机进行有效的网络资源共享,并提供网络用户所需的各种服务的软件和相关协议的集合。
网络操作系统主要包括客户机/服务器(C/S)模式和对等模式(P2P)这两种工作模式。客户机/服务器式是目前广泛流行的网络工作模式。它将网络中的计算机分成两类:服务机和客户机,其中服务器是网络的控制中心,为用户提供文件打印、通信传输、数据库等各种服务,而客户机是用于本地处理和访问服务器的计算机。对等模式则将网络中的计算机对等看待,每台计算机都是对等的,既可以作为服务器,又可以作为客户机。
网络操作系统的功能:
主流的计算机网络操作系统包括UNIX、Netware和Windows NT系列,其中UNIX是唯一能够跨多种平台的操作系统,Netware是早期面向微机的网络操作系统,WindowsNT则既适用于微机,也适用于工作站。
以往的计算机系统中处理和控制功能高度地集中在一台计算机上,所有的任务都由它来完成,这种系统称为集中式计算机系统。集中式计算机系统的缺点是若管理控制计算机出现故障,则整个系统将会瘫痪。针对这种问题,计算机网络发展为分布式结构,即系统的处理和控制功能分散在系统的各个处理单元,系统中的任务也可动态分配到各个处理单元,并使它们并行执行,实现分布式处理。
分布式系统是指通过通信网络方式,将地理上分散的、具有自治功能的多台分散的计算机通过互联网连接而成的系统,以实现信息交互和资源共享,协作完成指派的任务。分布式系统中,每台计算机既高度自治,又互相协同,能在系统范围内实现资源管理、任务分配,能并行地运行分布式程序。分布式操作系统是指能管理分布式计算机系统的操作系统。
分布式操作系统的特点:
分布式操作系统与网络操作系统的区别:
嵌入式操作系统是指用于嵌入式计算机环境中的操作系统,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等功能,负责嵌入式系统的软、硬件资源的分配,任务调度,协调并发活动等。
嵌入式操作系统具有硬件平台的局限性、应用环境的多样性和开发手段的特殊性,其主要特点如下:
目前在嵌入式领域广泛使用的操作系统有:WinCE、PalmOS、Linux、VxWorks、Android、iOS等。
操作系统是计算机系统的资源管理者,其主要任务是对系统中的硬件、软件实施有效的管理,以提高系统资源的利用率。计算机硬件资源主要包括中央处理器、主存储器、磁盘存储器、打印机、显示器、键盘和鼠标等;软件资源指的是存放于计算机内的各种文件信息。因此,操作系统的主要功能包括处理器管理、存储器管理、设备管理和文件管理。此外,操作系统还提供用户接口,以方便用户使用操作系统。
CPU是计算机系统中最宝贵的硬件资源。处理器管理主要任务是对CPU进行高效分配,并对其运行状况进行有效的控制与管理。为了提高资源的利用率,操作系统中采用了多道程序技术。多道程序环境下,CPU的分配和运行都是以进程为基本单位,因而处理器管理可最终归结为对进程的管理。
处理器管理的主要功能包括进程控制和管理、进程同步与互斥、进程通信、进程调度、进程死锁。
存储器可分为内部存储器(内存)和外部存储器(外存),存储器管理主要是指对内存的管理。存储器管理的主要任务是方便用户存取内存中的程序和数据;提供数据存储保护,保证数据不被破坏或非法访问;借助多道程序技术,提高内存利用率;内存容量不足时能从逻辑上扩充内存。
存储器管理的主要功能包括存储分配、存储共享、存储保护、地址转换、存储扩充。
设备管理是对计算机系统中各种输入、输出设备进行管理和控制。由于硬件设备种类繁多,且工作原理和操作特性各不相同,因而设备管理和控制十分复杂。设备管理和控制十分复杂。设备管理的主要任务是完成用户提出的I/O请求,为用户分配I/O设备;提高CPU和I/O设备的利用率;提高I/O设备的运行速度;方便用户使用I/O设备。
设备管理的主要功能包括控制与处理、设备分配与回收、设备独立性、缓冲管理和虚拟设备。
计算机系统中程序和数据通常以文件形式存储在外部存储器(外存)上。文件管理是对系统中信息资源(程序和数据)进行有效管理,为用户提供方便快捷、共享、安全、保护的使用环境。文件管理的主要任务是对用户文件和系统文件进行管理;方便用户使用;实现文件共享访问;保证文件的安全。
文件管理的主要功能包括文件存储空间管理、目录管理、文件读写管理、文件共享保护和存取控制。
操作系统的特征是一个相当复杂的系统软件,不同的操作系统具有不同的特征。总体而言,计算机操作系统具有以下几个基本特征。
并发性是指两个或两个以上的事件在同一时间间隔内发生。多道程序环境下,计算机系统中同时存在多个进程,宏观上,这些进程同时执行,同时向前推进;微观上,单处理机中任何时刻只有一个进程在执行,多个进程之间是交替执行的,多处理机中这些进程被分配到多处理机上并行执行。并发的目的是提高系统资源的利用率和系统的吞吐量。
并发和并行是两个既相似又有区别的概念。并行是从某一时刻去观察,两个或多个事件都在运行。
共享性是指计算机系统中的资源可被多个并发执行的进程使用,而不是被其中某个进程独占使用。根据资源的属性,共享可分为互斥共享和同时共享。
虚拟性是指通过某种技术,将一个物理实体变成若干个逻辑对应物。物理实体是实际存在的,而逻辑对应物则是虚构的,用户使用时感觉有多个实体可供使用。操作系统中采用了多种虚拟技术,如利用多道程序设计技术实现虚拟CPU,通过请求调入调出技术实现虚拟存储器,通过SPOOLing技术实现虚拟设备。
异步性是指在多道程序环境下,由于资源的共享性和有限性,并发执行的进程之间产生相互制约的关系,它们的运行过程有可能不是一气呵成的,有可能是走走停停的,从而导致多个程序的运行顺序、运行时间都是不确定的,即各个进程何时执行、何时暂停以及以怎样的速度向前推进、什么时候完成都是不可预知的。操作系统必须保证在环境相同情况下,进程经多次运行,均会得到相同的结果。
现代操作系统为方便用户使用,包含的功能较多,从而导致结构复杂,因此,在开发设计之初常采用模块化设计思想。模块化的操作系统由许多标准的、可兼容的模块组成,各模块的功能相互独立,相互之间通过接口方式进行调用。模块化操作系统的优点是系统功能可分割为多个不同的模块,每个模块的具体编码可由不同人员实现,达到并行合作的目标,从而可在很短的周期内完成操作系统的设计实现。由于操作系统的各个模块之间的调用关系较复杂,导致系统逻辑结构不够清晰,从而使得所设计的操作系统难以分析、维护和移植。
为了解决模块化结构设计的问题,人们提出了层次化结构设计模型。该模型将操作系统的各功能模块分成多个层次,其中每一层均有自己相对独立的任务和功能,各层之间不允许构成循环依赖,且各层之间相对稳定。下层模块给上层模块提供支持,上层模块调用下层模块,仅能使用下层提供的功能和服务。此外,层与层之间通常不能跨层调用访问。这种情况下,上下层之间只需关心接口即可,无须了解彼此的内部结构和实现方法。由于每步设计都是建立在可靠的基础上,整个系统的正确性可通过各层的正确性得到保证,因而,安全和验证都变得更容易。层次化结构的逻辑清晰,层内的修改与其他各层无关,这便于系统的设计、实现、更新、维护和移植。
虚拟机是指在完全无软件的计算机上配置功能不同的软件的计算机系统。虚拟机结构针对不同的应用领域,在逻辑上扩展一层层软件,使得相同硬件系统的计算机由于配置的软件不同而具有各种不同的性能,从而使得计算机扩充为功能更强、使用更加方便、适用于多种不同应用场合的虚拟计算机。虚拟机结构通常采用层次化结构的设计方法来实现。
计算机系统运行期间,大量CPU指向时间花费在通信方面。为了进一步提高系统性能,根据网络结构的特点,现代操作系统设计成客户机/服务器结构模式,其中操作系统中最基本的且通信频繁功能模块单独整合设计在服务器端进程。且常驻内存中,而将文件服务、设备服务、进程服务等功能交由用户(客户)进程实现。当用户进程需要某项服务时,向服务器进程发出请求,服务器进程响应请求后为用户进程服务,服务完成后将结构发送给用户进程。由于服务器进程是特殊的用户进程,且运行在用户态,因此,某个服务器的崩溃不会导致系统的崩溃。
由于具有可封装性、可移植性等优点,面向对象程序设计方法自提出以来,就得到了广泛的应用。部分新型的操作系统采用面向对象程序设计方法来实现,将数据和针对数据所执行的操作封装在对象之中,并将其作为数据的属性或访问方法提供给用户使用、访问。由于用户不能直接操作数据,因此面向对象结构的操作系统具有数据隐藏、易于保持数据的完整性和一致性等特点,从而可实现对不同对象的数据保护。
计算机系统运行时,操作系统和用户程序均存储在内存中。为了防止操作系统被破坏或非法访问,系统通过在CPU的寄存器中设定保护状态位,提供了保护机制。CPU执行程序时根据状态位的值对当前程序执行权限进行控制。
CPU的执行状态通常分为系统态(管态)和用户态(目态),其中系统态表示CPU当前正在执行操作系统的系统程序,而用户态表示CPU当前正在执行用户程序。为了实现对操作系统的保护,CPU将其指令分为特权指令和非特权指令。
(1)特权指令:指具有特殊权限的指令,主要用于系统资源的分配和管理,包括改变系统工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。特权指令在多用户、多任务的计算机系统中必不可少。常见的特权指令包括启动I/O设备指令、访问程序状态指令、存取中断寄存器指令等。
(2)非特权指令:指只有普通权限的指令,只能在用户态下运行。用户程序所使用的指令都是非特权指令,它不能直接访问系统中的硬件和软件,对内存的访问范围也局限于用户空间。
CPU只有在系统态下才能访问特权指令,在用户态下不能执行特权指令。如果用户程序中出现特权指令,CPU会因为指令权限与CPU当前运行状态不吻合而自动产生非法指令中断,终止用户程序的执行,并交由操作系统处理。因此,用户程序不能随意访问其存储空间以外的其他存储空间,从而实现了存储保护。
中断是指CPU在程序执行过程中,当新的情况或事件出现时,CPU暂时停止当前程序的执行,转而处理新情况的过程。中断处理过程中,凡是能够引起中断原因或提出中断请求的设备和异常故障称为中断源,实现中断响应过程的硬件称为中断装置,处理该事件的程序称为中断服务程序,完成中断全过程的硬件和软件系统称为中断系统,中断时程序中当前执行完毕的指令地址称为断点,中断返回后继续执行的下一条指令地址称为返回点。
根据中断源的不同,中断一般包括程序中断和硬件中断。程序中断是指程序执行过程中出现的不可预知的错误故障(访问不存在的资源等)或事先设置的陷阱(trap)处理(如断点中断、单步中断等)。硬件中断是指由硬件设备引发的中断请求,具体包括如下几种中断:
(1)外部中断是指由计算机外设(如键盘、打印机、定时器等)发出的中断请求。外部中断是可屏蔽的中断。
(2)内部中断是指由硬件出错(如突然掉电、奇偶校验错等)或运算出错(如除数为零、运算溢出、单步中断等)所引起的中断。内部中断是不可屏蔽的中断。
(3)故障强迫中断是指计算机的一些关键部位设有故障(如存储器读取出错、外设故障、电源掉电以及其他报警信号等)自动检测装置,引发CPU中断,并进行相应处理。
(4)实时时钟请求中断是指系统采用一个外部时钟电路(可编程)控制其时间间隔,时钟电路一旦达到规定时间,则发出中断请求,由CPU转去完成检测和控制工作。
(5)数据通道中断是指数据通道在传输、交换数据时发出的中断请求。
(1)按处理方式的不同,中断可分为简单中断和程序中断,其中简单中断(如数据通道中断)采用周期窃用的方法来执行中断服务;程序中断是中止现行程序的执行转去执行中断服务程序
(2)按产生方式的不同,中断可分为自愿中断和强迫中断,其中自愿中断(如程序自设中断)是通过设置自陷指令而引起的中断;强迫中断是一种随机发生的实时中断,强迫CPU去执行处理,如外部设备请求中断、故障强迫中断等。
(3)按中断事发地点的不同,中断可分为内部中断和外部中断,其中外部中断也称为外部硬件实时中断,它由来自CPU某一引脚上的信号引起;内部中断也称软件指令中断,它是为了处理程序运行过程中发生的一些意外情况或调试程序而提供的外部中断。
(4)根据受理中断请求的情况,中断可分为可屏蔽中断和不可屏蔽中断,其中可屏蔽中断是指CPU内部的中断触发器(或许中断允许触发器)能够拒绝响应的中断;反之,不可屏蔽中断是指CPU内部的中断触发器(或许中断允许触发器)不能够拒绝响应的中断。
中断处理是指CPU一旦响应用户中断请求,就转去执行中断服务程序,完成中断处理的过程。中断处理的具体过程通常由软件实现,如图1-8所示的虚线部分。
图1-8中断响应及处理过程
中断处理过程一般由以下三个步骤组成:
(1)保护被中断进程的现场。为了在中断处理结束后能使进程正确返回到中断点,系统必须保存当前CPU状态字和程序计算器等值。通常由硬件机构自动将状态字和计数器的值保存在中断保留区(栈)中,然后将被中断进程的CPU现场信息(如CPU所以寄存器)压入栈中。
(2)处理中断或执行中断服务程序。CPU先测试各个中断源,判断具体中断事件,根据中断源的不同,获取相应的处理程序的首(入口)地址,并装入程序计数器中,使得CPU转向执行相应的处理程序。
(3)恢复被中断进程的现场。中断服务程序结束后,唤醒等待该中断请求的进程,同时将保存在中断栈中的被中断进程的现场信息(第一步中所保存的信息)取出,装入到相应的寄存器中,使得CPU能正确返回到被中断进程当时所处的状态。
操作系统引入中断机制的最大好处是方便处理随机发生的事件。任何情况下,只要有随机事件发生,操作系统都可以通过中断机制中断当前程序的执行,转而执行处理该事件的服务程序。事实上,操作系统可被看作是一个以事件为驱动的中断机制,其中用户的每个操作均可看作是一次中断。如双击鼠标,CPU就转去执行相应的事情。中断能给操作系统带来很多方便之处:
(1)中断可以实时处理许多紧急事件。
(2)中断可以实现CPU与外设的并行工作,从而提高CPU的效率和系统的吞吐量
(3)中断可以实现多道程序之间的切换。
(4)中断可以使得操作系统作为系统服务的支撑平台,用户程序可通过系统调用完成相应任务,从而简化了操作系统和应用程序的开发设计过程。
总之,中断是操作系统功能实现的基础,是构成多道程序运行环境的根本措施,是程序得以运行的直接或间接的“向导”,是各种事件被激活的驱动源。
为了方便用户快速、有效地使用计算机系统,操作系统向用户提供了一系列接口。用户通过这些接口与计算机进行交互,告知计算机系统所需完成的任务或需求,计算机进而完成相应的操作和处理。
操作系统为用户提供了命令和系统调用两种方式使用计算机系统,前者为用户提供了各种控制命令,方便组织和控制程序的执行或管理计算机系统,故又称命令接口;后者为编程人员提供了各种控制函数,方便程序请求访问操作系统提供的服务,故又称程序接口。随着用户使用习惯的进一步改善,命令接口发展演变为图形接口。
为了便于用户直接或间接地控制自己的作业,操作系统向用户提供了各种命令接口。用户可以借助命令接口,通过输入设备(键盘、鼠标、触摸屏、声音等)向系统发出字符命令,及时与自己的作业交互,控制作业的运行。命令接口又可进一步分为联机命令接口和脱机命令接口。
(1)联机命令接口:由一组键盘命令及命令解释程序组成,每当用户在终端或控制台的键盘上输入一条命令,系统便立即转入相应的命令解释程序,对该命令进行处理和执行,命令完成后,返回到终端或控制台,等待下一条命令。
(2)脱机命令接口:由一组作业控制语言(JCL)组成,用户在向批处理系统提交作业时,必须先使用JCL将用户的控制意图编写成作业说明书,然后将作业连同作业说明书一起提交给系统。系统调度该批处理作业时,对作业说明书上的命令逐条解释并执行。
程序接口有一组系统调用命令组成,用户通过在程序中使用这些系统调用命令,请求操作系统提供服务。程序接口一般通过系统调用来实现。
系统调用是操作系统为了扩充机器功能、增强系统能力而提供给用户使用的具有一定功能的程序段。具体地,系统调用就是通过系统调用命令中断现行程序,转去执行相应子程序,以完成特定的系统功能。完成后,返回到当前程序继续往下执行。用户程序通过系统调用可以访问系统资源,调用操作系统功能,而不必了解具体的内部结构和硬件细节。它是用户程序获得操作系统服务的唯一接口。
不同的操作系统具有不同的系统调用命令,或是相同的系统调用命令,但格式和执行功能则可能不相同。系统调用按功能可大致分为设备管理、文件管理、进程管理、进程通信、存储管理。
操作系统的内核中设置了一组专门用于实现各种系统功能的子程序,即系统调用函数。系统调用函数执行时CPU处于系统态(即管态)。当CPU执行用户程序中的系统调用函数时,由特定的硬件或软件指令实现对操作系统某个功能的调用,CPU在执行到系统调用函数时产生访管中断,通过中断机制自动将CPU的状态由用户态转变为系统态,然后执行系统的服务程序,完成后再中断返回,将CPU的状态转变回用户态,返回用户程序中被中断的地方继续执行。系统调用是一种特殊的中断处理。它的具体实现过程与中断处理类似,如图1-9所示。
图1-9系统调用的实现
用户虽然可以通过命令行和命令文件方式获得操作系统的服务,并控制本地应用程序运行,但是要求用户牢记各种命令、参数等,并严格按照规定的格式输入命令,这既不方便又耗时。为此,图形用户界面(GUI)应运而生。
近年来,软件的易用性和美观性越来越友好,操作系统的传统字符命令接口也逐渐发展为更为友好的图形接口。该接口采用图形化的操作界面,用容易识别的图标将系统的各种命令和功能直观地表达出来。用户可以通过菜单和对话框来完成对应用程序和文件的操作,利用鼠标完成与系统的交互,从而达到易用的效果。目前,图形接口也是最为流行的联机用户界面方式。
UNIX操作系统是一个强大的多用户、多任务操作系统,支持多种处理器架构。按照操作系统的分类,它属于分时操作系统,由美国的AT&T公司的贝尔实验室于1969年开发成功,首先在PDP-11上运行。
UNIX系统问世以后,很快在大学和研究单位中受到重视和欢迎,并在短短的十余年中安装在从巨型机到微型计算机的各种计算机中。UNIX操作系统目前主要运行在大型计算机或各种专用工作站上,其版本有AIX(IBM公司开发)、Solaris(SUN公司开发)、HP-UX(HP公司开发)、IRIX(SGI公司开发)、Xenix(微软公司开发)和A/UX(苹果公司开发)等。Linux也是由UNIX操作系统发展而来的。UNIX操作系统成为世界影响最大,应用范围最广、适合机型最多的通用操作系统。
UNIX的核心代码95%是由C语言编写的,故容易编写和修改,可移植性好。其外围系统支持程序也几乎全部用C语言编写,容易开发。操作系统使用高级语言编写,在前期以源码形式发布,系统短小精悍,便于理解和学习。
UNIX操作系统提供了丰富的系统调用,整个系统的实现十分紧凑、简洁。UNIX操作系统提供了功能强大的可编程Shell语言作为用户界面,具有简洁、高效的特点。UNIX系统具有逻辑上无限层次的树状分级文件系统,提供文件系统的装卸功能,提高了文件系统的灵活性、安全性和可维护性。系统采用进程对换(Swapping)的内存管理机制和请求调页的存储管理方式,实现了虚拟内存管理,大大提高了内存的使用效率。UNIX系统提供了众多本地进程和远程主机间进程的通信手段,如管道、共享内存、消息、信号灯、软中断等。
UNIX系统还具有良好的用户界面,用户C程序和系统外围程序可以通过系统调用使用操作系统内核提供的各种系统服务,交互式用户可以在Shell界面上通过命令同系统交互。用户也可以在Shell环境下编制一些控制灵活、功能强大的作业控制程序,以高效、自动化地完成复杂的任务。
Linux是由芬兰籍科学家Linus Torvalds于1991年编写完成的一个操作系统内核。当时他还是芬兰赫尔辛基大学计算机系的学生,在学习操作系统课程中,自己动手编写了一个操作系统原型,从此新的操作系统诞生了。Linus把这个系统放在Internet上,允许自由下载,许多人对这个系统进行改进、扩充、完善,许多人做出了关键性的贡献。
Linux是一套免费使用和自由传播的类UNIX操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。这个系统是由全世界成千上万个程序员设计和实现的,其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品。Linux在继承了历史悠久和技术成熟的UNIX操作系统的特点和优点外,进行了许多改进,已成为真正的多用户、多任务的通用操作系统。
Linux以它的高效性和灵活性著称。Linux模块化的设计结构,使其既能在价格昂贵的工作站上运行,也能够在廉价的PC上实现全部UNIX的特性,具有多任务、多用户的能力。Linux 操作系统软件包不仅包括完整的Linux操作系统,也包括文本编辑器、高级语言编译器等应用软件,还包括带有多个窗口管理器的X-Windows图形用户界面,如同使用Windows一样,它允许使用窗口、图标和菜单对系统进行操作。
Linux有许多不同的版本,但都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只有Linux内核,但实际上人们已经习惯了用Linux来表示基于Linux内核并且使用GNU工程和数据库的操作系统。
Windows操作系统是由美国微软(Mircrosoft)公司开发的窗口化操作系统,采用了GUI图形化操作模式,与它之前使用的指令操作系统(如DOS)相比显得更为友好和人性化。Windows是目前世界上使用最广泛的操作系统。最新的版本是Windows10。
微软公司成立于1975年,最初只有比尔盖茨、保罗艾伦两个人,只有一个产品,BASIC编译程序。现在微软公司已成为世界上最大的软件公司,其产品涵盖操作系统、开发系统、数据库管理系统、办公自动化软件、网络应用软件等各个领域。
Windows问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于不断更新升级,不但易用,而且逐渐成为人们最喜爱的操作系统。
Windows采用了图形化模式GUI,比起从前的DOS需要输入指令使用的方式更加人性化。随着计算机硬件和软件的不断升级,微软的Windows也在不断升级,从架构的16位、32位到64位,系统版本从最初的Windows1.0到大家熟知的Windows 95、Windows 98、Windows ME、Windows 2000、Windows 2003、Windows XP、Windows Vista、Windows 7 、Windows 8、Windows 8.1、Windows 10和Windows Server服务器企业级操作系统,不断持续更新。