Jumat, 13 Januari 2017

Algoritma Penjadwalan

Penjadwalan atau Scheduling adalah sebuah metode dalam system operasi yang mengatur proses-proses yang akan berjalan dalam suatu system operasi. Hal ini sangat diperlukan karena pada saat ini komputer berbasiskan multiprogramming. Gagasan multiprogramming adalah sederhana, satu proses dieksekusi sampai proses itu menunggu sesuatu, biasana pelaksaan operasi I/O. pada multiprogramming, beberapa proses disimpan proses dimemori pasa satu waktu. Tujuan dari multiprogramming adalah untuk menjalankan beberapa proses pada waktu tertentu sehingga bisa memaksimalkan penggunaan CPU. Bagian dari sistem operasi yang membuat pilihan dinamakan scheduller, sedangkan algoritma yang digunakan dinamakan schedulling algorithm.
a.       FIFO (First In First Out) atau FCFS (First Come First Serve)
Algoritma ini merupakan algoritma penjadwalan yang paling sederhana yang digunakan CPU. Dengan menggunakan algoritma ini setiap proses yang berada pada status ready dimasukkan kedalam FIFO queue atau antrian dengan prinsip first in first out, sesuai dengan waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi.
Terdapat kelemahan pada saat menggunakan algoritma ini, yaitu:
1.      Waiting time rata-ratanya cukup lama.
2.      Terjadinya convoy effect, yaitu proses-proses menunggu lama untuk menunggu 1 proses besar yang sedang dieksekusi oleh CPU. Algoritma ini juga menerapkan konsep non-preemptive, yaitu setiap proses yang sedang dieksekusi oleh CPU tidak dapat di-interrupt (suatu permintaan khusus pada mikroprocessor untuk melakukan sesuatu) oleh proses yang lain.

b.      SJF (Shortest Job First)
Pada algoritma ini setiap proses yang ada di ready queue 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.

c.   Priority Scheduling
Merupakan algoritma penjadwalan yang mendahulukan proses yang memiliki prioritas tertinggi. Setiap proses memiliki prioritasnya masing-masing. Prioritas suatu proses dapat ditentukan melalui beberapa karakteristik antara lain:
  1.  Time limit. 
  2. Memory requirement. 
  3.  Akses file. 
  4. Perbandingan antara burst M/K dengan CPU burst. 
  5. Tingkat kepentingan proses.
Kelemahan pada priority scheduling adalah dapat terjadinya indefinite blocking( starvation). Suatu proses dengan prioritas yang rendah memiliki kemungkinan untuk tidak dieksekusi jika terdapat proses lain yang memiliki prioritas lebih tinggi darinya. Solusi dari permasalahan ini adalah aging, yaitu meningkatkan prioritas dari setiap proses yang menunggu dalam queue secara bertahap.

d. Round Ronin
Algoritma ini menggilir proses yang ada di antrian. Proses akan mendapat jatah sebesar time quantum. 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 yaitu (1/n), dan tak akan menunggu lebih lama dari (n-1)q dengan q adalah lama 1 quantum. Algoritma ini sepenuhnya bergantung besarnya time quantum. Jika terlalu besar, algoritma ini akan sama saja dengan algoritma first come first served. Jika terlalu kecil, akan semakin banyak peralihan proses sehingga banyak waktu terbuang. Urutan Kejadian Algoritma Round Robin:

PENJADWALAN PADA SISTEM OPERASI LINUX
            Algortima penjadwalan Linux adalah preemptive, priority based dengan dua range prioritas yang terpisah; range real-time dari 0-99 dan yang lainnya dengan range dari 100-140. Dua range ini memetakan skema prioritas global dimana semakin kecil angka prioritasnya memiliki arti prioritas lebih tinggi. Linux memberikan quantum waktu yang lebih panjang pada proses dengan prioritas tinggi dan sebaliknya. Sebuah proses dapat running pada CPU jika proses tersebut memiliki waktu sisa pada slot waktunya. 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: 
  1. FIFO (First In First Out) atau FCFS (First Come First Serve)
