- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四节 进程同步
第四节 进程同步 Concurrency:Mutual Exclusion and Synchronization(并发性:互斥和同步) 进程间的联系; 进程的同步机制─信号量及P.V操作(解决进程同步互斥问题) 同步问题引入: 一、进程间的联系 1.并发进程间的联系 2、有交往进程的两类联系 3、几个概念 4、进程同步机制 2、软件解法1- 单标志法 3、软件解法2--双标志法、先检查 4、软件解法3--双标志、先修改标志 5、软件解法4-- Peterson’s Algorithm 6、软件解法的缺点 硬件解法1--“测试并设置”指令 硬件解法2--“交换”指令swap(或Exchange指令) 硬件解法3--“开关中断”指令 三、信号量机制及P.V操作 前面的互斥算法都是平等进程间的协商机制,它们存在的问题是平等协商无法解决的,需要引入一个地位高于进程的管理者来解决公有资源的使用问题。 操作系统可以从进程管理者的角度来处理互斥的问题,信号量(semaphore)就是由操作系统提供的管理公有资源的有效手段。 P原语操作的动作是: (1) sem减1; (2) 若sem减1后仍大于或等于零,则进程继续执行; (3) 若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。 V原语操作的动作是: (1) sem加1; (2) 若相加结果大于零,则进程继续执行; (3) 若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。 注意:P(S) -- wait(S); V(S) -- signal(S) 对信号量的再说明 利用信号量实现互斥 习题 1、有一单向行驶的公路桥,每次只允许一辆汽车通过。当汽车到达桥头时,若桥上无车,便可上桥;否则,需等待,直到桥上的汽车下桥为止。若每一辆汽车为一进程,请用PV操作实现。 2、有一只铁笼子,每次只能放入一只动物。猎手向笼中放入老虎,农民向笼中放入猪,动物园等待取笼中的老虎,饭店等待取笼中的猪。试用PV操作写出能同步执行的程序。 利用信号量来描述前趋(同步)关系 三)信号量集机制及其应用 2. 一般信号量集 四)经典的进程同步问题 1、生产者和消费者问题(P-C问题) 练习题1: 有4个进程A、B、C、D都要读一个共享文件F,系统允许多个进程同时阅读文件F,但是进程A和C不能同时访问F,进程B和D也不能同时阅读F。为了使这4个进程并发执行时满足系统要求使用文件,现用PV操作进行管理,请回答下面的问题: 1) 应定义的信号量及初值; 2) 在下列的程序中填上适当的PV操作,以确保它们能正确并发工作; 练习题2: 有四个进程A、B、C、D,进程A通过一个缓冲区不断地向进程B、C、D发送信息, A 每向缓冲区送入一个信息后, 必须等进程B、C、D都取走后才可以发送下一个信息, B、C、D对A 送入的每一信息各取一次, 试用P、V操作实现它们之间的正确通讯. 五)P.V操作的优缺点 四、管程机制 7、管程中的问题 每个信号量s除一个整数值外s.value,还有一个进程等待队列s.queue,其中是阻塞在该信号量的各个进程的标识; 信号量只能通过初始化(一次且仅有一次)和两个标准的原语p(s)、v(s)来访问; 初始化指定一个非负整数值,表示空闲资源总数(又称为“资源信号量”)-若为非负值表示当前的空闲资源数;若为负值,其绝对值表示当前等待CS的进程数; s.value=1:即互斥信号量。 为临界资源设置一个互斥信号量:mutex(Mutual Exclusion),其初值为1;在每个进程中将临界区代码置于P(mutex)和V(mutex)原语之间。 必须成对使用P和V原语: 前趋关系:???? 例如:并发执行的进程P1和P2中,分别有代码C1和C2,要求C1在C2开始前完成; 方法:为每个前趋关系(即前趋图中的每条边)设置一个互斥信号量S12,其初值为0 利用信号量描述前趋关系,结构如下: e.g.1设有前趋关系,如图,请用信号量机制来实现图中所述前趋关系 Var a,b,c,d,e,f,g;semaphore:=0,0,0,0,0,0,0; Begin: Begin:s1;v(a);v(b);end; Begin:P(a);s2;v(c);v(d);end Begin:p(b);s3;v(g);end; Begin:P(c);s4;v(e);end; Begin:p(d);s5;v(f);end; Begin:P(e);p(f);p(g);s6;end; End (注意其它教材的写法) S1 S4 S5 S6 S2 S3 a g f e d c b e.g.2用信号灯及P、V
文档评论(0)