Anda di halaman 1dari 26

KELOMPOK 1

Pertemuan IX

Real Time Operating System


Keanggotaan

Aditiya Suryani Farah Nurul Aulia Gizan Guswan Femi Nabila Muhammad Rohid
1511512005 1611511015 1711512007 1811511002 1811511006

Richo Attir Mitzi Yuni Anggraini Fadly Putra Fisnata Rahmadatul Fitri Mahmuda Areha
1811511008 1811511010 1811511014 1811511016 1811512002
Pembahsan
01 Arsitektur RTOS

02 Task and Task States

03 Tasks and Data

04 Semaphores and Shared Data


Overview RTOS
1. embedded system, arsitektur dan penjelasannya, penjelasan tentang hardware
yang ada pada embedded system, serta software yang dapat digunakan.
2. dasar teori pada embedded system, penggunaan hardware, dan kode program
yang dapat digunakan untuk embedded system.
Overview RTOS
1. OERATION SISTEM
2. RTOS
Arsitektur RTOS
Real-Time Operating System
Arsitektur Real-Time Operating System
Proses multitasking pada embedded system yang merupakan suatu perangkat lunak yang ditanamkan pada
embedded system.Arsitektur dari suatu RTOS (Real-Time Operating System) bergantung pada kompleksitas dari penerapan
embedded system tersebut. Untuk aplikasi yang sederhana bisa saja hanya terdiri dari suatu kernel dan untuk ystem yang
lebih kompleks dapat memiliki beberapa modul.
Dalam suatu sistem operasi, kernel merupakan bagian inti sebuah sistem operasi yang menjadikan OS operating
System dapat menjalankan fungsinya dengan baik, didalam RTOS terdapat berbagai macam kernel antara lain adalah :
• Mikro Kernel Merupakan seperangkat perangkat lunak dalam jumlah minimum yang meyediakan beragam mekanisme
dasar yang dibutuhkan untuk bekerja sebagai sebuah sistem operasi , seperti halnya manajemen pengalamatan ruang
tingkat rendah, manajemen thread, dan komunikasi antar operasi.

• Monolithic Kernel Merupakan suatu arsitektur kernel yang melingkupi keseluruhan dari sistem operasi untuk berjalan
pada ruang kernel dalam modus supervisor.

• Exokernel Merupakan sebuah struktur sistem operasi yang disusun secara vertikal, dan bukan sebuah pendekatan kernel
secara umum seperti mikrokernel maupun monolithic kernel.
Bagian Arsitektur

Bagian pertama adalah CPU yang memproses instruksi:


• Program counter: menghasilkan alamat (address) yang akan diteruskan ke memori program yang selanjutnya akan dieksekusi.
• Memori Program Flash: berfungsi sebagai memori untuk program-program yang ada.
• Register instruksi: berfungsi untuk mengambil instruksi dari alamat yang disediakan program counter.
• Dekoder instruksi: berfungsi untuk melakukan dekode instruksi yang diambil dari register instruksi.
• Register status dan kontrol: berisi informasi tentang hasil dari operasi aritmatika yang paling baru.
• Register general purpose: digunakan untuk menyimpan semua data transien yang dibutuhkan oleh program.
• ALU: melakukan segala operasi aritmatika dan logika pada data, sehingga dihasilkan output yang diinginkan.

Bagian kedua adalah memori yang merupakan tempat menyimpan dan mengambil data dan instruksi:
• SRAM (Static Random Acces Memory): merupakan memori volatil yang digunakan sebagai penyimpan data sementara dengan kecepatan
tinggi pada mikrokontroler.
• EEPROM: menyimpan data secara permanen yang tidak akan hilang saat embedded system kehilangan daya.
Bagian yang ketiga adalah komponen peripheral yang menghubungkan core dari mikrokontroler ke
komponen eksternal:
• Unit interrupt: berfungsi untuk men-generate interrupt pada mikrokontroler.
• Unit Serial Peripheral Interface (SPI): berfungsi untuk mensinkronkan transfer data kecepatan tinggi antara ATMega32 dan peripheral
• Timer Watchdog: timer yang berfungsi untuk memonitor CPU di embedded system dan mengirim sinyal reset secara periodik.
• Komparator analog: membandingkan dua sinyal tegangan analog yang digunakan untuk ADC.
• Modul I/O: sebagai perantara yang menghubungkan CPU dengan modul-modul eksternal pada embedded system.
• Line I/O: sebagai perantara yang menghubungkan CPU dengan port input dan output pada mikrokontroler di embedded system.

