Linux学习(10)-进程间通信(IPC)2-信号量

本章学习内容

1.信号量的基本概念

2.信号量的使用

一、信号量的基本概念

信号量(相当于程序的红绿灯对程序进行控制,同步进程)

(1)概念:信号量是特殊的变量,值>=0  信号量值减1代表获取资源(p操作),+1代表释放啊资源(v操作)

信号量数值如果只为0,1代表二值信号量,如果值大于1代表计数信号量

  (2)临界资源:同一时刻,只允许被一个进程或线程访问的资源

        临界区:访问临界资源的代码段

  (3)信号量相关函数

semget()获取已存在的信号量             semop()对信号量进行改变(p、v操作)

semctl()控制信号量(初始化、删除)

(4)ipcs  查看当前使用的信号量、共享内存、消息队列

二、信号量的使用

目的通过信号量控制两个函数输出实现类似打印机功能(类似于:1号电脑使用打印机,2号电脑不能访问使用打印机,等1号用完后,2号才可以使用打印机,一个时间段只能有一个电脑使用)

1.信号量的创建

(1)信号量头文件

信号量.c文件

 

 

 

 如上代码我们通过p/v操作来控制信号量信号量,初始信号量值为1

a进程与b进程模拟访问打印机

a进程

 

 这里我们a进程模拟打印机输出“A”

b进程

 

 b进程模拟打印机输出“B”

预期:我们同时运行a进程和b进程,初始化时信号量初始值为1,当a进程先运行时,先进行p(-1)操作,(因为a进程p操作将信号量值改为0,所以b进程此时不能运行,当前运行为a操作),通过a进程我们在屏幕输出A且成对出现,当进程将要结束时,进行v(+1)操作,信号量值改为1,此时a/b进程都可以操控打印机(信号量操控“打印机”ab进程不能同时使用)

结果:

 

 如上结果中A与B成对出现,实现成功(信号量控制同一时刻只能有一个进程使用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值