操作系统原理答案张丽芬.docx

上传人:b****1 文档编号:2334226 上传时间:2023-05-03 格式:DOCX 页数:24 大小:93.86KB
下载 相关 举报
操作系统原理答案张丽芬.docx_第1页
第1页 / 共24页
操作系统原理答案张丽芬.docx_第2页
第2页 / 共24页
操作系统原理答案张丽芬.docx_第3页
第3页 / 共24页
操作系统原理答案张丽芬.docx_第4页
第4页 / 共24页
操作系统原理答案张丽芬.docx_第5页
第5页 / 共24页
操作系统原理答案张丽芬.docx_第6页
第6页 / 共24页
操作系统原理答案张丽芬.docx_第7页
第7页 / 共24页
操作系统原理答案张丽芬.docx_第8页
第8页 / 共24页
操作系统原理答案张丽芬.docx_第9页
第9页 / 共24页
操作系统原理答案张丽芬.docx_第10页
第10页 / 共24页
操作系统原理答案张丽芬.docx_第11页
第11页 / 共24页
操作系统原理答案张丽芬.docx_第12页
第12页 / 共24页
操作系统原理答案张丽芬.docx_第13页
第13页 / 共24页
操作系统原理答案张丽芬.docx_第14页
第14页 / 共24页
操作系统原理答案张丽芬.docx_第15页
第15页 / 共24页
操作系统原理答案张丽芬.docx_第16页
第16页 / 共24页
操作系统原理答案张丽芬.docx_第17页
第17页 / 共24页
操作系统原理答案张丽芬.docx_第18页
第18页 / 共24页
操作系统原理答案张丽芬.docx_第19页
第19页 / 共24页
操作系统原理答案张丽芬.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

操作系统原理答案张丽芬.docx

《操作系统原理答案张丽芬.docx》由会员分享,可在线阅读,更多相关《操作系统原理答案张丽芬.docx(24页珍藏版)》请在冰点文库上搜索。

操作系统原理答案张丽芬.docx

操作系统原理答案张丽芬

第2章习题答案

2-9.

(1)x<=3运行顺序为Px,P3,P5,P6,P9

T=(x+(x+3)+(x+3+5)+(x+3+5+6)+(x+3+5+6+9))/5=x+9.6

(2)3

T=(3+(3+x)+(3+x+5)+(3+x+5+6)+(3+x+5+6+9))/5=0.8x+10.2

(3)5

(4)6

(5)9

2-12.计算采用FCFS、SJN、RHN的平均周转时间和平均带权周转时间:

 

2.05/3.3071.65/1.8751.875/2.8125

1)FCFS作业运行顺序:

1,2,3,4

各作业的周转时间Ti和平均周转时间T:

T1=10.0-8.00=2.0T2=11.2-9.00=2.2

T3=11.7-9.5=2.2T4=12.0-10.2=1.8

T=(T1+T2+T3+T4)/4=(2.0+2.2+2.2+1.8)/4=8.2/4=2.05

各个作业的平均带权周转时间W计算如下:

W=(2/2+2.2/1.2+2.2/0.5+1.8/0.3)=(1+1.83+4.4+6)/4=3.307

2)SJN作业运行顺序:

1,3,4,2

T1=10.0-8.00=2.0T2=12-9.00=3

T3=10.5-9.5=1.0T4=10.8-10.2=0.6

T=(T1+T2+T3+T4)/4=(2.0+3.0+1.0+0.6)/4=6.6/4=1.65

各个作业的平均带权周转时间W计算如下:

W=(2/2+3/1.2+1/0.5+0.6/0.3)/4=1.875

3)HRN作业运行顺序:

1,3,2,4

先选择作业1从8.00-------10.00。

当作业1完成时,究竟选谁运行,只有通过计算,选择响应比高者运行:

作业2的响应比=((10-9.0)+1.2)/1.2=1.83

作业3的响应比=((10-9.5)+0.5)/0.5=2.0

作业4还未到,只能选作业3运行。

作业3运行到10.5结束,再计算剩余的作业2和4:

作业2的响应比=((10.5-9.0)+1.2)/1.2=2.25

作业4的响应比=((10.5-10.2)+0.3)/0.3=2选作业2运行。

作业2到11.7完成。

最后运行作业4。

运行到12.0,全部结束。

