计算机四级操作系统-2-操作系统运行机制

第2章 操作系统运行机制

任何程序在计算机上运行都需要一定的条件,或者说需要一定的运行环境,操作系统也不例 外。为了实现操作系统预定的各种管理功能,同样需要有运行环境来支持其工作。操作系统的 运行环境主要包括计算机系统的硬件环境和由其他的系统软件形成的软-件环境。本章主要讨论 操作系统运行的硬件环境。

我们知道,操作系统屏蔽了计算机系统中硬件的具体细节,用户不需要直接使用硬件,也无 须了解这些硬件的具体功能和细节,而是通过操作系统提供的各种方便手段来控制和使用计算 机。而学习和认识操作系统的过程恰好相反,则需要了解操作系统与硬件交互作用的具体细节。

另外,在操作系统中,不论是处理器管理、存储管理还是输入输出管理,都与计算机硬件和外 部设备的联系非常密切。显然,为了分析、理解和掌握操作系统,也必须了解与操作系统有密切 联系的这些硬件环境。

2.1中央处理器(CPU)

操作系统作为一个程序要在处理器上执行。如果一个计算机系统只有一个处理器,我们称 之为单机系统。如果有多个处理器称之为多处理器系统。

每个处理器都有自己的指令系统,早期的微处理器,它的指令系统的功能相对来说比较弱。 然而,当代的微处理器,由于大规模集成电路技术的飞速发展,结构已经非常复杂,特别是在各种 RISC处理器出现之后,微处理器的技术进入了新阶段。

2.1.1 CPU的构成与基本工作方式

一般的处理器由运算器、控制器、一系列寄存器以及高速缓存构成。运算器实现任何指令中 的算术和逻辑运算,是计算机计算的核心;控制器负责控制程序运行的流程,包括取指令、维护 CPU状态、CPU与内存的交互等;寄存器是指令在CPU内部作处理的过程中暂存数据、地址以及 指令信息的存储设备,在计算机的存储系统中它具有最快的访问速度;高速缓存处于CPU和物 理内存之间,一般由控制器中的内存管理单元(Memory Management Unit,MMU )管理,它的访问 速度快于内存,低于寄存器,它利用程序局部性原理使得高速指令处理和低速内存访问得以匹配,从而大大地提高了CPU的效率。

1.处理器中的寄存器

寄存器为处理器本身提供了一定的存储能力,它们的速度比主存储器快得多,但是因为造价 很高,存储容量一般都很小。处理器一般包括两类寄存器:一类称为用户可见寄存器,对于高级 语言来说,编译器通过一定的算法分配并使用这些寄存器,以最大限度地减少程序运行时访问主 存储器的次数,这对程序的运行速度影响很大;第二类称为控制和状态寄存器,它们用于控制处 理器的操作,一般由具有特权的操作系统代码使用以控制其他程序的执行。

用户可见寄存器通常对所有程序都是可用的,由机器语言直接使用。它一般包括数据寄存 器、地址寄存器以及条件码寄存器。数据寄存器(Data Register)有时又称为通用寄存器,主要用 于各种算术逻辑指令和访存指令,对具有浮点能力和多媒体能力的处理器来说,浮点处理过程的 数据寄存器和整数处理时的数据寄存器一般是分离的。地址寄存器(Address Register)用于存储 数据及指令的物理地址、线性地址或者有效地址,用于某种特定方式的寻址。例如变址寄存器 (Index Register)、段指针(Segment Pointer)、栈指针(Stack Pointer)等。条件码寄存器保存 CPU 操作结果的各种标记位,例如算术运算产生的溢出、符号等,这些标记在条件分支指令中被测试, 以控制程序指令的流向。一般来讲,条件码可以被隐式访问,但不能通过显式的方式修改。

处理器中有很多寄存器用于控制处理器的操作,多数处理器上,这些寄存器的大部分对于用 户是不可见的,有一部分可以在某种特权模式(由操作系统使用)下访问。最常见的控制和状态 寄存器包括程序计数器(Program Counter, PC),它记录了将要取出的指令的地址;指令寄存器 (Instruction Register, IR),包含了最近取出的指令;程序状态字(Program Status Word,PSW),它记 录了处理器的运行模式信息等,有的处理器中它还包含了条件码。

2.指令执行的基本过程

处理指令最简单的方式包括两个步骤:处理器先从存储器中每次读取一条指令。然后执行 这条指令。一个这样的单条指令处理过程称为一个指令周期。程序的执行就是由不断取指令和 执行指令的指令周期组成的。仅当机器关机、发生某些未发现的错误或者遇到停机相关的指令 时,程序才会停止。如图2-1所示。

 

典型处理器中,每个指令周期开始的时候,处理器依据在程序计数器中保存的指令地址从存 储器中取一条指令,并在取指令完成后根据指令类别自动将程序计数器的值变成下一条指令的 地址,通常是自增1。取到的指令被放在处理器的指令寄存器中,指令中包含了处理器将要釆取 的动作的位,处理器于是解释并执行所要求的动作。这些指令大致可以分成5类:访问存储器指 令,它们负责处理器和存储器之间的数据传送;I/O指令,它们负责处理器和I/O模块之间的数 据传送和命令发送;算术逻辑指令,有时又称为数据处理指令,用以执行有关数据的算术和逻辑 操作;控制转移指令,这种指令可以指定一个新的指令的执行起点;处理器控制指令,这种指令用于修改处理器状态,改变处理器工作方式等。

如下面一段汇编程序,它将3340h地址单元的一个数自增1,假设那个地址的内容是35,这 段程序执行以后,它变成了 36。这个程序需要三条指令完成,包括三个取指周期和三个执行 周期。

地址

 

指令

 

2000h:

MOVE

[3340h],

R1

2004h:

ADD

Ri,

1

2008h:

MOVE

Rl,

[3340h]

假设程序计数器PC正指向2000h地址处的指令,执行过程如下面的描述。

(1)PC中包含第一条指令的地址2000h,该指令(MOVE)被送入指令寄存器IR中,同时PC 将自增一个指令的长度,这里是4个字节,于是,取指之后PC为2004h。

(2)IR中存放着指令的具体编码,经过译码电路,处理器就会知道要做什么操作。这时,处 理器发现这是一条访问内存的指令,它要求把由立即数3340h所指定的双字地址单元中的数据 取到通用寄存器R1中来。

(3)CPU又从PC(地址为2004h)处取出指令ADD到IR中,PC变为2008h。

(4)CPU根据指令将R1寄存器和立即数1相加。

(5)2008h处的访存指令MOVE被取到IR中,PC变为200Ah。

(6)R1寄存器内容被传送到内存地址为3340h的双字存储单元中。

