ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:43.10KB ,
资源ID:26140256      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26140256.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第2章 进程管理345.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第2章 进程管理345.docx

1、第2章 进程管理345第 4 次 课 教 案 操作系统 课程 计本081-4 班级 年 月 日章节名称第2章 进程管理教学目的与 要 求掌握进程互斥的概念和实现方法。教学内容2.3 进程互斥重 点进程互斥难 点进程互斥的实现作 业教具与挂图教学过程(组织与方法)讲解与举例 2.3 进程互斥在程序并发执行中所举的例子:两个并发的循环程序共用一个公共变量N这个问题。设程序A每执行一次都要做N=N1操作,程序B每隔一定时间打印出N值,并将它重新置为“0”。通过这个例子,可以知道由于每个进程都以各自独立的速度向前推进,导致出现了不同的执行结果,即显示出其不可再现性。进程同步的主要任务:是使并发执行的各

2、进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。下面通过分析与时间有关的错误,用进程同步的方法来解决问题。一.与时间有关的错误例如,某交通路口设置了一个自动计数系统,该系统由“观察者”进程和“报告者”进程组成。其中观察者进程能识别卡车,并对通过的卡车计数,报告者进程定时将观察者的计数值打印输出,每次打印后把计数值清“0”。两个进程的并发执行可完成对每小时中卡车流量的统计,两个进程的功能描述如下: main() int count=0; /*用于计数*/ cobegin Process Observer while(1) observe a lorry; count=count

3、+1; Process Reporter while(1) printf(“%d”,count); count=0; coend在cobegin 和coend之间的进程为可并发执行的进程。观察者进程和报告者进程并发执行时可能有如下两种情况: 报告者进程执行时无卡车通过。 报告者进程执行时有卡车通过。由于并发进程执行的随机性,其中一个进程对另一个进程的影响是不可预知的。关键是它们都涉及到共享变量count,当在不同时刻交替地修改了count的值就会造成结果的不正确。导致不正确的原因是与进程占用处理机的时间、执行的速度以及外界的影响有关。这些因素都与时间有关,所以,把它称为“与时间有关的错误”。二

4、.进程的互斥1. 临界资源允许若干进程均能访问和修改的存储单元称为公共变量。并发进程对公共变量进行访问和修改时,必须作某种限制,否则就会产生与时间有关的错误。例如:在一个机票预定系统中,某一机座的定购情况由一个确定的内存单元的内容表示,假设把若干个订票处看成为若干个访问这一内存单元的进程。如果一次有两个或n个进程同时存取该变量,那么就有可能使两家或几家订票处同时帮顾客订到相同的机座。综上所述,对公共变量这样的临界资源的共享有这样的限制:共享的各方不能同时读写同一数据区,只有当一方读写完成后,另一方才能读写。到底哪一方先读写,要根据问题的性质和设计人员的意图而定。2.临界区在每个进程中,访问临界

5、资源的那段程序能够从概念上分离出来,因而称为临界区或临界段。它就是进程中对公共变量进行访问与修改的程序段,称为相对于该公共变量的临界区。例如,前面提到的自动计数系统中,观察者进程的临界区是“count=count+1”,报告者进程的临界区是“printf(“%d”,count); count=0;”。对若干进程共享某一变量的相关临界区的管理应满足如下三个要求:每次最多有一个进程处于临界区。任何一个进入临界区执行的进程必须在有限的时间内退出临界区。当有若干进程欲进入它的临界区时,应在有限时间内使进程进入临界区。注意:临界区是对某一资源而言的,对于不同资源的临界区,它们之间是不相交的,不必互斥执行

6、。3.互斥的概念在操作系统中,当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才被允许去访问此临界资源。进程之间的这种相互制约关系被称为互斥。4.上锁和解锁操作在大多数同步机构中,必须用一个标志来代表某一资源的状态。比如,标志为“0”表示未被使用,标志为“1”表示已被使用。这一标志经常被称为锁或信号量。对于每一共享数据块或设备都要有一个单位的锁位。常用的锁位值为“0”表示资源可用,为“1”表示资源已被占用。进程在使用某一共享资源之前必须完成下列操作:如果原来的值为0,将锁位置1。如果原来的值为1,则返回第一步再考察。系统提供在一个锁位W上的两个