Jadi, RTOS dapat digunakan pada berbagai macam arsitektur dan mikrokontroller. Namun, agar task yang
diimplementasikan dapat berjalan pada platform yang diinginkan, maka penulisan program harus mengikuti format dari
platform tersebut. Seperti AVR ATmega dan AVR Xmega sama-sama berasal dari arsitektur yang sama, yaitu AVR. Namun,
keduanya memiliki coding style yang sedikit berbeda.
Task and Task States
Task and Task States
Task adalah sebuah subrutin sederhana Aplikasi ES membuat panggilan ke fungsi RTOS untuk
memulai tugas, meneruskan ke OS, alamat awal, penunjuk tumpukan. Tiap tugas dalam RTOS selalu dalam
salah satu dari 3 state, diantaranya:

Running State Task yang sedang berjalan/dieksekusi berada dalam Running State. Ketika berada pada state ini suatu task
memanfaatkan prosesor dan sumber daya lain seperti register dan memori. Pada single-processor hanya terdapat satu task
yang berada pada state ini. Ketika berada pada running state, task dapat berpindah ke suspended state maupun blocked state.
Hal tersebut dapat terjadi karena task tersebut melakukan salah satu diantara hal-hal dibawah ini :
 Meminta resource, padahal resource tersebut tidak tersedia dalam sistem
 Meminta menunggu event tertentu muncul
 Meminta delay eksekusi dengan durasi tertentu

Selain itu task juga dapat kembali ke ready state. Kembalinya task ke ready state dapat disebabkan karena munculnya
task baru dengan prioritas yang lebih tinggi.
Ready State Sesaat setelah task dibuat, sebuah task akan berada pada ready state. Ready task ialah state saat suatu task siap
untuk dieksekusi. Hal ini dikarenakan task ini menunggu task lain yang memiliki prioritas sama atau lebih tinggi yang
sedang dieskekusi pada Running State. Task pada state ini tidak dapat berpindah ke blocked state. Task dapat memilih
menuju salah satu state antara running atau suspended state.

Blocked State Sebuah task berada dalam state ketika task tersebut sedang menunggu event lain terjadi. Event yang terjadi
meliputi temporal event maupun external event. Temporal event berupa delay yang diminta oleh task itu sendiri dengan
menjalankan vTaskDelay(). Setelah periode delay habis maka task akan di-unblock untuk kemudian dijalankan kembali.
Sedangkan event eksternal dapat berupa queue maupun semaphore event. Real-time system membutuhkan state ini karena
jika tidak ada blocked state, task dengan prioritas rendah tidak mendapat kesempatan untuk dieksekusi. Hal tersebut dikenal
dengan starvation.

.
Blocked Ready

Prioritas task Ready


yang ready taskyang
lain

task membutuhkan sesuatu


untuk terjadi sebelum dapat dilanjutkan

Running

Pada gambar ini mengadopsi penggunaan blok kata kerja yang cukup umum yang berarti "pindah ke keadaan diblokir", kata kerja
dijalankan berarti "pindah ke keadaan running" atau "dalam keadaan running", dan kata kerja beralih yang berarti "ubah task mana yang sedang
dalam keadaan running". angkanya sudah cukup jelas, tetapi ada beberapa konsekuensi:
The scheduler
Bagian dari RTOS yang disebut Scheduler, akan melacak state setiap task dan memutuskan task mana yang
harus masuk ke running state. Tidak seperti scheduler di unix atau windows, scheduler di sebagian besar RTOS sepenuhnya
berpikir secara sederhana mengenai task mana yang harus atau lebih dulu di proses oleh prosesor, dimana scheduler akan
melihat prioritas yang sudah tetapkan untuk tiap task, dan di antara task yang tidak dalam state akan diblokir, task diambil
sesuai dengan menjalankan tertinggi, dan sisanya task tersebut harus menunggu dalam keadaan siap. Scheduler tidak akan
mengutak-atik prioritas task: jika task dengan prioritas tinggi memakan mikroprosesor untuk waktu yang lama sementara
task dengan prioritas lebih rendah menunggu dalam keadaan siap, itu sangat buruk. Task dengan prioritas lebih rendah hanya

perlu menunggu; scheduler mengasumsikan bahwa Anda mengetahui apa yang Anda lakukan saat menetapkan prioritas task.