这样,经过3个取指周期和3个执行周期,这段程序达到了预想的效果。

2.1.2特权指令和非特权指令

对于一个单用户、单任务方式下使用的微型计算机,普通的非系统用户通常都可使用该计算 机指令系统中的全部指令。但是如果某微型计算机是用于多用户或多任务的多道程序设计环境 中,则它的指令系统中的指令必须区分成两部分:特权指令和非特权指令。

所谓特权指令是指在指令系统中那些只能由操作系统使用的指令,这些特权指令是不允许 一般的用户使用的,因为如果允许用户随便使用这些指令(如启动某设备指令、设置时钟指令、 控制中断屏蔽的某些指令、清主存指令和建立存储保护指令等),就有可能使系统陷入混乱。所 以一个使用多道程序设计技术的微型计算机的指令系统必须要区分为特权指令和非特权指令。

用户只能使用非特权指令,因为只有操作系统才能使用所有的指令(包括特权指令和非特 权指令如果当一个用户程序使用了特权指令一般将引起一次处理器状态的切换,这时处理 器通过特殊的机制将处理器状态切换到操作系统运行的特权状态(管态,详见下文),然后将处 理权移交给操作系统中的一段特殊代码,这一个过程形象地称为陷入。

如栗一合微型计算机的指令系统中不能区分特权指令和非特权指令,那么在这样的硬件环 境下要设计出一个具有多道程序运行的操作系统是相当困难的。至于CPU如何知道当前运行 的是操作系统还是一般应用软件,则有赖于处理器状态的标识。

2.1.3处理器的状态

1.管态和目态

处理器有时执行用户程序,有时执行操作系统的程序。在执行不同的程序时,根据运行的程 序对资源和机器指令的使用权限而将此时的处理器设置为不同状态。多数系统将处理器工作状 态划分为管态和目态。前者一般指操作系统管理程序运行的状态,具有较高的特权级别,又称为 特权态(特态)、系统态;后者一般指用户程序运行时的状态,具有较低的特权级别,又称为普通 态(普态)、用户态。另外,还有些系统将处理器工作状态划分为多个系统状态,例如核心状态、 管理状态和用户程序状态(又称目标状态)三种,它们的具体含义与前面的双状态分级大同 小异。

作为一个实例,英特尔公司出品的x86系列处理器(包括386、486、Pentium、Pentium Pro、 Pentium II ^Pentium HI以及现在的Pentium IV处理器),都支持4个处理器特权级别(特权环•• RO、 Rl、R2和R3)。从R0到R3特权能力依次降低,R0相当于双状态系统的管态,R3相当于目态, 而R1和R2则介于两者之间,它们能够运行的指令集合具有包含关系2/R22/R3,处理 器在各个级别下的保护行检查(例如地址校验、I/O限制)以及特权级别之间的转换方式也不尽 相同。这四个级别被设计成运行不同类别的程序运行操作系统核心代码;R1运行关键设备 驱动程序和I/O处理例程;R2运行其他受保护的共享代码,例如语言系统运行环境;R3运行各 种用户程序。不过现有的基于x86处理器的操作系统,包括多数的UNIX系统、Linux以及Windows系列大都只用到了 R0和R3两个特权级别。

当处理器处于管态时全部指令(包括特权指令)可以执行,可使用所有资源,并具有改变处 理器状态的能力。当处理器处于目态时,就只有非特权指令能执行。不同处理器状态之间的区 别就在于赋予运行程序的特权级别不同,可以运行的指令集合也不相同,一般说来,特权级别越 高,可以运行的指令集合也越大,而且高特权级别对应的可运行指令集合包含低特权级的。

2.CPU状态的转换

在系统运行过程中,CPU的状态是动态改变的,时而运行于管态,时而运行于目态,即管态 和目态这两种状态可以相互转换。

1)目态到管态的转换

其转换的途径是通过中断或异常。中断响应时交换中断向量,新的中断向量中的PSW的 CPU状态位标志为管态。

2)管态到目态的转换

可通过设置PSW指令(修改程序状态字),实现从操作系统向用户程序的转换。

当中央处理器处于管态时可执行包括特权指令在内的一切机器指令;当中央处理器处于目 态时不允许执行特权指令。系统启动时,CPU的初始状态为管态,然后装入操作系统程序。操 作系统退出执行时,让用户程序在目态执行。

3.限制用户程序执行特权指令

用户程序中不能使用特权指令。所以,当用户程序占用CPU时,应让CPU在目态下工作。 若此刻取到了一条特权指令,则CPU将拒绝执行该指令,并形成一个“非法操作”事件。中断机 制识别到该事件后,转交给操作系统去处理,由操作系统通知用户程序中有非法指令”。

2.1.4 程序状态字PSW

为了解决处理器当前工作状态的问题,所有的处理器都有一些特殊寄存器,用以表明处理器 当前的工作状态。比如用一个专门的寄存器来指示处理器状态,称为程序状态字(PSW);用程 序计数器(PC)这个专门的寄存器来指示下一条要执行的指令。

处理器的程序状态字(PSW)通常包括以下状态代码:

• CPU的工作状态代码——指明管态还是目态,用来说明当前在CPU上执行的是操作系 统还是一般用户,从而决定其是否可以使用特权指令或拥有其他的特殊权力。

•条件码——反映指令执行后的结果特征。

•中断屏蔽码——指出是否允许中断。

不同机器的程序状态字的格式及其包含的信息都不同。现以微处理器Pentium Pro,Pentium II和Pentmm HI的对应程序状态字寄存器(EFLAGS)中包含的若干标志位为例,来介绍程序状 态字PSW,如图2-2所示。

 

下面介绍图2-2中的某些标志位:

CF:进位标志位。

ZF:结果为零标志位。

SF:符号标志位。

OF:溢出标志位。

几乎所有的微型计算机的PSW中都有与这四个标志位类似的标志位。有时称这四种标志 位为标准条件位。

TF:陷阱标志位。

IF:中断使能(中断屏蔽)标志位。

VIF:虚拟中断标志位。

VIP:虚拟中断待决标志位。

这里VIF和VIP用于支持对一类可屏蔽的硬件中断处理。

IOPL:IO特权级别,它的作用在前面已有叙述。

在图2-2中7还有其他许多标志位,从这些众多的标志位的设计,也可看出Pentium系列微 处S器的功能是非常强的,有兴趣的读者可以参考有关资料。

2.2存储体系

