操作系统学习:进程管理(续)

进程互斥的软件实现方法

操作系统学习:进程管理(续)_第1张图片

单标志法

操作系统学习:进程管理(续)_第2张图片
有一个需要注意的点就是,注意上图中的while是一个死循环,因为while括号后面是一个分号。
但是单标志法也有问题:
在这里插入图片描述

双标志先检查法

双标志后检查法

Peterson算法


操作系统学习:进程管理(续)_第3张图片
操作系统学习:进程管理(续)_第4张图片

回顾

操作系统学习:进程管理(续)_第5张图片

进程互斥的硬件实现方法

总览

操作系统学习:进程管理(续)_第6张图片

中断屏蔽方法

操作系统学习:进程管理(续)_第7张图片

TestAndSet指令

Swap指令

操作系统学习:进程管理(续)_第8张图片

回顾

操作系统学习:进程管理(续)_第9张图片

信号量机制(记录型信号量重点)

总览

操作系统学习:进程管理(续)_第10张图片

信号量机制

操作系统学习:进程管理(续)_第11张图片

信号量机制—整型信号量

操作系统学习:进程管理(续)_第12张图片

信号量机制—记录型信号量

操作系统学习:进程管理(续)_第13张图片
以下面的例子进行解释(注意结合上面图中的wait和signal原语代码部分进行分析):
操作系统学习:进程管理(续)_第14张图片
现在假设CPU为P0进程服务,则会调用wait原语,先对value进行-1,然后系统判断此时是有打印机资源的,于是分配一台打印机给P0:
操作系统学习:进程管理(续)_第15张图片

然后假设CPU切换到了P1进程,同样的,执行wait原语,进行value-1,系统分配一台打印机资源给P0进程,此时value为0了,因为两台打印机都分配完了:
操作系统学习:进程管理(续)_第16张图片
然后CPU又到了P2进程,执行wait原语,value-1导致value的值现在为-1,结合代码可以知道,当value小于0时,说明此时系统内没有剩余的资源可以给P2了,所以P2进程会被block原语所阻塞,并被挂到等待队列L当中:
操作系统学习:进程管理(续)_第17张图片
接下来CPU又为P3进程服务,同理如下:
操作系统学习:进程管理(续)_第18张图片
假设现在CPU又到了为P0服务,P0在使用完打印机之后,执行signal原语,结合代码可以知道,在signal原语中首先会对value+1,所以value由原来的-2变为-1,因为现在-1依然小于等于0,就意味着在等待队列当中依然还有进程正在等待使用这个资源,所以P0进程会在signal原语当中进行一个wakeup原语的操作来唤醒等待队列当中位于队头的进程,并将打印机资源分配给它:
操作系统学习:进程管理(续)_第19张图片
下面的分析都是依葫芦画瓢,不再赘述。
总结一下记录型信号量:

回顾

操作系统学习:进程管理(续)_第20张图片

用信号量机制实现进程互斥、同步和前驱关系

信号量机制实现进程互斥

信号量机制实现进程同步

什么是进程同步?
操作系统学习:进程管理(续)_第21张图片

信号量机制实现前驱关系

操作系统学习:进程管理(续)_第22张图片

回顾

操作系统学习:进程管理(续)_第23张图片

生产者消费者问题

问题描述:
操作系统学习:进程管理(续)_第24张图片
上图中假设缓冲区的大小为5。
依照题目的意思,现在缓冲区是空的,所以生产者可以把产品放入缓冲区中:
操作系统学习:进程管理(续)_第25张图片
如上图中显示,此时缓冲区已经满了,所以生产者无法再往里面冲入产品:
操作系统学习:进程管理(续)_第26张图片
同样,只有缓冲区不为空时,消费者才能从中取出产品,否则必须等待。


根据上述分析,我们设置信号量如下:
在这里插入图片描述

如何实现



最好是不要将不相关的代码放到临界区代码之中(即PV操作之间),因为这会降低进程的并发度。

回顾

操作系统学习:进程管理(续)_第27张图片

多生产者-多消费者问题

问题描述

操作系统学习:进程管理(续)_第28张图片

问题分析

代码实现

在这里插入图片描述
思考下面的问题:


总结一下:
操作系统学习:进程管理(续)_第29张图片

吸烟者问题

问题描述

操作系统学习:进程管理(续)_第30张图片

问题分析


操作系统学习:进程管理(续)_第31张图片

代码实现

操作系统学习:进程管理(续)_第32张图片
总结一下:
操作系统学习:进程管理(续)_第33张图片

读者-写者问题

问题描述

问题分析

代码实现

操作系统学习:进程管理(续)_第34张图片
但是上面的代码会有以下问题:
操作系统学习:进程管理(续)_第35张图片
解决办法如下:
操作系统学习:进程管理(续)_第36张图片
所以最后的完整版代码如下:
操作系统学习:进程管理(续)_第37张图片
但是这样的解决方式也有弊端:
操作系统学习:进程管理(续)_第38张图片
解决的方法同之前的一样,再加一个互斥信号量即可:
操作系统学习:进程管理(续)_第39张图片
总结一下:
操作系统学习:进程管理(续)_第40张图片

