Penjadwalan Proses CPU dan Algoritma Mengatur Penjadwalan CPU

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 :
  • Penjadwalan jangka pendek yang berfungi menjadwalkan alokasi pemroses diantara proses-proses yang telah siap (ready) pada memori utama.
  • Penjadwalan jangka menengah berfungsi menangani dan mengendalikan transisi perubahan dari suspended to ready dari proses-proses swapping.
  • Penjawalan Jangka Panjang bekerja pada antrian batch dan memilih batch selanjutnya yang harus dieksekusi.

Tipe Penjadwalan CPU
Tipe Penjadwalan CPU

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  :
  • Waiting time rata-ratanya cukup lama
  • Terjadinya convoy effect (sekumpulan proses menunggu lama dalam menunggu satu proses besar yang sedang dieksekusi oleh CPU)
  • 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 :
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.
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 :
  • Kesulitan dalam memprediksi burst time proses yang akan dieksekusi berikutnya.
  • 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 :
  • Jumlah antrian
  • Algoritma internal tiap antrian
  • Aturan kapan sebuah proses naik ke antrian yang lebih tinggi
  • Aturan kapan sebuah proses turun ke antrian yang lebih rendah
  • 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,

Post a Comment

0 Comments