本文内容整理自西安交通大学软件学院田丽华老师的课件,仅供学习使用,请勿转载

操作系统系列笔记汇总:操作系统笔记及思维导图汇总附复习建议_Qlz的博客-CSDN博客

文章目录

文章目录

  • 文章目录
  • 思维导图
  • Introduction
    • 定义
    • 资源的分类
    • 死锁的原因
  • Deadlock Characterization
  • System Model
    • Resource-Allocation Graph(资源分配图)
    • Basic Facts
  • Methods for Handling Deadlocks
    • 鸵鸟策略
    • Deadlock Prevention
      • Mutual Exclusion
      • Hold and Wait
      • No Preemption
        • 过程
      • Circular Wait
    • Deadlock Avoidance(死锁避免)
      • Safe State
      • Basic Facts
    • Deadlock Detection(死锁检测)

思维导图

死锁思维导图

Introduction

定义

计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进。

A set of blocked processes each holding a resource and waiting to acquire a resource held by another process in the set

  • 共享资源的获取和释放
  • Each process utilizes a resource as follows(每一个进程如下的利用资源)
    • request (申请):如果申请不能立即被允许,那么进程必须等待直到能获取资源。(通过系统调用或者信号量来进行资源的申请和释放)
    • use (使用):进程使用资源进行相关操作
    • Release(释放):进程释放资源

如果一个进程要使用OS管理的资源,需先向系统提出申请,如果有可用资源,系统才进行分配。

资源的分类

  • 根据资源性质:

    • 可抢占资源—指资源占有进程虽然需要使用该资源,但另一个进程却可强行把资源从占有者进程处抢来。
    • 不可抢占资源—指只有占用者进程不再需要使用该资源而主动释放资源外,其它进程不得在占有者进程使用资源过程中强行抢占。
  • 根据使用方式:
    • 共享资源:CPU、主存、硬盘
    • 独占资源:打印机,读卡机,磁带驱动器
  • 根据使用期限
    • 永久资源:可顺序重复使用的资源
    • 临时性资源:由一个进程产生,被另外一个进程使用短暂时间之后便无用的资源

死锁的原因

  • 竞争资源引起死锁

    • 当系统中供多个进程所使用的资源,不足以同时满足它们的需要时,引起它们对资源的竞争而产生死锁
  • 进程推进顺序不当引起死锁
    • 在多道程序系统中,并发执行的进程推进序列不可预测
    • 有些推进顺序,进程可以顺利完成
    • 有的推进顺序会引起进程无限期地等待永远不会发生的条件而不能向前推进,造成死锁

Deadlock Characterization

Deadlock can arise if four conditions hold simultaneously. 四个条件同时出现,死锁将会发生

  • Mutual exclusion: only one process at a time can use a resource

    互斥:一次只有一个进程可以使用一个资源

  • Hold and wait: a process holding at le ast one resource is waiting to acquire additional resources held by other processes.
    占有并等待:一个至少持有一个资源的进程等待获得额外的由其他进程所持有的资源,请求与保持

  • No preemption: a resource can be released only voluntarily by the process holding it, after that process has completed its task.
    不可抢占:一个资源只有当持有它的进程完成任务后,自由的释放,非剥夺

  • Circular wait: there exists a set {P0, P1, …, P0} of waiting processes such that P0 is waiting for a resource that is held by P1, P1 is waiting for a resource that is held by P2, …, Pn–1 is waiting for a resource that is held by Pn, and P0 is waiting for a resource that is held by P0.

    循环等待:等待资源的进程之间存在环

System Model

  • Resource types (资源类型)R1, R2, . . ., Rm

    • CPU cycles, memory space, I/O devices
  • Each resource type Ri has Wi instances. 每一种资源Ri有Wi 种实例
  • Process Pi (进程Pi)

Resource-Allocation Graph(资源分配图)

