信号量的概念

信号量是一个记录型数据结构,用于管理资源,包括整型变量S表示资源数和等待队列。P操作减小信号量,可能导致进程等待;V操作增加信号量,可能唤醒等待进程。在互斥场景中,信号量初值设为1,可确保只有1个进程进入临界区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

信号量是由荷兰科学家Dijkstra提出的,是一种卓有成效的进程同步机制。

  信号量的定义

  信号量是一个记录型数据结构,包含信号量值和一个等待队列,其中信号量值是一个具有非负初值的整型变量,等待队列是一个初始状态为空的队列。又称信号灯。

  除信号量的初值外,信号量的值仅能由P操作(又称为wait操作)和V操作(又称为signal操作)改变。

  信号量的物理含义

  信号量中的整型变量S表示系统中某类资源的数目。

  当其值大于0时,表示系统中当前可用资源的数目;

  当其值小于0时,其绝对值表示系统中因请求该类资源而被阻塞的进程数目。

  P操作

  设S为一个信号量,P(S)执行时主要完成下述动作:

  S=S-1;

  if(S< 0) {设置进程状态为等待;

  将进程放入信号量等待队列;

  转调度程序;}

  V操作

  V(S)执行时主要完成下述动作:

  S=S+1;

  if(S≤0){将信号量等待队列中的第一个进程移出;

  设置其状态为就绪状态并插入就绪队列;

  然后再返回原进程继

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值