Penjadwalan CPU didasarkan pada SO yg
menggunakan prinsip multiprogramming. Dengan cara mengalihkan kerja CPU untuk beberapa proses, maka CPU akan semakin produktif.
Pada multiprogramming, selalu akan terjadi
beberapa proses berjalan dalam suatu
Konsep dasar multiprogramming adalah :
suatu proses akan menggunakan CPU
sampai proses tersebut dalam status wait (mis. meminta I/O) atau selesai.
Pada saat wait, maka CPU akan nganggur.
Untuk mengatasi hal ini, maka CPU
dialihkan ke program lain pada saat suatu proses sedang dalam keadaan wait,
Pada saat CPU nganggur, maka SO harus
menyeleksi proses-proses yg ada di memori utama (ready queue) untuk dieksekusi.
Seleksi ini disebut dengan shortterm scheduler (CPU scheduler).
Scheduler tersebut harus dapat menyeleksi
proses-proses dalam memori utama yg telah siap untuk dieksekusi, dan
Ada 4 keadaan yg menjadi pertimbangan
bagi penjadwalan oleh CPU, yaitu :
1. Pada saat proses berpindah dari
4. Pada saat proses berhenti.
Jika model penjadwalan yg dipilih adalah
keadaan 1 dan 4, maka ini disebut
non-preemptive.
Sebaliknya jika yg digunakan
adalah keadaan 2 dan 3, maka disebut
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).
Preemptive scheduling memiliki kelemahan,
yaitu biaya yg dibutuhkan sangat tinggi.
Antara lain harus selalu dilakukan perbaikan data. Hal ini terjadi jika suatu proses
Dispatcher adalah suatu modul yg akan
memberikan kontrol pada CPU terhadap
penyeleksian proses yg dilakukan selama
short-term scheduling.
Fungsi-fungsi yg terkandung didalam Dispatcher :
◦ Switching context
◦ Switching ke user-mode
◦ Melompat ke lokasi tertentu pada user program
untuk memulai program
Waktu yg diperlukan dispatcher untuk
menghentikan suatu proses dan memulai untuk menjalankan proses yg lainnya disebut dengan
Beberapa kriteria yg digunakan untuk
perbandingan algoritma penjadwalan CPU antara lain :
◦ CPU utilization, diharapkan agar CPU selalu dalam keadaan sibuk. Utilitas CPU dinyatakan dalam
prosentase 0 – 100%. Namun kenyataannya hanya berkisar antara 40-90%.
◦ Turnaround time, banyaknya waktu yg diperlukan untuk mengeksekusi proses, dari mulai menunggu di ready queque, eksekusi oleh CPU, dan
mengerjakan I/O.
◦ Waiting Time, waktu yg diperlukan oleh suatu
proses untuk menunggu di ready queque. Waiting
◦ Response Time, waktu yg dibutuhkan oleh suatu proses dari minta dilayani hingga ada respon
pertama yg menanggapi permintaan tersebut.
◦ Fairness, meyakinkan bahwa tiap-tiap proses akan mendapatkan pembagian waktu
penggunaan CPU secara terbuka (fair).
Selanjutnya kriteria yg akan digunakan
untuk membandingkan algoritma
First-Come-First-Served Scheduling (FCFS)
Shortest Job First Scheduler (SJF)
Priority Scheduling
Round-Robin Scheduling
Multilevel Queue Scheduling
Multilevel Feedback Queue
Proses yg pertama kali meminta jatah
waktu untuk menggunakan CPU akan
dilayani terlebih dahulu. AWT dari algoritma ini cukup besar.
Misalnya ada 3 proses : P1, P2, dan P3 yang
meminta layanan CPU sebagai berikut :
Proses Burst Time (ms)
P1 24
P2 3
Gant chart :
0 24 27 30
Waktu tunggu yang diberikan untuk tiap-tiap proses terlihat pada tabel dibawah ini :
Sehingga AWT = (0+24+27)/3 = 17 ms.
P1 P2 P3
Proses Waiting Time (ms)
P1 0
P2 24
Hal ini akan menjadi sangat berbeda jika
urutan kedatangan proses adalah: P2, P3, baru P1.
0 3 6 30
Waktu tunggu yang diberikan untuk tiap-tiap proses terlihat pada tabel dibawah ini :
Metode FCFS adalah metode yg sangat
sederhana dan mudah diimplementasikan.
Namun metode ini memiliki kelemahan,
yaitu dengan adanya convoy effect, yang akan mengakibatkan membengkaknya AWT jika proses yg dilayani terlebih dahulu
Proses yg memiliki CPU burst paling kecil
akan dilayani terlebih dahulu.
Misalkan ada 4 proses : P1, P2, P3, dan P4
yang meminta layanan CPU sebagai berikut :
Proses Burst Time (ms)
P1 6
P2 8
P3 7
Gant chart :
0 3 9 16 24
Waktu tunggu yang diberikan untuk tiap-tiap proses terlihat pada tabel dibawah ini :
Meskipun algoritma ini optimal, namun pada
kenyataannya sulit diimplementasikan karena sulit untuk mengetahui panjang CPU burst
berikutnya. Namun nilai ini dapat diprediksi.
CPU burst berikutnya biasanya diprediksi
Algoritma SJF adalah suatu kasus khusus dari
priority scheduling. Tiap proses dilengkapi
dengan prioritas. CPU dialokasikan untuk proses yg memiliki prioritas paling tinggi.
Jika beberapa proses memiliki prioritas yang
sama, maka akan digunakan algoritma FCFS.
Contoh: jika ada 5 proses : P1, P2, P3, P4 dan
P5 dengan CPU burst :
Proses Burst Time (ms) Prioritas
P1 10 3
P2 1 1
P3 2 3
P4 1 4
Gant chart :
0 1 6 16 18 19
Waktu tunggu untuk tiap-tiap proses adalah:
Prioritas biasanya menyangkut masalah
waktu, memori yang dibutuhkan,
banyaknya file yang boleh dibuka, dan perbandingan antara rata-rata I/O burst dengan rata-rata CPU burst.
Priority Scheduling bersifat preemptive atau
Konsep dasar dari algoritma ini adalah
menggunakan time sharing. Pada dasarnya algoritma ini sama dengan FCFS, hanya saja bersifat preemptive. Digunakan quantum
time untuk membatasi waktu proses.
Jika suatu proses memiliki CPU burst lebih
kecil dibandingkan dengan quantum time, maka proses tersebut akan melepaskan CPU jika telah selesai bekerja, sehingga CPU
Sebaliknya, jika suatu proses memiliki CPU
burst yang lebih besar dibandingkan dengan quantum-time, maka proses tersebut akan dihentikan sementara jika sudah mencapai quantum-time, dan selanjutnya mengantri kembali pada posisi ekor dari ready queue, CPU kemudian menjalankan proses
berikutnya
Misalkan ada 3 proses : P1, P2, dan P3 yang
meminta layanan CPU. Jika quantum-time sebesar 4 ms, maka :Proses Burst Time (ms)
P1 24
P2 3
Gant chart :
0 4 7 10 14 18 22 26 30
Waktu tunggu tiap-tiap proses :
Sehingga AWT = (6+4+7)/3 = 5,66 ms. Hal 24.
P1 P2 P3 P1 P1 P1 P1 P1
Proses Waiting Time (ms)
P1 0+(10-4) = 6
P2 4