You are on page 1of 32

TRNG I HC BCH KHOA

KHOA CNG NGH THNG TIN

B MN MNG V TRUYN THNG

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

B mn Mng v Truyn Thng

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

L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

Chng 1.

TNG QUAN V TI

1.1. Bi cnh v l do thc hin ti


H iu hnh l phn gn b trc tip vi phn cng v l mi trng cho cc
chng trnh ng dng khc chy trn n. Vi chc nng qun l v phn phi ti
nguyn mt cch hp l, ng thi gi lp mt my tnh m rng v to giao din tin
li vi ngi s dng, h iu hnh l mt thnh phn then cht khng th thiu c
trong mi mt h thng my tnh in t.
Mt trong nhng chc nng quan trng ca h iu hnh l qun l CPU. Trong
mi trng x l a chng, c th xy ra tnh hung nhiu tin trnh ng thi sn
sng x l. Mc tiu ca cc h phn chia thi gian(time-sharing) l chuyn i CPU
qua li gia cc tin trnh mt cch thng xuyn nhiu ngi s dng c th tng
tc cng lc vi tng chng trnh trong qu trnh x l.
thc hin c mc tiu ny, h iu hnh phi la chn tin trnh c x l
tip theo. B iu phi s s dng mt gii thut iu phi thch hp thc hin
nhim v ny. Mt thnh phn khc ca h iu hnh cng tim n trong cng tc iu
phi l b iu phi(dispatcher). B phn phi s chu trch nhim chuyn i ng cnh
v trao CPU cho tin trnh c chn bi b iu phi x l.
V nhng li ch ln lao m gii thut iu phi CPU em li v tm hiu k hn
v nguyn tc hot ng ca chng, chng em quyt nh chn ti: Xy dng
chng trnh m phng cc gii thut nh thi cho CPU.

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.

L Phng Tin H Phc Vit

B mn Mng v Truyn Thng

Chng 2.

C S L THUYT

2.1. Gii thiu


2.1.1. Mc tiu lp lch
B iu phi khng cung cp c ch, m a ra cc quyt nh. Cc h iu hnh
xy dng nhiu chin lt khc nhau thc hin vic iu phi, nhng tu chung cn
t c cc mc tiu sau:
S cng bng: cc tin trnh chia s CPU mt cch cng bng khng c tin
trnh no phi i v hn c cp pht CPU
Tnh hiu qu: H thng phi tn dng c CPU 100% thi gian
Thi gian p ng hp l: cc tiu ha thi gian hi p cho cc tng tc
ca ngi s dng
Thi gian lu li trong h thng: cc tiu ha thi gian hon tt cc tc v x
l theo l
Thng lng ti a: cc i ha s cng vic c x l trong mt n v
thi gian
Tuy nhin thng khng th tha mn tt c cc mc tiu k trn v bn thn chng
c s mu thun vi nhau m ch c th th dung ha chng mc no .

2.1.2. Cc c im ca tin trnh


iu phi hot ng ca cc tin trnh l mt vn rt phc tp, i hi h iu
hnh khi gii quyt phi xem xt nhiu yu t khc nhau c th t c nhng mc
tiu ra. Mt s c tnh ca tin trnh cn c quan tm nh tiu chun iu phi:
Tnh hng xut/ nhp ca tin trnh: Khi mt tin trnh c nhn CPU, ch
yu n ch s dng CPU n khi pht sinh mt yu cu nhp xut? Hot
ng ca cc tin trnh nh th thng bao gm nhiu lt s dng CPU,
mi lt trong mt thi gian kh ngn.
L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

Tnh hng x l ca tin trnh: Khi mt tin trnh c nhn CPU, n c


