信号量集linux,4.6-4.7 Linux进程间通信机制-信号量集.pdf

Linux操作系统编程

信号量集

操作系统中任务资源共享情况

◼临界资源:在一段时间 Task1

内只允许一个任务访问 临界资源

的资源。诸任务间应采 Task2

取互斥方式,实现对资

源的共享。 Task1

◼共享资源:允许多个任 共享资源实例1

务同时访问同一种资源 Task2 ……

…… 共享资源实例n

的多个实例

Task m

2

信号量

◼信号量一般分为三种类型:

⚫互斥信号量:任务之间互斥访问临界资源

⚫计数信号量:任务之间竞争访问共享资源

⚫二值信号量:任务之间的同步机制

◼信号量是操作系统提供的管理资源共享的有效手段

◼信号量作为操作系统核心代码执行,其地位高于任务

,任务调度不能终止其运行

3

信号量的实现

◼信号量s一般包含以下成员:

⚫整数值s.count (实现资源计数)

⚫任务阻塞队列s.queue

◼信号量操作:初始化、P操作、V操作

⚫在进程初始化信号量将s.count指定为一个非负整数值,表

示可用的共享资源实例总数

◼运行中s.count可为负值(其绝对值表示当前等待访问

该共享资源的进程数)

4

信号量的实现

--s.count;//表示申请一个资源;

if (s.count <0)//表示没有空闲资源;

P操作 {

wait(s) 调用进程进入阻塞队列s.queue;

阻塞调用进程;

}

++s.count;//表示释放一个资源;

if (s.count <= 0)//表示有进程处于阻塞状态;

V操作

{

signal(s) 从等待队列s.queue中取出一个进程P;

进程P进入就绪队列;

5

}

互斥信号量

申请并获得

值减1等于0

初始化 可获得 不可获得

值为1

释放

值为1

互斥信号量状态图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值