第九节死锁的避免 1.糸统状态的安全性 安全序列:如果某一肘刻,糸统能够按照某种进程循序, 如{1,p2…pn},来为每个迸程分配其所需的资源,直至 最大需求,使得每个进程均可顺利完成,则进程序列 {p1,p2,…,pn}叫安金序列。 安全状态:在某一肘刻,若糸统中存在一个安全序列 能使所有的进程都顺利完成,则称糸统处于安全状态
第九节 死锁的避免 1. 系统状态的安全性 • 安全序列:如果某一时刻,系统能够按照某种进程循序, 如{p1,p2,…,pn},来为每个进程分配其所需的资源,直至 最大需求,使得每个进程均可顺利完成,则进程序列 {p1,p2,…,pn}叫安全序列。 • 安全状态:在某一时刻,若系统中存在一个安全序列, 能使所有的进程都顺利完成,则称系统处于安全状态
第九节死锁的避免 1.糸统状态的安全性 注意: 糸统在某一时刻的安全状态可能不唯 安全状态是非死锁状态,而不安全状态不一定是死锁状 态 为了避免死锁,进程可能会在资源可用的情况下进入等 待状态
第九节 死锁的避免 1. 系统状态的安全性 注意: • 系统在某一时刻的安全状态可能不唯一; • 安全状态是非死锁状态,而不安全状态不一定是死锁状 态; • 为了避免死锁,进程可能会在资源可用的情况下进入等 待状态
第九节死锁的避免 2.银行家算法一-数据结构 可用资源向量AV; 最大需求矩阵Max; 分配矩阵A; 需求矩阵Need; 请求向量Re; 工作向量Work; 布尔向量 Finish
第九节 死锁的避免 2. 银行家算法--数据结构 • 可用资源向量Av; • 最大需求矩阵Max; • 分配矩阵Al; • 需求矩阵Need; • 请求向量Re; • 工作向量Work; • 布尔向量Finish
第九节死锁的避免 2.银行家算渎一一资源请求算描述 当第ⅰ个进程需要请求资源时,就将其需要的各个资源的数量送 入向量Re中。 ①如果Re<=Ned,进程p继续,否则转出错处理; ②如黑Re<=AV,则进程p可继续执行,否则等待; ③满足pi的请求,执行如下操作: Av=AV-Rel A0=AD+ Rei Need[=Needo-Rei ④执行安全算法:如果处于安全状态,分配可进行;否 则,回复资源的原状态,同肘让P等待。 Ay=Ay+ Rel AlD=AD-Rei Need[=Need可+Rei
第九节 死锁的避免 2. 银行家算法--资源请求算法描述 当第i个进程需要请求资源时,就将其需要的各个资源的数量送 入向量Rei中。 ① 如果Rei<=Need[i],进程pi继续,否则转出错处理; ② 如果Rei<=Av,则进程pi可继续执行,否则等待; ③ 满足pi的请求,执行如下操作: Av=Av-Rei Al[i]=Al[i]+Rei Need[i]=Need[i]-Rei ④ 执行安全算法:如果处于安全状态,分配可进行;否 则,回复资源的原状态,同时让Pi等待。 Av=Av+Rei Al[i]=Al[i]-Rei Need[i]=Need[i]+Rei
第九节死锁的避免 2.银行家算法一一安全性算法 计算pi进程提出的资源请求后,糸统状态是否安全。 ①Work=AV; Finish[= false;i=1,2,…,n; ②否则等待; ③满足pi的请求,执行如下操作 Av=AV-Rei Al[=A0+ Rei Need[=Need-Rei ④执行安全算法:如果处于安全状态,分配可进行;否 则,回复资源的原状态,同肘让P等待。 Ay=AV+ rei AJFA0-Rei Need[=Needd+ Rei
第九节 死锁的避免 2. 银行家算法--安全性算法 计算pi进程提出的资源请求后,系统状态是否安全。 ① Work=Av;Finish[i]=false; i=1,2,…,n; ② 否则等待; ③ 满足pi的请求,执行如下操作: Av=Av-Rei Al[i]=Al[i]+Rei Need[i]=Need[i]-Rei ④ 执行安全算法:如果处于安全状态,分配可进行;否 则,回复资源的原状态,同时让Pi等待。 Av=Av+Rei Al[i]=Al[i]-Rei Need[i]=Need[i]+Rei
第九节死锁的避免 1.糸统状态的安全性 注意: 安全状态:在某一肘刻,若糸统中存在一个安全序列 能使所有的进程都顺利完成,则称糸统处于安全状态
第九节 死锁的避免 1. 系统状态的安全性 注意: • 安全状态:在某一时刻,若系统中存在一个安全序列, 能使所有的进程都顺利完成,则称系统处于安全状态