OS计算题练习

一、进程同步

1、设有两个进程P、Q,P的优先级高于Q,同时进入就绪队列。各自运行的程序段如下所示:

进程P

进程Q

P1  Y=12

Q1  X=18

P2  Y=A+Y

Q2  A=X+A

P3  P(S1)

Q3  V(S1)

P4  A=Y+X

Q4  X=A+Y

P5  V(S2)

Q5  P(S2)

P6  X=Y+A

Q6  A=X-Y

 

其中S1、S2为信号量,初值为0;已知X、Y、A为共享变量,X的初值为83,Y的初值为35,A的初值为38;若调度程序执行的策略为抢占式优先权原则,试问:

(1) 执行序列?

(2) 变量X、Y、A的运行结果依次是?

解析:

(1) 执行序列:P1 P2 P3 Q1 Q2 Q3 P4 P5 P6 Q4 Q5 Q6

(2) 运行结果:X=118,Y=50,A=68

 

执行序列 

运行过程

P1

Y=12

P2

Y=A+Y=38+12=50

P3

P(S1),所以S1=-1<0,block

Q1

X=18

Q2

A=X+A=18+38=56

Q3

V(S1),所以S1=00,wake up,P>Q

P4

A=Y+X=50+18=68

P5

V(S2),S2=1,go on

P6

X=Y+A=50+68=118

Q4

X=A+Y=68+50=118同上

Q5

P(S2),S2=0,go on

Q6

A=X-Y=118-50=68

 

2、若调度程序执行的策略为非抢占式优先权原则

(1) 执行序列

(2) 变量X、Y、A的运行结果依次是

 

解析:

(1) 执行序列:P1 P2 P3 Q1 Q2 Q3 Q4 Q5 P4 P5 P6 Q6

(2) 运行结果:X=206  Y=50  A=156

执行序列 

运行过程

P1

Y=12

P2

Y=A+Y=38+12=50

P3

P(S1),所以S1=-1<0,block

Q1

X=18

Q2

A=X+A=18+38=56

Q3

V(S1),所以S1=00,wake up,go on

Q4

X=A+Y=56+50=106

Q5

P(S2),S2=-1<0,block

P4

A=Y+X=50+106=156

P5

V(S2),S2=0<=0,wake up,go on

P6

X=Y+156=50+156=206

Q6

A=X-Y=206-50=156

 

二、时间片轮转

1、设有5个进程P1、P2、P3、P4、P5,它们到达时间和要求服务时间如下表(单位为ms),请按时间片轮转调度算法完成,时间片大小为3。

Process

P1

P2

P3

P4

P5

到达相对时刻

0

3

5

9

13

执行或服务时间

7

6

10

8

2

 

(1) 写出进程的实际调度序列:

(2) 计算平均带权周转时间(结果保留两位小数):

解析:

(1) 进程的调度序列:P1 P2 P1 P3 P2 P4 P1 P3 P5 P4 P3 P4 P3

(2) 平均带权周转时间:(2.7+2+2.8+2.9+5.5)÷5 = 15.9÷5 = 3.18

 

就绪队列

P1

P2

P1

P3

P2

P4

P1

P3

P5

P4

P3

P4

P3

执行队列

P1

3

P2

6

P1

9

P3

12

P2

15

P4

18

P1

19

P3

22

P5

24

P4

27

P3

30

P4

32

P3

33

 

Process

P1

P2

P3

P4

P5

到达相对时刻

0

3

5

9

13

执行或服务时间

7

6

10

8

2

完成时间

19

15

33

32

24

周转时间

19

12

28

23

11

带权周转时间

19/7

12/6=2

28/10=2.8

23/8

11/2=5.5

 

三、银行家算法

1、假定系统中有5个进程(P0,P1,P2,P3,P4)和4种类型的资源(A,B,C,D),全部资源的数量(Vector)为(3,12,14,14);在T0时刻的资源分配情况如下表:

Process

Max

Allocation

A

B

C

D

A

B

C

D

P0

0

0

4

