一、相关进程与无关进程
1.相关进程:在逻辑上具有某种联系的进程
2.无关进程:在逻辑上没有联系的进程
3.举例:
(1)为两个不同的源程序进行编译的进程,它们可以并发执行,但它们之间无关
(2)三个进程,分别是读数据进程、处理数据进程、打印结果进程,它们相互依赖、相互合作,是一组相关进程。
二、与时间有关的错误
对于相关进程来说,可能有若干并发进程同时使用共享资源,即一个进程一次使用未结束,另一进程也开始使用,形成交替使用共享资源。
结果:形成与时间有关的错误
三、进程的同步
进程的同步:
是指进程之间一种直接的协同工作关系,一些进程相互合作共同完成一项任务。
例如:
进程A从硬盘上读记录,每读出一个记录就存入缓冲区,进程B从缓冲区中取出记录加工,直至所有记录处理结束。
直接制约关系:A若没有把记录读入缓冲区,B等待,反之,B若没有从缓冲区取出记录,A等待。
在系统中,许多进程常常需要共享资源,而这些共享资源往往需要排他性的使用,即一次只能为一个进程服务,因此,各进程只能互斥使用这些资源,进程间的这种关系就是进程的互斥。
例如:
多个进程竞争使用打印机、一些变量、表格等资源。
进程间的互斥是一种间接制约关系
三、临界区
1.临界资源:
若在系统中的某些资源一次只允许一个进程使用,则这类资源称为临界资源或共享变量。
2.临界区:
访问临界资源的那段代码。
3.相关临界区:
如果有若干进程共享某一临界资源(书上临界区,错误,改正),则该临界区称为相关临界区
4.相关临界区的调度使用原则:
(1)当临界资源(书上是临界区,请改正)空闲时,若有一个进程要求进入临界区,应允许它立即进入。---有空让进,有效利用资源。
(2)若有一个进程已在临界区,其他要求进入临界区的进程必须等待。---无空等待,互斥进入
(3)当没有进程在临界区,而同时有多个进程要求进入临界区,选择其一进入,其他等待。---多种择一
(4)任一进程进入临界区的要求应在有限时间满足---有限等待,避免死等。
(5)处于等待状态的进程应放弃占用处理器。---让权等待,避免盲等。
四、信号量
1.信号量的提出
1965年,荷兰学者Dijkstra首先提出关于信号量的概念,他把信号量定义为一个用于表示资源数目的整型量S,与一般整型量不同,除初始化外,仅能通过两个标准的操作P操作和V操作来访问。
2.P、V操作的使用
放在程序中,用P(S)和V(S)表达,实现进程间的同步与互斥。
五、P、V操作
1.P操作定义:
P(S)
{
S=S-1;
若S<0,将该进程状态置为等待状态,然后将该进程的PCB插入相应的S信号量等待队列队尾,直到有其他进程在S上执行V操作为止;
}
2.V操作定义:
V(S)
{
S=S+1;
若S<=0,唤醒在S信号量队列中等待的一个进程,将其状态改变为就绪态,并将其插入就绪队列;
执行本操作的进程继续执行;
}
六、信号量与P、V操作的物理含义
信号量S表示某类可用的资源。对于不同的资源,用不同的信号表示。
S>0时,S表示某类资源的可用数量
S<0时,其绝对值表示排在S等待队列中进程的数目。
执行一次P操作,表示请求一个资源;
执行一次V操作,表示进程释放一个资源。
七、用P、V操作实现进程之间的互斥
假设有进程A、B竞争进入临界区,用P、V操作实现进程之间的互斥。
首先定义互斥型信号量S,并使之初值为1
八、用P、V操作实现进程间的同步
解决思路:
如果有两个进程同步,设置两个信号量S1、S2,初始值可以设为0.为了表达同步,同一信号量的P、V操作分属于两个进程。
例如:
有三个进程,进程get从输入设备上不断读取数据,并放入缓冲区buffer1;进程copy不断地将缓冲区buffer1中的内容复制到缓冲区buffer2;进程put则不断将buffer2中的内容在打印机上输出。
三者的制约关系:
get进程必须先从设备读数据到buffer1;copy进程才能从buffer1复制内容到buffer2;最后put进程才能打印buffer2的内容。
反之,copy进程从buffer取走数据之后,get进程才能继续从设备读数据到buffer1;put进程从buffer2取走数据之后,copy进程才能复制buffer1的数据到buffer2.故可以设置四个信号量来保证三者的执行顺序。
信号量设置:
S1:初值为1,保证get进程能够从设备读数据到buffer1.
S2:初始值为0,copy进程能否将buffer1的内容复制到buffer2;
S3:初始值为0,put进程能否将buffer2的内容打印输出。
S4:初始值为1,保证buffer2缓冲区可以使用
九、信号量及P、V操作总结
1.P、V操作必须成对出现
2.互斥操作时,P、V操作出现在同一个进程
3.同步操作时,P、V操作出现在不同进程
4.既有同步,又有互斥操作时,同步信号量P操作在前,互斥信号量P操作在后,V操作顺序不限。