Strategi
penjadwalan proses secara umum dibedakan menjadi dua kelompok besar, yaitu
penjadwalan non-preemptive dan preemptive.
1.
Non-preemptive
(run-to-completion)
Pada strategi ini, begitu proses
telah berjalan maka sistem operasi maupun proses lain tidak dapat mengmabil
alih eksekusi prosesor. Pengalihan hanya dapat terjadi jika proses yang running
sudah selesai, baik secara normal maupun abnormal. Strategi ini membahayakan
sistem dan proses lain, sebab jika proses yang sedang berjalan mengalami
kegagalan, crash ataupun looping tak berhingga maka sistem operasi menjadi
tidak berfungsi dan proses lain tidak mendapatkan kesempatan untuk dieksekusi.
Strategi penjadwalan non-preemptive umumnya digunakan pada sistem batch atau
sekuensial.
2.
Preemptive
Pada strategi ini, sistem operasi
dan proses lain dapat mengambil alih eksekusi prosesor tanpa harus menunggu
proses yang sedang running menyelesaikan tugasnya. Penjadwalan preemptive
merupakan fitur yang penting, terutama pada sistem dimana proses-proses
memerlukan tanggapan prosesor secara cepat. Sebagai contoh adalah sistem
real-time, dimana jika terjadi interupsi dan tidak segera dilayani maka dapat
berakibat fatal. Contoh lain adalah sistem interaktif time-sharing, dimana
pengguna sistem mengharapkan tanggapan yang cepat dari sistem. Secara umum,
sistem konkuren seperti sistem operasi yang multitasking lebih menghendaki
sistem penjadwalan preemptive.
Penjadwalan Preemptive
- Berubah dari running ke waiting state.
- Berubah dari running ke ready state.
- Berubah dari waiting ke ready state.
- Dihentikan.
Penjadwalan Preemptive mempunyai arti kemampuan sistem operasi untuk
memberhentikan sementara proses yang sedang berjalan untuk memberi ruang kepada
proses yang prioritasnya lebih tinggi. Penjadwalan ini bisa saja termasuk
penjadwalan proses atau M/K. Penjadwalan Preemptive memungkinkan
sistem untuk lebih bisa menjamin bahwa setiap proses mendapat sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat merespon terhadap event dari luar (contohnya seperti ada data yang masuk) yang membutuhkan
reaksi cepat dari satu atau beberapa proses. Membuat penjadwalan yang Preemptive mempunyai keuntungan yaitu sistem lebih responsif
daripada sistem yang memakai penjadwalan Non Preemptive.
Dalam waktu-waktu tertentu, proses dapat dikelompokkan
ke dalam dua kategori: proses yang memiliki Burst M/K yang sangat lama disebut I/O Bound, dan proses yang memiliki Burst CPU yang sangat lama
disebutCPU Bound. Terkadang juga suatu sistem mengalami kondisi yang
disebut busywait, yaitu saat dimana sistem menunggu request input(seperti disk, keyboard, atau jaringan). Saat busywait tersebut, proses tidak melakukan sesuatu yang produktif, tetapi tetap
memakan resource dari CPU. Dengan penjadwalan Preemptive, hal tersebut dapat dihindari.
Dengan kata lain, penjadwalan Preemptive melibatkan
mekanisme interupsi yang menyela proses yang sedang berjalan dan memaksa sistem
untuk menentukan proses mana yang akan dieksekusi selanjutnya.
Penjadwalan nomor 1 dan 4 bersifat Non Preemptive sedangkan
lainnya Preemptive. Penjadwalan yang biasa digunakan sistem operasi
dewasa ini biasanya bersifat Preemptive. Bahkan beberapa penjadwalan sistem operasi,
contohnya Linux 2.6, mempunyai kemampuan Preemptive terhadap system call-nya ( preemptible kernel). Windows
95, Windows XP, Linux, Unix, AmigaOS, MacOS X, dan Windows NT adalah beberapa contoh sistem operasi yang menerapkan
penjadwalan Preemptive.
Lama waktu suatu proses diizinkan untuk dieksekusi
dalam penjadwalan Preemptive disebut time slice/quantum. Penjadwalan berjalan
setiap satu satuan time slice untuk memilih proses mana yang akan berjalan
selanjutnya. Bila time
slice terlalu pendek maka penjadwal
akan memakan terlalu banyak waktu proses, tetapi bila time slice terlau lama maka memungkinkan proses untuk tidak dapat
merespon terhadap event dari luar secepat yang diharapkan.
Penjadwalan Non Preemptive
Penjadwalan Non Preemptive ialah salah
satu jenis penjadwalan dimana sistem operasi tidak pernah melakukan context switch dari proses yang sedang berjalan ke proses yang lain.
Dengan kata lain, proses yang sedang berjalan tidak bisa di- interupt.
Penjadwalan Non Preemptive terjadi ketika proses hanya:
- Berjalan dari running state sampai waiting state.
- Dihentikan.
Ini berarti CPU menjaga proses sampai proses itu
pindah ke waiting state ataupun dihentikan (proses tidak diganggu). Metode ini
digunakan oleh Microsoft
Windows 3.1 dan Macintosh. Ini adalah metode
yang dapat digunakan untuk platforms hardware tertentu, karena tidak memerlukan perangkat keras khusus (misalnya timer
yang digunakan untuk menginterupt pada metode penjadwalan Preemptive).
Dispatcher
Komponen
penjadwalan proses lainnya adalah dispatcher. Dispatcher adalah suatu rutin
sistem operasi yang berfungsi untuk melakukan pengalihan eksekusi dari proses
yang running ke proses yang terseleksi oleh short-term scheduler. Rutin ini
memindahkan isi register prosesor, konteks prosesor, ke PCB proses yang
dihentikan, kemudian mengubah statusnya menjadi ready, kemudian menginisiasi
isi register prosesor menggunakan konteks prosesor yang tersimpan dalam PCB
proses terpilih. Durasi waktu yang diperlukan untuk melakukan pengalihan
(switching) disebut dengan dispatch latency.
No comments:
Post a Comment