第九题设有两个生产者进程a、b和一个销售者进程c,他们共享一个无限大的仓库,生产者每次循环生产一个产品,然**库供销售;销售者每次循环从仓库中取出一个产品进行销售。如果不允许同时入库,也不允许边入库边出库;而且要求生产和消费a产品和b产品的件数都满足以下关系:-n≤a的件数-b的件数≤m,其中n、m是正整数。
分析:生产者a、b和消费者之间不能同时将产品入库和出库,故仓库是一个临界资源。
生产的a、b产品必须满足:-n≤a的件数-b的件数≤m,如练习5中,同样的方法管理,分别使用了信号量sab和sba;
仓库的管理只要求出入库互斥,由于仓库无限大入库只需操作互斥就可以完成,出库要考虑有无产品,sa对应于仓库中的a产品量,sb对应于仓库中的b产品量;
销售要满足:-n≤a的件数-b的件数≤m,用difference表示a的件数-b的件数,即difference= a的件数-b的件数;difference==-n的时候,不能取产品b,只能取a;difference==m的时候,不能取产品a,只能取b;-n答:为了互斥地入库和出库,需为仓库设置一初值为1的互斥信号量mutex;为了使生产的产品件数满足-n≤a的件数-b的件数≤m,须设置两个同步的信号量,其中sab表示当前允许a生产的产品数量,其初值为m,sba表示当前允许b生产的产品数量,其初值为n;另外,还需设置一个整数difference表示所销售的a、b产品数量之差,而为了同步生产者和销售者并使销售的a、b产品的件数-n≤a的件数-b的件数≤m,还需要设置三个资源信号量,其中s对应于仓库中的总的产品量,sa对应于仓库中的a产品量,sb对应于仓库中的b产品量,它们的初值都为0.
semaphore sab=m,sba=n,s=0,sa=0,sb=0,mutex=1;
process a( )
process b( )
process c( )
else if(difference>=m)
wait(sb); difference>=m时只能取b产品一件,无b产品则需阻塞。
//出库操作,满足出入库操作互斥。
wait(mutex);
take a product b from storehouse;
signal(mutex);
difference--;取b产品一件,difference--
else //n //出库操作,满足出入库操作互斥。
wait(mutex);
take a product a 或b from storehouse;
signal(mutex);
if(product_type==a)else
sell the product;
main()
cobegin
process w1()
int y;
while(1)
wait(so);
y=b;signal(s);
操作系统作业答案
2.假设有一个成品仓库,总共能存放8台成品,生产者进程生产产品放入仓库,消费者进程从仓库中取出成品消费。为了防止积压,仓库满时就停止生产,由于仓库搬运设备只有一套,故成品的存入和取出只能分别执行,使用p v操作来实现该方案。3.某系统中有10台打印机,有三个进程p1,p2,p3,分别需要8,7,4台...
操作系统作业答案
习题一。1 举例说明为什么对并发执行的程序不加控制会产生与执行时间有关的错误?解 程序在并发执行时由于资源是共享的,而且常常资源数少于程序对这些资源的需求数,致使这些并发执行的程序之间因为竞争资源导致存在间接制约关系,这种间接制约使得并发执行的程序具有随机性 异步性 即 执行 暂停 执行 它们何时启...
操作系统作业2答案
姓名。学号评分。操作系统原理作业 b 答案。一 24分 单项选择题。1.在存储管理中,采用覆盖与交换技术的目的是 a.节省主存空间 b 物理上扩充主存容量。c.提高cpu效率 d 实现主存共享。答 a2.如果i o设备与存储设备进行数据交换不经过cpu来完成,这种数据交换方式是 a.程序查询 b 中...