一个作业必须把它的程序和数据存放在主存储器(又称内部存储器、内存)中才能运行。在多道程序系统中,有若干个程序和相关的数据要放入主存储器。操作系统不但要管理、保护这些 程序和数据,使它们不至于受到破坏,而且操作系统本身也要存放在主存储器中并运行,因此主 存储器以及与存储器管理有关的机构是支持操作系统运行的硬件环境的一个重要方面。

2.2.1存储器的层次结构

计算机存储系统的设计主要考虑三个问题容量、速度和成本。

首先,容量是存储系统的基础。任何一个计算机系统都希望配备尽可能大的存储系统,对容 量的需求一般来说是无止境的。存储系统的速度则要能匹配处理器的速度,在处理器处理时不 应该因为等待指令和操作符而发生暂停。在设计一个实际的存储系统时,成本问题也是一个很 重要的问题,存储器的成本和其他部件相比应该在一个合适的范围之内。

1.容量、速度和成本的匹配

一般来说,容量、速度和成本这三个目标不可能同时达到最优,需要作权衡。存取速度越快, 平均每比特价格越高,容量越小;存取速度越慢,平均每比特的价格越低,同时容量也增大。这就 给设计带来了一个二律悖反的情况,一方面需要较低的 比特价格和较大的容量,另一方面对计算机性能又有着 高要求,这又要价格相对昂贵、存储量较小但速度很快 的存储器。这个问题的解决方案就是采用层次化的存 储体系结构。当沿着层次下降时,每比特的价格将下 降,容量将增大,速度将变慢而处理器的访问频率也将 下降。

从整个系统来看,在计算机系统中的层次化的存储 体系是由寄存器、高速缓存、内存储器、硬盘存储器、磁带机和光盘存储器等装置构成的,如图2-3所示。较 小、较贵而快速的存储设备由较大、较便宜而慢速的存储设备作后盾,在整体上通过对访问频率 的控制来提高存储系统的效能。

 

 

2.存储访问局部性原理

提高存储系统性能的关键在于程序的存储访问局部性原理。程序执行时,处理器为了取得 指令和数据而访问存储器。由于现代的程序设计技术很注重程序代码的复用,这样,程序中会有 很多循环和子程序调用,一旦进入这样的程序段,就会重复存取相同的指令集合。对数据存取也 有类似的局部性现象。在经过一段时间以后,使用到的代码和数据的集合会改变,但在较短的时 间内它们能比较稳定地保持在一个存储器的局部区域中,处理器也主要和存储器的这个局部打 交道。

基于这一原理,就有充分的理由设计出多级存储的体系结构,并使得存取级别较低的存储器 的比率小于存取级别较高的存储器的比率。

为了估算访问时间,我们进行如下三个假定:处理器存取两级存储器,第I级包含1 KB,存 取时间为0.1μs ,第Ⅱ级包含1MB,存取时间为1μs;处理器直接存取I级中的内容,如果需要的内容在n级中,它首先被转移到I级,然后再由处理器存取;用于确定这个内容所在位置的时 间可以忽略。

如果处理器在I级存储器中发现存取对象的概率是95%,那么平均访问时间为

95x0.1μs+0.05x(0.1μs+lμs)=0.15μs

这个结果是非常接近I级存储的存取时间。

2.2.2存储保护

存放在主存中的用户程序和操作系统,以及它们的数据,有可能受到正在CPU上运行的某 用户程序的有意或无意的破坏,这会造成十分严重的后果。一旦有程序向操作系统区写入了数 据,将有可能造成系统崩溃。对主存中的信息加以严格的保护,使操作系统及其他程序不被破 坏,是其正确运行的基本条件之一。

要实现存储保护,必须要有硬件的支持。如果在某种计算机系统中没有对存储器的硬件保 护机构,想单纯通过操作系统保护住存储的内容不受有意或无意的破坏,那是无法做到的。可 见,存储保护机构是操作系统运行环境中一个非常重要的部分。下面介绍几种最常用的存储保 护机构。

1.界地址寄存器(界限寄存器)

界地址寄存器是被广泛使用的一种存储保护技术。这种机制比较简单,易于实现。其方法 是在CPU中设置一对界限寄存器来存放该用户作业在主存中的下限和上限地址,分别称为下限 寄存器和上限寄存器。也可将一个寄存器作为基址寄存器,另一寄存器作为限长寄存器(指示 存储区长度)的方法来指出程序在内存的存放区域。每当CPU要访问主存时,硬件自动将被访 问的主存地址与界限寄存器的内容进行比较,以判断是否越界。如果未越界,则按此地址访问主 存,否则将产生程序中断——越界中断或存储保护中断,如图2-4所示。

 

图2-4界地址寄存器存储保护技术

2.存储键

在某些计算机中,除上述存储保护措施之外,还设计有“存储保护键”机构来对主存进行保 护。为了存储保护的目的,每个存储块都有一个与其相关的由二进位组成的存储保护键,附加在 每个存储块上。当一个用户作业被允许进人主存时,操作系统分给它一个唯一的、不与其他作业 相同的存储键号;并将分配给该作业的各存储块的存储键,也设置成同样的键号。当操作系统挑选该作业上CPU运行时,操作系统同时将该作业的存储键号存放到程序状态字PSW的存储键 (“钥匙”)域中。这样,每当CPU访问主存时,都将对主存块的存储键与PSW中的“钥匙”进行 比较。如果相匹配,则允许访问;否则,拒绝并报警。

2.3中断与舁常机制

中断与异常机制是操作系统中极为重要的一个部分。操作系统在管理输入输出设备时,在 处理外部的各种事件时,都需要通过中断与异常机制进行处理。所以也有人把操作系统称为是 由“中断驱动”或者“事件驱动”的。

由于中断与异常机制的实现必须依靠相关的硬件支持,所以硬件中断装置是操作系统运行 环境中的一个极为重要的组成部分。中断的实现是硬件中断装置和相应的中断处理软件共同完 成的。在本节中,首先介绍中断的概念,然后叙述中断系统的工作原理,最后分析中断处理的 过程。

2.3.1中断与异常的概念

1.中断与异常

1)中断的概念

所谓中断是指CPU对系统中或系统外发生的异步事件的响应。异步事件是指无一定时序 关系的随机发生的事件,如外部设备完成了数据传输任务,某一实时控制设备出现异常情况等。

“中断”这个名称来源于:当发生某个异步事件后,中断了处理器对当前程序的执行,而转去 处理该异步事件(称作执行该事件的中断处理程序)。在该异步事件处理完了之后,处理器再转 回原程序的中断点继续执行。这种情况很像我们日常生活中的一些情况。例如,某人正在看书, 此时电话响了(异步事件),于是用书签记住正在看的那一页(中断点),再去接电话(响应异步事 件并进行处理),接完电话后再从被打断那页继续向下看(返回原程序的中断点执行)。

