- 1、本文档共98页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 本章小结 本章是本教材的重点和难点,主要讲述: 程序并发执行及特点、进程的定义、进程的状态及转换、进程控制块及作用。 进程的互斥与同步及其区别与联系,并着重介绍运用操作系统提供的同步机制实现进程间的互斥与同步,解决经典的进程同步问题。 简单了解管程、进程间的通信和线程。 作业:P81,7、8、23、24、25、26、27。 * * 第二章授课结束,欢迎讨论! 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * * * type semaphore=record value:integer;//资源数目 L:list of process;//进程链表指针 end procedure wait(S) var S: semaphore; begin S.value:=S.value-1; if S.value<0 then block(S.L); end procedure signal(S) var S: semaphore; begin S.value:=S.value+1; if S.value≤0 then wakeup(S.L); end 请求一个单位的该类资源 该类资源数减少一个 自我阻塞,放弃处理机 释放一个单位资源 该类资源增加一个 唤醒进程 * * 3.AND型信号量 在有些任务中,一个进程先要获得多个共享资源后才能执行,若进程A和B都要申请D和E两种资源,设信号量Dmutex和Emutex的初值均为1在两个进程中都要包含两个对Dmutex和Emutex的操作,即 process A: process B: P(Dmutex); P(Emutex); P(Emutex); P(Dmutex); 若进程A和B按下述次序交替执行P操作: process A: P(Dmutex); 于是Dmutex=0 process B: P(Emutex); 于是Emutex=0 process A: P(Emutex); 于是Emutex=-1 A阻塞 process B: P(Dmutex); 于是Dmutex=-1 B阻塞 * * AND同步机制的基本思想是:将进程在整个运行过程中需要的所有资源,一次性全部地分配给进程,待进程使用完后再一起释放。只要尚有一个资源未能分配给进程,其它所有可能为之分配的资源,也不分配给他。亦即,对若干个临界资源的分配,采取原子操作方式:要么全部分配到进程,要么一个也不分配。由死锁理论可知,这样就可避免上述死锁情况的发生。为此,在P操作中,增加了一个“AND”条件,故称为AND同步,或称为同时P操作, 即SP(Simultaneous wait)定义如下: * * SP:Swait(S1, S2, …, Sn) if Si≥1 and … and Sn≥1 then { 每个资源都可用} for i: =1 to n do Si:=Si-1; {分配所有资源} endfor else {否则,将进程放到等待资源Si的队列中} “阻塞”(去第1个Si1的“等待Si”的阻塞队列中排队,并置它的程序计数器于SP操作的起始点) endif SV:Ssignal(S1, S2, …, Sn) for i: =1 to n do Si=Si+1; {释放所有资源} “唤醒”(所有“等待Si”的阻塞进程,置为“就绪”状态,移到就绪队列中) endfor; * * 4.信号量集:一次申请多个资源 在记录型信号量机制中,P(S
文档评论(0)