《操作系统教程》第5版-Chapter3-同步通信与死锁知识点整理
A级: 死锁: ***定义:一个进程集合内 每个进程都在等待 只能由此集合中的 其他进程才能引发的事件 ,而 无限期僵持 的现象 ***死锁产生的原因: 进程推进顺序不当 PV使用不妥 资源分配不均 资源使用不加限制 ***死锁的条件: 互斥 占有和等待 不剥夺 循环等待 ***解决方法: 死锁防止,死锁避免,死锁检测和恢复 死锁预防 : 静态分配 ——破坏条件 占有和等待 按序分配,层次分配 ——破坏 循环等待 死锁避免 银行家算法 —— 循环等待 死锁检测和恢复 资源剥夺 进程回退 进程撤销 系统重启 进程同步与互斥的解决: 信号量,管程,消息传递 *** 临界区 :进程中用于 访问临界资源 的代码。一次只允许一个程序访问 信号量PV: 信号中包括一个整形变量,和两个原子操作P和V,其原子性由操作系统保证,这个整形变量只能通过P操作和V操作改变。 P意味着信号量值减1,减完之后如果信号量值小于0,则说明资源不够用的,把进程加入等待队列。 V意味着信号量值加1,加完之后如果信号量值小于等于0,则说明等待队列里有进程,那么唤醒一个等待进程 管程 把 分散在各进程中的临界区集中起来进行管理 ,防止进程有意或无意的违法同步操作,便于用高级语言来书写程序 使用 条件变量 , wait() , signal() 管程的定义:管程是由局部于自己的若干公共变量