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
Tidak ada komentar:
Posting Komentar