操作系统 --进程同步互斥之信号量机制(五)
信号量机制 --图
信息量其实就是一个变量(一个整数,也可以是更复杂的记录变量),可以用一个信号量表示系统中某种资源的数量。比如:系统中只有一台打印机,就可以设置为1的信号量
用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而实现进程互斥,进程同步
一对原语:wait(s) 和 signal(s) 简称P、V 操作(来自荷兰语proberen,verhogen)
原语:是一种特殊的程序,最接近底层硬件,其执行操作只能一气呵成,不能被中断。是由关中断 / 开中断指令实现的。软件解决方案的主要问题就是进入区的操作不能一气呵成,因此把进入区、退出区的操作都用原语来实现,就能避免问题
1、整型信号量
2、记录型信号量
例子:
1、p0执行,wait操作s.value--,剩余资源1,切换p1 等待队列 null
2、p1执行,wait操作s.value--,剩余资源0,切换p2 等待队列 null
3、p2执行,wait操作s.value--,剩余资源-1表示有1进程等待,执行wait里block操作进入等待队列 等待队p2
4、p3执行,wait操作s.value--,剩余资源-2表示有2进程等待,执行wait里block操作进入等待队列 等待队p2->p3
5、p0执行,signal操作s.value++,剩余资源<0表示有进程等待,执行signal里wakeup操作唤醒等待队列队头p2进程 等待队列p3
6、p2执行,signal操作s.value++,剩余资源<0表示有进程等待,执行signal里wakeup操作唤醒等待队列队头p3进程 等待队列null
7、p1执行,signal操作s.value++,剩余资源1 等待队列null
8、p3执行,signal操作s.value++,剩余资源2 等待队列null
解析:
信号机制实现进程互斥 --图
当没有进程在临界区时,任意一个进程要进入临界区执行P操作,把mutex--,然后进入临界区
而当有进程存在于临界区时,mutex的值为0,再有进程要进临界区,执行p操作将会被阻塞,直至在临界区中的进程推出
这样便实现了临界区的互斥
信号机制实现进程同步
进程同步:让各并发进程按要求有序地推进
简单总结:
同步问题中,信号量设为0,如果某个行为要用到某种资源,那么就再那个行为前面p那种资源,如果某个行为会提供某种资源,就再那个行为后面v那种资源(前操作之后V,后操作之前P)
互斥问题:信号量设为1,P、V操作要仅仅夹着使用互斥资源的那个行为(临界区),中间不能有其他冗余代码
信号机制实现前驱关系
- 【操作系统】进程(线程)间同步互斥问题——熟睡的理发师问题
- 操作系统--进程间的通信,同步和互斥等
- 【操作系统】进程(线程)间同步互斥问题——高校上机实习问题
- 操作系统的信号量 进程互斥 同步等概念
- 操作系统中进程互斥的方式之一,信号量机制
- 【操作系统总结】进程同步的信号量机制
- 操作系统--进程同步和互斥的概念
- 操作系统--进程的互斥与同步
- 操作系统:进程同步(2)信号量机制
- 操作系统--进程的互斥与同步
- 操作系统 进程/线程 同步与互斥
- 操作系统课程设计-线程和进程的同步与互斥
- 计算机操作系统之四:进程的互斥同步与通信
- 操作系统之进程互斥与同步和线程
- 操作系统原理---操作系统中进程同步和互斥的概念
- 操作系统课堂笔记(4)进程管理之进程同步与互斥
- 操作系统进程同步互斥经典问题之读者写者问题
- PV操作和信号量机制实现进程同步(对多个临界资源的互斥访问)
- [操作系统]复习四 进程 同步互斥 死锁
- PV操作和信号量机制实现进程同步(对多个临界资源的互斥访问)