第三章进程管理(死锁问题、线程)

  • 格式:ppt
  • 大小:468.00 KB
  • 文档页数:83

下载文档原格式

  / 50
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

进程死锁
产生死锁的原因
1 竞争资源。当系统中供多个进程所共享的资 竞争资源。 不足以同时满足它们的需要时, 源,不足以同时满足它们的需要时,引起它们 对资源的竞争而产生死锁; 对资源的竞争而产生死锁; 2 进程推进的顺序不当 。进程在运行过程中, 进程在运行过程中, 请求和释放资源的顺序不当,导致进程的死锁。 请求和释放资源的顺序不当,导致进程的死锁。
进程死锁
4、解除死锁: 、解除死锁: 与检测死锁相配套, 与检测死锁相配套 , 用于将进程从死锁状 态解脱出来。 态解脱出来。 常用的方法是撤消或挂起一些进程。 常用的方法是撤消或挂起一些进程 。 以回 收一些资源,再将它们分配给处于阻塞状 收一些资源, 态的进程,使之转为就绪状态。 态的进程,使之转为就绪状态。 实现难度大, 实现难度大 , 但可获得较好的资源利用率 和系统吞吐量。 和系统吞吐量。
进程死锁
3.6.2 死锁的排除方法
1 鸵鸟算法 2 预防死锁 3 避免死锁 4 检测和解除死锁
进程死锁
1鸵鸟算法(置之不理) 鸵鸟算法(置之不理) 鸵鸟算法 解决死锁的最简单方法就是鸵鸟算法。 解决死锁的最简单方法就是鸵鸟算法。即 像鸵鸟一样,当遇到危险时, 像鸵鸟一样,当遇到危险时,将头埋进沙子 假装毫无问题。 里,假装毫无问题。 当死锁在计算机中很少出现时, 当死锁在计算机中很少出现时,比如说每五 年或更长时间才出现一次时, 年或更长时间才出现一次时,人们就不必花 费更多的精力去解决它,而是采用类似鸵鸟 费更多的精力去解决它,而是采用类似鸵鸟 一样的办法忽略它。 一样的办法忽略它。 UNIX系统为例 它潜在地存在死锁, 系统为例, 以UNIX系统为例,它潜在地存在死锁,但 它并不花功夫去检测和解除死锁,而是忽略 它并不花功夫去检测和解除死锁, 不去理它。 不去理它。
进程死锁 CPU、主存、硬盘: 该类资源可为几个进程 、主存、硬盘 共同使用(可抢占) 共同使用(可抢占) 资源 打印机,读卡机,磁带驱动器 打印机,读卡机,磁带驱动器: 可为某个进 程独享(不可抢占) 程独享(不可抢占)
根据使用方式:共享资源和独享资源。 根据使用方式:共享资源和独享资源。 根据使用期限;永久资源和临时性资源。 根据使用期限;永久资源和临时性资源。
那么当缓存区满且消费者此时不再临界区中, 那么当缓存区满且消费者此时不再临界区中, 执行到互斥P mutex) 执行到互斥P(mutex)后,消费者进程想进入 临界区,但被阻塞在外。 临界区,但被阻塞在外。 若生产者希望进入临界区,也被阻塞, 若生产者希望进入临界区,也被阻塞,于是两 个进程无限止地相互等待对方来唤醒自己, 个进程无限止地相互等待对方来唤醒自己,两 个进程陷入死锁。 个进程陷入死锁。
进程死锁
2、避免死锁: 避免死锁: 不事先采取限制去破坏产生死锁的条件, 不事先采取限制去破坏产生死锁的条件 , 而是在资源的动态分配过程中, 而是在资源的动态分配过程中 , 用某种 方法去防止系统进入不安全状态, 方法去防止系统进入不安全状态 , 从而 避免死锁的发生。 避免死锁的发生。 实现较难,只需要较弱的限制条件, 实现较难 , 只需要较弱的限制条件 , 可获 得较高的资源利用率和系统吞吐量。 得较高的资源利用率和系统吞吐量。
S3 P3 S2
P1 S1 P2
P1:Request(S3);Release(S1) : P2:Request(S1);Release(S2) : P3:Request(S2);Release(S3) : 可能发生死锁
并发执行。 例:进程P1、P2并发执行。 进程 、 并发执行 共享资源R1、 共享资源 、R2
在前述若pv操作使用不当 会引起死锁。 在前述若pv操作使用不当,会引起死锁。把生产 pv操作使用不当, 者进程两个p操作次序调换一下,先执行P mutex) 后执行P(avail) (mutex),后执行P(avail) mutex) P(mutex) 互斥 avail) P(avail) 者执行。 者执行。 判断 缓冲区满,不能送, 缓冲区满,不能送,从消费
进程死锁
UNIX系统允许创建的进程总数是由进程 UNIX系统允许创建的进程总数是由进程 表中包含的PCB个数决定的。因此,PCB资 PCB个数决定的 表中包含的PCB个数决定的。因此,PCB资 源是有限资源。 源是有限资源。如果由于进程表中已经无 空闲的PCB而使创建子进程操作(FORK) PCB而使创建子进程操作(FORK)失 空闲的PCB而使创建子进程操作(FORK)失 则执行FORK FORK操作的程序可以等待一段 败,则执行FORK操作的程序可以等待一段 时间之后再试。 时间之后再试。 出现这种情况的可能性是非常小的, 出现这种情况的可能性是非常小的,但 还是有可能发生的。一旦出现, 还是有可能发生的。一旦出现,只要忽略 原进程已运行情况的现场, 原进程已运行情况的现场,重新启动机器 让它们重新运行即可。 让它们重新运行即可。 假定UNIX系统有 个PCB项,10个进 假定 系统有100个 项 个进 系统有 程正在运行,每个需要创建12个子进程 个子进程。 程正在运行,每个需要创建 个子进程。
② P2Rel(R1) P2Rel(R2) P2Req(R1) P2Req(R2) ④ ③ ③ ① ②
曲线4将进入不安全区域 曲线 将进入不安全区域 进程推进顺序非法) (进程推进顺序非法)
③ ③ ①
P1Req(R1) P1Req(R2)P1Rel(R1) P1Rel(R2)
进程死锁
死锁模型 申请r1 申请
进程死锁
竞争资源
1 竞争非剥夺性资源: 竞争非剥夺性资源:
打印机R1 P1 磁带机R2 P2
2 竞争临时性资源
进程死锁
S1、S2、S3是临时资源 、 、 是临时资源 P1:Release(S1);Request(S3) : P2:Release(S2);Request(S1) : P3:Release(S3);Request(S2) : 不可能发生死锁
进程死锁
资源的概念
OS是计算机系统中资源的管理者,而进程是竞 是计算机系统中资源的管理者, 是计算机系统中资源的管理者 争资源的基本单位, 争资源的基本单位,故对系统中所有进程的资 源分配工作,都由 完成 完成。 源分配工作,都由OS完成。 研究资源分配时, 研究资源分配时,我们必须搞清该资源是可以 被几个进程同时使用, 被几个进程同时使用,还是只能为一个进程使 用,资源的不同使用性质正是引起系统死锁的 原因。 原因。
进程死锁
生产者—消费者问题 生产者 消费者问题 avail- 生产者用信号量, avail - 生产者用信号量 , 记录缓冲区空单 元个数。 元个数。 Full—消费者信号量,记录产品个数。 Full 消费者信号量,记录产品个数。 消费者信号量 Mutex—互斥信号量。 Mutex 互斥信号量。 互斥信号量
进程死锁
资源的分类
根据资源性质:可剥夺(抢占)和不可剥夺( 根据资源性质:可剥夺(抢占)和不可剥夺(抢 资源。 占)资源。 可抢占资源—指资源占有进程虽然需要使用该 可抢占资源 指资源占有进程虽然需要使用该 资源,但另一个进程却强行把资源从占有者进 资源, 程处抢来。 程处抢来。 不可抢占资源—指只有占用者进程不再需要使 不可抢占资源 指只有占用者进程不再需要使 用该资源而主动释放资源外, 用该资源而主动释放资源外,其它进程不得在 占有者进程使用资源过程中强行抢占。 占有者进程使用资源过程中强行抢占。
进程死锁
判断
1 参与死锁的所有进程都占有资源
2 参与死锁的所有进程均正在等待资源 3 参与死锁的所有进程中至少有两个进程占有 资源 4 参与死锁的进程至少有两个
进程死锁
关于死锁的一些结论
参与死锁的进程最少是两个 两个以上进程才会出现死锁) (两个以上进程才会出现死锁) 参与死锁的进程至少有两个已经占有资源 参与死锁的所有进程都在等待资源 参与死锁的进程是当前系统中所有进程的子集 如果死锁发生,会浪费大量系统资源, 注:如果死锁发生,会浪费大量系统资源,甚至 导致系统崩溃
可重复使用的资源 由一个进程产生, 由一个进程产生,被另外一个进程使用短暂时间 之后便无用的资源
进程死锁
申请r1 申请
P1
已分配给P1 已分配给
R1 P2
R2
申请 r2
已分配给 p2
进程死锁
死锁的定义
死锁Deadlock:是计算机系统中多道程序并发 : 死锁 执行时, 执行时,两个或两个以上的进程由于竞争资源 而造成的一种互相等待的现象(僵局),如无 而造成的一种互相等待的现象(僵局),如无 ), 外力作用,这些进程将永远不能再向前推进。 外力作用,这些进程将永远不能再向前推进。 陷入死锁状态的进程称为死锁进程, 陷入死锁状态的进程称为死锁进程,所占用的 死锁进程 资源或者需要它们进行某种合作的其它进程就 会相继陷入死锁, 会相继陷入死锁,最终可能导致整个系统处于 瘫痪状态。 瘫痪状态。
进程死锁
在每个进程已经创建9个进程后, 在每个进程已经创建 个进程后,原来的 个进程后 10个进程和新创建的 个子进程已用完 个进程和新创建的90个子进程已用完 个进程和新创建的 了进程表。这样,原来的10个进程现在 了进程表。这样,原来的 个进程现在 都处于创建子进程的无限循环中——死 都处于创建子进程的无限循环中 死 出现这种情况的可能性是非常小的, 锁。出现这种情况的可能性是非常小的, 但还是有可能发生的。一旦出现, 但还是有可能发生的。一旦出现,只要 忽略原进程已运行情况的现场, 忽略原进程已运行情况的现场,重新启 动机器让它们重新运行即可。 动机器让它们重新运行即可。
进程死锁
3、检测死锁: 、检测死锁: 事先并不采取任何限制, 事先并不采取任何限制 , 也不检查系统是 否进入不安全区, 允许死锁发生, 否进入不安全区 , 允许死锁发生 , 但可 通过检测机构及时检测出死锁的发生, 通过检测机构及时检测出死锁的发生 , 并精确确定与死锁有关的进程和资源, 并精确确定与死锁有关的进程和资源 , 然后采取适当措施, 然后采取适当措施 , 将系统中已发生的 死锁清除掉
进程死锁
3.6 死锁问题
在多道程序系统中,多个进程并发运行,共享资 源,从而提高了资源的利用率。但是若对资源的 管理和使用不当,在一定条件下会导致系统发生 一种随机性故障――死锁。在一些系统中,比如 实时控制系统,系统一旦发生死锁将导致灾难性 的后果。
进程死锁
wenku.baidu.com
3.6.1 死锁的基本概念
资源 死锁的定义 产生死锁的原因 产生死锁的必要条件 处理死锁的基本方法
进程死锁
处理死锁的基本方法
1、预防死锁: 、预防死锁: 通过设置某些限制条件, 通过设置某些限制条件 , 去 破坏死锁四个 必要条件中的一个或多个 来防止死锁。 中的一个或多个, 必要条件 中的一个或多个 , 来防止死锁 。 较易实现,广泛使用, 较易实现 , 广泛使用 , 但由于所施加的限 制往往太严格, 制往往太严格 , 可能导致系统资源利用 率和系统吞吐量的降低。 率和系统吞吐量的降低。
进程死锁 deposit( data) begin p(avail) p(mutex) 送数据入缓冲区某 单元 v(full) v(mutex) end end remove (data) begin p(full) p(mutex) 取缓冲区中某单元 数据 v(avail) v(mutex)
进程死锁
R2已经分配给 、R1已经分配给 已经分配给P1、 已经分配给 已经分配给P2 已经分配给
P1
已分配给P1 已分配给
R1
R2
P2
已分配给 p2
申请 r2
进程死锁
产生死锁的四个必要条件
⑴互斥条件:进程访问的是临界资源,那个资源一次只 互斥条件:进程访问的是临界资源, 互斥条件 能被一个进程所使用。 能被一个进程所使用。 不剥夺条件:一个资源仅能被占有它的进程所释放, ⑵不剥夺条件:一个资源仅能被占有它的进程所释放, 而不能被其他进程剥夺。 而不能被其他进程剥夺。 部分分配: 请求和保持条件) ⑶部分分配:(请求和保持条件)一个进程在请求新的 资源的同时,保持对某些资源的占有。 资源的同时,保持对某些资源的占有。 环路等待条件:存在一个进程的环路链, ⑷环路等待条件:存在一个进程的环路链,链中每一个 进程占用有着某个或某些资源, 进程占用有着某个或某些资源 , 又在等待链中的另 一个进程占有的资源。