3,5,6,9,x
12、答:
(1)FCFS调度算法
执行次序执行时间等待时间周转时间带权周转时间
A100101
B610162.66
C216189
D418225.5
E822303.75
作业平均周转时间T=(10+16+18+22+30)/5=19.2
作业平均带权周转时间W=(1+2.66+9+5.5+3.75)/5=4.38
(2)优先级调度算法
执行次序执行时间等待时间周转时间带权周转时间
B6061
E86141.75
A1014242.4
C2242613
D426307.5
作业平均周转时间T=(6+14+24+26+30)/5=20
作业平均带权周转时间W=(1+1.75+2.4+13+7.5)/5=5.13
(3)时间片轮转法(每个作业获得相同的2分钟长的时间片)
按次序ABCDEABDEABEAEA轮转执行。
作业执行时间等待时间周转时间带权周转时间
A1020303
B616223.66
C2463
D412164
E820283.5
作业平均周转时间T=(30+22+6+16+28)/5=20.4
作业平均带权周转时间W=(3+3.66+3+4+3.5)/5=3.43
16、
答:
FCFSSJFHRRF
作业开始完成周转开始完成周转开始完成周转
时间时间时间时间时间时间时间时间时间
18.0010:
002.008:
0010.001208:
0010.00120
210.0010:
502.0010:
3011.2015010:
1011.00130
310.5011:
002.0010:
0010:
107010:
0010:
1070
411.0011:
201.510:
1010:
304011:
0011.2090
平均周T=112.5分T=95分T=102.5分
转时间=
带权平均W=4.975W=3.25W=3.775
周转时间=
20、答:
执行次序提交时间执行时间开始时间完成时间周转时间
J18:
00608:
009:
0060
J58:
3559:
009:
0530
J68:
40109:
059:
1535
J38:
25209:
159:
3570
J48:
30259:
3510:
0090
J28:
203510:
0010:
35135
作业平均周转时间T=(60+30+35+70+90+135)/6=70
注意,J1被调度运行后,直到它执行结束,才会引出作业调度程序工作。
所以,J2至J6虽在J1执行期间进入,但未被调度,均在等待。
当J1撤离后,作业调度程序工作,按SJF算法,显然有执行次序:
J5、J6、J3、J4、和J2。
21
作业名
到达时刻
估计运行时间/min
优先数
JOB1
10:
00
40
5
JOB2
10:
20
30
3
JOB3
10:
30
60
4
JOB4
10:
50
20
6
JOB5
11:
00
20
4
JOB6
11:
10
10
4
答:
如下表所示
作业名
进入内存时刻
开始运行时刻
结束运行时刻
周转时间
带权周转时间
JOB1
10:
00
10:
00
12:
40
160
4
JOB2
10:
20
10:
20
10:
50
30
1
JOB3
10:
30
10:
50
11:
50
80
4/3
JOB4
10:
50
12:
40
13:
00
130
13/2
JOB5
12:
00
12:
00
12:
20
80
4
JOB6
11:
50
11:
50
12:
00
50
5
平均周转时间=(160+30+80+130+80+50)/6=88.88
平均带权周转时间=(4+1+4/3+13/2+4+5)/6=3.64
25、答:
每个作业运行将经过两个阶段:
作业调度(SJF算法)和进程调度(优先数抢占式)。
另外,批处理最多容纳2道作业,更多的作业将在后备队列等待。
进程就绪队列
作业后备队列
时间(分钟)10:
0010:
2010:
3010:
5011:
1012:
0012:
20
ABACD
ADD
C
CPU
(1)10:
00,作业A到达并投入运行。
(2)10:
20,作业B到达且优先权高于作业A,故作业B投入运行而作业A在就绪队列等待。
(3)10:
30,作业C到达,因内存中已有两道作业,故作业C进入作业后备队列等待。
(4)10:
50,作业B运行结束,作业D到达,按SJF短作业优先算法,作业D被装入内存进入就绪队列。
而由于作业A的优先级高于作业D,故作业A投入运行。
(5)11:
10,作业A运行结束,作业C被调入内存,且作业C的优先级高于作业D,故作业C投入运行。
(6)12:
00,作业C运行结束,作业D投入运行。
(7)12:
20,作业D运行结束。
作业进入内存时间运行结束时间
A10:
0011:
10
B10:
2010;50
C11:
1012:
00
D10:
5012:
20
各作业周转时间为:
作业A70,作业B30,作业C90,作业D90。
平均作业周转时间为70分钟。
28、答:
(1)FIFO算法选中作业执行的次序为:
A、B、D、C和E。
作业平均周转时间为63分钟。
(2)SJF算法选中作业执行的次序为:
A、B、D、E和C。
作业平均周转时间为58分钟。
第三章:
一、9、13、15、25
9.什么是临界区和临界资源临界区管理的基本原则是什么
并发进程中与共享变量有关的程序段称为临界区。
共享变量所代表的资源叫做临界资源,即一次仅供一个进程使用的资源。
(1)一次至多有一个进程进入临界区内执行;
(2)如果已有进程在临界区内,试图进入此临界区的其它进程应等待;
(3)进入临界区的进程应在有限时间内退出,以便让进程等待队列中的一个进程进入。
13.什么是信号量如何对其进行分类
信号量是物理资源的实体,它是一个与队列有关的整型变量。
按用途分
(1)公用信号量;
(2)私有信号量。
按取值分
(1)二值信号量;
(2)一般信号量。
15.何谓管程它有哪些属性
管程是由局部于自己的若干公共变量及其声明和所有访问这些公共变量的过程所组成的软件模块,它提供一种互斥机制,进程可以互斥地调用管程的过程。
(1)共享性;
(2)安全性;
(3)互斥性。
25.试述产生死锁的必要条件、死锁产生的原因及预防死锁的方法。
(1)互斥条件;
(2)占有和等待条件;
(3)不剥夺条件;
(4)循环等待条件。
进程推进顺序不当、PV操作使用不妥、同类资源分配不均或对某些资源的使用未加限制等,不仅与系统拥有的资源数量有关,而且与资源分配策略、进程对资源的使用要求以及并发进程的推进顺序有关。
(1)破坏条件1(互斥条件);
(2)破坏条件2(占有和等待条件);
(3)破坏条件3(不剥夺条件);
(4)破坏条件4(循环等待条件)。
二、
2、
答:
不同
(1):
初值为1,范围为[-n+1,1];
(2):
初值为m,范围为[-n+m,m]。
5、答:
1)使用信号量和P、V操作:
varname:
array[1..100]ofA;
A=record
number:
integer;
name:
string;
end
fori:
=1to100do{A[i].number:
=i;A[i].name:
=null;}
mutex,seatcount:
semaphore;
i:
integer;mutex:
=1;seatcount:
=100;
cobegin
{
processreaderi(varreadername:
string)(i=1,2,…)
{
P(seatcount);
P(mutex);
fori:
=1to100doi++
ifA[i].name=nullthenA[i].name:
=readername;
readergettheseatnumber=i;/*A[i].number
V(mutex)
进入阅览室,座位号i,座下读书;
P(mutex);
A[i]name:
=null;
V(mutex);
V(seatcount);
离开阅览室;
}
}
coend.
2)使用管程操作:
TYPEreadbook=monitor
VARR:
condition;
InterfaceModuleIM;
i,seatcount:
integer;
name:
array[1..100]ofstring;
DEFINEreadercome,readerleave;
USEcheck,wait,signal,release;
procedurereadercome(readername)
begin
check(IM);
ifseatcount≥100wait(R,IM)
seatcount:
=seatcount+1;
fori=1to100doi++
ifname[i]==nullthenname[i]:
=readername;
gettheseatnumber=i;
release(IM);
end
procedurereaderleave(readername)
begin
check(IM);
seatcount--;
fori=1to100doi++
ifname[i]==readernamethenname[i]:
=null;
release(IM);
end
begin
seatcount:
=100;name:
=null;
end
cobegin
processreaderi(i=1,2.…)
begin
readercome(readername);
readthebook;
readerleave(readername);
leavethereadroom;
end
coend.
6、答:
实质上是两个进程的同步问题,设信号量S1和S2分别表示可拣白子和黑子,不失一般性,若令先拣白子。
varS1,S2:
semaphore;
S1:
=1;S2:
=0;
cobegin
{
processP1
begin
repeat
P(S1);
拣白子
V(S2);
untilfalse;
end
processP2
begin
repeat
P(S2);
拣黑子
V(S1);
untilfalse;
end
}
coend.
16、答:
(1)用信号量和P、V操作。
varS,S1,S2,S3;semaphore;
S:
=1;S1:
=S2:
=S3:
=0;
flag1,flag2,flag3:
Boolean;
flag1:
=flag2:
=flag3:
=true;
cobegin
{
process供应者
begin
repeat
P(S);
取两样香烟原料放桌上,由flagi标记;/*flage1、flage2、flage3代表烟草、纸、火柴
ifflag2&flag3thenV(S1);/*供纸和火柴
elseifflag1&flag3thenV(S2);/*供烟草和火柴
elseV(S3);/*供烟草和纸
untilefalse;
end
process吸烟者1
begin
repeat
P(S1);
取原料;
做香烟;
V(S);
吸香烟;
untilefalse;
process吸烟者2
begin
repeat
P(S2);
取原料;
做香烟;
V(S);
吸香烟;
untilefalse;
process吸烟者3
begin
repeat
P(S3);
取原料;
做香烟;
V(S);
吸香烟;
untilefalse;
}
coend.
23、
答:
(1)P1,P2,P3,P4的Cki-Aki分别为:
(2,2,2)、(1,0,2)、(1,0,3)、(4,2,0)
(1)系统处于安全状态,存在安全序:
P2,P1,P3,P4
(2)可以分配,存在安全序列:
P2,P1,P3,P4。
(3)不可以分配。
24、
答:
(1)系统处于安全状态,存在安全序列:
P0,P3,P4,P1,P2。
(2)不能分配,否则系统会处于不安全状态。
25、
答:
(1)此时可以找出进程安全序列:
P4,P1,P5,P2,P3。
故系统处于安全状态。
(2)可以分配,存在安全序列:
P4,P1,P5,P2,P3。
(3)不可分配,系统进入不安全状态。
31、答:
semaphorewait,mutex1,mutex2;
mutex1=mutex2=1;wait=1;
intcounter1,counter2;
count1=count2=0;
Cobegin
{
Processp1
{
P(mutex1);
counter1++;
if(counter1==1)thenP(wait);
V(mutex1);
过独木桥;
P(mutex1);
counter1--;
if(counter1==0)thenV(wait);
V(mutex1);
}
Processp2
{
P(mutex2);
Counter2++;
if(counter2==1)thenP(wait);
V(mutex2);
过独木桥;
P(mutex2);
counter2--;
if(counter2==0)thenV(wait);
V(mutex2);
}
}
coend
50、答:
答:
semaphoremutex1,mutex2;
semaphoreempty,full,count;
mutex1=mutex2=1;count=3;empty=10;full=0;
cobegin
processyoungmonki(i=1,2…)
{
While(true){
P(empty);
P(count);
P(mutex1);
从井中取水;
V(mutex1);
P(mutex2);
倒入水缸;
V(mutex2);
V(count);
V(full);
}
}
processoldmonki(i=1,2…)
{
while(true){
P(full);
P(count);
P(mutex2);
从缸中取水;
V(mutex2);
V(count);
V(empty);
}
}
coend
第四章:
一、
1、试述存储管理的基本功能。
答:
(1)存储分配;
(2)地址映射;
(3)存储保护;
(4)存储共享;
(5)存储扩充。
4、何谓地址转换(重定位)哪些方法可以实现地址转换
答:
逻辑地址转换为物理地址的过程称为地址转换(重定位)。
(1)静态地址重定位;
(2)动态地址重定位;
(3)运行时链接地址重定位。
18、试述实现虚拟存储器的基本原理。
有哪几种实现方法?
答:
虚拟存储器是指在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理内存容量大得多的、可寻址的“内存储器”。
是一种具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
虚拟存储器的实现方式有两种:
请求分页系统和请求分段系统。
请求分页系统允许只装入少数页面的程序(及数据),便启动运行,以后,再通过调页功能及页面置换功能,陆续地把即将要运行的页面调入内存,同时把暂不运行的页面换出到外存上;请求分段系统允许只装入少数段(而非所有的段)的用户程序和数据,即可启动运行。
以后再通过调段功能和段的置换功能将暂不运行的段调出,同时调入即将运行的段。
二、
1、答:
(1)当有3个物理页面时:
使用FIFO算法:
缺页16次,缺页中断率16/20=80%;
使用OPT算法:
缺页11次,缺页率11/20=55%。
使用LRU算法:
缺页12次,缺页率12/20=60%。
(2)当使用4个物理页面时:
(2)当使用5个物理页面时:
(2)当使用6个物理页面时:
3、答:
(1)作业的物理块数为3块,使用FIFO为9次,9/12=75%。
使用LRU为7次,7/12=58%。
使用OPT为6次,6/12=50%。
作业的物理块数为4块,使用FIFO为6次,6/12=50%。
使用LRU为6次,6/12=50%