第一章 操作系统引论
操作系统是一组能够有效地组织和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合
1.1操作系统的目标和作用
目标
- 方便性
- 有效性:提高系统资源的利用率、提高系统的吞吐量
- 可扩充性
- 开放性
作用
-
OS作为用户与计算机硬件系统之间的接口(用户观点)
用户可通过三种方式使用计算机:
-
命令方式(直接调用):
- 联机命令接口 = 交互式命令接口
- 脱机命令接口 = 批处理命令接口
-
系统调用方式(间接调用)
-
图标—窗口方式(GUI)
-
-
OS作为计算机系统资源的管理者(资源管理角度)
对 处理机、存储器、I/O设备以及文件(数据和程序) 这四类资源进行有效管理 -
OS实现了对计算机资源的抽象
1.2 操作系统的发展过程
三种基本操作系统:多道批处理、分时系统、实时系统
- 人工操作方式 :效率低下
- 单道批处理方式 :资源利用不充分
- 多道批处理方式 :无交互能力、平均周转时间长
- 分时系统
- 实时系统: 将时间作为关键参数
- 微机操作系统
1.3操作系统的基本特性
- 并发
1. 并行与并发:
并行性 :两个或多个事件在同一 时刻 发生
并发性 :两个或多个事件在同一 时间间隔内 发生
操作系统和程序并发是一起诞生的。
2. 引入进程:
所谓进程,是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。
进程和并发是现代操作系统中最重要的基本概念,也是操作系统运行的基础。 - 共享
1.互斥共享方式:
当进程A要访问某资源时,必须先提出请求。若此时该资源空闲,系统便可将之分配给进程A使用。此后若有其他进程想要访问该资源,只要进程A未用完就必须等待。仅当进程A访问完并释放系统资源后,才允许另一个进程对该资源访问。
临界资源(或独占资源):在一段时间内只允许一个进程访问的资源。
2. 同时访问方式:
系统中还有一类资源,允许在一段时间内由多个进程 “同时” 对它们进行访问。这里所谓的“同时”,在单处理机环境下是宏观意义上的,而在微观上,这些进程对该资源的访问是交替进行的。典型的可供多个进程“同时”访问的资源时磁盘设备。
并发和共享是多用户(多任务)OS的两个基本条件且互为存在的条件
- 虚拟
把某种技术将一个物理实体变为若干个逻辑上对应物的功能称为“虚拟”。
时分复用技术:它利用某设备为一用户服务的空闲时间,又转去为其他用户服务,是设备得到最充分的利用。
空分复用技术:它利用存储器的空闲空间分区域存放和运行其他的多道程序,以此来提高内存的利用率。 - 异步
进程的异步性:进程是以人们不可预知的速度向前推进的。(只有系统拥有并发性,才可能有异步性。)
1.4操作系统的主要功能
- 处理机管理功能:
进程控制
进程同步
进程通信
调度 - 存储器管理功能:
内存分配
内存保护
地址映射
内存扩充 - 设备管理功能
缓存管理
设备分配
设备处理 - 文件管理功能:
文件存储空间的管理
目录管理
文件的读/写管理和保护
第二章 进程的描述与控制
2.1 前驱图
前驱图:一个有向无循环图。
程序的顺序执行:顺序性、封闭性(独占全机资源不受外界因素影响)、可再现性。
程序的并发执行:间断性(相互制约将导致并发程序具有“执行——暂停——执行”这种间断性的活动规律)、失去封闭性、不可再现性。
2.2 程序的描述
 **;PCB**: 为了是参与并发执行的每个程序(含数据)都能独立地运行,在操作系统中必须为之配置一个专门的数据结构,称之为进程控制块(PCB)
