
第二章进程和线程作业答案<br/>1, 2, 4, 6, 7, 10, 11, 12, 14, 21<br/>在操作系统中为什么要引入进程概念?它与程序的差别<br/>和关系是怎样的?<br/>答:由于多道程序的并发执行时共享系统资源,共同决定这 些资源的状态,因(1)这个算法不对。进程A, B共用一个缓冲区,同步<br/>2-28所示。<br/>进程A<br/>进程A<br/>进程B<br/>进程B<br/>图2-27进程A、B的算法框图<br/>临界区代码CSa<br/>V( S1)<br/>P(S2)<br/>P( S1)<br/>临界区代码CSb<br/>V( S2)<br/>信号量S1,S2的初值为0<br/>图2-28两个并发进程临界区的算法框图<br/>关系。如果 A先运行,且信息数量足够多,则缓冲区 Q中 的信息会被后来的冲掉,造成信息丢失,进程 B不能从Q<br/>中读出完整的信息。<br/>改正:<br/>进程A,B同步使用一个缓冲区, 设立两个信号量:<br/>empty :缓冲区Q为空,初值为1 ;<br/>full :缓冲区Q为满,初值为0;<br/>算法框图如下图所示<br/>进程A<br/>进程B<br/>进程A<br/>P( empty) 向Q写入信息<br/>V( full :<br/>进程B<br/>P( full :<br/>从Q读出信息<br/>V ( empty)<br/>P( mutex)<br/>临界区代码CSa<br/>V ( mutex)<br/>P( mutex)<br/>临界区代码CSb<br/>V( mutex)<br/>图2-28的算法框图<br/>改正后<br/>图2-27的算法框图 改正后<br/>(2)这个算法不对。进程A,B并发的,它们共享一个临界 资源,二者应互斥地使用该临界资源,在进入临界区时不存 在A先B后的时序关系,而是哪个进程先到一步就先进入<br/>自己的临界区 改正:A,B两个进程应互斥地进入临界区。为此,设立一个<br/>互斥信号量mutex,初值为1,算法框图如上所示。<br/>,有两条 I/O通道,分别接一台卡片输 入机和一台打印机。卡片机把一叠卡片逐一输入到缓冲区<br/>B1中,加工处理后再搬到缓冲区 B2中,并在打印机上打印<br/>结果,问:<br/>系统要设几个进程来完成这个任务?各自的工作是什么<br/>这些进程间有什么样的相互制约关系?<br/>用P, V操作写出这些进程的同步算法。<br/>答:这是一个典型的生产者,消费者问题<br/>1) 系统可设三个进程完成任务,第一个进程 R,从卡片输入<br/>机中读入数据,并且把数据放入缓冲区 B1中,第二个进程C 从B1缓冲区中取数据,加工处理后放入缓冲区 B2中。第三<br/>个进程P将缓冲区B2的容取出,在打印机上打印出来<br/>2) 这三个进程之间是同步关系<br/>R进程受C进程影响,B1放满信息后R进程要等待,等到 C 进程将其中的信息全部取走,才能继续读入信息; C进程受<br/>R进程和P进程的约束,B1息放满后C进程才可从中取出它 们,且B2被取空后C进程才可将加工结果送入其中; P进程<br/>受C进程的约束,B2息放满后P进程才可从中取出它们, 进<br/>行打印。<br/>3) 三个进程之间必须协调工作,需设置四个信号量:<br/>Biempty:缓冲区 B1空,初值为1 ;<br/>Bifull :缓冲区B1满,初值为0;<br/>B2empty:缓冲区 B2空,初值为1 ;<br/>B2full :缓冲区B2满,初值为0;<br/>进程R<br/>while (TRUE {<br/>P(B1empty);<br/>从卡片机中读入数据<br/>进程C<br/>while ( TRUE {<br/>P( Bifull );<br/>将B1中的数据取出计算<br/>进程P<br/>while ( TRUE {<br/>P( B2full );<br/>将缓冲区B2容<br/>写入缓冲区B1;<br/>V( B1full );<br/>}<br/>在打印机中输出;<br/>V(B2empty);<br/>}<br/>V( B1empty);<br/>P( B2empty);<br/>计算结果送入B2中;<br/>V(B2full);<br/>}<br/>14•假定一个阅览室最多可容纳 100个人,读者进入和离开<br/>阅览室时都必须在阅览室门口的一登记表上做标识 (进入时<br/>登记,离开时去掉登记项),而且每次只允许一人登记或去 掉登记。问:<br/>①应编写几个程序完成此项工作 ?程序的主要动作是什 么,应设置几个进程?进程与程序间的对应关系如何?<br/>②用P,V操作写出这些进程的同步通信关系。<br/>①完成此项工作可编写一个或两个程序(函数),每个读者 对应一个进程。每个读者的动作包括:<br/>进入阅览室前查表登记,这时要考虑阅览室里是否有座<br/>位;<br/>进入阅览室,阅读<br/>写入缓冲区B1;<br/>V( B1full );<br/>}<br/>在打印机中输出;<br/>V(B2empty);<br/>}<br/>V( B1empty);<br/>P( B2empty);<br/>计算结果送入B2中;<br/>V(B2full);<br/>}<br/>14•假定一个阅览室最多可容纳 100个人,读者进入和离开<br/>阅览室时都必
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/183648.html