各个作业的周转时间计算如下:

t1=2t2=11.7-9=2.7t3=10.5-9.5=1t4=12-10.2=1.8

各个作业的平均周转时间计算如下:

T==(2+2.7+1+1.8)/4=1.875

各个作业的平均带权周转时间计算如下:

W=(2/2+2.7/1.2+1/0.5+1.8/0.3)/4=2.8125

2-13.已知作业A,B,C,D,E需要的运行时间分别为10,6,2,4,8分钟,优先级分别为3,5,2,1,4。

(1)轮转法(假定时间片=2分钟)

作业完成的顺序为C,D,B,E,A

开始作业轮转一周需10分钟,

作业C的周转时间:

Tc=10分钟(6分)

C完成后,剩下四个作业,轮转一周需8分钟,

作业D的周转时间:

Td=10+8×(4-2)/2=18分钟(16分)

D完成后,剩下三个作业,轮转一周需6分钟,

作业B的周转时间:

Tb=18+6×(6-2-2)/2=24分钟(22分)

B完成后,剩下两个作业,轮转一周需4分钟,

作业E的周转时间:

Te=24+4=28分钟(28分)

E完成后,只剩下作业A,

作业A的周转时间:

Ta=28+2=30分钟(30分)

平均周转时间:

T=(10+18+24+28+30)/5=22分(20.4分)

(2)优先级调度法

作业完成顺序为:

B,E,A,C,D

Tb=6分,Te=6+8=14分,Ta=14+10=24分,Tc=24+2=26分,

Td=26+4=30分。

平均周转时间:

T=(6+14+24+26+30)/5=20分

第3章习题答案

3-7.系统中有n+1个进程。

其中A1、A2、…、An分别通过缓冲区向进程B发送消息。

相互之间的制约关系为:

发送进程A1、A2、…、An要互斥地向BUF中送消息,当接收进程B还未将消息接收完之前,任何一个发送不能再送。

同样,B不能重复接收同一个消息。

为此,应设置两个信号量s1和s2。

设系统只有容纳一个消息的缓冲区,用信号量s1表示,其初值为1,它用来制约发送进程。

信号量s2用来制约接收进程,其初值为0。

 

现可用PV操作描述如下:

进程A1、…、An执行的过程为:

进程B执行的过程为:

beginbegin

准备消息P(S2)

P(s1)从缓冲区BUF取消息

将消息送入BUFV(s1)

V(s2)消耗消息

endend

若缓冲区容量为m个,这个问题就变为生产者和消费者问题。

3-8.首先这里的IN和OUT分别表示读写指针,而不是信号量。

在系统初启时,环行缓冲区为空,此时IN和OUT都初始化为0。

当并发进程通过环行缓冲区通信时,写进程不断地写,读进程不断地读,使得读写指针不断变化。

写进程的速度太快,缓冲区会满;读进程的速度太快,缓冲区会空。

已知循环缓冲区的容量为100。

当(IN+1)%100=OUT时,说明缓冲区已满。

当IN=OUT时,说明缓冲区已空。

初始化时,IN=OUT=0。

一段时间以后:

 

OUTIN

 

3-9.为描述阅览室,用一个登记表来记录使用情况。

表中共有100项。

每当有读者进入阅览室时,为了正确地登记,各读者应互斥使用。

为此设两个信号量。

mutex:

互斥信号量,用来制约各读者互斥地进行登记,其初值为1;empty同步信号量,用来制约各读者能同时进入阅览室的数量,初值为100。

下面用两个过程描述对表格应执行的动作:

登记过程:

擦除过程:

beginbegin

p(empty)p(mutex)

p(mutex)找到自己的登记项擦除

找到一个登记项登记v(mutex)

v(mutex)v(empty)

endend

为了正确地描述读者的动作,我们可以将读者看成进程。

若干读者希望进入阅览室时,调用登记过程,退出阅览室时,调用擦除过程。

可见一个程序可对应多个读者。

可设的进程数由读者数决定。

其动作如下:

begin

调用登记过程

进入阅览室阅读

准备退出

调用擦除过程

end

3-12.有4个同类资源,3个进程,每个进程的最大申请为2,系统不会发生死锁。

最不利原则:

3个进程都各自获得了一个资源,都还需申请第二个资源。

