Pada sistem multiprogramming, selalu akan terjadi beberapa proses berjalan dalam suatu waktu. Sedangkan pada uniprogramming hal ini tidak akan terjadi, karena hanya ada satu proses yang berjalan pada saat tertentu. Sistem multiprogramming diperlukan untuk memaksimalkan utilitas CPU.
Pada saat proses dijalankan terjadi siklus eksekusi CPU dan menunggu I/O yang disebut dengan siklus CPU-I/O burst. Eksekusi proses dimulai dengan CPU burst dan dilanjutkan dengan I/O burst, diikuti CPU burst lain, kemudian I/O burst lain dan seterusnya seperti pada Gambar
Pada saat suatu proses dieksekusi, terdapat banyak CPU burst yang pendek dan terdapat sedikit CPU burst yang panjang.Program yang I/O bound biasanya sangat pendek CPU burst nya, sedangkan program yang CPU bound kemungkinan CPU burstnya sangan lama. Hal ini dapat digambarkan dengan grafik yang eksponensial atau hiper eksponensial seperti pada Gambar 4-2. Oleh karena itu sangat penting pemilihanalgoritma penjadwalan CPU.
Pada saat CPU menganggur, maka sistem
operasi yang harus menyeleksi proses-proses yang ada di memori utama(rady queue),untuk
di eksekusi dan mengalokasikan CPU untuk salah satu dari proses
tersebut,Seleksi semacam ini di sebut dengan short term scheduler(CPU
scheduler).
1.
Apabila proses berpindah dari keadaan ruuning ke waiting
2.
Apabila proses berpindah dari keadaan ruuning ke ready
3.
Apabila proses berpindah dari keadaan waiting ke ready
4.
Apabila proses berhenti
Apabila
model penjadwalan yang dipilih menggunakan keadaan 1 dan 4, maka penjadwakan
semacam ini disebut non-peemptive. Sebaliknya, apabila yang digunakan adalah
keadaan 2 dan 3, maka disebut dengan preemptive.
Pada
non-preemptive, jika suatu proses sedang menggunakan CPU, maka proses tersebut
akan tetap membawa CPU sampai proses tersebut melepaskannya (berhenti atau
dalam keadaan waiting). Preemptivescheduling memiliki kelemahan, yaitu biaya
yang dibutuhkan sangat tinggi. Antara lain, harus selalu dilakukan perbaikan
data. hal ini terjadi jika suatu proses ditinggalkan dan akan segera dikerjakan
proses yang lain.
Dispatcher
Dispatcheradalah suatu modul yang akan
memberikan kontrol pada CPU terhadap penyeleksian proses yang dilakukan selama
short-term scheduling. Fungsi-fungsi yang terkandung di dalam-nya meliputi:
1. Switching context;
2. Switching ke user-mode;
3. Melompat ke lokasi tertentu pada user
program untuk memulai program.
Waktu yang diperlukan oleh dispatcher untuk
menghentikan suatu proses dan memulai untuk menjalankan proses yang lainnya
disebut dispatch latency.
A. KRITERIA PENJADWALAN
Algoritma
penjadwalan CPU yang berbeda akan memiliki perbedaan properti,sehingg untuk
memiliki algoritma ini harus di pertimbangkan duluh properti-properti algoritma
tersebut.
1.
CPU utilization: Diharapkan agar CPU selalu dalam keadaan
sibuk
2.
Throughput: Throughput adalah banyaknya proses yang selesai
di kerjakan dalam satu satuan waktu
3.
Turnaround time: Banyaknya waktu yang di perlukan untuk
mengeskusi proses,dari mulai menunggu untuk memerintah tempat di memori
utama,menunggu di ready queue,eksekusi oleh CPU,dan mengerjakan I/O samapi
semua proses-proses tersebut diselesaikan.
4.
Waiting time: Waktu yang di perlukan oleh suatu proses untuk
menunggu di ready queue
5.
Response time: Waktu yang di butuhkan oleh suatu proses dari
minta di layani hingga ada respont pertama yang menanggapi permintaan tersebut
6.
Fairness.
Meyakinkan bahwa tiap-tiap proses akan mendapatkan pembagian waktu penggunaan
CPU secara terbuka (fair).
B. STRATEGI PENJADWALAN
Terdapat dua
strategi penjadwalan, yaitu:
1. Penjadwalan
nonpreemptive (run – to – completion)
2. Penjadwalan preemptive
Penjadwalan Nonpreemptive
Begitu proses diberi jatah waktu pemroses maka pemroses tidak dapat diambil alih oleh proses lain sampai proses itu selesai.
Penjadwalan Preemptive
Saat proses diberi jatah waktu pemroses maka pemroses dapat diambil alih proses lain sehingga proses disela sebelum selesai dan harus dilanjutkan menunggu jatah waktu pemroses tiba kembali pada proses itu.
Begitu proses diberi jatah waktu pemroses maka pemroses tidak dapat diambil alih oleh proses lain sampai proses itu selesai.
Penjadwalan Preemptive
Saat proses diberi jatah waktu pemroses maka pemroses dapat diambil alih proses lain sehingga proses disela sebelum selesai dan harus dilanjutkan menunggu jatah waktu pemroses tiba kembali pada proses itu.
Penjadwalan
preemptive berguna pada sistem dimana proses-proses yang mendapat perhatian
tanggapan pemroses secara cepat. Misalnya :
-
Pada sistem waktu
nyata, kehilangan interupsi (yaitu interupsi tidak segera dilayani) dapat
berakibat fatal.
-
Pada sistem
interaktif/time-sharing, penjadwalan preemptive penting agar dapat
menjamin waktu tanggap yang memadai.
Penjadwalan preemptive bagus, tapi tidak
tanpa ongkos. Perlaihan proses (yaitu proses beralih ke proses lain) memerlukan
overhead (karena banyak tabel yang dikelola). Agar preemptive efektif, banyak
proses harus berada di memori utama sehingga proses-proses tersebut dapat
segera running begitu diperlukan. Menyimpan banyak proses tak running
benar-benar di memori merupakan suatu overhead tersendiri.
C. ALGORITMA PENJADWALAN
Jenis-jenis algoritma penjadwalan adalah sebagai berikut :
1.
Nonpreemptive,
menggunakan konsep :
a.
FIFO (First In First
Out) atau FCFS (First Come First Serve)
b.
SJF (Shortest Job First)
c.
HRN (Highest Ratio Next)
d.
MFQ (Multiple Feedback Queues)
2.
Preemptive, menggunakan
konsep :
a.
RR (Round Robin)
b.
SRF (Shortest Remaining
First)
c.
PS (Priority
Schedulling)
d.
GS (Guaranteed
Schedulling)
Klasifikasi lain selain berdasarkan dapat/tidaknya suatu proses diambil
secara paksa adalah klasifikasi berdasarkan adanya prioritas di proses-proses,
yaitu :
1.
Algoritma penjadwalan
tanpa berprioritas.
2.
Algoritma penjadwalan
berprioritas, terdiri dari :
a.
Berprioritas static
b.
Berprioritas dinamis