Jumat, 26 Desember 2014

Penjadwalan CPU Dengan Metode "First Come First Served"

  1. Penjadwalan CPU Dengan "First Come First Served".


          Penjadwalan CPU adalah Multi programming sistem operasi dengan men-switch CPU di antara proses. First Come First Served adalah proses yang melakukan request terhadap CPU akan diproses oleh CPU. Yang lebih awal meminta untuk di proses maka dialah yang akan di proses terlebih dahulu, tanpa melihat prioritas datanya ataupun waktu tunggu yang di butuhkan oleh proses tersebut. Implementasinya dengan menggunakan algoritma First In First Out – FIFO. FCFS bersifat non-preemptive yaitu proses yang dikerjakan oleh CPU tidak dapat diinterupsi oleh proses yang lainnya. Dan mempunyai beberapa kelebihan dan kekurangan yaitu:


Kelebihan : 
  • Efisiensi, sangat efisien. 
  • Adil, dalam arti (proses yang datang duluan akan dilayani lebih dulu), tapi dinyatakan tidak adil karena job-job yang perlu waktu lama membuat job-job pendek menunggu. Job-job yang tidak penting dapat membuat job-job penting menunggu lama. 
  • Algoritma yang paling sederhana, dengan skema proses yang meminta CPU mendapat prioritas. 
  • Baik untuk sistem batch yang sangat jarang berinteraksi dengan pemakai. 

Kelemahan :
  • Waiting time rata-ratanya cukup lama. 
  • Terjadi convoy effect dimana seandainya ada sebuah proses yang kecil tetapi mengantri dengan proses yang membutuhkan waktu yang lama mengakibatkan proses tersebut akan lama juga untuk dieksekusi. 
  • Turn around time kurang baik. 
  • Tidak dapat digunakan untuk sistem waktu nyata (real-time applications). 


       2. Source Code Program Dengan Bahasa C++ :

#include
#include
main()
{
int n, ar[100], b[100], i, j, tmp, wt[100], ta[100], time[100];
int totWT=0, totTA=0;
float AvWT, AvTA;
char name[20][20], tmpName[20];
printf(" \n");
printf("\t\t-=[SISTEM OPERASI]=-\n\n");
printf("\t -=[First Come First Served]=-\n");
printf(" \n");
printf("Nama Kelompok : \n");
printf(" \n");
printf("- Rachmad Kurniyanto 1310511012 \n");
printf("- Alief Yusuf Anggoro 1310511001 \n");
printf("- Abi Yoga 1310511021 \n");
printf("- Andhika Ghifari 1310511004 \n");
printf(" \n");
puts("");
printf("Banyak Proses\t= "); scanf("%d", &n);
puts("");
// Masukkan data yang diproses
for(i=0; i fflush(stdin);
printf("Nama Proses\t= "); gets(name[i]);
printf("Arrival time\t= "); scanf("%d", &ar[i]);
printf("Burst time\t= "); scanf("%d", &b[i]);
puts("");
}
// SORTING Data
for(i=0; i for(j=i+1; j if(ar[i]>ar[j]){
//tukar nama
strcpy(tmpName, name[i]);
strcpy(name[i], name[j]);
strcpy(name[j], tmpName);
//tukar arrival time
tmp=ar[i];
ar[i]=ar[j];
ar[j]=tmp;
//tukar burst
tmp=b[i];
b[i]=b[j];
b[j]=tmp;
}
}
time[0]=ar[0];
puts("\n\t.:: Process Table ::.");
puts("===================================================================");
printf("| no | proses\t | time arrival\t | burst |\n");
puts("-------------------------------------------------------------------");
for (i=0; i printf("| %2d | %s\t | \t%d\t | %d\t |\n", i+1, name[i], ar[i], b[i]);
time[i+1]=time[i]+b[i]; //menghitung time pada ganchart
wt[i]=time[i]-ar[i];
ta[i]=time[i+1]-ar[i];
totWT+=wt[i];
totTA+=ta[i];
}
puts("===================================================================");
printf("\tTotal waiting time\t= %d \n", totWT);
printf("\tTurn arround time\t= %d \n", totTA);
puts("\n\t.:: Time Process Table ::.");
puts("===================================================================");
printf("| no | proses\t | waiting time\t | turn arround\t |\n"); puts("-------------------------------------------------------------------");
for(i=0; i printf("| %2d | %s\t | \t%d\t | \t%d\t |\n", i+1, name[i], wt[i], ta[i]);
}
puts("===================================================================");
//untuk Gant Chart
puts("\n");
puts("\t.:: Gant-Chart ::.\n");
for(i=0; i printf(" %s\t ", name[i]);
}
puts("");
for(i=0; i printf("|=========");
}
printf("|\n");
for(i=0; i<=n; i++){
printf(" %d\t ", time[i]);
} printf("//diperoleh dari penjumlahan Burst");
puts("\n");
AvWT=(float)totWT/n; //average waiting time
AvTA=(float)totTA/n; //average turn arround time
printf("\tAverage Waiting Time : %f\n", AvWT);
printf("\tAverage Turn Arround TIme : %f\n", AvTA);
}




          3. ScreenShoot Source Code Program.





Gambar diatas adalah bagian awal program sebelum diproses



Gambar diatas adalah tampilan yang menginput banyaknya proses



Gambar diatas adalah tampilan jika user sudah menginput seluruh proses dan hasil input proses user


*Note



Demikianlah tugas dari kelompok kami mengenai penjadwalan CPU dengan First Come First Served. 

Dan Kami sangat berterima kasih kepada dosen Arya Adhyaksa, S.Si, M.Si yang selama ini telah mengajarkan dan membantu mengenai Program penjadwalan ini. Semoga ilmu yang diajarkan dapat bermanfaat bagi kami semua.

Bagikan

Jangan lewatkan

Penjadwalan CPU Dengan Metode "First Come First Served"
4/ 5
Oleh

Subscribe via email

Suka dengan artikel di atas? Tambahkan email Anda untuk berlangganan.