软考中级 软件设计师 第二章 第三节 进程的调度

目录

1、PV

1.1、进程的同步和互斥

1.1.1、互斥

1.1.2、同步

1.2、PV的操作

2、信号量与PV操作

2.1、互斥模型

2.2、同步模型

2.3、互斥与同步模型相结合

3、前趋图


1、PV

1.1、进程的同步和互斥

1.1.1、互斥

互斥即为千军万马过独木桥,只有一个进程能获取到资源,为间接制约关系

临界资源:各个进程间需要互斥方式对其进行共享的资源

临界区:进程中访问临界资源的那段代码称为临界区

1.1.2、同步

同步即为互相等待,可以同时获取资源,但有的进程快,有的进程慢,需要等待慢的进程,为直接制约关系

1.2、PV的操作

PV即为加锁与解锁,P为加锁,V为解锁,此为原子化操作,即加锁,解锁操作是同步发生,类似数据库事务操作,为何如此设定,在下文中会有详细说明

S为信号量,是全局变量。

  • 信号量可以表示资源数量
  • 信号量为负数时还可以表示排队进程数

PS即申请资源操作,或是称为锁定资源,分为两个步骤

  1. 申请/锁定资源,S-1
  2. 检查资源是否足够,看S<0

这两个步骤必须要同时进行,即原子化操作,否则会导致在检查资源数量时发生错误。

需要注意的是,因为S本身是先申请,后检查,所以只需要判断S不小于0即可保证资源足够。

VS即释放资源操作,或是称为解锁资源,分为两个步骤

  1. 申请/锁定资源,S+1
  2. 检查进程是否排队,看S≤0

若有排队,则通知进程从阻塞进入就绪。

2、信号量与PV操作

2.1、互斥模型

互斥,即多个线程抢夺一个可用资源。

在互斥模型中,PV操作是成对出现的,其中的信号量也就叫互斥信号量。

2.2、同步模型

同步模型涉及到多个线程之间的顺序协调。

典型的同步模型为生产者消费者模型,生产者生产产品PS1,送到缓冲区VS2,消费者从缓冲区中取到PS2,消费产品PS1。

产品在送到缓冲区之前,要检测缓冲区是否已满,如果满了,生产者将会阻塞。

产品在从缓冲区取之前,要检测缓冲区是否已空,如果空了,消费者将会阻塞。

S1的初值为1,S2的初值为0,它们都是同步信号量。

2.3、互斥与同步模型相结合

在某些同步模型中,缓冲区本身就是互斥的,那么就要将两者结合使用。

如果空间资源的初值为1,生产者消费者模型,生产者生产产品PS1,此时加锁PS,然后解锁VS,送到缓冲区VS2,消费者从缓冲区中取到PS2,此时加锁PS,然后解锁VS,消费产品PS1。

S信号量控制的是临界资源,即缓冲区的访问权。

S的初值为1,允许使用状态,互斥信号量。

S1的初值为1,S2的初值为0,它们都是同步信号量。

如果空间资源的初值为M,那么S1的初值将变为M

3、前趋图

前趋图是一种顺序图,同级的节点代表着同一顺序,不同级别的节点代表着不同的顺序。

A,B,C是同级节点,D是下级节点,E,F又是同级节点,G是下级节点,这样先后顺序就很明了。

在整个前趋图中,只能从ABC三个节点开始,那么该如何进行控制呢?

在D节点处,使用P操作,对ABC节点进行检查,即PA,PB,PC。检查前趋资源。

在ABC节点处,通知资源,即VA,VB,VC。

对于EF节点来说,一样需要前趋活动PD

对于D节点,一样需要后继活动,VE,VF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值