- 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
- Untuk melihat Source Code Program di Google Code
- Untuk mendownload Program di MediaFire
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
Penjadwalan CPU Dengan Metode "First Come First Served"
4/
5
Oleh
dheside