7、原语操作:上锁原语LOCK(W)和开锁原语UNLOCK(W),其功能可描述如下:LOCK(W) L: if W=1 then GOTO L else W=1;UNLOCK(W)W=0;5.利用上锁和解锁操作实现进程互斥对两个进程关于临界资源的操作可描述为:进程P1 LOCK(W); CS1UNLOCK(W);进程P2LOCK(W); CS2UNLOCK(W);其中,CS1和CS2代表两个进程的所对应的临界区。三.信号量和PV操作1.信号量的概念信号量是一个确切的二元组(S,Q),S是一个具有非负初值的整型变量,Q是一个初始状态为空的队列。信号量的值只能通过P,V操作来改变,其可能的取值范围是负

8、整数、零、正整数。注:一个信号量的建立必须经过说明,即应该准确说明S的意义和初值。2.PV操作信号量的数值仅能由P,V操作加以改变。对信号量的P操作记为P(S),对信号量的V操作记为V(S),它们都是不可分割的原语操作。P操作过程S值减1。若相减结果大于或等于0,则进程继续执行。若相减结果小于0,该进程被阻塞,并将它插入到该信号量的等待队列中,然后转进程调度。V操作过程S值加1。若相加结果大于0,进程继续执行。若相加结果小于或等于0,则从该信号量的等待队列中移出一个进程,解除它的等待状态,然后返回本进程继续执行。3.利用信号量实现进程互斥例如,设两个并发进程A和B,具有相对于变量N的临界段CS

9、A和CSB,用信号量实现它们的互斥情况可描述如下:进程A P(S);CSA;V(S);进程BP(S);CSB;V(S);对于两个并发进程,互斥信号量的值仅取1、0、-1三个值。若S=1,表示没有进程进入临界区;若S=0,表示有一个进程进入临界区;若S=-1,表示一个进程进入临界区,另一个进程等待进入。思考题:1.如果N个并发进程共用一个公共变量Q,用信号量和PV操作实现这N个进程的互斥,信号量的取值范围如何呢?2.哲学家进餐问题哲学家问题是描述有5个哲学家,它们的生活方式是交替地进行思考和进餐。哲学家们共用一张圆桌,分别坐在周围的5张椅子上。在圆桌上有5个碗和5支筷子,平时一个哲学家进行思考,

10、饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐毕,放下筷子又继续思考。请用信号量和PV操作说明这五位哲学家的同步过程。3.读者写者问题在计算机系统中,有些文件是可以供若干进程共享的。假定有某个共享文件F,系统允许进程对文件F读或者修改,但规定:多个进程可以同时读文件F。任一个进程在对文件F进行修改时不允许其它进程对文件进行读或者修改。当有进程在读文件时不允许任何进程去修改文件。在这个问题中,可以把想读文件的进程称为读者,把想修改文件的进程称为写者。当有多个读者和写者都要对文件读或写时,按规定每次只允许一个进程执行写操作且有进程执行写时不允许进程去读文件。显然,写者和

11、写者之间要互斥,写者和读者之间也要互斥,但多个读者之间可同时读。第 5 次 课 教 案 操作系统 课程 计本081-4 班级 年 月 日章节名称第2章 进程管理教学目的与 要 求掌握进程同步的概念和实现方法。教学内容2.4 进程同步重 点进程同步难 点进程同步的实现作 业自编2.4、2.5、2.6教具与挂图教学过程(组织与方法)讲解与举例2.4 进程同步一.同步的概念所谓同步就是并发进程在一些关键点上可能要互相等待与互通消息,这种相互制约的等待与互通消息称为进程同步。同步意味着两个或多个进程之间根据它们一致同意的协议进行相互作用。要实现同步,一定存在着必须遵循的同步规则。日常生活中的例子:医生

12、为某病员诊病,认为需要做某些化验,于是,就为病员开了化验单。病员取样送到化验室,等待化验完毕交回化验结果,然后继续诊病。医生为病员诊病是一个进程,化验室的化验工作又是另一个进程,它们是各自独立的活动单位,但它们共同完成医疗任务,所以需要交换信息。在操作系统中进程同步的例子:为了把原始的一批记录加工成当前需要的记录,创建两个进程A和B。进程A启动输入设备不断地读记录,每读一个记录,存入缓冲区,进程B从缓冲区中取出记录进行加工。如果对两个进程不进行制约的话就会造成如下错误。当进程A的执行速度超过进程B的执行速度时,可能进程A把一个记录存入缓冲区后,进程B还没有取走,进程A又把新读出的一个记录存入缓