khuynh hng s dng CPU n khi ht thi gian dnh cho n? Hot ng
ca cc tin trnh nh th thng bao gm mt s t lt s dng CPU,
nhng mi lt trong mt thi gian di.
Tin trnh tng tc hay x l theo l: Ngi s dng theo kiu tng tc
thng yu cu c hi p tc thi i vi cc yu cu ca h, trong khi
cc tin trnh ca cc tc v c x l theo l ni chung c th tr hon
trong mt thi gian chp nhn c.
u tin ca tin trnh: Cc tin trnh c th c phn cp theo mt s
tiu chun nh gi no , mt cch hp l, cc tin trnh quan trng
hn(c u tin cao hn) cn c u tin cao hn.
Thi gian s dng CPU ca tin trnh: mt s quan im u tin chn
nhng tin trnh s dng CPU nhiu thi gian nht v hy vng chng s
cn t thowig gian nht hon tt v ri khi h thng. Tuy nhin cng c
quan ddierm cho rng cc tin trnh nhn c CPU trong t thi gian l
nhng tin trnh phi ch lu nht, do vy u tin chn chng.
Thi gian cn li tin trnh cn hon tt: C th gim thiu thi gian ch
trung bnh ca cc tin trnh bng cch cho cc tin trnh cn t thi gian nht
hon tt c thc hin trc. Tuy nhin ng tic l rt him khi bit
c tin trnh cn bao nhiu thi gian na kt thc x l.

2.1.3. iu phi khng c quyn v iu phi c quyn


Thut ton iu phi cn xem xt v quyt nh thi im chuyn i CPU gia cc
tin trnh. H iu hnh cc th thc hin c ch iu phi theo nguyn l c quyn
hoc khng c quyn:
iu phi c quyn: Nguyn l iu phi c quyn cho php mt tin
trnh khi nh c CPU s c quyn c chim CPU n khi hon tt x l
hoc t nguyn gii phng CPU. Khi quyt nh iu phi CPU s xy ra
trong cc tnh hung sau:

L Phng Tin H Phc Vit

B mn Mng v Truyn Thng

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

Xy dng chng trnh m phng gii thut nh thi CPU

i vi cc h thng tng tc (time sharing), cc h thi gian thc (real


time), cn phi s dng nguyn l iu phi khng c quyn cc tin
trnh quan trng c c hi hi p kp thi. Tuy nhin thc hin hin iu
phi theo nguyn l khng c quyn i hi nhng c ch phc tp trong
vic phn nh u tin, v pht sinh thm chi ph khi chuyn i CPU qua
li gia cc tin trnh.

2.2. Cc khi nim c bn


2.2.1. Khi nim gi CPU
CPU l mt loi ti nguyn quan trng ca my tnh. Mi tin trnh mun hot ng
c u phi c s phc v ca CPU( x l, tnh ton). Thi gian m CPU phc
v cho tin trnh hot ng c gi l gi CPU.
Ti mi thi im nht, ch c mt tin trnh c phn phi gi CPU hot
ng(thc hin cc lnh ca mnh).

2.2.2. Cc trng thi ca tin trnh lin quan n gi CPU


Trong ch a chng trnh, c ba trng thi ca tin trnh lin quan mt thit n
gi CPU bao gm:

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.

L Phng Tin H Phc Vit

10

B mn Mng v Truyn Thng

Thc hin(running): l trng thi m tin trnh c phn phi y mi ti


nguyn cn thit v gi CPU.
i(waiting): l trng thi tin trnh khng thc hin c v thiu mt vi
iu kin no (i d liu vo/ra, i ti nguyn b sung). Khi s kin
m n ch i xut hin, tin trnh s quay li trng thi sn sng.
Nh vy, trong sut thi gian tn ti ca mnh, cc tin trnh s tun th theo s
thc hin sau:
S dng CPU
Bt u

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.

2.2.3. Khi nim lp lch cho CPU


iu khin tin trnh nhiu trng thi khc nhau, h thng thng t chc cc
t trng thi(thc cht l cc khi iu khin tin trnh) ghi nhn tnh trng s dng
ti nguyn v trng thi tin trnh. Cc t trng thi c t chc theo kiu hng i
nh sau:

L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

Read Queue

11

CPU

I/O Queue
I/O

I/O

I/O Queue

I/O

I/O Queue

Nh vy lp lch cho CPU c ngha l t chc mt hng i cc tin trnh sn sng


