第一章 操作系统引论
第一章 操作系统引论
1.1 操作系统的目标和作用
1.2 操作系统的发展过程
1.3 操作系统的基本特性
1.4 操作系统的主要功能
1.5 操作系统的结构设计
第一章 操作系统引论
1.1 操作系统的目标和作用
1.1.1 操作系统的目标
目前存在着多种类型的 OS,不同类型的 OS,其目
标各有所侧重 。 通常在计算机硬件上配置的 OS,其目
1,方便性
2,有效性
3,可扩充性
4,开放性
第一章 操作系统引论
1.1.2 操作系统的作用
1.OS作为用户与计算机硬件系统之间的接口
OS作为用户与计算机硬件系统之间接口的含义是:
OS处于用户与计算机硬件系统之间, 用户通过 OS来使
用计算机系统 。 或者说, 用户在 OS帮助下, 能够方便,
快捷, 安全, 可靠地操纵计算机硬件和运行自己的程序 。
应注意, OS是一个系统软件, 因而这种接口是软件接
口 。
第一章 操作系统引论
图 1-1 OS作为接口的示意图
用 户
应用程序
系统调用 命令 图标、窗口
操作系统
计算机硬件
第一章 操作系统引论
(1) 命令方式 。 这是指由 OS提供了一组联机命令 (语
言 ),用户可通过键盘输入有关命令, 来直接操纵计算
机系统 。
(2) 系统调用方式 。 OS提供了一组系统调用, 用户
可在自己的应用程序中通过相应的系统调用, 来操纵
计算机 。
(3) 图形, 窗口方式 。 用户通过屏幕上的窗口和图
标来操纵计算机系统和运行自己的程序 。
第一章 操作系统引论
2,OS作为计算机系统资源的管理者
在一个计算机系统中, 通常都含有各种各样的硬件和
软件资源 。 归纳起来可将资源分为四类:处理器, 存储器,
I/O设备以及信息 (数据和程序 )。 相应地, OS的主要功能也
正是针对这四类资源进行有效的管理, 即:处理机管理,
用于分配和控制处理机;存储器管理, 主要负责内存的分
配与回收; I/O设备管理, 负责 I/O设备的分配与操纵;文
件管理, 负责文件的存取, 共享和保护 。 可见, OS确是计
算机系统资源的管理者 。 事实上, 当今世界上广为流行的
一个关于 OS作用的观点, 正是把 OS作为计算机系统的资
源管理者 。
第一章 操作系统引论
3,OS
对于一台完全无软件的计算机系统 (即裸机 ),即使其功
能再强, 也必定是难于使用的 。 如果我们在裸机上覆盖上一
层 I/O设备管理软件, 用户便可利用它所提供的 I/O命令, 来
进行数据输入和打印输出 。 此时用户所看到的机器, 将是一
台比裸机功能更强, 使用更方便的机器 。 通常把覆盖了软件
的机器称为扩充机器或虚机器 。 如果我们又在第一层软件上
再覆盖上一层文件管理软件, 则用户可利用该软件提供的文
件存取命令, 来进行文件的存取 。 此时, 用户所看到的是台
功能更强的虚机器 。 如果我们又在文件管理软件上再覆盖一
层面向用户的窗口软件, 则用户便可在窗口环境下方便地使
用计算机, 形成一台功能更强的虚机器 。
第一章 操作系统引论
1.1.3 推动操作系统发展的主要动力
1,不断提高计算机资源利用率
2,
3,器件的不断更新换代
4,计算机体系结构的不断发展
第一章 操作系统引论
1.2 操作系统的发展过程
1.2.1 无操作系统的计算机系统
1,人工操作方式
从第一台计算机诞生 (1945年 )到 50年代中期的计算机, 属
于第一代, 这时还未出现 OS。 这时的计算机操作是由用户 (即
程序员 )采用人工操作方式直接使用计算机硬件系统, 即由程序
员将事先已穿孔 (对应于程序和数据 )的纸带 (或卡片 )装入纸带输
入机 (或卡片输入机 ),再启动它们将程序和数据输入计算机,
然后启动计算机运行 。 当程序运行完毕并取走计算结果后, 才
让下一个用户上机 。 这种人工操作方式有以下两方面的缺点:
(1) 用户独占全机 。 (2) CPU等待人工操作 。
第一章 操作系统引论
2,脱机输入 /输出 (Off-Line I/O)
这种脱机 I/O
(1) 减少了 CPU的空闲时间。
(2) 提高 I/O速度。
输入设备 外围机 磁盘
主机
外围机 输出设备

1-
2

机I/O



第一章 操作系统引论
1.2.2 单道批处理系统
1,单道批处理系统 (Simple Batch Processing System)的处理过程
图 1-3 单道批处理系统的处理流程
把下一个作业的源
程序转换为目标程

源程序
有错吗?

装 配
目标程序
还有下
一个作业?


停止
运 行
目标程序

