【操作系统】信号量机制的应用
写在前面
- 关于文章
在前边学习了操作系统中进程管理中的进程概念、进程创建、进程并发、进程同步、信号量机制等相关内容,信号量(Semaphore)是另一种临界区的保护机制,它是操作系统提供的一种协调共享资源访问的方法。它将资源纳入全局考虑,从操作系统的层面对资源进行宏观的调配。
信号量Semphore中的整数sem就是这个系统资源剩余量。申请时减少,释放时增加即可,没有时等待分配,所以先进先出。具体的实现接口为P()和V(),分别是荷兰语(?)增加prolagg和减少verhoog的缩写。
在这里主要学习一下信号量机制的应用。
- 我的站点
- 联系我
🐧:
2410685763
WeChat:
Super_Baby_00
公众号:
编程那点事儿
信号量的应用
利用信号量实现进程互斥
为使多个进程互斥
的访问某临界资源,须为该资源设置一互斥信号量mutex
,并设其初始值为1
,然后将各进程访问资源的临界区CS置于wait(mutex)和signal(mutex)之间即可。
Var mutex: semaphore :=1; // 设置一互斥信号量mutex并设其初始值为1
begin
parbegin // 在parbegin~parend 之间有两个进程表示并发进程
process 1: begin
repeat
wait(mutex); // 进入区 执行P操作进行申请互斥资源
critical section // 临界区 申请到资源后进行使用
signal(mutex); // 退出去 资源使用完毕执行V操作
remainder section // 剩余区
until false;
end
process 2: begin
repeat
wait(mutex); // 进入区 执行P操作进行申请互斥资源
critical section // 临界区 申请到资源后进行使用
signal(mutex); // 退出去 资源使用完毕执行V操作
remainder section // 剩余区
until false;
end
parend
end
案例
用记录型信号量实现两个进程互斥使用一台打印机。
Var mutex: semaphore :=1; //表示打印机
begin
parbegin
p1: begin
repeat
wait(mutex);
使用打印机
signal(mutex);
remainder section;
until false;
end
p2: begin
repeat
wait(mutex);
使用打印机
signal(mutex);
remainder section;
until false;
end
parend
end
利用信号量实现前驱关系
案例
Var a, b, c, d, e, f, g; semaphore :=0, 0, 0, 0, 0, 0, 0; // 观察前驱关系图,有几个箭头就设置几个信号量
begin
parbegin
begin S1; signal(a); signal(b); end;
begin wait(a); S2; signal(c); signal(d); end;
begin wait(b); S3; signal(e); end;
begin wait(c); S4; signal(f); end;
begin wait(d); S5; signal(g); end;
begin wait(e); wait(f); wait(g); S6; end;
parend
end
利用记录型信号量实现同步
P1,p2两进程因合作完成一项任务而共用一个变量x。
进程p2将处理结果送入x;进程P1将x的结果打印。
案例
Var empty: semaphore :=1; // 设置信号量empty=1表示P1的print(x)已完成
Var full: semaphore :=1; // 设置信号量full=1表示P1可以打印x
begin
parbegin
// 进程P1将x的结果打印
p1: begin
repeat
… …
wait(full); // 首先执行P操作 判断full信号量即判断是否有数据
print(x); // 申请到full 表示有数据进行打印操作
signal(empty); // 打印操作完成后对empty信号量进行V操作
… …
until false;
end
// 进程p2将处理结果送入x
p2: begin
repeat
… …
wait(empty); // 首先执行P操作 判断empty信号量即判断是否为空
x:=处理结果; // 申请到empty 表示为空进行存入数据
signal(full); // 存入数据操作完成后对full信号量进行V操作
… …
until false;
end
parend
end
微信关注
阅读剩余
版权声明:
作者:理想
链接:https://www.imyjs.cn/archives/578
文章版权归作者所有,未经允许请勿转载。
THE END