A级:
死锁:
***定义:一个进程集合内每个进程都在等待只能由此集合中的其他进程才能引发的事件,而无限期僵持的现象
***死锁产生的原因:
进程推进顺序不当
PV使用不妥
资源分配不均
资源使用不加限制
***死锁的条件:
互斥
占有和等待
不剥夺
循环等待
***解决方法:死锁防止,死锁避免,死锁检测和恢复
死锁预防:
静态分配——破坏条件占有和等待
按序分配,层次分配——破坏循环等待
死锁避免
银行家算法——循环等待
死锁检测和恢复
资源剥夺
进程回退
进程撤销
系统重启
进程同步与互斥的解决:信号量,管程,消息传递
***临界区:进程中用于访问临界资源的代码。一次只允许一个程序访问
信号量PV:
信号中包括一个整形变量,和两个原子操作P和V,其原子性由操作系统保证,这个整形变量只能通过P操作和V操作改变。
P意味着信号量值减1,减完之后如果信号量值小于0,则说明资源不够用的,把进程加入等待队列。
V意味着信号量值加1,加完之后如果信号量值小于等于0,则说明等待队列里有进程,那么唤醒一个等待进程
管程
把分散在各进程中的临界区集中起来进行管理,防止进程有意或无意的违法同步操作,便于用高级语言来书写程序
使用条件变量,wait(),signal()
管程的定义:管程是由局部于自己的若干公共变量,及其说明和所有访问这些公共变量的过程所组成的软件模块
管程的属性
共享性
安全性
互斥性
***进程通信(IPC,Inter-Process Communication):
信号通信
信号量
管道通信
消息传递
共享内存
消息传递
两条原语:发送消息和接收信息
间接通信,发送或接收消息通过共享数据结构——信箱
管道:连接读写进程的一个特殊文件。允许进程按先进先出方式传送数据,也能够使进程同步执行操作
来源:CSDN
作者:什么你竟然不会敲代码
链接:https://blog.csdn.net/m0_37302219/article/details/104267799