操作系统部分习题参考答案

更新时间:2023-10-21 10:16:01 阅读量: 综合文库 文档下载

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

部分习题参考答案

第二章

书上习题

23. 若缺少了signal(full),由于full初值为0,消费者无法取产品;

当缓冲池全送满时,empty降为0,若缺少了signal(empty),当缓冲池全取空时,由于empty仍然为0,生产者无法再送产品。

24.如果wait(full)和wait(mutex)互换位置,会造成当full=0时,若有消费者进程还对full执行wait操作,导致死锁。

28.设初值 empty=1, full=0

Precess1: begin Repeat

Wait(empty)

Critical section 送数据 Signal(full) Until false End

Precess2: begin Repeat Wait(full)

Critical section 取数据 Signal(empty) Until false End

附加题:

1.

设信号量S 表示共享资源,初值为1

(模型图请参考课件) 2.

因为两个进程要协作完成一个任务,为了进程间的相互唤醒(即同步执行),对私用信号量的PV操作应成对出现在两个进程中。

3.供者A和用者B的同步关系模型: 设:

S1-表示Buf是否为空(0为不空,1为空); S2-表示Buf是否为满(0为不满,1为满)。

且初值为:S1=1,S2=0。

(注: 与课件中的假设条件相反

课件中:设S1- 表示Buf是否为满(0为不满,1为满); S2- 表示Buf是否为空(0为不空,1为空)。 S1初值为0,S2的初值为1。 ) (这里,供者和用者要交换两个消息:缓冲区空和满的状态。当空时,供者才能送数据;当满时用者才能取数据。用者不能超前供者,供者不能往满的区中再送,避免覆盖掉前面的数据)

供者A 用者B

P( S1) P(S2)

送信息到缓冲区,直到满。 取数据,直到空 V(S2) P(S1)

4. 答:不能,因为他先对缓冲池执行了互斥操作。(缓冲池的初值为1,执行P操作后为0)。

5. 答:不能,应该先对私用信号量执行P操作,再对公用信号量执行P操作,否则可能会引起死锁。V操作的顺序没关系。

如:若先对mutex执行P操作,再对empty执行P操作,当执行到empty=0时,再对mutex执行P操作,可以进入缓冲池,但由于这时empty已经为0,没有空的缓冲区可用,出现死锁,出不去又进不来。

6. 答: 可以。因为两个进程是并发进程,不满就可以送,不空就可以取。但不论谁执行,都要先对缓冲池执行互斥操作。

7. 答:通过私用信号量 empty,和full。

已知初值empty=n, full=0 。 在生产者进程中对empty执行P操作,对full执行V操作,当empty=0,full=n时,说明缓冲池满,不能再送;当消费者进程中的full=0,而empty=n时,说明缓冲池空,不能再取。

第三章

1. 对下面的5个非周期性实时任务,按最早开始截止时间优先调度算法,以图示说明,应如何进行CPU调度? (分“抢占式”和“非抢占式”)

进程 到达时间 执行时间 开始截止时间 A 10 20 110 B 20 20 20 C 40 20 50 D 50 20 90 E 60 20 70 答:

0 10 20 30 40 50 60 70 80 90 100 110 120

(1)非抢占方式

A B C D E 到达时间

A C E 任务执行

D 开始截止时间 B(错过) C E D A

(2)抢占方式

A B C D E 到达时间

C E A B 任务执行

D A 开始截止时间

B C E D A

可见,在采用非抢占调度方式时,系统没能保证B任务对截止时间的要求。

2. 若有3个周期性任务,

任务A要求每20ms执行一次,执行时间为10ms; 任务B要求每50ms执行一次,执行时间为10ms; 任务C要求每50ms执行一次,执行时间为15ms;

以图示说明,应如何按最低松弛度优先算法对它们进行CPU调度?

答:

0 10 20 30 40 50 60 70 80 90 100

B1,C1 B2,C2 B3,C3

到达时间 A1 A2 A3 A4 A5 A6

必须完成时间 A1 A2 A3 A4 A5 B1,C1 B2,C2

0 10 25 35 45 55 70 80 90 100

松弛度

A1=10 A2=5 A3=5 A4=0 A5=0 A6=10

B1=40 B1=15 B2=20 B3=40 C1=35 C3=35

B1=30 B1=5 B2=35 B2=10 C1=25 C2=30 A5=10

… 任务执行: A1 C1 A2 B1 A3 C2 A4 B2 A5

0 10 25 35 45 55 70 80 90 100

第四章

1. 解答:

(1)地址转换:

① 逻辑地址1023:

页号P=INT [1023/1024]=0, 页内地址为1023,查页表找到对应的物理块号为2,故物理地址为 2×1K+1023=3071 ② 逻辑地址2500:

页号P=INT [2500/1024]=2, 页内地址d = 452,查页表找到对应的物理块号为6,故物理地址为 6×1K+452=6596 ③ 逻辑地址3500:

页号P=INT [3500/1024]=3, 页内地址为428,查页表找到对应的物理块号为7,故物理地址为 7×1K+428=7596 ④ 逻辑地址4500:

页号P=INT [4500/1024]=4, 页内地址为404,因页号不小于页表长度,

故产生越界中断。 (2)变换过程图:。。。。。。。。。。。(略) 2.

地址变换过程: (参考教科书) 8×1024+100 = 8292 8×1024+500 = 8692

3. 在请求分页系统中,为什么说一条指令执行期间可能产生多次缺页中断?

在请求调页系统中,一条指令可能跨了两个页,而其中要访问的操作数可能与指令不在同一个页上,且操作数本身也可能跨两个页。当要执行这类指令,而相应的页都不在内存时,就将产生多次缺页中断。

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

Top