Idle task adalah task yang pertama kali dibuat pada saat RTOS Scheduler dinyalakan. Fungsi dari task ini ialah
untuk memastikan setidaknya ada satu task yang siap untuk dieksekusi / task siap untuk masuk pada running state. Idle task
memiliki prioritas paling rendah agar tidak memakan banyak alokasi prosessor ketika sudah ada task lain berada pada ready
state.
Tasks and Data
Tasks
Menentukan prioritas tugas (task), Salah satu aturan umum untuk menentukan prioritas tugas
adalah RMS (Rate Monotonic Scheduling). Menurut aturan ini, tugas yang paling sering
dijalankan diberi prioritas tertinggi.

Contoh , dalam sistem pre-emptive, setiap tugas diberi nilai prioritas individu. Semakin cepat
respons yang dibutuhkan, semakin tinggi tingkat prioritas yang ditetapkan. Saat bekerja dalam
mode pre-emptive, tugas yang dipilih untuk dijalankan adalah tugas dengan prioritas tertinggi
yang dapat dijalankan. Ini menghasilkan sistem yang sangat responsif.
Setiap tugas di RTOS memiliki konteks privasinya masing-masing, termasuk nilai register, program counter dan stack.
Meskipun begitu, data-data ini dibagikan di antara semua tugas di sistem. Seperti gambar di atas, tugas di RTOS lebih
terlihat seperti benang (thread) dibandingkan proses.
Perpindahan data dari satu tugas ke tugas lain sangat mudah dilakukan tugas di sistem RTOS ini, yaitu: dua tugas hanya
perlu mengakses variabel yang sama. Caranya adalah dengan memiliki dua tugas dalam modul yang sama di mana
variabelnya sudah dideklarasikan, atau variabel tersebut dapat diubah privasinya menjadi ‘publik’ di salah satu tugas dan
mendeklarasikanya sebagai ‘extern’ di tugas lain.
Perbedaan states dan task
Dalam FreeRTOS sebuah tugas dapat berada di salah satu dari empat status yang berbeda yaitu, Berjalan, Siap,
Diblokir dan Ditangguhkan.
• Running Tugas yang sedang dijalankan saat ini dikatakan dalam status berjalan. Itu memiliki CPU.
• Ready Tugas yang tidak ditangguhkan atau diblokir tetapi masih tidak dijalankan akan menjadi status siap
Ini tidak dalam status berjalan karena tugas prioritas tinggi atau prioritas yang sama sedang dijalankan.
• Blocked Sebuah tugas akan masuk dalam status diblokir setiap kali menunggu acara terjadi. Acara
tersebut dapat menyelesaikan periode penundaan atau ketersediaan sumber daya. Tugas yang diblokir
tidak tersedia untuk penjadwalan.
• Suspended Saat vTaskSuspend () dipanggil, tugas akan berada dalam status ditangguhkan. Untuk
melanjutkannya, xTaskResume () dipanggil. Tugas yang ditangguhkan juga tidak tersedia untuk
penjadwalan.Tampaknya tugas di Diblokir dan Ditangguhkan berada dalam status menunggu. Namun perbedaannya
adalah, tugas yang ditangguhkan tidak bisa datang dalam status Siap kecuali xTaskResume () dipanggil. Periode
waktu habis dapat ditentukan hanya untuk tugas yang diblokir tetapi tidak untuk tugas yang ditangguhkan.
Semaphores and Shared Data
Semaphore
Semaphore digunakan sebagai tanda bahwa task yang mengakuisisinya memiliki hak untuk melaksanakan operasi
tertentu juga mengakses resource yang ada. Akuisisi semaphore dibatasi oleh waktu dalam periode tertentu. Berdasarkan
jenisnya, semafor hanya bisa memiliki nilai 1 atau 0, atau lebih dari sama dengan 0. Konsep semafor pertama kali diajukan
idenya oleh Edsger Dijkstra pada tahun 1967.

Operasi standar pada semafor (dalam bahasa pemrograman C):

Nama asli dari operasi tersebut sebenarnya adalah Proberen (test) dan Verhogen


