prioritas rendah yang dibutuhkan oleh proses prioritas tinggi.
24.6. Penjadwalan Proses
Ulasan kita mengenai penjadwalan sejauh ini difokuskan pada sistem waktu nyata lembut. Pada sistem waktu nyata lembut, penjadwalan untuk sistem tidak memberi jaminan kapan proses critical
akan di jadwalkan, akan tetapi memberi jaminan bahwa proses tersebut akan didahulukan daripada proses yang tidak critical. Sebaliknya, pada sistem waktu nyata keras, persyaratan penjadwalan
menjadi lebih ketat. Sebuah proses harus dilayani berdasarkan deadline-nya; sehingga jika sebuah proses dilayani setelah deadline berakhir, maka proses tidak akan mendapat pelayanan sama sekali.
Karakteristik dari proses yang ada pada sistem waktu nyata adalah proses tersebut dianggap periodik, karena membutuhkan CPU pada interval yang konstan periode. Setiap proses berperiode
memiliki waktu pemrosesan yang fix yaitu t, setiap kali mendapatkan CPU, sebuah deadline d ketika proses tersebut harus dilayani oleh CPU, dan sebuah periode p. Hubungan antara waktu pemrosesan,
deadline, dan periode dapat dinyatakan sebagai 0 t d p. Rate dari sebuah proses berperiodik adalah 1p.
Gambar 24.1. Proses Berkala
Hal yang tidak biasa dari bentuk penjadwalan ini adalah proses akan mengumumkan deadline-nya pada penjadwal. Kemudian dengan algoritma admission-control, penjadwal akan menyatakan
bahwa proses akan diselesaikan tepat waktu atau ditolak permohonannya karena tidak dapat menjamin bahwa proses akan dapat dilayani sesuai deadline.
Beberapa algoritma penjadwalan untuk sistem waktu nyata keras:
Rate Monotonic
Algoritma ini menjadwalkan proses berperiodik berdasarkan ketentuan prioritas statik dengan preemption. Jika proses berprioritas rendah sedang berjalan dan proses berprioritas tinggi siap untuk
dijalankan, maka yang akan didahulukan adalah proses berprioritas rendah. Untuk memasuki sistem,
203
setiap proses berperiodik mendapatkan prioritas dengan inversi berdasarkan periodenya: periode lebih pendek, prioritas tinggi, periode lebih panjang, prioritas rendah. Semakin rendah periodenya
maka akan semakin tinggi prioritasnya, dan demikian pula sebaliknya.
Contoh penjadwalan menggunakan rate monotonic : diketahui 2 buah proses P1 dan P2, dimana periode P1 adalah 50 dan periode P2 adalah 100. Sedangkan waktu pemrosesan untuk P1 adalah
t1=20 dan untuk P2 adalah t2=35. Deadline dari proses mempersyaratkan untuk menyelesaikan CPU burst-nya pada awal dari periode berikutnya. Utilisasi CPU dari proses P1 yang merupakan
rasio t1p1, adalah 2050=0,40 dan utilisasi CPU dari proses P2 adalah 35100=0,35 sehingga total utilisasi CPU-nya adalah75. Oleh karena itu, tampaknya kita bisa menjadwal proses ini dalam
sebuah cara yang dapat memenuhi deadline dan menyisakan cycle untuk CPU.
Dengan menggunakan penjadwalan rate monotonic, P1 akan mendapat prioritas lebih tinggi dari P2, karena periode P1 lebih pendek daripada P2. P1 mulai terlebih dahulu dan menyelesaikan CPU burst
pada waktu 20 memenuhi deadline pertama. Kemudian dilanjutkan dengan P2 sampai dengan waktu 50. pada waktu ini, P2 di preempted oleh P1, walaupun P2 masih memiliki sisa 5 miliseconds
di CPU burst-nya. P1 menyelesaikan CPU burst-nya di waktu 70, di waktu ini penjadwal melanjutkan P2. P2 menyelesaikan CPU burst-nya di waktu 75, memenuhi deadline pertamanya.
Sistem idle sampai waktu 100, kemudian P1 dijadwalkan kembali.
Earliest-Deadline-First
Penjadwalan dilakukan berdasarkan deadline, yaitu semakin dekat deadline-nya maka semakin tinggi prioritasnya, dan demikian pula sebaliknya. Ketentuan yang berlaku, ketika proses akan mulai
jalan, maka proses akan mengumumkan syarat deadline-nya pada sistem. Prioritas harus ditentukan untuk menggambarkan deadline dari proses yang baru dapat berjalan.
Contoh penjadwalan mengunakan Earliest Deadline First: P1 memiliki p1=50 dan t1=25 dan P2 memiliki p2=80 dan t2=35. P1 akan mendapat prioritas awal lebih tinggi karena P1 lebih mendekati
deadline daripada P2. Kemudian dilanjutkan oleh P2 di akhir burst time dari P1. apabila pada penjadwalan rate monotonic membiarkan P1 untuk melanjutkan kembali, maka pada EDF, P2
deadline pada 80 yang melanjutkan karena lebih dekat deadline daripada P1 deadline pada 100. Jadi, P1 dan P2 telah menemui deadline pertama-nya. Proses P1 mulai jalan lagi di waktu 60 dan
menyelesaikan CPU burst time keduanya di waktu 85, juga menemui deadline keduanya di waktu 100. P2 mulai jalan di titik ini, hanya dapat di preempted oleh P1 diawal periode selanjutnya di
waktu 100. P2 di preempted karena P1 memiliki deadline lebih awal waktu 150 dari pada P2 pada waktu 160. Di waktu 125, P1 menyelesaikan CPU burst-nya dan P2 melanjutkan eksekusinya,
selesai di waktu 145 dan menemui deadline-nya. Sistem idle sampai waktu 150, kemudian P1 dijadwalkan untuk dijalankan lagi.
Berbeda dengan algoritma rate-monotonic, penjadwalan EDF tidak membutuhkan proses periodik, dan tidak juga membutuhkan jumlah waktu CPU per-burst yang konstan. Syarat satu-satunya dari
penjadwalan EDF adalah proses mengumumkan deadlinenya pada penjadwal ketika dapat jalan. Secara teoritis, algoritma ini optimal, yaitu dapat memenuhi semua deadline dari proses dan juga
dapat menjadikan utilisasi CPU menjadi 100. Namun dalam kenyataannya hal tersebut sulit terjadi karena biaya dari context switching antara proses dan interrupt handler.
Proportional Share
Penjadwalan ini akan mengalokasikan T bagian diantara semua aplikasi. Sebuah aplikasi dapat menerima N bagian waktu, yang menjamin bahwa aplikasi akan memiliki NT dari total waktu
prosesor. Sebagai contoh, diasumsikan ada total dari T=100 bagian untuk dibagi diantara tiga proses yaitu, A, B, dan C. A mendapatkan 50 bagian, B mendapat 15 bagian, dan C mendapat 20 bagian.
Hal ini menjamin bahwa A akan mendapat 50 dari total proses, B mendapat 15 dari total proses, dan C mendapat 20 dari total proses.
Penjadwalan proportional share harus bekerja dengan memasukkan ketentuan admission control untuk menjamin bahwa aplikasi mendapatkan alokasi pembagian waktunya. Ketentuan admission
control hanya akan menerima permintaan klien terhadap sejumlah bagian apabila bagian yang diinginkan tersedia. Dicontoh kita sebelumnya, kita telah mengalokasikan 50+15+20=75 bagian dari
total 100 bagian. Jika sebuah proses baru D meminta 30 bagian, admission controller seharusnya meniadakan entryD ke dalam sistem.
204