操作系统信号量
2018-04-22 18:10:10 0 举报
AI智能生成
操作系统信号量的一些整理
作者其他创作
大纲/内容
why
互斥
独木桥过车问题
同步
生产者和消费者问题
how
PV操作:PV操作由P操作原语和V操作原语组成
(原语也叫原子操作Atomic Operation,是不
可中断的过程,对信号量进行操作。
(原语也叫原子操作Atomic Operation,是不
可中断的过程,对信号量进行操作。
P(S):
1:将信号量S的值减1,即S=S-1;
2:如果S>=0,则该进程继续执行;
否则该进程置为等待状态。
1:将信号量S的值减1,即S=S-1;
2:如果S>=0,则该进程继续执行;
否则该进程置为等待状态。
V(S):
1:将信号量S的值加1,即S=S+1;
2:该进程继续执行;如果该信号的
等待队列中有等待进程就唤醒等待进程。
1:将信号量S的值加1,即S=S+1;
2:该进程继续执行;如果该信号的
等待队列中有等待进程就唤醒等待进程。
PV操作解决互斥问题:
设信号量为S,初值为1
PV操作如下:
进程P1: 进程P2
{ {
P(S); P(S);
访问资源; 访问资源;
V(S); V(S);
} }
PV操作如下:
进程P1: 进程P2
{ {
P(S); P(S);
访问资源; 访问资源;
V(S); V(S);
} }
PV操作解决同步问题:
设两个信号量:S生,S消。
初值为S生=1(代表仓库是否为空,只有仓库为空,生产者才能往里面放物品)
S消=0(代表仓库是否为满,只有仓库是满的,消费者才能从里面取物品)
PV操作如下:
生产者: 消费者:
while(true) while(true)
{ {
生产一个产品; P(S消);//判断仓库是否为满
P(S生);//判断仓库是否为空 取走物品;
产品送入仓库; V(S生);//通知生产者仓库已空
V(S消);//通知消费者仓库已满 消费者使用物品;
} }
初值为S生=1(代表仓库是否为空,只有仓库为空,生产者才能往里面放物品)
S消=0(代表仓库是否为满,只有仓库是满的,消费者才能从里面取物品)
PV操作如下:
生产者: 消费者:
while(true) while(true)
{ {
生产一个产品; P(S消);//判断仓库是否为满
P(S生);//判断仓库是否为空 取走物品;
产品送入仓库; V(S生);//通知生产者仓库已空
V(S消);//通知消费者仓库已满 消费者使用物品;
} }
PV操作解决互斥加同步问题:
注意:在使用PV操
作之前,首先要分清
哪些是互斥问题(互斥访问临 界资源),
哪些是同步问题(具有前后执行顺序要求).
哪些是互斥问题(互斥访问临 界资源),
哪些是同步问题(具有前后执行顺序要求).
如何定义信号领的个数以及初值:
互斥问题:互斥问题要设互斥信号量,
不管有互斥关系的进程有几个和几类,
通常只设置一个信号量,且初值为1,
代表一次只允许一个进程对临界资源
访问。例外:当资源的种类有多种,
信号量的个数是由资源类数决定的,
初值由资源个数决定。
不管有互斥关系的进程有几个和几类,
通常只设置一个信号量,且初值为1,
代表一次只允许一个进程对临界资源
访问。例外:当资源的种类有多种,
信号量的个数是由资源类数决定的,
初值由资源个数决定。
同步问题:同步问题要设同步信号量,
通常同步信号量的个数与参与同步的
种类有关,即同步关系涉及几类进程
,就有几个信号量。同步信号量表示
该进程是否可以开始或该进程是否已
经结束。
通常同步信号量的个数与参与同步的
种类有关,即同步关系涉及几类进程
,就有几个信号量。同步信号量表示
该进程是否可以开始或该进程是否已
经结束。
who
E.W.Dijkstra
生平
艾兹格·W·迪科斯彻 (Edsger Wybe Dijkstra,
1930年5月11日~2002年8月6日)荷兰人。
计算机科学家,毕业就职于荷兰Leiden大学,
早年钻研物理及数学,而后转为计算学。
曾在1972年获得过素有计算机科学界的诺
贝尔奖之称的图灵奖,之后,他还获得过
1974年 AFIPS Harry Goode Memorial Award、
1989年ACM SIGCSE计算机科学教育教学杰出贡献奖、
以及2002年ACM PODC最具影响力论文奖。
1930年5月11日~2002年8月6日)荷兰人。
计算机科学家,毕业就职于荷兰Leiden大学,
早年钻研物理及数学,而后转为计算学。
曾在1972年获得过素有计算机科学界的诺
贝尔奖之称的图灵奖,之后,他还获得过
1974年 AFIPS Harry Goode Memorial Award、
1989年ACM SIGCSE计算机科学教育教学杰出贡献奖、
以及2002年ACM PODC最具影响力论文奖。
成就
提出“goto”有害论
提出信号量和PV原语
解决了哲学家聚餐问题
Dijkstra最短路径算法和银行家算法的创造者
第一个Algol 60编译器的设计者和实现者
THE操作系统的设计者和开发者
与D. E. Knuth并称为我们这个时代最伟大的计算机科学家的人
what
信号量的定义:信号量(Semaphore),
相当于一个信号灯,代表一种状态。
每个信号量至少须记录两个信息:
信号量的值和等待该信号量的进程队列。
相当于一个信号灯,代表一种状态。
每个信号量至少须记录两个信息:
信号量的值和等待该信号量的进程队列。
整形信号量
信号量的初值为非负的整数。当其值>=0的时候,表
示系统中对应资源的数目,当其值<0时,其绝对
值表示因该资源而被阻塞的的进程数目,当其值等于
0时,表示系统中对应资源都已经被占用,并且没有
因等待该资源而被阻塞的的进程。
示系统中对应资源的数目,当其值<0时,其绝对
值表示因该资源而被阻塞的的进程数目,当其值等于
0时,表示系统中对应资源都已经被占用,并且没有
因等待该资源而被阻塞的的进程。
记录型信号量
每个信号量s除一个整数值s.value(计数)外,
还有一个进程等待队列s.L,其中是阻塞在该
信号量的各个进程的标识
还有一个进程等待队列s.L,其中是阻塞在该
信号量的各个进程的标识
二进制信号量
信号量的初值只能为0或1
0 条评论
下一页