习题—死锁
操作系统复习题

1.分时系统中,为使多个用户能够同时与系统交互,最关键的问题是系统能及时接收多个用户的输入。
(×)2.一个进程正在临界区中间执行时,不能被中断。
(×)3.系统处于不安全状态必然导致系统死锁。
(×)4.请求分段存储管理中,分段的尺寸要受主存空间的限制。
(√)5.信号量的初值可以为负数。
(×)6.最佳适应算法比首次适应算法具有更好的内存利用率。
(×)7.为提高对换空间的利用率,一般对其使用连续的分配方式。
(√)8.设备独立性是指每类设备有自己的设备驱动程序。
(×)9.Windows XP是一个多用户、多任务的操作系统。
(√)10.虚拟设备是指允许用户使用比系统中具有的物理设备更多的设备。
(×)11.多个进程可以对应同一个程序,且一个进程也可能会执行多个程序。
(√)12. 一个进程的状态发生变化总会引起其他一些进程的状态发生变化。
(×)13.在引入线程的OS中,线程是资源分配和调度的基本单位。
(×)14.对物理文件来说,顺序文件必须采用连续分配方式,而链接文件和索引文件可采用离散分配方式。
(√)15.引入缓冲区能使CPU与I/O设备之间速度不匹配的情况得到改善,但并不能减少设备中断CPU的次数。
(×)16.大多数低速设备都是独占设备。
(×)17.竞争可同时共享的资源,不会导致系统进入死锁状态。
(√)18.请求分页系统中,一条指令执行期间产生的缺页次数可能会超过四次。
(√)19.文件系统中,所有文件的目录信息集中存放在内存的一个特定区域中。
(×)20.由于设备驱动程序与硬件紧密相关,因此,系统中配备多少个设备就必须配备同样数量的设备驱动程序。
(×)1.在设计分时操作系统时,首先要考虑的是( B )。
A、灵活性和适应性B、交互性和响应时间C、周转时间和系统吞吐量D、实时性和可靠性2.对一个正在执行的进程,如果因时间片到而被暂停执行,此时它应从执行状态转变为( D )状态。
操作系统教程习题答案

1.单项选择题
(1)进程创建原语的任务是。
A、为进程编制程序B、为进程建立PCB表
C、为进程分配CPU D、为进程分配所需的各种资源
(2)进程从执行状态变为阻塞态的原因可能是。
A、D、某个进程被唤醒
(3)进程由执行态变化到就绪态的可能原因是。
A、等待的事件发生B、高优先级进程到来
3.基本概念的解释和辨析
(1)进程和程序
a.进程是动态的,程序是静态的
b.进程是暂时的,程序是永久的
c.进程与程序的组合结构不同
(2)进程和作业
一个正在执行的进程称为作业,作业可包含一个或多个进程
(3)进程和线程
a.地址空间资源:不同的进程地址空间是相互独立的,而统一进程的各线程共享同一地址空间
b.并发性:引入线程的操作系统中,不仅进程之间可以并发执行,而且一个进程的多个线程之间亦可并发执行
单项选择题1以下关于死锁的必要条件的叙述中错误的是a只要具备了死锁的必要条件就一定发生死锁现象b解决死锁问题可以从死锁的必要条件出发c一旦出现死锁处于死锁状态的进程一定同时具备死锁的必要条件d死锁的四个必要条件之间不是完全独立的但也不是等价的2以下关于死锁检测的叙述中错误的是a只要检测出死锁尚未解除则再申请该类资源的进程一定会卷入死锁b只要检测出死锁尚未解除则使用该类资源的所有进程一定卷入了死锁c死锁检测方法对系统资源的分配不加限制只要有剩余资源就可以分配d死锁检测中系统需要反复检测各进程资源申请和分配情况3以下关于死锁问题的说法中正确的是a死锁问题是无法解决的但可以避免b死锁的预防是通过破坏进程进入不安全状态来实现的c通过避免死锁四个必要条件中的任何一个就可以实现死锁避免d死锁的检测和解除是配合使用的当系统检测到出现死锁时就通过死锁解除方法解除死锁4以下关于系统的安全状态的描述中正确的是a系统处于不安全状态一定会发生死锁b系统处于不安全状态可能会发生死锁c系统处于安全状态时也可能会发生死锁d不安全状态是死锁状态的一个特例?5资源的静态分配算法在解决死锁问题中用于??a死锁预防b死锁避免c死锁检测d死锁解除?6有3个进程共享个同类资源为使系统不会发生死锁每个进程最多可以申请个资源
操作系统课后复习题答案

