操作系统原理教程(第2版)

更新时间:2023-11-02 06:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

操作系统 第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

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

作业号 提交时刻 估计运行 开始运行时刻 完成时刻 时间 FCFS SJN RHN FCFS SJN RHN 1 8.00 2.0 8.0 8.0 8.0 10.0 10.0 10.0 2 9.00 1.2 10.0 10.8 10.5 11.2 12.0 11.7 3 9.50 0.5 11.2 10.0 10.0 11.7 10.5 10.5 4 10.20 0.3 11.7 10.5 11.7 12.0 10.8 12.0 2.05/3.307 1.65/1.875 1.875/2.8125 1) FCFS 作业运行顺序:1,2,3,4 各作业的周转时间Ti和平均周转时间T: T1=10.0-8.00=2.0 T2=11.2-9.00=2.2 T3=11.7-9.5=2.2 T4=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.0 T2=12-9.00=3 T3=10.5-9.5=1.0 T4=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完成时,究竟选谁运行,只

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=2 t2=11.7-9=2.7 t3=10.5-9.5=1 t4=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章 习题答案

2

3-7. 系统中有n+1个进程。其中A1、A2、…、An分别通过缓冲区向进程B发送消息。相互之间的制约关系为:发送进程A1、A2、…、An要互斥地向BUF中送消息,当接收进程B还未将消息接收完之前,任何一个发送不能再送。同样,B不能重复接收同一个消息。 为此,应设置两个信号量s1和s2。设系统只有容纳一个消息的缓冲区,用信号量s1表示,其初值为1,它用来制约发送进程。信号量s2用来制约接收进程,其初值为0。

A1

A2 BUF B

An

现可用PV操作描述如下:

进程A1、…、An执行的过程为: 进程B执行的过程为: begin begin 准备消息 P(S2)

P(s1) 从缓冲区BUF取消息 将消息送入BUF V(s1)

V(s2) 消耗消息 end end

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

3-8. 首先这里的IN和OUT分别表示读写指针,而不是信号量。在系统初启时,环行缓冲区为空,此时IN和OUT都初始化为0。当并发进程通过环行缓冲区通信时,写进程不断地写,读进程不断地读,使得读写指针不断变化。写进程的速度太快,缓冲区会满;读进程的速度太快,缓冲区会空。 已知循环缓冲区的容量为100。则

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

初始化时,IN=OUT=0。一段时间以后:

B1 B2 B3 B4

3

OUT IN

3-9. 为描述阅览室,用一个登记表来记录使用情况。表中共有100项。每当有读者进入阅览室时,为了正确地登记,各读者应互斥使用。为此设两个信号量。mutex:互斥信号量,用来制约各读者互斥地进行登记,其初值为1;empty同步信号量,用来制约各读者能同时进入阅览室的数量,初值为100。下面用两个过程描述对表格应执行的动作:

登记过程: 擦除过程: begin begin

p(empty) p(mutex)

p(mutex) 找到自己的登记项擦除 找到一个登记项登记 v(mutex) v(mutex) v(empty) end end

为了正确地描述读者的动作,我们可以将读者看成进程。若干读者希望进入阅览室时,调用登记过程,退出阅览室时,调用擦除过程。可见一个程序可对应多个读者。可设的进程数由读者数决定。其动作如下:

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矛盾,故假设不成立。因此,在这种情况下不会死

4

锁。

3-15. M1: M2: M3: M4: …… P(s12); P(s13); P(s14); V(s12); …… …… …… V(s13); V(s26); V(s36); V(s47); V(s14); …… V(s38); ……

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

当m>n时,每个进程最多可以请求?mn?个该类资源

当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

PROCESS M1: PROCESS M2: BEGIN BEGIN V(S12); P(S12); V(S13); V(S26); V(S14); END END

PROCESS M3: PROCESS M4: BEGIN BEGIN

5

本文来源:https://www.bwwdw.com/article/ikt2.html

Top