phn phi gi CPU cho chng da trn u tin ca cc tin trnh; sao cho hiu
sut s dng CPU l ti u nht.
Mi tin trnh trng thi sn sng s c gn vi mt th t u tin. Th t u
tin ny c xc nh da vo cc yu t nh: thi im hnh thnh tin trnh, thi
gian thc hin tin trnh, thi gian kt thc tin trnh

2.3. Cc Thut Ton Lp Lch


2.3.1. First Come First Served(FCFS)
Trong thut ton ny, u tin phc v tin trnh cn c vo thi im hnh thnh
tin trnh. Hng i cc tin trnh c t chc theo kiu FIFO. Mi tin trnh u c
phc v theo trnh t xut hin cho n khi kt thc hoc b ngt.
Ready list

L Phng Tin H Phc Vit

12

B mn Mng v Truyn Thng

CPU

Hnh 2.3.1-1. iu phi FIFO

u im ca thut ton ny l gi CPU khng b phn phi li(khng b ngt) v chi


phsi thc hin thp nht(v khng phi thay i th t u tin phc v, th t u tin l
th t ca tin trnh trong hng i).
Nhc im ca thut ton l thi gian trung bnh ch phc v ca cc tin trnh l
nh nhau(khng k tin trnh ngn hay di), do dn ti ba im sau:
Thi gian ch trung bnh s tng v hn khi h thng tip cn ti hn kh
nng phc v ca mnh.
Nu pht tn thi gian thc hin tin trnh tng th thi gian ch i trung
bnh cng tng theo.
Khi c tin trnh di, t b ngt th cc tin trnh khc phi ch i lu hn.

2.3.2. Round robin(RR)


Gii thut nh thi lun phin (round-robin scheduling algorithm-RR) c
thit k c bit cho h thng chia s thi gian. Tng t nh nh thi FIFO nhng
s trng dng CPU c thm vo chuyn CPU gia cc qu trnh. n v thi
gian nh c gi l nh mc thi gian (time quantum) hay phn thi gian (time
slice) c nh ngha. nh mc thi gian thng t 10 n 100 mili giy. Hng
i sn sng c xem nh mt hng i vng. B nh thi CPU di chuyn vng
quanh hng i sn sng, cp pht CPU ti mi qu trnh c khong thi gian ti a
bng mt nh mc thi gian.
ci t nh thi RR, chng ta qun l hng i sn sng nh mt hng i
FIFO ca cc qu trnh. Cc qu trnh mi c thm vo ui hng i. B nh
thi CPU chn qu trnh u tin t hng i sn sng, t b m thi gian ngt
sau 1 nh mc thi gian v gi ti qu trnh.
L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

13

Sau , mt trong hai trng hp s xy ra. Qu trnh c 1 chu k CPU t hn 1


nh mc thi gian. Trong trng hp ny, qu trnh s t gii phng . Sau , b
nh thi biu s x l qu trnh tip theo trong hng i sn sng. Ngc li, nu
chu k CPU ca qu trnh ang chy di hn 1 nh mc thi gian th m thi
gian s bo v gy ra mt ngt ti h iu hnh. Chuyn i ng cnh s c thc
thi v qu trnh c t tr li ti ui ca hng i sn sng. Sau , b nh thi
biu CPU s chn qu trnh tip theo trong hng i sn sng.
Ready List

CPU

Hnh 2.3.2-1. Round Robin

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.

- Nu thi gian nh mc cho vic x l qu ln th RR thnh FIFO


- Nu thi gian qu ngn so vi thi gian x l ca mt tin trnh trong danh
sch hng i th vic ch i v x l lun phin s nhiu.
L Phng Tin H Phc Vit

14

B mn Mng v Truyn Thng


- Qui tc l nh mc thi gian nn di hn 80% chu k CPU.

2.3.3. Shortest Job First(SJF)


