进程间通信---信号量

本文介绍了进程间通信中的基本概念,如临界资源、临界区、进程互斥与同步,并通过火车售票系统和司机售票员问题阐述了同步的重要性。接着详细讲解了信号量的概念,包括其作为计数器的本质、信号量结构体、P、V操作及信号量相关函数如semget、semctl和semop。最后,展示了如何利用信号量解决售票系统和司机售票员问题,确保资源的正确访问和操作。

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

1.基本概念

(1)临界资源:系统内某些资源一段时间内只能被一个进程使用,称这样的资源为临界资源。

(2)临界区:在进程中涉及到互斥资源的程序段称为临界区。

(3)进程互斥:某些资源在被一个进程访问时,其他进程要想访问就必须等待,当资源被访问完了之后才可以被其他进程访问。

(4)进程同步:多个进程相互配合共同完成一项工作。

(5)互斥实例

火车票售票例子:

  • 有两个进程A进程、B进程,火车票有x张,每买一张票,票数x就减1,直到票买完为止。
  • 当两个进程单个使用时没有问题,可当在一起使用时就容易出错。
  • 比如只剩一张票了x=1,A进程检测到票数x>0,在准备出票时A进程中断,因为还没有出票,所以x=1;
  • 此时B进程检测到票数x>0,则出票,出票之后x=0;
  • 此时A进程回来,因为之前已经判断过X>0所以不再做判断,直接出票,表明这一张票被出了两次,不符合现实。

(6)同步实例

司机与售票员的例子:司机要等到售票员关门之后才能启动车辆;司机在行驶的过程中售票员售票;司机到站了就停车,等司机停车后售票员开门。但是无法确保司机与售票员一定要按照上述步骤进行。

 

2.信号量

(1)本质:信号量的本质就是一个计数器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值