最初,中断技术是用来向处理器报告某个“设备已完成操作”的一种手段,以免处理器不断 地测试设备状态而消耗大量宝贵的处理器时间,后来,中断技术的应用越来越广泛。

中断是所有要打断处理器的正常工作次序,并要求其去处理某一事件的一种常用手段。我 们把引起中断的那些事件称为中断事件或中断源;中断源向处理器发出的请求信号称为中断请 求;而把处理中断事件的那段程序称为中断处理程序;发生中断时正在执行的程序的暂停点叫作 中断断点;处理器暂停当前程序转而处理中断的过程称为中断响应。中断处理结束之后恢复原 来程序的执行被称为中断返回。

一个计算机系统提供的中断源的有序集合一般被称为中断字,这是一个逻辑结构,在不同的 处理器有着很不相同的实现方式。在一台计算机中有多少中断源,是根据各个计算机系统的需 要而安排的。就PC而言,它的微处理器能处理256种不同的中断。

为了使得中断装置可以找到恰当的中断处理程序,专门设计了中断处理程序入口地址映射 表,又称中断向量表。表中的每一项称为一个中断向量,主要由程序状态字PSW和指令计数器 PC的值组成。不同性质的中断源需要用不同的中断处理程序来处理,也就是对应不同的中断向量。通过中断向量,可以找到中断处理程序在主存中的位置。

中断技术解决了主机和外设并行工作的问题,消除了因外设的慢速而使得主机等待的现象, 为多机操作和实时处理提供了硬件基础。一般来说中断具有以下作用:

•能充分发挥处理器的使用效率。因为输入输出设备可以用中断的方式同CPU通信,报 告其完成CPU所要求的数据传输的情况和问题,这样可以免除CPU不断地查询和等待,从而大 大提高处理器的效率。

•提高系统的实时能力。因为具有较高实时处理 要求的设备,可以通过中断方式请求及时处理,从而使 处理器立即运行该设备的处理程序(也是该中断的中 断处理程序)。所以目前的各种微型机、小型机及大型 机均有中断系统。

从用户的角度来看,中断正如字面的含义,即正常执行的程序被打断,当完成中断处理后再恢复执行。这完全由操作系统控制,用户程序不必做任何特殊处 理。这一过程如图2-5所示。

 

2)异常

最早中断和异常并没有区分,都把它们叫作中断。随着它们的发生原因和处理方式的差别 愈发明显,才有了现在的中断和异常之分。

中断是由外部事件引发的,而异常则是由正在执行的指令引发的。

2.中断与异常的分类

不同的系统依据中断引起的原因不同,划分为若干个不同的中断与异常类型。这种分类在 不同的系统中往往差异比较大。

典型的中断包括:

(1)时钟中断。由处理器内部的计时器产生,允许操作系统以一定规律执行函数,如时间片 到时、硬件实时钟到时等。

(2)输人输出(I/O)中断。由I/O控制器产生,用于通知一个I/O操作的正常完成或者发 生的错误。

(3)控制台中断,如系统操作员通过控制台发出命令等。

(4)硬件故障中断,由掉电、存储器校验错等硬件故障引起等。

异常发生的时间以及位置具有确定性,典型的异常包括:

(1)程序性中断。在某些条件下由指令执行结果产生,例如算术溢出、被零除、目态程序试 图执行非法指令、访问不被允许访问的存储位置、虚拟存储中的缺页等。

(2)访管指令异常。目的是要求操作系统提供系统服务。

由于中断与异常的硬件机制工作原理类似,为方便起见,之后的叙述中以中断涵盖两个概念。

2.3.2 中断系统

中断系统是现代计算机系统的核心机制之一,它不是单纯的硬件或者软件的概念,而是硬件和软件相互配合、相互渗透而使得计算机系统得以充分发挥能力的计算模式。

中断的发生会激活很多事件,这包括硬件和软件方面的事件,所以对于整个中断事件的接 收、响应和处理需要有计算机的硬件和软件两方面的配合,共同完成。

可以把中断系统分为两大组成部分:中断系统的硬件中断装置和软件中断处理程序。硬件 中断装置负责捕获中断源发出的中断请求,并以一定的方式响应中断源,然后将处理器的控制权 移交给特定的中断处理程序。中断处理程序则针对中断事件的性质而执行相应的一系列操作。

1.中断请求的接收

中断系统如何接收中断源的中断请求,这往往因机器而异。不过从原理上讲,它们是通过在 计算机硬件的中断逻辑线路和中断寄存器实现的。

中断逻辑线路用于接收中断信号,并把收到的中断信号寄存在线路中的硬件触发器中。在 中断逻辑线路中有若干个专门接受中断信号的触发器,每个触发器称为一个中断位。通常规定, 一个触发器的值为1时,表示该触发器收到中断信号,为0时表示无中断信号。这些触发器的全 体称为中断寄存器,所以中断寄存器是由若干个中断位组成的。

在有的计算机中,为了不丢失和区分每个中断信号,对每个中断源都用一个固定的触发器来 寄存中断信号。而在有的计算机中,对某些没有得到响应的、不重要的中断信号,就不予保存下 来,而把它丢弃掉。

2.中断响应

中断请求的响应机制如下:处理器的控制部件中设置有中断信号扫描结构,它在每条指令执 行周期内的最后时刻扫描中断寄存器,查看是否有中断信号到来。若无中断信号,处理器就继续 执行下一条指令,若有中断到来,处理器接收由硬件中断装置发来的中断向量代号。

接着,处理器开始为后续的软件处理中断做必要的准备工作:保存中断点的程序执行上下文 环境(又称保存现场)。这是因为中断处理结束之后,处理器还要继续被中断程序的执行7所以 原有中断点程序执行的所有必要信息都必须保存下来。这个上下文环境通常包括程序状态字 PSW、程序计数器PC中的下一条指令位置和一些寄存器的值。它们一般保存在一个专门的系 统堆栈中。处理器状态此时被切换到管态。

处理器根据中断向量代号查询中断向量表,获得与该中断源相联系的中断处理程序的入口 地址,并将PC置成该地址。随后控制权转移到中断处理程序。

整个中断请求的响应过程,如图2-6所示。

图2-6中的中断请求响应的工作过程是:①处理器接收中断信号;②保护现场,将中断断 点的程序状态字PSW和程序计数器PC值存人系统堆栈;③分析中断向量,取得中断处理程序 的入口地址;④将处理器的PC值置为中断处理程序的入口地址;⑤调用中断处理程序。

 

3.中断处理

这里讨论在中断信号已经被中断系统的硬件中断装置接收和响应之后,对应的软件中断处 理程序进行中断处理的具体过程。

