Minggu, 05 Oktober 2014

Scheduling Algorithm pada Solaris, Win XP, dan Linux

Scheduling Algorithm pada Solaris, Win XP, dan Linux


1. Algoritma Penjadwalan pada Solaris

       Solaris menggunakan Priority-based kernel thread scheduling. Di dalamnya terdapat empat kelas: real-time, system, interactive, and time-sharing dan di masing-masing kelas memiliki queue/algoritma sendiri.

       Secara default, Solaris menggunakan time-sharing. Prioritas dan time-slices setiap proses secara dinamis diubah melalui multi-level queue feedback scheduling. Prioritas dan time-slice berbanding terbalik, di mana makin tinggi prioritas suatu proses, makin kecil time-slice-nya. Job interaktif memiliki prioritas lebih tinggi daripada yang CPU-Bound.


       Tabel quantum time dan prioritas Solaris:



2. Algoritma Penjadwalan pada Windows XP

       Windows XP menggunakan priority-based preemptive scheduling algorithm. Sistem Operasi ini memiliki dispatcher yang menggunakan 32 level skema prioritas untuk menentukan urutan eksekusi thread. Skema prioritas ini terbagi dalam dua kelas: variable class dari 1-15 dan real-time class dari 16-32 serta sebuah thread dengan prioritas 0 untuk menghandle memori. Selain itu juga terdapat sebuah idle thread yang terjadwal apabila tidak ada thread yang ready.

       Windows XP mengidentifikasi 7 kelas prioritas dan 6 prioritas relatif pada masing-masing kelas. Setiap proses akan diberi prioritas basis, di mana apabila quantum time dari proses itu habis sebelum dia selesa, maka proses itu akan diturunkan prioritasnya namun tidak di bawah prioritas basisnya. Proses yang berjalan interaktif (window yang sedang aktif), quantum time-nya akan dikalikan 3 agar menghasilkan respon yang paling baik.

Tabel prioritas Windows XP:



3. Algoritma Penjadwalan pada Linux

       Linux modern menggunakan menyediakan support untuk SMP service dan sebuah algoritma penjadwalan yang berjalan dengan waktu 0(1) apabila jumlah proses semakin bertambah.

       Linux menggunakan penjadwalan preemptive dengan basis prioritas yang menggunakan dua range prioritas: Real time, dari 0 sampai 99, dan nice mulai 100-140.

       Tidak seperti Solaris dan Windows XP, Linux memberi quantum time yang semakin banyak kepada proses yang prioritasnya semakin tinggi. 


Sebuah task dapat dianggap executable apabila tidak menghabiskan time-slice yang disediakan. Task ini nanti akan disimpan dalam active array. Kemudian ketika proses sudah menghabiskan time-slice miliknya maka dia akan dipindahkan ke dalam expired array. Selanjutnya task ini dapat berubah prioritasnya saat perpindahan. Hingga saat active array kosong, maka kedua array tadi akan ditukar
      
       Active array dan expired array disimpan dengan struktur runqueue. Bagi mesin yang memiliki multi-prosesor, maka tiap prosesor mempunyai scheduler masing-masing.




M. Yusuf Habibie
dari http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/5_CPU_Scheduling.htmldan Abraham Silberschatz, Greg Gagne, and Peter Baer Galvin, "Operating System Concepts, Eighth Edition ", Chapter 5