浙大操作系统原理离线作业答案.docx

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

浙大操作系统原理离线作业答案.docx

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

浙大操作系统原理离线作业答案.docx

浙大操作系统原理离线作业答案

浙江大学远程教育学院

《操作系统原理》课程作业答案

1.进程P0和P1的共享变量定义及其初值为

booleanflag[2];

intturn=0;

flag[0]=FALSE;flag[1]=FALSE;

若进程P0和P1访问临界资源的类C代码实现如下:

voidP0()//P0进程

{while(TURE){

flag[0]=TRUE;turn=1;

while(flag[1]&&turn==1);

临界区;

flag[0]=FALSE;

}

}

 

voidP1()//P1进程

{while(TURE){

flag[1]=TRUE;turn=0;

while(flag[0]&&turn==0);

临界区;

flag[1]=FALSE;

}

}

则并发执行进程P0和P1时产生的情况是:

A.不能保证进程互斥进入临界区、会出现“饥饿”现象

B.不能保证进程互斥进入临界区、不会出现“饥饿”现象

C.能保证进程互斥进入临界区、会出现“饥饿”现象

D.能保证进程互斥进入临界区、不会出现“饥饿”现象

【答案】D

2.有两个进程P1和P2描述如下:

shareddata:

intcounter=6;

P1:

Computing;

counter=counter+1;

P2:

Printing;

counter=counter-2;

两个进程并发执行,运行完成后,counter的值不可能为。

A.4B.5C.6D.7

【答案】C

3.某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为210字节,页表项大小为2字节,逻辑地址结构为:

页目录号页号页内偏移量

逻辑地址空间大小为216页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是

A.64B.128C.256D.512

【答案】B

4.在动态分区系统中,有如下空闲块:

空闲块块大小(KB)块的基址

18060

275150

355250

490350

此时,某进程P请求50KB内存,系统从第1个空闲块开始查找,结果把第4个空闲块分配给了P进程,请问是用哪一种分区分配算法实现这一方案?

A.首次适应B.最佳适应C.最差适应D.下次适应

【答案】C

5.在一页式存储管理系统中,页表内容如下所示。

页号帧号

02

11

28

若页大小为1K,逻辑地址的页号为2,页内地址为451,转换成的物理地址为

A.8643B.8192C.2048D.2499

【答案】A

6.采用段式存储管理的系统中,若地址用32位表示,其中20位表示段号,则允许每段的最大长度是

A.224B.212C.210D.232

【答案】B

7.在一段式存储管理系统中,某段表的内容如下:

段号段首址段长

0100K35K

1560K20K

2260K15K

3670K32K

若逻辑地址为(2,158),则它对应的物理地址为_____。

A.100K+158B.260K+158C.560K+158D.670K+158

【答案】B

8.一个分段存储管理系统中,地址长度为32位,其中段长占8位,则最大段长是

A.28字节B.216字节C.224字节D.232字节

【答案】C

9.有一请求分页式存储管理系统,页面大小为每页100字节,有一个50×50的整型数组按行为主序连续存放,每个整数占两个字节,将数组初始化为0的程序描述如下:

intA[50][50];

for(inti=0;i<50;i++)

for(intj=0;j<50;j++)

A[i,j]=0;

若在程执行时内存只有一个存储块用来存放数组信息,试问该程序执行时产生次缺页中断。

A.1B.50C.100D.2500

【答案】B

10.一台计算机有4个页框,装入时间、上次引用时间、和每个页的访问位R和修改位M,如下所示:

页装入时间上次引用时间RM

012627900

123026010

212027211

316028011

采用FIFO算法将淘汰页;

A.0B.1C.2D.3

【答案】C

11.一台计算机有4个页框,装入时间、上次引用时间、和每个页的访问位R和修改位M,如下所示:

页装入时间上次引用时间RM

012627900

123026010

212027211

316028011

采用NRU算法将淘汰页;

A.0B.1C.2D.3

【答案】A

12.一台计算机有4个页框,装入时间、上次引用时间、和每个页的访问位R和修改位M,如下所示:

页装入时间上次引用时间RM

012627900

123026010

212027211

316028011

采用LRU算法将淘汰页;

A.0B.1C.2D.3

【答案】B

13.一台计算机有4个页框,装入时间、上次引用时间、和每个页的访问位R和修改位M,如下所示:

页装入时间上次引用时间RM

012627900

123026010

212027211

316028011

采用第二次机会算法将淘汰______页;

A.0B.1C.2D.3

【答案】A

二、综合题

1.4对于实时系统来说,操作系统需要以一种公平的方式支持虚拟存储器和分时系统。

对于手持系统,操作系统需要提供虚拟存储器,但是不需要提供分时系统。

