当前位置: 首页 > news >正文

进程资源分配的安全性判断与安全序列

        假设5个进程P0、P1、P2、P3、P4共享三类资源R1、R2、R3,这些资源总数分别为18、6、22。T0时刻的资源分配情况如下表所示,此时存在的一个安全序列是(         )

进程

已分配资源

资源最大需求

R1

R2

R3

R1R2R3

P0

3235510

P1

403536
P2405436
P3204425
P4314424

                A. P0,P2,P4,P1,P3                 B. P1,P0,P3,P4,P2

                C. P2,P1,P0,P3,P4                 D. P3,P4,P2,P1,P0

首先,我们需要了解一下,什么是安全序列?

 安全序列

        如果系统在执行进程的过程中,对进程按某种不安全序列进行资源分配会使系统进入不安全状态,这个时候需要进行【进程等待】。

                        【需要知道的是】不是所有不安全状态都是死锁状态。

                        【需要知道的是】系统进入不安全状态后,有一定概率进而进入死锁状态。

        【需要知道的是】计算机操作系统处于安全状态,系统便可避免进入死锁状态。

                为了进入安全状态,系统会允许进程动态地申请资源,并在系统资源分配给进程之前,系统会根据进程序列先计算判断是否能进入安全状态。

                        如果系统能按某种序列为每个进程分配直到最大需求的所需资源,使每个进程都可顺利完成,则该序列便可称为安全序列。如果按该安全序列进行资源分配就会使系统进入安全状态,此时系统才会允许将资源分配给进程去执行。                     

        这里要求的是5个进程在R1、R2、R3这3个资源是否存在安全序列,也提供了1个表,我们可以将这个表换个形式延伸继续做,从而更方便我们理解整个计算过程。

进程

已分配资源

资源最大需求

R1

R2

R3

R1R2R3

P0

3235510

P1

403536
P24054011
P3204425
P4314424

R1的资源总数为18R2的资源总数为6R3的资源总数为22

目前已分配资源量

3+4+4+2+3=162+0+0+0+1=33+3+5+4+4=19

可利用资源矢量Available

18-16=26-3=322-19=3【可利用资源矢量】由【各资源总数】减去【目前已分配资源量】可得
故目前资源R1、R2、R3的可利用资源矢量为(2,3,3)
⬇由进程对相应资源的最大需求减去目前该进程已分配到的资源⬇
R1R2R3
进程P0需要的资源量Need237
进程P1需要的资源量Need133
进程P2需要的资源量Need006
进程P3需要的资源量Need221
进程P4需要的资源量Need110