此时,因系统还有一个剩余资源,所以能满足任一个进程的剩余需求。

3-13.有6个磁带机和n个进程。

每个进程的最大申请为2,问n取什么值时,系统不会死锁?

答:

为了使系统不发生死锁,应该满足:

n=6-1=5

3-14.

证明:

假定会死锁,则根据死锁定义,N个进程之间相互等待,至少需要N个单位资源,又系统M个资源已分完,故所有进程需求总和大于或等于M+N,这与题中的所有进程需求总和小于M+N矛盾,故假设不成立。

因此,在这种情况下不会死锁。

 

3-15.

M1:

……

V(s12);

V(s13);

V(s14);

M2:

P(s12);

……

V(s26);

……

M3:

P(s13);

……

V(s36);

V(s38);

M4:

P(s14);

……

V(s47);

……

附加:

m个同类资源,n个进程,每个进程的对资源的最大需求量:

当m>n时,每个进程最多可以请求

个该类资源

当m=n时,每个进程最多可以请求1个该类资源

当m

(当m>n时,每个进程最多可以请求(m+n-1)/n个该类资源)

3-15

解答:

这是进程之间的同步问题。

M2、M3和M4必须在接收到M1的消息后才能运行。

同理,M6必须在M2和M3之后运行,M7必须在M4,M5之后运行,M8必须在M3、M7之后运行。

如何保证呢?

需设置相应的信号量来保证:

S12,S13,S14,用来制约M2、M3和M4的运行;S26,S36,用来制约M6的运行;S47,S57,用来制约M7的运行;S38,S78用来制约M8的运行。

各进程的制约关系描述如下。

S12,S13,S14,S26,S36,S47,S57,S38,S78:

semaphore;

S12:

=0;S13:

=0;S14:

=0;S26:

=0;S36:

=0;S47:

=0;S57:

=0;S38:

=0;S78:

=0;

COBEGIN

PROCESSM1:

PROCESSM2:

BEGINBEGIN

V(S12);P(S12);

V(S13);V(S26);

V(S14);END

END

PROCESSM3:

PROCESSM4:

BEGINBEGIN

P(S13);P(S14);

V(S36);V(S47);

V(S38);END

END

PROCESSM5:

PROCESSM6:

BEGINBEGIN

V(S57);P(S26);

ENDP(S36);

END

PROCESSM7:

PROCESSM8

BEGINBEGIN

P(S47);P(S38);

P(S57);P(S78);

V(S78);END

END

COEND

3-16.叉子是临界资源,在一段时间内只允许一个哲学家使用。

一个信号量表示一把叉子,五个信号量构成信号量数组,这些信号量的初值为1。

intfork[0]=fork[1]=…=fork[4]=1;

第i个哲学家所执行的程序:

do{

P(mutex);

P(fork[i]);

P(fork[(i+1)mod5]);

V(mutex);

吃饭

V(fork[i]);

V(fork[(i+1)mod5]);

}while

(1);

3-17.

(1)公平竞争(无写者时,读者仍遵循多个读者可以同时读)

rmutex互斥共享readcount;rwmutex读写互斥,写写互斥;

读写进程在z上排队。

intrmutex=1,rwmutex=1,readcount=0;

reader:

begin

p(z);//读写进程在z上排队。

p(rmutex);

if(readcount=0)thenp(rwmutex);

endif

++readcount;

v(rmutex);

v(z);//无写者时,多个读者可以同时读.

readdata;

p(rmutex);

--readcount;

