进程同步及死锁之欧阳光明创编

合集下载

计算机操作系统第四版课后习题答案第二章之欧阳索引创编

计算机操作系统第四版课后习题答案第二章之欧阳索引创编

第二章欧阳索引(2021.02.02)1. 什么是前趋图?为什么要引入前趋图?答:前趋图(Precedence Graph)是一个有向无循环图,记为DAG(Directed Acyclic Graph),用于描述进程之间执行的前后关系。

2. 画出下面四条诧句的前趋图:S1=a:=x+y;S2=b:=z+1;S3=c:=ab;S4=w:=c+1;答:其前趋图为:3. 为什么法度并发执行会产生间断性特征?法度在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的进程之间,形成了相互制约的关系,从而也就使得进程在执行期间呈现间断性。

4. 法度并发执行时为什么会失去封闭性和可再现性?因为法度并发执行时,是多个法度共享系统中的各种资源,因而这些资源的状态是由多个法度来修改,致使法度的运行失去了封闭性。

而法度一旦失去了封闭性也会招致其再失去可再现性。

5. 在操纵系统中为什么要引入进程概念?它会产生什么样的影响?为了使法度在多道法度环境下能并发执行,并能对并发执行的法度加以控制和描述,从而在操纵系统中引入了进程概念。

影响: 使法度的并发执行得以实行。

欧阳索引创编2021.02.026. 试从静态性,并发性和自力性上比较进程和法度?a. 静态性是进程最基本的特性,可表示为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤消而消亡,因而进程由一定的生命期;而法度只是一组有序指令的集合,是静态实体。

b. 并发性是进程的重要特征,同时也是OS的重要特征。

引入进程的目的正是为了使其法度能和其它建立了进程的法度并发执行,而法度自己是不克不及并发执行的。

c. 自力性是指进程实体是一个能自力运行的基本单位,同时也是系统中自力获得资源和自力调度的基本单位。

而对未建立任何进程的法度,都不克不及作为一个自力的单位来运行。

7. 试说明PCB的作用?为什么说PCB是进程存在的唯一标记?a. PCB是进程实体的一部分,是操纵系统中最重要的记录型数据结构。

第4章 进程同步与死锁

第4章 进程同步与死锁

4.2.2 软件方法
算法1:利用共享的标志位来表示哪个并发进 程可以进入临界区。 对并发进程A与B,设置标志变量turn。若变 量turn为0则允许进程A进入临界区访问,若 进程B: 变量turn为1则允许进程 B进入临界区访问。 while(turn!=1); 算法实现代码如下。
临界区; turn=0;
4.3 信号量
4.3.1整型信号量机制 4.3.2记录型信号量机制 4.3.3 AND型信号量机制
4.3 信号量
• 从概念上将信号量类似于交通管理中的信 号灯,通过信号量的状态来决定并发进程 对临界资源的访问顺序。信号量可以在多 进程间传递简单的信号,使一个进程可以 在某位置阻塞,直到接收到特定信号后继 续运行,从而达到多进程相互协作的目的。 • 在信号量同步机制中包含“检测”与“归 还”两个操作。检测操作称为P操作,用来 发出检测信号量的操作,查看是否可访问 临界资源,若检测通过,则开始访问临界
2016/11/12
4.5.1 使用信号的管程
• • • • • 管程由四部分组成: 管程的名称; 局部于管程的数据的说明; 对数据进行操作的一组过程; 对局部于管程内部的共享数据赋初值的语 句。
2016/11/12
4.5.1 使用信号的管程
• 尽管管程提供了一种实现互斥的简便途径,但这 还不够。还需要一种办法使得进程在无法继续运 行时被阻塞。例如,在生产者-消费者问题中,很 容易将针对缓冲区是满或是空的测试放到管程过 程中,但是生产者在发现缓冲区满的时候如何阻 塞呢? • 解决的方法是引入条件变量以及相关的两个操作 原语:wait和signal。当一个管程过程发现它无法 继续运行时(例如,生产者发现缓冲区满),它 会在某个条件变量上(如full)执行wait操作。该 操作导致调用进程自身阻塞,并且还将另一个以 前等在管程之外的进程调入管程,

