Sunday, August 28, 2005

Jawaban Quiz 23/08/05 - Soal 1

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.

Jawaban Quiz 23/08/05 - Soal 2

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.

Jawaban lengkap dapat dilihat di sini.

Jawaban Quiz 23/08/05 - Soal 3

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.



Jawaban Quiz 23/08/05 - Soal 4

Topik dan kata kunci paper yang akah dibuat


Penerapan Konsep EDELF (Earliest Deadline Earliest Liveline First)

Kata kunci: EDF, EDELF, deadline, liveline