一、处理机管理
-
处理机管理也称为进程管理,核心是如何合理地分配处理时间,提高系统地效率
(一)基本概念
1、执行时的特征
顺序性:程序的各程序段严格按照规定的顺序执行
封闭性:程序运行时系统内的资源只受该程序控制而改变,执行结果不受外界因素的影响
可再现性:只要程序执行环境和初始条件相同,多次执行的结果一致
2、进程的组成
进程(Process)是程序的一次执行,是进行资源分配和调度的基本单位
- 组成
程序(不可修改)
数据(可修改)
进程控制块(PCB)组(进程存在唯一标志)
-
进程的主要内容
3、进程的状态及其状态间的转换
- 进程一般有三种基本状态:运行、就绪和阻塞
- 三态模型
- 运行:对于单机处理系统,处于运行状态的进程只有一个
就绪:一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行
阻塞:等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂停运行,这时即使把处理机分配给此进程,它也无法运行
-
事实上,对于一个实际的系统,进程的状态及其转换将更复杂,三态模型不能够满足我们的需求,所以产生了五态模型
(二)进程控制
进程控制:对系统中所有进程从创建到消亡的全过程实施有效的控制
主要功能:创建一个新进程,撤销一个已经运行完成的进程,改变进程的状态,实现进程间的通信
(三)进程通信
-
在多道程序环境的系统中,存在多个可并发执行的进程,进程间必然存在资源共享和相互合作的问题
-
进程间通信是指各个进程交换信息的过程
1、同步与互斥
同步:合作进程间的相互依赖和相互制约的问题,与异步互为反义词
互斥:申请临界资源进程间的间接制约问题,与共享互为反义词
- 进程间的同步
多个并发执行的进程都以各自独立的、不可预知的速度向前推进,但是有时需要在某些确定点上协调相互合作进程间的工作
示例:大人给小孩喂饭,需要大人和小孩相互协调合作才能完成,由于两者之间存在速度差异,大人的速度比较快,要等小孩吃完一口饭后才能喂下一口,从而达到同步的效果
- 进程间的互斥
- 在多道程序系统环境中,各进程可以共享各类资源,但有些资源同一时刻只能供一个进程使用,称为临界资源(Critical Resource,CR),如打印机、共享变量等
- 进程间的互斥:指系统中各进程互斥使用临界资源
示例:打印机同一时刻只能完成一个任务,所以它是一种互斥资源,两个人不能同时使用打印机
-
临界区(Critical Section,CS)是进程中对临界资源实施操作的那段程序或代码
-
对互斥临界区管理的4条原则
有空即进:临界区处于空挡,允许新进程进入临界区,但只能在临界区运行有限的时间
无空则等:当有进程在临界区时,其他需要进入临界区的进程必须等待
有限等待:对要求访问临界资源的进程,应保证其等待有限时间后进入临界区,避免进入“饥饿”状态
让权等待:当进程不能进入自己的临界区时(需要更多的资源才能运行),应立即释放处理机,避免进入“忙等”状态
2、信号量机制
-
定义:一种有效地进程同步与互斥工具,主要有整型信号量、记录型信号量和信号量集机制
-
整型信号量
信号量是一个整型变量,根据控制对象的不同被赋予不同的值。信号量分为以下两类:
公用信号量:实现进程间的互斥,初值为1或资源的数目
私用信号量:实现进程间的同步,初值为0或某个正整数
信号量S的物理意义
若S≧0,表示某资源的可用数
若S<0,则其绝对值表示阻塞队列中等待此资源的进程数
3、PV操作
- PV操作是实现进程同步互斥的常用方法
P操作和V操作是低级通信原语,在执行期间不可分割
P操作表示申请一个资源
V操作表示释放一个资源
P操作的定义
S=S-1
若S≧0,则执行P操作的进程继续执行
若S<0,则置此进程为阻塞状态(因为无可用资源),并将其插入阻塞队列
V操作的定义
S=S+1
若S>0,则执行V操作的进程继续执行
若S≦0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续
📑案例1:利用PV操作实现进程的互斥
令信号量mutex的初值为1,进入临界区时执行P操作,退出临界区时执行V操作。这样,进入临界区的代码段为:P(mutex);临界区;V(mutex)
例:两个并发执行的程序段完成交通流量的统计,其中”观察者”P1识别通过的车辆,“报告者”P2定时将观察者的计数值清“0”
用PV操作实现的交通流量统计程序如下
📑案例2:利用PV操作实现进程的同步
例:生产者进程P1不断地生产产品送入缓冲区,缓冲区可以存放一件产品。消费者进程P2不断地从缓存区中取出产品消费,利用PV操作实现进程P1与P2之间地同步问题,需要设置几个信号量,信号量地初值为多少?
解:本题需要设置两个信号量,一个信号量S1,表示缓冲区是否有空闲,初值为1,表示缓冲区空可以将产品送入缓冲区;另一个信号量S2,表示缓冲区有无产品,初值为0。P1和P2的同步过程如图所示
(四)进程管理与前趋图
-
前趋图是用于描述程序执行顺序的一个有向无循环图,由结点和有向边组成,结点代表程序段的操作,而结点间的有向边表示两个程序段操作之间存在的前趋关系(→)
-
例如,下图为三个程序段,其中输入是计算的前驱,计算是输入的后继
1、前趋图示例
2、PV操作与前趋图
3、案例1
二、高级通信
(一)进程通信的方式
-
根据进程间通信交换信息量的多少和效率的高低,进程通信的方式为低级方式和高级方式
1、PV操作属于低级通信方式
-
若用PV操作实现进程间通信,则存在如下问题
编程难度大,通信对用户不透明,即需要用户利用低级通信工具实现进程间的同步与互斥,而且PV操作使用不当还容易引起死锁
效率低,生产者每次只能向缓冲区放一个消息,消费者只能从缓冲区取一个消息
- 为了提高通信效率,能传递大量数据,减轻程序的复杂度,系统引入了高级通信方式
2、高级通信方式主要分为共享存储模式、消息传递模式和管道通信
(二)直接和间接通信
1、直接通信
-
直接通信是将消息直接发送给指定进程,因此,Send和Receive原语中应指出进程名字
-
其调用格式如下
Send(Who,Message) 发送消息给指定进程或一组进程
Receive(Who,Message) 从约定进程接收消息
2、间接通信
-
间接通信是以信箱为媒体来实现通信的,接收信件的进程只需设立一个信箱,若干个进程都可以向同一个进程发送信件。因此,Send和Receive原语中应给出信箱名
-
其调用格式如下
Send(N,M) 将信件M发送到信箱N中
Receive(N,X) 从信箱N中取一封信存入X
三、进程调度
进程调度方式是指当有更高优先级的进程到来时如何分配CPU
调度方式分为可剥夺和不可剥夺两种
可剥夺式是指当有更高优先级的进程到来时,强行将正在运行的进程的CPU分配给高优先级的进程
不可剥夺式是指当有更高优先级的进程到来时,必须等待正在运行进程自动释放占用的CPU,然后将CPU分配给高优先级的进程
(一)三级调度
- 在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度
(二)进程调度算法
- 常用的进程调度算法有先来先服务、时间片轮转、优先级调度和多级反馈调度算法
1、先来先服务(First Come First Served,FCFS)
排队,先来的先服务
FCFS调度法比较有利于长作业和CPU繁忙作业;而不利于I/O繁忙作业
FCFS算法主要用于宏观调度
2、时间片轮转
每个进程都有自己的时间
时间片轮转算法主要用于微观调度
设计目标是通过时间片轮转,提高进程并发性和响应时间特性,从而提高资源利用率
时间片的长度可从几个ms到几百ms,选择的方法一般有以下两种
固定时间片:分配给每个进程相等的时间片,使所有进程都公平执行,是一种实现简单有效的方法
可变时间片:根据进程不同的要求对时间片的大小实时修改,可以更好地提高效率
3、优先级调度
优先级调度算法是让每一个进程都拥有一个优先数,通常数值大的表示优先级高,系统在调度时总选择优先级高地占用CPU
优先级调度分为静态优先级和动态优先级
静态优先级:进程的优先级在创建时确定,直到进程终止都不会改变。确定优先级的因素有进程类型(系统进程优先级较高)、对资源的需求(如对CPU和内存需求较少的进程优先级较高)和用户要求(如紧迫程度)
动态优先级:在创建进程时赋予一个优先级,在进程运行过程中还可以改变,以便获得更好的调度性能。例如:在就绪队列中,随着等待时间增长,优先级将提高。这样,对于一个优先级较低的进程在等待足够的时间后,其优先级提高到可被调度执行。进程每执行一个时间片,就降低其优先级,从而当一个进程持续执行时,其优先级会降低到让出CPU
4、多级反馈调度
多级反馈队列算法是时间片轮转算法和优先级算法的综合与发展
优点
照顾短进程以提高系统吞吐量、缩短了平均周转时间
照顾I/O型进程以获得较好的I/O设备利用率和缩短响应时间
不必估计进程的执行时间,动态调节优先级