4、进程同步:进程同步的概念和同步原则,临界资源和临界区的概念,信号量及其应用,经典进程同步问题
来源:互联网 发布:邮币卡交易平台软件 编辑:程序博客网 时间:2024/06/06 23:19
进程同步的概念
临界资源:许多硬件资源如打印机、磁带机等,都属于临界资源(CriticalResouce)临界区:人们把在每个进程中访问临界资源的那段代码称为临界区(critical section)repeat entry section critical section; exit section remainder section;until false;while(TRUE){ 进入区 临界区 退出区 剩余区}
同步机制应遵循的规则(同步原则)
空闲让进:当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源; 忙则等待:当已有进程进入临界区时,表明临界资源正在被访问,因而其它试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。 有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态。 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。
硬件同步机制
1、关中断:进程在临界区执行期间,计算机系统不响应中断,从而不会引发调度。2、Test-and-Set:原子操作(原语)3、Swap上述硬件指令能有效实现进程互斥,但当临界资源忙碌时,其他进程处于忙等状态,不符合“让权等待”
信号量机制
整型信号量 、记录型信号量、信号量集
整型信号量
把整型信号量定义为一个用于表示资源数目的整型量S 除初始化外,仅能通过两个标准的*原子操作*(Atomic Operation) wait(S)和 signal(S) 来访问 在整型信号量机制中的wait 操作,只要是信号量 S≤0,就会不断地测试。因此,该机 制并未遵循“让权等待”的准则------》记录型信号量
记录型信号量
采用了记录型的数据结构增加一个进程链表指针 L,用于链接上述的所有等待进程。
type semaphore = record value: integer; L: list of process; end procedure wait(S) var S:semaphore; begin S.value:=S.value-1; if S.value<0 then block(S.L); end procedure signal(S) var S: semaphore; begin S.value:=S.value+1; if S.value<=0 then wakeup(S.L); end
wait中“if S.value<0”表示资源不足 ,则进程进行变成阻塞状态,放弃处理机,并插入到信号量链表S.L中。signal中“if S.value<=0” 表示依然有因为没有得到资源而阻塞的进程,故“wakeup(S.L)”唤醒进程。
AND型信号量
(一个进程需要先获得两个或更多的共享资源后方能执行其任务) Swait(Simultaneous wait)
信号量集
原因:1、出现需要N 个某类临界资源的情况 2、在有些情况下,为了确保系统的安全,当资源数量低于某一下限值时,便不予以分配。方法:对AND信号量机制加以扩充,形成一般化的“信号量集” 机制。
信号量的应用
1.利用信号量实现进程互斥
semaphore mutex = 1; Pa(){ while{ wait(mutex); critical section signal(mutex); remainder seetion } } Pb(){ while{ wait(mutex); critical section signal(mutex); remainder seetion } }
2.利用信号量实现前趋关系
cobegin 和 coend 与 parbegin 和parend 一样 都是并发进程,并行开始、并行结束的意思。
P1(){S1;sign(a);sign(b)}P2(){wait(a);S2;sign(c);sign(d);}P3(){wait(b);S3;sign(e);}P4(){wait(c);S4;sign(f);}P5(){wait(d);S5;sign(g);}P6(){wait(e);wait(f);wait(g);S6}main(){ semaphore a,b,c,d,e,f,g; a = b = c = d = e = f = g = 0; cobegain P1();P2();P3();P4();P5();P6(); coend}
管程机制(Monitors)
阅读全文
0 0
- 4、进程同步:进程同步的概念和同步原则,临界资源和临界区的概念,信号量及其应用,经典进程同步问题
- 进程同步的基本概念:临界资源、同步和互斥
- 进程同步的概念
- PV操作和信号量机制实现进程同步(对多个临界资源的互斥访问)
- 进程间同步和互斥:临界资源
- 进程的同步,互斥和经典进程同步问题
- 进程间同步临界区的Peterson算法
- C++使用临界区实现进程同步
- 同步和临界区
- 操作系统的信号量 进程互斥 同步等概念
- 进程同步02--临界区问题(Critical Section Problem)
- 经典进程的同步问题
- 浅谈进程同步和互斥的概念
- 浅谈进程同步和互斥的概念
- 浅谈进程同步和互斥的概念
- 浅谈进程同步和互斥的概念
- 浅谈进程同步和互斥的概念
- 使用临界段实现优化的进程间同步对象-原理和实现
- 数据库性能对比测试实验
- Hibernate延时加载:属性延时加载与关系延时加载
- java反射机制
- python 中的数组转置和轴对称,T/transpose/swapaxes
- 11.3dairy
- 4、进程同步:进程同步的概念和同步原则,临界资源和临界区的概念,信号量及其应用,经典进程同步问题
- 欢迎使用CSDN-markdown编辑器
- 计算两个矩阵的乘积
- 无限极分类mysql存储过程编写实现调用时给定一个id,返回其所有父级与子级并排序
- C#其他
- [JZOJ5446]【NOIP2017提高A组冲刺11.3】高考是不可能高考的(2-SAT问题)【Atcoder regular context 069F】
- CTF中常见的php函数绕过(保持更新)
- 图灵奖
- 编写一个tf listener