湖南大学操作系统作业 3.docx
《湖南大学操作系统作业 3.docx》由会员分享,可在线阅读,更多相关《湖南大学操作系统作业 3.docx(11页珍藏版)》请在冰豆网上搜索。
![湖南大学操作系统作业 3.docx](https://file1.bdocx.com/fileroot1/2022-11/16/0869ba3d-9b4e-499e-adc8-0b02976a0870/0869ba3d-9b4e-499e-adc8-0b02976a08701.gif)
湖南大学操作系统作业3
操作系统第二次作业
第五章
5.1WhyisitimportantfortheschedulertodistinguishI/O-boundprogramsfromCPU-boundprograms?
为何调度器要区分IO约束程序和CPU约束程序?
答:
二者对CPU的使用有较大差别,IO操作只需少量的CPU时间片,大部分时间用于IO的等待,而CPU约束操作需要用整块时间,在CPU操作的后台可以同时运行IO等待操作,二者互不影响,通过区分两种操作,加上系统的调度,可以更好的利用CPU资源,提高运行效率
5.3ConsidertheexponentialaverageformulausedtopredictthelengthofthenextCPUburst.Whataretheimplicationsofassigningthefollowingvaluestotheparametersusedbythealgorithm?
a.=0and0=100milliseconds
b.=0.99and0=10milliseconds
考虑预测下一个CPU区间的指数平均公式,当下列参数分别取对应值时的影响是什么
答:
指数平均公式:
T(n+1)=at(n)+(1-a)Tn
参数Tn+1的含义是预测下一CPU区间的预测值,tn为第n个CPU区间的长度,a代表预测值和上一区间长度的【相关度】,也就是说,a取值越大,上一个区间(真实发生的)长度对预测值的影响就越大,反之,a取值越小,预测值就主要体现为上一次的预测值。
a=0,t=100ms
a=0代表真实发生的区间长度不会影响预测,也就是说预测值会一直保持为上一次预测值,即t,故本次预测值为100ms
a=0.99t=10ms
a=0.99代表预测值基本完全体现为上一次真实发生的CPU区间长度,也就是说预测值基本是前一个区间的长度,比如tn=50ms,则下一次预测值也大致为50ms。
5.4Considerthefollowingsetofprocesses,withthelengthoftheCPU-bursttimegiveninmilliseconds:
ProcessBurstTimePriority
P1103
P211
P323
P414
P552
TheprocessesareassumedtohavearrivedintheorderP1,P2,P3,P4,P5,allattime0.
a.DrawfourGanttchartsillustratingtheexecutionoftheseprocessesusingFCFS,SJF,anonpreemptivepriority(asmallerprioritynumberimpliesahigherpriority),andRR(quantum=1)scheduling.
b.Whatistheturnaroundtimeofeachprocessforeachoftheschedulingalgorithmsinparta?
c.Whatisthewaitingtimeofeachprocessforeachoftheschedulingalgorithmsinparta?
d.Whichoftheschedulesinpartaresultsintheminimalaveragewaitingtime(overallprocesses)?
考虑下列进程,给出CPU区间长度,单位ms,进程假设在0时刻以P1,P2,P3,P4,P5的顺序到达。
A作出4个gantt图表,来阐述使用FCFS,SJF,非抢占的优先调度(小数字代表高优先)和RR调度(时间片为1ms)的执行过程
B求A中各个调度算法下各个进程的周转时间
C求A中各个调度算法下各个进程的等待时间
D那种调度算法会有最小的平均等待时间?
列表如下:
a.
FCFS:
P1
P2
P3
P4
P5
01011131419
SJF:
P2
P4
P3
P5
P1
0124919
nonpreemptivepriority:
P2
P5
P1
P3
P4
016161819
RR:
P1
P2
P3
P4
P5
P1
P3
P5
P1
P5
P1
P5
P1
P5
P1
P1
P1
P1
P1
012345678910111213141516171819
b.每个进程的周转时间:
FCFS
SJF
Priority
RR
P1
10
19
16
19
P2
11
1
1
2
P3
13
4
18
7
P4
14
2
19
4
P5
19
9
6
14
c.每个进程的等待时间:
FCFS
SJF
Priority
RR
P1
0
9
6
9
P2
10
0
0
1
P3
11
2
16
5
P4
13
1
18
3
P5
14
4
1
9
d.平均等待时间:
FCFS
SJF
Priority
RR
avgTwait
9.6
3.2
8.2
5.4
SJF的平均等待时间最短
5.5Whichofthefollowingschedulingalgorithmscouldresultinstarvation?
a.First-come,first-servedb.Shortestjobfirst
c.Roundrobind.Priority
下面哪种调度算法会造成进程饥饿?
A先来先服务B短作业优先C轮转法D优先级调度法
答:
进程饥饿的原因是某种调度算法在分配时无法照顾到所有进程,造成某些进程在队列中却一直分配不到CPU时间片的情况。
短作业优先中如果某个长进程处于队列中,且有源源不断的短进程补充进来,这种时候就会导致长进程饥饿而无法运行
优先级调度法也会导致进程饥饿,这是由于某个优先级较低的进程一直被高优先级进程抢占,导致无法运行。
这种情况是可以解决的,方法是进程老化,即每隔一定时间将队列中的进程优先级升高,这样一来在某一时间后,之前的低优先级进程也会分配到时间片。
5.9Considerapreemptivepriorityschedulingalgorithmbasedondynamicallychangingpriorities.Largerprioritynumbersimplyhigherpriority.WhenaprocessiswaitingfortheCPU(inthereadyqueue,butnotrunning),itsprioritychangesatarate;
whenitisrunning,itsprioritychangesatarate.Allprocessesaregivenapriorityof0whentheyenterthereadyqueue.Theparametersandcanbesettogivemanydifferentschedulingalgorithms.
a.Whatisthealgorithmthatresultsfromβ>α>0?
b.Whatisthealgorithmthatresultsfromα<β<0?
考虑一个基于动态改变优先级的抢占式优先级调度算法,大优先级数代表高优先级,当一个进程在ready状态等待CPU时,他的优先级以某一速率α改变,当他在running状态时,其优先级又以另一速率β改变,所有进程进入队列时优先级均为0,可以通过设置参数来形成不同的调度算法
答a.
β>α>0时,先进入ready队列的进程会先开始提高优先级以进入running队列,这就导致后来的进程永远追不上他的优先级,也就保证了先来先服务,即FCFS调度。
b.
α<β<0时,先进入ready队列的进程先进入到running队列中,但是running队列中的优先级衰减速度快于ready队列,这就导致在某一进程加入ready队列时,优先级高于running队列的进程,会进行一次抢占,不停循环下去ready队列中的后进进程不断抢占running队列中的先进进程,这就导致了后进进程永远比先进进程有更高的优先级,这就是先入后出调度,即firstinlastout
第六章
6.1Thefirstknowncorrectsoftwaresolutiontothecritical-sectionproblemfortwoprocesseswasdevelopedbyDekker.Thetwoprocesses,P0andP1,sharethefollowingvariables:
booleanflag[2];/*initiallyfalse*/
intturn;
ThestructureofprocessPi(i==0or1)isshowninFigure6.25;theotherprocessisPj(j==1or0).Provethatthealgorithmsatisfiesallthreerequirementsforthecritical-sectionproblem.
第一个为人熟知的正确解决两个进程的临界区问题的软件解法由dekker提出,两个进程P0,P1共享flag,turn变量,Pi的结构在6.25中,另一进程为Pj,证明这个算法满足所有临界区问题的三要求
该算法Pi结构:
Do{
flag[i]=true;
while(flag[j]){
if(turn==j){
flag[i]=false;
while(turn==j);//donothing
flag[i]=true;
}
}
//criticalsection
Turn=j;
Flag[i]=false;
//remainderingsection
}while(true);
答:
首先明确变量含义,flag[n]为true代表Pn进程想进入临界区,turn=n代表允许Pn进程进入临界区。
临界区问题的三要素为:
互斥、前进、有限等待
对于进程Pi来说,首先将其flag设置为true,接下来进行while判断,在这个while判断中,如果系统if(turn==j),也就是说允许Pj进入临界区,则将Pi的flag设置为false,