Penjadwalan Proses CPU Pada Sistem Operasi
Penjadwalan Proses CPU pada Sistem Operasi
Dalam sebuah prosessor atau pemroses, hanya satu proses yang bisa dieksekusi pada saat tertentu, sedangkan proses lain harus menunggu CPU luang dan dijadwal ulang. Multiprogramming adalah suatu cara dalam mengeksekusi proses setiap waktu sehingga penggunaan CPU dapat dimaksimalkan dengan baik. Penjadwalan CPU adalah salah satu tugas dasar dari sistem operasi, hampir semua resource atau sumber daya komputer dijadwalkan terlebih dahulu sebelum dipergunakan.
Keberhasilan penjadwalan CPU tersebut bergantung dari hasil
observasi sekumpulan proses. Proses eksekusi terdiri dari perulangan eksekusi
CPU dan penungguan I/O. Eksekusi proses dimulai dari CPU burst yang diikuti
oleh I/O burst dan begitu seterusnya.
Penjadwalan Proses CPU
Ketika sebuah CPU mengalami waktu idle, sistem operasi
bertugas harus memilih salah satu proses untuk masuk ke dalam antrian yang akan
dieksekusi oleh CPU. Pemilihan tersebut dilakukan dari hasil penjadwalan jangka
pendek atau penjadwal CPU.
Menurut Bambang [2002] dalam sistem operasi kompleks ada
tiga tipe penjadwalan yakni :
1. Penjadwalan jangka pendek yang berfungi menjadwalkan alokasi
pemroses diantara proses-proses yang telah siap (ready) pada memori utama.
2. Penjadwalan jangka menengah berfungsi menangani dan
mengendalikan transisi perubahan dari suspended to ready dari proses-proses
swapping.
3. Penjawalan Jangka Panjang bekerja pada antrian batch dan
memilih batch selanjutnya yang harus dieksekusi.
Dalam penjadwalan non-preemptive sekali CPU telah
dialokasikan untuk sebuah proses, maka tidak dapat diganggu seperti pada
windows 3.x sedangkan 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 seperti pada windows 95 ke atas.
Kriteria Penjadwalan
Setiap algoritma penjadwalan dapat berbeda dengan nilai yang berbeda dan sistem komputer yang berbeda. Dalam penjadwalan CPU diperlukan beberapa kriteria diantaranya adalah :
CPU Utilization. Kita menginginkan kerja CPU sesibuk
mungkin. Konsepnya pemanfaatan CPU mempunyai
jangkauan dari 0
sampai 100 persen.
Di sistem yang
sebenarnya mungkin hanya memiliki jangkauan dari 40 (untuk
proses ringan) hingga 90 persen (untuk proses berat).
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.
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 digunakan dalam menyelesaikan sebuah proses.
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.
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 pada umumna dibatasi oleh kecepatan perangkat output.
Sebaiknya dalam membuat sebuah algoritma untuk penjadwalan
yang dilakukan adalah memaksimalkan penggunaan CPU dan througput serta
meminimalkan turnaround time, waiting time dan response time.
Algoritma Penjadwalan
Dalam penjadwalan CPU terdapat masalah yaitu memutuskan proses mana yang berada dalam antrian ready yang akan dialokasikan ke CPU. Ada beberapa algoritma penjadwalan CPU yang dipergunakan seperti berikut :
First-Come First-Served (FCFS)
Dari namanya sudah dapat diketahui bahwa proses yang pertama
datang akan dilayani terlebih dahulu. Dengan menggunakan algoritma ini setiap
proses yang berada pada status ready dimasukkan ke dalam antrian FIFO (First-in
First-Out) sesuai dengan waktu kedatangannya.
Kelemahan dari FCFS adalah
:
1. Waiting time rata-ratanya cukup lama
2. Terjadinya convoy effect (sekumpulan proses menunggu lama
dalam menunggu satu proses besar yang sedang dieksekusi oleh CPU)
3. Algoritma ini menerapkan konsep non-preemptive (proses yang sedang dieksekusi oleh CPU tidak dapat diganggu oleh proses lain)
Shortest-Job First (SJF)
Dengan algoritma SJF maka setiap proses yang berada di
antrian ready akan dieksekusi berdasarkan burst time terkecil. Hal ini
menjadikan algoritma ini waiting time yang cukup singkat. Algoritma ini dapat
dibagi menjadi dua konsep bagian yaitu :
1. Preemptive, Jika terdapat proses yang sedang dieksekusi oleh
CPU dan terdapat proses pada antrian ready yang burst timenya lebih kecil
daripada proses yang sedang dieksekusi, maka proses yang sedang dieksekusi oleh
CPU akan digantikan oleh proses yang berada di antrian ready tadi.
2. Non Preemptive, CPU tidak mengizinkan proses yang terdapat pada antrian ready untuk menggeser proses yang sedang dieksekusi oleh CPU meskipun proses yang baru tersebut memiliki burst time yang lebih kecil.
Kelemahan dari algoritma ini adalah :
1. Kesulitan dalam memprediksi burst time proses yang akan
dieksekusi berikutnya.
2. Proses yang memiliki burst time yang besar akan mempunyai waiting time yang tambah besar ini dikarenakan yang dieksekusi terlebih dahulu adalah proses dengan burst time yang singkat.
Priority Schedulling
Penjadwalan dengan prioritas adalah algoritma penjadwalan
yang mendahulukan sebuah proses dengan nilai prioritas tertinggi. Setiap proses
mempunyai prioritasnya masing-masing. Prioritas dalam suatu proses dapat
ditentukan melalui beberapa karakteristik seperti batas waktu, kebutuhan
memori, tingkat kepentingan proses, akses berkas, dan perbandingan antara I/O
burt dengan CPU burst.
Algoritma prioritas schedulling bisa dijalankan secara
preemptive maupun non-preemptive, sama seperti SJF hanya dalam algoritma ini
prioritas yang dijadikan alat ukur bukan burst time terkecil.
Kelemahan pada penjadwalan prioritas adalah dapat terjadinya
indefinite blocking (starvation) yakni suatu proses yang memiliki prioritas
rendah kemungkinan untuk tidak dieksekusi jika terdapat proses lain yang
mempunyai prioritas lebih tinggi darinya. Solusinya adalah dengan aging
(meningkatkan prioritas dari setiap proses yang menunggu dalam antrian secara
bertahap).
Multilevel Feedback Queue
Algoritma ini memperbolehkan proses untuk berpindah antrian, jika suatu proses menyita CPU terlalu lama, maka proes itu akan dipindahkan ke antrian yang lebih rendah. Hal ini menguntungkan proses interaksi karena proses ini hanya menggunakan waktu CPU yang sedikit demikian juga dengan proses yang menunggu terlalu lama akan dinaikan tingkatanya.
Dalam menerapkan algoritma multilevel feedback qeueu perlu
mendefiniskan terlebih dahulu parameter-parameternyanya yaitu :
1. Jumlah antrian
2. Algoritma internal tiap antrian
3. Aturan kapan sebuah proses naik ke antrian yang lebih tinggi
4. Aturan kapan sebuah proses turun ke antrian yang lebih
rendah
5. Aturan untuk antrian mana yang akan dimasuki oleh proses
yang baru datang
Algoritma ini untuk saat ini paling banyak diperganakan
dikarenakan fleksibel dan dapat diterapkan sesuai dengan kebutuhan sistem,
Comments
Post a Comment