@ 操作系统——第二章进程管理
2.1 前趋图和程序执行
- 操作系统的特性之一是并发与共享,即在操作系统中(内存)同时存在几个相互独立的程序,这些程序在系统中即交叉的运行,又要共享系统中的资源,这就会引起一些列的问题,包括:对资源的竞争、运行程序之间的通信、程序之间的合作与协同等。
- 要解决这些问题,要用程序的概念已经不能描述程序在内存中运行的状态,必须引入新的概念–进程
2.1.1 前驱图
- 前驱图是一个有向无循环图(DAG),用于描述进程之间执行的前后关系
-
- 结点:描述一个程序段或进程,或一条语句
2.1.2 程序的顺序执行
1、程序的顺序执行
- 一个程序由若干个程序段组成,而这些程序段执行必须是顺序的,这种程序执行的方式就称为程序的顺序执行。
#include<stdio.h>
main()
{
int x,y,z,t;
scanf("%d %d %d",&x,&y,&z);
if(x>y){
// 交换x,y的值
t=x;
x=y;
y=t;
}
if(x>z){
t=z;
z=x;
x=t;
}
if(y>z){
t=y;
y=z;
z=t;
}
printf("small to big:%d %d %d\n",x,y,z)
return 0;
}
例:讨论单道程序的工作情况
- 对用户作业的处理–
-
- 首先输入用户的程序和数据 input
-
- 然后进行计算 caculate
-
- 最后打印计算结果 print
- 即有三个顺序执行的操作–
-
- I:输入操作
-
- C:计算操作
-
- P:输出操作
-
- I1->C1->P1->I2->C2->P2
2、程序顺序执行时的特征
- (1)顺序性
-
- 处理机的操作严格按照程序所规定的顺序执行
- (2)封闭性
-
- 程序一旦开始执行,其计算结果不受外界因素的影响
- (3)可在现性
-
- 程序执行的结果与它执行的速度无关(即与时间无关),而只与初始条件有关。
2.1.3程序的并发执行
1、程序的并发执行
又如:四个程序段
S1:a:=x+2
S2: b:=y+4
S3: c:=a+b
S4: d:=c+b
2、程序并发执行时的特征
(1)、间断性
- 在多道程序设计的环境下,程序的并发的执行,以及为完成一项任务而相互合作,这些程序之间要共享系统的资源,形成相互制约的关系
- 相互制约导致并发程序具有“执行-暂停-执行”,这种间断性的活动规律
(2)、失去封闭性
- 程序在并发执行时,改变,程序运行失去封闭性。——程序的运行受到其他程序的影响
(3)、不可再现性
- 程序在并发执行时,多次运行初始条件相同的同一程序得出不同的运行结果
-
- 共享公共变量的两个程序,他们执行时可能产生不同结果
2.2进程的描述
1、进程的特征和定义
- 在多道程序设计的环境下为了描述程序在计算机系统内的执行情况,必须引入新的概念–进程
1)进程的定义
- 进程:程序关于某个数据集合的一次执行过程
进程的其他定义
- 行为的一个规则叫做程序,程序在处理机上执行时所发生的活动称为进程(Dijkstra)
- 进程是这样的计算部分,它可以和其他计算机并行的一个计算
- 进程(有时称为任务)是一个程序与其数据一道通过处理机的执行所发生的活动(Alan.C.Shaw)
- 进程是执行所中发生的活动
- 进程是执行中的程序
2)进程的特征(与程序比较)
- 1、结构特征
-
- 进程控制块(PCB)+程序+数据=进程实体
- 2、动态性——最基本的特征
-
- 进程:进程实体的一次执行过程,有生命周期
-
- 程序:程序是一组有序指令的集合,是静态的概念
- 并发性
- 独立性
- 异步性
-
- 进程按各自独立的、不可预知的速度向前推进
2、进程的三种基本状态
进程的三种基本状态
(1)、就绪状态(Ready)
- 进程已获得除CPU之外的所有必须的资源,一旦得到CPU控制权,立即可以运行
(2)、运行状态(Running)
- 进程已获得运行所必需的资源,它的程序正在处理机上执行
(3)、阻塞状态(Blocked)
- 正在执行的进程由于发生某事件而短暂无法执行时,便放弃处理机而处于暂停状态,称该进程处于阻塞状态或等待状态。
3、挂起状态
1)引起挂起状态的原因:
- 终端用户的请求
- 父进程请求
- 负荷调节的需要
- 操作系统的需要
2)进程状态的转换
- 引起挂起状态后,增加挂起状态(静止状态)到非挂起状态(活动状态)的转换,或者相反
2.2进程的描述
2.2.4 进程管理中的数据结构
1、进程控制块(PCB)的作用
- 进程控制块的作用
-
- 存放进程管理和控制信息的数据结构成为进程控制块。它是进程管理和控制的最重要的数据结构,在创建时,建立PCB,并伴随进程运行的全过程,直到今后才能撤销而撤销。PCB就像我们的户口
- PCB是进程存在的唯一标志
-
- 系统的所有PCB组织成链表或队列,常驻内存的PCB区
2、进程控制块中的信息
1)进程标识符
- 每个进程都必须有一个唯一的标识符
-
- 内部标识符
-
- 外部标识符
2)处理机的状态
- 处理机状态信息主要由处理机的各种寄存器中的内容组成,处理机运行时的信息存放在寄存器中,当被中断时这些信息要存放在PCB中。
3、进程控制块的组织信息
4、进程控制块
2.4进程同步
1、进程间两种形式的制约关系
- 间接相互制约关系——源于资源共享
- 直接相互制约关系——源于进程合作
临界资源——互斥访问
生产者——消费者问题
- 生产者进程和消费者进程都以一部方式运行
- 但他们之间必须保持同步
item buffer[n]; //用数组表示具有n个缓冲区的缓冲池
int in=0,out=0;
// 输入指针in指示下一个可能投放产品的缓冲区,输出指针out指示下一个可从中获取产品的缓冲区,初值//均为
counter=0;//初始值为0,,放入产品使其加0,取出产品使其减1
/*
缓冲池组织为循环缓冲,
*/
#### 同步机制应遵循的规则
- 忙则让进
- 忙则等待
- 有限等待
- 让权等待
2.4.3信号量机制
1、整形信号量
- 定义:整形量,除初始化外,仅能通过两个原子操作来访问
- P操作
wait(S):
while(S<=0) do no-op;
S--;
- V操作
signal(S):
S++;
- P,V操作是原子操作,不可中断
用信号量机制实现互斥的模式
semaphore mutex=1;
begin
parbegin
process 1:begin
repeat
wait(mutex);
critical section;
signal(mutex);
remainder section
until false;
end
process 2:begin
repeat
wait(mutex);
critical section;
signal(mutex);
remainder section
until false;
end
parend