A set of vertices V and a set of edges E.(一个顶点的集合V和边的集合E)

  • V is partitioned into two types:(V被分为两个部分)

    • P = {P1, P2, …, Pn}, the set consisting of all the processes in the system.(P:含有系统中全部的进程
    • R = {R1, R2, …, Rm}, the set consisting of all resource types in the system.(R:含有系统中全部的资源
  • request edge – directed edge $ P_i \rightarrow R_j$
  • assignment edge – directed edge $ R_j \rightarrow P_i $

Basic Facts

  • If graph contains no cycles →\rightarrow→ no deadlock.
  • If graph contains a cycle →\rightarrow→
    • if only one instance per resource type, then deadlock.
    • if several instances per resource type, possibility of deadlock.

Methods for Handling Deadlocks

忽略、预防、避免、检测、解除

  • Ignore the problem and pretend that deadlocks never occur in the system; used by most operating systems, including UNIX. 鸵鸟策略
  • Ensure that the system will never enter a deadlock state. 预防死锁,避免死锁
  • Allow the system to enter a deadlock state and then recover. 死锁检测

鸵鸟策略

  • 像鸵鸟一样对死锁视而不见
  • 处理死锁的代价很大,而且常常给用户带来许多不便的限制。
  • 大多数用户宁可在极偶然的情况下发生死锁,也不愿限制每个用户只能创建一个进程、只能打开一个文件等等。
  • 于是不得不在方便性正确性之间作出折衷。

Deadlock Prevention

Restrain the ways request can be made.(抑制死锁发生的必要条件)

  • 上述预防死锁的方法通过限制资源请求来打破死锁的四个必要条件之一,从而预防死锁的发生。
  • 其可能的副作用:
    • 降低设备利用率和吞吐量
    • 可能有进程饥饿

Mutual Exclusion

not required for sharable resources; must hold for nonsharable resources.

互斥:共享资源不是必须的,必须保持非共享资源

Hold and Wait

must guarantee that whenever a process requests a resource, it does not hold any other resources.
占有并等待:必须保证进程申请资源的时候没有占有其他资源

  • Require process to request and be allocated all its resources before it begins execution, (要求进程在执行前一次申请全部的资源)
  • or allow process to request resources only when the process has none.没有资源时,可以申请资源。在申请更多其它资源之前,需要释放已有资源
  • Low resource utilization; starvation possible. 利用率低,可能出现饥饿

No Preemption

  • If a process that is holding some resources requests another resource that cannot be immediately allocated to it, then all resources currently being held are released.(如果一个进程的申请没有实现,它要释放所有占有的资源)
  • Preempted resources are added to the list of resources for which the process is waiting.(抢占的资源放入进程等待资源列表中)
  • Process will be restarted only when it can regain its old resources, as well as the new ones that it is requesting.
    只有进程能够重新得到旧的资源和新申请的资源时,才可以重新开始

过程

  • 当进程A提出资源申请时, 首先检查这些资源是否可用
  • 是,则分配之,否则检查这些资源是否已分配给了另外的进程(而这个进程又在等待其他的资源)
  • 如果存在这样的进程B,从进程B剥夺进程A所需的资源分配给进程A使用.相反, 则进程A等待,当进程A在等待的过程中,它所持有资源可能会被剥夺分配给其他的进程.这样,进程A只有得到了它正在申请有资源以及等待过程中被剥夺的资源后,才能恢复运行.

Circular Wait

impose a total ordering of all resource types, and require that each process requests resources in an increasing order of enumeration.(循环等待:将所有的资源类型放入资源列表中,并且要求进程按照资源表申请资源)

  • 所有进程对资源的请求必须严格按资源序号递增的次序提出。
  • 总有一个进程占据了较高序号的资源,它继续请求的资源必然是空闲的,可以一直向前推进。
  • 在资源分配图中不可能出现环路,因而摒弃了“环路等待”条件
  • 这种策略可以提高资源利用率,但在进程使用各类资源的顺序与系统规定的顺序不同时会造成资源浪费的情况。

Deadlock Avoidance(死锁避免)

  • 允许进程动态地申请资源,系统在进行资源分配之前,先计算资源分配的安全性
  • 若此次分配不会导致系统从安全状态向不安全状态转换,便可将资源分配给进程;否则不分配资源,进程必须阻塞等待。

Safe State

  • 安全状态是指系统的一种状态,在此状态下,系统能按某种顺序(例如P1、P2……Pn)来为各个进程分配其所需资源,直至最大需求,使每个进程都可顺序地一个个地完成。这个序列(P1、P2…….Pn)称为安全序列

  • 若某一时刻不存在一个安全序列,则称系统处于不安全状态。

  • When a process requests an available resource, system must decide if immediate allocation leaves the system in a safe state.
    当进程申请一个有效的资源的时候,系统必须确定分配后是安全的

  • System is in safe state if there exists a safe sequence of all processes. 如果存在一个安全序列系统处于安全态

  • Sequence <P1, P2, …, Pn> is safe if for each Pi, the resources that Pi can still request can be satisfied by currently available resources + resources held by all the Pj, with j<i.
    进程序列是安全的,如果每一个进程Pi所申请的资源小于当前可用资源数加上其他进程Pj所持有的该资源数

    • If Pi resource needs are not immediately available, then Pi can wait until all Pj have finished.
    • When Pj is finished, Pi can obtain needed resources, execute, return allocated resources, and terminate.
    • When Pi terminates, Pi+1 can obtain its needed resources, and so on.

Basic Facts

  • 如果一个系统在安全状态,就没有死锁
  • 如果系统死锁,则处于不安全状态
  • 如果一个系统处于不安全状态,就有可能死锁
  • 避免:确保系统永远不会进入不安全状态

Deadlock Detection(死锁检测)

  • Allow system to enter deadlock state (允许进入死锁状态)
  • Detection algorithm(检测死锁)
  • Recovery scheme(恢复策略)

后面实在不想看了,就没整理…

不过考试只考了死锁检测(银行家算法)的原理,6分简答题
可以对照着思维导图自行复习,考完试回头看这里貌似也不是很难,把算法原理和数据结构理解清楚就ok了

操作系统第八章笔记---死锁相关推荐

  1. 计算机操作系统第八章磁盘存储器的管理

    适用计算机操作系统(OS)(第四版) 自己的学习笔记,PPT及图片来源网络及自己老师,侵删. 三硬一软一接口--2硬 计算机操作系统第八章 第八章磁盘存储器的管理 8.1 外存的组织方式 8.1.1 ...

  2. 「操作系统」深入理解死锁(什么是死锁?死锁形成条件?如何避免死锁?如何排查死锁?)

    「操作系统」深入理解死锁(什么是死锁?死锁形成条件?如何避免死锁?如何排查死锁?) 参考&鸣谢 什么是线程死锁?形成条件是什么?如何避免? Java圈子 面试官:如何快速排查死锁?如何避免死锁 ...

  3. 数据库,计算机网络、操作系统刷题笔记20

    数据库,计算机网络.操作系统刷题笔记20 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其s ...

  4. 王道操作系统:完整笔记

    <王道操作系统>学习笔记和总目录导航 本篇文章是阅读和学习<王道操作系统>与<现代操作系统>后总结的理论知识笔记导航,专门用于遗忘后复习 下面的文章是我在学习了&l ...

  5. 电子科技大学操作系统期末复习笔记(二):进程与并发控制

    目录 前言 进程管理 进程基本知识 程序的顺序执行 前趋图 程序的并发执行 并发程序 进程的定义和特征 进程的特征和状态 操作系统内核 定义 功能 原语 原子操作的实现 操作系统控制结构 进程控制块P ...

  6. 数据库,计算机网络、操作系统刷题笔记17

    数据库,计算机网络.操作系统刷题笔记17 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其s ...

  7. 华南理工大学计算机操作系统课程设计大作业银行家死锁避免算法模拟,2016春操作系统大作业银行家死锁避免算法模拟.doc...

    文档介绍: 2016春操作系统大作业银行家死锁避免算法模拟20160501华南理工大学"计算机操作系统"课程设计大作业计算机科学与技术专业:春2015班级:号:2015047420 ...

  8. linux课程设计死锁避免,linux操作系统课程设计—车辆死锁.doc

    linux操作系统课程设计-车辆死锁.doc 键入文字"操作系统原理"课程设计BX090709吴沛儒操作系统原理课程设计报告姓名吴沛儒班级BX0907学号9指导老师胡静二〇一一年十 ...

  9. 操作系统习题4—进程死锁

    操作系统习题4-进程死锁 1.试解释在十字路口产生的交通死锁现象中包括了死锁产生的 4 个必要条件,并给出避免产生交通死锁的简要规则. 四个必要条件: ① 互斥:同一时刻只能有一辆车占据道路上的同一个 ...

最新文章

  1. [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)
  2. 农用地包括哪些地类_征用土地公告应当包括哪些内容?|楹庭拆迁律师
  3. linux dd devzero,makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令
  4. no.5_得到4升的水
  5. Java 并发实践 — ConcurrentHashMap 与 CAS
  6. 深扒支点的梦起与破灭-千氪
  7. ddos源码 ntp_详解 NTP反射型DDos攻击
  8. c++调用求平方根函数_如何使用java语言求一个正整数的平方根?(不使用库函数)...
  9. 【转发活动】Hey, 是你吗? | 寻粉启示
  10. AfterLogic WebMail
  11. python简单的编程_简单的Python2.7编程初学经验总结
  12. 我的云之旅--hadoop单机设置(2)
  13. 接第三方图片滑动验证极验
  14. 利用VS2010模仿QQ2011登陆界面
  15. 2019年PMP考试模拟题(附答案解析)
  16. win8普通版连接远程桌面---RDPWrap
  17. php api 实例maccms,api.php · do do/maccms10 - Gitee.com
  18. 如何让品牌进入元宇宙
  19. 正则表达式(二)验证邮箱、电话号码
  20. 解读第一个C++程序

热门文章

  1. Python数据可视化实战期末课程设计——各科目考试成绩可视化项目
  2. linux自动生成证书,Linux生成TLS证书
  3. iOS解决控制器转场和返场界面卡顿的一种方法
  4. android后台模拟单机,《仙梦奇缘》安卓手游 手工端 含GM后台 含文字架设教程
  5. java制作烟花源码_java源码解读-java烟花代码!
  6. 机器人运动学欧拉角姿态描述《机器人学导论》里的zyz欧拉角表述
  7. public class和class的区别
  8. 用计算机制作微课教学教案,微课应用于计算机教学
  9. 沙尘暴ppt计算机,沙尘暴课件.ppt
  10. 用sqlserver 实现带英文字母的流水码