




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,操作系统 第三章 同步、通信与死锁,南京大学软件学院 2013,多道程序设计,程序的动态概念,内存管理,提高性能和利用率提高CPU与I/O,I/O之间的并行度,固定/动态分区、分页/分段,处理器管理/进程抽象,I/O 设备管理,设备抽象, I/O软件的分层,虚存抽象,处理器调度,虚拟分页,虚拟段页式,文件抽象,单/多线程结构进程,中断技术,虚拟分段,并发进程, 同步与互斥 (PV, 管程, 进程通信),磁盘管理/调度,死锁问题, 必要条件, 预防, 避免, 检测和解除,文件逻辑结构,文件物理结构,文件目录, 共享与保护,虚拟文件系统,I/O控制方式, 缓冲技术,设备分配, 虚拟设备Spooling,文件管理,文件系统,文件抽象,Chap3,Chap4,Chap6,Chap2,Chap5,Roadmap,安全与保护 Chap 7,网络和分布式 Chap8,3,第三章 同步、通信与死锁,3.1 并发进程 3.2 临界区管理 3.3 信号量与PV操作 3.4 管程 3.5 进程通信 3.6 死锁 3.7 Linux同步机制和通信机制 3.8 Windows 2003同步机制和通信机制,4,3.1并发进程,3.1.1顺序程序设计 3.1.2进程的并发性 3.1.3进程的交互:协作和竞争,5,进程的顺序性,一个进程在处理器上的顺序执行是严格按序的,一个进程只有当一个操作结束后,才能开始后继操作 顺序程序设计是把一个程序设计成一个顺序执行的程序模块,顺序的含义不但指一个程序模块内部,也指两个程序模块之间。,6,顺序程序设计特点,程序执行的顺序性 程序环境的封闭性 执行结果的确定性 计算过程的可再现性,7,进程的并发性(1),进程执行的并发性:一组进程的执行在时间上是重叠的。 并发性举例:有两个进程A(a1、a2、a3)和B(b1、b2、b3)并发执行。 若允许进程交叉执行,如执行操作序列为a1,b1,a2,b2,a3,b3或a1,b1,a2,b2,b3,a3等,则说进程A和B的执行是并发的。/排列组合,投影 从宏观上看,并发性反映一个时间段中几个进程都在同一处理器上,处于运行还未运行结束状态。 从微观上看,任一时刻仅有一个进程在处理器上运行。,8,进程的并发性(2) 程序并发 执行,由于程序是按照while(TRUE)input,process,output串行地输入-处理-输出来编制的,所以该程序只能顺序地执行,这时系统的效率相当低。 如果把求解这个问题的程序分成三部分: while(TRUE) input,send while(TRUE) receive,process,send while(TRUE) receive,output,9,进程的并发性(2) 程序并发 执行,每一部分是一个小程序,它们可并发执行,并会产生制约关系,其中send和receive操作用于小程序之间通过通信机制解决制约关系,以便协调一致地工作,三个小程序的功能是: 小程序1:循环执行,读入字符,将读入字符送缓冲区1; 小程序2:循环执行,处理缓冲区1中的字符,把计算结果送缓冲区2; 小程序3:循环执行,取出缓冲区2中的计算结果并写到磁带上。,10,进程的并发性(3),进程,i1,p1,i,p,o,o1,i2,p2,o2,i3,p3,o3,t1,t2,t3,时间,并行工作,i4,t4,i5,P4,11,进程的并发性(4),并发的实质是一个处理器在几个进程之间的多路复用,并发是对有限的物理资源强制行使多用户共享,消除计算机部件之间的互等现象,以提高系统资源利用率。,12,无关的并发进程,并发进程分类:无关的,交往的。 无关的并发进程:一组并发进程分别在不同的变量集合上操作,一个进程的执行与其他并发进程的进展无关。 并发进程的无关性是进程的执行与时间无关的一个充分条件,又称为Bernstein条件。,13,Cooperating Processes,Independent process cannot affect or be affected by the execution of another process Cooperating process can affect or be affected by the execution of another process Advantages of process cooperation Information sharing Computation speed-up Modularity Convenience,14,Bernstein条件,R(pi)=a1,a2,an,程序pi在执行期间引用的变量集 W(pi)=b1,b2,bm,程序pi在执行期间改变的变量集 若两个程序的变量集交集之和为空集: R(p1)W(p2)R(p2)W(p1)W(p1)W(p2)= 则并发进程的执行与时间无关。,15,Bernstein条件举例,例如,有如下四条语句: S1: a := x + y S2: b := z + 1 S3: c := a b S4: w := c + 1 于是有:R(S1)=x,y ,R(S2)=z,R(S3)=a,b,R(S4)=c;W(S1)=a, W(S2)=b,W(S3)=c,W(S4)=w。 S1和S2可并发执行,满足Bernstein条件。其他语句并发执行可能会产生与时间有关的错误。,16,交往的并发进程,交往的并发进程:一组并发进程共享某些变量,一个进程的执行可能影响其他并发进程的结果。,17,并发程序设计的优点,对于单处理器系统,可让处理器和各I/O设备同时工作,发挥硬部件的并行能力。 对于多处理器系统,可让各进程在不同处理器上物理地并行,加快计算速度。 简化程序设计任务。,18,采用并发程序设计的目的,充分发挥硬件的并行性,提高系统效率。硬件能并行工作仅有了提高效率的可能性,硬部件并行性的实现需要软件技术去利用和发挥,这种软件技术就是并发程序设计。 并发程序设计是多道程序设计的基础,多道程序的实质就是把并发程序设计引入到系统中。,19,与时间有关的错误,对于一组交往的并发进程,执行的相对速度无法相互控制,各种与时间有关的错误就可能出现。 与时间有关错误的表现形式: 结果不唯一 永远等待,20,(结果不唯一)机票问题,/飞机票售票问题 void T1( ) void T2( ) 按旅客订票要求找到Aj; 按旅客订票要求找到Aj; int X1=Aj; int X2=Aj; if(X1=1) if(X2=1) X1-; X2-; Aj=X1; Aj=X2; 输出一张票; 输出一张票; else else 输出信息“票已售完“; 输出信息“票已售完“; ,此时出现把同一张票卖给两个旅客的情况,两个旅客可能各自都买到一张同天同次航班的机票,可是,Aj的值实际上只减去1,造成余票数不正确。特别是,当某次航班只有一张余票时,可能把一张票同时售给两位旅客。,21,(永远等待)主存管理问题,申请和归还主存资源问题 int X=memory; /memory为初始主存容量 void borrow(int B) void return(int B) while(BX) X=X+B; 进程进入等待主存资源队列; 修改主存分配表; X=X-B ; 释放等主存资源进程; 修改主存分配表,进程获得主存资源; ,由于borrow和return共享代表主存物理资源的临界变量X,对并发执行不加限制会导致错误,例如,一个进程调用borrow申请主存,在执行比较B和X大小的指令后,发现BX,但在执行进程进入等待主存资源队列前,另一个进程调用return抢先执行,归还所借全部主存资源;这时,由于前一个进程还未成为等待者,return中的释放等主存资源进程相当于空操作,以后当调用borrow的应用进程被置成等主存资源时,可能己经没有其他进程再来归还主存,从而,申请资源的进程处于永远等待状态。,22,进程的交往:竞争与协作(1) 第一种是竞争关系,系统中的多个进程之间彼此无关 系统中的多个进程之间彼此相关 资源竞争的两个控制问题: 一个是死锁(Deadlock)问题, 一个是饥饿(Starvation) 问题,既要解决饥饿问题,又要解决死锁问题。,23,Deadlock and Starvation,Deadlock two or more processes are waiting indefinitely for an event that can be caused by only one of the waiting processes Let S and Q be two semaphores initialized to 1 P0 P1 wait (S); wait (Q); wait (Q); wait (S); . signal (S); signal (Q); signal (Q); signal (S); Starvation indefinite blocking. A process may never be removed from the semaphore queue in which it is suspended.,24,进程的交往:竞争与协作(2) 进程互斥(Mutual Exclusion),进程互斥是指若干个进程因相互争夺独占型资源时所产生的竞争制约关系。,25,进程的交往:竞争与协作(3)第二种是协作关系(1), 某些进程为完成同一任务需要分工协作。 进程同步指为完成共同任务的并发进程基于某个条件来协调它们的活动,因为需要在某些位置上排定执行的先后次序而等待、传递信号或消息所产生的协作制约关系。,26,进程的交往:竞争与协作(4)第二种是协作关系(2), 进程同步指两个以上进程基于某个条件来协调它们的活动。一个进程的执行依赖于协作进程的消息或信号,当一个进程没有得到来自于协作进程的消息或信号时需等待,直到消息或信号到达才被唤醒。,27,进程的交往:竞争与协作(5),进程互斥关系是一种特殊的进程同步关系,即逐次使用互斥共享资源,是对进程使用资源次序上的一种协调。,28,3.2 临界区管理,3.2.1 互斥与临界区 3.2.2 实现临界区管理的几种尝试 3.2.3 实现临界区管理的软件方法 3.2.4 实现临界区管理的硬件设施,29,3.2.1互斥与临界区(1),并发进程中与共享变量有关的程序段叫“临界区”, 共享变量代表的资源叫“临界资源”。 与同一变量有关的临界区分散在各进程的程序段中,而各进程的执行速度不可预知。 竞争条件(race condition) 如果保证进程在临界区执行时,不让另一个进程进入临界区,即各进程对共享变量的访问是互斥的,就不会造成与时间有关的错误。,30,互斥与临界区(2),临界区调度原则(Dijkstra, 1965): 一次至多一个进程能够进入临界区内执行; 如果已有进程在临界区,其他试图进入的进程应等待; 进入临界区内的进程应在有限时间内退出,以便让等待进程中的一个进入。 (1) 互斥使用、有空让进, (2) 忙则等待、有限等待, (3) 择一而入、算法可行。,31,3.2.2临界区管理的尝试 (1),bool inside1=false; /P1不在其临界区内 bool inside2=false; /P2不在其临界区内 cobegin /*cobegin和coend表示括号中的进程是一组并发进程*/ process P1( ) process P2( ) while(inside2);/等待 while(inside1);/等待 inside1=true; inside2=true; 临界区; 临界区; inside1=false; inside2=false; coend,进程P1(P2)测试inside2(insidel)与随后置insidel(inside2)之间,P2(P1)可能发现insidel(inside2)有值false,于是它将置inside2(insidel)为true,并且与进程P1(P2)同时进入临界区。,两个进程可能都进去,32,临界区管理的尝试 (2),bool inside1=false; /P1不在其临界区内 bool inside2=false; /P2不在其临界区内 cobegin process P1( ) process P2( ) inside1=true; inside2=true; while(inside2);/等待 while(inside1);/等待 临界区; 临界区; inside1=false; inside2=false; coend,延迟进程P1(P2)对inside2(insidel)的测试,先置insidel(inside2)为true,用以封锁P2(P1),修正后的程序如下,不幸,它也是无效的,有可能每个进程都把自己的标志置成true,从而出现死循环,这时没有进程能在有限时间内进入临界区,造成永远等待。,两个进程都进不去,33,3.2.3实现临界区的软件算法Peterson算法,bool inside2; inside0=false; inside1=false; enum 0,1 turn; cobegin process P0( ) process P1( ) inside0=true; inside1=true; turn=1; turn=0; while(inside1 coend,34,3.2.3实现临界区的软件算法Peterson算法,bool inside2; inside0=false; inside1=false; enum 0,1 turn; cobegin process P0( ) process P1( ) while(true) turn=1; while(true)turn=0; while(turn=1); while(turn=0); 临界区; 临界区; turn=0; turn=1; coend,35,关于Peterson算法的补充分析,P0中执行了turn=1, 暂时进不去,等P1中执行turn=0, P0可以进去,P0使用完临界区,退出临界区的时候,将turn=0(好像是多余的), 此时P1还是进不去,要等p0执行turn=1,使得P1有机会进入临界区,之后,P1退出临界区的时候,turn=1,P0暂时进不去,等在P1中执行turn=0,P0可以再次进入临界区,因此,P0和P1使用临界区的次序变成了完全一比一的交替方式,这只能是临界区互斥使用的一个特例,不能满足临界区互斥
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《小学教师招聘》复习试题【培优】附答案详解
- 2025年教师招聘之《幼儿教师招聘》押题练习试卷附参考答案详解(达标题)
- 2025呼伦贝尔莫力达瓦达斡尔族自治旗尼尔基第一中学校园引才笔试备考及完整答案详解
- 2025广东广州银行人才招聘考试备考题库及答案解析
- 2025年汽车轻量化材料在汽车轻量化车身制造中的产业布局与市场前景研究报告
- 棚户区改造项目房屋产权分割及购房合同模板-@-3
- 2025年乳腺病学乳房超声影像解读练习答案及解析
- 南阳党建面试题库及答案
- 教师招聘之《小学教师招聘》综合提升试卷及参考答案详解【模拟题】
- 2025年教师招聘之《小学教师招聘》试卷含完整答案详解【夺冠系列】
- Unit 1 Making friends 第三课时Part A Letters and sounds表格式教案
- (正式版)SH∕T 3541-2024 石油化工泵组施工及验收规范
- 2024年山东省公务员录用考试《行测》试题(网友回忆版)(题目及答案解析)
- 委托产品加工生产合同
- 全新不锈钢护栏承包合同
- 2024-2030年中国生物质颗粒行业市场发展趋势与前景展望战略分析报告
- 气管插管术评分标准
- 提升护理人员的自我管理能力与情绪控制
- 《预防脊柱侧弯》课件
- 纪律委员竞选课件
- 职业院校技能大赛高职组《电子商务技能》赛项样题4套题库
评论
0/150
提交评论