作业答案Word文档格式.docx

上传人:b****8 文档编号:22418068 上传时间:2023-02-04 格式:DOCX 页数:16 大小:70.41KB
下载 相关 举报
作业答案Word文档格式.docx_第1页
第1页 / 共16页
作业答案Word文档格式.docx_第2页
第2页 / 共16页
作业答案Word文档格式.docx_第3页
第3页 / 共16页
作业答案Word文档格式.docx_第4页
第4页 / 共16页
作业答案Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

作业答案Word文档格式.docx

《作业答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《作业答案Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

作业答案Word文档格式.docx

P(frame);

V(empty);

P(wheel);

分析上述解法易见,当工人1推进速度较快时,箱中空位置可能完全被车架占满或只留有一个存放车轮的位置,而当此时工人3同时取2个车轮时将无法得到,而工人2又无法将新加工的车轮放入箱中;

当工人2推进速度较快时,箱中空位置可能完全被车轮占满,而当此时工人3取车架时将无法得到,而工人1又无法将新加工的车架放入箱中。

上述两种情况都意味着死锁。

为防止死锁的发生,箱中车架的数量不可超过N-2,车轮的数量不可超过N-1,这些限制可以用两个信号灯来表达。

semaphores1=N-2;

semaphores2=N-1;

如此,可以给出不含死锁的完整解法如下:

P(s1);

P(s2);

V(s1);

V(s2);

详细描述还应考虑对箱子单元的描述以及访问互斥问题。

建议车架放在箱子的一端,车轮放在箱子的另一端,车架与车轮都采用后进先出的管理方式。

●用管程实现三个工人的合作

TypeBox=monitor;

enumitem={frame,wheel,null}

Varbox:

array[0….N]ofitem;

count1,count2:

integer;

full,frameempty,wheelempty:

condition;

in,out:

Defineputin-frame,putin-wheel,

takeout-frame,takeout-wheel

Produceputin-frame(x:

frame)

begin

if(count1+count2)≥Nthenwait(full);

ifcount1>

N-2thenwait(full);

count1:

=count1+1;

fori=1toN

ifbox[i]=nullthenbreak;

in:

=i;

box[in]:

=x;

signal(frameempty);

end

Produceputin-wheel(y:

wheel)

ifcount2>

N-1thenwait(full);

count2:

=count2+1;

=y;

signal(wheelempty);

Producetakeout-frame(x:

frame)

begin

ifcount1<

1thenwait(bodyempty);

=count1-1;

fori=1toN

ifbox[i]=framethenbreak

out:

=i;

x:

=box[out];

signal(full);

Producetakeout-wheel(y:

wheel)

ifcount2<

1thenwait(wheelempty);

=count2-1;

ifbox[i]=wheelthenbreak

y:

Produceworkerone

varx:

frame;

repeat

produce(x);

Box.putin-frame(x);

untilfalse;

end

Produceworkertwo

vary:

wheel;

produce(y);

Box.putin-wheel(y);

end

Produceworkerthree

varx:

y:

begin

repeat

Box.takeout-frame(x);

Box.takeout-wheel(y);

Box.takeout-wheel(y);

makebike;

untilfalse;

end

Cobegin

workerone;

workertwo;

workerthree;

Coend

26.用P、v操作解决读者和写者之间的同步问题,且写者优先。

这里仍需设置readcount记录读者数,rmutex是读者互斥访问readcount的信号量,rwmutex是读者与写者互斥访问文件的信号量。

另外再设writecount记录写者数,wmutex是写者互斥访问writecount的信号量。

为了使写者优先,需要再设置两个信号量z和r,z控制所有读者按照FCFS策略排队。

x使一个读者和一个写者竞争访问文件。

只要在x上等待的写者能继续执行,其他写者便可以直接竞争写者之间文件的互斥访问权,从而实现写者优先。

35.桌上有一个盘子,每次只能放一个水果,爸爸专向盘中放苹果,妈妈专向盘中放橘子,儿子专等吃盘里的苹果,女儿专等吃盘里的橘子苹果。

只要盘子空,爸爸妈妈可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出,请给出他们四人之间的同步关系,并用PV操作实现四人正确活动的程序。

Structsemaphores=1,so=0,sa=0;

//s表示盘空,so表示橘子,sa表示苹果。

父亲的活动:

Do{

摘一个苹果;

 

p(s);

放入盘子中;

v(sa);

}while

(1)

母亲的活动:

摘一个橘子;

v(so);

儿子的活动:

Do{

p(sa);

儿子取出苹果;

v(s);

吃掉;

}while

(1)

p(so);

女儿取出橘子;

第五章

9.在银行家算法中,若出现如下资源分配情况:

AllocationNeedAvailable

ABCDABCDABCD

P0:

003200121623

P1:

10001750

P2:

13542356

P3:

03320652

P4:

00140656

试问:

(1)当前状态是否安全?

(2)如果进程P2提出安全请求Request[2]=(1,2,2,2),系统能否将资源分配给它?

说明原因.

(1)当前状态是安全状态。

运行安全性检查算法如下:

1)Work=Available;

Finish=false;

2)寻找满足如下条件的i:

Finish[i]==false并且Need[i]≤Work[i];

如果不存在,则转步骤4);

3)Work=Work+Allocation[i];

Finish[i]=true;

转步骤2)

4)如果对于所有i,Finish[i]=true,则系统处于安全状态,否则处于不安全状态。

令Work=Available=(1,6,2,3)

运行安全性检测算法,Finish[0]=false并且Need[0]=(0012)<

Work,则Work=Work+Allocation[0]=(1,6,2,3)+(0,0,3,2)=(1,6,5,5);