由上表可知,R1、R2、R3的可利用资源矢量为(2,3,3)

        进程P0需要的资源量为(2,3,7),其中对资源R3需要的资源量达到7,很明显目前可利用资源矢量(2,3,3)里的最后1个3不够用,所以判断如果以进程P0开头的这个【P0,P2,P4,P1,P3】序列进行资源分配有可能会让系统进入到不安全的状态,故序列【P0,P2,P4,P1,P3】不是安全序列。

        进程P1需要的资源量为(1,3,3),目前可利用资源矢量(2,3,3)都能涵盖进程P1的需求,所以判断以进程P1开头的序列可能是安全序列。

        进程P2需要的资源量为(0,0,6),其中对资源R3需要的资源量达到6,很明显目前可利用资源矢量(2,3,3)里的最后1个3不够用,所以判断如果以进程P2开头的这个【P2,P1,P0,P3,P4】序列进行资源分配有可能会让系统进入到不安全的状态,故序列【P2,P1,P0,P3,P4】不是安全序列。

        进程P3需要的资源量为(2,2,1),目前可利用资源矢量(2,3,3)都能涵盖进程P3的需求,所以判断以进程P3开头的序列可能是安全序列。


        通过上面我们得出,以进程P1或进程P3开头的序列可能是安全序列。


         

        因为通过上面的表格我们已计算出目前资源R1、R2、R3的【可利用资源矢量Available】为(2,3,3)

        如果一开始给进程P1分配资源,

                【R1的可利用资源】为2,那么分1个去给P1使它原本已分配资源4个加上1个为5个,此时满足资源最大需求5,它满足的话它这个进程P1对资源R1的资源获取就完成,同时也就将R1的资源最大需求5个给释放出来,因为刚才【R1的可利用资源】为2,那么分1个去给P1,也就是只剩下了1个,那么这1个加上刚刚释放出来的5个,也就是1个+5个=6个,故此时的【R1的可利用资源】6个

                【R2的可利用资源】为3,它的原本已分配给进程P1的资源为0,即还没分配,它的资源最大需求为3,那么从【R2的可利用资源】3个全部抽出来去满足进程P1对R2资源的最大需求,它满足的话进程P1对资源R2的资源获取也就完成,也就将R2的资源最大需求3个给释放出来,因为刚才【R2的可利用资源】已全部抽出,故没有剩下,所以0个+3个=3个,故此时的【R2的可利用资源】为3个

                【R3的可利用资源】为3,它的原本已分配资源为3,进程P1对它的资源最大需求为6,那么从【R3的可利用资源】3个全部抽出来去满足进程P1对R3资源的最大需求,它满足的话进程P1对资源R3的资源获取也就完成,也就将R3的资源最大需求6个给释放出来,因为刚才【R3的可利用资源】已全部抽出,故没有剩下,所以0个+6个=6个,故此时的【R3的可利用资源】为6个

即给进程P1分配资源完成后,

        R1、R2、R3的【可利用资源矢量Available】将变为(6,3,6)

而题目选项讲到的以进程P1开头的序列为【P1,P0,P3,P4,P2】,即进程P1后面为进程P0,进程P0对资源R1、R2、R3的最大需求为(5,5,10),其中P0对R2的资源最大需求为5,此时P1分配资源完成后,【R2的可利用资源】仅为3,无法满足进程P0对R2的需求,所以判断如果以进程P1开头的这个【P1,P0,P3,P4,P2】序列进行资源分配有可能会让系统进入到不安全的状态,所以序列【P1,P0,P3,P4,P2】不是安全序列。


          

        因为通过上面的表格我们已计算出目前资源R1、R2、R3的【可利用资源矢量Available】为(2,3,3)

        如果一开始给进程P3分配资源,

                【R1的可利用资源】为2,那么分2个去给进程P3使它原本已分配资源2个加上2个为4个,此时满足资源最大需求4,它满足的话这个进程P3对资源R1的资源获取就完成,也就将R1的资源最大需求4个给释放出来,因为刚才【R1的可利用资源】为2,那么分2个去给P3,也就是只剩下了0个,已全部抽出,故没有剩下,所以0个+4个=4个,故此时的【R1的可利用资源】4个

               【R2的可利用资源】为3,那么分2个去给P3使它原本已分配资源0个加上2个为2个,此时满足资源最大需求2,它满足的话这个进程P3对资源R2的资源获取就完成,也就将R2的资源最大需求2个给释放出来,因为刚才【R2的可利用资源】为3,那么分2个去给P3,也就是只剩下了1个,所以1个+2个=3个,故此时的【R2的可利用资源】3个

                【R3的可利用资源】为3,那么分1个去给P3使它原本已分配资源4个加上1个为5个,此时满足资源最大需求5,它满足的话这个进程P3对资源R3的资源获取就完成,也就将R3的资源最大需求5个给释放出来,因为刚才【R3的可利用资源】为3,那么分1个去给P3,也就是只剩下了2个,所以2个+5个=7个,故此时的【R3的可利用资源】7个

即给进程P3分配资源完成后,

                R1、R2、R3的【可利用资源矢量Available】将变为(4,3,7),

                而题目选项讲到的以进程P3开头的序列为【P3,P4,P2,P1,P0】,即进程P3后面为进程P4,可查到进程P4的对资源R1、R2、R3的最大需求为(4,2,4),均小于目前R1、R2、R3的【可利用资源矢量Available】(4,3,7)

