操作系统 第二章 4 信号量基本应用

1、实现进程互斥

注意:

  • 互斥信号量mutex初值为1
  • 每个进程中将临界区代码置于P(mutex)和V(mutex)原语之间;
  • 必须成对使用P和V原语(在同一进程中),不能次序错误、重复或遗漏: 遗漏P原语则不能保证互斥访问 遗漏V原语则不能在使用临界资源之后将其释放(给其他等待的进程);

seamphore  m=1;

void main()

{cobegin p1; cobegin p2; } 

p1{ wait(m); user r; signal(m); }

p2{ wat(m); user r; signal(m); }

2、实现进程有序

注意:

  • 信号量值为0的点是限制的关键所在;
  • 成对使用P和V原语(在有先后关系的两个进程中),不能次序错误、重复或遗漏,否则同步顺序出错。

    并发执行的进程P1和P2中,分别有代码C1和C2,要求C1要在C2开始前完成; 为每对前趋关系设置一个同步信号量S12,并赋初值为0。则只有V操作所在进程获得cpu时能运行。

用可能错误的顺序验证:

ep:

 

设有一供者和一用者,如何用信号量来控制二者对缓冲区的同步使用。

 

seamphore  s=0;

void main()

{cobegin p1; cobegin p2; } 

p1{ f=c1();   signal(s); }

p2{ wat(s);  c1(f); }

 

 

3、实现计数控制

seamphore  s=5(个数,这里假设是5);

void main()

{cobegin p1; cobegin p2; } 

p1{wat(s);  user  r;}

p2{ wat(s);    user  r;}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值