- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 并发处理 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进程的运行刚好匹配的一种是对的,其它均为错误,并且不能重现。
文档评论(0)