Soal 1
Soal 1 . 2 . 3 . 4
Terjemahan dari salah satu sub bab dari buku:
REAL-TIME SYSTEMS
(penulis: C.M. Khrisma dan Kang G. Shin, penerbit: The McGraw-Hill Companies, Inc., tahun 1997)
4.14 RUN-TIME SUPPORT
Komponen kunci
run-time support adalah
compiler,
linker,
debugger, dan
kernel.
4.15.1 Compiler
Compiler menerjemahkan source code menjadi bahasa mesin.
Compiler yang baik haruslah memiliki kemampuan diagnostik yang baik, yang digunakan untuk meningkatkan efisiensi proses debugging. Jika diperlukan,
compiler juga harus dapat membuat daftar instruksi mesin dari unit yang di-compile. Hal ini diperlukan untuk membuat perkiraan waktu (timing estimates).
Compiler yang baik untuk suatu sistem nyata-waktu hendaknya memiliki hooks yang digunakan untuk memberikan informasi statistik tentang program saat dijalankan. Contohnya, seberapa sering suatu fungsi, blok, atau prosedur tertentu dipanggil dan jumlah waktu yang diperlukan untuk menjalankannya.
Compiler seringkali juga melakukan optimisasi untuk menurunkan waktu eksekusi. Seharusnya
compiler juga dapat memberikan petunjuk bagaimana optimisasi dapat dilakukan. Pada Ada, hal ini dilakukan menggunakan
pragma.
4.15.2 Linker
Sebelum kode mesin dari
compiler dapat dieksekusi, kode ini harus dihubungkan dengan
library atau
routine lain yang diperlukan. Hal ini menjadi tugas
linker. Jadi,
linker berfungsi menghubungkan bagian-bagian yang menyusun program. Bagian-bagian ini dapat berupa unit-unit program atau
library routine yang dapat di-compile secara terpisah.
Linker menentukan bagian mana yang merupakan bagian utama (
main) dan mengalokasikan
storage space bagi instruksi dan data.
Linker juga membuat daftar yang menunjukkan bagaimana unit-unit yang berbeda tersebut dihubungkan.
4.15.3 Debugger
Debugger yang baik memegang peranan penting bagi pengembangan program yang efisien.
Debugger umumnya menawarkan fasilitas-fasilitas berikut ini.
- Debugger membuat suatu program dapat dieksekusi, dihentikan (suspended), dan dilanjutkan kembali (resumed) sesuai perintah programmer. Debugger membuat programmer dapat melihat nilai variabel-variabel yang digunakan. Debugger juga membuat programmer dapat mengubah nilai variabel sebelum eksekusi program dilanjutkan kembali.
- Debugger memungkinkan pemasukkan breakpoints ke dalam program. Saat program menemukan sebuah breakpoint, eksekusinya akan dihentikan sehingga programmer dapat memeriksa nilai variabel pada saat tersebut. Kadang-kadang, breakspoints bersifat bersyarat (conditional). Contohnya, programmer dapat saja mengatakan "Hentikan program jika x<0 pada titik ini." Jika tidak ada dukungan dari perangkat keras, fitur ini akan memperlambat waktu eksekusi.
- Debugger memungkinkan programmer untuk mengeksekusi program setahap demi setahap. Programmer dapar memeriksa nilai variabel pada setiap tahapan tersebut.
4.15.4 Kernel
Kernel bertanggung jawab untuk mengelola resource sistem. Di dalamnya termasuk routine untuk membuat alokasi dan penjadwalan task, mengelola memori, menjalankan algoritma untuk komunikasi interprocessor, menangani egagalan processor (processor failures), dan melakukan operasi input dan output.
Soal 2
Soal 1 . 2 . 3 . 4
Modifikasi example 3.34 (hal 100-101)dari buku:
REAL-TIME SYSTEMS
(penulis: C.M. Khrisma dan Kang G. Shin, penerbit: The McGraw-Hill Companies, Inc., tahun 1997)
Modifikasi dilakukan pada nilai m4 dan o4.
Contoh 3.34. Perhatikan empat task dengan parameter sebagai berikut.
Task Number
|
mi
|
oi
|
ri
|
Di
|
1
|
1
|
4
|
0
|
10
|
2
|
1
|
2
|
1
|
12
|
3
|
3
|
3
|
1
|
15
|
|
4
|
7
|
1
|
2
|
19
|
Penjadwalan dilakukan dengan algoritma IRIS1.
Tahap pertama yang dilakukan adalah menjalankan algoritma EDF pada task 1-4 dengan waktu eksekusi secara berturut-turut: 5, 3, 6, dan 8, sehingga diperoleh St0 sebagai berikut.
Pada gambar di atas, terlihat bahwa task 4 tidak mungkin dapat memenuhi deadline-nya (waktu ke-19), sehingga kita harus melanjutkan ke tahap kedua.
Pada tahap kedua, algoritma EDF dijalankan hanya pada bagian mandatory task 1-4, sehingga diperoleh Sm sebagai berikut.
Pada gambar di atas, seluruh deadline dapat dipenuhi, sehingga dapat dilanjutkan ke tahap ketiga dengan nilai a0= 0, a1= 1, a2= 2, a3= 5, a4= 12. dan, k= 4.
Perhatian pertama diberikan kepada a3. Pada Sm, task T4 dijadwalkan pada interval [a3, a4) sebanyak 7 satuan waktu. Pada Sst0, T4 hanya mendapat bagian sebanyak 5 satuan waktu. Oleh karena itu, Sst0 diubah dengan menambahkan 7-5=2 satuan waktu kepada T4 pada interval waktu [a3, a4) dan mengurangi 2 satuan waktu dari T2 yang pada St0 dijadwalkan pada a3. Hasilnya, penjadwalan T4 diubah menjadi sebanyak 7 satuan waktu sesudah a3. Penjadwalan yang dihasilkan disebut St1. Selanjutnya, kita perhatikan interval [a2, a3).
Pada Sm, T3 dijadwalkan sebanyak 3 satuan waktu.
Pada St1, T3 dijadwalkan sebanyak 6 satuan waktu, sesudah a2.
T3 memiliki cukup waktu untuk menjalankan bagian mandatory-nya. Oleh karena itu, tidak ada perubahan yang perlu dilakukan.
Selanjutnya, kita lihat [a2, a3). Pada Sm, T2 dijadwalkan pada rentang waktu tersebut.
Pada St1, T2 dijadwalkan sebanyak 2 satuan waktu, cukup untuk menjalankan bagian mandatory-nya sehingga tidak ada perubahan yang perlu dilakukan.
Terakhir, pada interval [a0, a1), T1 dijadwalkan sebanyak 1 satuan waktu pada Sm. Pada St1, T1 dijadwalkan sebanyak untuk 5 satuan waktu, lebih dari yang diperlukan oleh bagian mandatory-nya. Sekali lagi, tidak ada perubahan yang perlu dilakukan.
Hasil akhir yang diperoleh adalah St1 sebagai penjadwalan yang optimum.
|
|
|
T1
|
|
|
T4
|
|
T2
|
|
|
T3
|
|
|
|
|
|
T4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
5
|
|
|
|
|
10
|
|
|
|
|
15
|
|
|
|
|
20
|
Soal 3
Soal 1 . 2 . 3 . 4
Topik-topik yang pernah dibahas dalam kuliah
- Liveline
- Other than deadline, we should also consider liveline or startline as a time constraint factor in a real-time system. There are some cases where the start time is also crucial.
- Priority Inversion
- Priority inversion happens when a task of lower priority able to delay or preempt other task of higher priority. This may happen when the higher priority task try to access a critical section which is currently locked by the lower priority task.
- Priority Inheritance
- Priority inheritance is a protocol used to avoid the problem of priority inversion. When a lower priority task is blocking a higher priority task, it inherits the priority of the higher priority task. It gains its priority back when the blocking is over. The bad side of priority inversion is that it can lead to deadlock.
- Priority Ceiling
- Priority ceiling is a protocol used to avoid deadlock caused by priority inheritance. Basically, it is the same as priority inheritance. The difference is that there is another factor that determine the blocking of a task from entering a critical section. Each critical section has a semaphore. The priority ceiling of the semaphore is the same as the highest priority task that may access the critical section. A task is blocked from entering a critical section when there is a semaphore currently held by a task whose priority ceiling is higher or equal to its priority.
Soal 4
Soal 1 . 2 . 3 . 4
Topik dan kata kunci paper yang akah dibuat
Penerapan Konsep EDELF (Earliest Deadline Earliest Liveline First)
Kata kunci: EDF, EDELF, deadline, liveline
Quiz ini dilaksanakan tanggal: 23 Agustus 2005