if(readcount=0thenv(rwmutex);

endif;

v(rmutex);

end

writer:

begin

p(z);//读写进程在z上排队。

p(rwmutex);

writedata;

v(rwmutex);

v(z);

end

 

(2)写者优先

intreadcount,writecount;

semaphorermutex=1,wmutex=1,rwmutex=1,z=1,x=1;

reader:

//当来了一个写进程时,通过p(x)禁止其后读进程读,直到写进程写完为止。

while

(1){

p(z);//其他读进程在z上排队

p(x);//一个读进程与一个写进程在x上竞争

p(rmutex);//读进程互斥访问readcount

++readcount;

if(readcount==1)p(rwmutex);

v(rmutex);

v(x);

v(z);

readdata;//临界区

p(rmutex);

--readcount;

if(readcount==0)v(rwmutex);

v(rmutex);

}

 

Writer:

while

(1){

p(wmutex);//写进程互斥访问writecount

++writecount;

if(writecount==1)p(x);//一个写进程与一个读进程在x上竞争

v(wmutex);

p(rwmutex);//其他写进程在rwmutex上排队

writedata;//临界区

v(rwmutex);

p(wmutex);

--writecount;

if(writecount==0)v(x);//写进程都写完时,通过v(x)允许读进程读

v(wmutex);

}

 

附加题:

读者优先,规定仅允许5个进程同时读,怎样修改程序?

解:

增加一个资源信号量s,初值为5。

ints=5;

Reader:

begin

P(rmutex);

readcount=readcount+1;

if(readcount==1)thenP(rwmutex);

V(rmutex);

P(s);

read_file();

V(s);

P(rmutex);

readcount=readcount-1;

if(readcount==0)thenV(rwmutex);

V(rmutex);

end

writer:

begin

p(rwmutex);

writedata;

v(rwmutex);

end

3-18.

ints1=0,s2=n;

顾客进程:

P(s2);

V(s1);

坐椅子等理发

理发师进程:

P(s1);

给顾客理发

V(s2)

读写管程

两个计数器rc和wc分别对读进程和写进程计数,用R和W分别表示允许读和允许写的条件变量,于是管理该文件的管程可如下设计:

typeread-writer=MONITOR

varrc,wc:

integer;

R,W:

condition;

definestart-read,end-read,start-writer,end-writer;

usewait,signal,check,release;

procedurestart-read;

begin

check(IM);

ifwc>0thenwait(R,IM);

rc:

=rc+1;

signal(R,IM);

release(IM);

end;

procedureend-read;

begin

check(IM);

rc:

=rc-1;

ifrc=0thensignal(W,IM);

release(IM);

end;

procedurestart-write;

begin

check(IM);

wc:

=wc+1;

ifrc>0orwc>1thenwait(W,IM);

release(IM);

end;

procedureend-write;

begin

check(IM);

wc:

=wc-1;

ifwc>0thensignal(W,IM);

elsesignal(R,IM);

release(IM);

end;

begin

rc:

=0;wc:

=0;R:

=0;W:

=0;

end.

任何一个进程读(写)文件前,首先调用start-read(start-write),执行完读(写)操作后,调用end-read(end-write)。

即:

cobegin

processreader

begin

……

callread-writer.start-read;

……

read;

……

callread-writer.end-read;

……

end;

processwriter

begin

……

callread-writer.start-write;

……

write;

……

callrear-writer.end-write;

……

end;

coend.

上述程序能保证在各种并发执行的情况下,读写进程都能正确工作,请读

3-19.

(2)和(4)会发生死锁。

3-20.

P1/剩余

P2/剩余

P3/剩余

系统剩余

1

3/5

7

2

2/4

5

3

4(不安全)

4

5/3

3

5

2(不安全)

6

(5+3)/0

0(8)

7

4/3

4

8

(2+2)/2

2

9

(1)P1占有5个资源,剩余3个资源请求。

P2占有2个资源,剩余4个资源请求。

P3占有0个资源,剩余7个资源请求。

系统剩余3个资源。

(2)P1的请求最先满足。

进程完成序列:

P1,P2,P3。

3-21.

(1)

最大需求矩阵:

分配矩阵:

剩余请求矩阵:

Max=Allocation=Need=

 

剩余资源向量:

Available=(1502)

(2)当前系统是安全的。

判断系统是否安全,只要检查系统剩余资源向量能否对各进程的剩余请求向量找到一个进程完成序列,当按照这个序列为各进程分配资源时,各进程都能成功完成。

若能找到,则系统是安全的,否则,为不安全。

先找到p0,因为p0已满足最大资源请求,它可以完成,释放其占有的资源,使系统剩余资源向量为(1514)

之后,系统剩余资源向量(1514),可满足进程p2,使p2可以完成,释放其占有的资源,使系统剩余资源向量为(2868)。

之后无论选哪一个进程都可成功完成。

故找到的进程完成序列可为:

p0,p2,p4,p3,p1;或p0,p2,p3,p1,p4等,故系统是安全的。

(3)因系统剩余可用向量为(1502),p2的剩余请求向量为(1002),即(1502)>(1002)。

故,当p2提出(1001)请求时,能满足。

进程完成序列:

p0,p2,p4,p3,p1

 

第4章习题答案

4-14内存有如下顺序排列的空闲块:

10K,40K,20K,18K,7K,9K,12K和15K,有如下的请求序列:

12K,10K,9K。

(1)若采用首次适应法:

(内存块的拆分)

●12K的请求:

将分配40K的空闲块,40K变为剩余的(40-12)K=28K,空闲队列变为:

10K,28K,20K,18K,7K,9K,12K和15K;

●10K的请求:

将分配10K的空闲块,空闲队列变为:

28K,20K,18K,7K,9K,12K和15K;

●9K的请求:

将分配28K的空闲块,空闲队列变为:

(28-9)=18K,20K,18K,7K,9K,12K和15K;

(2)若采用最佳适应法:

●12K的请求:

将分配12K的空闲块,空闲队列变为:

10K,40K,20K,18K,7K,9K和15K;

●10K的请求:

将分配10K的空闲块,空闲队列变为:

40K,20K,18K,7K,9K,12K和15K;

●9K的请求:

将分配9K的空闲块,空闲队列变为:

40K,20K,18K,7K,12K和15K;

(3)若采用最坏适应法:

●12K的请求,将分配40K的空闲块,空闲队列变为:

10K,28K,20K,18K,7K,9K和15K;

●10K的请求:

将分配28K的空闲块,空闲队列变为:

20K,18K,7K,9K,12K和15K;

●9K的请求:

将分配20K的空闲块,空闲队列变为:

10K,18K,11K,18K,7K,12K和15K。

4-15有如下图所示的页表中的虚地址与物理地址之间的关系,即该进程分得6个内存块。

页的大小为4096。

给出对应下面虚地址的物理地址:

(1)20;

(2)5100;(3)8300;(4)47000.

0

1

2

3

4

5

6

7

2

1

6

0

4

3

x

x

解:

(1)虚地址20变为页号0和页内偏移20

由页号查页表得0页对应内存块号为2,可计算得

物理地址=块号*页的大小+页内偏移=2*4096+20=8212

(2)虚地址5100变为页号1和页内偏移1004(5100/4096)

由页号查页表得1页对应内存块号为1,可计算得

物理地址=块号*页的大小+页内偏移=1*4096+1004=5100

(3)虚地址8300变为页号2和页内偏移108

由页号查页表得2页对应内存块号为6,可计算得

物理地址=块号*页的大小+页内偏移=6*4096+108=24684

(4)虚地址47000变为页号11和页内偏移1944

11>7页号越界

4-16一个作业在执行过程中,按如下顺序依次访问各页,作业分得四个主存块,问分别采用FIFO、LRU和OPT算法时,要产生多少次缺页中断?

设进程开始运行时,主存没有页面。

页访问串顺序为:

01723271032517

(1)FIFO

01723271032517

 

采用FIFO淘汰算法,产生9次缺页中断。

(2)LRU

01723271032517

 

采用LRU算法时,产生11次缺页中断。

4-17考虑如图所示的段表,给出如下所示的逻辑地址所对应的物理地址。

段始址

段的长度

219

600

2300

14

92

100

1326

580

1954

96

(1)0,430219+430=649

(2)1,102300+10=2310

(3)2,500500>100段内地址越界

(4)3,4001326+400=1726

(5)4,112112>96段内地址越界

 

4-18一台计算机含有65536字节的存储空间,这一空间被分成许多长度为4096字节的页。

有一程序,其代码段为32768字节,数据段为16386字节,栈段为15870字节。

试问该机器的主存空间适合这个作业吗?

如果每页改成512字节,适合吗?

答:

(1)

存储空间每块为4096个字节,共可分成16块。

程序代码段占32768/4096=8块,数据段占16386/4096=5块,栈段占15870/4096=4块,合计为8+5+4=17块,故该机器的主存空间不适合这个作业。

(2)

当存储空间每块为512个字节,共可分成128块。

程序代码段占32768/512=64块,数据段占16386/512=33块,栈段占15870/512=31块,合计为64+33+31=128块,故该机器的主存空间是适合这个作业的。

 

4-19逻辑地址中,用9位表示页号,用10位表示页内地址。

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2