管程机制处理进程同步问题
来源:互联网 发布:excel窗体录入数据 编辑:程序博客网 时间:2024/05/21 17:34
进程同步机制有很多,主要有PV操作和信号量,管程,以及消息传递等。
由于PV操作的使用分散在各个进程之中,不利于对临界资源的统一管理,还有PV操作的使用需要小心,若顺序不对,或忘一个没写,很容易陷入死锁,所以,管程就能解决上面问题。
管程的基本思路是:将分散在各个进程中的临界区集中起来进行统一控制和管理,并且将系统中的共享资源用数据结构抽象的描述出来,然后对临界区的访问通过管程进行统一管理
管程:就是由若干个数据结构、变量,以及方法(函数)所组织成的一种特殊的结构。
管程有以下特性:
①互斥性,任何时刻只能最多一个进程进入管程活动,其他想进入管程必须等待。
②安全性,管程中的局部变量只能由管程的方法或函数来访问,其他进程或管程是不能够对该局部变量进行直接访问
③共享性,管程中的特定的方法或函数可以被其他管程或进程访问,这样的方法或函数应该有特殊说明。
管程的一般结构:
struct Minitor{
管程内部的变量说明;
condition 条件变量列表;
define 函数或方法;
use 函数或方法; 外部函数,直接使用
void 函数名(){}
。。。
void 函数名(){}
void init(){ 对管程中的局部变量进行初始化;
}
};
在管程有一类特殊的变量称为条件变量,即condition变量。由于管程的访问具有互斥性,所以要引入条件变量,条件变量是管程的一种特殊的数据结构,在条件变量有两个相关操作wait()和signal()。他们都是原语,不可被打断
执行wait()原语的进程被阻塞,同时开放管程,将当前进程排在某条件变量的等待队列中,执行signal()原语,唤醒在对应条件变量的上的进程。
汉森方法实现管程:
wait()原语:即等待原语,当一个进程由于自身原因进行不下去了,就执行该原语,从而开放管程,自己进入阻塞态。
signal()原语:唤醒在相应条件变量上的等待进程队列的一个进程,执行signal()的进程要立即离开管程。
check()原语:检查管程是否可用,若可用,则进入,不可用,则进入等待调用状态。
release()原语:检查是否有等待调用的进程,若有,则唤醒该进程,无,则开放管程。
- 管程机制处理进程同步问题
- 管程机制处理进程同步问题
- 进程同步机制--管程机制
- 进程同步-管程
- 多进程同步,信号量、管程
- 多进程同步,信号量、管程
- 进程同步机制的优缺点比较,......同步机制包括 “原子操作 信号量机制 自旋锁 管程,会合,分布式系统”等
- 操作系统(四)同步互斥机制&管程&进程间通信
- 操作系统概念学习笔记 12 进程同步(二)管程
- 并发与同步、信号量与管程、生产者消费者问题
- 用java实现管程,解决进程互斥问题
- 进程 线程 管程
- 管程机制浅析
- 管程机制浅析
- MySQL主从同步机制及同步中的问题处理
- 进程同步机制
- 进程同步的机制
- 进程/线程 同步机制
- caffe cnn提取各层特征并可视化结果(Python接口)
- [Contests]2016弱校联盟十一专场10.7
- 工作组和域账户
- Python识别验证码的模块--- pytesser
- 显示和隐藏状态之间切换 slideToggle()
- 管程机制处理进程同步问题
- 运行时常量池
- leetCode No.417 Pacific Atlantic Water Flow
- hdu 2046 骨牌铺方格
- 第六天
- pkcs 常见证书格式及相互转换
- HTTP请求头各字段解释
- qt connect Qt::ConnectionType介绍
- matlab中find 函数