江苏大学 操作系统 期末/考研复试大题复习

写在前面的话

基于:詹永照, 薛安荣. 操作系统设计原理[M]. 第二版. 科学出版社, 2021.
部分内容可能与王道考研等参考资料有所区别(如内存管理的clock算法与标志位、磁盘调度的scan算法),请注意区分与取舍。

同步与互斥

假定一个阅览室最多可以容纳100人阅读,读者进入和离开阅览室时,都必须在阅览室门口的一个登记表上注册或注销。假定每次只允许一个人注册或注销,设阅览室内有100个座位。
(1)试问:应编制几个程序和设置几个进程?程序和进程的对应关系如何?
(2)试用PV操作编写读者进程同步算法

答案:
(1)应编制一个读者程序,有N个读者应设置N个读者进程。程序和进程对应关系1:N,读者程序为N个读者进程共享。
(2)

semaphore full,mutex;
PID seat[100];
int i;
full.value=100;
mutex.value=1;
for(int i=0;i<100;i++)
	seat[i]=-1;

process reader(PID procid){
	int i;
	P(&full);
	P(&mutex);
	i=0;
	while(seat[i]!=-1)
		i++;
	seat[i]=procid;
	V(&mutex);
	read at seat i;
	P(&mutex);
	seat[i]=-1;
	V(&mutex);
	V(&full);
}

死锁

银行家算法中,若出现以下资源分配情况,试问:
(1)系统是否安全?如果安全,请给出一个安全执行序列,如果不安全,说明理由。
(2)如果进程依次有如下资源请求,系统将怎样进行资源分配?说明理由

P

1

P_1

P1(1,0,2);

P

4

P_4

P4:(3,3,0);

P

0

P_0

P0:(0,2,0)

进程 最大资源需求量 已分配资源量 剩余资源量

R

1

R_1

R1

R

2

R_2

R2

R

3

R_3

R3

R

1

R_1

R1

R

2

R_2

R2

R

3

R_3

R3

R

1

R_1

R1

R

2

R_2

R2

R

3

R_3

R3

P

0

P_0

P0

7 5 3 0 1 0 3 3 2

P

1

P_1

P1

3 2 2 2 0 0

P

2

P_2

P2

9 0 2 3 0 2

P

3

P_3

P3

2 2 2 2 1 1

P

4

P_4

P4

4 3 3 0 0 2

答案:
安全的。(1)先计算各个进程还需要的资源:

P

0

P_0

P0:(7 4 3),

P

1

P_1

P1:(1 2 2),

P

2

P_2

P2: (6 0 0),

P

3

P_3

P3:(0 1 1),

P

4

P_4

P4: (4 3 1);
系统剩余资源量为(3 3 2),满足

P

1

P_1

P1

P

3

P_3

P3 进程对资源的最大需求,可将资源分配给

P

1

P_1

P1

P

3

P_3

P3进程,例如先分配给

P

1

P_1

P1

P

1

P_1

P1

P

3

P_3

P3进程。执行完毕后归还所占资源,此时系统有可用资源数为(7 4 3),此时系统可用资源数可满足任何一个进程的最大需求。故系统是安全的。
可执行的序列为

P

1

P

3

P

0

P

2

P

4

P_1P_3P_0P_2P_4

P1P3P0P2P4

P

3

P

1

P

0

P

2

P

4

P_3P_1P_0P_2P_4

P3P1P0P2P4等。
(2) 系统按

P

1

P_1

P1

P

3

P_3

P3

P

0

P_0

P0

P

2

P_2

P2

P

4

P_4

P4顺序执行,每个进程均能执行完。故

P

1

P_1

P1的需求可以满足。

P

4

P_4

P4请求(3,3,0):剩余资源:(2,3,0)。系统剩余资源不能满足

P

4

P_4

P4的要求,不能分配。

P

0

P_0

P0请求(0,2,0):剩余资源:(2,3,0),假设分配后,还剩余系统资源:(2,1,0)。

P

0

P_0

P0~

P

4

P_4

P4尚需的资源数均不能得到满足(或者说,虽然满足进程

P

0

P_0

P0的当前请求但不满足进程对资源的最大需求),故不能对

P

0

P_0

P0分配。

内存管理

设某计算机的逻辑地址空间和物理地址空间均为64KB,按字节编址。若某进程最多需要8页数据存储空间,页的大小为4KB。操作系统采用固定分配局部置换策略为此进程分配4个页框,如下表在10:23时已经有4页进入内存,下表的装入时间和访问时间为一天内24小时时间。访问位的0表示未被访问,1表示已被访问。修改位的0表示未被修改,1表示已被修改。表中的访问时间均为对应的页最近一次被访问的时间。

页号 页框号 装入时刻 访问时刻 访问位 修改位
0 7 10:13 10:30 1 1
1 5 10:23 10:26 1 1
2 2 10:20 10:40 1 1
3 9 10:16 10:50 1 0

