PENJADWALAN PROSES SISTEM OPERASI
Penjadwalan
merupakan kumpulan kebijaksanaan dan mekanisme di sistem operasi yang berkaitan
dengan urutan kerja yang dilakukan sistem komputer. Proses penjadwalan yang
akan dibahas disini adalah proses penjadwalan sistem operasi SOLARIS,
LINUX, dan WINDOWS XP.
Sasaran atau
tujuan utama penjadwalan proses optimasi kinerja menurut kriteria tertentu.
dimana kriteria untuk mengukur dan optimasi kerja penjadwalan antara lain :
- Agar semua pekerjaan memperoleh pelayanan yang adil (firness).
- Agar pemakaian prosesor dapat dimaksimumkan.
- Agar waktu tanggap dapat diminimumkan.
- Agar pemakaian sumber daya seimbang.
- Turn arround time, waktu sejak program masuk ke system sampai proses selesai.
- Efesien, proses tetap dalam keadaan sibuk tidak menganggur.
- Agar terobosan (thoughput) dapat dimaksimumkan.
Terdapat 3
tipe penjadwal berada secara bersama-sama pada sistem operasi yang kompleks,
yaitu:
- Penjadwal jangka pendek (short term scheduller)
Bertugas
menjadwalkan alokasi pemroses di antara proses-proses ready di memori utama
Penjadwalan dijalankan setiap terjadi pengalihan proses untuk memilih proses
berikutnya yang harus dijalankan.
- Penjadwal jangka menengah (medium term scheduller)
Setelah eksekusi
selama suatu waktu, proses mungkin menunda sebuah eksekusi karena membuat
permintaan layanan masukan/keluaran atau memanggil suatu system call.
Proses-proses tertunda tidak dapat membuat suatu kemajuan menuju selesai sampai
kondisi-kondisi yang menyebabkan tertunda dihilangkan. Agar ruang memori dapat
bermanfaat, maka proses dipindah dari memori utama ke memori sekunder agar
tersedia ruang untuk proses-proses lain. Kapasitas memori utama terbatas untuk
sejumlah proses aktif. Aktivitas pemindahan proses yang tertunda dari memori
utama ke memori sekunder disebut swapping. Proses-proses mempunyai kepentingan
kecil saat itu sebagai proses yang tertunda. Tetapi, begitu kondisi yang
membuatnya tertunda hilang dan dimasukkan kembali ke memori utama dan ready.
- Penjadwal jangka panjang (long term scheduller)
Penjadwal ini
bekerja terhadap antrian batch dan memilih batch berikutnya yang harus
dieksekusi. Batch biasanya adalah proses-proses dengan penggunaan sumber daya
yang intensif (yaitu waktu pemroses, memori, masukan/keluaran), program-program
ini berprioritas rendah, digunakan sebagai pengisi (agar pemroses sibuk) selama
periode aktivitas job-job interaktif rendah.
PENJADWALAN
PROSES SISTEM OPERASI SOLARIS
Programmed
in
|
|
OS
family
|
|
Source
model
|
Mixed open source / closed source
|
Initial
release
|
1992
|
10 10/09 /
October 8, 2009; 10 months ago
|
|
Availablelanguage(s)
|
|
Availableprogramming languages(s)
|
|
Supported
platforms
|
|
Kernel type
|
|
Default user interface
|
|
Various
|
|
Official
website
|
Solaris
menggunakan penjadwalan berdasarkan prioritas dimana yang mempunyai prioritas
yang lebih tinggi dijalankan terlebih dahulu. Informasi tentang penjadwalan
kernel thread dapat dilihat dengan ps -elcL. Kernel Solaris
adalah fully preemtible, artinya semua thread,
termasuk thread yang mendukung aktifitas kernel itu sendiri dapat
ditunda untuk menjalankan thread dengan prioritas yang lebih
tinggi.
Gambar
penjadwalan solaris
Solaris
mengenal 170 prioritas yang berbeda, 0-169. Terbagi dalam 4 kelas penjadwalan
yang berbeda:
- Real time (RT). Thread di kelas RT memiliki prioritas yang tetap dengan waktu kuantum yang tetap juga. Thread ini memiliki prioritas yang tinggi berkisar antara 100-159. Hal inilah yang membuat proses waktu nyata memiliki response time yang cepat. Proses waktu nyata akan dijalankan sebelum proses-proses dari kelas yang lain dijalankan sehingga dapat menghentikan proses di system class. Pada umumnya, hanya sedikit proses yang merupakan real time class.
- System (SYS). Solaris menggunakan system class untuk menjalankan kernel proses, seperti penjadwalan dan paging daemon. Threads di kelas ini adalah “bound” threads, berarti bahwa mereka akan dijalankan sampai mereka di blok atau prosesnya sudah selesai. Prioritas untuk SYS threads berkisar 60-99. Sekali dibangun, prioritas dari sistem proses tidak dapat dirubah. System classdialokasikan untuk kernel use( user proses berjalan di kernel mode bukan di system class).
- Time Sharing (TS). Time sharing class merupakan default class untuk proses dan kernel thread yang bersesuaian. Time slices masing-masing proses dibagi berdasarkan prioritasnya. Dalam hal ini, prioritas berbanding terbalik dengan time slices-nya. Untuk proses yang prioritasnya tinggi mempunyai time-slices yang pendek, dan sebaliknya proses dengan prioritas yang rendah mempunyai time slices yang lebih panjang. Besar prioritasnya berada antara 0-59. Proses yang interaktif berada di prioritas yang tinggi sedangkan proses CPU-bound mempunyai prioritas yang rendah. Aturan penjadwalan seperti ini memberikan response time yang baik untuk proses yang interaktif, dan troughput yang baik untuk proses CPU-bound.
- Interactive (IA). Kelas Interaktif menggunakan aturan yang sama dengan aturan dengan kelas kelas time sharing, tetapi kelas ini memberikan prioritas yang tinggi untuk aplikasi jendela ( windowing application) sehingga menghasilkan performance yang lebih baik. Seperti TS, range IA berkisar 0-59.
Tabel . Solaris
dispatch table for interactive and time sharing threads
Priority
|
Time
quantum
|
Time
quantum expired
|
return
from sleep
|
0
|
200
|
0
|
50
|
5
|
200
|
0
|
50
|
10
|
160
|
0
|
51
|
15
|
160
|
5
|
51
|
20
|
120
|
10
|
52
|
25
|
120
|
15
|
52
|
30
|
80
|
20
|
53
|
35
|
80
|
25
|
54
|
40
|
40
|
30
|
55
|
45
|
40
|
35
|
56
|
50
|
40
|
40
|
58
|
55
|
40
|
45
|
58
|
59
|
20
|
49
|
59
|
Keterangan:
- Priority: prioritas berdasarkan kelas untuk time sharing dan interactive class. Nomor yang lebih tinggi menunjukkan prioritas yang lebih tinggi.
- Time quantum: waktu kuantum untuk setiap prioritas. Dapat diketahui bahwa fungsi waktu kuantum berbanding terbalik dengan prioritasnya.
- Time quantum expired: Prioritas terbaru untuk thread yang telah habis time slices-nya tanpa diblok. Dapat dilihat dari tabel bahwa thread yang CPU-bound tetap mempunyai prioritas yang rendah.
- Return from sleep: Prioritas thread yang kembali dari sleeping(misalnya menunggu dari M/K). Seperti yang terlihat dari tabel ketika M/K berada di waiting thread, prioritasnya berada antara 50-59, hal ini menyebabkan response time yang baik untuk proses yang interaktif.
- Fixed Priority (FX). Thread di kelas fixed priority memiliki range prioritas (0-59) yang sama seperti di time-sharing class; tetapi, prioritas mereka tidak akan berubah.
- Fair Share Scheduler (FSS). Thread yang diatur oleh FSS dijadwalkan berdasar pembagian sumber daya dari CPU yang tersedia dan dialokasikan untuk himpunan proses-proses (yang dikenal sebagai project). FS juga berkisar 0-59. FSS and FX baru mulai diimplementasikan di Solaris 9.
Seperti yang
telah diketahui, setiap kelas penjadwalan mempunyai himpunan dari
prioritas-prioritas. Tetapi, penjadwal mengubah class-specific
priorities menjadi global priorities kemudian memilih threaddengan
prioritas paling tinggi untuk dijalankan. Thread yang dipilih
tersebut jalan di CPU sampai thread tersebut (1) di- block,
(2) habis time slices-nya, atau (3) dihentikan oleh thread
dengan prioritas yang lebih tinggi. Jika ada beberapa thread dengan
prioritas yang sama, penjadwal akan menggunakan Round-Robin queue. Seperti yang
pernah dijelaskan sebelumnya, Solaris terdahulu menggunakan many-to-many
model tetapi solaris 9 berubah menggunakan one-to-one model.
PENJADWALAN
PROSES SISTEM OPERASI LINUX
Linus Torvalds and many others
|
|
Programmed
in
|
|
OS
family
|
|
Working
state
|
Current
|
Source
model
|
|
2.6.36-rc2 (August 23,
2010; 0 days ago)[2][+/−]
|
|
Marketing
target
|
Desktops,
servers, embedded devices
|
Availablelanguage(s)
|
Multi-lingual
|
Availableprogramming languages(s)
|
|
Supported
platforms
|
|
Kernel type
|
|
GNU and others
|
|
Default user interface
|
|
Various
including GNU General Public License, BSD License, Apache License, MIT License, and others[3]
|
|
Officialwebsite
|
Mulai di
versi 2.5, Kernel linux dapat berjalan di berbagai algoritma penjadwalan UNIX
tradisional. Dua masalah dengan penjadwal UNIX tradisional adalah tidak
disediakannya dukungan yang cukup untuk SMP (symmetric multiprocessor)
sistem dan tidak diperhitungkan dengan baik jumlah tasks pada
sistem yang berkembang. Dalam versi 2.5, penjadwal memeriksa dengan teliti hal
tersebut, dan sekarang kernel juga menyajikan algoritma penjadwalan yang
dapat run dalam waktu yang konstan tidak tergantung dari
jumlah tasks dalam sistem. Penjadwal yang baru juga menyediakan
peningkatan dukungan untuk SMP, termasuk processor affinity
dan load balancing, sebaik dalam menyediakan keadilan dan dukungan
terhadap interactive tasks.
Penjadwal
linux adalah preemptive, algoritmanya berdasarkan prioritas dengan
dua range prioritas yang terpisah: real-time range dari
0-99 dan nice value berkisar dari 100-140. Dua range ini dipetakan
menjadi global priority scheme dimana nilai yang lebih rendah
memiliki prioritas yang lebih tinggi. Tidak seperti penjadwal yang lain, Linux
menetapkan prioritas yang lebih tinggi memiliki waktu kuantum yang lebih
panjang dan prioritas yang lebih rendah memiliki waktu kuantum yang lebih
pendek.
Linux mengimplementasikan real
time scheduling seperti yang didefinisikan oleh POSIX 1.b: First
Come First Served dan Round Robin. Sistem waktu nyata( real
time)diberikan untuk task yang prioritasnya tetap.
Sedangkan task yang lainnya memiliki prioritas yang dinamis berdasakan nice
values ditambah atau dikurangi dengan 5. Interaktifitas sebuah task
menentukan apakah nilai 5 tersebut akan ditambah atau dikurangi dari nice
value. Task yang lebih interaktif mempunyai ciri khas memiliki sleep
times yang lebih lama dan karena itu maka ditambah dengan -5, karena
penjadwal lebih menyukaiinteractive task. Hasil dari pendekatan ini akan
membuat prioritas untuk interactive task lebih tinggi.
Sebaliknya, task dengan sleep time yang lebih pendek
biasanya lebih CPU-bound jadi prioritasnya lebih rendah.
Gambar .
Hubungan antara prioritas dan waktu kuantum
Task yang berjalan memenuhi syarat untuk
dieksekusi oleh CPU selama time slice-nya masih ada. Ketika
sebuah task telah kehabisan time slice-nya, maka task
tersebut akan expired dan tidak memenuhi syarat untuk dieksekusi
lagi sampai semua task yang lain sudah habis waktu kuantumnya.
Kernel mengatur daftar semua task yang berjalan di runqueue
data structure. Karena dukungan Linux untuk SMP, setiap prossesor
mengatur runqueue mereka sendiri dan penjadwalan yang bebas.
Setiap runqueue terdiri dari dua array prioritas - active
dan expired. Active array terdiri dari semua task
yang mempunyai sisa waktu time slices, dan expired array
terdiri dari task yang telah berakhir. Setiap array prioritas ini
memiliki daftar task indexed berdasakan prioritasnya. Penjadwal
memilih task dengan prioritas paling tinggi di active array
untuk dieksekusi dalam CPU. Di mesin multiprossesor, ini berarti setiap
prossesor menjadwalkan prioritas paling tinggi dalam runqueue structure
masing-masing. Ketika semua tasktelah habis time slices-nya
(dimana, active array-nya sudah kosong), dua array prioritas
bertukar; expired array menjadi active array, dan
sebaliknya.
Gambar .
Daftar task indexed berdasarkan prioritas
Penghitungan
ulang dari task yang memiliki prioritas yang dinamis berlangsung
ketika task telah menyelesaikan waktu kuantumnya dan akan
dipindahkan ke expired array. Jadi, ketika ada dua larik ( array)
ditukar, semua task di array aktif yang baru ditentukan
prioritasnya yang baru dan disesuaikan juga time slices-nya.
PENJADWALAN
PROSES SISTEM OPERASI WINDOWS XP
Developer
|
Microsoft
Corporation
|
Release
date
|
|
Current
version
|
5.1.2600.5512
Service Pack 3 (x86 SP3) (21 April 2008; 2 years ago) (info)
|
Source
model
|
|
Kernel type
|
|
Update
method
|
|
Platform support
|
|
Website
|
Windows XP
menggunakan algoritma, prioritas penjadwalan quantum-based berbasis reemptive
priority scheduling .
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:
- thread menjadi prioritas lebih tinggi-siap
- thread berakhir
- kuantum habis waktu
- thread melakukan panggilan sistem pemblokiran, seperti untuk I / O, dalam hal ini meninggalkan keadaan ready menjadi keadaan menunggu.
Gambar
Quatum pada windows XP
32 tingkat
prioritas digunakan, di mana prioritas 31 merupakan prioritas tertinggi dan
prioritas 0 adalah prioritas terendah
- memori manajemen thread: prioritas 0
- variabel kelas prioritas (1-15)
- real-time kelas prioritas (16-31)
- 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