Penjadwalan adalah
fungsi dasar dari suatu sistem operasi. Hampir semua sumber komputer dijadwal
sebelum digunakan. CPU salah satu sumber dari komputer yang penting yang
menjadi sentral dari sentral penjadwal di sistem operasi. Dalam suatu sistem
operasi, operasi yang membuat pilihan dinamakan scheduler (penjadwalan),
sedangkan algoritma yang digunakan dinamakan schedulling algorithm (algoritma
penjadwalan). Penjadwalan sangat penting dalam menentukan performance sebuah
komputer karena mengatur alokasi resource dari CPU untuk menjalankan
proses-proses di dalam komputer. Penjadwalan CPU merupakan suatu konsep dasar
dari multiprograming, karena dengan adanya penjadwalan dari CPU itu
sendiri maka proses-proses tersebut akan mendapatkan alokasi resource dari
CPU.
Dalam suatu sistem operasi,
operasi yang membuat pilihan dinamakan scheduler (penjadwalan), sedangkan
algoritma yang digunakan dinamakan schedulling algorithm (algoritma
penjadwalan)[1]. Penjadwalan atau scheduling adalah sebuah metode dalam sistem
operasi yang mengatur proses-proses yang akan berjalan dalam suatu sistem
operasi[1]. Hal ini sangat diperlukan karena pada saat ini komputer berbasiskan
multiprogramming. Multiprogramming bertujuan untuk memaksimalkan
penggunaan CPU dengan cara mengatur alokasi waktu yang digunakan oleh CPU,
sehingga proses berjalan sepanjang waktu dan memperkecil waktu idle.
Akibatnya sistem operasi dapat membuat komputer lebih produktif. Oleh karena
itu perlu adanya penjadwalan proses-proses yang ada pada system[1]. Penjadwalan
CPU adalah suatu proses pengaturan atau penjadwalan proses-proses yang ada di
dalam computer[1]. Dimana proses-proses tersebut berjalan dalam pola yang
disebut Siklus Burst[2]. Keberhasilan dari penjadwalan CPU tergantung
dari beberapa properti prosesor. Pengeksekusian dari proses tersebut terdiri
atas siklus CPU ekskusi dan I/O Wait[2]. Proses hanya akan bolak-balik
dari dua state ini, inilah yang disebut Siklus Burst CPU-I/O.
Jika dalam suatu proses Burst CPU jauh lebih besar daripada Burst I/O
maka disebut CPU Bound. Demikian juga sebaliknya disebut dengn I/O
Bound. [2]
Penjadwalan CPU
mungkin akan dijalankan ketika proses dalam keadaan: berubah dari running ke
waiting state, berubah dari running ke ready state,
berubah dari waiting ke ready state atau terminates.
Proses running ke waiting state dan terminates adalah proses Non Preemptive, dimana proses
tersebut tidak bisa di- interrupt, sedangkan proses running ke ready
state dan waiting ke ready state adalah proses Preemptive,
dimana proses boleh di interrupt. [3]
Bagian dari sistem
Komponen yang lain yang terlibat dalam penjadwalan CPU adalah dispatcher.
Dispatcher adalah modul yang memberikan kontrol CPU kepada proses yang
sedang terjadwal. Fungsinya adalah sebagai Context switching yaitu
mengganti state dari suatu proses dan mengembalikannya untuk menghindari
monopoli CPU time. Context switching dilakukan untuk menangani
suatu interrupt (misalnya menunggu waktu I/O)[2]. Untuk menyimpan state
dari proses-proses yang terjadwal sebuah Process Control Block harus
dibuat untuk mengingat proses-proses yang sedang diatur schedule[2]r.
Selain state suatu proses, PCB juga menyimpan process ID, program
counter(posisi saat ini pada program), prioritas proses dan data-data
tambahan lainnya. Fungsi lain dari dispatcher adalah sebagai Switching to
user mode dari kernel
mode dan lompat dari suatu bagian di progam user untuk mengulang
program. Waktu yang diperlukan oleh dispatcher untuk menghentikan
suatu proses dan memulai proses yang lain disebut dengan dispatch latency[2].
A.
Tipe
Penjadwalan
Terdapat
3 tipe penjadwal berada secara bersama-sama pada sistem operasi yangm kompleks,
yaitu:
1.
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[3].
2.
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[3].
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
proses dimasukkan kembali ke memori utama dan ready[3].
3.
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, perangkat masukan/keluaran),
program-program ini berprioritas rendah, digunakan sebagai pengisi (agar
pemroses sibuk) selama periode aktivitas job-job interaktif rendah[3].
B.
Strategi
penjadwalan
Terdapat dua strategi
penjadwalan, yaitu :
1.
Penjadwalan
nonpreemptive (run to completion)
Proses diberi jatah waktu oleh
pemroses, maka pemroses tidak dapat diambil alih oleh proses lain sampai proses
itu selesai[3].
2.
Penjadwalan
preemptive
Proses diberi jatah waktu oleh pemroses,
maka pemroses dapat diambil alih proses lain, sehingga proses disela sebelum
selesai dan harus dilanjutkan menunggu jatah waktu pemroses tiba kembali pada
proses itu. Berguna pada sistem dimana proses-proses yang mendapat
perhatian/tanggapan pemroses secara cepat, misalnya :
a.
Pada
sistem realtime, kehilangan interupsi (tidak layani segera) dapat
berakibat fatal[3].
Pada sistem
interaktif, agar dapat menjamin waktu tanggap yang memadai. Penjadwalan secara
preemptive baik tetapi harus dibayar mahal. Peralihan proses memerlukan
overhead (banyak tabel yang dikelola). Supaya efektif, banyak proses harus
berada di memori utama sehingga proses-proses tersebut dapat segera running
begitu diperlukan. Menyimpan banyak proses tak running benar-benar di memori utama
merupakan suatu overhead tersendiri[3].
Penjadwalan
berkaitan dengan permasalahan memutuskan proses mana yang akan dilaksanakan
dalam suatu sistem. Proses yang belum mendapat jatah alokasi dari CPU akan
mengantri di ready queue. Algoritma penjadwalan berfungsi untuk
menentukan proses manakah yang ada di ready queue yang akan dieksekusi
oleh CPU. Terdapat berbagai macam
algoritma, antara lain:
a.
First
Come First Serve.
Algoritma ini mendahulukan proses yang lebih dulu datang. Kelemahannya, waiting
time rata-rata cukup lama.
b.
Shortest
Job First.
Algoritma ini mendahulukan proses dengan CPU burst terkecil sehingga
akan mengurangi waiting time rata-rata.
c.
Priority
Scheduling.
Algoritma ini mendahulukan prioritas terbesar. Kelemahannya, prioritas kecil
tidak mendapat jatah CPU Hal ini dapat diatasi dengan aging yaitu
semakin lama lama menunggu, prioritas semakin tinggi.
d.
Round
Robin. Algoritma
ini menggilir proses-proses yang ada diantrian dengan jatah time quantum yang
sama. Jika waktu habis, CPU dialokasikan ke proses selanjutnya.
e.
Multilevel
Queue. Algoritma
ini membagi beberapa antrian yang akan diberi prioritas berdasarkan tingkatan.
Tingkatan lebih tinggi menjadi prioritas utama.
f.
Multilevel
Feedback Queue.
Pada dasarnya sama dengan Multilevel Queue, yang membedakannya adalah
pada algoritma ini diizinkan untuk pindah antrian.
Keenam algoritma penjadwalan
memiliki karakteristik beserta keunggulan dan kelemahannya masing-masing.
Namun, Multilevel Feedback Queue Scheduling sebagai algoritma yang
paling kompleks, adalah algoritma yang paling banyak digunakan saat ini[3].
Preemptive,
menggunakan konsep :
a.
RR
(Round Robin).
Merupakan
Penjadwalan yang paling tua, sederhana, adil,banyak digunakan algoritmanya,dan
mudah diimplementasikan. Penjadwalan ini bukan dipreempt oleh proses lain
tetapi oleh penjadwal,berdasarkan lama waktu berjalannya proses (preempt by
time). Berasumsi bahwa semua proses memiliki kepentingan yang sama, sehingga
tidak ada prioritas tertentu. Semua proses dianggap penting sehingga diberi
sejumlah waktu oleh pemroses yang disebut kwanta (quantum) atau time slice
dimana proses itu berjalan. Jika proses masih running sampai akhir quantum,
maka CPU akan mempreempt proses itu dan memberikannya ke proses lain[4].
b.
SRF
(Shortest Remaining First).
Penjadwalan
berprioritas.dinamis. yang preemptive
untuk timesharing serta melengkapi SJF. Pada SRF, proses dengan sisa waktu
jalan diestimasi terendah dijalankan, termasuk proses-proses yang baru tiba[4].
SRF
perlu menyimpan waktu layanan yang telah dihabiskan , menambah overhead. Secara
teoritis, SRF memberi waktu tunggu minimum tetapi karena overhead peralihan,
maka pada situasi tertentu SFJ bisa memberi kinerja lebih baik dibanding SRF[4].
c.
PS
(Priority Schedulling)
Adalah
tiap proses diberi prioritas dan proses yang berprioritas tertinggi mendapat
jatah waktu lebih dulu (running). Berasumsi bahwa masing-masing proses memiliki
prioritas tertentu, sehingga akan dilaksanakan berdasar prioritas yang
dimilikinya[4].
Ilustrasi
yang dapat memperjelas prioritas tersebut adalah dalam komputer militer, dimana
proses dari jendral berprioritas 100, proses dari kolonel 90, mayor
berprioritas 80, kapten berprioritas 70, letnan berprioritas 60 dan seterusnya.
Dalam UNIX perintah untuk mengubah prioritas menggunakan perintah nice.
d.
GS
(Guaranteed Schedulling)
Penjadualan
ini memberikan janji yang realistis (memberi daya pemroses yang sama) untuk
membuat dan menyesuaikan performance adalah jika ada N pemakai, sehingga setiap
proses (pemakai) akan mendapatkan 1/N dari daya pemroses CPU. Untuk
mewujudkannya, sistem harus selalu menyimpan informasi tentang jumlah waktu CPU
untuk semua proses sejak login dan juga berapa lama pemakai sedang login[4].
Kemudian jumlah waktu CPU, yaitu waktu mulai login dibagi dengan n, sehingga
lebih mudah menghitung rasio waktu CPU. Karena jumlah waktu pemroses tiap
pemakai dapat diketahui, maka dapat dihitung rasio antara waktu pemroses yang
sesungguhnya harus diperoleh, yaitu 1/N waktu pemroses seluruhnya dan waktu
pemroses yang telah diperuntukkan proses itu[4].
REFERENSI
[1].
Pangera, Abas Ali, Dony Ariyus. Sistem Operasi. Andi. ISBN9797318400,
9789797318406.
[2].
Utami, Ema. Teori, Analisa dan Implementasi Jaringan Tanpa Disk pada GNU/Linux.
Andi. ISBN9797310736, 9789797310738.
[3].Tanenbaum,
Andrew S and Woodhull, Albert S. 1997 . Operating Systems Design and
Implementation . Second Edition. Prentice-Hall.
[4].
Silberschatz, Abraham and Galvin, Peter
and Gagne, Greg. 2002 . Applied Operating Systems. Sixth Edition. John
Wiley & Sons.
0 komentar:
"Kalau mau Copy-Paste artikel boleh saja, tapi sumbernya ke blog ini"