当进程执行到10:55时,要访问逻辑地址为6CDFH的数据,请回答下列问题:
(1)该逻辑地址对应的页号是多少?
(2)若采用先进先出(FIFO)置换算法,该逻辑地址对应的物理地址是多少?
(3)若采用最近最少用(LRU)置换算法,该逻辑地址对应的物理地址是多少?
(4)若采用时钟(CLOCK)置换算法,该逻辑地址对应的物理地址是多少?设搜索下一页的指针沿顺时针方向移动,且当前指向2号页框。示意图如下。

在这里插入图片描述
答案:
根据页式管理的工作原理,应先考虑页面大小,以便将页号和页内位移分解出来。页面大小为4KB,即

2

12

2^{12}

212,则得到页内位移占虚拟地址的低12位,页号占剩余高位。由于每位十六进制数占4bit,故十六进制数的低3位数为页内偏移量。
(1)页大小为4K,所以页内偏移地址为12位,于是前4位是页号,所以6CDFH的逻辑页号为:6
(2)FIFO,则被置换的页面所在页框为7,所以对应的物理地址为7CDFH
(3)LRU,则被置换的页面所在页框为5,所以对应的物理地址为5CDFH
(4)CLOCK,则被置换的页面所在页框为9,所以对应的物理地址为9CDFH

文件

一个*nix文件系统使用4KB磁盘块和4字节磁盘地址。如果每个i结点中有10个直接表项以及一个一次间接块、一个二次间接块和一个三次间接块,那么
(1)文件最大为多大?
(2)如果有且只有i结点已经在内存中,访问第12345字节需要读多少次磁盘?
(3)如果有且只有i结点已经在内存中,访问第1234567890字节需要读多少次磁盘?

答案:
(1)

4

K

/

4

=

1

K

4K/4=1K

4K/4=1K

10

4

K

+

1

K

4

K

+

1

K

1

K

4

K

+

1

K

1

K

1

K

4

K

=

4

T

4

G

4

M

40

K

B

10*4K+1K*4K+1K*1K*4K+1K*1K*1K*4K=4T4G4M40KB

104K+1K4K+1K1K4K+1K1K1K4K=4T4G4M40KB
(2)因为12345<40K,故该地址落入直接索引中,由于i-node已在内存,因此只需要1次访问磁盘块,即一次访问含有该位置数据的磁盘块。
(3)因为

4

M

40

K

<

1234567890

<

4

G

4

M

40

K

4M40K<1234567890<4G4M40K

4M40K<1234567890<4G4M40K,故该地址落入二级间接索引中,由于i-node已在内存,因此只需访问3次磁盘块。

磁盘

设某磁盘旋转速度为每分钟6000转。每个磁道有100个扇区,相邻磁道间的平均移动时间为1ms。若在某时刻,磁头位于100号磁道处,并沿着磁道号增大的方向服务,磁道号请求队列为50、200、80、110、180,对请求队列中的每个磁道需读取1个随机分布的扇区,则:
(1)在SSTF(最短寻道)调度情况下,读完这5个扇区总共需要多少时间,要求给出计算过程;
(2)在SCAN(扫描)调度情况下,读完这5个扇区总共需要多少时间,要求给出计算过程;
(3)就以上二种算法进行对比分析,并为用户选择提供建议说明。

答案:
由于转速为

6000

r

/

m

6000r/m

6000r/m,则平均旋转延迟为

60

1000

/

(

6000

2

)

=

5

m

s

60*1000/(6000*2)=5ms

601000/(60002)=5ms,总的旋转延迟时间为

5

5

m

s

=

25

m

s

5*5ms=25ms

55ms=25ms。由于旋转一周的时间为

10

m

s

10ms

10ms,每个磁道有100个扇区,读取一个磁道上一个扇区的平均读取时间为

10

m

s

/

100

=

0.1

m

s

10ms/100=0.1ms

10ms/100=0.1ms,总的读取扇区的时间=

0.1

m

s

5

=

0.5

m

s

0.1ms*5=0.5ms

0.1ms5=0.5ms
1)SSTF:执行顺序是100->110->80->50->180->200。则移到磁道长度为10+60+150=220。故读取上述磁道上所有扇区所花的总时间=220ms+25ms+0.5ms=245.5ms
2)采用SCAN调度算法访问磁道的顺序为100->110->180->200->80->50,则移到磁道长度为

100

+

150

=

250

100+150=250

100+150=250。故读取上述磁道上所有扇区所花的总时间=

250

m

s

+

25

m

s

+

0.5

m

s

=

275.5

m

s

250ms+25ms+0.5ms=275.5ms

250ms+25ms+0.5ms=275.5ms
两者算法都有寻道时间短、寻道优化的优势,而且两种寻道时间相差

30

m

s

30ms

30ms,但相比较而言,SSTF可能会频繁切换服务方向,而SCAN不会。由于磁臂调度是机械运动,存在惯性,频繁切换服务方向会降低机械装置的使用寿命,故实际应用中SCAN优于SSTF。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>