进程的同步(下)

一.利用信号量实现进程互斥
1.本质:source初始值只可以是1,一个进程在wait(source)成功后,进入自己的临界区同时访问这个临界资源——source,此时,第二个进程在执行wait(source)时后,无法进入他自己的临界区即执行wait失败,并且会进入阻塞区(此时wait=-1)(进程的基本状态转换问题,进程在遭遇‘请求某事件发生时’会由执行状态转换为阻塞状态),此时这个进程无法访问这个临界资源,因此实现了进程互斥。
2.实现进程互斥的信号量的取值情况:
(1)0:
第一个进程在临界区运行,在享用临界资源;
第二个进程还没有开始请求这个资源
(2)-1:
第一个进程处在临界区享用资源
第二个进程因等待这个临界资源而阻塞,进入了等待这个临界资源的阻塞队列
(3)1:
两个进程均未开始申请这个临界资源
3.wait(x)和signal(x)两者不可分割,要一起出现,包围临界区
4.阻塞队列从队尾进,队头的先出
5.对同一个信号量的P,V操作在同一个进程里放着
6.资源数(如打印机资源,打印机的台数)可>=0的任何整数数,进程数>=0的任何整数,不一定相等
7.注意信号量为负值时,绝对值是阻塞队列的进程数
8.多个进程

二.利用信号量实现前趋关系
1.进程的前趋关系含义:前面一个进程执行完了下一个进程才可以执行,顺序。
2.实现方法:
第一个进程后面加释放临界资源语句;signal(x);
非第一个进程前面加wait(x);
所有进程后面加signal(x);
3.

注意临界资源这个时候的初值:0


①因为第一个进程不用申请资源,并且他一下子就在临界区享受资源了。为了弥补从1到0这一步的缺乏。
②保证除了在前面的第一个进程之外的其他进程在申请资源时都是不成功的,都会进入阻塞队列,都无法在自己的临界区享受资源 。保证了顺序执行
4.代码框架:程序段+信号量————前趋关系
5.前趋图变并发进程组成的程序:
边数:信号量数
结点数:进程数
信号量初值:0
顺序执行性,并发性

三.利用信号量实现同步
1.性质:>=2个进程合作执行
2.几个进程就几个信号量
3.每个信号量的初始值自己设定
4.对同一个信号量的P,V各自在不同的进程里面
5.进程同步实现了进程互斥,一个进程不放,另一个进程就没法拿,实现了缓冲池在一个时间只可以被一个进程使用
6.描述进程同步的时候有多个进程

四.补充
1.信号量
①初始值设定只能为>=0
②他的值只可以由p(wait,申请资源,–),V(signal,释放资源,++)操作改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值