在处理器的控制权转移到中断处理程序之后,中断处理程序开始工作,其中包括检查i/o相 关的状态信息,操纵I/O设备或者在设备和主存之间传送数据等。具体的中断处理程序的内容, 完全是依据中断请求的类别和要求的不同,而分别设计的。

在中断处理程序结束工作之后,处理器会检测到一条中断返回指令。在执行中断返回指令时,处理器会把原先被中断的程序的上下文环境从系统堆栈中恢复。处理器状态也从管态恢复 成被中断时的目态。整个中断处理结束。

处理器开始一个新的指令周期,继续执行原来被中断的程序。

上述整个中断信号的接收、响应和处理过程,可以简要地归纳为:接收和响应中断,保护中断 断点现场,分析中断向量,调用中断处理程序,中断处理结束恢复现场,原有程序继续执行。

4.几种典型中断的处理

这里介绍几种计算机系统中比较典型的中断与异常处理,包括I/O中断、时钟中断、硬件故 障中断、程序性中断和系统服务请求(访管中断)等。

1)I/O中断

I/O中断一般由I/o设备的控制器或者通道发出。I/o中断通常可分成两大类:1/0操作正 常结束以及I/O异常。对于前者来说,如果要继续进行I/O操作,则需要在准备好以后重新启动 I/O。若请求I/O的程序正处于等待I/O的状态,则应该将其唤醒。对于后者,常常需要重新执 行失败的I/O操作,不过这个重试的次数常常有一个上限,因为错误可能由硬件损伤引起,当重 试次数过大的时候,系统将判定硬件故障,并通知管理员。

比如,我们平常在用PC的CD-ROM观看VCD或DVD的碟片时,有时会碰到读碟出错。在 重复读碟几次之后,如果读碟出错继续,系统就会停止读碟,并报告出错,甚至退出碟片。

2)时钟中断

时钟中断是计算机系统多道能力的重要条件之一(有关时钟的概念,参看本章的后面部分 内容h时钟中断处理程序通常要做较多的与系统运转、管理和维护相关的工作,它们对于整个 系统是非常重要的,主要包括:

(1)维护软件时钟3系统有若干个软件时钟,控制着定时任务以及进程的处理器时间配额, 时钟中断需要维护、定时更新这些软件时钟。

(2)处理器调度。维护当前进程的时间片软件时钟,并在时间片到时后运行调度程序选择下一个被调度的进程。

(3)控制系统定时任务。通过软件时钟和调度程序定时激活一些系统任务,例如监测死锁、 进行系统记账、对系统状况进行审计等。

(4)实时处理,例如产生系统“心跳”,激活系统看门狗等。

当然,在不同的操作系统设计中,时钟中断处理的内容也不一样。很多系统的时钟中断通常 只处理软件时钟,并在一定条件下激活系统调度程序。

一般来说,调度程序并不在时钟中断里,因为时钟中断的优先级往往比较高,而且频繁发生,如果时钟中断处理时间过长,就会使一些较低优先级的中断丢失。

3)硬件故障中断

硬件故障一般是由硬件的问题引起的,排除此类故障通常需要人工的干预,例如复位硬件或 者更换设备等。

硬件故障中断处理程序需要做的工作是保存现场,使用一定的手段警告管理员并提供一些 辅助的诊断信息。此外,在高可靠的系统中,中断处理程序还需要评估系统的可用性,并尽可能 地恢复系统。

例如,使用Windows 9X的系统在关键硬件发生故障时,会出现系统蓝屏死机。这时操作系 统实际上进入了相应的故障处理程序,并发现这个故障是不可恢复的,于是在屏幕上打印出了发 生故障时的程序位置(通常在某个核心态驱动程序中),并且开始进行内存转储(将一定范围的 内存内容写到磁盘上去,实际上是系统发生故障时的全系统“快照”),以备日后进行程序调试级 故障诊断。

4)程序性中断

程序性中断多数是程序指令出错、指令越权或者指令寻址越界而引发的系统保护。它的处 理方法可以依据中断是否可以被用户程序自行处理,而分成两类:

第一类为程序性中断,只能由操作系统完成。这种情况多为程序试图做自己不能做的操作 引起的系统保护,例如访问合法的但是不在内存的虚地址引发的缺页中断等。这时候的处理一 般由操作系统的相关扩展功能模块完成。

第二类为程序性中断,可以由程序自己完成。例如一些算术错误。因为不同的程序可能有 不同的处理方法,所以很多操作系统提供由用户自行处理这类中断的“绿色通道”。一般来说, 系统调试中断,如断点中断、单步跟踪等,用以支持各种程序的调试,是可以被用户程序处理的。

5)系统服务请求(访管中断)

系统服务请求一般由处理器提供的专用指令(又称访管指令)来激发。例如x86处理器提 供int指令,用来激发软件中断,其他的不少处理器则专门提供系统调用指令syscalU执行这些 指令的结果是系统被切换到管态,并且转移到一段专门的操作系统程序处开始执行。这种指令 的格式通常是指令名加上请求的服务识别号(有时是中断号)。操作系统利用处理器提供的这 种接口建立自己的系统服务体系。处理器一般不负责定义系统调用所传递的参数格式。因为不 同的系统会提供不同的系统调用,而不同的系统调用需要不同的参数,所以给哪个系统服务例程 传递什么样的参数,以及如何传递这些参数都由操作系统规定。

现代操作系统一般不会提供直接使用系统调用指令的接口,通常的做法是提供一套方便、实 用的应用程序函数库(又称为应用程序设计接口 API)。这些函数从应用的较高层面重新封装了系统调用,一方面屏蔽了复杂的系统调用传参问题(用汇编语言传参),另一方面是高级语言接 口,有助于快速开发。还有的系统在更高层面提供了系统程序设计的模板库和类库。

2.3.3中断优先级与中断屏蔽

1.多级中断与中断优先级

现代的微处理器都提供有多级中断系统,从硬件上看,多级中断系统表现为有多根中断请求 线从不同设备连接到中断逻辑线路上。连接在不同中断请求线上的中断信号,表示它们有不同 的中断级别。中断信号的级别代表了该中断信号是否具有被优先处理的特权,以及这个特权的 大小。可见,在多级中断系统中,硬件决定了各个中断的优先级别。

多级中断的第一个作用是,对各类中断信号依据其紧急程度和重要性划分级别。在需要处 理的各类中断信号中,它们的紧急程度和重要性是不同的。系统当然应该优先处理那些最紧急 的或者最重要的中断信号。而中断信号本身的紧急或重要性,则由该中断的级别的高低来标识。 在多级中断系统中,在同时有多个中断请求时,CPU接收中断优先级为最高的那个中断(如果其 中断优先级高于当前运行程序的中断优先级时),而忽略其中断优先级较低的那些中断。比如, 计算机的电池即将没有电了,这种掉电中断显然应该有非常高的优先级别。