有程序段、相关的数据段和PCB三部分构成了进程实体。
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程实体——静态
进程——动态
- 进程是程序的一次执行。
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
- 进程是具有独立功能的程序在一个数据合集上运行的过程,它是系统进行资源分配和调度的一个独立单位。
同一个程序执行会对应多个进程。
进程的特征:
- 动态性
- 并发性
- 独立性
- 异步性
进程的三种基本状态:- 就绪状态:万事俱备,只欠CPU。只要再获得CPU就可立即执行。
- 执行/运行状态:进程获得CPU正在执行的状态。只能有一个进程处于执行状态。
- 阻塞状态:正在执行的进程由于发生某件事(如I/O请求、申请缓冲区失败等)暂时无法继续执行时的状态。
另外两种常见的状态:创建状态和终止状态。
执行——阻塞是进程自身的主动行为。
阻塞——就绪是被动行为。
挂起操作:当该操作作用于某个进程时,该进程将被挂起,意味着此时该进程处于静止状态。如果进程正在执行,它将暂停执行。若原本处于就绪状态,则该进程此时暂时不接受调度。与挂起操作对应的是激活操作。
PCB
PCB作为实体进程的一部分,记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构。
PCB的作用是使 一个在多道程序环境下不能独立运行的程序 成为一个能独立运行的基本单位,一个能与其他程序并发执行的过程。
1.作为独立运行基本单位的标志。
2. 能实现间断性运行方式。
3. 提供进程管理所需要的信息。
4. 提供进程调度所需要的信息。
5. 实现与其他进程的同步与通信。
进程控制块中的信息:进程标识符、处理机状态、进程调度信息、进程控制信息。
进程控制块的组织方式:线性方式、链接方式、索引方式。
2.3 进程控制
所谓进程控制,就是怎样实现进程状态之间的转换。
进程控制一般是由OS的内核中的原语来实现的。
OS内核的两大功能:支撑功能、资源管理功能。
引起进程创建的事件:用户登录、作业调度、提供服务、应用请求。
引起进程终止的事件:正常结束、异常结束、外界干预。
引起进程阻塞和唤醒的事件:向系统请求共享资源失败、等待某种操作的完成、新数据尚未到达、等待新任务的到达。
进程阻塞和唤醒是成对使用的。
进程控制总结
进程控制会导致进程状态的转换。无论哪个原语,要做的无非三类事:
- 更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境)
a. 所有的进程控制原语一定都会修改进程状态标志。
b. 剥夺当前运行进程的CPU使用权必然需要保存其运行环境。
c. 某进程开始运行前必然要恢复其运行环境。 - 将PCB插入合适的队列。
- 分配/回收资源。
2.4 进程同步
所谓同步就是并发进程在一些关键点上可能需要等待与互通消息,这样的相互制约关系称为进程同步。
进程同步机制的主要任务,是对多个相关进程在执行程序上进行协调,使并发执行的诸进程之间能按照一定的规则(或时序)共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性。
进程互斥——间接相互制约关系
进程同步——直接相互直接关系
同步机制应遵循的规则:
1. 空闲让进
2.忙则等待
3.有限等待
4.让权等待
信号量机制
信号量:系统中某资源的数量
P(S) ——申请资源——wait(S)
V (S)——释放资源——signal(S)
整型信号量
wait(S){
while(S<=0);
S--;
}
signal(S){
S++;
}
记录型信号量
typedef struct{
int value;//剩余资源数
struct process_control_block *list;//等待队列的指针
}semaphore;
wait(semaphore *S){
S->value--;
if(S->value<0) block(S->list);//阻塞
}
signal(semaphore *S){
S->value++;
if(S->value<=0) wakeup(S->list);//就绪
}
AND型信号量和信号量集了解即可。P59
信号量的应用
设置互斥信号量mutex,初值为1,取值范围(-1,0,1)。
mutex=1时,表示无进程加入临界区。
mutex=0时,表示有一个进程加入临界区运行。
mutex=-1时,表示有一个进程加入临界区运行且有其他进程在阻塞队列中。
- 利用信号量实现进程互斥
1. 分析并发进程的关键活动,划定临界区
2. 设置互斥信号量mutex,初值为1
3. 在进入区 P(mutex)——申请资源
4. 在退出区 V(mutex)——释放资源
P、V操作应当成对出现。 - 利用信号量实现进程同步
1. 分析何时需要实现“同步关系”
2. 同步信号量S为0
3. “前操作”之后执行 V(S)
4. “后操作”之前执行P(S) - 利用信号量实现前驱关系
2.5经典进程的同步问题
生产者—消费者问题
同步关系
只要缓冲区未满,生产者便可将消息送入缓冲区。
只要缓冲区不为空,消费者就可从缓冲区中取走一个消息。
互斥关系
缓冲区是临界资源,各进程必须互斥地访问。
关于P、V操作:
- 互斥——处于同一进程
- 同步——不在同一进程出现
empty=n,full=0;
例题:
分析:
设置三个信号量S、So、Sa,信号量S表示盘子是否为空,其初值为1;信号量So表示盘中是否有橘子,其初值为0
PV操作的书写规范
管程
一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。
管程的四个部分:
- 管程的名称
- 局部于管程的共享数据结构说明
- 对该数据结构进行操作的一组过程
- 对局部于管程的共享数据设置初始值的语句。
管程特性P64