Penjadwalan CPU adalah pemilihan proses dari antrian ready untuk
dapat dieksekusi. Penjadwalan CPU merupakan konsep dari
multiprogramming, dimana CPU digunakan secara bergantian untuk proses
yang berbeda. Suatu proses terdiri dari dua siklus yaitu Burst I/O dan
Burst CPU yang dilakukan bergantian hingga proses selesai. Penjadwalan
CPU mungkin dijalankan ketika proses:
- running ke waiting time
- running ke ready state
- waiting ke ready state
- terminates
Proses 1 dan 4 adalah proses Non Preemptive, dimana proses tersebut
tidak bisa di- interrupt, sedangkan 2 dan 3 adalah proses Preemptive,
dimana proses boleh di interrupt. Pada saat CPU menganggur, maka sistem operasi harus menyeleksi
proses-proses yang ada di memori utama (ready queue) untuk dieksekusi
dan mengalokasikan CPU untuk salah satu dari proses tersebut. Seleksi
semacam ini disebut dengan shortterm scheduler (CPU scheduler). Komponen
yang lain dalam penjadwalan CPU adalah dispatcher,
Dispatcher adalah suatu modul yang akan memberikan kontrol pada CPU
terhadap penyeleksian proses yang dilakukan selama short-term scheduling
. Waktu yang diperlukan oleh dispatcher untuk menghentikan suatu proses
dan memulai proses yang lain disebut dengan dispatch latency.Jika dalam
suatu proses Burst CPU jauh lebih besar daripada Burst I/O
maka disebut CPU Bound. Demikian juga sebaliknya disebut dengn I/O
Bound.
1. Penjadwalan Preemptive
Penjadwalan Preemptive mempunyai arti kemampuan sistem operasi untuk
memberhentikan sementara proses yang sedang berjalan untuk memberi ruang
kepada proses yang prioritasnya lebih tinggi. Penjadwalan ini bisa saja
termasuk penjadwalan proses atau I/O. Penjadwalan Preemptive
memungkinkan sistem untuk lebih bisa menjamin bahwa setiap proses
mendapat sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat
merespon terhadap event dari luar (contohnya seperti ada data yang
masuk) yang membutuhkan reaksi cepat dari satu atau beberapa proses.
Membuat penjadwalan yang Preemptive mempunyai keuntungan yaitu sistem
lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive.
Dalam waktu-waktu tertentu, proses dapat dikelompokkan ke dalam dua
kategori: proses yang memiliki Burst M/K yang sangat lama disebut I/O
Bound, dan proses yang memiliki Burst CPU yang sangat lama disebut CPU
Bound. Terkadang juga suatu sistem mengalami kondisi yang disebut
busywait, yaitu saat dimana sistem menunggu request input(seperti disk,
keyboard, atau jaringan). Saat busywait tersebut, proses tidak melakukan
sesuatu yang produktif, tetapi tetap memakan resource dari CPU. Dengan
penjadwalan Preemptive, hal tersebut dapat dihindari.
Dengan kata lain, penjadwalan Preemptive melibatkan mekanisme
interupsi yang menyela proses yang sedang berjalan dan memaksa sistem
untuk menentukan proses mana yang akan dieksekusi selanjutnya.
Lama waktu suatu proses diizinkan untuk dieksekusi dalam penjadwalan
Preemptive disebut time slice/quantum. Penjadwalan berjalan setiap satu
satuan time slice untuk memilih proses mana yang akan berjalan
selanjutnya. Bila time slice terlalu pendek maka penjadwal akan memakan
terlalu banyak waktu proses, tetapi bila time slice terlau lama maka
memungkinkan proses untuk tidak dapat merespon terhadap event dari luar
secepat yang diharapkan.
2. Penjadwalan Non Preemptive
Penjadwalan Non Preemptive ialah salah satu jenis penjadwalan dimana
sistem operasi tidak pernah melakukan context switch dari proses yang
sedang berjalan ke proses yang lain. Dengan kata lain, proses yang
sedang berjalan tidak bisa di- interupt.
Penjadwalan Non Preemptive terjadi ketika proses hanya:1. Berjalan dari running state sampai waiting state.
2. Dihentikan.
Ini berarti CPU menjaga proses sampai proses itu pindah ke waiting
state ataupun dihentikan (proses tidak diganggu). Metode ini digunakan
oleh Microsoft Windows 3.1 dan Macintosh. Ini adalah metode yang dapat
digunakan untuk platforms hardware tertentu, karena tidak memerlukan
perangkat keras khusus (misalnya timer yang digunakan untuk meng
interupt pada metode penjadwalan Preemptive).
- Shortest Job First (SJF)
- Round Robin (RR)
Round Robin hampir mirip dengan FCFS akan tetapi terdapat
proses perpindahan antar proses dimana satu proses melakukan interupsi
terhadap proses yang lainnya atau disebut juga dengan preemptive. Proses preemptive dengan menggunakan time quantum atau time slice.
Dengan time slice sebesar 4 ms, penjadwalan yang terjadi adalah sebagai berikut:
P1 mendapatkan kesempatan pada 4 ms (time slice) pertama, karena P1 > time slice maka P1 hanya akan diproses selama time slice, sisa P1 sebesar P1 – time slice akan di preemptive-kan. Selanjutnya penjadwalan akan beralih ke P2, karena P2 < time slice maka P2 diproses hingga selesai, setelah itu penjadwalan beralih ke P3 dan seterusnya.
P1 mendapatkan kesempatan pada 4 ms (time slice) pertama, karena P1 > time slice maka P1 hanya akan diproses selama time slice, sisa P1 sebesar P1 – time slice akan di preemptive-kan. Selanjutnya penjadwalan akan beralih ke P2, karena P2 < time slice maka P2 diproses hingga selesai, setelah itu penjadwalan beralih ke P3 dan seterusnya.
Waiting Time P1 = 0 + (10 – 4) = 6
Waiting Time P2 = 4
Waiting Time P3 = 7
Average Waiting Time = (6 + 4 + 7 )/3 = 5.66 ms
Pada algoritma RR, tidak ada proses yang dikerjakan dalam satu waktu lebih dari time slice yang disediakan. Jika terdapat n proses pada queue dengan time slice
sebesar q, maka setiap proses akan mendapatkan waktu 1/n dengan
masing-masing proses sebesar q .Setiap proses akan menunggu setidaknya
sebanyak (n-1)x q untuk proses selanjutnya. Sebagai contoh terdapat 5
proses dengan time slice sebesar 20 ms maka masing-masing proses akan mendapatkan waktu sebanyak 20 ms setiap 100 ms.
Performance dari RR tergantung pada ukuran time slice. Jika time slice terlalu besar maka RR akan sama atau mendekati performance FCFS. Akan tetapi jika time slice kecil maka muncul problem context switch
yang terlalu banyak, yaitu proses perpindahan dari satu proses ke
proses lain yang akan menimbulkan permasalahan. Hal ini terjadi karena
perbedaan kecepatan processor dan memori, dengan terjadinya perpindahan
yang terlalu sering proses pembacaan CPU ke memori dan sebaliknya akan
membebani sistem.
Tidak ada komentar:
Posting Komentar