开始
第一章 操作系统引论
2.
单道批处理系统是最早出现的一种 OS,严格地说,
它只能算作是 OS的前身而并非是现在人们所理解的 OS。
尽管如此, 该系统比起人工操作方式的系统已有很大进
步 。
(1) 自动性 。
(2) 顺序性 。
(3) 单道性。
第一章 操作系统引论
1.2.3 多道批处理系统
1,多道程序设计的基本概念
在单道批处理系统中, 内存中仅有一道作业, 它无法
充分利用系统中的所有资源, 致使系统性能较差 。 为了进
一步提高资源的利用率和系统吞吐量, 在 60年代中期又引
入了多道程序设计技术, 由此而形成了多道批处理系统
(Multiprogrammed Batch Processing System)。 在该系统中,
用户所提交的作业都先存放在外存上并排成一个队列, 称
为, 后备队列, ;然后, 由作业调度程序按一定的算法从
后备队列中选择若干个作业调入内存, 使它们共享 CPU和
系统中的各种资源 。
第一章 操作系统引论
在 OS
(1) 提高 CPU的利用率。
当内存中仅有一道程序时, 每逢该程序在运行中发出
I/O请求后, CPU空闲, 必须在其 I/O完成后才继续运行;尤
其因 I/O设备的低速性, 更使 CPU的利用率显著降低 。 图 1-
4(a)示出了单道程序的运行情况, 从图可以看出:在 t2~t3、
t6~t7时间间隔内 CPU空闲 。 在引入多道程序设计技术后,
由于同时在内存中装有若干道程序, 并使它们交替地运行,
这样, 当正在运行的程序因 I/O而暂停执行时, 系统可调度
另一道程序运行, 从而保持了 CPU处于忙碌状态 。
第一章 操作系统引论
图 1-4 单道和多道程序运行情况
t
1
t
2
t
3
t
4
t
5
t
6
t
7
t
8
结束中断
I/ O 完成启动 I /O
I/ O 中断请求
I/ O 完成启动 I/ O
I/ O 中断请求
用户程序
监督程序
I/ O 操作
( a ) 单道程序运行情况
程序 A
程序 A I / O 请求 程序 A I / O 完成
程序 B
程序 B I / O 请求
程序 C
程序 C I / O 请求
程序 D
程序 D I / O 请求
C I / O 完成 C 再被 调度
程序 B I / O 完成
程序 A 再被调度
程序 A
程序 B
程序 C
程序 D
调度 程序
( b ) 四道 程序运 行情况
A 完成
结束中断
第一章 操作系统引论
(2) 可提高内存和 I/O设备利用率 。 为了能运行较大
的作业, 通常内存都具有较大容量, 但由于 80%以上的
作业都属于中小型, 因此在单道程序环境下, 也必定造
成内存的浪费 。 类似地, 对于系统中所配置的多种类型
的 I/O设备, 在单道程序环境下也不能充分利用 。 如果允
许在内存中装入多道程序, 并允许它们并发执行, 则无
疑会大大提高内存和 I/O设备的利用率 。
(3) 增加系统吞吐量 。 在保持 CPU,I/O设备不断忙
碌的同时, 也必然会大幅度地提高系统的吞吐量, 从而
降低作业加工所需的费用 。
第一章 操作系统引论
2,多道批处理系统的特征
(1) 多道性。
(2) 无序性。
(3) 调度性。
第一章 操作系统引论
3,多道批处理系统的优缺点
(1) 资源利用率高。
(2) 系统吞吐量大。
(3) 平均周转时间长。
(4) 无交互能力。
第一章 操作系统引论
4,多道批处理系统需要解决的问题
(1) 处理机管理问题。
(2) 内存管理问题。
(3) I/O设备管理问题。
(4) 文件管理问题。
(5) 作业管理问题。
第一章 操作系统引论
1.2.4 分时系统
1,分时系统 (Time-Sharing System)
如果说, 推动多道批处理系统形成和发展的主要动力,
是提高资源利用率和系统吞吐量, 那么, 推动分时系统形成
和发展的主要动力, 则是用户的需求 。 或者说, 分时系统
是为了满足用户需求所形成的一种新型 OS。 它与多道批处
理系统之间, 有着截然不同的性能差别 。 用户的需求具体表
(1) 人 — 机交互。
(2) 共享主机。
(3) 便于用户上机。
第一章 操作系统引论
2,分时系统实现中的关键问题
为实现分时系统, 其中, 最关键的问题是如何使用户
能与自己的作业进行交互, 即当用户在自己的终端上键入
命令时, 系统应能及时接收并及时处理该命令, 再将结
果返回给用户 。 此后, 用户可继续键入下一条命令, 此
即人 —机交互 。 应强调指出, 即使有多个用户同时通过自
己的键盘键入命令,
(1) 及时接收。
(2) 及时处理。
第一章 操作系统引论
3,分时系统的特征
(1) 多路性。
(2) 独立性。
(3) 及时性。
(4) 交互性。
第一章 操作系统引论
1.2.5 实时系统
所谓, 实时,, 是表示, 及时,, 而实时系统 (Real-
Time System)是指系统能及时 (或即时 )响应外部事件的请求,
在规定的时间内完成对该事件的处理, 并控制所有实时任务
协调一致地运行 。
1,应用需求
(1) 实时控制。
(2) 实时信息处理。
第一章 操作系统引论
2,实时任务
1)
(1) 周期性实时任务。
(2) 非周期性实时任务。
外部设备所发出的激励信号并无明显的周期性,
但都必须联系着一个截止时间 (Deadline)。 它又可分为:
① 开始截止时间 ——任务在某时间以前必须开始执行;
② 完成截止时间 —— 任务在某时间以前必须完成 。
第一章 操作系统引论
2)
(1) 硬实时任务 (hard real-time task)。 系统必须满足任
务对截止时间的要求, 否则可能出现难以预测的结果 。
(2) 软实时任务 (Soft real-time task)。 它也联系着一个
截止时间, 但并不严格, 若偶尔错过了任务的截止时间,
对系统产生的影响也不会太大 。
第一章 操作系统引论
3,实时系统与分时系统特征的比较
(1) 多路性。
(2) 独立性。
(3) 及时性。
(4) 交互性。
(5) 可靠性。
第一章 操作系统引论
1.3 操作系统的基本特性
1.3.1 并发 (Concurrence)
并行性和并发性是既相似又有区别的两个概念, 并行性
是指两个或多个事件在同一时刻发生;而并发性是指两个或
多个事件在同一时间间隔内发生 。 在多道程序环境下, 并发
性是指在一段时间内, 宏观上有多个程序在同时运行, 但在
单处理机系统中, 每一时刻却仅能有一道程序执行, 故微观
上这些程序只能是分时地交替执行 。 倘若在计算机系统中有
多个处理机, 则这些可以并发执行的程序便可被分配到多个
处理机上, 实现并行执行, 即利用每个处理机来处理一个可
并发执行的程序, 这样, 多个程序便可同时执行 。
第一章 操作系统引论
1.3.2 共享 (Sharing)
在操作系统环境下, 所谓共享是指系统中的资源可
供内存中多个并发执行的进程 (线程 )共同使用 。 由于资
源属性的不同, 进程对资源共享的方式也不同, 目前主
要有以下两种资源共享方式 。
第一章 操作系统引论
1,互斥共享方式
系统中的某些资源, 如打印机, 磁带机, 虽然它们可以提
供给多个进程 (线程 )使用, 但为使所打印或记录的结果不致造
成混淆, 应规定在一段时间内只允许一个进程 (线程 )访问该资
源 。 为此, 当一个进程 A要访问某资源时, 必须先提出请求,
如果此时该资源空闲, 系统便可将之分配给请求进程 A使用,
此后若再有其它进程也要访问该资源时 (只要 A未用完 )则必须
等待 。 仅当 A进程访问完并释放该资源后, 才允许另一进程
对该资源进行访问 。 我们把这种资源共享方式称为互斥式共
享, 而把在一段时间内只允许一个进程访问的资源称为临界
资源或独占资源 。 计算机系统中的大多数物理设备, 以及某
些软件中所用的栈, 变量和表格, 都属于临界资源, 它们要
求被互斥地共享 。
第一章 操作系统引论
2,同时访问方式
系统中还有另一类资源, 允许在一段时间内由多个进程
,同时, 对它们进行访问 。 这里所谓的, 同时, 往往是宏观
上的, 而在微观上, 这些进程可能是交替地对该资源进行访
问 。 典型的可供多个进程, 同时, 访问的资源是磁盘设备,
一些用重入码编写的文件, 也可以被, 同时, 共享, 即若干
个用户同时访问该文件 。
并发和共享是操作系统的两个最基本的特征, 它们又是
互为存在的条件 。 一方面, 资源共享是以程序 (进程 )的并发
执行为条件的, 若系统不允许程序并发执行, 自然不存在资
源共享问题;另一方面, 若系统不能对资源共享实施有效管
理, 协调好诸进程对共享资源的访问, 也必然影响到程序
并发执行的程度, 甚至根本无法并发执行 。
第一章 操作系统引论
1.3.3 虚拟 (Virtual)
操作系统中的所谓, 虚拟,, 是指通过某种技术把一
个物理实体变为若干个逻辑上的对应物 。 物理实体 (前者 )
是实的, 即实际存在的;而后者是虚的, 是用户感觉上
的东西 。 相应地, 用于实现虚拟的技术, 称为虚拟技术 。
在 OS中利用了多种虚拟技术, 分别用来实现虚拟处理机,
虚拟内存, 虚拟外部设备和虚拟信道等 。
第一章 操作系统引论
在虚拟处理机技术中, 是通过多道程序设计技术,
让多道程序并发执行的方法, 来分时使用一台处理机
的 。 此时, 虽然只有一台处理机, 但它能同时为多个
用户服务, 使每个终端用户都认为是有一个 CPU在专
门为他服务 。 亦即, 利用多道程序设计技术, 把一台
物理上的 CPU虚拟为多台逻辑上的 CPU,也称为虚拟
处理机, 我们把用户所感觉到的 CPU称为虚拟处理器 。
第一章 操作系统引论
类似地, 可以通过虚拟存储器技术, 将一台机器的
物理存储器变为虚拟存储器, 以便从逻辑上来扩充存储
器的容量 。 此时, 虽然物理内存的容量可能不大 (如 32
MB),但它可以运行比它大得多的用户程序 (如 128 MB)。
这使用户所感觉到的内存容量比实际内存容量大得多,
认为该机器的内存至少也有 128 MB。 当然这时用户所感
觉到的内存容量是虚的 。 我们把用户所感觉到的存储器
称为虚拟存储器 。
第一章 操作系统引论
我们还可以通过虚拟设备技术, 将一台物理 I/O设备虚
拟为多台逻辑上的 I/O设备, 并允许每个用户占用一台逻辑
上的 I/O设备, 这样便可使原来仅允许在一段时间内由一个
用户访问的设备 (即临界资源 ),变为在一段时间内允许多
个用户同时访问的共享设备 。 例如, 原来的打印机属于临
界资源, 而通过虚拟设备技术, 可以把它变为多台逻辑上
的打印机, 供多个用户, 同时, 打印 。 此外, 也可以把一
条物理信道虚拟为多条逻辑信道 (虚信道 )。 在操作系统中,
虚拟的实现主要是通过分时使用的方法 。 显然, 如果 n是某
物理设备所对应的虚拟的逻辑设备数, 则虚拟设备的平均
速度必然是物理设备速度的 1/n 。
第一章 操作系统引论
1.3.4 异步性 (Asynchronism)
在多道程序环境下, 允许多个进程并发执行, 但只有
进程在获得所需的资源后方能执行 。 在单处理机环境下,
由于系统中只有一个处理机, 因而每次只允许一个进程执
行, 其余进程只能等待 。 当正在执行的进程提出某种资源
要求时, 如打印请求, 而此时打印机正在为其它某进程打
印, 由于打印机属于临界资源, 因此正在执行的进程必须
等待, 且放弃处理机, 直到打印机空闲, 并再次把处理机
分配给该进程时, 该进程方能继续执行 。 可见, 由于资源
等因素的限制, 使进程的执行通常都不是, 一气呵成,,
而是以, 停停走走, 的方式运行 。
第一章 操作系统引论
内存中的每个进程在何时能获得处理机运行, 何时
又因提出某种资源请求而暂停, 以及进程以怎样的速度
向前推进, 每道程序总共需多少时间才能完成, 等等,
都是不可预知的 。 由于各用户程序性能的不同, 比如,
有的侧重于计算而较少需要 I/O;而又有的程序其计算少
而 I/O多, 这样, 很可能是先进入内存的作业后完成; 而
后进入内存的作业先完成 。 或者说, 进程是以人们不可
预知的速度向前推进, 此即进程的异步性 。 尽管如此,
但只要运行环境相同, 作业经多次运行, 都会获得完全
相同的结果 。 因此, 异步运行方式是允许的, 是操作系
统的一个重要特征 。
第一章 操作系统引论
1.4 操作系统的主要功能
1.4.1 处理机管理功能
1.
在传统的多道程序环境下, 要使作业运行, 必须先为它
创建一个或几个进程, 并为之分配必要的资源 。 当进程运
行结束时, 立即撤消该进程, 以便能及时回收该进程所占
用的各类资源 。 进程控制的主要功能是为作业创建进程,
撤消已结束的进程, 以及控制进程在运行过程中的状态转
换 。 在现代 OS中, 进程控制还应具有为一个进程创建若干
个线程的功能和撤消 (终止 )已完成任务的线程的功能 。
第一章 操作系统引论
2,进程同步
为使多个进程能有条不紊地运行, 系统中必须设置进程
同步机制 。 进程同步的主要任务是为多个进程 (含线程 )的运
行进行协调 。 有两种协调方式,① 进程互斥方式, 这是指
诸进程 (线程 )在对临界资源进行访问时, 应采用互斥方式;
② 进程同步方式, 指在相互合作去完成共同任务的诸进程
(线程 )间, 由同步机构对它们的执行次序加以协调 。
为了实现进程同步, 系统中必须设置进程同步机制 。 最
简单的用于实现进程互斥的机制, 是为每一个临界资源配置
一把锁 W,当锁打开时, 进程 (线程 )可以对该临界资源进行
访问;而当锁关上时, 则禁止进程 (线程 )访问该临界资源 。
第一章 操作系统引论
3,进程通信
在多道程序环境下, 为了加速应用程序的运行, 应在系统
中建立多个进程, 并且再为一个进程建立若干个线程, 由这些
进程 (线程 )相互合作去完成一个共同的任务 。 而在这些进程 (线
程 )之间, 又往往需要交换信息 。 例如, 有三个相互合作的进
程, 它们是输入进程, 计算进程和打印进程 。 输入进程负责
将所输入的数据传送给计算进程;计算进程利用输入数据进行
计算, 并把计算结果传送给打印进程;最后, 由打印进程把
计算结果打印出来 。 进程通信的任务就是用来实现在相互合作
的进程之间的信息交换 。
当相互合作的进程 (线程 )处于同一计算机系统时, 通常在
它们之前是采用直接通信方式, 即由源进程利用发送命令直接
将消息 (message)挂到目标进程的消息队列上, 以后由目标进程
利用接收命令从其消息队列中取出消息 。
第一章 操作系统引论
4,调度
在后备队列上等待的每个作业, 通常都要经过调度才能
执行 。 在传统的操作系统中, 包括作业调度和进程调度两步 。
作业调度的基本任务, 是从后备队列中按照一定的算法, 选
择出若干个作业, 为它们分配其必需的资源 (首先是分配内
存 )。 在将它们调入内存后, 便分别为它们建立进程, 使它们
都成为可能获得处理机的就绪进程, 并按照一定的算法将它
们插入就绪队列 。 而进程调度的任务, 则是从进程的就绪队
列中选出一新进程, 把处理机分配给它, 并为它设置运行现
场, 使进程投入执行 。 值得提出的是, 在多线程 OS中, 通常
是把线程作为独立运行和分配处理机的基本单位, 为此, 须
把就绪线程排成一个队列, 每次调度时, 是从就绪线程队列
中选出一个线程, 把处理机分配给它 。
第一章 操作系统引论
1.4.2 存储器管理功能
1,内存分配
OS在实现内存分配时, 可采取静态和动态两种方式 。
在静态分配方式中, 每个作业的内存空间是在作业装入时
确定的;在作业装入后的整个运行期间, 不允许该作业再
申请新的内存空间, 也不允许作业在内存中, 移动, ; 在
动态分配方式中, 每个作业所要求的基本内存空间, 也是
在装入时确定的, 但允许作业在运行过程中, 继续申请新
的附加内存空间, 以适应程序和数据的动态增涨, 也允许
作业在内存中, 移动, 。
第一章 操作系统引论
为了实现内存分配, 在内存分配的机制中应具有
这样的结构和功能:
① 内存分配数据结构, 该结构用于记录内存空间
的使用情况, 作为内存分配的依据;
② 内存分配功能, 系统按照一定的内存分配算法,
为用户程序分配内存空间;
③ 内存回收功能, 系统对于用户不再需要的内存,
通过用户的释放请求, 去完成系统的回收功能 。
第一章 操作系统引论
2.
内存保护的主要任务, 是确保每道用户程序都只在自己
的内存空间内运行, 彼此互不干扰 。
为了确保每道程序都只在自己的内存区中运行, 必须设
置内存保护机制 。 一种比较简单的内存保护机制, 是设置两
个界限寄存器, 分别用于存放正在执行程序的上界和下界 。
系统须对每条指令所要访问的地址进行检查, 如果发生越界,
便发出越界中断请求, 以停止该程序的执行 。 如果这种检查
完全用软件实现, 则每执行一条指令, 便须增加若干条指令
去进行越界检查, 这将显著降低程序的运行速度 。 因此, 越
界检查都由硬件实现 。 当然, 对发生越界后的处理, 还须与
软件配合来完成 。
第一章 操作系统引论
3.
一个应用程序 (源程序 )经编译后, 通常会形成若干个目
标程序;这些目标程序再经过链接便形成了可装入程序 。
这些程序的地址都是从, 0”开始的, 程序中的其它地址都
是相对于起始地址计算的; 由这些地址所形成的地址范围
称为, 地址空间,, 其中的地址称为, 逻辑地址, 或, 相
对地址, 。 此外, 由内存中的一系列单元所限定的地址范
围称为, 内存空间,, 其中的地址称为, 物理地址, 。
在多道程序环境下, 每道程序不可能都从, 0”地址开
始装入 (内存 ),这就致使地址空间内的逻辑地址和内存空
间中的物理地址不相一致 。 使程序能正确运行, 存储器管
理必须提供地址映射功能, 以将地址空间中的逻辑地址转
换为内存空间中与之对应的物理地址 。 该功能应在硬件的
支持下完成 。
第一章 操作系统引论
4,内存扩充
存储器管理中的内存扩充任务, 并非是去扩大物理内存
的容量, 而是借助于虚拟存储技术, 从逻辑上去扩充内存
容量, 使用户所感觉到的内存容量比实际内存容量大得多;
或者是让更多的用户程序能并发运行 。 这样, 既满足了用
户的需要, 改善了系统的性能, 又基本上不增加硬件投资 。
为了能在逻辑上扩充内存, 系统必须具有内存扩充机制,
(1) 请求调入功能。
(2) 置换功能。
第一章 操作系统引论
1.4.3 设备管理功能
设备管理用于管理计算机系统中所有的外围设备,
而设备管理的主要任务是, 完成用户进程提出的 I/O请求;
为用户进程分配其所需的 I/O设备;提高 CPU和 I/O设备的
利用率;提高 I/O速度;方便用户使用 I/O设备 。 为实现上
述任务, 设备管理应具有缓冲管理, 设备分配和设备处
理, 以及虚拟设备等功能 。
第一章 操作系统引论
1,缓冲管理
CPU运行的高速性和 I/O低速性间的矛盾自计算机诞生
时起便已存在 。 而随着 CPU速度迅速, 大幅度的提高, 使
得此矛盾更为突出, 严重降低了 CPU的利用率 。 如果在 I/O
设备和 CPU之间引入缓冲, 则可有效地缓和 CPU和 I/O设备
速度不匹配的矛盾, 提高 CPU的利用率, 进而提高系统吞吐
量 。 因此, 在现代计算机系统中, 都毫无例外地在内存中
设置了缓冲区, 而且还可通过增加缓冲区容量的方法, 来改
善系统的性能 。
最常见的缓冲区机制有单缓冲机制, 能实现双向同时传
送数据的双缓冲机制, 以及能供多个设备同时使用的公用缓
冲池机制 。
第一章 操作系统引论
2,设备分配
设备分配的基本任务, 是根据用户进程的 I/O请求, 系统的
现有资源情况以及按照某种设备分配策略, 为之分配其所需的
设备 。 如果在 I/O设备和 CPU之间, 还存在着设备控制器和 I/O
通道时, 还须为分配出去的设备分配相应的控制器和通道 。
为了实现设备分配, 系统中应设置设备控制表, 控制器控
制表等数据结构, 用于记录设备及控制器的标识符和状态 。 据
这些表格可以了解指定设备当前是否可用, 是否忙碌, 以供进
行设备分配时参考 。 在进行设备分配时, 应针对不同的设备类
型而采用不同的设备分配方式 。 对于独占设备 (临界资源 )的分
配, 还应考虑到该设备被分配出去后, 系统是否安全 。 设备使
用完后, 还应立即由系统回收 。
第一章 操作系统引论
3.
设备处理程序又称为设备驱动程序 。 其基本任务是用于
实现 CPU和设备控制器之间的通信, 即由 CPU向设备控制器
发出 I/O命令, 要求它完成指定的 I/O操作;反之由 CPU接收从
控制器发来的中断请求, 并给予迅速的响应和相应的处理 。
处理过程是:设备处理程序首先检查 I/O请求的合法性,
了解设备状态是否是空闲的, 了解有关的传递参数及设置设
备的工作方式 。 然后, 便向设备控制器发出 I/O命令, 启动
I/O设备去完成指定的 I/O操作 。 设备驱动程序还应能及时响
应由控制器发来的中断请求, 并根据该中断请求的类型, 调
用相应的中断处理程序进行处理 。 对于设置了通道的计算机
系统, 设备处理程序还应能根据用户的 I/O请求, 自动地构成
通道程序 。
第一章 操作系统引论
1.4.4 文件管理功能
1.
由文件系统对诸多文件及文件的存储空间, 实施统一的管
理 。 其主要任务是为每个文件分配必要的外存空间, 提高外存
的利用率, 并能有助于提高文件系统的运行速度 。
为此, 系统应设置相应的数据结构, 用于记录文件存储空
间的使用情况, 以供分配存储空间时参考;系统还应具有对存
储空间进行分配和回收的功能 。 为了提高存储空间的利用率,
对存储空间的分配, 通常是采用离散分配方式, 以减少外存零
头, 并以盘块为基本分配单位 。 盘块的大小通常为 512 B~8 KB。
第一章 操作系统引论
2,目录管理
为了使用户能方便地在外存上找到自己所需的文件,
通常由系统为每个文件建立一个目录项 。 目录项包括文
件名, 文件属性, 文件在磁盘上的物理位置等 。 由若干
个目录项又可构成一个目录文件 。 目录管理的主要任务,
是为每个文件建立其目录项, 并对众多的目录项加以有
效的组织, 以实现方便的按名存取 。 即用户只须提供文
件名, 即可对该文件进行存取 。 其次, 目录管理还应能
实现文件共享, 这样, 只须在外存上保留一份该共享文
件的副本 。 此外, 还应能提供快速的目录查询手段, 以
提高对文件的检索速度 。
第一章 操作系统引论
3,文件的读 /
(1) 文件的读 /写管理 。 该功能是根据用户的请求, 从外
存中读取数据;或将数据写入外存 。 在进行文件读 (写 )时,
系统先根据用户给出的文件名, 去检索文件目录, 从中获得
文件在外存中的位置 。 然后, 利用文件读 (写 )指针, 对文件
进行读 (写 )。 一旦读 (写 )完成, 便修改读 (写 )指针, 为下一次
读 (写 )做好准备 。 由于读和写操作不会同时进行, 故可合用
一个读 /写指针 。
(2) 文件保护 。 ① 防止未经核准的用户存取文件; ② 防
止冒名顶替存取文件; ③ 防止以不正确的方式使用文件 。
第一章 操作系统引论
1.4.5 用户接口
1,命令接口
(1) 联机用户接口 。 这是为联机用户提供的, 它由一组
键盘操作命令及命令解释程序所组成 。 当用户在终端或控
制台上每键入一条命令后, 系统便立即转入命令解释程序,
对该命令加以解释并执行该命令 。 在完成指定功能后, 控
制又返回到终端或控制台上, 等待用户键入下一条命令 。
这样, 用户可通过先后键入不同命令的方式, 来实现对作
业的控制, 直至作业完成 。
第一章 操作系统引论
(2) 脱机用户接口 。 该接口是为批处理作业的用户提供
的, 故也称为批处理用户接口 。 该接口由一组作业控制语言
JCL组成 。 批处理作业的用户不能直接与自己的作业交互作
用, 只能委托系统代替用户对作业进行控制和干预 。 这里的
作业控制语言 JCL便是提供给批处理作业用户的, 为实现所
需功能而委托系统代为控制的一种语言 。 用户用 JCL把需要
对作业进行的控制和干预, 事先写在作业说明书上, 然后将
作业连同作业说明书一起提供给系统 。 当系统调度到该作业
运行时, 又调用命令解释程序, 对作业说明书上的命令, 逐
条地解释执行 。 如果作业在执行过程中出现异常现象, 系统
也将根据作业说明书上的指示进行干预 。 这样, 作业一直在
作业说明书的控制下运行, 直至遇到作业结束语句时, 系统
才停止该作业的运行 。
第一章 操作系统引论
2.
该接口是为用户程序在执行中访问系统资源而设置的,
是用户程序取得操作系统服务的惟一途径 。 它是由一组系
统调用组成, 每一个系统调用都是一个能完成特定功能的
子程序, 每当应用程序要求 OS提供某种服务 (功能 )时, 便
调用具有相应功能的系统调用 。 早期的系统调用都是用汇
编语言提供的, 只有在用汇编语言书写的程序中, 才能直
接使用系统调用;但在高级语言以及 C语言中, 往往提供
了与各系统调用一一对应的库函数, 这样, 应用程序便可
通过调用对应的库函数来使用系统调用 。 但在近几年所推
出的操作系统中, 如 UNIX,OS/2版本中, 其系统调用本身
已经采用 C语言编写, 并以函数形式提供, 故在用 C语言编
制的程序中, 可直接使用系统调用 。
第一章 操作系统引论
3,图形接口
用户虽然可以通过联机用户接口来取得 OS的服务, 但
这时要求用户能熟记各种命令的名字和格式, 并严格按照
规定的格式输入命令, 这既不方便又花时间, 于是, 图形
用户接口便应运而生 。 图形用户接口采用了图形化的操作
界面, 用非常容易识别的各种图标 (icon)来将系统的各项功
能, 各种应用程序和文件, 直观, 逼真地表示出来 。 用户
可用鼠标或通过菜单和对话框, 来完成对应用程序和文件
的操作 。 此时用户已完全不必像使用命令接口那样去记住
命令名及格式, 从而把用户从繁琐且单调的操作中解脱出
来 。
第一章 操作系统引论
1.5 操作系统的结构设计
1.5.1 软件工程的基本概念
1.
所谓软件, 是指当计算机运行时, 能提供所要求的
功能和性能的指令和程序的集合, 该程序能够正确地处
理信息的数据结构;作为规范软件, 还应具有描述程序
功能需求以及程序如何操作使用的文档 。 如果说, 硬件
是物理部件, 那么, 软件则是一种逻辑部件, 它具有与
硬件完全不同的特点 。
第一章 操作系统引论
2,软件工程的含义
软件工程是指运用系统的, 规范的和可定量的方
法, 来开发, 运行和维护软件;或者说, 是采用工程
的概念, 原理, 技术和方法, 来开发与维护软件, 其
目的是为了解决在软件开发中所出现的编程随意, 软
件质量不可保证以及维护困难等问题 。
第一章 操作系统引论
1.5.2 传统的操作系统结构
操作系统是一个十分复杂的大型软件 。 为了控制该软
件的复杂性, 在开发 OS时, 先后引入了分解, 模块化,
抽象和隐蔽等方法 。 开发方法的不断发展, 促进了 OS结
构的更新换代 。 这里, 我们把第一代至第三代的 OS结构,
称为传统的 OS结构, 而把微内核的 OS结构称为现代 OS结
构 。
第一章 操作系统引论
1.
在早期开发操作系统时, 设计者只是把他的注意力放
在功能的实现和获得高的效率上, 缺乏首尾一致的设计思
想 。 此时的 OS是为数众多的一组过程的集合, 各过程之间
可以相互调用, 在操作系统内部不存在任何结构, 因此,
这种 OS是无结构的, 也有人把它称为整体系统结构 。
此时程序设计的技巧, 只是如何编制紧凑的程序, 以
便于有效地利用内存, 对 GOTO语句的使用不加任何限制,
所设计出的操作系统既庞大又杂乱, 缺乏清晰的程序结构 。
这一方面会使所编制出的程序错误很多, 给调试工作带来
很多困难;另一方面也使程序难以阅读和理解, 增加了维
护人员的负担 。
第一章 操作系统引论
2,模块化 OS
1)
模块化程序设计技术, 是最早 (20世纪 60年代 )出现的一种程序设计技
术 。 该技术是基于, 分解, 和, 模块化, 原则来控制大型软件的复杂度
的 。 为使 OS具有较清晰的结构, OS不再是由众多的过程直接构成, 而是
将 OS按其功能划分为若干个具有一定独立性和大小的模块 。 每个模块具
有某方面的管理功能, 如进程管理模块, 存储器管理模块, I/O设备管理
模块和文件管理模块等, 并规定好各模块间的接口, 使各模块之间能通
过该接口实现交互, 然后再进一步将各模块细分为若干个具有一定管理
功能的子模块, 如把进程管理模块又分为进程控制, 进程同步, 进程通
信和进程调度等子模块, 同样也要规定各子模块之间的接口 。 若子模块
较大时, 再进一步将它细分 。 图 1-5 示出了由模块, 子模块等组成的模
块化 OS结构 。
第一章 操作系统引论
图 1-5 模块化操作系统结构
进程控制 ? 进程调度 内存分配 内存保护 磁盘管理 目录管理
进程管理 存储器管理 文件管理
操作系统
模块
子模块
第一章 操作系统引论
2) 模块化 OS
(1) 提高了 OS设计的正确性,可理解性和可维护性。
(2) 增强了 OS的可适应性。
(3) 加速了 OS的开发过程。
模块化结构设计的缺点有二 。 首先, 在开始设计 OS时, 对模块的
划分及对接口的规定并不精确, 而且还可能存在错误, 因而很难保证
按此规定所设计出的模块会完全正确, 这将使在把这些模块装配成
OS时发生困难;其次, 从功能观点来划分模块时, 未能将共享资源和
独占资源加以区别; 由于管理上的差异, 又会使模块间存在着复杂的
依赖关系使 OS结构变得不清晰 。
第一章 操作系统引论
3,分层式 OS
1)
从改进设计方式上说, 应使我们的每一步设计都是建
立在可靠的基础上 。 我们可以从物理机器开始, 在其上
面先添加一层具有一定功能的软件 A1,由于 A1是建立在完
全确定的物理机器上的, 在经过精心设计和几乎是穷尽无
遗的测试后, 可以认为 A1是正确的;然后再在 A1上添加一
层新软件 A2,……,如此一层一层地自底向上增添软件层,
每一层都实现若干功能, 最后总能构成一个能满足需要的
OS。
第一章 操作系统引论
分层式结构设计的基本原则是:每一层都仅使用其底层
所提供的功能和服务, 这样可使系统的调试和验证都变得容
易, 例如, 在调试第一层软件 A1时, 由于它只使用了物理
机器提供的功能, 因此它将与其所有的高层软件 A2,……,
An无关; 同样在调试 A2时, 它也只使用了 A1和物理机器所
提供的功能, 而与其高层软件 A3,……,An无关, 这样, 一旦
发现 Ai出现错误时, 通常该错误只会局限于 Ai,因为它与所
有其高层的软件无关, 而 Ai层以下的各层软件, 又都经过仔
细的调试 。
第一章 操作系统引论
2)
(1) 程序嵌套 。 通常 OS的每个功能的实现, 并非是
只用一个程序便能完成的, 而是要经由若干个软件层才
有可能完成 。 因此在划分 OS层次时, 首先要考虑在实现
OS 的每个功能时所形成的程序嵌套 。 例如, 作业调度模
块须调用进程控制模块;在为某作业创建一进程时, 进
程控制模块又须调用内存管理模块为新进程分配内存空
间, 可见, 进程控制模块应在内存管理模块之上; 而作
业调度模块又应在更高层 。
第一章 操作系统引论
(2) 运行频率 。 在分层结构中, 各层次软件的运行
速度是不同的, 因为 A1层软件能直接在物理机器上运行,
故它有最高的运行速度 。 随着层次的增高, 其相应软件
的运行速度就随之下降, 因而 An层软件的运行速度最低 。
为了提高 OS的运行效率, 应该将那些经常活跃的模块
放在最接近硬件的 A1层, 如时钟管理, 进程调度, 通常
都放在 A1层 。
第一章 操作系统引论
(3) 公用模块 。 应把供多种资源管程程序调用的公用
模块, 设置在最低层, 不然, 会使比它低的层次模块由
于无法调用它而须另外配置相应功能的模块 。 例如, 用
于对信号量进行操作的原语 Signal和 Wait。
(4) 用户接口 。 为方便用户 (程序 ),OS向用户提供了
,用户与 OS的接口,, 如命令接口, 程序接口以及图形
用户接口 。 这些接口应设置在 OS的最高层, 直接提供给
用户使用 。
第一章 操作系统引论
1.5.3 微内核 OS结构
1,客户 /服务器模式 (Client-ServerModel)
1)
为了提高 OS的灵活性和可扩充性而将 OS划分为两部分, 一部分是
用于提供各种服务的一组服务器 (进程 ),如用于提供进程管理的进程服
务器, 提供存储器管理的存储器服务器提供文件管理的文件服务器等,
所有这些服务器 (进程 )都运行在用户态 。 当有一用户进程 (现在称为客户
进程 )要求读文件的一个盘块时, 该进程便向文件服务器 (进程 )发出一个
请求;当服务器完成了该客户的请求后, 便给该客户回送一个响应 。 操
作系统的另一部分是内核, 用来处理客户和服务器之间的通信, 即由内
核来接收客户的请求, 再将该请求送至相应的服务器;同时它也接收服
务器的应答, 并将此应答回送给请求客户 。 此外, 在内核中还应具有
其它一些机构, 用于实现与硬件紧密相关的和一些较基本的功能 。
第一章 操作系统引论
图 1-6 单机环境下的客户 /服务器模式
客户
进程
客户
进程
进程
服务器
终端
服务器
?
文件
服务器
存储器
服务器
用户方式
核心方式
回答核心请求
第一章 操作系统引论
2) 客户 /
(1) 提高了系统的灵活性和可扩充性。
(2) 提高了 OS的可靠性。
(3) 可运行于分布式系统中。
第一章 操作系统引论
2,面向对象的程序设计技术 (Object-Orientated
Programming)
1)
面向对象技术是 20世纪 80年代初提出并很快流行起来
的 。 该技术是基于, 抽象, 和, 隐蔽, 原则来控制大型软
件的复杂度的 。 所谓对象, 是指在现实世界中具有相同属
性, 服从相同规则的一系列事物的抽象, 而把其中的具体
事物称为对象的实例 。 OS中的各类实体如进程, 线程, 消
息, 存储器等, 都使用了对象这一概念, 相应地, 便有进
程对象线程对象, 存储器对象等 。
第一章 操作系统引论
图 1-7 一个对象的示意图
数据结构
过程 1
过程 2
过程 3
第一章 操作系统引论
2)
(1) 可修改性和可扩充性 。 由于隐蔽了表示实体的数
据和操作, 因而可以改变对象的表示而不会影响其它部
分, 从而可以方便地改变老的对象和增加新的对象 。
(2) 继承性 。 继承性是面向对象技术所具有的重要特
性 。 继承性是指子对象可以继承父对象的属性, 这样,
在创建一个新的对象时, 便可减少大量的时空开销 。
(3) 正确性和可靠性 。 由于对象是构成操作系统的基
本单元, 可以独立地对它进行测试, 这样, 比较易于保
证其正确性和可靠性, 从而比较容易保证整个系统的正
确性和可靠性 。
第一章 操作系统引论
3.
1) 微内核技术的引入
所谓微内核技术, 是指精心设计的, 能实现现代 OS
核心功能的小型内核, 它与一般的 OS(程序 )不同, 它更
小更精炼, 它不仅运行在核心态, 而且开机后常驻内存,
它不会因内存紧张而被换出内存 。 微内核并非是一个完
整的 OS,而只是为构建通用 OS提供一个重要基础 。 由于
在微内核 OS结构中, 通常都采用了客户 /服务器模式, 因
此 OS的大部分功能和服务, 都是由若干服务器来提供的,
如文件服务器, 作业服务器和网络服务器等 。
第一章 操作系统引论
2)
微内核所提供的功能, 通常都是一些最基本的功能,
如进程管理, 存储器管理, 进程间通信, 低级 I/O功能 。
(1) 进程管理 。
(2) 存储器管理。
(3) 进程通信管理。
(4) I/O设备管理。