Finish[0]=true;

Finish[3]=false并且Need[3]=(0,6,5,2)<

Work,则Work=Work+Allocation[3]=(1,6,5,5)+(0,3,3,2)=(1,9,8,7);

Finish[3]=true;

Finish[4]=false并且Need[4=(0,6,5,6)<

Work,则Work=Work+Allocation[4]=(1,9,8,7)+(0,0,1,4)=(1,9,9,11);

Finish[4]=true;

Finish[1]=false并且Need[1]=(1,7,5,0)<

Work,则Work=Work+Allocation[4]=(1,9,9,1)+(1,0,0,0)=(2,9,9,11);

Finish[1]=true;

Finish[2]=false并且Need[2]=(2,3,5,6)<

Work,则Work=Work+Allocation[4]=(2,9,9,11)+(1,3,5,4)=(3,12,14,15);

Finish[2]=true;

可以找到一个安全进程序列<

p0,p3,p4,p1,p2>

,它使Finish[i]=true,对于所有0≤i≤4,因而可以断言系统当前处于安全状态.

(2)运行银行家算法,由于Request[2]=(1,2,2,2)£Need[2]=(2,3,5,6),因而请求合法。

进一步,Request[2]=(1,2,2,2)£Available=(1,6,2,3),故该请求是可以满足的。

假设将资源分配给p2,则系统状态变为:

003200120401

25761134

运行安全性检测算法,Work=Available=(0,4,0,1),Finish[i]=false,此时所有Need[i]£Work[i]均不成立,结果Finish[i]均为false,不存在安全进程序列,系统处于不安全状态。

系统将取消资源分配并恢复原来状态,进程p2等待。

1.某系统采用死锁检测手段发现死锁,设系统中资源类集合为{A,B,C},资源类A中共有8个实例,资源类B中共有6个实例,资源类C中共有5个实例.又设系统中进程集合为{p1,p2,p3,p4,p5,p6},某时刻系统状态如下:

AllocationRequestAvailable

ABCABCABC

p1:

100000221

p2:

321000

p3:

012202

p4:

000000

p5:

210031

p6:

001000

2.在上述状态下系统依次接受如下请求:

Request[1]=(1,0,0);

Request[2]=(2,1,0);

Request[4]=(0,0,2)。

给出系统状态变化情况,并说明没有死锁。

在由

(1)所确定的状态下系统接收如下请求:

Request[1]=(0,3,1),说明此时已发生死锁,并找出参与死锁的进程。

(1)①如果系统只是接受请求,但是没有分配资源给进程,那么系统状态变为:

100100221

321210

000002

在该状态下运行死锁检测算法,可以找到一个进程序列<

p4,p1,p2,p3,p5,p6>

,它使Finish[i]=true,对于所有1≤i≤6,因而可以断言系统当前没有进入死锁状态。

②如果系统接受请求后,将一个A分配给进程p1,则系统状态变为:

200000121

(2)设在

(1)的①状态下系统接收如下请求:

Request[1]=(0,3,1),则系统状态变为:

100131221

p4,p2,p3,p5,p6,p1>

,它使Finish[i]=true,对于所有1≤i≤6,因而可以断言系统当前没有进入死锁状态.

设在

(1)的②状态下系统接收如下请求:

AllocationRequestAvailable

200031121

在该状态下运行死锁检测算法,找不到一个进程序列使Finish[i]=true,对于所有1≤i≤6,因为存在i∈{1,2,3,5},使Finish[i]=false,因而可以断言系统已经进入死锁状态,进程p1,p2,p3,p5卷入死锁.

第六章

17,分配的页框数为3时:

FIFO:

4

3

2

1

5

共缺页9次

LRU:

共缺页10次

OPT:

共缺页7次

分配的页框数为4时:

共缺页8次

OPT:

共缺页6次

18.

(1)根据页式管理的工作原理,应先考虑页面大小,以便将页号和页内位移分解出来。

页面大小为4KB,即212,则得到页内位移占虚地址的低12位,页号占剩余高位。

可得三个虚地址的页号P如下(十六进制的一位数字转换成4位二进制,因此,十六进制的低三位正好为页内位移,最高位为页号):

137H:

P=0,访问快表10ns,因初始为空,访问页表100ns得到页框号,合成物理地址后访问主存100ns,共计10ns+100ns+100ns=210ns。

565H:

P=0,访问快表,因第一次访问已将该页号放入快表,因此花费10ns便可合成物理地址,访问主存100ns,共计10ns+100ns=110ns。

10ns,落空,访问页表100ns落空,进行缺页中断处理108ns,合成物理地址后访问主存100ns,共计10ns+100ns+108ns+100ns≈108ns。

15A5H:

P=1,访问快表10ns,落空,访问页表100ns落空,进行缺页中断处理108ns,合成物理地址后访问主存100ns,共计10ns+100ns+108ns+100ns≈108ns。

(2)当访问虚地址1565H时,产生缺页中断,合法驻留集为2,必须从页表中淘汰一个页面,根据题目的置换算法,应淘汰0号页面,因此1565H的对应页框号为101H。

由此可得1565H的物理地址为101565H。

25

段号

段内位移

物理地址

430

680

15

2365

500

越界

400

1750

112

26.

逻辑地址

页号

页内地址

页框号

1012

5*1024+1012=6132

2248

200

8

8*1024+200=8392

3010

962

8*1024+962=9154

4020

948

1*1024+948=4020

5018

922

6

6*1024+922=7066

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

当前位置:首页 > 职业教育 > 中职中专

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

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