批处理程序在两种环境中都是非必需的。

1.17

a.批处理:

具有相似需求的作业被成批的集合起来,并把它们作为一个整体通过一个操作员或自动作业程序装置运行通过计算机。

通过缓冲区,线下操作,后台和多道程序,运用尝试保持CPU和I/O一直繁忙,从而使得性能被提高。

批处理系统对于运行那些需要较少互动的大型作业十分适用。

它们可以被更迟地提交或获得。

b.交互式:

这种系统由许多短期交易构成,并且下一个交易的结果是无法预知的。

从用户提交到等待结果的响应时间应该是比较短的,通常为1秒左右。

c.分时:

这种系统使用CPU调度和多道程序来经济的提供一个系统的人机通信功能。

CPU从一个用户快速切换到另一个用户。

以每个程序从终端机中读取它的下一个控制卡,并且把输出的信息正确快速的输出到显示器上来替代用soopledcardimages定义的作业。

d.实时:

经常用于专门的用途。

这个系统从感应器上读取数据,而且必须在严格的时间内做出响应以保证正确的性能。

e.网络:

提供给操作系统一个特征,使得其进入网络,比如;文件共享。

f.并行式:

每一个处理器都运行同一个操作系统的拷贝。

这些拷贝通过系统总线进行通信。

g.分布式:

这种系统在几个物理处理器中分布式计算,处理器不共享内存或时钟。

每个处理器都有它各自的本地存储器。

它们通过各种通信线路在进行通信,比如:

一条高速的总线或一个本地的网络。

h.集群式:

集群系统是由多个计算机耦合成单一系统并分布于整个集群来完成计算任务。

i.手持式:

一种可以完成像记事本,email和网页浏览等简单任务的小型计算机系统。

手持系统与传统的台式机的区别是更小的内存和屏幕以及更慢的处理能力。

2.3:

1.通过寄存器来传递参数

2.寄存器传递参数块的首地址

3.参数通过程序存放或压进堆栈中,并通过操作系统弹出堆栈。

2.12Answer:

优点主要包括以下几点:

a)增加一个新的服务不需要修改内核

b)在用户模式中比在内核模式中更安全、更易操作

c)一个简单的内核设计和功能一般导致一个更可靠的操作系统

用户程序和系统服务通过使用进程件的通信机制在微内核中相互作用,例如发送消息。

这些消息由操作系统运送。

微内核最主要的缺点是与进程间通信的过度联系和为了保证用户程序和系统服务相互作用而频繁使用操作系统的消息传递功能。

3.2:

总的来说,操作系统必须保存正在运行的进程的状态,恢复进程的状态。

保存进程的状态主要包括CPU寄存器的值以及内存分配,上下文切换还必须执行一些确切体系结构的操作,包括刷新数据和指令缓存。

(书中答案)进程关联是由进程的PCB来表示的,它包括CPU寄存器的值和内存管理信息等。

当发生上下文切换时,内核会将旧进程的关联状态保存在其PCB中,然后装入经调度要执行的新进程的已保存的关联状态。

3.4:

Parent:

value=8。

4.4答:

一个线程程序的线程共享堆内存和全局变量,但每个线程都有属于自己的一组寄存值和栈内存。

4.7答:

c行会输出10,p行会输出0.

5.4答:

a.甘特图

FCFS

P1

P2

P3

P4

P5

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

SJF

P2

P4

P3

P5

P1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

Non-preemptivePriority

P2

P5

P1

P3

P4

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

RR(quantum=1)

P1

P2

P3

P4

P5

P1

P3

P5

P1

P5

P1

P5

P1

P5

P1

P1

P1

P1

P1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

b.TurnaroundTime

Process

FCFS

SJF

NPP

RR(quantum=1)

P1

10

19

16

19

P2

11

1

1

2

P3

13

4

18

7

P4

14

2

19

4

P5

19

9

6

14

Average

13.4

7.2

12

9.2

c.WaitingTime

Process

FCFS

SJF

NPP

RR(quantum=1)

P1

0

9

6

9

P2

10

0

0

1

P3

11

2

16

5

P4

13

1

18

3

P5

14

4

1

9

Average

9.6

3.2

8.2

5.4

d.SJF

5.5答:

最短作业优先调度和优先级调度算法会引起饥饿

5.7答:

a.时间片是1毫秒:

不论是哪个进程被调度,这个调度都会为每一次的上下文切换花费一个0.1毫秒的上下文切换。

CPU的利用率是1/1.1*100=92%。

b.时间片是10毫秒:

这I/O限制任务会在使用完1毫秒时间片后进行一次上下文切换。

这个时间片要求在所有的进程间都走一遍,因此,10*1.1+10.1(因为每个I/O限定任务执行为1毫秒,然后承担上下文切换的任务,而CPU限制任务的执行10毫秒在承担一个上下文切换之前)。