Mt tip cn khc i vi vic nh thi CPU l gii thut nh thi cng vic
ngn nht trc (shortest-job-first-SJF). Gii thut ny gn ti mi qu trnh chiu
di ca chu k CPU tip theo cho qu trnh sau . Khi CPU sn dng, n c gn
ti qu trnh c chu k CPU k tip ngn nht. Nu hai qu trnh c cng chiu di
chu k CPU k tip, nh thi FIFO c dng. Ch rng thut ng ph hp hn
l chu k CPU k tip ngn nht (shortest next CPU burst) v nh thi c thc
hin bng cch xem xt chiu di ca chu k CPU k tip ca qu trnh hn l ton
b chiu di ca n. Chng ta dng thut ng SJF v hu ht mi ngi v mi sch
tham kho ti nguyn l ca loi nh thi biu ny nh SJF.
u im :
- Gii thut c xem l ti u, thi gian ch i trung bnh gim

- Tn dng ht nng lc ca CPU


Nhc im :
- Ci t thut ton phc tp,tn nhiu x l cho qu trnh qun l.
- Mc d SJF l ti u nhng n khng th c ci t ti cp nh thi CPU

ngn v khng c cch no bit chiu di chu k CPU tip theo.


- Gii thut SJF c th trng dng hoc khng trng dng CPU, dn ti gii

thut ny c nhiu d bn khc nhau v s ti u hay khng ti u ph thuc vo


trng dng CPU.

2.3.4. Shortest Remain Time(SRT)


Tng t nh SJF nhng trong thut ton ny, u tin thc hin cc tin trnh
da vo thi gian cn thit thc hin nt tin trnh(bng tng thi gian tr i thi
gian thc hin). Nh vy, trong thut ton ny cn phi thng xuyn cp nht thng
L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

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

L Phng Tin H Phc Vit

16

B mn Mng v Truyn Thng

CI T THUT TON

Chng 3.

3.1. M hnh ci t thut ton


3.1.1. Cu trc d liu
Tin trnh
Cu trc d liu xut cho vic qu l tin trnh c xy dng thnh mt lp
nhm to iu kin cho vic qun l cc tin trnh c d dng.
Code
class TIENTRINH
{
private:
int stt;
int t_den;
int t_xuly;
int t_cho;
int finish;
public:
TIENTRINH();
TIENTRINH(int stt,int t_den,int t_xuly);
void insert(int stt,int t_den,int t_xuly);
int
getT_DEN();
void setT_DEN(int a);
int
void

getT_XULY();
setT_XULY(int a);

int
void

getT_CHO();
setT_CHO(int a);

int
void

getFINISH();
setFINISH(int a);

int

getSTT();

};

Stt : s th t ca tin trnh


t_den : thi gian n ca tin trnh
t_xuly : thi gian x l ca tin trnh
t_cho : thi gian ch ca tin trnh
L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

17

finish : thi gian hon thnh ca tin trnh


v cc hng thit lp v ly thng tin
Ready List
Ready list t chc theo danh sch lin kt ch cha s th t ca cc tin
trnh.V vic t chc cc tin trnh vo ra trong ready list tun theo cc gii thut
c dng trn danh sch lin kt.
Code

struct DS
{
int id;
DS *next;
};
typedef DS* list;

Id: cha s th t tin trnh trong Ready List


Input

Input c t chc theo danh sch lin kt n nhm lu gi cc gi tr khi


nhp cc tin trnh v l d liu phc hi li cc tin trnh nhm trnh
cc trng hp sai lnh v mt d liu khi x l.
Code
struct Input
{
int den,xuly;
Input *next;
};
typedef Input* IN;

den: thi gian n ca tin trnh khi nhp liu


x l: thi gian x l ca tin trnh khi nhp liu

L Phng Tin H Phc Vit

18

B mn Mng v Truyn Thng

3.1.2. Thut ton x l chung


Vic ci t thut ton c m phng theo cch lm vic ca CPU v tt cc
thut ton con u theo m hnh thut ton ny.
Tin trnh u danh sch s c u tin x l trc v n chim dng
CPU ti thi im .
Vic i km tho l xem xt thi gian x l cc tin trnh ht cha.
Nu ht th ngha l hon thnh vic x l, ngc li th tip tc x l
theo thut ton.

Xong mi chu k ca CPU ( 1 quantum ) th cp nht li danh

