forum14f101Word下载.docx

上传人:b****7 文档编号:22385185 上传时间:2023-02-03 格式:DOCX 页数:14 大小:807.19KB
下载 相关 举报
forum14f101Word下载.docx_第1页
第1页 / 共14页
forum14f101Word下载.docx_第2页
第2页 / 共14页
forum14f101Word下载.docx_第3页
第3页 / 共14页
forum14f101Word下载.docx_第4页
第4页 / 共14页
forum14f101Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

forum14f101Word下载.docx

《forum14f101Word下载.docx》由会员分享,可在线阅读,更多相关《forum14f101Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

forum14f101Word下载.docx

(1)系统要设几个进程来完成这个任务?

各自的工作是什么?

(2)这些进程间有什么样的相互制约关系?

(3)用P.V操作写出这些进程的同步算法。

(4)设系统中只有上述几个过程,用图表示出各自状态变迁情况及原因。

(1)系统要设3个进程来完成这个任务;

第一个进程:

从卡片机把一叠卡片逐一输入到缓冲区B1中;

第二个进程:

加工处理后再搬到缓冲区B2中;

第三个进程:

从缓冲区B2读出,打印机印出。

(2)第一个进程从卡片机把一叠卡片逐一输入到缓冲区B1中,第二个进程加工处理B1中的数据。

如果B1为空,则第二个进程无法进行;

如果B1满了,第一个进程不能再进行。

第二个进程加工处理B1中的数据并搬到B2中,第三个进程从B2读出。

如果B2为空,则第三个进程无法进行;

如果B2满了,第二个进程无法进行。

(3)

P:

不能往满的B1送数据,设信号量S1,初值为k(k为缓冲区B1的大小)

while(true){

读一张卡片;

P(S1);

数据送到缓冲区B1;

V(S2);

};

Q:

不能从空的B1读数据,设信号量S2,初值为0;

不能往满的B2送数据,设信号量S3,初值为l(l为缓冲区B2的大小)

P(S2);

从缓冲区B1读数据;

加工数据;

V(S1);

P(S3)

加工的数据写入缓冲区B2;

V(S4)

R:

不能从空的B2读数据,设信号量S4,初值为0;

P(S4);

从缓冲区B2读数据;

V(S3)

打印;

(4)

进程1

进程2

进程3

4、假定一个阅览室最多可容纳100人,读者进入和离开阅览室时都必须在阅览室门口的一个登记表上标志(进入时登记,离开时去掉登记项),而且每次只允许一人登记或去掉登记,问:

(1)应编写几个程序完成此项工作,程序的主要动作是些什么?

应设置几个进程?

进程与程序间的对应关系如何?

(2)用P、V操作写出这些进程的同步通信关系。

(1)编写1个程序即可完成工作,该程序负责管理读者进入登记、阅读、取消登记、离开。

应设置100个进程,分别对应进入阅览室的每个读者。

(2)设置readercount=100,控制可进入的读者数

设置mutex=1,控制操作登记表

Proc()

{

P(mutex)

P(readercount)

分配阅览室资源

V(mutex)

Reading……

P(mutex)

回收阅览室资源

V(readercount)

}

5、假使A、B两个火车站之间是单轨线,许多列车可以同时到达A站,然后经A站到B站,又列车从A到B的行驶时间是t,列车到B站后的停留时间是t/2。

试问在该问题模型中,什么是临界资源?

什么是临界区?

因为许多列车可以同时到达A站,所以A站不是互斥资源,而A、B之间的单轨线每次只能允许一辆列车发出以后另一辆才能发出。

因为列车行驶时间为t,B的停留时间为t/2,所以只要在前一辆列车走完前1/2路程后再发车,到达B站时前一辆车也已离开B站。

(1)A、B间单轨线的前半段是临界资源。

(2)临界区:

列车在单轨线前半段上行驶

6、进程A1,A2,…,An1通过m个缓冲区向进程B1,B2,…,Bn2不断地发送消息,发送和接收工作遵循如下规则:

(1)每个发送进程每次发送一个消息,写入一个缓冲区,缓冲区大小与消息长度一样;

(2)对每一个消息,B1,B2,…,Bn2都需要各接收一次,读到各自的数据区内;

(3)m个缓冲区都满时,发送进程等待;

没有可读的消息时,接收进程等待。

试用P,V操作组织正确的发送和接收操作。

假设发送者和接收者都是采用递增环状方式使用缓冲区,那么任意一个发送者要么等待在第x缓冲区(条件是缓冲区x未被清空)要么发送到x,发送完后需要唤醒所有接收进程。

接收进程不停的轮询缓冲区,如果缓冲区有内容,则收取,并把此缓冲区的未接收数减一,如果减至0,则置缓冲区为空。

综上所述,需要对每个缓冲区单位设置空,满,互斥量,未收取数(empty,full,mut,count)其中full是一个数组,记录每个接收者的情况,防止重复接收,mutex主要用来做未收取数count的互斥访问。

整型全局变量s记录发送者采用环状递增方式使用缓冲区时的当前缓冲区下标。

typedefstruct{

MessageTypemsg;

intcount;

//记录未接收的进程数目

semaphoremut;

//初值为1

semaphoreempty;

semaphorefull[n2];

}BufferType;

BufferTypebuff[m];

此外,还要设置全局的互斥变量mutex,保证全局变量的互斥访问。

7、有K个进程共享一个临界区,对于下述情况,请说明信号量的初值、含义,并用P、V操作写出有关的互斥算法。

