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

【OS笔记11】:进程和线程9-死锁及其概念

文章目录

  • 进程与线程管理
    • 3.6 死锁
      • 3.6.1 死锁的概念
        • 1. 资源分配与竞争
        • 2. 死锁的定义
      • 3.6.2 死锁的实例分析
        • 例1:进程A、B对打印机与CD-ROM的竞争
        • 例2:进程P1、P2对信号量S1、S2的P、V操作
      • 3.6.3 死锁产生的原因
        • 图形化解释:进程推进图

进程与线程管理

3.6 死锁

3.6.1 死锁的概念

1. 资源分配与竞争
  • 资源管理技术:在前面的章节中我们介绍了操作系统对各类资源的分配和管理技术,其核心目的在于提高资源的利用率
  • 资源竞争:实际上,计算机系统中的资源是有限的。当众多请求资源的进程与系统可分配的有限资源之间产生矛盾时,就会出现资源竞争
  • 互斥使用:当多个进程竞争共享资源时,可以通过实现资源的互斥使用,使得进程在有限的时间内获得所需资源。
  • 死锁的产生:如果对这种资源竞争处理不当,就会引发死锁
2. 死锁的定义

指系统中存在一组进程(两个或多个进程),它们中的每一个进程都占用(持有)了某个资源,但又都在等待着其中另一个进程所占用的资源而无限期地僵持下去的局面。


3.6.2 死锁的实例分析

例1:进程A、B对打印机与CD-ROM的竞争
  • 场景描述:进程A和进程B在运行过程中都需要使用打印机和CD-ROM这两种设备。

  • 死锁过程分析

    1. 进程A首先申请并占有了CD-ROM。
    2. 同时,进程B申请并占有了打印机。
    3. 之后,进程A尝试申请打印机,但由于打印机已被进程B占用,进程A进入等待状态。
    4. 接着,进程B也尝试申请CD-ROM,但CD-ROM已被进程A占用,进程B也进入等待状态。
  • 结论

    • 进程A和B在得到一个资源后还需要申请第二个资源。
    • 在没有得到第二个资源之前,它们都不会归还已有的资源。
    • 最终,A占用了B所需的资源(CD-ROM),B也占用了A所需的资源(打印机),彼此互不相让,造成了永远等待的局面,即死锁

在这里插入图片描述

图片描述:一个环形图,展示了进程A和进程B之间的资源依赖关系。进程A占有CD-ROM并申请打印机,而进程B占有打印机并申请CD-ROM,形成了一个循环等待的闭环。

例2:进程P1、P2对信号量S1、S2的P、V操作
  • 场景描述:系统中有两个进程P1和P2,以及两个信号量S1和S2,它们的初值都为1。

  • 执行序列

    // 进程P1         // 进程P2
    ...               ...
    P(S1)             P(S2)
    P(S2)             P(S1)
    ...               ...
    V(S1)             V(S2)
    V(S2)             V(S1)
    ...               ...
    
  • 死锁过程分析

    1. P1执行P(S1),成功后占有S1资源 (S1变为0)。
    2. 此时发生进程调度,P2开始执行。
    3. P2执行P(S2),成功后占有S2资源 (S2变为0)。
    4. P1继续执行,尝试P(S2),但S2已被P2占用,P1被阻塞,进入等待状态。
    5. P2继续执行,尝试P(S1),但S1已被P1占用,P2也被阻塞,进入等待状态。
  • 结论

    • P1占有S1资源,等待S2资源
    • P2占有S2资源,等待S1资源
    • P1和P2都陷入了永久等待,产生死锁

3.6.3 死锁产生的原因

  1. 系统资源不足

    • 这是产生死锁的根本原因。如果系统资源充足,所有进程的资源请求都能得到满足,死锁就不会发生。
    • 由于资源有限,进程需要竞争资源才能继续执行。
  2. 进程并发执行的顺序不当

    • 即使系统资源不足,但如果进程的推进顺序是合理的,也未必会发生死锁。
    • 不当的执行顺序(例如上文例1和例2中的情况)是导致死锁的直接原因
图形化解释:进程推进图

在这里插入图片描述

  • 坐标系定义

    • 以一个二维坐标系为例,X轴代表进程P1的执行进度,Y轴代表进程P2的执行进度。
    • 任何一个点(x, y)都代表了P1和P2在某一时刻的执行状态。
  • 资源定义

    • r1: 打印机
    • r2: 读卡机
    • 进程P1和P2共享这两个资源。
    • 假设系统中只有一个CPU,每个时刻只允许一个进程运行,因此进程的推进轨迹只能是水平或垂直的。
  • 资源占用与危险区域

    • P1的执行过程需要先占用r1(A1点到D1点之间),再占用r2(B1点到C1点之间)。
    • P2的执行过程需要先占用r2(A2点到D2点之间),再占用r1(B2点到C2点之间)。
    • 图中阴影部分构成了危险区域。这个区域代表P1占用了r1,同时P2占用了r2。如果进程的执行轨迹进入这个区域,例如到达点N,此时P1请求r2,P2请求r1,就会发生死锁。

在这里插入图片描述

图片描述:一个二维坐标图,X轴为P1进程,Y轴为P2进程。图中有两个矩形区域,分别表示P1和P2占用资源r1和r2的时间段。这两个区域的交集形成一个“危险区域”。图中用不同的路径(如路径1、2、3)展示了进程的推进过程,其中路径3进入了危险区域导致死锁。

  • 结论
    由此可知,在多道程序运行时,按照一定的顺序联合推进,可以使系统中的所有进程运行完毕;否则,不当的推进顺序会使进程进入危险区域而产生死锁。
http://www.dtcms.com/a/503451.html

相关文章:

  • 贪心算法1
  • 服务器搭建vllm框架并部署模型+cursor使用经验
  • Arduino采集温湿度、光照数据
  • 32HAL——外部中断
  • 网站建设会议议程新闻营销发稿平台
  • 【图像处理】CMKY色彩空间
  • 南宁建行 网站南通网站的优化
  • 构建AI智能体:六十八、集成学习:从三个臭皮匠到AI集体智慧的深度解析
  • 从入门到精通【Redis】Redis 典型应⽤ --- 分布式锁
  • 6.5 万维网(答案见原书P294)
  • CycloneDDS:跨主机多进程通信全解析
  • Java基础语法—类型转换、表达式的自动类型提升
  • CentOS8无法使用sudo提权
  • 软件工程师招聘信息网站数据库对网站开发的作用
  • Python核心数据结构与函数编程
  • Spring Boot 3零基础教程,WEB 开发 内容协商 接口返回 YAML 格式的数据 笔记35
  • 网站编程学北京上海网站建设公司
  • 查询土耳其公司商业登记册(工商报告),可以获取什么信息?
  • ip反查域名
  • 把AI“撒”进农田:基于极值量化与状态机的1KB边缘灌溉决策树
  • 代码随想录 404.左叶子之和
  • 《3D可交互道具开发痛点解决:轻量化建模与解耦式逻辑实践》
  • 中铁雄安建设有限公司网站简述商务网站建设的步骤
  • 《3D开放世界地形开发:动态LOD与智能融合的轻量化实战路径》
  • 兽装定制网站wordpress商店安装
  • Redis(70)分布式锁的超时机制如何实现?
  • 自学网站免费晋中seo排名
  • WPF 联合 Web 开发调试流程梳理(基于 Microsoft.Web.WebView2)
  • 最簡實時性操作系統之任務鏈表
  • LeetCode:886. 可能的二分法