void kunci(int sem_value) {
(increment). Namun, sebutan untuk 2 method ini sangat beragam, antara lain
while(sem_value <= 0); sering dikenal dengan nama : release dan acquire, P dan V, serta kunci 
sem_value--; dan buka. Dalam buku ini akan digunakan istilah buka dan kunci. Fungsi 
}
wait dipanggil ketika thread akan memasuki critical section-nya atau ketika 
thread akan memakai resource yang tersedia. Jika sem_value kurang dari
void buka(int sem_value) {
sama dengan 0, thread tersebut harus menunggu sampai thread lain memanggil
sem_value++; fungsi buka. Fungsi buka dipanggil ketika thread meningggalkan critical
} section-nya atau ketika melepaskan resource yang telah digunakannya. Tentu
saja kedua operasi tersebut harus bersifat atomik karena sem_value dapat
diakses
oleh beberapa proses (shared resource).
Jenis Semaphore
Terdapat beberapa jenis semaphore yang didukung oleh kernel RTOS seperti binary semaphore, counting
semaphore, dan mutex semaphore.

• Binary semaphore Digunakan pada mutual exclusion dan sinkronisasi. Sinkronisasi antar task atau antara task
dan interrupt. Binary semaphore hanya memiliki dua nilai integer yaitu 1 atau 0. Binary semaphore bernilai 0
menunjukkan semaphore

Nilai awal ketika semaphore dibuat bisa berisi 1 atau 0. Pada state semaphore tersedia (nilai 1) lalu diambil oleh task maka
state akan berubah menjadi tidak tersedia (nilai 0) begitupun sebaliknya. Semaphore pada state tidak tersedia lalu dilepas
oleh suatu task maka statenya akan berubah menjadi tersedia.
• Counting semaphore Counting semaphore merupakan semaphore yang menggunakan perhitungan suatu variable
counter untuk menentukan ketersediaan semaphore tersebut. Counting semaphore dapat digunakan oleh setiap task yang
membutuhkannya. Nilai maskimal dari counting dapat didefinisikan di saat semaphore dibuat atau dikenal dengan istilah
bounded count. Nilai maksimal counting juga dapat tidak didefinisikan atau disebut unbounded count. Pada unbounded
count nilai maksimal tergantung pada nilai maksimal yang dapat ditampung sesuai tipe data yang digunakan misalnya
unsigned integer atau unsigned long

Menunjukkan transisi state pada counting semaphore. Nilai nol (counter = 0) menunjukkan semaphore tidak tersedia.
Sedangkan nilai counter lebih dari nol (counter > 0) menunjukkan semaphore tersedia. Counting semaphore dapat
diakuisisi/diambil ataupun dilepas beberapa kali tergantung nilai maksimal counter-nya.
• Mutual Exclusion (Mutex) Semaphore merupakan semaphore khusus yang memiliki beberapa fitur seperti penghapusan
task, akses recursive, kepemilikan, serta protocol untuk menghindari masalah inheritance (pewarisan) pada mutual
exclusion. Pada mutex terdapat dua state yaitu locked dan unlocked. State locked bernilai 1 dan unlocked bernilai 0. Saat
diinisialisasi, mutex berada pada state unlocked. Pada kondisi ini mutex dapat diakuisisi oleh suatu task. Akuisisi ini
mengakibatkan mutex berada pada locked state. Sebaliknya ketika task melepas mutex maka state mutex berubah
menjadi unlocked.
Shared data
Pengiriman atau perpindahan data dari satu tugas ke tugas lain adalah proses yang penting
karena setiap tugas memiliki peran masing-masing dalam mengolah data. Salah satu contoh
perpindahan data yang paling sederhana adalah kotak surat. Ini adalah objek berukuran tetap.

Jika kotak masuk kosong, sebuah tugas bisa menyimpan beberapa data di dalamnya, lalu selanjutnya
kotak masuk akan dinyatakan ‘penuh’. Upaya lebih lanjut untuk memuat data akan mengakibatkan kesalahan
atau penangguhan tugas. Tugas lain bisa membaca data, yang nantinya membuat kotak surat menjadi kosong.
Upaya untuk membaca dari kotak surat kosong menyebabkan kesalahan atau penangguhan tugas.
Satu tugas dapat menempatkan data dalam antrian berulang kali hingga antrian penuh. Contoh di sini
dapat mengambil empat objek. Upaya lebih lanjut untuk menempatkan data akan mengakibatkan kesalahan
atau penangguhan tugas. Tugas lain dapat berulang kali menghapus item data dari antrean dan akan
menerimanya dalam urutan yang sama seperti yang dikirimkan tugas pertama. Upaya untuk membaca dari
antrian kosong menghasilkan kesalahan atau penangguhan tugas.
Thank you

Anda mungkin juga menyukai