13、冲区,后一个记录就会把尚未取走的记录覆盖了,造成记录的丢失。当进程B的执行速度超过进程A的执行速度时,可能进程B从缓冲区取出一个记录并加工后,进程A仍没有把下一个新记录存入缓冲区,而进程B却又从缓冲区去取记录,造成重复地取出同一个记录加工。用进程互斥的办法不能克服上述两种错误,引起错误的根本原因是它们的速度,可以采用互通消息的办法来控制它们的执行速度,使相互协作的进程正确工作。两个进程应如下协作:进程A把一个记录存入缓冲区后,应向进程B发送“缓冲区中有记录”的消息。进程B从缓冲区中取出记录后,应向进程A发送“缓冲区中的记录已取走”的消息。进程A只有在得到进程B发送来的“缓冲区中的记录已取走”的

14、消息后,才能把下一个记录再存入缓冲区。否则进程A等待,直到消息到达。进程B只有在得到进程A发送来的“缓冲区中有记录”的消息后,才能从缓冲区中取出记录并加工。否则进程B等待,直到消息到达。二.利用信号量和PV操作实现进程同步PV操作不仅是实现进程互斥的有效工具,而且还是实现同步的工具。把一个信号量与一个消息联系起来,当信号量的值为“0”时,表示期望的消息尚未产生,当信号量的值为“非0”时,表示期望的消息已经存在。 调用P操作判定消息是否到达任何进程调用P操作可以判定自己所期望的消息是否到达。若消息尚未产生,则S=0,调用P(S)后,在执行完P操作的第一步S=S-1后,S的值变成-1,使调用者成为

15、等待信号量S的状态,即调用者要等待直到消息到达为止;若消息已经存在,则S0,调用P(S)后,进程不会成为等待状态而可以继续执行,即进程测试到自己期望的消息已经存在。 调用V操作发送消息任何进程调用V操作可以向其它进程发送消息。若调用V操作之前S=0,表示消息尚未产生且无等待消息的进程,调用V(S)后,在执行完V操作的第一步S=S+1后,使S的值0,即意味着消息已经存在;若调用V操作之前S0,表示消息未产生前已经有进程在等待消息,这时调用V操作后将释放一个等待消息的进程,即表示该进程等待的消息已经到达可以继续执行。例如,某计算进程CP和打印进程PN共用一个单缓冲区,如图1所示。其中,CP进程负责

16、不断地计算数据并送入缓冲区T中,PN进程负责从缓冲区T中取出数据去打印。图1计算进程和打印进程设置两个信号量SA和SB 。信号量SA用来表示缓冲区有无空位置存放新的信息,其初值为“1”。信号量SB用来表示缓冲区中是否有可供打印的计算结果,其初值为“0”。上述两个进程之间的同步可描述如下:main()int SA =0; /*表示缓冲区是否为空*/int SB =1; /*表示缓冲区是否有信息*/cobegin Process CP while(1) 生产一个数据; P(SA); 送入缓冲区; V(SB); Process PN while(1) P(SB);从缓冲区中取出一个数据; V(SA)

17、; 输出数据; coend三.生产者消费者问题通过一个有界缓冲区可以把一群生产者P1,P2,P3,Pm和一群消费者C1,C2,C3,Ck联系起来,如图2所示。假定这些生产者和消费者是互相等效的。只要缓冲区未满,生产者就可以把产品送入缓冲区,类似地,只要缓冲区未空,消费者便可以从缓冲区中取走物品并消耗它。生产者和消费者的同步关系将禁止生产者向满的缓冲区输送产品,也禁止消费者从空的缓冲区中提取产品。图2 生产者消费者问题为了解决这一类生产者消费者问题,应该设置两个同步信号量:一个表示缓冲区是否为空,用empty 表示,其初值为有界缓冲区的大小n,因为缓冲区中可以有n个单元存放产品,所以初值设为“n