操作系统课后复习题答案
1. 什么是操作系统?
答:操作系统是计算机系统中的一个系统软件,负责管理计算机硬件
与软件资源,提供用户与计算机之间的交互界面,并控制其他程序的
执行,使之有效、方便地使用计算机资源。
2. 操作系统的主要功能有哪些?
答:操作系统的主要功能包括进程管理、存储管理、文件管理、设备
管理和用户接口。
3. 什么是进程?
答:进程是操作系统进行资源分配和调度的一个独立单位,是应用程
序运行的实例。
4. 进程和程序有什么区别?
答:进程是程序的执行过程,具有动态性,而程序是静态的指令集合,存储在磁盘上。
5. 什么是死锁?
答:死锁是指两个或多个进程在执行过程中,因争夺资源而造成的一
种僵局,若无外力作用,这些进程都将无法向前推进。
6. 解决死锁的方法有哪些?
答:解决死锁的方法包括预防死锁、避免死锁、检测死锁和解除死锁。
7. 什么是虚拟内存?
答:虚拟内存是一种内存管理技术,它允许程序使用的内存大于物理
内存,通过将部分内存内容暂时存储到磁盘上,来扩展可用的内存空
间。
8. 页面置换算法有哪些?
答:页面置换算法包括最佳置换算法、先进先出置换算法、最近最少
使用置换算法和时钟置换算法。
9. 什么是文件系统?
答:文件系统是操作系统中用于存储和组织计算机文件以及它们的数
据的一种系统,它允许用户对文件进行访问、管理和修改。
10. 文件系统的主要功能是什么?
答:文件系统的主要功能包括文件存储空间的管理、目录结构的管理、文件的共享和保护以及文件数据的存取控制。
电大操作系统 第2章教材习题解答

第2章进程管理“练习与思考”解答1.基本概念和术语进程、进程互斥、进程同步、临界资源、临界区、死锁进程是程序在并发环境中的执行过程。
进程互斥:各个进程彼此不知道对方的存在,逻辑上没有关系,由于竞争同一资源(如打印机、文件等)而发生相互制约。
进程同步:各个进程不知对方的名字,但通过对某些对象(如I/O缓冲区)的共同存取来协同完成一项任务。
临界资源:一次仅允许一个进程使用的资源。
临界区:在每个进程中访问临界资源的那段程序。
死锁是指在一个进程集合中的每个进程都在等待仅由该集合中的另一个进程才能引发的事件而无限期地僵持下去的局面。
2.基本原理和技术(1)在操作系统中为什么要引入进程概念?它与程序的区别和联系是什么?在操作系统中,由于多道程序并发执行时共享系统资源,共同决定这些资源的状态,因此系统中各程序在执行过程中就出现了相互制约的新关系,程序的执行出现“走走停停”的新状态。
这些都是在程序的动态过程中发生的。
用程序这个静态概念已不能如实反映程序并发执行过程中的这些特征。
为此,人们引入“进程”这一概念来描述程序动态执行过程的性质。
进程与程序的主要区别是:·进程是动态的;程序是静态的。
·进程有独立性,能并发执行;程序不能并发执行。
·二者无一一对应关系。
·进程异步运行,会相互制约;程序不具备此特征。
但进程与程序又有密切的联系:进程不能脱离具体程序而虚设,程序规定了相应进程所要完成的动作。
(2)进程的基本状态有哪几种?通常在操作系统中,进程至少要有三种基本状态。
这三种基本状态是:运行态、就绪态和阻塞态(或等待态)。
(3)用如图3-23所示的进程状态转换图能够说明有关处理机管理的大量内容。
试回答:①什么事件引起每次显著的状态变迁?②下述状态变迁因果关系能否发生?为什么?(A)2→1 (B)3→2 (C)4→1图3-23 进程状态转换图①就绪→运行:CPU空闲,就绪态进程被调度程序选中。
第3章处理机调度与死锁课后习题解答

