admin管理员组

文章数量:1130349

安全状态与不安全状态

  • 安全序列:如果系统按照这种序列分配资源,则每个进程都能顺利完成,安全序列可能有多个。
  • 不安全状态:如果分配了资源之后,系统找不到任何一个安全序列,那么系统就进入了不安全状态。这意味着之后所有进程可能都无法顺利执行下去,除非有进程提前归还了一些资源。
  • 如果系统处于安全状态,就一定不会发生死锁;
  • 如果系统处于不安全状态,则可能发生死锁;

银行家算法的核心思想

在资源分配之前预先判断这次分配是否会导致系统进入不安全状态,以此决定是否答应资源的分配请求。

银行家算法最初是Dijkstra为银行系统设计的,以确保银行在发放现金贷款时,不会发生不能满足所有客户需要的情况。后来用于操作系统中避免死锁,即用于确保不会发生不能满足所有资源分配请求的情况。

银行家算法的解题步骤

  1. 首先判断当前时刻的安全性;(安全性算法)
  2. 若安全,当某进程提出资源申请Request时,先与Need和Available进行比较,判断请求是否小于进程所需,请求是否小于系统还剩下的资源。
  3. 都小于,则根据请求资源量进行分配(即更改表)。
  4. 列表计算判断安全性,求出安全序列。 

安全性算法:检查当前的剩余可用资源是否能满足某个进程的最大需求。如果可以,则把进程加入安全序列,并把该进程持有的资源全部回收。 

例题

(1)利用安全性算法对资源分配情况进行分析。发现存在安全序列:{P1,P3,P4,P2,P0}。故系统是安全的。

(2) 请求Request(1,0,2)小于进程所需也小于系统所剩余资源。根据请求资源量进行分配,更改表内容如下:

注:图片出自b站UP主夜连三(实在不想重新画表了,所以抱来了截图~)

计算安全性:

利用安全性算法分析,存在安全序列:{P3,P4,P1,P0,P2},系统是安全的。可以将P1请求的资源Request(1,0,2)分配给它。

安全状态与不安全状态

  • 安全序列:如果系统按照这种序列分配资源,则每个进程都能顺利完成,安全序列可能有多个。
  • 不安全状态:如果分配了资源之后,系统找不到任何一个安全序列,那么系统就进入了不安全状态。这意味着之后所有进程可能都无法顺利执行下去,除非有进程提前归还了一些资源。
  • 如果系统处于安全状态,就一定不会发生死锁;
  • 如果系统处于不安全状态,则可能发生死锁;

银行家算法的核心思想

在资源分配之前预先判断这次分配是否会导致系统进入不安全状态,以此决定是否答应资源的分配请求。

银行家算法最初是Dijkstra为银行系统设计的,以确保银行在发放现金贷款时,不会发生不能满足所有客户需要的情况。后来用于操作系统中避免死锁,即用于确保不会发生不能满足所有资源分配请求的情况。

银行家算法的解题步骤

  1. 首先判断当前时刻的安全性;(安全性算法)
  2. 若安全,当某进程提出资源申请Request时,先与Need和Available进行比较,判断请求是否小于进程所需,请求是否小于系统还剩下的资源。
  3. 都小于,则根据请求资源量进行分配(即更改表)。
  4. 列表计算判断安全性,求出安全序列。 

安全性算法:检查当前的剩余可用资源是否能满足某个进程的最大需求。如果可以,则把进程加入安全序列,并把该进程持有的资源全部回收。 

例题

(1)利用安全性算法对资源分配情况进行分析。发现存在安全序列:{P1,P3,P4,P2,P0}。故系统是安全的。

(2) 请求Request(1,0,2)小于进程所需也小于系统所剩余资源。根据请求资源量进行分配,更改表内容如下:

注:图片出自b站UP主夜连三(实在不想重新画表了,所以抱来了截图~)

计算安全性:

利用安全性算法分析,存在安全序列:{P3,P4,P1,P0,P2},系统是安全的。可以将P1请求的资源Request(1,0,2)分配给它。

本文标签: 死锁银行家算法操作系统