You are on page 1of 8

Bi tp ln mn h iu hnh: Phn th hin cc thut ton lp lch cho CPU I.

Gi thiu: Ging Vin: Nguyn Thanh Hi Danh sch thnh vin thc hin nhm 2: 1.m Minh Dng 2.Nguyn B Dng 3.Nguyn Vn Ho 4.H Mnh Linh 5.Lu Vit Thng 6.Ng Vn Tun II. Ni dung: Th hin kt qu qu cc thut ton lp lch cho cpu bng cch v s Grant v tnh thi gian ch i trung bnh i vi mi thut ton III. Cc thut ton: 1.First Come First Served (FCFS) 2.Shortest Job First (SJF) 3.Shortest Remain Time (SRT) 4.Round Robin (RR) Yu cu ca thut ton: 1. First Come First Served (FCFS) - i vi thut ton ny,th t thc hin u tin theo thi gian xut hin. Tin trnh no xut hin trc th thc hin trc. 2.Shortest Job First (SJF) - i vi thut ton ny, th t thc hin u tin theo thi gian thc hin cng vic. Tin trnh no c thi gian lm vic vi CPU nh nht th thc hin trc. 3.Shortest Remain Time (SRT) - i vi thut ton ny, th t thc hin u tin theo thi gian thc hin cn li. Tin trnh no c thi gian thc hin cn li nh nht th thc hin trc 4.Round Robin (RR) - i vi thut ton ny qu trnh thc hin s phn theo lng t thi gian q. Cc tin trnh c a vo mt hng i v ch c thc hin. Theo thi gian xut hin, thc hin tin

trnh vi mt khong thi gian q, nu tin trnh khng thc hin xong vi khong thi gian q n s b a xung cui hng i. Trong khi n ang thc hin, nu c tin trnh no xut hin s c a vo u hng i. IV. Thit k gii thut: V cu trc d liu: Dng cc mng mt chiu lu tr thng tin v tin trnh. - u vo: Mng tentt: lu tn cc tin trnh Mng txh: thi gian xut hin ca cc tin trnh Mng tth: thi gian thc hin ca cc tin trnh - u ra Mng ten: lu tn cc tin trnh trong cc ca s Grant Mng moctg:lu cc mc thi gian trong s Grant m: s cn v V d c c s Grant nh sau:

Th u ra cn c mng ten v moctg nh sau: ten[0]=4, ten[1]=2, ten[2]=-99, ten[3]=4, ten[4]=1,ten[5]=3, ten[6]=2; moctg[0]=0, moctg[1]=3, moctg[2]=6, moctg[3]=11, moctg[4]=14, moctg[5]=20, moctg[6]=21, moctg[7]=25; Sau tin hnh v s Grant theo hai mng trn. Thut ton: Trc khi thc hin cc thut ton th cc tin trnh, thi gian xut hin v thi gian thc hin tng ng c sp sp tng dn theo thi gian xut hin. 1. FCFS: FCFS { for(i=0;i<n;i++) ten[i]=tentt[i]; moctg[0]=0;

d2=d1=0; //Dem so tien trinh xuat hien va moc dang xet while(d2<n) //Khi con tien trinh chua xuat hien { if(moctg[d1]]<txh[i]) { moctg[m+1]=txh[i]; chn mt trng vo v tr m trong mng tn; m++; } else { moctg[m+1]=moctg[m]+tth[i]; d2++; } d1++; } } 2. SJF: thuchienSJF() { { if(so>0 || xh<n) { Lap hang doi; Sap xep lai hang doi theo thoi gian thuc hien; if(so==0) //Thuc hien khi so phan tu hang doi bang 0 { ten[m]=-99; moctg[m+1]=txh[xh]; m++; //tao mot o trong } else //Thuc hien khi so pha tu hang doi khac 0 { if(so>0) { Dua phan tu o dau hang doi vao thuc hien; m++; for(int i=0;i<n;i++) //KT xem co tien trinh nao chen vao khong

{ { Neu co tien chen vao -> dung tien trinh dang thuc hien } Neu khong co tien trinh ngat -> thuc hien xong tt dang th -> loai bo khoi hang doi } } if(so>0 || xh<n) //Neu hang doi con phan tu hoac con co phan tu chua xuat hien thuchienSJF(); //Thuc hien lai voi hang doi moi theo de quy } } //HAM THUC HIEN THUAT TOAN SJF SJF() { m=0; moctg[0]=0; //Gan moc thoi gian dau tien bang 0 for(int i=0;i<n;i++) //Gan moi tien trinh deu o trang thai chua xuat hien trong hang doi daxh[i]=0; //Goi ham thuc hien cua SJF thuchienSJF(); } 3. SRT: thuchienSRT() { { if(so>0 || xh<n) { Lap hang doi; Sap xep lai hang doi theo thoi gian thuc hien; if(so==0) //Thuc hien khi so phan tu hang doi bang 0

