文档详情

操作系统-第四篇-死锁.ppt

发布:2018-08-29约7.78千字共64页下载文档
文本预览下载声明
操作系统原理 第四章 并发处理 4.5 进程互斥 4.5.2 锁和上锁、开锁操作 这样当一个进程使用某个临界资源之前必须完成下列操作: 1、考察锁位的值; 2、若原来的值是为“0”,将锁位置为“1” (占用该资源); 3、若原来值是为“1”,(该资源已被别人占用),则转到1。 当进程使用完资源后,将锁位置为“0 ” ,称为开锁操作。 4.5 进程互斥 4.5.2 锁和上锁、开锁操作 4.5 进程互斥 4.5.2 锁和上锁、开锁操作 改进的算法 4.5 进程互斥 4.5.3 用上锁原语和开锁原语实现互斥 假设有两个进程共享打印机,两个进程中使用打印机的程序段为临界区。 为保证打印的正确,设置打印机的锁位print, 其初值为“0”,表示 打印机可用。 4.5 进程互斥 4.5.3 用上锁原语和开锁原语实现互斥 4.6 信号灯和P、V操作 4.6.1 信号灯的概念 信号灯的概念是由Dijkstra提出的(1968)。 他把互斥的关键概念抽象到信号量这个概念中, 信号量是一个被保护的变量,只有P操作、V操 作和一种称为信号量初始化操作才能访问和改 变它的值。 4.6 信号灯和P、V操作 4.6.1 信号灯的概念 信号灯的定义: 信号灯是一个确定的二元组(s,q),s 是一个具有非负初值的整型变量,q 是一个初始状态为空的队列。 S代表资源的实体。在实际应用中应准确地说明s的意义和初值,每个信号灯都有一个队列,其初始状态为空。 4.6 信号灯和P、V操作 4.6.2 P、V操作 信号灯的值仅能由P、V操作来改变, 对信号灯的P操作记为:P(S),P操作是一个原子操作。 对信号灯的V操作记为:V(S), V操作是一个原子操作。 在实际操作系统中,一般情况下是由机器硬件提供P、V操作的指令,当然是原子操作,若机器不提供P、V操作的指令,则操作系统提供P、V操作原语。 4.6 信号灯和P、V操作 4.6.2 P、V操作 P操作: (1)s值减1; (2)若相减结果大于等于0,则进程继续执行; (3)若结果小于0,则 该进程挂起。 注:挂起该进程包括:保留调用进程CPU现场;置“等待”状态;入等待队列;转进程调度; 4.6 信号灯和P、V操作 4.6.2 P、V操作 V操作: (1)s值加1; (2)若相加结果大于0,进程继续执行; (3)否则,唤醒一个(或多个)等待该信号灯的进程,然后本进程继续执行。 4.6 信号灯和P、V操作 4.6.3 用信号灯实现进程互斥 用两个进程共享打印机的例子 设信号灯print表示打印机,初值为1, 表示打印机可用(也可理解为有一台打印机)。 (print也是用于互斥的信号灯,教材上设 置为mutex。) 4.6 信号灯和P、V操作 4.6.3 用信号灯实现进程互斥 4.7 进程同步 4.7.1 同步的例子 引例 1 :两位同学约好星期天去东湖,早上8:00在校门口,不见不散。 当一个同学先来到校门口,要等另一个同学,到齐后一道打的去东湖 4.7 进程同步 4.7.2 同步的概念 互斥的概念来自于诸进程对独占使用资源(设备)的竞争,同步来源于多个进程的合作。在人类社会中竞争与合作是永恒的。 同步:所谓同步就是并发进程在一些关键点上可能需要相互等待与互通消息,这样的相互制约关系称为进程同步。 4.7 进程同步 4.7.3 用信号灯实现进程的同步 在操作系统中,同步有各种各样,但归纳起来有两类: 诸进程合作完成某工作的逻辑顺序。 对系统资源的共享。如两个进程共享一个缓冲区完成誊抄问题 4.7 进程同步 4.7.3 用信号灯实现进程的同步 (一)合作进程的执行次序 用进程流图来描述诸进程合作完成某一任务的次序,其规则如下 4.7 进程同步 4.7.3 用信号灯实现进程的同步 用信号灯及P、V操作来描述左图 1、说明进程的同步关系 进程P1、P2可并行执行,P3的执行必须等待P1、P2都完成后才能开始执行。 2、设置信号灯,说明含义、初值。 s13 = 0 表示进程P1尚未执行完成; s23 = 0 表示进程P2尚未执行完成; 4.7 进程同步 4.7.3 用信号灯实现进程的同步 4.7 进程同步 4.7.3 用信号灯实现进程的同步 (二)共享缓冲区的合作进程的同步 设有一个缓冲区buffer,大小为一个字节,CP进程不断产生字符,送buffer,IOP进程从buffer中取出字符打印。如不加控制,会有多种打印结果,这取决于这两个进程运行的相对速度。在这众多的打印结果中,只有CP、IOP进程的运行刚好匹配的一种是对的,其它均为错误,并且不能重现。 4.7 进程同步 4.7.3 用信号灯实现进程的同步 要保证打印
显示全部
相似文档