2022年操作系统作业答案 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年操作系统作业答案 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统作业答案 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 第九题设有两个生产者进程A、B 和一个销售者进程C,他们共享一个无限大的仓库,生产者每次循环生产一个产品,然后入库供销售;销售者每次循环从仓库中取出一个产品进行销售。如果不允许同时入库, 也不允许边入库边出库; 而且要求生产和消费A 产品和 B 产品的件数都满足以下关系:-nA 的件数 B 的件数 m ,其中 n、m 是正整数。分析:生产者A、B 和消费者之间不能同时将产品入库和出库,故仓库是一个临界资源。生产的 A、B 产品必须满足:-nA 的件数 B 的件数 m ,如练习5 中,同样的方法管理,分别使用了信号量SAB 和 SBA;仓库的管理只要求出入库互斥,由于仓库无限大入库只需操作互
2、斥就可以完成,出库要考虑有无产品,SA 对应于仓库中的A 产品量, SB 对应于仓库中的B 产品量;销售要满足: -nA 的件数 B 的件数 m ,用 difference 表示 A 的件数 B 的件数,即difference= A的件数 B 的件数 ;difference=-n 的时候,不能取产品B,只能取 A;difference=m 的时候,不能取产品A,只能取 B;-ndifferencem,即可以取产品A 也可以取产品B;答:为了互斥地入库和出库,需为仓库设置一初值为1 的互斥信号量mutex;为了使生产的产品件数满足-nA 的件数 B 的件数 m ,须设置两个同步的信号量,其中SA
3、B 表示当前允许A 生产的产品数量,其初值为 m,SBA 表示当前允许B 生产的产品数量,其初值为n;另外,还需设置一个整数difference 表示所销售的A、B 产品数量之差,而为了同步生产者和销售者并使销售的A、B 产品的件数 -nA 的件数 B的件数 m ,还需要设置三个资源信号量,其中 S 对应于仓库中的总的产品量,SA 对应于仓库中的A 产品量, SB 对应于仓库中的B 产品量,它们的初值都为0. Semaphore SAB=m,SBA=n,S=0,SA=0,SB=0,mutex=1; process A( ) while(1) /生产产品, -nA 的件数 B 的件数 m ,方法
4、同第4 题wait(SAB); Produce a product A; signal(SBA); /入库操作,满足出入库操作互斥即可wait(mutex); add the product A to the storehouse; signal(mutex); signal(SA); /入库产品A 一件,所以给SA 增值signal(S); /入库产品一件,所以给S 增值, S 是仓库中全部产品的数量 process B( ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页
5、,共 7 页 - - - - - - - - - 2 while(1) /生产产品, -nA 的件数 B 的件数 m ,方法同第4 题wait(SBA); Produce a product B; signal(SAB); /入库操作,满足出入库操作互斥即可wait(mutex); add the product A to the storehouse; signal(mutex); signal(SB); /入库产品A 一件,所以给SA 增值signal(S); /入库产品一件,所以给S 增值, S 是仓库中全部产品的数量 process C( ) while(1) wait(S); /首先
6、检查有无产品,无产品阻塞,有产品,下面操作将会取走一件产品,所以S 减 1if(difference=-n) wait(SA); / difference=m) wait(SB); / difference=m 时只能取 B 产品一件,无B 产品则需阻塞/出库操作,满足出入库操作互斥wait(mutex); take a product B from storehouse; signal(mutex); difference-; /取 B 产品一件, difference- else /-ndifferencem ,即可以取产品A 也可以取产品B,随意取一件产品出来,之后再根据取得产品是 A
7、还是 B 进行处理/出库操作,满足出入库操作互斥名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 3 wait(mutex); take a product A 或 B from storehouse; signal(mutex); if(product_type=A )/取的是产品A,则信号量SA 减 1,这里不可能发生没有A 产品,进程C 需要阻塞的情况wait(SA); difference+;/ 取 A 产品一件, dif
8、ference+ else /取的是产品B,则信号量SB 减 1,这里不可能发生没有B 产品,进程C 需要阻塞的情况wait(SB); difference-;/取 B 产品一件, difference- Sell the product; main() cobegin A(); B(); C(); 例题 20 解答本题是一个有限缓冲区的生产者消费者问题,关键是找到缓冲区资源,以及谁是生产者、 谁是消费者。本题中烟草、纸和火柴应该看作是产品,桌子是缓冲区。问题是有几种产品。烟草、纸和火柴三种原料又不能简单地看成是三种产品,因为它们并不是以单独的形式被三个吸烟者进程所竞争的,而是以固定的组合被三
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统作业答案 2022 操作系统 作业 答案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内