{ ten[m]=-99; moctg[m+1]=txh[xh]; m++; //tao mot o trong } else //Thuc hien khi so pha tu hang doi khac 0 { if(so>0) { Dua phan tu o dau hang doi vao thuc hien; m++; for(int i=0;i<n;i++) //KT xem co tien trinh nao chen vao khong { { Neu co tien chen vao -> dung tien trinh dang thuc hien } Neu khong co tien trinh ngat -> thuc hien xong tt dang th -> loai bo khoi hang doi } } if(so>0 || xh<n) //Neu hang doi con phan tu hoac con co phan tu chua xuat hien thuchienSRT(); //Thuc hien lai voi hang doi moi theo de quy } } //HAM THUC HIEN THUAT TOAN SRT SRT() { m=0; moctg[0]=0; //Gan moc thoi gian dau tien bang 0 for(int i=0;i<n;i++) //Gan moi tien trinh deu o trang thai chua xuat hien trong hang doi daxh[i]=0; //Goi ham thuc hien cua SRT

thuchienSRT(); } 4. RR: //Ham thuc hien cua RR thuchienRR() { if(so>0 || xh<n) //Neu hang doi con phan tu hoac con tien trinh chua xuat hien { if(so==0 && xh<n) //Neu so phan tu hang doi bang 0 { dua phan tu xuat hien som nhat trong ds cac phan tu chua xh (tuc la daxh=0) vao hang doi; tao mot o trong trong mang ten; if(so>0 || xh<n) //Thuc hien voi hang doi vua lap duoc thuchienRR(); } if(so>0) // Neu so phan tu hang doi >0, dua phan tu dau hang doi vao thuc hien { Neu thoi gian thuc hien con lai cua no <=q ->thuc hien xong Neu t thuc hien con lai >q -> dua no ve cuoi hang doi } for(int i=0;i<n;i++) Kiem tra neu co tien trinh xuat hien khi tien trinh cu dang thuc hien thi dua tt moi vao vi tri dau tien cua hang doi; if(so>0 || xh<n) //Thuc hien voi hang doi hien co thuchienRR(); } } //HAM THUC HIEN THUAT TOAN RR

RR() { Nhap luong tu thoi gian q; lap hang doi dau tien tai moc thoi gian bang 0; thuchienRR(); } 5. VESODOGRANT u vo: s cn v m, mng tn v mc thi gian trong s Grant. vesodogrant() { int ax,ay,bx,by,rong=40; //Toa do cac o vuong can ve int d=0,i=0,j=0; //d:So o can ve; i:Ve o theo hang; j:Xuong dong moi khi het hang char *s; while(d<m) //Lap trong khi chua ve het { bx=30+210+i*rong; if(bx>620) //Neu so o vuong khong the chua het tren mot hang->xuong hang { i=0;j++;} ax=210+i*rong; ay=120+5+j*40; bx=210+rong+i*rong; by=120+5+20+j*40; //Tinh toa do cac o vuong rectangle(ax,ay,bx,by); //Ve o vuong itoa(ten[d],s,10); outtextxy((ax+bx+textwidth("P"))/2,(ay+by)/2,s); //Xuat cac ten tien trinh outtextxy((ax+bx+textwidth("P"))/2-textwidth(s)/2, (ay+by)/2,"P"); itoa(moctg[d],s,10); outtextxy(ax,by+3,s); //Xuat cac moc thoi gian if(i==360/rong) { itoa(moctg[d+1],s,10); outtextxy(bx,by+3,s); }

if(ten[d]==-99) //Tao o trong {setfillstyle(0,0); bar(ax+3,ay+3,bx-3,by-3);} d++; i++; //Dem tong so o da ve } itoa(moctg[d],s,10); outtextxy(bx,by+3,s); } 6. TINH THOI GIAN CHO DOI TRUNG BINH Lap mot danh sach chua cac tien trinh da tim duocthoi gian ket thuc TGCDTB() { while(d<=m+1 && i>=0) { if(!chuacomattrongdanhsach()) { Thoi gian ket thuc[d]=moctg[i+1]; d++; duavaodanhsach; } i--; } Sap lai mang thoi gian ket thuc theo dung tentt; Tinh thoi gian cho doi=tg ket thuc-(tg xuat hien + tg thuc hien); Tinh tong tho gian cho; Thoi gian cho doi trung binh=(tong thoi gian cho)/(so tien trinh); }

You might also like