哲学家进餐问题

问题描述

问题分析

错误方式如下:
操作系统学习:进程管理(续)_第41张图片

代码实现

操作系统学习:进程管理(续)_第42张图片

总结一下:
操作系统学习:进程管理(续)_第43张图片

管程

总览

操作系统学习:进程管理(续)_第44张图片

为什么要引入管程

操作系统学习:进程管理(续)_第45张图片

管程的定义和基本特征

操作系统学习:进程管理(续)_第46张图片

用管程解决生产者消费者问题

操作系统学习:进程管理(续)_第47张图片
总结一下:


Java语言当中也有类似于这样的管程机制:
操作系统学习:进程管理(续)_第48张图片

回顾

操作系统学习:进程管理(续)_第49张图片

死锁

总览

操作系统学习:进程管理(续)_第50张图片

什么是死锁

操作系统学习:进程管理(续)_第51张图片
操作系统学习:进程管理(续)_第52张图片

死锁、饥饿、死循环的区别

死锁产生的必要条件

什么时候会发生死锁

操作系统学习:进程管理(续)_第53张图片

死锁的处理策略

操作系统学习:进程管理(续)_第54张图片

回顾

操作系统学习:进程管理(续)_第55张图片

死锁的处理—预防死锁

总览

操作系统学习:进程管理(续)_第56张图片

破坏互斥条件

操作系统学习:进程管理(续)_第57张图片

破坏不剥夺条件

操作系统学习:进程管理(续)_第58张图片

破坏请求和保持条件

操作系统学习:进程管理(续)_第59张图片

破坏循环等待条件

操作系统学习:进程管理(续)_第60张图片

回顾

操作系统学习:进程管理(续)_第61张图片

死锁的处理策略—避免死锁(非常重要)

总览

操作系统学习:进程管理(续)_第62张图片

什么是安全序列

操作系统学习:进程管理(续)_第63张图片
所以分析结果得知,给B借30亿是不安全的。
操作系统学习:进程管理(续)_第64张图片
操作系统学习:进程管理(续)_第65张图片
所以由上面两张图可以知道,按照T->B->A,A->T->B的顺序给他们借钱是可行的。

安全序列、不安全状态、死锁的关系

操作系统学习:进程管理(续)_第66张图片
操作系统学习:进程管理(续)_第67张图片

银行家算法

操作系统学习:进程管理(续)_第68张图片
以该问题为例进行银行家算法的分析:
操作系统学习:进程管理(续)_第69张图片
我们会将剩余的可用资源与每一个进程进行比对,如上图是对P0进行匹配,发现是无法满足P0进程所需要的资源数的。
操作系统学习:进程管理(续)_第70张图片
上图中,与P1进程进行比对时,发现是可以满足P1进程的资源需要的,所以我们如果把资源分配给P1资源的话,等P1进程任务结束后就会归还资源,所以剩余可用资源数就可以增加到(5,3,2),因为P1进程是安全的,所以我们将其加入安全序列。
接下来我们进行第二轮的对比:
操作系统学习:进程管理(续)_第71张图片

和P0对比,发现无法满足,于是继续往下:操作系统学习:进程管理(续)_第72张图片

P1进程因为已经确认是安全的,且运行完毕了,所以不再考虑P1。与P2进程比睿,发现也无法满足:
操作系统学习:进程管理(续)_第73张图片
与P3比对,发现是可以满足其资源需求的,于是分配给它,和P1进程的做法一样:
操作系统学习:进程管理(续)_第74张图片
剩余资源数进行一个更新:
操作系统学习:进程管理(续)_第75张图片
然后以此类推即可:
操作系统学习:进程管理(续)_第76张图片
这是理论推导,而在考试做题中用笔算会由更快的解法:
在这里插入图片描述
然后更新剩余可用资源数:
操作系统学习:进程管理(续)_第77张图片
这样的方法可以更快的找到安全序列。

接下来还有找不安全序列的例子:
操作系统学习:进程管理(续)_第78张图片
操作系统学习:进程管理(续)_第79张图片
操作系统学习:进程管理(续)_第80张图片
用代码实现银行家算法:

修改完数据之后:

回顾

操作系统学习:进程管理(续)_第81张图片

死锁的处理策略—检测和解除

总览

操作系统学习:进程管理(续)_第82张图片

死锁的检测

操作系统学习:进程管理(续)_第83张图片

操作系统学习:进程管理(续)_第84张图片
操作系统学习:进程管理(续)_第85张图片

死锁的接触

操作系统学习:进程管理(续)_第86张图片

回顾

操作系统学习:进程管理(续)_第87张图片

你可能感兴趣的:(学习)