(1)一次只允许一个进程进入临界区;

(2)一次允许m个进程进入临界区(m<

K)。

<

1>

.信号量说明:

   mutex,初值为1,记录可进入临界区的进程数;

   互斥算法;

 

    P(mutex);

进入临界区;

V(mutex);

结束;

<

2>

 mutex,初值为m,记录可进入临界区的进程数;

互斥算法;

    结束;

8、爱睡觉的理发师问题[Dijkstra,1968]。

一个理发店有两间相连的屋子。

一间是私室,里面有一把理发椅,另一间是等候室,有一个滑动门和N把椅子。

理发师忙的时候,通向私室的门被关闭,新来的顾客找一把空椅子坐下,如果椅子都被占用了,则顾客只好离去。

如果没有顾客,则理发师在理发椅上睡觉,并打开通向私室的门。

理发师睡觉时,顾客可以叫醒他理发。

请编写理发师和顾客的程序,正确实现同步互斥问题。

9、一家快餐店招有4种雇员:

(1)开票者,取顾客的订单;

(2)厨师,准备饭菜;

(3)包装员,把食物撞进袋中;

(4)出纳,一手收钱一手交货。

每位雇员可以看作一个在通信的顺序进程。

他们采用的是什么方式的进程间通信?

开票者和厨师之间是管道通信。

开票者源源不断的把订单给厨师,一次可能给一张也可能给多张,厨师一次可能拿走一张订单去做也可能拿走多张去做。

厨师和包装员之间是信箱通信,他们之间有个信箱,可能就是一个小平台,厨师做好就把菜放上去,相当于放进信箱,而包装员可以在任何时候取走那个菜。

包装员和出纳之间是消息缓冲通信,包装员包好了就给出纳发消息,出纳得到消息就取走包好的饭菜然后出售。

10、在CPU按优先级调度的系统中:

(1)没有运行进程是否一定就没有就绪进程?

(2)没有运行进程,没有就绪进程或两者都没有是否可能?

各是什么情况?

(3)运行进程是否一定是自由进程中优先数最高的?

(1)一定没有就绪进程;

(2)没有运行进程是因为没有就绪进程;

没有就绪进程是因为进程可能等待在某些信号量上或者IO事件上。

(3)不一定(自由进程是指处于就绪态和运行态的进程,如果调度策略是可抢占的,那么运行进程是自由进程中优先数最高的;

如果调度策略是不可抢占的,那么运行进程的优先级不一定是最高的)

11、巴拿马运河建在太平洋和大西洋之间。

由于太平洋和大西洋水面高度不同,有巨大落差,所以运河中修建有T(T>

=2)级船闸,并且只能允许单向通行。

船闸依次编号为1,2,……,T。

由大西洋来的船需经由船闸T,T-1,……,2,1通过运河到太平洋;

由太平洋来的船需经由船闸1,2,……,T-1,T通过运河到大西洋。

试用P,V操作正确解决大西洋和太平洋的船只通航问题。

来自不同方向的船只对船闸要互斥使用。

但如过有同方向的船只正在通行,则不用等待。

对一个船闸设以下变量:

PtoAcnt整型,记录此船闸正由太平洋往大西洋航行的船只初值0。

AtoPcnt整型,记录此船闸正由大西洋往太平洋航行的船只初值0。

MutexA信号量,对PtoAcount互斥初值1

MutexB信号量,对AtoPcount互斥初值1

Lock信号量初值1

太平洋到大西洋的船:

P(mutexA);

PtoAcnt=PtoAcnt+1;

ifPtoAcnt==1

thenP(Lock);

V(mutexA);

P(mutexA)

PtoAcnt=PtoAcnt-1;

ifPtoAcnt==0;

thenV(Lock);

大西洋到太平洋的船:

P(mutexB);

AtoPcnt:

=AtoPcnt+1;

ifAtoPcnt==1;

V(mutexB);

P(mutexB)

AtoPcnt=AtoPcnt-1;

ifAtoPcnt==0;

 

12、某银行有人民币储蓄业务,由n个柜员负责。

每个顾客进入银行后先取一个号,并且等着叫号。

当一个柜台人员空闲下来,就叫下一个号。

试用P,V操作正确编写柜台人员和顾客进程的程序。

13、某系统如此定义P、V操作:

P(S)

S=S–1;

若S<0,本进程进入S信号量等待队列的末尾;

否则,继续执行。

V(S)

S=S+1;

若S≤0,释放等待队列中末尾的进程,否则继续运行。

(1)上面定义的P、V操作有什么问题?

(2)现有四个进程P1、P2、P3、P4竞争使用某一个互斥资源(每个进程可能反复使用多次),试用上面定义的P、V操作正确解决P1、P2、P3、P4对该互斥资源的使用问题。

(1)不合理:

先进后出;

可能“无限等待”

(2)思路:

令等待队列中始终只有一个进程。

将“栈”变成“队列”

14、请用进程通信的方法解决生产者消费者问题。

假设存放消息的缓冲区有N个

15、试用P、V操作解决第二类读者写者问题。

所谓第二类读者写者问题是指写者优先,条件为:

(1)多个读者可以同时进行读;

(2)写者必须互斥(只允许一个写者写,同时也不能读者、写者同时进行);

(3)写者优先于读者(一旦有写者来,则后续读者必须等待,唤醒时优先考虑写者)。

p

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

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

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