|
|
|
操作系统的硬件支持 m: `; _% W, l: [
任何系统软件都是硬件功能的延伸,并且都是建立在硬件基础之上的。操作系统是对裸机的第一次扩充和延伸,它直接与硬件打交道,更需要硬件的支持。这种硬件支持包括CPU接口、中断接口和系统时钟。
# e2 _: T# p& x! d/ r$ {
+ C" Y3 b% ` o+ @1. CPU接口 " A# Y/ ^8 h& ]3 J) w# E# v. V
) s/ U( i9 z. `CPU接口是向操作系统提供控制硬件的界面。为了使用户程序正常工作,又要保护操作系统不被破坏,就要对硬件实施有效的控制,操作系统的CPU接口中包含特权指令、对处理机执行状态的控制、对某些专用寄存器的控制等控制硬件的功能。
& n* I7 n% I! R0 d* j5 H" N5 p' S, e) S2 U7 i
(1)特权指令
# {- }9 ]* Y3 f$ |" Z$ I6 e2 k0 N5 U/ P4 }5 W; Z$ P3 s B6 K
处理机的指令系统被分成两部分:一部分是特权指令,只允许操作系统使用,如停机指令、启动外设指令、清内存指令、设置时钟、修改程序状态字等;另一部分是非特权指令,允许用户使用,如取数指令、访管指令等。用户不能使用特权指令,这样可以避免系统陷入混乱,而使用非特权指令不会影响其他用户及系统本身。 " u/ a$ K" \- _' P/ v" N9 F3 t
( N; b$ b$ \8 G6 b3 T1 C' m+ Y6 [(2)处理机状态和程序状态字
1 e x3 ~* p, H# I! }
o$ O$ }4 ?& j- kCPU交替执行操作系统程序和用户程序,在执行不同程序时,根据运行的程序对机器指令的使用权限将处理机设置为不同的状态。大多数计算机都为CPU设置了至少两种状态:管理态(又称核心态、管态、特权态等)和用户态(又称目标态、目态、常态、普通态、问题态等)。程序在用户态下运行时,只能执行非特权指令、访问有限的存储空间和指定的寄存器;而在管理态下运行时,程序则不受限制,可执行操作系统的全集,可访问全部存储器和寄存器。通常,操作系统在管理态下运行,用户程序则在用户态下运行。 " N5 [$ L0 _- @1 Q
* f" z6 g+ E8 P( J$ b. C6 |
用一种称为程序状态字(PSW)的专用寄存器来标识处理机的不同状态,例如CPU的执行状态是管态还是目态、指令执行后的结果特征(条件码)、是否允许中断(中断屏蔽码)、发生了什么中断(中断字)以及中断优先级等。PSW寄存器只有CPU处在管态下才可以访问。操作系统可以通过对PSW的修改来控制系统的运行。
6 j+ V) k/ s$ g% a3 r" o! t
7 Z( D5 S7 c3 E/ Y: h4 a$ W2. 中断接口 % S1 ]2 G7 _( E) z% Q
* W! n* O/ O" N: U1 c) R- h9 j
CPU可以暂时终止执行现行程序而转去执行其他程序。当条件具备时,被打断的程序根据操作系统的安排又恢复执行,这样一个过程称为中断。中断接口是CPU与操作系统通信的手段,它能迫使CPU去执行各中断处理程序。中断处理程序对操作系统完成其管理任务十分重要,例如,CPU从目态转换为管态的惟一途径就是中断。只要设计好各个中断处理程序,就能使系统具有完善的功能。中断接口是由中断机构完成的,它的作用主要有两条:一是用于多道程序设计,使CPU能并行执行多道程序,从而充分发挥CPU的效率;二是用于外部设备,使CPU能与外设并行工作,解决快速CPU与慢速外设之间的矛盾。 " v$ R$ S' X. [4 I' }
& d; a+ s6 r6 O4 t4 z
(1)中断流程及其类型
) }# h7 R ~' b7 |6 R2 y- w8 M5 A5 G* ?9 Q
当中断发生时,CPU暂停正在执行的程序,保留现场后自动转去执行相应的中断处理程序,然后再返回断点继续执行被中断的程序。中断的流程如图1.4所示。 : ~5 U% C) A- n" S
! A% C0 t5 o- b! X" m
引起中断的原因,或能发出中断申请的来源称为中断源。中断源通常有以下几种:输入输出设备、数据通道、实时时钟、故障源、程序中设置的中断源。 ( f' k% D* O! C' `( C/ P' E4 r
/ W6 ]# A E. n7 X, I3 Q
一般将中断分为两大类:强迫性中断和自愿性中断。不同的中断源引发不同的中断。强迫性中断是正在运行的程序所不期望的,发生的时间和位置也是不确定的。这类中断包括:
# }; N- l* ^) i9 \0 e' N# ^3 ~8 Z" o0 `/ B: |* r: P: M
● I/O中断 由输入输出完成或出错引起 ; R9 d2 |' k, n1 F
; D z( P' C" n/ F) V& \8 h● 时钟中断 实时时钟到时引起
- x- ^9 e. ~& O. C( T. P
& n+ ^2 C/ F2 X' ]; u● 硬件故障中断 由机器硬件故障(如掉电、内存单元奇偶校验错)引起 * f- S0 J5 H" z& P
! }8 ]/ N! F" R6 q0 J) T● 数据通道中断 由磁盘磁带等数据通道传输完成或出错引起
2 K3 p# ^; l. z- d1 l/ y4 s( \2 z8 N3 A; n3 k- G( r2 H' U- S) s$ i
● 程序中断 也叫软件中断,由程序运行中的错误(如数据溢出、地址越界、缺页、缺段等)引起 " P" _1 P; \( P$ J9 Q
9 o0 R# h7 f2 \: t5 H
自愿性中断是为了程序调试的目的以及程序中需要使用访管指令或系统调用而在程序中有意安排的中断。这类中断的发生具有必然性,发生的位置也是确定的。
0 H4 g3 B0 c& G; U j
% s* W' @% D. ]; k; N. ?' O(2)中断向量、中断优先级和中断屏蔽 1 d$ {7 `2 B+ K$ ?4 d
; B5 s* u! G5 N# c- }处理中断是由硬件和软件共同完成的,其中,硬件部分称为中断机构或中断装置,软件部分称为中断处理程序。系统为每类中断设置一个中断处理程序,它们的入口地址及运行环境的程序状态字保存在内存的固定存储单元中,称为中断向量。当中断发生时,中断机构根据中断类别将对应的中断向量送到程序状态字PSW和程序计数器PC中,使中断处理程序得以执行。在计算机执行的任一时刻,可能有几个中断同时发生,为使系统能及时响应并处理发生的所有中断,在设计中断机构时,就必须根据各类中断的轻重缓急安排好中断响应的次序,给不同的中断赋予不同的优先级,以便中断机构能首先响应优先级高的中断。 ; T3 y2 M' ?- o7 n! x+ K! _
$ f: p+ ~& P0 H0 u' Q+ a
中断屏蔽是指中断源发出中断请求之后,CPU不予响应的状态。通过中断屏蔽可以改变本来由硬件规定好了的中断优先级。 6 v3 y( S: q2 P- H
8 ]8 {$ _$ C: [6 l/ _9 {1 c(3)中断响应
4 D8 H& f: M) ]. I# x; V6 F
+ M* K0 x$ s" Y) [中断响应的目的是发现和接收中断。CPU一旦响应中断就进行以下工作:
1 M- W$ X* c, g \5 n, [: A9 G4 F: Y" g" v0 q6 y
● 保护断点保留现场 CPU封锁程序计数器PC即使之加1不再往下执行,同时把PC的内容及断点处的现场信息(如各寄存器的内容、PSW等)压入堆栈保护起来,称为保护断点。
, J1 V. x& K3 I/ J+ |/ w/ u a0 B% T9 \ W/ z
● 分析中断源,确定中断原因和优先级。 5 J6 e* p; n3 z
# G( K; E o; P9 |● 中断服务 给出中断服务程序的入口地址,转去执行相应的中断服务程序。 ! h. r3 f. H! y
3 _9 n1 r2 Y! w- B+ V1 X7 M● 中断返回 恢复被中断的现场,从断点处继续执行被中断的程序。
9 H* a; J) g7 c3 @# s
) @& k+ S' `3 q4 ~* j$ {3. 时钟
% F1 a+ C# z/ D, J6 G D
" x i% Y! g. l4 T时钟是操作系统运行必不可少的硬件设施,时钟是一个寄存器,按时钟电路产生的脉冲数,自动进行加1或减1的操作,从而实现计时和定时功能。时钟决定了计算机工作的节奏。
* g: {! A; ?% s9 I# B2 O) P3 ^0 _1 Y6 ~9 e. {
硬件时钟通常分为绝对时钟和相对时钟两类。
, | {: O7 h2 O: k/ E& |- c0 ?; w- c1 c/ E' M( j% C
绝对时钟用来记录当时的时间(包括年、月、日、时、分、秒)。操作系统可以用绝对时钟来记录作业进入系统、开始处理及退出系统的时间,记录各种资源的使用时间,并为用户提供当前时间等。
; ^/ a1 v, w; p! k
& r8 b# K5 C( B' g相对时钟也叫间隔时钟,用来每隔一定的时间产生一次中断,使操作系统获得控制权,以便运行系统管理和维护程序。例如,批处理系统用相对时钟发现程序中的死循环,以免浪费机时;分时系统用相对时钟使分时时间片轮转;实时系统更需要按照时间间隔输出正确的时间信息,使控制设备能准时施加控制。 : J1 d; u' p" K' R3 v" T$ l
8 ?4 i, g. n3 o) L重点
" f3 f# T: P7 }/ \0 e g6 l
4 S& f2 J" {3 @* z. t2 X* ~3 u1 {× 特权指令是操作系统的专用指令,不允许用户使用,如启动设备指令、设置时钟指令、清内存指令等;CPU执行不同的指令时,就会处于不同的状态,这些状态由程序状态字标识,状态字包括执行状态字、中断字、中断屏蔽码、中断优先级等。
( ]* T% l; L* A, v! r3 a
% f+ j$ y; s- @# o× 中断是CPU对系统发生的某个事件做出的反应,它是操作系统实现并发运行的基础。中断由中断源提出,由中断机构执行。有五种中断源,它们是输入输出设备、数据通道、故障、时钟和程序本身的原因。中断可分为强迫性中断和自愿性中断,不同的中断源引发不同类型的中断。 ( A" a- y4 u2 P
3 ^7 F. d& y6 O# X× CPU响应中断的过程大体可分为四个阶段,即保护断点保留现场;分析中断源,确定中断原因和优先级;中断服务;中断返回。 8 Z# a+ n/ L6 {: }' ?
; `9 J% \1 A" ] I, H× 时钟是硬件系统提供的计时和定时装置。操作系统利用时钟来运行管理和维护程序。时钟分为绝对时钟和相对时钟。绝对时钟能提供当前的时间,相对时钟提供一定的时间间隔。绝对时钟比相对时钟准确。 |
|