Pertemuan 3
Di pertemuan kali ini, yang kita materi yang kita pelajarin masih seputaran process&thread, tapi sekarang focus kita lebih ke tentang process scheduling. Kayak yang kita, komputer bisa ngejalanin lebih dari 1 proses di waktu yang sama, artinya komputer bakal mengalokasikan resourcenya seoptimal mungkin supaya proses-proses yang ada tetep bisa jalan dengan baik. Nah supaya proses-proses yang banyak ntu bisa optimal, perlu ada metode penjadwalan proses-proses tersebut. Nah disesi ini kita ngebahas soal metode-metodenya….
- First Come First Served (FCFS)
Di metode ini, proses-proses dijadwalin sesuai sama urutan masuknya, siapa yang masuk duluan bakalan dijalanin duluan. Contohnya begini nih:
Proses | Burst Time |
P1 | 24 |
P2 | 3 |
P3 | 3 |
Jadi berdasarkan metode FCFS, proses yang bakal dijalanin duluan adalah P1, baru kemudian P2, dan terakhirnya P3. Kalo dibikin dalam bentuk diagram process time jadinya begini:
P1 | P2 | P3 |
0 24 27 30
Cara baca diagram process time (PT) diatas kira-kira begini: P1 dijalankan duluan, jadi dari detik ke-0 sampe ke-24 komputer bakal jalanin P1, abis P1 kelar dijalanin, komputer bakal jalanin P2 selama 3 detik dari detik ke-24 sampe detik ke-27, baru habis itu komputer jalanin P3 dari detik ke-27 sampe 30. Jadi buat jalanin proses-proses tersebut komputer butuh waktu PT1 + PT2 + PT3 = 30 detik.
Selain diagram PT, di scheduling ada 1 diagram lagi, namanya diagram waiting time (WT). Nah kalo yang ini ngegambarin waktu tunggu setiap proses sampe akhirnya proses tersebut dijalanin. Kalo buat contoh diatas, diagram WT-nya kira-kira begini :
P2 | P3 | P1 |
0 3 6 30
Cara baca diagram WT diatas kira-kira begini: Pertama, kita anggap P1 langsung dijalanin dan udah kelar, jadi WT1 = 0. Abis P1 kelar, giliran P2 dijalanin. Karena eksekusi P2 butuh waktu 3 detik, jadi P3 butuh waktu 3 detik buat nunggu P2, jadi WT2 = 3 detik. Kalo P1 mau dijalanin lagi, dia perlu nunggu P3 selese dijalanin dulu, yaitu selama 3 detik. Jadi WT3 = 3 detik (di diagram ditulis 6 soalnya ditambahin lagi sama 3 detiknya WT2).
Kelebihannya FCFS adalah metode ini gampang dimengerti dan (katanya) gampang buat dibikin programnya, tapi kekurangannya adalah metode ini ga bisa ngasih prioritas buat proses-proses yang bakal dijalanin, jadi bisa aja proses yang waktu eksekusinya relative sebentar justru harus nunggu proses yang eksekusinya lebih lama.
- Shortest Job First (SJF)
Metode ini relative lebih pinter dibandingin sama metode FCFS. Sesuai sama namanya, metode ini bakal ngurutin proses-proses yang bakal dijalanin dari yang waktu prosesnya paling sebentar dulu, sebelon proses-prosesnya dijalankan. Kita pake contoh yang ada di poin 1 ya….
Proses | Burst Time |
P1 | 24 |
P2 | 3 |
P3 | 3 |
Nah, di metode SJF, komputer bakal ngurutin proses-proses berdasarkan waktu eksekusinya, kalo ada beberapa proses yang waktu eksekusinya sama, maka bakal didahulukan yang masuk duluan. Jadi kalo dari contoh diatas urutan prosesnya bakal jadi begini:
Proses | Burst Time |
P2 | 3 |
P3 | 3 |
P1 | 24 |
Kalo dibikin dalam bentuk diagram PT, hasilnya bakalan jadi begini….
P2 | P3 | P1 |
0 3 6 30
Diagram WT-nya bakalan jadi begini….
P3 | P1 | P2 |
0 3 27 30
- Shortest Remaining Time First (SRTF)
Sebenernya metode ini masih pengembangan dari SJF, cuma disini udah lebih canggih lagi, soalnya dia bakalan ngurutin eksekusi proses bukan cuma berdasarkan waktu prosesnya, tapi juga berdasarkan sisa waktu eksekusi proses tersebut. Jadi setiap ada proses baru yang di-request, komputer bakal bandingin sisa waktu proses yang lagi jalan sama yang baru masuk: kalo ternyata proses yang baru itu lebih singkat, proses yang sekarang lagi jalan bakal di-suspend (ditunda). Supaya lebih jelas kita pake contoh ini yaa….
Proses | Arrival Time | Burst Time |
P1 | 0 | 8 |
P2 | 1 | 4 |
P3 | 2 | 9 |
P4 | 3 | 5 |
Jadi dari table diatas, kita tahu kalo ada 4 proses yang bakal dijalankan sama komputer, yaitu P1, P2, P3, sama P4, dimana tiap-tiap proses ini bakal diba dalam waktu yang beda-beda. Waktu detik ke-0, Cuma ada proses P1 yang siap dijalankan, jadi P1 bakal dijalankan. Masuk detik ke-1, masuk proses P2. Disini berarti ada 2 proses yang bakal dibandingin, yaitu P1 (sisa 7 detik) sama P2 (selama 4 detik). Nah karena P2 punya sisa waktu eksekusi yang lebih pendek, jadi P1 bakal disuspend dulu, dan komputer bakal jalanin P2.
Masuk detik ke-2, masuk lagi proses P3. Berarti sekarang komputer punya 3 proses buat dibandingin, yaitu P1 (sisa 7 detik), P2 (sisa 3 detik), sama P3 (selama 9 detik). Karena P2 punya sisa waktu eksekusi yang masih paling pendek, maka P2 tetep lanjut.
Masuk detik ke-3, masuk lagi proses P4. Sekarang kita punya 4 proses buat dibandingin, yaitu P1 (sisa 7 detik), P2 (sisa 2 detik), P3 (selama 9 detik), sama P4 (selama 5 detik). Karena P2 masih paling pendek sisa waktu eksekusinya, jadi P2 tetep dilanjutin eksekusinya.
Di detik ke-5, eksekusi P2 udah selesai. Sekarang masih ada sisa 3 proses lagi buat dijalanin, yaitu P1 (sisa 7 detik), P3 (selama 9 detik), sama P4 (selama 5 detik). Karena P4 punya sisa waktu eksekusi yang paling pendek, jadi P4 bakalan dijalanin duluan.
Di detik ke-10, eksekusi P4 udah selesai. Sekarang tinggal 2 proses lagi yang perlu dijalanin: P1 (sisa 7 detik) sama P3 (selama 9 detik). Karena P1 punya sisa waktu yang lebih pendek, maka P1 bakal dijalanin duluan. Baru setelah P1 selesai, P3 bakal dijalanin. Jadi total waktu yang diperluin buat ngejalanin ke-4 proses diatas adalah 8+4+9+5 = 26 detik.
Kalo dalam bentuk diagram PT, hasil soal diatas bakalan jadi begini:
P1 | P2 | P4 | P1 | P3 |
0 1 5 10 17 26
- Priority Scheduling
Di metode ini, proses-proses yang masuk punya prioritasnya masing-masing. Buat nentuin proses mana yang dijalanin duluan, kita tinggal liat aja dari prioritynya. Proses yang bakal dijalanin duluan adalah proses yang prioritynya paling kecil. Kalo ada beberapa proses yang prioritynya sama, proses yang waktu eksekusinya paling lama bakal didahuluin.
Buat contoh kita pake kasus ini:
Proses | Priority | Burst Time |
P1 | 1 | 6 |
P2 | 2 | 3 |
P3 | 1 | 10 |
Nah buat contoh diatas, pertama-tama kita perlu ngurutin proses-proses ditas dari yang prioritynya terkecil. Dari yang kita liat, jelas kalo P2 bakal dijalanin terakhir, soalnya prioritasnya paling gede (2). Nah masalahnya, mana diantara P1 sama P3 yang harus dijalanin duluan? Sesuai aturan yang ditulis diatas, proses yang waktu eksekusinya lebih lama bakal dijalanin duluan. Jadi urutan eksekusinya adalah P3 > P1 > P2. Kalo digambar diagram PT-nya bakalan jadi begini
P3 | P1 | P2 |
0 10 13 19
- Round Robin
Ini metode terakhir yang kita bahas di sesi kemarin. Kalo dimetode ini, prinsipnya kayak orang lagi giliran ngeronda kampung. Jadi setiap proses bakalan dijalanin selama waktu tertentu (disebutnya kuantum), dimana setiap proses bakal memiliki alokasi waktu dalam kuantum-kuantum tersebut. Misalnya kita ambil contoh begini…
Proses | Burst Time |
P1 | 3 |
P2 | 4 |
P3 | 6 |
P4 | 2 |
P5 | 1 |
Kita anggap kuantum di kasus di atas = 2, berarti alokasi waktu buat setiap proses dibagi dalam blok-blok yang masa aktifnya masing-masing 2 detik. Maka hasilnya bakalan jadi begini:
P1 | P1 | P2 | P2 | P3 | P3 | P3 | P4 | P5 |
0 2 4 6 8 10 12 14 16 18
Kalo diitung-itung, mustinya total waktu proses buat P1 sampe P5 = 3+4+6+2+1 detik = 16 detik, tapi kenapa di diagram diatas malah butuh waktu 18 detik? Jawabannya adalah soalnya dalam metode round robin, setiap blok udah pasti dialokasikan untuk 1 proses (gabisa ada 2 proses dalam 1 blok), jadi walopun P2 sama P5 waktu prosesnya ganjil (blok kedua P1 sama bloknya P5 masih punya space buat diisi sama proses lain) tetep aja blok tersebut ga dipake buat ngisi space lain. Bisa dibilang ini salah satu bedanya metode Round Robin dibandingin sama metode-metode yang lainnya.
Nah disini gw mau post juga soal latihan yang dikasih di pertemuan ini sama ko Sky….
Diketahui table seperti berikut:
Proses | Arrival Time | Burst Time |
P1 | 0 | 1 |
P2 | 1 | 12 |
P3 | 2 | 7 |
P4 | 3 | 15 |
Buatlah diagram PT dan WT (kecuali untuk SRTF) diatas jika penjadwalannya dilakukan dengan metode FCFS, SJF, dan SRTF!
Pertama, kita kerjain pake metode FCFS ya. Sesuai sama yang udah dibahas diatas, kalo pake metode ini, penjadwalannya dilakuin berdasarkan sama urutan masuknya proses-proses ini, Jadi urutannya P1, P2, P3, P4. Kalo dibikin diagram PT-nya jadi begini:
P1 | P2 | P3 | P4 |
0 1 13 20 35
Dari data diatas kita bisa bikin diagram WT-nya kayak dibawah ini:
P2 | P3 | P4 | P1 |
0 12 19 34 35
Nah, sekarang kita bikin pake cara SJF. Kalo pake cara ini, berarti kita perlu ngurutin data di table atas sesuai burst timenya (ascending). Jadi urutannya begini:
Proses | Arrival Time | Burst Time |
P1 | 0 | 1 |
P3 | 2 | 7 |
P2 | 1 | 12 |
P4 | 3 | 15 |
Dari data diatas, diagram PT-nya begini:
P1 | P3 | P2 | P4 |
0 1 8 20 35
Dan diagram WT-nya begini:
P3 | P2 | P4 | P1 |
0 7 19 34 35
Terakhir, kita coba kerjain soal ini pake metode SRTF. Dari table kita tau kalo:
- Waktu detik ke-0, cuma ada P1 yang diterima, jadi kita jalanin P1.
- Waktu detik ke-1, P1 selesai dijalanin dan P2 masuk, jadi kita jalanin P2.
- Waktu detik ke-2, masuk P3. Ternyata sisa waktu yang dibutuhin buat jalanin P3 (7 detik) lebih kecil daripada P2 (11 detik), jadi kita jalanin P3 dulu.
- Waktu detik ke-3, masuk P4. Kalo dibandingin, sisa waktu P3 (6 detik) masih paling kecll dibandingin sama P2 (11 detik) ato P4 (15 detik), jadi P3 tetep dilanjutin.
- Waktu detik ke-9, P3 selesai. Proses yang masih nunggu ada P2 (sisa 11 detik) sama P3 (15 detik). Karena sisa waktu P2 lebih sedikit jadi kita jalanin P2 dulu.
- Waktu detik ke-20, P2 selesai. Karena yang masih nunggu cuma P4, jadi kita jalanin P4.
Dari data diatas, kita bisa bikin diagram PT-nya:
P1 | P2 | P3 | P2 | P4 |
0 1 2 9 20 35
Selaen latihan diatas, kita juga diminta nampilin kodingan C buat FCFS :
#include<stdio.h>
#include<conio.h>
#include<process.h>
void main()
{
char p[10][5];
int tot=0,wt[10],i,n;
float avg=0;
clrscr();
printf(“enter no of processes:”);
scanf(“%d”,&n);
for(i=0;i<n;i++)
{
printf(“enter process%d name:\n“,i+1);
scanf(“%s”,&p[i]);
printf(“enter process time”);
scanf(“%d”,&pt[i]);
}
wt[0]=0;
for(i=1;i<n;i++)
{
wt[i]=wt[i-1]+et[i-1];
tot=tot+wt[i];
}
BINUS (www.binus.ac.id) | www.skyconnectiva.com