进程同步详解(进程同步机制遵循规则信号量机制信号量的应用,经典进程同步问题)
Posted 有理想、有本领、有担当的有志青年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程同步详解(进程同步机制遵循规则信号量机制信号量的应用,经典进程同步问题)相关的知识,希望对你有一定的参考价值。
文章目录
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。点击这里
进程同步机制应遵循的规则
- 空闲让进
- 忙则等待(临界资源占用需等待)
- 有限等待(等待时间有限)
- 让权等待(让出CPU)
信号量机制
记录型信号量 ❤❤❤
typedef struct
int value;
struct process_control_block *list
semphore;
wait(semaphore *S)
S->value--; // 代表可用资源数-1
if (S->value<0)
block(S->list); // 若减1后小于0,则证明资源缺乏,故阻塞进程
signal(semphore *S)
S->value++; // 代表可用资源数+1
if(S->value<=0)
wakeup(S->list); // 若加1后小于等于0,证明有阻塞的进程,故唤醒1个
AND型信号量
将进程需要的资源一次性分配,运行完后一次性释放
Swait(S1,S2,S3...) //同时满足所有信号量S
Ssignal(S1,S2,S3...) //同时释放所有信号量S
信号量集
信号量的应用
实现进程互斥
为进程设置初始信号量 mutex = 1 ,将临界区置于wait(mutex)和signal(mutex)之间
实现前驱关系
设置共享信号量 S = 0,实现先P1,后P2
S = 0
P1:
语句1;
...
signal(S)
P2:
wait(S)
语句1;
...
利用记录型信号量实现同步
semaphore empty = 1;
semaphore full = 0;
begin
parbegin
p1:begin
repeat
......
wait(full)
print(x) # 默认将x打印完后销毁
signal(empty)
......
until
end
p2:begin
repeat
......
wait(empty);
x:=处理结果 # x重新创建赋值
signal(full);
until false;
end
......
经典进程同步问题
以上是关于进程同步详解(进程同步机制遵循规则信号量机制信号量的应用,经典进程同步问题)的主要内容,如果未能解决你的问题,请参考以下文章
操作系统(二 )| 进程(概念特征状态进程控制进程同步机制信号量应用同步机制遵循规则程序执行特点线程引入目的与进程的区别)
操作系统 王道考研2019 第二章:进程管理 -- 信号量机制(整型 / 记录型信号量)原语P / V操作用信号量机制实现进程互斥同步前驱关系