Selasa, 14 Agustus 2012

Multitasking pada Sistem Embedded


Apa itu multitasking?
Multitasking is the ability to execute multiple separate tasks in a fashion that is seemingly simultaneous (Keith E. Curtis, 2006, 114)

kurang-lebihnya:
"Multitasking adalah kemampuan mengeksekusi beberapa task yang terpisah yang seolah-olah nampak bersamaan." (Keith E. Curtis, 2006, 114)

Task:
1. Task adalah program yang kecil yang mempunyai titik masuk dan aktif terus menerus dalam loop yang tidak berhingga (super loop). (Using the FreeRTOS Real Time Kernel - A Practical Guide)
2. Suatu fungsi dalam bahasa C. (Patterns for time-triggered embedded systems)

Empat Komponen Multitasking
1. Context Switching
2. Communications
3. Managing Priorities
4. Timing Control

Context Switching
Pada saat program dieksekusi ada beberapa register yang berhubungan dengan jalannya program. Regiter tersebut adalah:
    - Register kerja
    - Program Counter
    - Register Status
    - Register Stack
    - Nilai dari Stack
Untuk program register-register tersebut harus bernilai benar untuk suatu program. Berubanya nilai tersebut dapat mempengaruhi jalannya program. Nilai hasil antara dari proses yang kompleks, variabel-variabel tersembunyi yang digunakan oleh bahasa tingkat tinggi juga mempengaruhi jalannya program. Semua itu disebut dengan Context Program/Task.

Communication
Pengiriman data dari satu task ke task yang lainnya menjadi masalah tersendiri pada sistem multitasking. Pengiriman data ini sering disebut Intertask Communication.

Managing Priorities
Pada sistem multitasking harus mampu mengelola prioritas. Task yang mempunyai prioritas tinggi dapat menginterupsi Task dengan prioritas di bawahnya.

Timing Control
Sistem multitasking mempunyai pewaktu yang mengendalikan kapan Task dieksekusi.

Penjadwalan
Penjadwalan dapat dikelompokkan menjadi dua:
    1. Preemptive
    2. Cooperative

Pada Preemtive penjadwal menggunakan interupsi timer sedangkan pada Cooperative menggunakan pemanggil fungsi.

Real Time Operating System menggunakan penjadwalan jenis Preemptive walaupun dapat juga difungsikan sebagai Cooperative.