操作系统死锁避免的两个方法

来源:互联网 发布:淘宝上买电动车靠谱吗 编辑:程序博客网 时间:2024/05/21 19:44

1.安全状态

如果系统能按着摸个顺序为每个进程分配资源(不超过其最大值)并能避免死锁那么系统状态就是安全的。更为准确的说,如果存在一个安全序列,那么系统处于安全状态。进程顺序《P1,P2.......Pn》,如果对于每个进程Pi,Pi仍然可以申请的资源数下雨当前的可用资源加上所有进程PJ(j<i)所占用资源,那么这一顺序就称为安全序列。

安全状态不是死锁状态但是死锁状态一定是不安全状态。然而不是所有的不安全状态都能导致死锁状态。

有了安全状态的概念,可以定义避免算法以确定系统不会死锁。其思想是简单的确保系统始终处于安全状态 。开始系统处于安全状态。当进程申请一个可用资源时,系统必须确定这一资源申请是可以立即分配还是要等待。只有分配后系统仍处于安全状态,才允许被申请。

采用这种方案,如果进程申请一个现在已经可用的资源,呢么它可能必须等待。因此与没有采用死锁避免算法相比,这种情况下的资源使用率可能更低。

第一中算法:

通过环检测法,检测安全性,检测图中是哦福有环算法需要n的平方级的操作,其中n是系统的进程数量。如果没有环存在,那么资源分配会使得系统处于安全状态。如果环存在,那么分配会导致系统处于不安全状态。因此进程Pi必须等待其资源申请被满足。

算法二:银行家算法:

银行家算法用于每种资源类型有多个实例的资源分配系统,下面的算法其效率要低于资源分配图算法。

当新进程进入系统时,它必须说明可能需要的每种类型资源实例的最大数量,这一数量不能超过系统资源的总和。当用户申请一种资源时,系统必须确定这些资源的分配是否仍会使系统处于安全状态,如果是就可以分配资源,如果不是就不分配资源,等待直到某个其他进程释放足够资源为止。


0 0
原创粉丝点击