多级中断的第二个作用是,解决如果有重要程度相当的多个中断信号同时到达时,如何选择 首个被处理的中断信号的问题。比如,在一套计算机系统上接有一台打印机和一台扫描仪,在打 印机发出了打印完毕的信号的同时,扫描仪也发出了扫描完毕的信号。在一般情况下,这两个中 断信号具有同等的优先级。

如果在同一中断级中的多个设备接口中同时都有中断请求时,一般有两种办法可以采用。

(1)固定优先数。给每个设备接口安排一个不同的、固定的优先序。比如以该设备在总 线中的位置来定优先顺序,离CPU近的设备,其优先数高于离CPU远的设备。

(2)轮转法。用一个表格,依次轮转响应,这是一个较为公平合理的方法。

2.中断屏蔽

在整个中断系统中,可以允许或者禁止中断系统对某些类别中断的响应。我们知道,在程序 状态字PSW中设计有中断屏蔽位,主机是否允许响应或禁止某些中断,则由PWS中的中断屏蔽 位决定,这些屏蔽位标识了那些被屏蔽的中断类或者中断。

一旦某个I/O中断被程序状态字PSW中的中断屏蔽位加以屏蔽,那么此时即使有I/O中断 信号,处理器也不予响应。

对于那些被屏蔽的中断信号,通常仍然保存在中断寄存器中,有些可以在以后继续响应,而 有些将被简单地丢弃

很显然,有了中断屏蔽,中断系统中原先由硬件事先给定的中断优先级,就可能发生改变。 例如,在一个计算机系统中,由CD-ROM到硬盘的数据传送的优先级别低于硬盘内部的数据操 作。但是7如果一旦机器正在进行CD-ROM到硬盘的数据传送,对硬盘内部的其他数据操作就 被暂时屏蔽,这些硬盘操作必须在该CD-ROM到硬盘的数据传送结束之后才能进行。换句话 说,此时CD-ROM到硬盘的数据传送的优先级别高于硬盘内部的数据操作。

还有一类中断信号是不可屏蔽的,一般这类中断信号属于机器故障中断。比如内存奇偶校 验错,以及掉电等使得机器无法继续操作一类的故障。

一旦发生这类不可屏蔽的中断,不管程序状态字中的屏蔽位是否建立,处理器都要立即响应 这类中断,并进行处理。

2.4系统调用

为了从操作系统中获得服务,用户程序必须使用系统调用(system call),系统调用陷入内核 并调用操作系统。访管指令把用户态切换成内核态,并启用操作系统。当有关工作完成之后,在 系统调用后面的指令把控制权返回给用户程序。本节介绍系统调用的概念,系统调用的分类,以 及系统调用的执行过程。

2.4.1系统调用简介

所谓系统调用,就是用户在程序中调用操作系统所提供的一些子功能。这是一种特殊的过 程调用,这种调用通常是由特殊的机器指令实现的。除了提供对操作系统子程序的调用外,这条 指令还将系统转入特权方式。因此,系统调用程序被看成是一个低级的过程,只能由汇编语言直 接访问。系统调用是操作系统提供给编程人员的唯一接口。编程人员利用系统调用,动态请求 和释放系统资源,调用系统中巳有的系统功能来完成与计算机硬件部分相关的工作以及控制程 序的执行速度等。因此,系统调用像一个黑箱子那样,对用户屏蔽了操作系统的具体动作而只提 供有关的功能。

1.系统调用与一般过程调用的区别

由于操作系统的特殊性,应用程序不能采用一般的过程调用方式来调用这些功能过程,而是 利用一种系统调用命令去调用所需的操作系统过程。因此,系统调用在本质上是应用程序请求 操作系统核心完成某一特定功能的一种过程调用,是一种特殊的过程调用,它与一般过程调用有 以下几方面的区别:

1)运行在不同的系统状态

一般过程调用,其调用程序和被调用程序都运行在相同的状态,即核心态或用户态;而系统 调用与一般调用的最大区别就在于:调用程序运行在用户态,而被调用程序则运行在系统态。

2)状态的转换

一般过程调用不涉及系统状态的转换,可直接由调用过程转向被调用过程;但在运行系统调 用时,由于调用和被调用过程工作在不同的系统状态,因而不允许由调用过程直接转向被调用过 程,通常都是通过软中断机制先由用户态转换为核心态,在操作系统核心分析之后,转向相应的 系统调用处理子程序。

3)返回问题

一般过程调用在被调用过程执行完后,将返回到调用过程继续执行。但是,在采用抢占式调 度方式的系统中,被调用过程执行完后,系统将对所有要求运行的进程进行优先级分析。如果调 用进程仍然具有最高优先级,则返回到调用进程继续执行;否则,将引起重新调度,以便让优先级 最高的进程优先执行。此时,系统将把调用进程放入就绪队列。

4)嵌套调用

像一般过程调用一样,系统调用也允许嵌套调用,即在一个被调用过程的执行期间,还可再 利用系统调用命令去调用另一个系统调用。一般情况下,每个系统对嵌套调用的深度都有一定 的限制。

2.系统调用的分类

通常,一个操作系统的功能分为两大部分:一部分是系统自身所需要的;另一部分功能是作 为服务提供给用户的,有关这部分功能可以从操作系统所提供的系统调用上体现出来。不同的 操作系统所提供的系统调用会有一定的差异。对于一般通用的操作系统而言,可将其所提供的 系统调用分为以下几方面。

1)进程控制类系统调用

这类系统调用主要用于对进程的控制,如创建和终止进程的系统调用、获得和设置进程属性 的系统调用等。

2)文件操作类系统调用

对文件进行操纵的系统调用数量较多,有创建文件、打开文件、关闭文件、读文件、写文件、创 建一个目录、建立目录、移动文件的读/写指针、改变文件的属性等。

3)进程通信类系统调用

该类系统调用被用在进程之间传递消息和信号。

4)设备管理类系统调用

该类系统调用被用来请求和释放有关设备,以及启动设备操作等。

5)信息维护类系统调用

操作系统中还提供了一类有关信息维护的系统调用。用户可利用这类系统调用来获得当前 寸间和日期;设置文件访问和修改时间;了解系统当前的用户数、操作系统版本号、空闲内存和磁盘空间的大小等。

不同的系统提供有不同的系统调用。一般,每个系统为用户提供几十到几百条系统调用。

