RTOS — vazifalarni belgilangan vaqt cheklovlari ichida oldindan aytish mumkin bo‘lgan tarzda bajarishga mo‘ljallangan operatsion tizim. To‘liq nomi Real-Time Operating System. RTOS avtomobil controlleri, robot, sanoat uskunasi, tibbiy qurilma, avionika, sensor va boshqa embedded tizimlarda ishlatiladi.
“Real-time” faqat juda tez ishlash degani emas. Muhim xususiyat — kerakli ishning deadline’dan kechikmasdan bajarilishi.
Hard real-time
Deadline buzilishi qabul qilib bo‘lmaydigan tizim.
Misollar:
- airbag;
- motor protection;
- ayrim avionika;
- safety controller.
Bitta kechikish ham xavf yoki system failure hisoblanishi mumkin.
Worst-case execution qat’iy tahlil qilinadi.
Soft real-time
Deadline muhim, ammo vaqti-vaqti bilan kechikish sifatni pasaytiradi, catastrophic failure emas.
Misollar:
- audio playback;
- video;
- UI animation;
- telemetriya.
Average latency bilan birga jitter ham kuzatiladi.
Task
RTOS process o‘rniga ko‘pincha yengil task yoki thread tushunchasidan foydalanadi.
Har task:
ga ega.
Tasklar bir address space’ni shared qilishi mumkin.
Scheduler
Scheduler qaysi task CPU’da ishlashini tanlaydi.
Keng usullar:
- fixed-priority preemptive;
- round-robin;
- cooperative;
- earliest deadline first;
- rate monotonic.
Tanlov deadline va resource talabiga bog‘liq.
Priority
Yuqori priority task past priority taskni preempt qilishi mumkin.
Priority business importance emas, timing talabini ifodalaydi.
Barcha taskni yuqori priority qilish scheduler’ni ma’nosiz qiladi.
Starvation oldini olish kerak.
Preemption
Interrupt yoki yuqori priority task kelganda joriy task to‘xtatilib, boshqasi ishlaydi.
Context switch register va state’ni saqlab tiklaydi.
Tez preemption latency’ni kamaytiradi, ammo overhead qo‘shadi.
Critical sectionlar imkon qadar qisqa bo‘ladi.
Tick
Ko‘p RTOS periodic timer tick bilan vaqt va schedulingni boshqaradi.
Tick rate yuqori bo‘lsa timing resolution yaxshi, overhead ko‘proq.
Tickless mode idle davrda timer interruptlarini kamaytirib energiyani tejaydi.
Interrupt
Hardware event interrupt service routine’ni ishga tushiradi.
ISR:
- qisqa;
- blocking bo‘lmagan;
- deterministic;
- minimal
bo‘lishi kerak.
Uzun ish queue yoki semaphore orqali taskga topshiriladi.
Semaphore
Task va interrupt orasida signal yoki resource count uchun ishlatiladi.
Binary semaphore event signaliga, counting semaphore bir nechta resourcega mos.
Semaphore ownershipni majburiy kuzatmaydi.
Mutual exclusion uchun mutex ko‘proq mos.
Mutex
Shared resource’ni bir vaqtda bitta task ishlatishini ta’minlaydi.
Mutex ownerga ega.
Priority inheritance priority inversionni kamaytirishi mumkin.
ISR odatda mutex lock qilmaydi.
Priority inversion
Yuqori priority task past priority task ushlab turgan mutexni kutadi.
O‘rta priority task past taskni preempt qilib, yuqori taskni uzoq kutdirishi mumkin.
Priority inheritance past task priority’sini vaqtincha oshiradi.
Lock order va critical section ham muhim.
Queue
Tasklar orasida message uzatish uchun queue ishlatiladi.
U fixed-size elementlarni copy qilishi yoki pointer saqlashi mumkin.
Producer va consumer block bo‘lishi mumkin.
Queue full va empty holati aniq boshqariladi.
Event group
Bir nechta bit flag orqali eventlar kombinatsiyasini kutish imkonini beradi.
Task “A va B” yoki “A yoki B” shartini kutishi mumkin.
Flagni kim tozalashi semanticsga bog‘liq.
Race condition test qilinadi.
Memory
Embedded RTOSda dynamic allocation cheklanishi mumkin.
Static task stack, queue va memory pool predictable behavior beradi.
Heap fragmentation uzoq ishlaydigan tizimda muammo.
Out-of-memory holati silent corruptionga aylanmasligi kerak.
Task stack
Har task uchun alohida stack ajratiladi.
Juda kichik stack overflow va xotira buzilishiga olib keladi.
Juda katta stack cheklangan RAMni isrof qiladi.
High-water mark va stack guard monitoring qilinadi.
Determinism
Operationning faqat o‘rtacha emas, worst-case vaqti muhim.
Unbounded list traversal, dynamic allocation va uzoq interrupt disable determinismni buzadi.
Driver va library real-time talablarga mos bo‘lishi kerak.
Watchdog
Watchdog software yoki hardware tizimning javob bermay qolishini aniqlaydi.
Tasklar health signal beradi.
Watchdogni shunchaki periodic interruptda feed qilish deadlockni yashirishi mumkin.
Resetdan keyin failure sababi persistent logda saqlanadi.
Power management
RTOS idle taskda CPU sleep mode’ga o‘tishi mumkin.
Keyingi timer yoki interrupt wake qiladi.
Peripheral clock va wake source boshqariladi.
Deadline va energy o‘rtasida muvozanat saqlanadi.
SMP
Ba’zi RTOS bir nechta CPU core’ni qo‘llaydi.
Task affinity va synchronization murakkablashadi.
Cache coherence va shared interrupt latencyga ta’sir qiladi.
Kichik microcontrollerlarda bir core keng tarqalgan.
Safety
Safety-critical RTOS sertifikatsiya, coding standard va traceability talablariga ega bo‘lishi mumkin.
Kernel konfiguratsiyasi, driver va application birgalikda baholanadi.
RTOS nomining o‘zi safety sertifikatini bermaydi.
RTOS va Linux
Linux yuqori funksionallik va process isolation beradi, lekin standard konfiguratsiyada qat’iy hard-real-time kafolati bermasligi mumkin.
RTOS kichik footprint va deterministic schedulingga ega.
Ba’zi qurilma Linux application processor va RTOS microcontroller’ni birga ishlatadi.
Software timer
Kernel software timer ma’lum vaqt o‘tganda callback yoki event yaratadi. Callback timer service contextida ishlashi mumkin, shu sababli blocking operation bajarilmaydi. Juda ko‘p timer scheduler va memory xarajatini oshiradi.
Deadline monitoring
Task har cycle boshlanishi va tugashini timestamp bilan loglashi mumkin. Deadline miss counteri field diagnostikasida ishlatiladi. Faqat CPU o‘rtacha yukiga qarab real-time kafolat berib bo‘lmaydi.
Message buffer
Variable-length byte oqimini task yoki ISR orasida uzatish uchun stream/message buffer ishlatilishi mumkin. Capacity va overflow policy aniq belgilanadi.
Bog‘liq tushunchalar
Real-Time Operating System, RTOS, Task scheduler, Priority, Preemption, Interrupt, Semaphore, Mutex, Priority inversion, Watchdog, Embedded system