Professional Documents
Culture Documents
N H IU HNH
ti:
Xy dng chng trnh m phng cc gii
thut nh thi cho CPU
Sinh vin
Cn b hng dn
: L Phng Tin
H Phc Vit
: Ths Nguyn Vn Nguyn
Nng 2010
07T2
07T1
MC LC
TNG QUAN V TI
CHNG 1. TNG QUAN V TI...............................................................5
1.1. BI CNH V L DO THC HIN TI................................................................5
1.2. MC TIU CA TI.......................................................................................5
CHNG 2. C S L THUYT........................................................................6
2.1. GII THIU.......................................................................................................6
2.1.1. Mc tiu lp lch.................................................................................6
2.1.2. Cc c im ca tin trnh.................................................................6
2.1.3. iu phi khng c quyn v iu phi c quyn.........................7
2.2. CC KHI NIM C BN.....................................................................................9
2.2.1. Khi nim gi CPU.............................................................................9
2.2.2. Cc trng thi ca tin trnh lin quan n gi CPU..........................9
2.2.3. Khi nim lp lch cho CPU.............................................................10
2.3. CC THUT TON LP LCH...........................................................................11
2.3.1. First Come First Served(FCFS)........................................................11
2.3.2. Round robin(RR)..............................................................................12
2.3.3. Shortest Job First(SJF)......................................................................14
2.3.4. Shortest Remain Time(SRT)............................................................14
CHNG 3. CI T THUT TON..............................................................16
3.1. M HNH CI T THUT TON.........................................................................16
3.1.1. Cu trc d liu.................................................................................16
3.1.2. Thut ton x l chung.....................................................................18
3.2. THUT TON..................................................................................................20
3.2.1. First In First Out(FIFO)....................................................................20
3.2.2. Round Robin(RR).............................................................................22
3.2.3. Shortest Job First(SRT).....................................................................24
3.2.4. Shortest Remain Time(SRT)............................................................26
CHNG 4. XY DNG CHNG TRNH DEMO.......................................28
4.1. CC MODUN CHNH.........................................................................................28
4.2. MI TRNG PHT TRIN.................................................................................28
4.3. GIAO DIN CA CHNG TRNH.........................................................................28
4.3.1. About................................................................................................28
4.3.2. Input..................................................................................................29
4.3.3. Output...............................................................................................31
4.3.4. Control..............................................................................................31
4.4. NH GI V NHN XT..................................................................................33
Chng 1.
TNG QUAN V TI
1.2. Mc tiu ca ti
Tm hiu cc gii thut: First In First Out(FIFO), Round Robin(RR), Shortest
Job First(SJF), Shortest Remain Time(SRT).
Ch ra c u v nhc im c cc gii thut lp lch CPU.
Xy dng chng trnh m phng cc gii thut tm hiu v kt qu
demo.
Chng 2.
C S L THUYT
o Khi tin trnh chuyn t trng thi ang x l (running) sang trng thi b
blocked (v d ch mt thao tc nhp xut hay ch mt tin trnh con kt
thc).
o Khi tin trnh kt thc.
Cc gii thut c quyn thng n gin v d ci t. Tuy nhin chng
thng khng thch hp vi cc h thng tng qut nhiu ngi dng, v nu
cho php mt tin trnh c quyn x l bao lu ty , c ngha l tin trnh
ny gi CPU mt thi gian khng xc nh, c th ngn cn nhng tin
trnh cn li trong h thng c mt c hi x l.
iu phi khng c quyn: Ngc vi nguyn l c quyn, iu phi theo
nguyn l khng c quyn cho php tm dng hot ng ca mt tin trnh
sn sng x l. Khi mt tin trnh nhn c CPU, n vn c s dng
CPU n khi hon tt hoc t nguyn gii phng CPU, nhng kh c mt
tin trnh khc c u tin c th dnh quyn s dng CPU ca tin trnh
ban u. Nh vy l tin trnh c th b tm dng hot ng bt c lc no
m khng c bo trc, tin trnh khc x l. Cc quyt nh iu phi
xy ra khi:
o Khi tin trnh chuyn t trng thi ang x l(running) sang trng
thi b kha blocked.
o Khi tin trnh chuyn t trng thi ang x l(running) sang trng
thi ready(v xy ra mt ngt).
o Khi tin trnh chuyn t trng thi ch (blocked) sang trng thi
ready (v d mt thao tc nhp xut hon tt).
o Khi tin trnh kt thc.
Trong cc h thng s dng nguyn l iu phi c quyn c th xy ra
tnh trng cc tc v cn thi gian x l ngn phi ch tc v x l vi thi
gian rt di hon tt! Nguyn l iu phi c quyn thng ch thch hp
vi cc h x l theo l.
L Phng Tin H Phc Vit
Ready
Running
Waiting
Sn sng(ready): l trng thi m tin trnh c phn phi y mi ti
nguyn cn thit v ang ch gi CPU.
10
S dng CPU
i I/O
S dng CPU
Kt thc
i I/O
Mt tin trnh ang trong trng thi thc hin, n c th ri khi trng thi bi mt
trong ba l do:
Tin trnh hon thnh cng vic, khi n tri li gi CPU v chuyn
sang ch x l kt thc.
Tin trnh t ngt: Khi tin trnh ch i mt s kin no , tin trnh s
c chuyn sang trng th thc hin khi c xut hin s kin n ang ch.
Tin trnh s dng ht gi CPU dnh cho n, khi n s c chuyn sang
trng thi sn sng.
Vic chuyn tin trnh sang trng thi sn sng v bn cht l thc hin vc phn
phi li gi CPU.
Read Queue
11
CPU
I/O Queue
I/O
I/O
I/O Queue
I/O
I/O Queue
12
CPU
13
CPU
u im :
- Cc qu trnh s c lun phin cho CPU x l nn thi gian ch i s t.
- i vi cc qu trnh lin quan n nhp xut,IO,ngi dng th rt hiu
qu.
- Vic ci t khng qu phc tp
Nhc im :
- Thi gian ch i trung bnh di chnh sch RR thng l qu di.
14
15
tin v gii gian thc hin ca tin trnh. ng thi, ch phn b li gi CPU cng
phi c p dng nu khng s lm mt tnh u vic ca thut ton.
u im :
- Thi gian ch i,tn ti trong h thng ca mi tin trnh u ngn
- Thut ton ti u nht
Nhc im :
- Vic ci t thut ton kh phc tp
- Cn qun l cht ch vic iu phi cc tin trnh
- Qun l thi gian n ca mi tin trnh
16
CI T THUT TON
Chng 3.
getT_XULY();
setT_XULY(int a);
int
void
getT_CHO();
setT_CHO(int a);
int
void
getFINISH();
setFINISH(int a);
int
getSTT();
};
17
struct DS
{
int id;
DS *next;
};
typedef DS* list;
18
sch loi b cc tin trnh hon thnh hay sp xp hay thm cc tin
trnh mi vo
19
Begin
X l tin
trnh u
danh sch
ng
Cp nht li
danh sch
End
20
Sai
ok
ng
Sai
xc lp thot
ok
xc lp
quantum
ng
finish
Sai
quantum
ng
ng
Tg n
readyList
ng
Np tin trnh
X l tin
trnh
Tng quantum
Sai
xc lp thot
quantum
End
Code
L Phng Tin H Phc Vit
21
void FIFO()
{
int time=0,ok=1,i,j=0,ID;
while(ok)
{
ID=-1;
PrintRL(ready,time);
listBox2->Items->Add("------------------");
for(i=0;i<quantum;i++)
{
// nap readylist luc bat dau
if(tt[j].getT_DEN()==time && j<n )
{ them(j);
j++;
listBox2->Items->Add("Time = "+time.ToString()+" : Nap
tien trinh : "+(tt[j-1].getSTT()).ToString());
}
// nen ton tai tt trong readylist thi lam,ko thi thoat
quantum
if(ready)
{
ID=(*ready).id;
listBox2->Items->Add("Time = "+time.ToString()+" : xu
ly tien trinh : "+(tt[ID].getSTT()).ToString());
if(tt[ID].getT_XULY()>0)
{
// tang thoi gian cho cua cac tt trong ready
tangT_CHO(ready,ID);
tt[ID].setT_XULY(tt[ID].getT_XULY() - 1);
if(tt[ID].getT_XULY()==0)
xoa();
}
time++;
if(tt[ID].getT_XULY()==0)
{ tt[ID].setFINISH(time);
listBox2->Items->Add("Time = "+time.ToString()+" :
hoan thanh tien trinh : "+(tt[ID].getSTT()).ToString());
break;
}
}
else
{
tangT_CHO(ready,-1);
time++;
break;
}
}
listBox2->Items->Add("-------Hoan thanh chu ky-------");
listBox2->Items->Add("------------------");
if(checkFinish()) ok=0;
}
TIME=time
}
22
Sai
ok
Hon v
ReadyList
ng
Sai
xc lp thot
ok
xc lp
quantum
ng
finish
Sai
quantum
ng
ng
Tg n
readyList
ng
Np tin trnh
X l tin
trnh
Tng quantum
Sai
xc lp thot
quantum
End
23
Code
void RR()
{
int time=0,ok=1,i,j=0,ID,check;
while(ok)
{
ID=-1;
check=0;
PrintRL(ready,time);
listBox2->Items->Add("------------------");
for(i=0;i<quantum;i++)
{// nap readylist luc bat dau
if(tt[j].getT_DEN()==time && j<n )
{ them(j);
j++;
listBox2->Items->Add("Time = "+time.ToString()+" : Nap
tien trinh : "+(tt[j-1].getSTT()).ToString());
}
// nen ton tai tt trong readylist thi lam,ko thi thoat
quantum
if(ready)
{
ID=(*ready).id;
listBox2->Items->Add("Time = "+time.ToString()+" : xu
ly tien trinh : "+(tt[ID].getSTT()).ToString());
if(tt[ID].getT_XULY()>0)
{
// tang thoi gian cho cua cac tt trong ready
tangT_CHO(ready,ID);
tt[ID].setT_XULY(tt[ID].getT_XULY() - 1);
if(tt[ID].getT_XULY()==0)
xoa();
}
time++;
if(tt[ID].getT_XULY()==0)
{ tt[ID].setFINISH(time);
listBox2->Items->Add("Time = "+time.ToString()
+" : hoan thanh tien trinh : "+(tt[ID].getSTT()).ToString());
check=1;
// ****
break;
// ****
}
}
else
{
tangT_CHO(ready,-1);
time++;
break;
}
}
if(!check) hoanvi();
listBox2->Items->Add("-------Hoan thanh chu ky-------");
listBox2->Items->Add("------------------");
if(checkFinish()) ok=0;
}
TIME=time;
}
24
Sai
ok
Sp xp
ReadyList
ng
Sai
xc lp thot
ok
xc lp
quantum
ng
finish
Sai
quantum
ng
ng
Tg n
readyList
ng
Np tin trnh
X l tin
trnh
Tng quantum
Sai
xc lp thot
quantum
End
25
Code
void SJF()
{
int time=0,ok=1,i,j=0,ID;
while(ok)
{
ID=-1;
PrintRL(ready,time);
listBox2->Items->Add("------------------");
for(i=0;i<quantum;i++)
{
// nap readylist luc bat dau
if(tt[j].getT_DEN()==time && j<n )
{ them(j);
j++;
listBox2->Items->Add("Time = "+time.ToString()+" : Nap
tien trinh : "+(tt[j-1].getSTT()).ToString());
}
// nen ton tai tt trong readylist thi lam,ko thi thoat
quantum
if(ready)
{
ID=(*ready).id;
listBox2->Items->Add("Time = "+time.ToString()+" : xu
ly tien trinh : "+(tt[ID].getSTT()).ToString());
if(tt[ID].getT_XULY()>0)
{
// tang thoi gian cho cua cac tt trong ready
tangT_CHO(ready,ID);
tt[ID].setT_XULY(tt[ID].getT_XULY() - 1);
if(tt[ID].getT_XULY()==0)
xoa();
}
time++;
if(tt[ID].getT_XULY()==0)
{ tt[ID].setFINISH(time);
listBox2->Items->Add("Time = "+time.ToString()
+" : hoan thanh tien trinh : "+(tt[ID].getSTT()).ToString());
break;
}
}
else
{
tangT_CHO(ready,-1);
time++;
break;
}
}
sapxep();
listBox2->Items->Add("-------Hoan thanh chu ky-------");
listBox2->Items->Add("------------------");
if(checkFinish()) ok=0;
}
TIME=time;
}
26
Sai
ok
Sp xp
ReadyList
ng
Sai
xc lp thot
ok
xc lp
quantum
quantum
ng
finish
Sai
Tng thi gian
ch
ng
Sp xp
ReadyList
Lu tin trnh
u RL
Tng quantum
ng
Tg n
readyList
Sai
Np tin trnh
ng
tin trnh
u RL
xc lp thot
quantum
X l tin trnh
Sai
End
Code
ng
27
void SRT()
{
int time=0,ok=1,i,j=0,ID;
while(ok)
{
ID=-1;
PrintRL(ready,time);
listBox2->Items->Add("------------------");
for(i=0;i<quantum;i++)
{
// nap readylist luc bat dau
if(tt[j].getT_DEN()==time && j<n )
{ them(j);
j++;
listBox2->Items->Add("Time = "+time.ToString()+" : Nap
tien trinh : "+(tt[j-1].getSTT()).ToString());
}
// nen ton tai tt trong readylist thi lam,ko thi thoat
quantum
if(ready)
{
ID=(*ready).id;
sapxep();
if( ID != (*ready).id ) break;
//****
listBox2->Items->Add("Time = "+time.ToString()+" : xu
ly tien trinh : "+(tt[ID].getSTT()).ToString());
if(tt[ID].getT_XULY()>0)
{
// tang thoi gian cho cua cac tt trong ready
tangT_CHO(ready,ID);
tt[ID].setT_XULY(tt[ID].getT_XULY() - 1);
if(tt[ID].getT_XULY()==0)
xoa();
}
time++;
if(tt[ID].getT_XULY()==0)
{ tt[ID].setFINISH(time);
listBox2->Items->Add("Time = "+time.ToString()
+" : hoan thanh tien trinh : "+(tt[ID].getSTT()).ToString());
break;
}
}
else
{
tangT_CHO(ready,-1);
time++;
break;
}
}
sapxep();
listBox2->Items->Add("-------Hoan thanh chu ky-------");
listBox2->Items->Add("------------------");
if(checkFinish()) ok=0;
}
TIME=time;
}
28
Chng 4.
29
4.3.2. Input
File
30
31
4.3.3. Output
4.3.4. Control
FIFO
32
SJF
SRT
L Phng Tin H Phc Vit
33
4.4. nh gi v nhn xt
Giao din chng trnh bt mt
Cc modun c b tr hp l v gn gn
34
KT LUN
Xy dng thnh cng chng trnh m phng cc gii thut nh thi CPU
Qua nm bt r cc gii thut lp lch
TI LIU
[1] Nguyn Kim Tun.Gio Trnh L Thuyt H iu Hnh.i hc Hu,trng
i hc khoa hc,khoa cng ngh thng tin, Hu 06/2004, 217t
[2] ng V Tng. Gio Trnh L Thuyt H iu Hnh.S gio dc v o to
H Ni, nh xut bn H Ni 2005, 165t.
[3] Trn H Thy Tin.Gio Tnh Nguyn L H iu Hnh.i hc Nng,
Trng i hc Bch Khoa, Khoa Cng Ngh Thng Tin 01/04/2010.
[4] http://cnx.org/content/m29955/latest/