简单介绍《计算机》经典同步问题
树图思维导图提供 《计算机》经典同步问题思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 《计算机》经典同步问题思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:17a554515f6166d0ec75c9d2b4f441a2
进程同步思维导图模板大纲
信号量机制
整型信号量
整型信号量被定义为一个用于表示资源数目的整型量S
缺点
只要信号量S<=0,就会不断测试,违背“让权等待”原则
记录型信号量
不存在“忙等”现象的进程同步机制
数据结构
用于表示资源数value、等待资源的等待队列
原语
wait(S);申请一个资源,资源数S<0,进程自我阻塞,放到等待队列
signal(S);释放一个资源,若资源数此时S<=0,唤醒一个进程
作用
实现互斥
进程间互斥访问临界区
设置信号量 semaphore = 1;
实现前驱关系
实际上就是实现同步、只是不同语句之间的次序不同,需要设置多个信号量,且都为0;
实现同步
进程间执行具有先后次序
设置信号量 semaphore = 0;
分析过程
①找出进程数、分析是同步问题还是互斥问题,还是同步互斥的综合问题
②确定进程执行的次序(同步),资源数、
③设置信号量,S=0(同步),S=1(互斥),S=n(资源数)
定义
解决同步互斥问题的机制
经典同步问题
读者-写者问题
读者和写者互斥访问文件资源,写者和写者、读者都为互斥关系、但读者不互斥读文件资源
解决写进程“饿死”的方法
读写公平法
相对公平、写进程没有绝对优先
设置计数器count = 0;当一个读者进来count++,一个读者出去count--;最后一个读者释放临界区资源
写进程容易“饿死”
哲学家进餐问题
哲学家与左右邻居是互斥关系,让一位哲学家拿到左右两根筷子但又不造成饥饿或死锁
解决办法
至多允许4名哲学家同时进餐
哲学家互斥拿筷子
吸烟者问题
系统有三个吸烟者一个供应者,吸烟者分别有烟草、胶水、纸,供应者提供这些物品两两的组合,一次提供一种,三个吸烟者轮流吸烟
供应者与吸烟者是同步关系,吸烟者是互斥关系
生产者-消费者问题
生产者和消费者既存在同步关系、也存在互斥关系
生产者生产了、消费了才能消费(同步)
两者互斥访问临界区——缓冲区(互斥)