2.  Round Robin.
Pada kedua kasus, setiap proses memiliki prioritas. Penjadwal akan memilih proses dengan prioritas paling besar pada penjadwalan real-time. Di antara dua proses dengan prioritas yang sama, penjadwal akan menjalankan proses yang telah menunggu paling lama. Penjadwalan real-time Linux adalah soft real-time. Pada algoritma soft real-time fitur yang paling penting dari adalah merespon dengan segera sebuah proses waktu nyata secepat proses yang membutuhkan 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 sebuah proses yang berjalan sekarang ini di CPU akan didahulukan.

PENJADWALAN PADA SISTEM OPERASI WINDOWS XP
Windows XP menggunakan algoritma, prioritas penjadwalan quantum. Jumlah thread yang dibuat oleh process dapat lebih dari satu. Thread-thread yang dibuat oleh process harus dapat dijalankan sesuai dengan kebutuhan process tersebut. Tugas sistem operasi untuk mengatur dan melakukan penjadwalan agar thread-thread yang dibutuhkan mendapat waktu yang cukup untuk dieksekusi oleh CPU.  Windows XP dalam melakukan penjadwalan thread memakai pendekatan prioritas dan bersifat preemptive. Thread dengan prioritas tertinggi pasti dijalankan dan dapat menghentikan/menginterupsi jalannya thread lain yang prioritasnya lebih rendah. Ketika menggunakan CPU thread menghabiskan sejumlah waktu, ini disebut dengan quantum. Quantum adalah sejumlah waktu yang diberikan kepada thread untuk menggunakan CPU. Sifat penjadwalan windows yang preemtive memungkinkan suatu thread untuk diinterupsi, meskipun waktu quantumnya belum habis.
Windows XP menggunakan algoritma, prioritas penjadwalan quantum-based yang berbasis reemptive priority scheduling. Terdapat 6 kemungkinan state dari sebuah thread, yaitu ready, standby, running, waiting, transition dan terminated. Ready state yaitu thread yang siap untuk dieksekusi. Thread yang berada pada ready state dengan prioritas tertinggi akan berpindah menjadi standby state. Ketika thread dieksekusi, thread tersebut berada pada running state. State waiting dimasuki thread ketika thread menunggu untuk dijadwalkan ulang. Ketika thread akan dieksekusi tetapi sumber daya yang diperlukan belum tersedia, maka thread tersebut akan berpindah pada state transition. Terminated state dimasuki thread ketika thread selesai dieksekusi.
Gambar Proses Pada Windows Xp Threads dijadwalkan dalam proses, Karena prioritas preemptive algoritma diimplementasikan dengan beberapa queue, dapat dianggap sebagai algoritma multiple feedback-queue . Namun, masing-masing Threads biasanya terbatas pada kelompok kecil dari 5 level prioritas, Preemption dapat terjadi karena salah satu dari 4 alasan:
  1. thread menjadi prioritas lebih tinggi-siap
  2. thread berakhir
  3. kuantum habis waktu
  4. thread melakukan panggilan sistem pemblokiran, seperti untuk I / O, dalam hal ini meninggalkan keadaan ready menjadi keadaan menunggu.
Gambaran Quatum pada windows XP 32 tingkat prioritas digunakan, di mana prioritas 31 merupakan prioritas tertinggi dan prioritas 0 adalah prioritas terendah,
  1. memori manajemen thread: prioritas 0
  2. variabel kelas prioritas (1-15)
  3. real-time kelas prioritas (16-31)
  4. Threads di kelas real-time telah tetap prioritasnya.
Threads yang berjalan selalu dengan tingkat prioritas tertinggi. Jika tidak ada thread yang ready, Threads idle dijalankan. Ketika waktu quantum thread habis, prioritasnya diturunkan, tetapi prioritasnya tidak pernah diturunkan terlalu jauh. Ketika Threads menjadi ready setelah keadaan menunggu, maka diberikan prioritas tertinggi setiap threads dari proses yang terkait dengan program yang saat ini pengguna gunakan diberikan prioritas lebih.



Sumber:

Tidak ada komentar:

Posting Komentar