4.1.4、操作系统-概述及进程管理-银行家算法和线程

死锁

当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁。

死锁产生的四个必要条件:

  • 资源互斥
  • 每个进程占有资源并等待其他资源
  • 系统不能剥夺进程资源
  • 进程资源图是一个环路。

死锁解决措施

死锁产生后,解决措施是打破四大条件,有下列方法:

  • 死锁预防:采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁的条件。
  • 死锁避免:一般采用银行家算法来避免,银行家算法,就是提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以避免死锁。
    银行家算法历年很多次都考1-2分选择题
  • 死锁检测:允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除。
  • 死锁解除:即死锁发生后的解除方法,如强制剥夺资源,撤销进程等。

死锁计算问题:系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最大资源数为n×(R-1)。其不发生死锁的最小资源数为n×(R-1)+1

练习题

【2017年】某系统中有3个并发进程竞净资源R,每个进程都需要5个R,那么至少有()
A.12
B.13
C.14
D.15

答案B
3(5-1)+1

【2021年】假设系统中有三类互斥资源R1、R2和R3,可用资源数分别为10、5和3。在TO时刻系统中有P1、P2、P3、P3和P5五个进程,这些进程对资源的最大需求和已分配资源数如下表所示,此时系统剩余的可用资源数分别为(27)。如果进程按(28)序列执行,那么系统状态是安全的。
在这里插入图片描述
(27)
A.1、1和0
B.1、1和1
C.2、1和0
D.2、0和1
(28)
A.P1—P2—P4—P5—P3
B.P5—P2—P4—P3—P1
C.P4—P2—P1一P5—P3
D.P5—P1—P4—P2—P3

答案D
27:可用资源数-已分配资源数
R1:10-(1+2+3+1+1)=2;R2:5-(1+1+1+1+1)=0;R3:3-(1+1)=1
28:根据答案先看P1 P2 P5还需要多少:最大需求量-已分配资源
P1还需要 4 2 0 但是剩余 2 0 1,所以P1不能先执行
P2 还需要 1 1 0 所以P2也不能先执行
P5 还需要 1 0 1 剩余量够了,先执行P5,还剩余资源 -1=1 -0=0 -1=0。执行完P5释放资源+2=3 +1=1 +1=1
然后看P1还需要4 2 0 ,不行。P2还需要1 1 0,可以。所以选D
在这里插入图片描述

线程

传统的进程有两个属性:可拥有资源的独立单位;可独立调度和分配的基本单位。
引入线程后,线程是独立调度的最小单位,进程是拥有资源的最小单位,线程可以共享进程的公共数据、全局变量、代码、文件等资源,但不能共享线程独有的资源,如线程的栈指针等标识数据。

程序是指一个byte序列,是静态的,存储在磁盘或一些其它存储器上的
进程是正在运行的程序,有自己的地址空间。程序在运行过程中在内存里给它开辟了空间
线程是进程的最小执行单元

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yoyo勰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值