Penjadwalan merupakan salah satu fungsi dasar dari sistem operasi. Hampir semua sumber daya komputer dijadwalkan sebelum digunakan.
• CPU-I/O Burst Cycle
Kesuksesan penjadwaln CPU tergantung dari observasi proses-proses. Pengeksekusian proses terdiri putaran ekseskusi CPU dan penungguan I/O. Eksekusi proses dimulai dari CPU burst, yaitu diikuti oleh I/O burst kemudian diikuti CPU burst lainnya lalu I/O burst lainnya dan begitu seterusnya.
Gambar 1 Urutan pergantian CPU Burst dengan I/O Burst
• Penjadwalan CPU Ketika CPU mengalami waktu idle, sistem operasi harus memilih salah satu proses untuk masuk kedalam antrian yang akan untuk dieksekusi. Pemilihan tersebut dilakukan oleh penjadwal jangka pendek atau penjadwal CPU. Ada tiga tipe penjadwal yang berada bersama pada sistem operasi kompleks, yaitu :
a. Penjadwal jangka pendek yang bertugas menjadwalkan alokasi pemroses di antara proses-proses yang telah siap di memori utama.
b. Penjadwal jangka menengah akan menangani serta mengendalikan transisi dari suspended-to-ready dari proses-proses swapping.
c. Penjadwal jangka panjang bekerja terhadap antrian batch dan memilih batch berikutnya yang harus dieksekusi.
Gambar 2 Tipe-tipe penjadwalan
Penjadwalan memilih proses yang ada di memori serta siap untuk dieksekusi, dan mengalokasikan CPU untuk mengeksekusinya.
Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan:
1. Berubah dari running ke waiting state.
2. Berubah dari running ke ready state.
3. Berubah dari waiting ke ready.
4. Terminates.
Penjadwalan nomor 1 dan 4 bersifat non-preemptive atau cooperative sedangkan lainnya preemptive. Dalam penjadwalan non-preemptive sekali CPU telah dialokasikan untuk sebuah proses, maka tidak dapat di ganggu, penjadwalan model seperti ini digunakan oleh Windows 3.x; Windows 95 telah
menggunakan penjadwalan preemptive yaitu saat suatu proses sedang dieksekusi, CPU dapat diambil alih oleh proses lain sehingga proses di tunda dan dilanjutkan kembali hingga proses selesai.
• Kriteria Penjadwalan
Setiap algoritma penjadwalan dapat berbeda dengan nilai yang berbeda dan sistem komputer yang berbeda. Dalam penjadwalan CPU diperlukan beberapa kriteria diantaranya adalah:
o CPU Utilization. Kita menginginkan kerja CPU sesibuk mungkin. Konsepnya pemanfaatan CPU mempunyai jangkauan dari 0 sampai 100 persen. Di sistem yang sebenarnya mungkin hanya mempunyai jangakuan dari 40 (untuk pemanggilan ringan sistem) sampai 90 persen (pemanggilan berat sistem).
o Throughput. Pengukuran kinerja CPU adalah banyaknya proses yang diselesaikan per satuan waktu. Jika kita mempunyai beberapa proses yang sama dan memiliki beberapa algoritma penjadwalan yang berbeda, hasil kinerja bisa menjadi salah satu kriteria penilaian, dimana algoritma yang menyelesaikan proses terbanyak mungkin yang terbaik.
o Turnaround Time. Dari sudut pandang proses tertentu, kriteria yang penting adalah berapa lama untuk mengeksekusi proses tersebut. Memang, lama pengeksekusian sebuah proses sangat tergantung dari hardware yang dipakai, namun kontribusi algoritma penjadwalan tetap ada dalam lama waktu yang dipakai untuk menyelesaikan sebuah proses. Misal, kita memilki sistem komputer yang identik dan proses-proses yang identik pula, namun kita memakai algoritma yang berbeda, algoritma yang mampu menyelesaikan proses yang sama dengan waktu yang lebih singkat mungkin lebih baik dari algoritma yang lain. Interval waktu yang diijinkan dengan waktu yang dibutuhkan untuk menyelesaikan sebuah proses disebut turnaround time.Turnaround time adalah jumlah periode tunggu untuk dapat ke memori, menunggu di ready queue, eksekusi CPU, dan melakukan operasi I/O atau waktu yang dihabiskan dari saat program atau job mulai masuk sistem sampai proses diselesaikan sistem.
o Turnaround = waktu eksekusi + waktu menunggu
o Waiting Time. Algoritma penjadwalan CPU tidak mempengaruhi waktu untuk melaksanakan proses tersebut atau I/O, karena hanya mempengaruhi jumlah waktu yang dibutuhkan proses diantrian ready. Waiting time adalah jumlah waktu yang dbutuhkan proses di antrian ready.
o Response time. Di sistem yang interaktif, turnaround time mungkin bukan waktu yang terbaik untuk kriteria. Sering sebuah proses dapat memproduksi output di awal, dan dapat meneruskan hasil yang baru sementara hasil yang sebelumnya telah diberikan ke pengguna. ukuran lain adalah waktu dari pengiriman permintaan sampai respon yang pertama diberikan. Hal ini disebut response time, yaitu waktu untuk memulai memberikan respon, tetapi bukan waktu yang dipakai output untuk respon tersebut. Turnround time umumnya dibatasi oleh kecepatan peralatan keluaran. Ada dua jenis response time berdasarkan penggunaannya pada sistem interaktif dan sistem waktu nyata (real time), yaitu:
1. Terminal response time merupakan response time pada sistem interaktif sebagai waktu yang dihabiskan dari saat karakter terakhir dari perintah dimasukkan atau transaksi sampai hasil pertama muncul di layar.
2. Event response time merupakan response time pada sistem waktu nyata sebagai waktu dan kejadian (internal/eksternal) sampai instruksi pertama rutin layanan yang dimaksud dieksekusi.
Sebaiknya ketika kita akan membuat algoritma penjadwalan yang dilakukan adalah memaksimalkan
penggunaan CPU dan throughput, dan meminimalkan turnaround time, waiting time, dan response
time.
• Algoritma Penjadwalan
Masalah penjadwaln CPU adalah memutuskan proses mana yang berada di dalam antrian ready akan dialokasikan ke CPU. Ada beberapa algoritma penjadwalan CPU beberapa diantaranya akan di jelaskan pada bagian berikut ini.
o First-Come First-Served (FCFS)
Algoritma ini merupakan algoritma penjadwalan yang paling sederhana yang digunakan CPU. Dengan menggunakan algoritma ini seiap proses yang berada pada status ready dimasukkan ke dalam antrian FIFO sesuai dengan waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi
terlebih dahulu.
o Shortest-Job First (SJF)
Algoritma ini mempunyai cara penjadwalan yang berbeda dengan FCFS. Dengan algoritma ini maka setiap proses yang ada di antrian ready akan dieksekusi berdasarkan burst time terkecil. Hal ini mengakibatkan waiting time yang pendek untuk setiap proses dan karena hal tersebut maka waiting
time rata-ratanya juga menjadi pendek, sehingga dapat dikatakan bahwa algoritma ini adalah algoritma yang optimal.
o Penjadwalan dengan Prioritas
Priority Scheduling merupakan algoritma penjadwalan yang mendahulukan proses dengan nilai prioritas tertinggi. Setiap proses memiliki prioritasnya masing-masing. Prioritas suatu proses dapat ditentukan melalui beberapa karakteristik antara lain:
a. Batas waktu
b. Kebutuhan Memori
c. Akses file
d. Perbandingan antara I/O Burst dengan CPU Burst
e. Tingkat kepentingan proses
o Round Robin
Algoritma ini didesin untuk sistem time-sharing. Proses akan mendapat jatah sebesar time quantum dengan nilai quantum umumnya sebesar 10-100 ms. Jika time quantum-nya habis atau proses sudah selesai CPU akan dialokasikan ke proses berikutnya. Tentu proses ini cukup adil karena tak ada proses yang diprioritaskan, semua proses mendapat jatah waktu yang sama dari CPU (1/n), dan tak akan menunggu lebih lama dari (n-1)/q.
o Antrian Multilevel (Multilevel Queue)
Ide dasar dari algoritma ini adalah berdasarkan pada sistem prioritas proses. Prinsipnya adalah, jika setiap proses dapat dikelompokkan berdasarkan prioritasnya.
o Multilevel Feedback Queue
Algoritma ini mirip sekali dengan algoritma Multilevel Queue. Perbedaannya ialah algoritma ini mengizinkan proses untuk pindah antrian. Jika suatu proses menyita CPU terlalu lama, maka proses itu akan dipindahkan ke antrian yang lebih rendah. Ini menguntungkan proses interaksi, karena proses
ini hanya memakai waktu CPU yang sedikit. Demikian pula dengan proses yang menunggu terlalu lama. Proses ini akan dinaikkan tingkatannya.