4

0

0

3

2

P1

2

7

5

0

1

0

0

0

P2

3

5

9

8

1

3

4

4

P3

0

8

8

4

0

3

3

2

P4

0

6

6

11

0

0

1

4

 

(1) 此时系统中的可利用资源向量ABCD为?

(2) 用银行家算法判断T0时刻系统状态是否安全?如为安全状态,请写出按照P0-P4循环的安全序列。

(3) 若进程P2提出请求 Request(0,1,1,0),系统能否将资源分配给它?

解析:

Process

Max

Allocation

Need

Available

A

B

C

D

A

B

C

D

A

B

C

D

A

B

C

D

P0

0

0

4

4

0

0

3

2

0

0

1

2

1

6

3

2

P1

2

7

5

0

1

0

0

0

1

7

5

0

 

 

 

 

P2

3

5

9

8

1

3

4

4

2

2

5

4

 

 

 

 

P3

0

8

8

4

0

3

3

2

0

5

5

2

 

 

 

 

P4

0

6

6

11

0

0

1

4

0

6

5

7

 

 

 

 

 

Need(Pi) = Max(Pi)-Allocation(Pi)

(1) 系统中可利用资源向量ABCD:Vector(3,12,14,14)-Allocation(2,6,11,12)=Available(1,6,3,2)

(2) T0时刻系统的安全性:

Process

Allocation

Need

Work+Allocation

Finish

A

B

C

D

A

B

C

D

A

B

C

D

P0

0

0

3

2

0

0

1

2

1

6

6

4

true

P3

0

3

3

2

0

5

5

2

1

9

9

6

true

P1

1

0

0

0

1

7

5

0

2

9

9

6

true

P2

1

3

4

4

2

2

5

4

3

12

13

10

true

P4

0

0

1

4

0

6

5

7

3

12

14

14

true

 

令Work=Available(1,6,3,2)

用安全性算法对T0时刻的资源分配进行分析,存在一个安全序列:P0 P3 P1 P2 P4。所以此刻系统是安全的。

 

(3) 进程P2提出请求 Request(0,1,1,0),系统按银行家算法进行检查:

① Request1(0,1,1,0)≤Need2(2,2,5,4)

② Request1(0,1,1,0)≤Work(1,6,3,2)

③ 系统假定为进程P2分配资源,并修改Allocation2、Need2、Available2的值

Process

Max

Allocation

Need

Available

A

B

C

D

A

B

C

D

A

B

C

D

A

B

C

D

P0

0

0

4

4

0

0

3

2

0

0

1

2

1

5

2

2

P1

2

7

5

0

1

0

0

0

1

7

5

0

 

 

 

 

P2

3

5

9

8

1

4

5

4

2

1

4

4

 

 

 

 

P3

0

8

8

4

0

3

3

2

0

5

5

2

 

 

 

 

P4

0

6

6

11

0

0

1

4

0

6

5

7

 

 

 

 

 

④ 再用安全性算法检查此时系统是否安全

 

Process

Allocation

Need

Work+Allocation

Finish

A

B

C

D

A

B

C

D

A

B

C

D

P0

0

0

3

2

0

0

1

2

1

5

5

4

true

P3

0

3

3

2

0

5

5

2

1

8

8

6

true

P1

1

0

0

0

1

7

5

0

2

8

8

6

true

P2

1

4

5

4

2

1

4

4

3

12

13

10

true

P4

0

0

1

4

0

6

5

7

3

12

14

14

true

 

此时存在一个安全序列:P0 P3 P1 P2 P4。所以系统可以将资源分配给进程P2。

 

四、Clock 页面置换算法

 

1、在请求分页系统中,假设系统为进程P分配4个物理块,并将页面5,7,3预先装入主存且访问位A为1,0,0;页面访问串如下,采用Clock页面置换算法。(说明:地物理地址优先,替换指针开始指向最低地址的物理块。)

6,5,2,5,6,3,0,5,6,1,0,7,6,5,2

(1) 缺页中断次数____次。