因此,CPU的利用率是20、21.1*100=94%。

6.01【参考答案】

信号量mutex的作用是保证各生产者进程和消费者进程对缓冲池的互斥访问。

信号量empty和full均是资源信号量,它们分别对应于缓冲池中的空闲缓冲区和缓冲池中的产品,生产者需要通过wait(empty)来申请使用空闲缓冲区,而消费者需要通过wait(full)才能取得缓冲中的产品,可见,这两个信号量起着同步生产者和消费者的作用,它们保证生产者不会将产品存放到满缓冲区中,而消费者不会从空缓冲区中取产品。

在生产者—消费者问题中,如果将两个wait操作,即wait(full)和wait(mutex)互换位置,或者wait(empty)和wait(mutex)互换位置,都可能引起死锁。

考虑系统中缓冲区全满时,若一生产者进程先执行了wait(mutex)操作并获得成功,当再执行wait(empty)操作时,它将因失败而进入阻塞状态,它期待消费者执行signal(empty)来唤醒自己,在此之前,它不可能执行signal(mutex)操作,从而使企图通过wait(mutex)进入自己的临界区的其他生产者和所有的消费者进程全部进入阻塞状态,系统进入死锁状态。

类似地,消费者进程若先执行wait(mutex),后执行wait(full)同样可能造成死锁。

signal(full)和signal(mutex)互换位置,或者signal(empty)和signal(mutex)互换位置,则不会引起死锁,其影响只是使某个临界资源的释放略为推迟一些。

6.02【参考答案】

如图示并发进程之间的前趋关系,为了使上述进程同步,可设置8个信号量a、b、c、d、e、f、g、h,它们的初值均为0,而相应的进程可描述为(其中“…”表示进程原来的代码):

main()

cobegin{

P1(){…;signal(a);signal(b);}

P2(){wait(a);…;signal(c);signal(d);}

P3(){wait(b);…;signal(e);signal(f);}

P4(){wait(c);wait(e);…;signal(g);}

P5(){wait(d);wait(f);…;signal(h);}

P6(){wait(g);wait(h);…;}

}coend

6.03【参考答案】

(1)生产者进程的临界区是第4行和第5行;消费者进程的临界区是第3行和第4行。

(2)信号量full、empty和mutex的初值分别是:

empty=8,full=0,mutex=1。

(3)系统可能会产生死锁。

例如,生产者进程得到信号量mutex,但是没有空缓冲区即empty≤0时,此时生产者进程阻塞;而消费者进程又无法得到信号量mutex,此时消费者进程也阻塞,系统产生了死锁。

(4)增加一个信号量mutex1,初值为1,其算法如下:

ProducerProcessConsumerProcess

intitemp;intitemc;

while

(1){while

(1){

1itemp=rand();//Generateanumber1wait(full);

2wait(empty);2wait(mutex);

3wait(mutex1);3itemc=buf[nextc];

4buf[nextp]=itemp;4nextc=(nextc+1)%8;

5nextp=(nextp+1)%8;5signal(mutex);

6signal(mutex1);6signal(empty);

7signal(full);7cout<

}}

 

6.04【参考答案】

设置三个信号:

s1表示数据a是否读入,s2表示数据b是否读入,s3表示数据y=a*b计算是否完成。

P1和P2两个进程的同步算法如下:

semaphores1=0,s2=0,s3=0;

main()

cobegin{

P1:

P2:

{{

input(a);wait(s1);

signal(s1);input(b);

wait(s2);signal(s2);

x=a+b;y=a*b;

wait(s3);signal(s3);

Print(x,y,z);

}}

}coend

7.1【参考答案】

(1)在此处,产生死锁的四个必要条件如下:

1)互斥条件。

每个车道的每段道路只能被一辆车占用。

2)请求与保持条件。

每个车队占用了一个车道,并请求前方的车道,即使需等待前方车道上的车队驶离,它仍将持有已占用的车道。

3)不抢占(剥夺)条件。

在前方的车道被其它车队占用时,因为是单车道,而其它车队又不会后退,所以无法从其它车队处抢占车道。

4)环路等待条件。

向东行驶的车队等待向北行驶的车队让出车道,向北行驶的车队等待向西行驶的车队让出车道,向西行驶的车队等待向南行驶的车队让出车道,而向南行驶的车队则等待向东行驶的车队让出车道。

故存在一循环等待链。

(2)增加一个约束条件:

只有前方两个路口都空闲时,才能占用第一个路口。

或者,可在十字路口设置一交通信号灯,并使南北方向的两个车队和东西方向的两个车队互斥地使用十字路口,便可避免交通死锁。

