安全序列
安全序列
产生死锁的原因有很多,资源不足还有进程推进次序非法,都是原因。但是系统有不可能一下子满足所有进程的资源请求,才会产生死锁的危险。我们知道,进程结束以后是会释放资源的,释放的资源也是可以给后面的进程使用的。我们可以回顾一下哲学问题,我们的那种作法其实就是,当他们同时饿的时候,我们强制选出其中一位来先吃,吃完后释放筷子,这样也就不会有饿死的危险。如果按吃饭的优先级标号,那么按照优先级来排序,最后一定是可以所有的哲学家都有饭吃。(虽然这道题的序列是任意的)。
于是我们定义这样一个概念: 如果一组进程,按照的次序执行,并为它们分配资源,如果都每个进程都能顺利执行,那么就称这个序列为一个安全序列。否则就是一个不安全序列。,
注意,这里说的是 “一个“ 而不是说 就是,因为安全序列有可能不止一个。 安全序列一定不会产生死锁,但是不安全序列只是有产生死锁的危险,并不是一定就会死锁。但是如果死锁了,那么一定是在不安全的序列下执行的。
直接看例子,概念的可以看完例子再去级记
https://blog.csdn.net/muxuanyan/article/details/46820727
Resource:系统中的资源总量
Available:系统中尚未分配的,可以使用的资源量
Need:每个进程对每种资源的最大需求量。(一行代表某个进程,一列代表某种资源)
Allocation:目前已经分配的情况