Dalam sesi ini, kita akan membahas berbagai algoritma untuk
penjadwalan-event. Dari pelajaran sebelumnya, kita dapat mengingat hal-hal
berikut:
Clock-driven
penjadwal adalah mereka di mana titik penjadwalan ditentukan oleh interupsi
yang diterima dari jam. Dalam event-driven, titik penjadwalan ditentukan oleh
peristiwa-peristiwa tertentu yang menghalangi clock interupsi. Yang hibrida menggunakan
kedua jam interupsi serta kejadian acara menentukan titik penjadwalan mereka
Penjadwal siklik sangat efisien. Namun, kelemahan
menonjol dari penjadwal siklik adalah bahwa hal itu menjadi sangat kompleks
untuk menentukan ukuran frame yang sesuai serta jadwal layak jika jumlah
meningkat tugas. Selanjutnya, di hampir setiap frame beberapa waktu pemrosesan
yang terbuang (sebagai ukuran frame lebih besar dari setiap saat pelaksanaan
tugas) yang mengakibatkan jadwal sub-optimal. Penjadwal-event mengatasi
kekurangan ini. Selanjutnya, penjadwal-event dapat menangani tugas-tugas
aperiodik dan sporadis lebih mahir. Di sisi lain, penjadwal-event kurang
efisien karena mereka menyebarkan algoritma penjadwalan lebih kompleks. Oleh
karena itu, penjadwal-event kurang cocok untuk aplikasi embedded seperti ini
dituntut untuk ukuran kecil, biaya rendah, dan mengkonsumsi sejumlah kecil
daya.
Sekarang harus jelas mengapa penjadwal-event
yang selalu digunakan dalam semua
aplikasi moderat dan berukuran
besar yang memiliki banyak tugas,
sedangkan penjadwal siklik yang banyak digunakan dalam aplikasi kecil.
Dalam penjadwalan-event, titik penjadwalan ditentukan
oleh penyelesaian tugas dan acara
kedatangan tugas. Kelas ini penjadwal biasanya
preemptive, yaitu, ketika sebuah tugas prioritas yang lebih
tinggi menjadi siap, preempts setiap tugas prioritas
yang lebih rendah yang mungkin berjalan.
1.1. Types of Event Driven Schedulers
Kita akan membahas tiga jenis penting penjadwalan
berdasarkan kejadian:
·
Simple priority-based
·
Rate Monotonic Analysis (RMA)
·
Earliest Deadline First (EDF)
Yang paling sederhana di antaranya adalah latar belakang-scheduler,
yang akan kita bahas selanjutnya.
Pada bagian 3.4, kita
membahas EDF dan dalam bagian 3.5, kita
membahas RMA.
1.2. Foreground-Background Scheduler
Sebuah latar Foreground-scheduler mungkin sederhana prioritas-driven preemptive
scheduler. Dalam penjadwalan foreground-background, real-time tugas dalam aplikasi
dijalankan sebagai tugas kedepan tanah. Sporadis, aperiodik, dan non-real-time
tugas dijalankan sebagai tugas latar belakang. Di antara tugas-tugas latar
depan, di setiap titik penjadwalan tugas prioritas tertinggi diambil untuk penjadwalan.
Sebuah tugas latar belakang dapat berjalan ketika tidak ada tugas latar depan
siap. Dengan kata lain, tugas latar belakang dijalankan pada prioritas
terendah.
Mari kita
asumsikan bahwa dalam suatu sistem real-waktu tertentu, ada tugas latar depan n
yang dilambangkan sebagai: T1, T2, ..., Tn. Seperti telah disebutkan, tugas
latar depan semua periodik. Biarkan TB menjadi satu-satunya tugas latar
belakang. Biarkan eB menjadi syarat waktu proses TB. Dalam hal ini, waktu
penyelesaian (CTB) untuk tugas latar belakang diberikan oleh:
ctB = eB / (1−i=1Σ
nei / pi) …
(3.1/2.7)
Ungkapan ini mudah untuk menafsirkan. Ketika setiap tugas latar depan
mengeksekusi, tugas latar belakang menunggu. Penggunaan CPU rata-rata karena
latar depan tugas Ti ei / pi, sejak ei jumlah waktu pemrosesan yang diperlukan
selama setiap periode pi. Ini berarti bahwa semua tugas latar depan
bersama-sama akan menghasilkan utilisasi CPU dari i = nei 1Σ / pi. Oleh karena
itu, rata-rata waktu yang tersedia untuk pelaksanaan tugas latar belakang di
setiap unit waktu 1-i = 1Σ nei / pi. Oleh karena itu, Expr. 2.7 berikut dengan
mudah. Kita sekarang menggambarkan penerapan Expr. 2,7 melalui tiga contoh
sederhana berikut.
1.3. Examples
Contoh 1: Pertimbangkan sebuah sistem real-time di mana tugas-tugas yang
dijadwalkan menggunakan penjadwalan latar-belakang. Hanya ada satu periodik
foreground tugas Tf: (φf = 0, pf = 50 msec, ef = 100 msec, df = 100 msec) dan
tugas latar belakang menjadi TB = (eB = 1000 msec). Menghitung waktu
penyelesaian untuk tugas latar belakang.
Solusi: Dengan menggunakan ekspresi (2.7) untuk menghitung waktu
penyelesaian tugas, kita memiliki
ctB = 1000 / (1−50/100) = 2000
msec
Jadi, tugas TB background
akan mengambil 2000 milidetik untuk menyelesaikan.
Contoh 2:
Secara sederhana prioritas-driven preemptive scheduler, dua tugas T1 dan T2
periodik dan tugas latar belakang dijadwalkan. Periodik T1 tugas memiliki
prioritas tertinggi dan mengeksekusi sekali setiap 20 milidetik dan membutuhkan
10 milidetik waktu eksekusi setiap kali. T2 membutuhkan 20 milidetik pengolahan
setiap 50 milidetik. T3 merupakan tugas latar belakang dan membutuhkan 100
milidetik untuk menyelesaikan. Dengan asumsi bahwa semua tugas mulai dari waktu
0, menentukan waktu di mana T3 akan menyelesaikan.
Contoh 3:
Misalkan dalam contoh 1, overhead dari 1 msec pada rekening setiap konteks
saklar yang harus diperhitungkan. Hitunglah waktu penyelesaian TB.
switching overhead dari 1 msec. Ini telah ditunjukkan sebagai persegi
panjang yang diarsir pada Gambar. 30.1. Selanjutnya setiap kali tugas latar
depan berjalan, preempts tugas latar belakang dan menimbulkan satu konteks
switch. Setelah menyelesaikan setiap contoh tugas latar depan, tugas latar
belakang berjalan dan menimbulkan lain context switch. Dengan pengamatan ini,
untuk menyederhanakan perhitungan kita tentang waktu penyelesaian sebenarnya TB, kita dapat membayangkan
bahwa waktu eksekusi dari setiap tugas latar depan meningkat dua kali konteks
beralih (satu karena dirinya sendiri dan yang lain karena tugas latar belakang
berjalan setelah setiap waktu itu selesai). Dengan demikian, efek bersih dari
konteks switch bisa dibayangkan akan menyebabkan waktu pelaksanaan tugas latar
depan meningkat 2 kali konteks switch, yaitu sampai 52 milidetik dari 50 milidetik.
Hal ini pictorially telah ditunjukkan dalam Gambar. 30.1.
Sekarang, dengan menggunakan Expr. 2.7, kita
mendapatkan waktu yang dibutuhkan oleh tugas latar belakang untuk menyelesaikan:
1000/(1−52/100) =
2083.4 milliseconds
Dalam dua
bagian berikut, kita memeriksa dua penting penjadwal-event: EDF (Earliest
Deadline) dan RMA (Tingkat monotonik Algoritma). EDF adalah algoritma dinamis
yang optimal prioritas real-time tugas penjadwalan dan RMA adalah algoritma
statis yang optimal prioritas real-time penjadwalan tugas.
1.4. Earliest Deadline First (EDF) Scheduling
Dalam Batas
Pertama (EDF) penjadwalan awal, di setiap titik penjadwalan tugas memiliki
tenggat waktu terpendek diambil untuk penjadwalan. Ini prinsip dasar algoritma
ini sangat intuitif dan mudah dimengerti. Tes schedulability untuk EDF juga
sederhana. Satu set tugas schedulable bawah EDF, jika dan hanya jika memenuhi
syarat bahwa pemanfaatan prosesor total karena ke set tugas kurang dari 1.
Untuk satu set periodik tugas real-time {T1, T2, ..., Tn}, kriteria
schedulability EDF dapat dinyatakan sebagai:
i=1Σ nei / pi = i=1Σ
nui ≤ 1
… (3.2/2.8)
dimana ui rata-rata utilisasi karena tugas
Ti dan n adalah jumlah
tugas di set tugas.
Expr. 3.2 merupakan
sebuah kondisi yang cukup untuk satu
set tugas yang diperlukan dan
menjadi EDF schedulable.
set tugas tidak schedulable bawah EDF, maka tidak ada algoritma penjadwalan lainnya feasibly dapat menjadwalkan tugas ini ditetapkan. Pada uji schedulability sederhana untuk EDF (Expr. 3.2), kita mengasumsikan bahwa periode tugas masing-masing adalah sama dengan tenggat waktu. Namun, dalam masalah-masalah praktis masa tugas terkadang berbeda dari tenggat waktu. Dalam kasus
tersebut, tes schedulability perlu diubah. Jika pi> di, maka setiap tugas yang perlu ei jumlah waktu komputasi setiap menit (pi, di) durasi waktu. Oleh karena itu, kita dapat menulis
ulang Expr. 3.2 sebagai:
i=1Σ nei / min(pi, di) ≤
1 … (3.3/2.9)
Namun, jika pi
<di, adalah mungkin bahwa satu set tugas adalah EDF schedulable, bahkan
ketika set tugas gagal memenuhi Expr 3.3. Oleh karena itu, Expr 3.3 adalah
konservatif ketika pi <di, dan bukan merupakan kondisi yang diperlukan,
tetapi hanya kondisi yang cukup untuk tugas yang diberikan ditetapkan menjadi
EDF schedulable.
Meskipun EDF adalah sederhana serta algoritma yang optimal, ia memiliki beberapa kekurangan yang membuat hampir tidak dapat digunakan dalam aplikasi praktis. Masalah utama dengan EDF dibahas dalam Sec. 3.4.3. Selanjutnya, kita membahas konsep tugas prioritas di EDF dan kemudian mendiskusikan bagaimana EDF dapat praktis
dilaksanakan.
1.4.1. Is EDF Really a Dynamic Priority Scheduling
Algorithm?
Kami menyatakan
di Sec 3.3 bahwa EDF algoritma penjadwalan prioritas dinamis. Apakah setelah
semua benar pada bagian kita untuk menegaskan bahwa EDF merupakan algoritma
penjadwalan tugas prioritas dinamis? Jika EDF itu harus dianggap sebagai
prioritas algoritma yang dinamis , kita harus bisa menentukan nilai prioritas
yang tepat dari tugas pada setiap titik waktu dan juga dapat menunjukkan
bagaimana perubahan dengan waktu . Jika kita merenungkan diskusi kami EDF dalam
bagian ini , penjadwalan EDF tidak memerlukan nilai prioritas harus dihitung
untuk setiap tugas setiap saat . Bahkan , EDF tidak memiliki gagasan tentang
nilai prioritas untuk suatu tugas . Tugas dijadwalkan hanya berdasarkan
kedekatan tenggat waktu mereka . Namun, semakin lama tugas menunggu dalam
antrian siap, semakin tinggi adalah kesempatan ( probabilitas ) yang diambil
untuk penjadwalan . Jadi , kita dapat membayangkan bahwa nilai prioritas maya
terkait dengan tugas terus meningkat dengan waktu sampai tugas diambil untuk
penjadwalan . Namun, penting untuk memahami bahwa di EDF tugas tidak memiliki
nilai prioritas yang terkait dengan mereka , juga tidak scheduler melakukan
salah perhitungan prioritas untuk menentukan schedulability dari tugas baik di
waktu berjalan atau waktu kompilasi .
1.4.2. Implementation of EDF
Implementasi yang naif EDF akan mempertahankan semua tugas yang siap untuk dieksekusi dalam antrian. Setiap tugas baru tiba akan dimasukkan pada akhir antrian. Setiap node dalam antrian akan berisi batas waktu mutlak tugas. Pada setiap titik preemption, seluruh antrian akan dipindai dari awal untuk menentukan tugas memiliki tenggat waktu terpendek. Namun, implementasi ini akan sangat tidak efisien. Mari kita menganalisis kompleksitas skema ini. Setiap penyisipan tugas akan dicapai dalam O (1) atau waktu konstan, tapi seleksi tugas (untuk menjalankan berikutnya) dan penghapusan yang akan membutuhkan O (n) waktu, dimana n adalah jumlah tugas dalam antrian.
Implementasi yang lebih efisien EDF akan menjadi sebagai berikut. EDF dapat
diimplementasikan dengan mempertahankan semua tugas siap dalam antrian prioritas diurutkan. Sebuah prioritas antrian diurutkan secara efisien dapat
diimplementasikan dengan menggunakan struktur data heap. Dalam antrian prioritas, tugas selalu disimpan diurutkan sesuai dengan kedekatan tenggat waktu mereka. Ketika tugas tiba, sebuah rekor untuk dapat dimasukkan ke dalam tumpukan di O (log2 n) waktu di mana n adalah jumlah tugas dalam antrian prioritas. Pada setiap titik penjadwalan, tugas berikutnya yang akan dijalankan dapat ditemukan di bagian atas tumpukan. Ketika tugas diambil untuk penjadwalan, perlu dihapus dari antrian prioritas. Hal ini dapat dicapai dalam O (1) waktu.
Implementasi yang masih lebih efisien dari EDF dapat dicapai sebagai
berikut dengan asumsi bahwa jumlah tenggat waktu yang berbeda bahwa tugas-tugas
dalam aplikasi dapat memiliki dibatasi. Dalam pendekatan ini, setiap kali tugas
tiba, batas waktu mutlak dihitung dari waktu rilis dan tenggat waktu relatif.
Sebuah antrian FIFO terpisah dipelihara untuk setiap tenggat waktu relatif
berbeda yang tugas dapat memiliki. Scheduler menyisipkan tugas baru tiba pada
akhir batas waktu antrian relatif sesuai. Jelas, tugas di setiap antrian yang
diperintahkan sesuai dengan tenggat waktu mutlak mereka.
Untuk menemukan tugas dengan tenggat waktu mutlak awal, scheduler hanya perlu mencari di antara benang-benang semua antrian FIFO. Jika jumlah antrian prioritas dikelola oleh scheduler adalah Q, maka urutan pencarian akan menjadi O (1). Waktu untuk memasukkan tugas juga akan menjadi O (1).
1.4.3. Shortcomings of EDF
Dalam subbagian ini, kami menyoroti beberapa kekurangan penting EDF bila digunakan untuk penjadwalan tugas real-time dalam aplikasi praktis.
Transient
Overload Soal : kelebihan
Transient menunjukkan kelebihan dari sistem untuk waktu yang sangat singkat .
Kelebihan Transient terjadi ketika beberapa tugas membutuhkan waktu lebih lama
untuk menyelesaikan daripada apa yang awalnya direncanakan selama waktu desain
. Sebuah tugas mungkin memakan waktu lebih lama untuk menyelesaikan karena
berbagai alasan . Sebagai contoh, mungkin memasuki infinite loop atau menemukan
sebuah kondisi yang tidak biasa dan masukkan cabang jarang digunakan karena
beberapa nilai input abnormal. Ketika EDF digunakan untuk menjadwalkan satu set
periodik tugas real-time , sebuah overshoot waktu tugas selesai dapat
menyebabkan beberapa tugas lain ( s ) untuk melewatkan tenggat waktu mereka . Hal
ini biasanya sangat sulit untuk memprediksi selama desain program mana tugas
mungkin akan kehilangan tenggat waktu ketika kelebihan beban transien terjadi
pada sistem karena prioritas rendah tugas overshoot batas waktunya .
Satu-satunya prediksi yang dapat dibuat adalah bahwa tugas ( tugas ) yang akan
segera berjalan setelah tugas menyebabkan kelebihan beban transien akan
mendapatkan ditunda dan mungkin kehilangan ( mereka) batas waktu masing-masing
( s ) . Namun , pada waktu yang berbeda tugas mungkin diikuti dengan tugas yang
berbeda dalam pelaksanaan . Namun , hal ini menyebabkan tidak membantu kita
untuk menemukan mana tugas mungkin kehilangan tenggat waktu . Bahkan tugas yang
paling penting mungkin akan kehilangan tenggat waktu karena prioritas yang sangat
rendah tugas overshoot waktu penyelesaian yang direncanakan . Jadi , itu harus
jelas bahwa di bawah EDF setiap jumlah desain hati-hati tidak akan menjamin
bahwa tugas yang paling penting tidak akan melewatkan batas waktu di bawah
berlebihan sementara. Ini adalah kelemahan serius dari algoritma penjadwalan
EDF .
Sumber Sharing Masalah: Saat EDF digunakan untuk menjadwalkan satu set
tugas real-time, tidak dapat diterima overhead tinggi mungkin harus dikeluarkan
untuk mendukung berbagi sumber daya antara tugas-tugas tanpa membuat tugas
untuk melewatkan tenggat waktu masing-masing. Kami memeriksa masalah ini secara
rinci dalam pelajaran berikutnya.
Efisien Pelaksanaan Masalah: efisien implementasi yang kita bahas dalam Sec. 3.4.2 sering tidak praktis karena sulit untuk membatasi jumlah tugas dengan tenggat waktu yang berbeda ke nomor yang wajar. Yang efisien implementasi yang mencapai O (1) biaya overhead mengasumsikan bahwa jumlah tenggat waktu relatif dibatasi. Ini mungkin tidak dapat diterima dalam beberapa
situasi. Untuk algoritma EDF lebih fleksibel, kita perlu menjaga tugas memerintahkan dalam hal tenggat waktu mereka menggunakan antrian prioritas. Setiap kali tugas tiba, itu dimasukkan ke dalam antrian prioritas. Kompleksitas penyisipan elemen ke dalam antrian prioritas adalah urutan log2 n, dimana n adalah jumlah tugas yang harus dijadwalkan. Ini merupakan overhead runtime tinggi, karena sebagian besar
tugas real-time yang periodik dengan periode kecil dan tenggat waktu yang ketat.
1.5. Rate Monotonic Algorithm(RMA)
Kami sudah menunjukkan bahwa RMA merupakan algoritma penjadwalan-event penting. Ini adalah algoritma prioritas statis dan secara luas digunakan dalam aplikasi praktis. RMA memberikan prioritas pekerjaan
berdasarkan tarif mereka kejadian. Semakin rendah tingkat kejadian tugas, semakin rendah adalah prioritas yang ditugaskan untuk itu. Sebuah tugas yang memiliki tingkat kejadian tertinggi (periode terendah) yang diberikan prioritas tertinggi. RMA telah terbukti menjadi algoritma statis yang optimal prioritas real-time penjadwalan tugas.
Di RMA, prioritas tugas berbanding lurus dengan laju (atau, berbanding terbalik
dengan periodenya). Artinya, prioritas setiap tugas Ti dihitung sebagai: prioritas = k / pi, dimana pi adalah periode tugas Ti dan k adalah konstanta. Menggunakan ungkapan sederhana ini, plot nilai prioritas tugas di bawah RMA untuk tugas-tugas dari periode yang berbeda dapat dengan mudah diperoleh. Plot ini telah ditunjukkan pada
Gambar. 30.10 (a) dan Gambar. 30.10 (b). Hal ini dapat dilihat dari angka-angka yang prioritas tugas meningkat secara linear dengan tingkat kedatangan tugas dan berbanding
terbalik dengan jangka waktunya.
1.5.1. Schedulability Test for RMA
Masalah penting yang dibahas selama desain sistem real-time berbasis prosesor tunggal adalah untuk memeriksa apakah suatu set periodik tugas real-time feasibly bisa dijadwalkan di bawah RMA. Schedulability dari tugas yang ditetapkan dalam RMA dapat ditentukan dari pengetahuan tentang eksekusi kali terburuk dan periode tugas. Sebuah pertanyaan yang bersangkutan pada saat ini adalah bagaimana bisa seorang pengembang sistem menentukan kasus terburuk waktu pelaksanaan tugas bahkan sebelum sistem ini dikembangkan. Yang terburuk kali eksekusi biasanya ditentukan secara
eksperimental atau melalui simulasi.
Berikut ini adalah
beberapa kriteria
penting yang
dapat digunakan untuk memeriksa schedulability dari satu set tugas yang ditetapkan di bawah RMA.
1.5.1.1 Necessary Condition
Satu set periodik tugas real-time tidak akan RMA schedulable kecuali mereka memenuhi kondisi yang diperlukan sebagai berikut:
i=1Σ nei / pi = i=1Σ
nui ≤ 1
dimana ei adalah yang terburuk waktu eksekusi kasus dan pi adalah periode tugas Ti, n adalah jumlah tugas yang akan dijadwalkan, dan ui adalah utilisasi CPU karena tugas Ti. Tes ini hanya mengungkapkan fakta bahwa penggunaan CPU total karena untuk semua tugas di set tugas harus kurang dari 1.
1.5.1.2 Sufficient Condition
Penurunan kondisi kecukupan untuk RMA schedulability adalah hasil yang penting dan diperoleh oleh Liu dan Layland pada tahun 1973. Sebuah derivasi formal Liu dan hasil Layland dari prinsip pertama adalah di luar cakupan diskusi ini. Kami kemudian akan mengacu pada kecukupan sebagai kondisi Layland Liu dan. Satu set n tugas periodik real-time schedulable bawah RMA, jika
i=1Σ nui ≤ n(21/n −
1) (3.4/2.10)
dimana ui adalah pemanfaatan karena tugas Ti. Mari kita memeriksa implikasi dari hasil ini. Jika satu set tugas memenuhi kondisi yang cukup, maka dijamin bahwa set tugas akan RMA schedulable.
Pertimbangkan kasus di mana hanya ada satu tugas dalam sistem, yaitu n = 1.
Substituting
n = 1 in Expr. 3.4, we get,
i=1Σ 1ui ≤ 1(21/1 − 1)
or i=1Σ
1ui ≤ 1
Similarly
for n = 2, we get,
i=1Σ 2ui ≤ 2(21/2 − 1)
or i=1Σ
2ui ≤
0.828
For
n = 3, we get,
i=1Σ 3ui ≤ 3(21/3 − 1)
or i=1Σ
3ui ≤ 0.78
For
n → ∞, we get,
i=1Σ ∞ui ≤ 3(21/∞ − 1) or i=1Σ ∞ui ≤ ∞.0
Evaluasi Expr. 3,4 ketika n → ∞ melibatkan ekspresi tak tentu dari jenis ∞
.0. Dengan menerapkan aturan L'Hospital, kita dapat memverifikasi bahwa sisi
kanan ekspresi bernilai loge2 = 0,692. Dari perhitungan di atas, jelaslah bahwa
penggunaan CPU maksimum yang dapat dicapai di bawah RMA adalah 1. Hal ini
dicapai ketika hanya ada satu tugas dalam sistem. Karena jumlah meningkat tugas,
penggunaan CPU dicapai jatuh dan sebagai n → ∞, pemanfaatan dicapai stabil pada
loge2, yang sekitar 0.692. Hal ini pictorially ditunjukkan pada Gambar. 30.3.
Kita sekarang menggambarkan penerapan kriteria schedulability RMA melalui
beberapa contoh.
1.5.2. Examples
Contoh 5: Periksa apakah set berikut periodik tugas real-time schedulable bawah RMA pada uniprocessor sebuah:
T1 = (e1=20, p1=100),
T2 =
(e2=30,
p2=150),
T3 =
(e3=60,
p3=200).
Solusi: Mari kita menghitung total penggunaan CPU dicapai karena tiga tugas yang diberikan.
i=1Σ 3ui =
20/100 + 30/150 + 60/200 = 0.7
Ini adalah kurang dari 1, sehingga kondisi yang diperlukan untuk schedulability tugas puas. Sekarang memeriksa kondisi kecukupan, set tugas yang schedulable bawah RMA jika kondisi Liu dan Layland yang diberikan oleh Expr. 3.4 puas Memeriksa kepuasan Expr. 3.4, pemanfaatan dicapai maksimum diberikan oleh:
3(21/3 − 1)
= 0.78
Total utilisasi telah ditemukan untuk menjadi 0,7. Sekarang mengganti ini di Liu dan kriteria Layland ini:
Jika satu set tugas lulus uji Liu dan Layland, maka dijamin akan RMA schedulable. Di sisi lain, bahkan jika satu set tugas gagal tes Liu dan Layland, masih dapat RMA schedulable.
Memang benar bahwa bahkan ketika satu set tugas gagal tes Liu dan Layland,
kita tidak harus menyimpulkan bahwa tidak schedulable bawah RMA. Kita perlu
menguji lebih lanjut untuk memeriksa apakah set tugas RMA schedulable. Sebuah
tes yang dapat per-dibentuk untuk memeriksa apakah suatu set tugas RMA
schedulable ketika gagal tes Liu dan Layland adalah tes Lehoczky itu. Uji
Lehoczky telah dinyatakan sebagai Teorema 3.
1.5.3. Theorem 3
Satu set periodik tugas real-time RMA schedulable bawah setiap tugas pentahapan, dari semua tugas memenuhi tenggat waktu masing-masing pertama mereka di bawah nol pentahapan.
Sebuah bukti formal Teorema ini adalah di luar cakupan diskusi ini. Namun, kami memberikan penalaran intuitif seperti mengapa Teorema 3 harus benar. Secara intuitif, kita dapat memahami hasil ini dari penalaran berikut. Pertama mari kita mencoba untuk memahami fakta berikut.
Yang terburuk waktu respon kasus untuk tugas terjadi bila dalam fase dengan yang lebih tinggi
Untuk melihat mengapa pernyataan ini pasti benar, menganggap pernyataan
berikut. Di bawah RMA setiap kali tugas prioritas yang lebih tinggi siap, tugas
prioritas yang lebih rendah tidak bisa mengeksekusi dan harus menunggu. Ini
berarti bahwa, tugas prioritas yang lebih rendah akan harus menunggu untuk
seluruh durasi pelaksanaan setiap tugas prioritas yang lebih tinggi yang timbul
selama pelaksanaan tugas prioritas yang lebih rendah. Lebih banyak jumlah kasus
dari tugas prioritas yang lebih tinggi akan terjadi, ketika tugas dalam fase
dengan itu, bila dalam fase dengan itu daripada keluar dari fase dengan itu.
Ini telah digambarkan melalui contoh sederhana pada Gambar. 30,4. Dalam Gambar.
30,4 (a), tugas prioritas yang lebih tinggi T1 = (10,30) dalam fase dengan
tugas prioritas yang lebih rendah T2 = (60.120), waktu respon dari T2 adalah 90
msec. Namun, pada Gambar. 30,4 (b), ketika T1 memiliki 20 msec fase, waktu
respon dari T2 menjadi 80. Oleh karena itu, jika tugas memenuhi tenggat waktu
pertama di bawah nol pentahapan, maka mereka akan memenuhi semua tenggat waktu
tersebut.
1.5.4. Achievable CPU Utilization
Liu dan hasil Layland ini (Expr. 3.4) dibatasi penggunaan CPU di bawah ini yang satu set tugas akan schedulable. Hal ini jelas dari Expr. 3.4 dan Gambar. 30.10 bahwa kriteria schedulability Liu dan Layland adalah konservatif dan membatasi pemanfaatan dicapai maksimal karena setiap set tugas yang dapat feasibly dijadwalkan bawah RMA 0,69 ketika jumlah tugas di set tugas besar. Namun, (seperti yang mungkin Anda sudah menebak) ini adalah tokoh pesimis. Bahkan, telah ditemukan bahwa eksperimen untuk koleksi besar tugas dengan periode independen, pemanfaatan maksimum di bawah ini yang satu set tugas dapat feasibly dijadwalkan pada rata-rata mendekati 88%.
Untuk tugas-tugas harmonik, pemanfaatan dicapai maksimum (untuk tugas diatur untuk memiliki jadwal feasible) masih bisa lebih tinggi. Bahkan, jika semua periode tugas yang harmonik berhubungan, maka bahkan satu set tugas yang memiliki utilisasi 100% dapat feasibly dijadwalkan. Mari kita memahami kapan periode satu set tugas dikatakan harmonik berhubungan. Periode tugas dalam satu set tugas dikatakan harmonik berhubungan, IFF untuk setiap dua tugas sewenang-wenang Ti dan Tk di set tugas, setiap kali pi> pk, harus menyiratkan bahwa pi merupakan multiple integral dari pk. Artinya, setiap kali pi> pk, itu harus mungkin untuk mengekspresikan pi sebagai n * pk untuk beberapa bilangan bulat n> 1. Dengan kata lain, harus tepat pk membagi pi. Sebuah contoh dari serangkaian tugas harmonis terkait adalah sebagai
berikut: T1 = (5, 30), T2 = (8, 120), T3 = (12, 60).
1.5.5. Theorem 4
For a set of harmonically related tasks HS = {Ti}, the
RMA schedulability criterion is given by i=1Σ nui ≤ 1.
Bukti: Mari
kita asumsikan bahwa T1, T2, ..., Tn menjadi tugas dalam himpunan tugas. Mari
kita lebih lanjut mengasumsikan bahwa tugas dalam tugas mengatur T1, T2, ...,
Tn telah diatur dalam rangka meningkatkan periode mereka. Artinya, untuk setiap
i dan j, pi <pj setiap kali i <j. Jika hubungan ini tidak puas, maka
mengubah nama sederhana dari tugas dapat mencapai hal ini. Sekarang, menurut
Expr. 3.6, tugas Ti memenuhi tenggat waktu,
if ei + k=1Σ i-1 ⎡pi / pk⎤ ∗ ek ≤ pi.
Namun, sejak set tugas yang harmonik berhubungan, pi dapat ditulis sebagai m * pk untuk beberapa m.
Using this, ⎡pi / pk⎤ = pi / pk.
Now, Expr. 3.6 can be written as:
ei + k=1Σ i-1 (pi / pk)∗ ek ≤ pi
For Ti = Tn,
we can write, en + k=1Σ n-1 (pn / pk)∗ ek ≤ pn.
Dividing
both sides of this expression by pn, we get the required
result.
Hence, the task set would be schedulable iff k=1Σ
n ek / pk ≤ 1
or i=1Σ
n ui ≤ 1.
1.5.6. Advantages and Disadvantages of RMA
Pada bagian ini, pertama-tama kita membahas keuntungan penting dari RMA atas EDF. Kami kemudian menunjukkan beberapa kelemahan menggunakan RMA. Seperti yang kita
telah dijelaskan sebelumnya, RMA sangat umum digunakan untuk penjadwalan tugas real-time dalam aplikasi praktis. Dukungan dasar yang tersedia di hampir semua sistem operasi
komersial real-time untuk mengembangkan aplikasi menggunakan RMA. RMA sederhana dan efisien. RMA juga algoritma yang optimal statis prioritas tugas penjadwalan. Tidak seperti EDF, memerlukan sangat sedikit struktur data khusus. Sistem operasi real-time yang paling
komersial mendukung tingkat prioritas real-time (statis) untuk tugas-tugas. Tugas yang memiliki tingkat prioritas real-time diatur dalam antrian umpan balik bertingkat (lihat Gambar. 30,7). Di antara tugas-tugas di tingkat satu, sistem operasi real-time komersial umumnya memberikan pilihan untuk waktu mengiris dan penjadwalan round-robin atau penjadwalan FIFO.
RMA Transient Penanganan Overload: RMA memiliki sementara kemampuan
penanganan yang berlebihan baik. Baik sementara kemampuan penanganan yang
berlebihan pada dasarnya berarti bahwa, ketika sebuah tugas prioritas yang
lebih rendah tidak selesai dalam waktu penyelesaian yang direncanakan, tidak
dapat membuat tugas prioritas yang lebih tinggi untuk melewatkan tenggat waktu.
Mari kita memeriksa bagaimana kelebihan transien akan mempengaruhi satu set
tugas yang dijadwalkan di bawah RMA. Apakah penundaan dalam penyelesaian oleh
tugas prioritas yang lebih rendah mempengaruhi tugas prioritas yang lebih
tinggi? Jawabannya adalah: 'Tidak'. Sebuah tugas prioritas yang lebih rendah
bahkan ketika itu melebihi waktu eksekusi yang direncanakan tidak dapat membuat
tugas prioritas yang lebih tinggi menunggu sesuai dengan prinsip-prinsip dasar
RMA - setiap kali tugas prioritas yang lebih tinggi siap, preempts setiap
melaksanakan tugas prioritas yang lebih rendah. Dengan demikian, RMA stabil di
bawah berlebihan sementara dan prioritas yang lebih rendah tugas overshoot
waktu penyelesaian yang tidak bisa membuat tugas prioritas yang lebih tinggi
untuk melewatkan tenggat waktu.
Kelemahan dari RMA meliputi berikut ini: Hal ini sangat sulit untuk mendukung tugas-tugas aperiodik dan sporadis bawah RMA. Selanjutnya, RMA tidak optimal ketika periode tugas dan tenggat waktu berbeda.
1.6. Deadline Monotonic Algorithm (DMA)
RMA tidak ada lagi algoritma penjadwalan yang optimal untuk tugas real-time
periodik, ketika tenggat waktu tugas dan periode berbeda (yaitu di ≠ pi) untuk
beberapa tugas dalam tugas diatur untuk dijadwalkan. Untuk set tugas tersebut,
Tenggat monotonik Algoritma (DMA) ternyata lebih mahir dibandingkan RMA. DMA
pada dasarnya adalah sebuah varian dari RMA dan memberikan prioritas tugas
berdasarkan tenggat waktu mereka, daripada prioritas menugaskan berdasarkan
periode tugas seperti yang dilakukan di RMA. DMA memberikan prioritas yang
lebih tinggi untuk tugas-tugas dengan tenggat waktu pendek. Ketika batas waktu
relatif setiap tugas sebanding dengan periodenya, RMA dan DMA menghasilkan
solusi yang identik. Ketika tenggat waktu relatif sewenang-wenang, DMA lebih
mahir dibandingkan RMA dalam arti bahwa kadang-kadang dapat menghasilkan jadwal
layak bila RMA gagal. Di sisi lain, RMA selalu gagal ketika DMA gagal. Kita
sekarang menggambarkan diskusi kami menggunakan contoh tugas set yang DMA
schedulable tetapi tidak RMA schedulable.
1.7. Context Switching Overhead
Sejauh ini, sementara menentukan schedulability satu set tugas, kita telah mengabaikan overhead yang dikeluarkan karena konteks switching. Mari kita sekarang meneliti efek dari konteks switching overhead pada schedulability tugas di bawah RMA.
Sangat mudah untuk menyadari bahwa dalam RMA, setiap kali tugas tiba, itu
preempts paling banyak satu tugas - tugas yang sedang berjalan. Dari pengamatan
ini, dapat disimpulkan bahwa dalam kasus terburuk, setiap tugas menimbulkan
paling banyak dua konteks switch bawah RMA. Satu ketika preempts tugas yang
sedang berjalan. Dan yang lain ketika itu selesai mungkin tugas yang mendahului
atau beberapa tugas lain yang dikirim untuk menjalankan. Tentu saja, tugas
mungkin dikenakan hanya satu switching konteks kepala, jika tidak mendahului
tugas apapun. Misalnya, tiba saat prosesor idle atau saat tugas prioritas yang
lebih tinggi berjalan. Namun, kita perlu mempertimbangkan dua switch konteks
untuk setiap tugas, jika kita mencoba untuk menentukan terburuk konteks kepala
switching.
Untuk kesederhanaan kita dapat mengasumsikan bahwa waktu beralih konteks konstan, dan sama milidetik 'c' dimana 'c' adalah sebuah
konstanta. Dari hal ini, maka bahwa efek bersih dari konteks switch adalah untuk meningkatkan waktu eksekusi ei tugas masing-masing untuk Ti paling ei + 2 * c. Oleh karena itu
jelas bahwa untuk mengambil konteks waktu beralih menjadi pertimbangan, dalam semua perhitungan schedulability, kita perlu mengganti ei ei oleh + 2 * c untuk setiap Ti.
Info yang bagus
BalasHapus