7.11【参考答案】

(1)尚需资源数矩阵如下:

Need=Max–Allocation

Need

A

B

C

D

P0

0

0

0

0

P1

0

7

5

0

P2

1

0

0

2

P3

0

0

2

0

P4

0

6

4

2

(2)系统是安全的,因为可以找到一个安全序列:

(3)如P1申请(0,4,2,0),则:

Request1(0,4,2,0)<=need1(0,7,5,0)

Request1(0,4,2,0)<=available(1,5,2,0)

新的状态为

AllocationMaxNeedAvailable

P00012001200001100

P1142017500330

P2135423561002

P3063206520020

P4001406560642

该状态是安全的,存在安全序列如,所以可以分配资源给P1。

8.3【参考答案】根据First-fit、Best-fit、Worst-fit算法,计算结果如下:

First-fit:

212K进程装到500K分区

417K进程装到600K分区

112K进程装到200K分区

426K进程暂时等待

Best-fit:

212K进程装到300K分区

417K进程装到500K分区

112K进程装到200K分区

426K进程装到600K分区

Worst-fit:

212K进程装到600K分区

417K进程装到500K分区

112K进程装到300K分区

426K进程暂时等待

仅就本题为例,Best-fit算法是最好的。

8.5Answer:

连续内存分配会产生外部碎片,因为地址空间是被连续分配的,当旧进程结束,新进程初始化的时候,洞会扩大。

连续内存分配也不允许进程共享代码,因为一个进程的虚拟内存段是不被允许闯入不连续的段的。

纯段式分配也会产生外部碎片,因为在物理内存中,一个进程的段是被连续放置的,以及当死进程的段被新进程的段所替代时,碎片也将会产生。

然而,段式分配可以使进程共享代码;比如,两个不同的进程可以共享一个代码段,但是有不同的数据段。

纯页式分配不会产生外部碎片,但会产生内部碎片。

进程可以在页granularity中被分配,以及如果一页没有被完全利用,它就会产生内部碎片并且会产生一个相当的空间浪费。

在页granularity,页式分配也允许进程共享代码。

8.9【参考答案】

(1)400纳秒,其中,200纳秒访问页表,200纳秒访问内存中的数据。

(2)有效访问时间=0.75*(200纳秒访问内存数据+0纳秒访问关联寄存器)+0.25*(200纳秒访问内存数据+200纳秒访问页表)=250纳秒

8.12【参考答案】

(1)219+430=649

(2)2300+10=2310

(3)第2段的有效长度是100。

段内偏移量500超过了这个上限,所以这是个非法地址

(4)1327+400=1727

(3)第4段的有效长度是96。

段内偏移量112超过了这个上限,所以这是个非法地址

9.5【参考答案】设缺页率为P。

题目并没有明确,当缺页中断时,内存中是否有空闲页帧,所以假设内存总是忙的。

访问内存中页面:

(1-P)*100ns

页面不在内存,但不需要保存待换出页面:

P*(1–70%)*(8ms+100ns)

页面不在内存,但需要保存待换出页面:

P*70%*(20ms+100ns)

所以,有效访问时间=(1-P)*100ns+P*(1–70%)*(8ms+100ns)+P*70%*(20ms+100ns)=200ns

P=0.000006

9.10【参考答案】

首先判断系统正在频繁地进行换页操作。

所以,减少并发进程数会显著地减少换页操作,提高CPU的利用率。

其它措施也有些效果,例如,安装更多内存。

(1)安装一个更快的CPU。

没用。

(2)安装一个更大容量的磁盘用作页面交换。

没用,交换空间本来就足够了。

(3)增加并发进程数。

没用,情况将会更糟。

(4)减少并发进程数。

效果明显。

(5)安装更多内存。

可能会有效果,因为空闲页帧增加了,换页的几率将相对减少。

(6)安装更快的硬盘,或安装更多的硬盘和控制器。

效果不明显。

(7)增加一个预取页面算法。

效果不确定。

(8)增加页面长度。

如果顺序访问居多,则会减少缺页次数。

如果随机访问居多,因为单个页面占用更大的物理空间,页帧总数减少,所以缺页次数会增加;因为页面长度增加,页面的传输时间会增加。

综上,此方案的效果不确定。

9.14【参考答案】

有效访问时间=80%*1微秒+(1-80%)((1-10%)*1微秒*2+10%*(1微秒*2+20毫秒))=0.8+0.2*(0.9*2+0.1*20002)

=0.8+0.2*2002

=401.2微秒

9.01【参考答案】

(1)采用FIFO页面置换算法,其缺页情况如表所示:

FIFO页面置换算法的缺页情况

页面走向

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

当前位置:首页 > 临时分类 > 批量上传

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

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