- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章并发进程
* 第三章 并发进程 一、概述 为了增强计算机系统处理数据的能力,提高资源的利用率,现代计算机系统采用多道程序设计技术,从而使得若干作业并存于内存中且同时执行。每个作业的操作步骤都是由相应的进程完成的。多个作业同时执行的状态,表现为一个进程的工作还没有全部完成之前,另一个进程就开始工作,把这些可同时进行工作的进程称为“并发进程”。 在并发进程的执行过程中,进程同步是操作系统管理共享资源,避免出错的一个有效手段。进程的同步包括进程的同步与进程的互斥两个方面。进程的互斥是指并发进程即多个执行进程,同时竞争共享资源时,若某共享正在被一个进程使用,其他申请该资源的进程必须等待,直至该资源被释放后,另一个进程才能使用该资源。也就是说,共享资源应该互斥的使用。进程的同步是指一个进程的执行依赖于其他进程的执行状况,即并发进程中,一个进程在没有得到其他进程发来的消息时必须等待,直至另一个进程送来消息后才能继续执行。进程的死锁是并发进程之间相互等待对方占有的资源的现象。 二、进程间的制约关系 在多道程序系统中,由于资源共享与进程合作,使诸进程之间可能产生两种形式的制约关系: 1.间接相互制约 这种制约主要源于资源共享。例如,有两进程A和B,如果在A进程提出打印请求时,系统已将打印机分配给进程B,则进程A阻塞;一旦进程B将打印机释放,也就使进程A由阻塞改为就绪状态。 2.直接相互制约 这种制约主要源于进程合作。例如,有一输入进程A通过单缓冲向进程B提供数据。当该缓冲空时,计算进程B因不能获得所需数据而阻塞,当进程A把数据送入缓冲时,便将B唤醒;反之,进程A因不能再向缓冲区投放数据而阻塞,当进程B将缓冲区内数据取走时唤醒A。 第三章 并发进程 可见,诸进程在并发执行时,必须按照一定的次序执行。 进程同步例子:对于共享一个缓冲区的输入进程和计算进程,当输入进程未将数据送入缓冲区时,计算进程不能开动计算;同样,若计算进程未从缓冲区中取走数据时,输入进程不能再启动下一次的输入。 输入进程 计算进程 缓冲区 3.1 进程的并发性 1、 虽然对于一个程序的输入、计算和打印必须顺序执行,但在对一批程序进行处理时,则可使上述三种操作并发执行,以提高系统的吞吐量。例如,输入程序在输入第三个程序(I3)的同时,计算程序可以正在对第二个程序进行计算(C2),而打印程序正在打印第一个程序(P1)的计算结果。如下图所示: I1 I2 I3 I4 C1 C2 C3 C4 P1 P2 P3 P4 程序段并发执行的有向图 第三章 并发进程 2、与时间有关的错误 例如,某展示厅设置了一个自动计数系统,用一个计数器count指示在场的人数。当有一人进人时,进程pin实现计数加1,当退出一人时,进程POUT实现计数减1。由于人场与退场是随机的,因此,进程pin和pout是并发的。用cobegin和coend表示并发执行,这两个进程的程序如下: begin count:integer; count:=0; cobegin process pin R1:integer; begin R1:=count; R1:= R1+1; count:=R1 ; end; process pout R2:integer; begin R2:=count; R2:=R2-1; count:=R2; end; coend; end;
原创力文档


文档评论(0)