(2) 页面置换次数____次,依次被置换的页面为___(页号之间不留空格),最后主存中的页面P及对应的访问位A的值(用PA形式表示,如51)_____。

解:

 

6

5

2

5

6

3

0

5

6

1

0

7

6

5

2

5 1 *

5

5 1

5 1

5 1

5 1

5 1 *

0 1

0 1

0 1

0 1*

0 1*

7 1

7 1

7 1

7 1 *

7

6 1

6 1

6 1

6 1

6 1

6 1

6 *

5 1

5 1

5 1

5 1

5 *

5 *

5 1 *

5

3

3 *

3 *

2 1

2 1

2 1

2 1

2

2 *

6 1

6 1

6 1

6

6 1

6 1

6

*

*

*

**

**

**

3 1

3

3

3 *

1 1

1 1

1

1

1

2 1

缺页

 

 

 

 

 

 

置换

7

 

3

 

 

5

6

2

3

 

0

 

 

1

 

(1) 缺页中断次数:9

(2) 页面置换次数:8。依次被置换的页面:73562301。最后主存中的页面P及对应的访问位A的值:71 50 60 21.

 

五、磁盘调度算法

1、设系统已完成某进程对103#磁道的访问请求,正在为访问107#磁道的请求者服务,还有若干进程在等待服务,它们依次请求访问的磁道号队列(FIFO)为:

117,133,217,161,206,223,101,187,136,24,80,15,81,82,284,143,95,77,235,50,184

(1) 采用N-Step-SCAN(N=9)磁盘调度算法时,写出磁道访问序列

(2) 计算平均寻道长度ASL(保留两位小数)

解析:

(1) 磁道访问序列:107# -> 117 -> 133 -> 136 -> 161 -> 187 -> 206 -> 217 -> 223 -> 101-> 95 -> 82 -> 81 -> 80 -> 77 -> 24 -> 15 -> 143 -> 284-> 235 -> 184 -> 50

(2) 平均寻道长度:827/21=39.38

 

因为N=9,即每个子队列的长度为9;SCAN算法磁头双向移动

第一个子队列的访问序列:

107# -> 117 -> 133 -> 136 -> 161 -> 187 -> 206 -> 217 -> 223 -> 101

第二个子队列的访问序列:

-> 95 -> 82 -> 81 -> 80 -> 77 -> 24 -> 15 -> 143 -> 284

第三个子队列的访问序列:

-> 235 -> 184 -> 50

 

寻道总长度:223-107+223-15+284-15+284-50=1014-187=827

 

2、设系统已完成某进程对188#磁道的访问请求,正在为访问129#磁道的请求者服务,还有若干进程在等待服务,它们依次请求访问的磁道号序列(FIFO)为:

284,33,197,23,281,188,113,12,160,179,91,293,235,161,278,146,151,100,157,44

(1) 采用N-Step-CSCAN(N=9)磁盘调度算法时,写出磁道访问序列

(2) 计算平均寻道长度ASL(保留两位小数)

解析:

(1) 磁道访问序列:129# -> 113 -> 33 -> 23 -> 12 -> 284 -> 281 -> 197 -> 188 -> 160-> 151 -> 146 -> 100 -> 91 -> 293 -> 278 -> 235 -> 179 -> 161-> 157 -> 44

(2) 平均寻道长度:1033/20=51.65

因为N=9,即每个子队列的长度为9;CSCAN算法磁头单向移动

第一个子队列的访问序列:

129# -> 113 -> 33 -> 23 -> 12 -> 284 -> 281 -> 197 -> 188 -> 160

第二个子队列的访问序列:

-> 151 -> 146 -> 100 -> 91 -> 293 -> 278 -> 235 -> 179 -> 161

第三个子队列的访问序列:

-> 157 -> 44

 

寻道总长度:129-12+284-12+284-91+293-91+293-44=1283-250=1033

 

上一篇:windows 命令行报错:file(s) not in client view


下一篇:person4 p4 = new person4("zhangsan",9);这个代码做了什么?