第3章 处理机调度与死锁
12.在解决死锁问题的几个方法中,哪种方法最易实现? 哪种方法资源利用率最高? 【解答】解决死锁问题的方法有:死锁的预防、死锁的避免、死锁
的检测和解除等。
死锁的预防:主要是破坏产生死锁的必要条件。该方法容易实现,但 资源的利用率低。 死锁的避免:比较常用的有银行家算法。在该算法中有一些数据结构 及必要的计算,因此,实现起来不太容易,但资源的利用率最高。 死锁的检测和解除:是基于死锁定理而设计的,定期或不定期运行该 算法对系统的状态进行检测,发现死锁便予以解除。其中,需要比较 一下各种死锁解除方案的代价,找到代价最小的方案。该算法资源利 用率较高,但最难实现。因此,在以上几种方法中,死锁的预防最易 实现;死锁的避免资源利用率最高。
15.说明Linux系统的进程有哪几个状态? 【解答】 Linux系统内核在进程控制块中用state成员描述 进程当前的状态,并明确定义了5种进程状态。它们分别 是: (1)TASK-RUNNING状态,Linux系统中的运行状态实 际包含了上述基本状态中的执行和就绪两种状态。 (2)TASK-INTERRUPTIBLE状态,可中断的等待态。 (3)TASK-UNINTERRUPTIBLE状态,等待态,不可中 断状态。 (4)TASK-ZOMBIE状态,僵死态。 (5)TASK-STOPPED状态,暂停态。
1
第3章 处理机调度与死锁
2.高级调度与低级调度的功能是什么? 【解答】高级调度即作业调度。作业调度又称为高 级调度或长调度,用于选择把外存上处于后备队列 中的哪些作业调入内存,并为它们创建进程、分配 必要的资源。然后,再将新创建的进程排在就绪队 列上,准备执行。低级调度又称为进程调度,它的 功能是按照某种策略和算法,将处理机分配给一个 处于就绪状态的进程。
(完整版)计算机操作系统(第四版)课后习题答案第三章