所以判断以P3开头的序列可能是安全序列。

继续画表进一步判断。以进程P3开头的序列【P3,P4,P2,P1,P0】,进程P3完成后轮到进程P4,已知进程P3完成后R1、R2、R3的【可利用资源矢量Available】为(4,3,7)

以进程P3开头的序列为【P3,P4,P2,P1,P0】
R1R2R3

进程P4的资源最大需求

424比如从R1的可利用资源4抽取1个去加上已分配资源的3个来满足进程P4的资源最大需求4,那么现在R1的可利用资源变为3,这个3加上刚刚已满足的最大需求4就是3+4=7,其他以此类推

已分配资源

314

目前可利用资源矢量Available

437

3+4=7

2+2=4

7+4=11

进程P2的资源最大需求

4011

已分配资源

405

目前可利用资源矢量Available

7411

7+4=11

4+0=4

6+11=17

进程P1的资源最大需求

536

已分配资源

403

目前可利用资源矢量Available

11417
10+5=151+3=414+6=20

进程P0的资源最大需求

5510

已分配资源

323

目前可利用资源矢量Available

15420
13+5=181+5=613+10=23

故此时假设走完了整个序列,最后的可利用资源矢量Available为

18623

因为

 如果系统能按某种序列为每个进程分配直到最大需求的所需资源,使每个进程都可顺利完成,则该序列便可称为安全序列。

        经过上面的各项计算,进程P3开头的序列【P3,P4,P2,P1,P0】能为每个进程分配直到最大需求的所需资源,使每个进程都可顺利完成,执行该序列能让系统进入到安全状态,故该序列为安全序列。

http://www.lryc.cn/news/594754.html

相关文章:

  • ZooKeeper学习专栏(四):单机模式部署与基础操作详解
  • 【c++】leetcode5 最长回文子串
  • 突破量子仿真瓶颈:微算法科技MLGO量子算法的算术化与核操作迭代模型
  • 飞算科技:以原创技术为翼,赋能产业数字化转型
  • Spring 中的 Bean 作用域(Scope)有哪些?各自适用于什么场景?
  • 江苏思必驰科技25Java实习面经
  • react class和function 如何模拟vue中的 双向绑定 监听 computed的方式
  • Component cannot be used as a JSX component
  • 芯谷科技--固定电压基准双运算放大器D4310
  • 杰和科技工业计算机AF208,打造高可靠新能源汽车检测产线
  • 杰发科技AC7840——硬件crc使用
  • 【烧脑算法】拓扑排序:从“依赖”到“序列”,理解题目中的先后逻辑
  • 5.6 framebuffer驱动
  • 录音转写:颠覆传统共享下载体验 | 如何提升团队效率?
  • 【前端状态更新与异步协调完全指南:React、Vue架构原理与复杂业务场景实战】
  • RustDesk自建服务器完整部署指南:从零开始到成功连接。成功解决rustdesk报错:未就绪,请检查网络连接
  • Vue 脚手架——render函数
  • 网络与信息安全有哪些岗位:(1)网络安全工程师
  • 【系统全面】Linux进程——基础知识介绍
  • 在本地WSL中的CentOS 7子系统中部署Ewomail邮件服务器
  • AC身份认证实验之AAA服务器
  • django filter按两个属性 去重
  • 第15次:商品搜索
  • 信息整合注意力IIA,通过双方向注意力机制重构空间位置信息,动态增强目标关键特征并抑制噪声
  • 来伊份养馋记社区零售 4.0 上海首店落沪:重构 “家门口” 的生活服务生态
  • 卷积神经网络中的注意力机制:CBAM详解与实践
  • Go-通俗易懂垃圾回收及运行过程
  • WPF——自定义ListBox
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(二)
  • 学习秒杀系统-异步下单(包含RabbitMQ基础知识)