实验2进程同步与死锁

实验2进程同步与死锁

实验指导
❖ 死锁的可能性有两种: (1)E方向两台车分别位于A和B、S方向一台车位于C、 W方向一台车位于D。 (2)S方向两台车分别位于B和C、E方向一台车位于A、 W方向一台车位于D。
实验指导
❖ 实验的程序流程图如图所示
开始
Y
N
用户的输入是否大于Max
提示用户输入错误
创建三个方向上的线程
结束
动态显示车辆行驶情况
实验原理
❖ 死锁是指在一组进程中的各个进程均占有不会释放的资源, 但因互相申请被其他进程所占用不会释放的资源而处于的 一种永久等待状态。
❖ 死锁的四个必要条件:
(1)互斥条件(Mutual exclusion):资源不能被共享,只能由一个进 程使用。 (2)请求与保持条件(Hold and wait):已经得到资源的进程可以再次 申请新的资源。 (3)非剥夺条件(No pre-emption):已分配的资源不能从相应的进程 中被强制地剥夺。 (4)循环等待条件(Circular wait):系统中若干进程组成环路,该环 路中每个进程都在等待相邻进程已占用的资源。
DB
R1

Rm
W1

Wn
实验指导
❖ 实验的流程图如图所示
开始
随机产生一组数
随机在某位置读取
r
内容
用户的选择
w
随机在某个位置写入
某随Hale Waihona Puke 数N 读者是否已经全部读完
Y
N 写者是否已经全部写完
Y
写者是否已经全部写完 N
Y
结束
读者是否已经全部读完 N
Y
车辆行驶死锁问题
❖ 实验目的 ❖ 实验内容 ❖ 准备知识 ❖ 实验原理 ❖ 实验指导

进程同步及死锁

进程同步及死锁