sch loi b cc tin trnh hon thnh hay sp xp hay thm cc tin
trnh mi vo

L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

19

Begin

X l tin
trnh u
danh sch

ng

Kim tra danh


sch rng
Sai
X l theo
thut ton

Cp nht li
danh sch

End

Hnh 3.1.2-1. S thut ton xut chung cho cc gii thut

L Phng Tin H Phc Vit

20

B mn Mng v Truyn Thng

3.2. Thut ton


3.2.1. First In First Out(FIFO)
Begin

Sai

ok
ng

Sai
xc lp thot
ok

xc lp
quantum

ng

finish

Sai
quantum
ng
ng
Tg n

readyList

ng

Np tin trnh

Tng thi gian


ch

X l tin
trnh

Tng quantum

Sai
xc lp thot
quantum
End

Hnh 3.2.1-1.Thut ton FIFO

Code
L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

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
}

L Phng Tin H Phc Vit

22

B mn Mng v Truyn Thng

3.2.2. Round Robin(RR)


Begin

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

Tng thi gian


ch

X l tin
trnh

Tng quantum

Sai
xc lp thot
quantum
End

Hnh 3.2.2-1.Round Robin

L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

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;
}

L Phng Tin H Phc Vit

24

B mn Mng v Truyn Thng

3.2.3. Shortest Job First(SRT)


Begin

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

Tng thi gian


ch

X l tin
trnh

Tng quantum

Sai
xc lp thot
quantum
End

Hnh 3.2.3-1. Shortest Job First


L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

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;
}

L Phng Tin H Phc Vit

26

B mn Mng v Truyn Thng

3.2.4. Shortest Remain Time(SRT)


Begin

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

Hnh 3.2.4-1.Shortest Remain Time

L Phng Tin H Phc Vit

X l tin trnh

Sai

End

Code

ng

Xy dng chng trnh m phng gii thut nh thi CPU

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;
}

L Phng Tin H Phc Vit

28

B mn Mng v Truyn Thng

Chng 4.

XY DNG CHNG TRNH DEMO

4.1. Cc modun chnh


Input: dng nhp d liu
Nhp t file
Nhp t bn phm
Ouput: hin th cc tin trnh nhp
Control: la chn cc gii thut
First In First Out
Round Robin
Shortest Job First
Shortest Remain Time
Result
About: thng ti v chng trnh
Info
Help
Exit: thot khi chng trnh

4.2. Mi trng pht trin


S dng ngn ng VC++ v giao din windows cho thao tc nhp d liu, m
phng c d dng.

4.3. Giao din ca chng trnh


4.3.1. About
Info

L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

29

Hnh 4.3.1-1.Hin th thng tin v n mn hc


Help

Hnh 4.3.1-2.Hin th tr gip cho vic thao tc trn chng trnh

4.3.2. Input
File

L Phng Tin H Phc Vit

30

B mn Mng v Truyn Thng

Hnh 4.3.2-1.Nhp d liu t file


Bn phm

Hnh 4.3.2-2.Nhp d liu t bn phm

L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

31

4.3.3. Output

Hnh 4.3.3-1.Hin th thng tin cc tin trnh nhp

4.3.4. Control
FIFO

Hnh 4.3.4-1.iu khin gii thut FIFO v ty chnh quantum ty


RR
L Phng Tin H Phc Vit

32

B mn Mng v Truyn Thng

Hnh 4.3.4-2.Round Robin

SJF

Hnh 4.3.4-3.Shortest Job First

SRT
L Phng Tin H Phc Vit

Xy dng chng trnh m phng gii thut nh thi CPU

33

Hnh 4.3.4-4.Shortest Remain Time


Result

Hnh 4.3.4-5.Hin th bn so snh gia cc tin trnh v la chn gii thut ti


u nht

4.4. nh gi v nhn xt
Giao din chng trnh bt mt
Cc modun c b tr hp l v gn gn

L Phng Tin H Phc Vit

34

B mn Mng v Truyn Thng

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/

L Phng Tin H Phc Vit

You might also like