第三章处理机调度与死锁1,高级调度与低级调度的主要任务是什么?为什么要引入中级调度?【解】(1)高级调度主要任务是用于决定把外存上处于后备队列中的那些作业调入内存,并为它们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。
(2)低级调度主要任务是决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。
(3)引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。
为此,应使那些暂时不能运行的进程不再占用宝贵的内存空间,而将它们调至外存上去等待,称此时的进程状态为就绪驻外存状态或挂起状态。
当这些进程重又具备运行条件,且内存又稍有空闲时,由中级调度决定,将外存上的那些重又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上,等待进程调度。
3、何谓作业、作业步和作业流?【解】作业包含通常的程序和数据,还配有作业说明书。
系统根据该说明书对程序的运行进行控制。
批处理系统中是以作业为基本单位从外存调入内存。
作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。
作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。
4、在什么情冴下需要使用作业控制块JCB?其中包含了哪些内容?【解】每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。
JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU 繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10) 作业完成时间11) 作业退出时间12) 资源使用情况等5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业?【解】作业调度每次接纳进入内存的作业数,取决于多道程序度。
操作系统第三版习题答案
操作系统第三版习题答案操作系统是计算机科学中的核心课程之一,它涉及到计算机系统的管理和协调资源分配。
第三版的习题答案通常涵盖了操作系统的基本概念、原理和实现方法。
以下是一些可能的习题答案示例:# 操作系统第三版习题答案第一章:操作系统概述1. 操作系统的定义:操作系统是一个系统软件,负责管理计算机硬件资源,并为用户和其他软件提供运行环境和控制硬件的手段。
2. 操作系统的主要功能:包括进程管理、内存管理、文件系统管理、输入/输出设备管理等。
第二章:进程管理1. 进程的概念:进程是操作系统进行资源分配和调度的一个独立单位,是程序的执行实例。
2. 进程的状态:通常包括就绪态、运行态、阻塞态和终止态。
第三章:线程1. 线程与进程的区别:线程是进程中的一个执行流,比进程更轻量级,同一进程内的线程共享进程资源。
2. 线程的创建和管理:操作系统提供了API来创建和管理线程,例如Pthread库。
第四章:内存管理1. 内存管理的作用:负责分配和回收内存资源,确保程序运行时有足够的内存空间。
2. 虚拟内存:一种内存管理技术,允许计算机通过硬盘来扩展可用的内存容量。
第五章:文件系统1. 文件系统的功能:文件系统负责存储、组织和访问文件数据。
2. 文件的属性:包括文件类型、大小、创建时间、访问权限等。
第六章:输入/输出系统1. I/O设备分类:包括块设备、字符设备、网络设备等。
2. I/O控制方式:包括程序控制方式、中断驱动方式和DMA方式。
第七章:死锁1. 死锁的条件:互斥条件、占有和等待条件、不可剥夺条件、循环等待条件。
2. 死锁的预防和避免:通过破坏死锁条件来预防死锁的发生。
第八章:操作系统安全1. 安全机制:包括用户身份验证、访问控制、数据加密等。
2. 安全策略:确定哪些用户可以访问哪些资源。
结语操作系统习题的答案不仅需要理解理论知识,还需要通过实践来加深理解。
希望这些答案能够帮助你更好地掌握操作系统的知识点。
计算机操作系统(第四版)课后习题答案第三章
第三章处理机调度与死锁1,高级调度与低级调度的主要任务是什么?为什么要引入中级调度?【解】(1)高级调度主要任务是用于决定把外存上处于后备队列中的那些作业调入内存,并为它们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。
(2)低级调度主要任务是决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。
(3)引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。
为此,应使那些暂时不能运行的进程不再占用宝贵的内存空间,而将它们调至外存上去等待,称此时的进程状态为就绪驻外存状态或挂起状态。
当这些进程重又具备运行条件,且内存又稍有空闲时,由中级调度决定,将外存上的那些重又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上,等待进程调度。
3、何谓作业、作业步和作业流?【解】作业包含通常的程序和数据,还配有作业说明书。
系统根据该说明书对程序的运行进行控制。
批处理系统中是以作业为基本单位从外存调入内存。
作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。
作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。
4、在什么情冴下需要使用作业控制块JCB?其中包含了哪些内容?【解】每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。
JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU 繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10) 作业完成时间11) 作业退出时间12) 资源使用情况等5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业?【解】作业调度每次接纳进入内存的作业数,取决于多道程序度。
操作系统课后习题答案
操作系统课后习题答案问题一:简述进程和线程的区别。
进程是操作系统进行资源分配和调度的一个独立单位,它是程序在数据集上的一次动态执行过程。
线程是进程中的一个实体,是CPU调度和分派的基本单位,比进程更小的能独立运行的基本单位。
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如执行栈),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。
问题二:什么是死锁?如何避免死锁?死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种僵局,若无外力作用,这些进程都将无法向前推进。
避免死锁的方法包括:1. 互斥条件:确保系统资源足够,以避免多个进程争夺同一资源。
2. 请求和保持条件:设计资源分配策略,确保进程不会在请求新资源的同时保持已分配的资源。
3. 不剥夺条件:一旦资源被分配给某进程,除非该进程自愿释放资源,否则系统不应强制剥夺。
4. 循环等待条件:通过资源分配图检测循环等待并进行处理。
问题三:描述操作系统中的分页和分段机制。
分页机制是操作系统用来实现虚拟内存的一种技术,它将物理内存分割成固定大小的页,并将这些页与进程的虚拟地址空间中的页表项关联起来。
当进程访问一个不在物理内存中的虚拟地址时,操作系统会触发一个缺页中断,将所需的页从辅助存储器加载到物理内存中。
分段机制则是将程序的地址空间划分为多个段,每个段可以是不同的大小,并且可以独立地被加载和链接。
段表项包含了段的基地址和段的长度信息。
当程序访问一个段内的地址时,操作系统将虚拟地址转换为物理地址。
问题四:什么是文件系统?它有什么作用?文件系统是操作系统用于有效地存储、组织、管理和访问磁盘上的数据的一种系统。
它的作用包括:1. 数据持久性:确保即使在系统崩溃或电源故障后,数据也不会丢失。
2. 数据共享:允许多个用户或进程访问和共享数据。
3. 抽象:为用户和应用程序提供统一的接口来访问存储在磁盘上的数据。
4. 安全性:通过权限控制保护数据不被未授权访问。
《操作系统教程》习题答案
《操作系统教程》习题答案习题11(单项选择题(1)大中小型计算机是以为中心的计算机系统。
A、CPUB、存储器C、系统总线D、通道(2)以下关于操作系统的说法正确的是。
A、批处理系统是实现人机交互的系统B、批处理系统具有批处理功能,但不具有交互能力C、分时系统是实现自动控制,无须人为干预的系统D、分时系统即具有分时交互能力,又具有批处理能力(3)操作系统的职能是管理软硬件资源、合理地组织计算机工作流程和。
A、为用户提供良好的工作环境和接口B、对用户的命令作出快速响应C、作为服务机构向其它站点提供优质服务D、防止有人以非法手段进入系统(4)设计实时操作系统时,首先应考虑系统的。
A、可靠性和灵活性B、实时性和可靠性C、优良性和分配性D、灵活性和分配性(5)多道程序设计是指。
A、在分布式系统中同一时刻运行多个程序B、在一台处理器上并行运行多个程序C、在实时系统中并发运行多个程序D、在一台处理器上并发运行多个程序(6)以下关于并发性和并行性的说法正确的是。
A、并发性是指两个及多个事件在同一时刻发生B、并发性是指两个及多个事件在同一时间间隔内发生C、并行性是指两个及多个事件在同一时间间隔内发生D、并发性是指进程,并行性是指程序(1)B (2)B (3)A (4)B (5)D (6)B2(填空题(1)微机是以总线为纽带构成的计算机系统。
(2)在批处理兼分时系统中,往往把由分时系统控制的作业称为前台作业,把由批处理系统控制的作业称为后台作业。
(3)在分时系统中,若时间片长度一定,则用户数越多,系统响应时间越慢。
(4)分布式操作系统能使系统中若干台计算机协同完成一个共同的任务,分解问题成为子计算并使之在系统中各台计算机上并行执行,以充分利用各计算机的优势。
(5)用户通过网络操作系统可以网络通信、资源共享,从而大大扩展了计算机的应用范围。
3(简答题(1)什么是操作系统,现代操作系统的基本特征是什么, 并发性 (2)什么是批处理系统,衡量批处理系统好坏的主要指标是什么, 及时性 (3)试述分时系统的原理及其特性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
死锁与饥饿
死锁: indefinite wait.
可察觉
多道环境中, 多道环境中,并发改善系 统的资源的利用率。 统的资源的利用率。 但可能存在一种危险 __死锁 死锁。 __死锁。
饥饿: not necessarily in wait state.
?
死锁和饥饿都是由于进程竞争资源而引起 的.
死锁定义
一组进程中的每一个进程,均无限期地等待此组进程中某 个其他进程占有的,因而永远无法得到的资源,这种现象 称为进程死锁。 资源竞争可能 可能导致死锁,但不一定 不一定就会死锁,死锁的出现 可能 不一定 主要取决于进程推进速度以及对资源的申请顺序。 因此产生死锁的因素不仅与系统拥有的资源数量 资源数量有关,而 资源数量 且与资源的分配策略 分配策略(剥夺式还是非剥夺式)、进程对资 分配策略 源的使用顺序 使用顺序以及并发进程推进的速度 推进的速度有关。 使用顺序 推进的速度
ForksControl : monitor 2.利用管程解决 2.利用管程解决 type T = array [0, ……,4 ] of integer; B = array [0, ……,4 ] of boolean; var forks, Right , left : T; ready : B; putdown(0) pickup(0) pickup(4) procedure entry Pickup ( var me : integer ); begin 0 1 2 3 4 ).wait; if fork ( me ) <> 2 then ready ( me ).wait; forks ( right ( me )) := forks ( right ( me )) - 1; 2 1 2 2 2 1 2 Fork forks ( left ( me )) := forks ( left ( me )) - 1; end ); procedure entry Putdown ( var me : integer ); 1 2 3 4 0 Right begin forks ( right ( me )) := forks ( right ( me )) + 1; 4 0 1 2 3 left forks ( left ( me )) := forks ( left ( me )) + 1; 0 1 2 3 4 ).signal signal; if fork ( right (me )) = 2 then ready (right( me) ).signal; ).signal signal; if fork ( left (me )) = 2 then ready ( left(me) ).signal; .T. .T. .T. .T. .T. .F. Ready end begin for i = 0 to 4 do begin fork (i) :=2; right(i)=[i+1] mod 5; left(i)=[i+1] mod 5; ready (i):= true; end
p1
p2
p3
r2
r4
无
有 增加边(p3,r2)
r1
r3
p1
p2
p3
r2
r4
六、死锁的恢复
1. 重新启动 简单,代价大,涉及未参与死锁的进程。 2. 终止进程(process termination) 环路上占有资源的进程。 (1) 一次性全部终止;(2) 逐步终止(优先级,代价函数) 3. 剥夺资源(resource preemption) (1)逐步剥夺 (2)一次剥夺
Procedure S: P(S1); 驶入D; P(S2); 驶入B; V(S1); P(S3); 驶入A; V(S2); 驶出A; V(S3)
Procedure E: Procedure W: P(S2); P(S1); 驶入B; P(S4); P(S3); 驶入C; 驶入A; 驶入D; V(S2); V(S4); P(S4); 驶出D; 驶入C; V(S1); V(S3); 驶出C; COBEGIN V(S4); S1:S; … ; Sm:S; E1:E; … ; En:E; W1:W; ... ; Wo:W COEND;
R={A(10),B(5),C(7)},P={p0,p1,p2,p3,p4} Claim A B C 7 5 3 3 2 2 9 0 2 2 2 2 4 3 3 Allocation A B C 0 1 0 2 0 0 3 0 2 2 1 1 0 0 2 Need A B C 7 4 3 1 2 2 6 0 0 0 1 1 4 3 1 Available A B C 3 3 2 Work Finish A B C
四、死锁的检测
数据结构: Available: array[1..m]of integer; Allocation: array[1..n,1..m]of integer; Request: array[1..n,1..m]of integer; 临时变量: Work: array[1..m]of integer; Finish: array[1..n]of boolean;
一、什么是死锁
例子: r1 和 r2为可再用资源; P1: apply for r1; ... 1 apply for r2; ... return r1; ... return r2; 2 P2: apply for r2; ... apply for r1; ... return r1; ... return r2;
考虑因素: 死锁发生频度; 死锁影响进程。 1. 等待时检测: 发现早,恢复代价小,开销大(overhead)。 2. 定时检测: 3. 资源(eg. CPU)利用率下降时检测。
五、 死锁检测时刻
例1. P={p1,p2,p3}, R={r1(1),r2(2),r3(1),r4(3)} E={(p1,r1),(p2,r3),(r1,p2),(r2,p1),(r2,p2),(r3,p3)} r1 r3
讨论
Remarks1: 银行家算法要求条件:进程所需资源最大量, 这个信息 对于充要性分析是不够的。 Remarks2: 预先给出进程有关资源的命令序列,则可以给出死锁避免 的充要性算法,但事先给出命令序列是困难的(程序的分枝 和循环)。 Remarks3: 银行家算法与预防策略相比,提高了系统的资源利用率,但 增加了系统的开销。
1.利用信号量实现同步 经分析可知,放在桌子上的筷子是临界资源,在一段时间内 只允许一位哲学家使用。为了实现对筷子的互斥使用,可 以用一个信号量表示一只筷子,由这五个信号量构成信号 量数组。其描述如下: Var chopstick: array[0,…,4] of semaphore;
Var chopstick :array[0,…,4] of semaphore :=(1,1,1,1 ,1); repeat Swait (chopstick(i+1) mod 5],chopstick[i]); think; wait (chopstick[i]); wait (chopstick(i+1) mod 5]); : Ssingal (chopstick(i+1) mod 5],chopstick[i]); eat; : signal (chopstick[i]); signal (chopstick(i+1) mod 5]); : 假如五位哲学家同时饥饿而各自拿起左边的筷子时, 假如五位哲学家同时饥饿而各自拿起左边的筷子时, think; 就会使五个信号量chopstick均为 ,出现死锁。 均为0,出现死锁。 就会使五个信号量 均为 until false;
二、死锁预防
对进程有关资源的活动加限制,所有进程 遵循这种限制,即可保证没有死锁发生。
优点:简单,系统不需要做什么。 缺点:对进程的约束,违反约束仍可能死锁。
预防方法:
预先分配法:进程运行前申请所需全部资源。 有序分配法:
例子
A W:直行 C B D E:左转
S:左转 死锁的可能性:情形1,情形2 资源编号:F(D)=1; F(B)=2; F(A)=3; F(C)=4; Var S1,S2,S3,S4:semaphore; (1,1,1,1)
必须处理,无论代价如何
目前系统实际如此
Eg. UNIX Windows
八、 饥饿与饿死
饥饿:没有时间上界的等待
排队等待 忙式等待
饿死:等待时间超过极限(deadline) 饿死 vs 死锁
死锁进程处于等待状态,饿死不然 死锁可以检测(有循环等待),饿死不然 死锁一定涉及多个进程,但饿死可能只有一个。 死锁进程等待永远不会被释放的资源,饿死进程等待会被释放但 却不会分配给自己的资源,其等待时限没有上界。
P0: p1: p2: p3: p4:
是否安全? 安全,进程序列:<p1,p3,p4,p2,p0> p1请求:Request[1]=(1,0,2) 安全,进程序列:<p1,p3,p4,p0,p2> p4请求:Request[4]=(3,3,0), 不能满足,等待; p0请求:Request[0]=(0,2,0), 不安全,等待。
九、死锁例子——哲学家进餐
有五个哲学家共用一张圆桌, 有五个哲学家共用一张圆桌,分别坐在周围的五张 椅子上,在圆桌上有五个碗和五只筷子, 椅子上,在圆桌上有五个碗和五只筷子,他们的 生活方式是交替在进行思考和进餐。平时, 生活方式是交替在进行思考和进餐。平时,一个 哲学家进行思考,饥饿时便试图取用其左右最近 哲学家进行思考, 他的筷子,只有在他拿到两只筷子时才能进餐。 他的筷子,只有在他拿到两只筷子时才能进餐。 进餐毕,放下筷子继续思考。 进餐毕,放下筷子继续思考。
在哲学家就餐问题中,如果将先拿起左边的筷子的哲 在哲学家就餐问题中, 学家称为左撇子, 学家称为左撇子,而将先拿起右边筷子的哲学家称为 右撇子,请说明在同时存在左撇子和右撇子的情况下, 右撇子,请说明在同时存在左撇子和右撇子的情况下, 任何就座安排都不会产生死锁。 任何就座安排都不会产生死锁。