附件(四)之欧侯瑞魂创作深圳年夜学实验报告课程名称:把持系统实验项目名称:进程(线程)同步及死锁学院:计算机与软件学院专业:计算机科学与技术指导教师:陈说人:学号:班级:实验时间:2015/10/23实验陈说提交时间:2015/11/13教务处制二、方法、步伐:设计解决哲学家就餐问题的并发线程.假定有6个哲学家, 围着圆桌交替地进行思考和进餐;每次进餐时, 必需同时拿到左右两边的两只筷子才华进餐;进餐后, 再放下筷子思考.这是一个典范的同时需要两个资源的例子, 如果申请资源顺序不妥, 可能会引起死锁.本实验设计6个哲学家共享一个相同的线程Philosopher, 既完成线程同步, 又预防死锁发生.实验中采纳了3种预防死锁的方法(摒弃‘环路等候’条件, 摒弃‘请求和坚持’条件, 摒弃‘不剥夺’条件), 要预防死锁, 只采纳其中的任何一种方法即可. 三.实验过程及内容:(其中:提供有简短说明的法式代码.要求:法式运行正确、符合设计要求.)1.创立工程, 注意勾选Win32 Application, 点击确定2.勾选第三个选项3.创立菜单, 有Eat、About、Exit4.在进程(线程)同步及死锁.cpp中编写代码, 此时代码有“摒弃‘环路等候’条件”、“摒弃‘请求和坚持’条件”、“摒弃‘不剥夺’条件”三种代码, 当检测其中一个时须将其余两个加以注释, 一一检测其对死锁的影响.运行结果:运行前:运行后:5.在运行时可知, 在分别“摒弃‘环路等候’条件”和“摒弃‘不剥夺’条件”的代码时不会呈现死锁, 而使用“摒弃‘请求和坚持’条件”时会发生死锁, 在理论正确前提下, 此种情况说明了代码呈现毛病.⑴摒弃‘环路等候’条件R1=ThreadID;R2=(ThreadID+1)%6;if (ThreadID == 0){R1= (ThreadID+1) % 6;R2= ThreadID;}依据摒弃‘环路等候’条件, 要有至少一位哲学家与其他哲学家拿筷子顺序分歧, 则使第0位(ThreadID = 0)哲学家从右边开始拿筷子, 其他哲学家相反.⑵摒弃‘不剥夺’条件Wait(Mutex);if (ChopstickUsed[R2]){Signal(Mutex);goto ReleaseChopstick;//将左筷子放弃失落}Signal(Mutex);若分配给的哲学家拿不到右筷子, 则将他拿到的左筷子收回.⑶摒弃‘请求和坚持’条件原代码:Wait(Mutex);if((ChopstickUsed[R1])||(ChopstickUsed[R2])){Signal(Mutex);。

第4章进程同步与死锁

第4章进程同步与死锁
入口区
临界区
退出区
其余代码区
进程A进入临界区 进程A
进程A离开临界区
进程B
进程B阻塞 进程B尝试进入临界区 进程B进入临界区 进程B离开临界区
3.临界区访问准则
无论使用将导致进程同步的错误。
(1) 空闲让进:当没有进程处于临界区,临界 资源处于空闲状态时,立即可以允许一个 进程进入临界区。
4.3 信号量
4.3.1整型信号量机制 4.3.2记录型信号量机制 4.3.3 AND型信号量机制
4.3 信号量
• 从概念上将信号量类似于交通管理中的信 号灯,通过信号量的状态来决定并发进程 对临界资源的访问顺序。信号量可以在多 进程间传递简单的信号,使一个进程可以 在某位置阻塞,直到接收到特定信号后继 续运行,从而达到多进程相互协作的目的。
第四章 进程同步与死锁
本章主要讲述以下几方面的内容:
(1) 进程同步和互斥,临界资源及临界区的基 本概念
(2) 实现进程互斥的方法 (3) 信号量机制与P、V操作 (4) 一些经典的进程同步问题 (5) 利用管程实现进程同步 (6) 进程的死锁及处理机制 (7) Linux系统的进程同步及死锁
4.1 进程同步的基本概念
临界区; turn=0;
int turn=0;
进程A:
算法2:利用双标志法判断进程是否进入临界 区。
这种算法通过使用一个flag数组来表示进程是 否希望进入临界区。对两个并发进程A与B ,若flag[0]=1则表示进程A期望进入临界区 ,若flag[1]=1则表示进f进la程g[1程B]:=1;B期望进入临界区 。进程A与B在真正进twuhr入nile=(0f;临lag[0界]&&区turn之==0)前; 先查看 一下对方的flag标志,临fla界g[如1区]=;0果; 对方正在进入临 界区则将进行等待。另外,为了避免并发 执行时的错误还需要通过一个变量turn来避

4第四章 进程同步和死锁

4第四章 进程同步和死锁

背景
机器语言实现
counter++: ① R1=counter ② R1=R1+1 ③ counter=R1 counter--: ④ R2=counter ⑤ R2=R2-1 ⑥ counter=R2
多个进程并访问和操作同一数据且执 行结果与访问发生的特定顺序有关, 称为竞争条件
5
思考案例
一个公司只有一台打印机,目前所有的电脑都通过网
调用阻塞原语blockq插入到信号量s的阻塞队列q中有灯取下一个去敲门ss1进程请求一个单位的s类资源得灯进程续运行若s0则调用ps的进程返回继续执行运行完了要出门调用一次v操作马上还回一盏灯ss1进程释放一个单位的s类资源若有进程在催债s0放个进去事完成releases23整型信号量?在整型信号量机制中的wait操作只要是信号量slt
23
整型信号量
在整型信号量机制中的wait操作,只要是信号量 S<=0,就会不断测试。因此,该机制并未遵循“让 权等待”准则,而是使进程处于“忙等”状态
24
记录型信号量
信号量机制之二:记录型信号量 记录型信号量机制则是一种不存在“忙等”现象 的进程同步机制。采取的是“让权等待”的策略,但 又会出现多个进程等待访问同一临界资源的情况。 在此信号量机制中,除了需要一个用于代表资源 数目的整型变量value外,还应增加一个进程链表指针 L,用于链接上述的所有等待进程。 记录型信号量是由于它采用了记录型的数据结构 而得名的。
16
进程通信
情景4:如果员工A正在使用打印机资源,并且打印 的是很重要的材料,而且可能要使用一天。员工B 打印一份不太重要的材料,这种情况下,怎么办?
员工B应该立即放弃打印,回到自己的 进程同步的准则四: 工作岗位上进行工作,避免陷入“忙 让权等待:当进程不能进入自己的临界 等”,浪费人力资源。 区时,应立即释放处理机,以免进程陷入 “忙等”状态。

第4章 进程的同步与死锁

第4章 进程的同步与死锁
T1 : ... Read(x); if x>=1 then x:=x-1; write(x) ... T2: ... Read(x); if x>=1 then x:=x-1; write(x); ...
分析:产生错误的原因是不加控制地
访问共享变量x
设x的当前值为:100 1. 若执行顺序为: 先T1; 后T2; 则结果:x = 98 2. 若执行顺序为: T1: Read(x); T2: Read(x); T1: if x>=1 then x:=x-1; T2: if x>=1 then x:=x-1; T1: write(x); T2: write(x); 则结果 x = 99
操作顺序冲 正确 cm 突 pm
p2
g
结果
g1
c1 g,p,c
c,p,g p,c,g p,g,c
c2
g2
g3
正确执行顺序
4.1 进程的同步和互斥
解决
系统必须提供相应的并发控制机制 同步与互斥
4.1.1 进程同步
进程同步(直接制约) 指系统中一些进程需要相互合作,共 P1: P2: 同完成一项任务。 具体说,一个进程 synchronize
互斥引例
一飞机订票系统,两个 终端,运行T1、T2进程
T1 : ... Read(x); if x>=1 then x:=x-1; write(x) ... T2: ... Read(x); if x>=1 then x:=x-1; write(x); ...
分析:产生错误的原因是不加控制地
访问共享变量x
4.1.5 信号量的应用实例
利用P、V操作实现进程的互斥 共享缓冲区的进程的同步 控制合作进程的执行次序

计算机操作系统第四版课后习题答案第一章之欧阳语创编

计算机操作系统第四版课后习题答案第一章之欧阳语创编

第一章1.设计现代OS的主要目标是什么?答:(1)有效性(2)便利性(3)可扩充性(4)开放性2.OS的作用可表示在哪几个方面?答:(1)OS作为用户与计算机硬件系统之间的接口(2)OS作为计算机系统资源的管理者(3)OS实现了对计算机资源的笼统3.为什么说OS实现了对计算机资源的笼统?答:OS首先在裸机上笼盖一层I/O设备管理软件,实现了对计算机硬件操纵的第一条理抽象;在第一层软件上再笼盖文件管理软件,实现了对硬件资源操纵的第二条理笼统。

OS 通过在计算机硬件上装置多层系统软件,增强了系统功能,隐藏了对硬件操纵的细节,由它们共同实现了对计算机资源的笼统。

4.试说明推劢多道批处理系统形成和収展的主要劢力是什么?答:主要动力来源于四个方面的社会需求与技术成长:(1)不竭提高计算机资源的利用率;(2)便利用户;(3)器件的不竭更新换代;(4)计算机体系结构的不竭成长。

5.何谓脱机I/O和联机I/O?答:脱机I/O 是指事先将装有用户法度和数据的纸带或卡片装入纸带输入机或卡片机,在外围机的控制下,把纸带或卡片上的数据或法度输欧阳语创编入到磁带上。

该方法下的输入输出由外围机控制完成,是在脱离主机的情况下进行的。

而联机I/O方法是指法度和数据的输入输出都是在主机的直接控制下进行的。

6.试说明推劢分时系统形成和収展的主要劢力是什么?答:推动分时系统形成和成长的主要动力是更好地满足用户的需要。

主要表示在:CPU 的分时使用缩短了作业的平均周转时间;人机交互能力使用户能直接控制自己的作业;主机的共享使多用户能同时使用同一台计算机,自力地处理自己的作业。

7.实现分时系统的关键问题是什么?应如何解决?答:关键问题是当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,在用户能接受的时延内将结果前往给用户。

解决办法:针对及时接收问题,可以在系统中设臵多路卡,使主机能同时接收用户从各个终端上输入的数据;为每个终端配臵缓冲区,暂存用户键入的命令或数据。

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

附件(四)
欧阳光明(2021.03.07)
深圳大学实验报告课程名称:操作系统
实验项目名称:进程(线程)同步及死锁学院:计算机与软件学院
专业:计算机科学与技术
指导教师:
报告人:学号:班级:
实验时间:2015/10/23
实验报告提交时间:2015/11/13
教务处制
二、方法、步骤:
设计解决哲学家就餐问题的并发线程。

假定有6个哲学家,围着圆桌交替地进行思考和进餐;每次进餐时,必须同时拿到左右两边的两只筷子才能进餐;进餐后,再放下筷子思考。

这是一个典型的同时需要两个资源的例子,如果申请资源顺序不当,可能会引起死锁。

本实验设计6个哲学家共享一个相同的线程Philosopher,既完成线程同步,又预防死锁发生。

实验中采用了3种预防死锁的方法(摒弃‘环路等待’条件,摒弃‘请求和保持’条件,摒弃‘不剥夺’条件),要预防死锁,只采用其中的任何一种方法即可。

三.实验过程及内容:(其中:提供有简短说明的程序代码。

要求:程序运行正确、符合设计要求。

)
1.创建工程,注意勾选Win32 Application,点击确定
2.勾选第三个选项
3.创建菜单,有Eat、About、Exit
4.在进程(线程)同步及死锁.cpp中编写代码,此时代码有“摒弃‘环路等待’条件”、“摒弃‘请求和保持’条件”、“摒弃‘不剥夺’条件”三种代码,当检测其中一个时须将其余两个加以注释,一一检测其对死锁的影响。

运行结果:
运行前:
运行后:
5.在运行时可知,在分别“摒弃‘环路等待’条件”和“摒弃‘不剥夺’条件”的代码时不会出现死锁,而使用“摒弃‘请求和保持’条件”时会产生死锁,在理论正确前提下,此种情况说明了代码出现错误。

6.代码解释及修改⑴摒弃‘环路等待’条件
R1=ThreadID;
R2=(ThreadID+1)%6;
if (ThreadID == 0)
{
R1= (ThreadID+1) % 6;
R2= ThreadID;
}
依据摒弃‘环路等待’条件,要有至少一位哲学家与其他哲学家拿筷子顺序不同,则使第0位(ThreadID = 0)哲学家从右边开始拿筷子,其他哲学家相反。

⑵摒弃‘不剥夺’条件
Wait(Mutex);
if (ChopstickUsed[R2])
{
Signal(Mutex);
goto ReleaseChopstick;//将左筷子放弃掉
}
Signal(Mutex);
若分配给的哲学家拿不到右筷子,则将他拿到的左筷子收回。

⑶摒弃‘请求和保持’条件
原代码:
Wait(Mutex);
if((ChopstickUsed[R1])||(ChopstickUsed[R2]))
{
Signal(Mutex);
goto LoopAgain;//思考。

相关文档
最新文档