信号量与管程

本文介绍了信号量机制,包括信号量的定义、P和V操作的原语,以及其在进程互斥中的应用。接着,讨论了管程作为集中式同步进程的特性,如模块化、抽象数据类型和信息掩蔽,以及管程中的等待队列和等待、唤醒操作。管程提供了一种更易于维护和保证正确性的同步方式。
摘要由CSDN通过智能技术生成

1.信号量: 

1)信号量的定义:

每个信号量至少须记录两个信息:信号量的值和等待该信号量的进程队列。它的类型定义如下:(用类PASCAL语言表述)
    semaphore = record
         value: integer;
         queue: ^PCB;
       end;
  其中PCB是进程控制块,是操作系统为每个进程建立的数据结构。
s.value>=0时,s.queue为空;
s.value<0时,s.value的绝对值为s.queue中等待进程的个数

2)P,V原语:

对一个信号量变量可以进行两种原语操作:p操作和v操作,定义如下:   procedure p(var s:samephore);
     {
       s.value=s.value-1;
       if (s.value<0) asleep(s.queue);
     }
  procedure v(var s:samephore);
     {
       s.value=s.value+1;
       if (s.value<=0) wakeup

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值