18、”。另一个表示缓冲区是否有信息,用full表示,其初值为“0”,因为在最初时,缓冲区中无信息,所以初值设为0。另外还需设置一个互斥信号量mutex,其初值为“1”。生产者消费者问题的同步描述如下:main()int empty=n; /*表示缓冲区中是否有无空位置*/int full =0; /*表示缓冲区中是否有信息*/int mutex=1; /*互斥信号量 */cobegin Process proceduceri /*i=1,2,m*/ while(生产未完成) 生产一个产品; P(empty); P(mutex); 送一个产品到有界缓冲区; V(mutex); V(full); Pr

19、ocess consumerj /*j=1,2,k*/ while(还要继续消费) P(full); P(mutex); 从有界缓冲区中取出产品; V(mutex); V(empty); 消费一个产品; coend 第 6 次 课 教 案 操作系统 课程 计本081-4 班级 年 月 日章节名称第2章 进程管理(习题课)教学目的与 要 求通过对一些习题的讲解和练习,掌握进程同步的概念和实现方法。教学内容进程同步习题重 点进程同步的实现难 点进程同步的实现作 业教具与挂图教学过程(组织与方法)讲解与举例 【例1】有三个进程PA、PB和PC合作解决文件打印问题,如图所示:PA将文件记录从磁盘读入缓

20、冲区1中,每执行一次读一个记录;PB将缓冲区1中的内容复制到缓冲区2中,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。这两个缓冲区都是单缓冲区,只能放一个记录。请用PV操作来保证文件的正确打印。图 三个合作进程main()int empty1 =1; /*表示缓冲区1是否为空*/int empty2 =1; /*表示缓冲区2是否为空*/int full1=0; /*表示缓冲区1是否有记录*/int full2=0; /*表示缓冲区2是否有记录*/cobegin Process PA while(1) 从磁盘读一个记录; P(empty1); 将记录存入缓冲区1;

21、 V(full1); Process PB while(1) P(full1); P(empty2);将缓冲区1中的记录复制到缓冲区2中; V(empty1); V(full2); Process PC while(1) P(full2);从缓冲区2中取出记录; V(empty2); coend【例2】桌上有一个空盘子,允许存放一个水果。爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。请用PV操作实现爸爸、儿子和女儿三个并发进程的同步。main()int S =1; /*表示盘子是否为空*/int Sa=0; /*表示盘子中是否有苹果*/int So=0; /

22、*表示盘子中是否有桔子*/cobegin Process father while(1) P(S); 将水果放入盘中; if (放入的是苹果) V(Sa); else V(So); Process son while(1) P(So);从盘中取出桔子; V(S); Process daughter while(1) P(Sa);从盘中取出苹果; V(S); coend【例3】设公共汽车上,司机和售票员的活动分别如下所示:在汽车不断地到站、停车、行驶过程中,为保证乘客的安全,司机与售票员应密切配合协调工作。请用PV操作来实现司机与售票员之间的同步。司机的活动:启动车辆;正常行车;到站停车;售票员

23、的活动:关车门;售票;开车门;main()int S1 =0; /*表示是否允许司机启动汽车*/int S2 =0; /*表示是否允许售票员开门*/cobegin Process driver while(1) P(S1);启动车辆;正常行车;到站停车;V(S2); Process busman while(1) 关车门;V(S1);售票;P(S2);开车门;上下乘客; coend【例4】在计算机系统中,有些文件是可以供若干进程共享的。假定有某个共享文件F,系统允许进程对文件F读或者修改,但规定:多个进程可以同时读文件F。任一个进程在对文件F进行修改时不允许其它进程对文件进行读或者修改。当有进

24、程在读文件时不允许任何进程去修改文件。在这个问题中,可以把想读文件的进程称为读者,把想修改文件的进程称为写者。当有多个读者和写者都要对文件读或写时,按规定每次只允许一个进程执行写操作且有进程执行写时不允许进程去读文件。显然,写者和写者之间要互斥,写者和读者之间也要互斥,但多个读者之间可同时读。main() int rc=0; /*记录读者的个数*/ int s=1; /*互斥信号量,用于读者和写者之间的互斥*/ int sr=1; /*互斥信号量,用于对访问公共变量rc的互斥*/ cobegin Process Readeri(i=1,2,) while(1) P(sr); if (rc=1) then P(S); rc=rc+1; V(sr); read file F; P(sr); rc=rc-1; if (rc=0) then V(S); V(sr); Process Writerj(j=1,2,) while(1) P(S);write file F; V(S); coend

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1