系统调用命令是作为扩充机器指令,增强系统的功能,方便用户使用而提供的。因此,在一些计算机系统中,把系统调用命令称为“广义指令”。但“广义指令”和机器指令在性质上是不同

机器指令是由硬件线路直接实现的,而“广义指令”则是由操作系统所提供的一个或多个子 芎字模块,即软件实现的。从用户角度来看,操作系统提供了这些“广义指令”,也就是系统调用 令,就好像扩大了机器的指令系统,增强了处理机的功能。用户不仅可以使用硬件提供的机器 与令,也可以直接使用软件,即操作系统提供的广义指令,这就如同为用户提供了一台功能更强, 支弔更方便的处理机,即实现了处理机性能上的扩充。为了区别于真实的物理处理机,称它为“虚处理机”。

2.4.2 系统调用的处理过程

为了提供系统调用功能,操作系统内必须有事先编制好的实现这些功能的子程序或过程。 显然,这些程序或过程是操作系统程序模块的一部分,且不能直接被用户程序调用。而且,为了 夫证操作系统程序不被用户程序破坏,一般操作系统都不允许用户程序访问操作系统的系统程 I和数据3那么,编程人员给定了系统调用名和参数之后是怎样得到系统服务的呢?显然,这里 考要有一个类似于硬件中断处逐的中断处理机构。当用户使用操作系统调用时,产生一条相应 的指令,处理机在执行到该指令时发生相应的中断,并发出有关的信号给该处理机构;该处理机 构在收到了处理机发来的信号后,启动相关的处理程序去完成该系统调用所要求的功能。

在系统中为控制系统调用服务的机构称为陷入(TRAP)或异常处理机构。与此相对应,把 由于系统调用引起处理机中断的指令称为陷入或异常指令(或称访管指令)。在操作系统中,每 个系统调用都对应一个事先给定的功能号,例如0、1、2、3等。在陷入指令中必须包括对应系统 调用的功能号。而且,在有些陷入指令中,还带有传给陷入处理机构和内部处理程序的有关 参数。

为了实现系统调用,系统设计人员还必须为实现各种系统调用功能的子程序编造入口地址 表,每个人口地址都与相应的系统程序名对应起来。然后,陷入处理程序把陷入指令中所包含的 功能号与该人口地址表中的有关项对应起来,从而由系统调用功能号驱动有关子程序执行。

由于在系统调用处理结束之后,用户程序还需利用系统调用的返回结果继续执行,因此,在 进人系统调用处理之前,陷入处理机构还需保存处理机现场。再者,在系统调用处理结束之后, 还要恢复处理机现场。在操作系统中,处理机的现场一般被保护在特定的内存区或寄存器中,系 统调用的处理过程如图2-7所示。

用户程序                陷入处理机构       系统子程序

 

有关系统调用的另一个问题是参数传递过程问题。不同的系统调用需要传递给系统子程序 以不同的参数,而且,系统调用的执行结果也要以参数形式返回给用户程序。那么,怎样实现用 户程序和系统程序之间的参数传递呢?下面介绍几种常用的实现方法。一种是由陷人指令自带 参数。一般来说,一条陷入指令的长度总是有限的,而且,该指令还要携带一个系统调用的功能 号,从而,陷入指令只能自带有限的几个参数进入系统内部。另一种方法是通过有关通用寄存器 来传递参数。显然,这些寄存器应是系统程序和用户程序都能访问的。不过,由于寄存器长度也 是较短的,从而无法传递较多的参数。因此,较多的系统中,大多在内存中开辟专用堆栈区来传 递参数。

另外,在系统发生访管中断或陷入中断时,不让用户程序直接访问系统程序,反映在处理机 硬件状态的处理机状态字PSW中的相应位要从用户执行模式转换为系统执行模式。这一转换 在发生访管中断时由硬件自动实现。一般我们把处理机在用户程序中执行称为用户态(或目 态),而把处理机在系统程序中执行称为系统态(或管态)。

2.5 I/O 技术

本节重点介绍计算机系统中的I/O结构、通道、直接存储器存取(DMA)技术以及缓冲技术。

1.I/O结构

在一台计算机系统中,可能有大量的外部设备,为了满足对这些I/O设备的控制,提高处理 器和外部设备的运行效率,出现了各种不同的i/o硬件结构。

在每台外部设备中都配有各自的设备控制器,由设备控制器分别控制各台外部设备的运行。 在设备控制器与处理器之间的i/o硬件结构,则有不同的设计方案。

在早期的计算机系统中,外部设备的控制器通过I/O硬件结构与中央处理器连接。对设备 控制器的操作是由处理器直接发出的i/o指令来实现的。在这种方法中,中央处理器定期轮询 各个I/O设备控制器的状态。如果有I/O处理请求,中央处理器就处理I/O操作,直到该i/o处 理完毕:这种程序直接控制i/o的主要缺陷是,处理器为了关注I/O设备控制器的状态,必须耗 费大量的时间轮询各个外部设备以获得这些信息,这就严重地降低了整个系统的性能。这种早 期I/O结构,由于效率太低,已经淘汰。

2.通道

通道是独立于中央处理器的,专门负责数据I/O传输工作的处理单元。从现代计算机系统 的结构上看,各种外部设备均配有相应的设备控制器,这些设备控制器再通过通道连接在计算机 系统的公共系统总线上。

通道对外部设备实行统一的管理,它代替CPU对I/O操作进行控制,从而使CPU和外部设 备可以并行工作。所以通道又称为I/O处理机。

下面介绍通道的具体工作原理。

在釆用通道的计算机系统运行过程中,中央处理器按程序规定的顺序执行一条条指令。当 处理器执行到一条“启动外设”(“启动I/O”)的指令时,就按指令中给定的参数启动指定的设备。

设备启动之后,对该外部设备的控制权转移到通道,由通道控制该外部设备的有关操作。

在该外部设备与主存储器之间发生的信息传送,由通道控制,而中央处理器则继续执行程 序。可见,这时处理器与外部设备是并行工作的,外部设备独立工作,不需要中央处理器的干预。

在该外部设备工作结束后,会产生形成一个“输入输出操作结束”的I/O中断事件。这是因 为该外部设备是由处理器根据程序的要求而启动的,所以仍由操作系统的处理程序处理这个 I/O中断事件。操作系统进行分析后,就可以知道外部设备的具体工作情况。

采用通道这种I/O结构的最大优点是,可以实现中央处理器和各种外部设备并行工作。

采用通道之后,处理器和外部设备都能够访问主存储器。不过,当处理器和外部设备同时申 请访问主存储器时,就要竞争存储周期。由主存储器的控制线路处理这些竞争,并保证这些访问 同步有序地进行。

