PENJADWALAN CPU
1.1 KONSEP DASAR
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 1-1.
Gambar 1.1: siklus CPU I/O Burst
Gambar 1-2 :Histogram waktu CPUburst
Pada saat suatu proses dieksekusi, terdapat banyak CPU burst yangpendek dan terdapat sedikit CPU burst yang panjang. Program yang I/O boundbiasanya sangat pendek CPU burst nya, sedangkan program yang CPU boundkemungkinan CPU burst nya sangat lama. Hal ini dapat digambarkan dengan grafik yang eksponensial atau hiper eksponensial seperti padaGambar 1-2. Oleh karena itu sangat penting pemilihan algoritma penjadwalanCPU.
1.1.1 CPU Scheduler
Pada saat CPU menganggur, maka sistem operasi harus menyeleksi proses- proses yang ada di memori utama (ready queue) untukdieksekusi dan mengalokasikan CPU untuk salah satu dari proses tersebut. Seleksi semacam ini disebut dengan short- term scheduler (CPU scheduler). Keputusan untuk menjadwalkan CPU mengikuti empat keadaan dibawah ini :
1. Apabila proses berpindah dari keadaan running ke waiting;
2. Apabila proses berpindah dari keadaan running 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, apabilayang 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 suatuproses ditinggalkan dan akan segera dikerjakan proses yang lain.
1.1.2 Dispatcher
Dispatcher adalah 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 suatuproses dan memulai untuk menjalankan proses yang lainnya disebut dispatchlatency.
1.2 KRITERIA PENJADWALAN
Algoritma penjadwalan CPU yang berbeda akan memiliki perbedaan properti.Sehingga untuk memilih algoritma ini harus dipertimbangkan dulu properti-properti algoritma tersebut. Ada beberapa kriteria yang digunakan untuk melakukan pembandingan algoritma penjadwalan CPU, antara lain:
1. CPU utilization. Diharapkan agar CPU selalu dalam keadaan sibuk. UtilitasCPU dinyatakan dalam bentuk prosen yaitu 0-100%. Namun dalam kenyataannyahanya berkisar antara 40-90%.
2. Throughput. Adalah banyaknya proses yang selesai dikerjakan dalam satusatuan waktu.
3. Turnaround time. Banyaknya waktu yang diperlukan untuk mengeksekusi proses, dari mulai menunggu untuk meminta tempat di memori utama, menunggu di ready queue, eksekusi oleh CPU, dan mengerjakan I/O.
4. Waiting time. Waktu yang diperlukan oleh suatu proses untuk menunggu di readyqueue. Waiting time ini tidak mempengaruhi eksekusi proses dan penggunaan I/O.
5. Response time. Waktu yang dibutuhkan oleh suatu proses dari minta dilayani hingga ada respon pertama yang menanggapi permintaan tersebut.
6. Fairness. Meyakinkan bahwa tiap-tiap proses akan mendapatkan pembagianwaktu penggunaan CPU secara terbuka (fair).
1.3 ALGORITMA PENJADWALAN
Penjadwalan CPU menyangkut penentuan proses-proses yang ada dalam ready queue yang akan dialokasikan pada CPU. Terdapat beberapa algoritmapenjadwalan CPU seperti dijelaskan pada sub bab di bawah ini.
1.3.1 First-Come First-Served Scheduling (FCFS)
Proses yang pertama kali meminta jatah waktu untuk menggunakan CPU akan dilayani terlebih dahulu. Pada skema ini, proses yang meminta CPU pertama kali akan dialokasikan ke CPU pertama kali.
Misalnya terdapat tiga proses yang dapat dengan urutan P1, P2, dan P3 denganwaktu CPU-burst dalam milidetik yang diberikan sebagai berikut :
Process
|
Burst Time
|
P1
|
24
|
P2
|
3
|
P3
|
3
|
Gant Chart dengan penjadwalan FCFS adalah sebagai berikut :
P1
|
P2
|
P3
|
0 24 27 30
Waktu tunggu untuk P1 adalah 0, P2 adalah 24 dan P3 adalah 27 sehingga rata-rata waktu tunggu adalah (0 + 24 + 27)/3 = 17 milidetik. Sedangkan apabila prosesdatang dengan urutan P2, P3, dan P1, hasil penjadwalan CPU dapat dilihat padagant chart
Waktu tunggu sekarang untuk P1 adalah 6, P2 adalah 0 dan P3 adalah 3 sehinggarata- rata waktu tunggu adalah (6 + 0 + 3)/3 = 3 milidetik. Rata-rata waktu tunggukasus ini jauh lebih baik dibandingkan dengan kasus sebelumnya.
Pada penjadwalan CPU dimungkinkan terjadi Convoy effect apabila proses yang pendek berada pada proses yang panjang.
Pada penjadwalan CPU dimungkinkan terjadi Convoy effect apabila proses yang pendek berada pada proses yang panjang.
Algoritma FCFS termasuk non-preemptive. karena, sekali CPU dialokasikan pada suatu proses, maka proses tersebut tetap akan memakai CPU sampai proses tersebut melepaskannya, yaitu jika proses tersebut berhenti ataumeminta I/O.
1.3.2 Shortest Job First Scheduler (SJF)
Pada penjadwalan SJF, proses yang memiliki CPU burst paling kecil dilayani terlebih dahulu.Terdapat dua skema :
1. Non preemptive, bila CPU diberikan pada proses, maka tidak bisa ditunda sampai CPU burst selesai.
2. Preemptive, jika proses baru datang dengan panjang CPU burst lebihpendek dari sisa waktu proses yang saat itu sedang dieksekusi, proses ini ditundadan diganti dengan proses baru. Skema ini disebut dengan Shortest-Remaining- Time-First (SRTF).
SJF adalah algoritma penjadwalan yang optimal dengan rata-rata waktutunggu yang minimal. Misalnya terdapat empat proses dengan panjang CPU burst dalam milidetik.
Process Arrival Time Burst Time
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
Penjadwalan proses dengan algoritma SJF (non-preemptive)
Waktu tunggu untuk P1 adalah 0, P2 adalah 26, P3 adalah 3 dan P4 adalah 7sehingga rata-rata waktu tunggu adalah (0 + 6 + 3 + 7)/4 = 4 milidetik. SedangkanPenjadwalan
proses dengan algoritma SRTF (preemptive)
Waktu tunggu untuk P1 adalah 9, P2 adalah 1, P3 adalah 0 dan P4 adalah 4sehingga rata-rata waktu tunggu adalah (9 + 1 + 0 + 4)/4 = 3 milidetik.
Meskipun algoritma ini optimal, namun pada kenyataannya sulit untuk diimplementasikan karena sulit untuk mengetahui panjang CPU burst berikutnya.Namun nilai ini dapat diprediksi. CPU burst berikutnya biasanya diprediksi sebagai suatu rata-rata eksponensial yang ditentukan dari CPU burst sebelumnya atau
“Exponential Average”.
Ï„ n +1 = α t0 + (1 − α )Ï„ n
dengan:
Ï„ n +1 = panjang CPU burst yang diperkirakan
Ï„ 0 = panjang CPU burst sebelumnya
Ï„ n = panjang CPU burst yang ke-n (yang sedang berlangsung)
α = ukuran pembanding antara τ n +1 dengan τ n (0 sampai 1) Grafikhasil prediksi CPU burst dapat dilihat pada Gambar 1-3.
Gambar 1-3 : Prediksi panjang CPU burstberikutnya
Sebagai contoh, jika α = 0,5, dan:
CPU burst (Ï„ n ) = 6 4 6 4 13 13 13 . . .
Ï„ n = 10 8 6 6 5 9 11 12 . . .
Pada awalnya Ï„ 0 = 6 dan Ï„ n = 10, sehingga :
Ï„ 2 = 0,5 * 6 + (1 - 0,5) * 10 = 8
Nilai yang dapat digunakan untuk mencari Ï„ 3
Ï„ 3 = 0,5 * 4 + (1 - 0,5) * 8 = 6
1.3.3 Priority Scheduling
Algoritma SJF adalah suatu kasus khusus dari penjadwalan berprioritas. Tiap- tiap proses dilengkapi dengan nomor prioritas (integer). CPU dialokasikan untuk prosesyang memiliki prioritas paling tinggi (nilai integer terkecil biasanya merupakan prioritas terbesar). Jika beberapa proses memiliki prioritas yang sama, maka akan digunakan algoritma FCFS. Penjadwalan berprioritas terdiri dari dua skema yaitu nonpreemptive dan preemptive. Jika ada proses P1 yang datang pada saat P0 sedangberjalan, maka akan dilihat prioritas P1. Seandainya prioritas P1 lebih besar dibandingdengan prioritas P0, maka pada non-preemptive, algoritma tetap akan menyelesaikan P0 sampai habis CPU burst-nya, dan meletakkan P1 pada posisi head queue.
1.3.4 Round-Robin Scheduling
Konsep dasar dari algoritma ini adalah dengan menggunakan time-sharing. Pada dasarnya algoritma ini sama dengan FCFS, hanya saja bersifat preemptive. Setiap proses mendapatkan waktu CPU yang disebut dengan waktu quantum (quantum time)untuk membatasi waktu proses, biasanya 1-100 milidetik. Setelah waktu habis, proses ditunda dan ditambahkan pada ready queue.
Jika suatu proses memiliki CPU burst lebih kecil dibandingkan dengan waktu quantum, maka proses tersebut akan melepaskan CPU jika telah selesai bekerja, sehingga CPU dapat segera digunakan oleh proses selanjutnya. Sebaliknya, jika suatu proses memiliki CPU burst yang lebih besar dibandingkan dengan waktu quantum,maka proses tersebut akan dihentikan sementara jika sudah mencapai waktuquantum, dan selanjutnya mengantri kembali pada posisi ekor dari ready queue, CPUkemudian menjalankan proses berikutnya.
Jika terdapat n proses pada ready queue dan waktu quantum q, makasetiap proses mendapatkan 1/n dari waktu CPU paling banyak q unit waktu pada sekali penjadwalan CPU. Tidak ada proses yang menunggu lebih dari (n-1)q unitwaktu. Performansi algoritma round robin dapat dijelaskan sebagai berikut, jika q besar,maka yang digunakan adalah algoritma FIFO, tetapi jika q kecil maka sering terjadicontext
switch.
Misalkan ada 3 proses: P1, P2, dan P3 yang meminta pelayanan CPU dengan
quantum-time sebesar 4 milidetik.
Process Burst Time
P1 24
P2 3
P3 3
Penjadwalan proses dengan algoritma round robin dapat dilihat pada gant chart berikut :
P1
|
P2
|
P3
|
P1
|
P1
|
P1
|
P1
|
P1
|
0 4 7 10 14 18 22 26 30
Waktu tunggu untuk P1 adalah 6, P2 adalah 4, dan P3 adalah 7 sehingga rata-ratawaktu tunggu adalah (6 + 4 + 7)/3 = 5.66 milidetik.
Algoritma Round-Robin ini di satu sisi memiliki keuntungan, yaitu adanya keseragaman waktu. Namun di sisi lain, algoritma ini akan terlalu sering melakukan switching seperti yang terlihat pada Gambar 1-4. Semakin besar quantum-timenya maka
switching yang terjadi akan semakin sedikit.
Gambar 1-4 : Menunjukkan waktu kuantum yang lebih kecil meningkatkan context switch
Waktu turnaround juga tergantung ukuran waktu quantum. Seperti padaGambar 1-5, rata-rata waktu turnaround tidak meningkat bila waktu quantum dinaikkan.Secara umum, rata-rata waktu turnaround dapat ditingkatkan jika banyak prosesmenyelesaikan CPU burst berikutnya sebagai satu waktu quantum. Sebagai contoh, terdapat tiga proses masing-masing 10 unit waktu dan waktu quantum 1unit waktu, rata-rata waktu turnaround adalah 29. Jika waktu quantum 10,sebaliknya, rata-rata waktu turnaround turun menjadi 20.