Thursday, October 9, 2014

Scheduling pada Sistem Operasi Linux



Penjadwalan merupakan aktivitas untuk mengalokasi waktu dari CPU ke proses yang berbeda-beda dalam sebuah sistem operasi. Tidak hanya running proses dan interrupt proses, ada aspek lain yang penting pada Linux, yaitu running dari beberapa tugas kernel. Tugas kernel meliputi tugas yang diminta oleh running proses dan tugas yang dieksekusi secara internal untuk kepentingan device driver.

Linux memiliki dua algoritma proses penjadwalan. Yang pertama adalah time-sharing algoritma untuk penjadwalan yang adil dan preemptive diantara beberapa proses, sedangkan yang lain di desain untuk tugas-tugas realtime, dimana absolut prioritas adalah hal yang paling penting.
Algortima penjadwalan Linux adalah preemptive, berdasarkan prioritas yang ada dengan dua range prioritas yang terpisah (range real time dari 0-99, dan range lainnya dari 100-140). Dua range ini memetakan skema prioritas global dimana semakin kecil angka prioritasnya semakin tinggi prioritasnya.

Linux memberikan quantum waktu yang lebih panjang pada proses dengan prioritas tinggi dan sebaliknya. Sebuah proses dapat berjalan pada CPU jika proses tersebut memiliki waktu sisa pada slot waktu. Saat slot waktunya habis, proses tersebut dianggap kadaluarsa dan tidak akan dieksekusi sampai seluruh proses slot waktunya habis juga. Saat ini terjadi, list proses aktif akan menjadi kosong, maka list proses kadaluarsa akan menjadi aktif dan eksekusi akan dimulai kembali.

Penjadwalan real-time Linux mengimplementasikan dua penjadwalan real-time, yaitu First-Come, First-Served (FCFS) dan Round-Robin (RR). Setiap proses memiliki prioritasnya masing-masing. Penjadwal akan memilih proses dengan prioritas paling tinggi pada penjadwalan real-time. Jika ada dua proses dengan prioritas yang sama, maka penjadwal akan menjalankan proses yang telah menunggu paling lama.

Penjadwalan real-time Linux bersifat soft real-time. Pada algoritma soft real-time, fitur yang paling penting adalah merespon dengan segera sebuah proses real-time secepat proses yang dibutuhkan oleh CPU. Algoritma penjadwalan berdasarkan prioritas memberikan prioritas kepada masing-masing proses berdasarkan tingkat kepentingannya; proses yang lebih penting di berikan prioritas lebih tinggi daripada proses lain yang dianggap kurang penting. Apabila penjadwalan yang digunakan juga mendukung preemption dan tersedia sebuah proses berprioritas tinggi, maka proses ini akan dijalankan lebih dahulu mengingat prioritasnya yang tinggi.