有了通道,利用中央处理器与外部设备之间以及各外部设备之间的并行工作能力,操作系统 就可以让多个程序同时执行,并在同一时刻让各个程序分别使用计算机系统的不同资源。

举例来说,如果程序A启动了某个硬盘设备读取一块数据,它必须等待该硬盘设备完成信 息传送后才能继续执行。此刻该程序A处于等待状态,暂停执行指令。这时操作系统可以让另 一个程序B占用中央处理器运行。当然程序B在执行时也可能申请使用某个外部设备,若程序 B启动了一台DVD设备也等待信息传送,那么操作系统可以调用程序C占用中央处理器运行。

从这里可以看到,有了通道,多道程序的运行使得处理器和外部设备的运行效率都得到了提高。

通道技术一般用于大型机系统和那些对I/O处理能力要求比较严格的系统中。一般低档次 的微机中没有通道。

3.DMA技术

直接存储器访问(Direct Memory Access,DMA )技术通过系统总线中的一'个独立控制单兀,即DMA控制器,自动地控制成块数据在内存和I/O单元之间的传送。当处理器需要读写一整块 数据的时候,它给DMA控制单元发送一条命令,在命令中通常包含了 I/O设备的编址、开始读或 写的主存编址、需要传送的数据长度、是否请求一次读或写等信息。处理器在给DMA控制单元 发送完一条命令之后,就可以处理其他的事情了。而DMA控制器将自动管理整块数据的传送◦ 当这个传送过程完成后,它会给处理器发一个中断。这样处理器只需要在整块数据开始传送和 传送结束时关注一下就可以了。可见DMA技术大大提高了处理I/O的效能。

不过,处理器和DMA传送也不是完全并行的,它们之间会有总线竞争的情况发生,此时总 线上正在进行DMA传送,而处理器也想使用总线。不过这种总线竞争不会引起中断,也不会引 起程序上下文的保存,通常这个过程只会花费一个总线周期,于是处理器会稍稍等待。也就是 说,在DMA传送发生时,处理器访问总线的速度会有所变慢。尽管如此,对于有大量数据的I/O 传送来说,DMA技术是很有价值的。

4.缓冲技术

缓冲技术是用在外部设备与其他硬件部件之间的一种数据暂存技术,它利用存储器件在外 部设备中设置了数据的一个存储区域,称为缓冲区。缓冲技术一般有两种用途,一种是用在外部 设备与外部设备之间的通信上的,还有一种是用在外部设备和处理器之间的。

例如,在人们使用键盘输入数据时,输入速度是很慢的,再快的专业数据输入员,每秒钟击键的次 数也很难超过10次。如果让处理器等待这样缓慢的数据输入完成之后,再进行处理,显然效率太低 了。有了缓冲区就可减少输入输出的次数。当我们从键盘输入设备输人数据时,通常是先把数据送 入到键盘数据缓冲区中,然后CPU再把数据从缓冲区读入用户工作区中进行处理。

采用缓冲技术最根本的原因是,CPU处理数据速度与设备传输数据速度不相匹配,需要用 缓冲区缓解其间的速度矛盾。

那么为什么不直接把数据送入用户工作区,而要设置缓冲区来暂存呢?如果把用户工作区 直接作为缓冲区则有许多不便。首先,当一个用户从工作区向设备输出或从设备向工作区输入 时,工作区被长期占用而使其他用户无法使用。其次,为了减少输入输出次数,以减轻对通道和 输入输出设备的压力。第三,缓冲区信息可供多个用户共同使用以及反复使用,减少了不必要的 信息传递工作,提高了效率,方便了对缓冲区的管理。

为了提高设备利用率,通常使用单个缓冲区是不够的,可以设置双缓冲区、甚至多缓冲区。| 比如,在单缓冲区情况下,当外部设备向缓冲区输入数据装满之后,必须等待CPU将其取完,才能继续向其中输入数据。如果有两个缓冲区,在一个缓冲区等待CPU取用数据时,另一个可以继续接收数据,这样设备利用率可大为提高。

2.6 时钟

在计算机系统中,设置时钟是十分必要的。这是由于时钟可以为计算机完成以下的必不可 夕的工作:

(1) 在多道程序运行的环境中,时钟可以为系统发现一个陷入死循环(由编程错误引起)的 作业,从而防止机时的浪费。

(2) 在分时系统中,用时钟间隔来实现各个作业按时间片轮转运行。

(3) 在实时系统中,按要求的时间间隔输出正确的时间信号给相关的实时控制设备。

(4) 定时唤醒那些要求按照事先给定的时间执行的各个外部事件(如定时为各进程计算优 乇数,银行系统中定时运行某类结账程序等)。

(5) 记录用户使用各种设备的时间和记录某外部事件发生的时间间隔。

(6) 记录用户和系统所需要的绝对时间,即年、月、曰。

由上述时钟的这些作用可以看到,时钟是操作系统运行的必不可少的设施。时钟一般分成 3件时钟和软件时钟。

硬件时钟的工作原理是,在电路中的晶体振荡器,每隔一定间隔产生固定的脉冲频率,时钟 马路中的时钟寄存器依据时钟电路所产生的脉冲数,对时钟寄存器进行加1的工作。

软件时钟,常用作相对时钟,它的工作原理主要是利用内存单元模拟时钟寄存器,并采用一 段程序来计算相应的脉冲数,对内存时钟寄存器进行加1或减1的工作,从而模拟了时钟的功 能。由于硬件提供的时钟总是比较少的,往往不能满足操作系统和应用程序对时钟的要求,因而 软件时钟是经常需要的。软件时钟与硬件时钟的同步工作,由操作系统负责维护。

时钟的用途可以分为绝对时钟和相对时钟。

绝对时钟是在计算机系统中不受外界干扰、独立运行的一种时钟。一般来说,绝对时钟很准确, 它通常不会被停止,当计算机系统关机时,绝对时钟值仍然始终不停地保持运行,作为整个计算机系统 中的时间参考基准。绝对时钟通常提供公元日历的时间(即年、月、日、时、分、秒)显示。

相对时钟又称间隔时钟。它只计算从某一个时间初值开始的一段时间间隔。由操作人员置 上时间间隔的初值,以后每经过一个单位的时间,时钟值自动减1,直到该值为负时,则触发一个 时钟中断,并进行相应的处理。间隔时钟可以通过时钟寄存器来实现,如许多操作系统的实用程 序中提供的电子闹钟,每隔固定时间发一次中断,触发一个音响事件。当然,间隔时钟也可以通 过软件时钟来实现。

posted @ 2020-03-16 17:52  小西贝呦  阅读(1156)  评论(0)    收藏  举报