Ugrađeni operativni sistemi – I deo

Ugrađeni operativni sistemi predstavljaju jednu od najšire rasprostranjenih kategorija operativnih sistema. U ovom članku istaknute su razlike u zahtevima koje trebaju ispuniti ugrađeni operativni sistemi u odnosu na obične operativne sisteme, dok će u narednom delu biti prikazana dva različita pristupa za projektovanje ugrađenih operativnih sistema na primerima operativnih sistema eCos i TinyOS.

Ugrađeni sistemi

Termin ugrađeni sistemi odnosi se na upotrebu elektronike i softvera unutar proizvoda.

Definicija:

Ugrađeni sistem : Kombinacija računarskog hardvera i softvera, a možda i dodatnih mehaničkih i drugih delova, projektovani tako da izvršavaju namensku funkciju.

U mnogim slučajevima ugrađeni operativni sistemi su deo većeg sistema ili proizvoda, kao što je slučaj sa sistemom za sprečavanje blokiranja sistema kočenja u automobilu. Ugrađeni sistemi su daleko brojniji od sistema opšte namene. Ovi sistemi prisutni su u mnogim tržištima:

  • Samohodni sistemi
    • Sistem za paljenje
    • Upravljanje motorom
    • Kočioni sistem
  • Potrošačka elektronika
    • Mobilni telefoni
    • MP3 plajeri
    • Čitači elektronskih knjiga
    • Digitalna i analogna televizija
    • DVD, VCR i kablovski uređaji
    • Kuhinjski aparati (frižideri, mikrotalasne…)
    • Automobili
    • Igračke
    • Kamere
    • Sistemi za globalno pozicioniranje
  • Industrijsko upravljanje
    • Robotika i proizvodni upravljački sistemi
    • Senzori
  • Medicina
    • Infuzione pumpe
    • Uređaji za dijalizu
    • Srčani monitori

Njihova primena je veoma raznovrsna, pa takvi sistemi imaju veoma promenljive zahteve i ograničenja:

  • Sistemi od malih do velikih, sa različitim ograničenjima u pogledu troškova, pa samim tim različitim potrebama za optimizacijom i ponovnom upotrebom
  • Relaksiran u odnosu na vrlo striktne zahteve i kombinacije različitih zahteva za kvalitetom, na primer, u odnosu na sigurnost, pouzdanost, realno vreme itd.
  • Kratkog do dugog životnog veka
  • Različitih uslova okruženja, na primer temperatura, vlažnost
  • Različitih karakteristika primene, koje realizuju statičkim ili dinamičkim opterećenjima, malim ili velikom brzinama, zadacima sa mnogo računanja ili rada sa interfejsima, kao i kombinacija prethodno navedenog
  • Različitih modela proračunavanja, u opsegu od sistema sa diskretnim događajima do onih koji obuhvataju dinamiku kontinualnog vremena – hibridni sistemi

Ugrađeni sistemi su najčešće u sprezi sa svojim okruženjem. Ta sprega nameće ograničenja u pogledu realnog vremena. Ograničenja poput brzine kretanja, preciznosti merenja i vremena trajanja, diktiraju vremensko usklađivanje softverskih operacija.  Drugim rečima, da bi korektno obavio svoj zadatak, sistem mora svoj zadatak izvrši u unapred zadatom vremenu. Ipak treba napomenuti da nisu svi ugrađeni sistemi, sistemi za rad u realnom vremenu.

Organizacija ugrađenog sistema sadrži, pored procesora i memorije, određeni broj elemenata kojima se takav sistem razlikuje od sistema opšte namene. Deo sistemi mogu činiti i

  • Interfejsi namenjeni merenju, manipulaciji ili drugim načinima interakcije sa spoljašnjim okruženjem
  • Ljudski interfejs – može biti od jednostavnih poput signalnog svetla do kompleksnih poput robotskog viđenja u realnom vremenu
  • Dijagnostički port namenjen dijagnostici ugrađenog računara ali i sistema kojim upravlja
  • Programabilno polje specijalne namene (FGPA), specifično za aplikaciju (ASIC) ili čak ne digitalni hardver mogu da se koriste za poboljšanje performanse ili sigurnosti
  • Softver koji često ima fiksiranu funkciju koja je specifična za aplikaciju.

Karakteristike ugrađenih operativnih sistema

Jednostavni sistemi mogu da upravljaju pomoću sistema specijalne namene ili skupa programa. Takvi sistemi koriste zavisnost između softvera i hardvera. Male promene u hardveru dovode do velikih izmena u samom koda aplikacije, pa su samim tim takvi sistemi postaju  komplikovani i skupi za održavanje.

Za složenije ugrađene sisteme neophodno je postojanje operativnog sistema. Moguće je koristi operativni sistem opšte namene, npr. Linux, ali to često nije optimalno rešenje zbog ograničenja memorije, potrošnje električne energije i obrade zahteva u realnom vremenu. U tu svrhu projektovani su operativni sistemi specijalne namene koji odgovaraju okruženju ugrađenog sistema. Projektovanjem tih sistema treba obezbediti ispunjavanje navedenih zahteva:

  • Rad u realnom vremenu – predstavlja jedan od najvažnijih zahteva. U mnogim sistemima korektnost rezultata je u direktnoj vezi s vremenom isporuke rezultata. Ovakva ograničenja često su diktirana zahtevima za spoljašnje ulazno / izlazne uređaje. Za takve sisteme kažemo da su predvidivi, tj. da imaju determinističko ponašanje. Kao mera predvidljivosti sistema može se uzeti vreme odziva sistema na svaki tip sistemskih poziva. Promena ovih vrednosti za različite tipove sistemskih poziva kod determinističkog sistema treba je veoma mala.
  • Reaktivan rad – Rad softvera ugrađenih sistema često predstavlja reakciju na neki spoljni događaj. Ti događaji se ne moraju izvršavati periodično niti u predviđenim vremenskim intervalima. Može se zahtevati da softver uzima u obzir različite slučajeve i u skladu s tim određuje prioritete rutina koje izvršava.
  • Pouzdanost – U zavisnosti od primene od sistema se u nekim slučajevima očekuje da radi duži vremenski period bez intervencija. Treba napomenuti da pouzdanost ne zavisi samo samog operativnog sistema već i u velikoj meri od hardvera sistema.
  • Konfigurabilnost i skalabilnost – Velika raznovrsnost ugrađenih sistema dovodi do potrebe za različitim funkcionalnostima operativnog sistema. Operativi sistem mora biti fleksibilan tako da obezbedi samo one funkcionalnosti potrebne za ugrađeni sistem i podršku za hardver koji koristi. Moguće je učitavati samo potrebne module OS-a. Ako se koristi objektno – orjentisana  organizacija mogu se izvesti odgovarajuće podklase.
  • Fleksibilnost U/I uređaja – Postoji veliki broj raznovrsnih U/I uređaja i oni nemaju podršku svih OS-a. Naglašava se da ima smisla upravljati sporim uređajima upotrebom specijalnih zadataka umesto njihovom integracijom u OS.
  • Racionalizovani zaštitni mehanizmi – Ugrađeni sistemi projektovani su za ograničenu, jasnu i dobro definisanu   Netestirani softver se retko dodaje sistemu, pa se kao takav može smatrati pouzdanim. Ugrađeni sistem ima ograničene zaštitne mehanizme. Na primer U/I instrukcije ne moraju da budu privilegovane instrukcije za izuzetke, a zadaci mogu direktno da izvode svoj sopstveni U/I.
  • Direktna upotreba prekida – U sistemima opšte namene obično se ne dozvoljava bilo kom procesu da direktno koristi prekide. U ugrađenim sistemima OS ne mora da obređuje prekid već se dozvoljava prekidima da samo pokrenu određene zadatke. Razlozi za ovakav pristup su :
    • Ugrađeni sistem smatraju se dobro testiranim, a promene u OS-u ili aplikativnom softveru su retke
    • Zaštitni mehanizmi nisu potrebni
    • Zahteva se efikasno upravljanje nad događajima Uopšteno govoreći postoje dva pristupa za projektovanje ugrađenih operativnih sistema. Prvi je izmena postojećeg operativnog sistema opšte namene, a drugi pristup je projektovanje operativnog sistema specijalne namene.

Adaptiranje postojećih operativnih sistema

Postojeći operativni sistem može se iskoristiti u ugrađenim sistemima. Treba se proširiti sposobnostima za rad u realnom vremenu i dodatnim funkcionalnostima. Za takve namene najčešće se upotrebljava Linux, a moguće je koristiti i druge sisteme poput Windows-a.

Pogodnosti ovakvog pristupa su rad sa poznatim interfejsima postojećeg operativnog sistema. Sa druge strane mane su neprilagođenost sistema za rad u realnom vremenu i to što se sistemi opšte namene optimizuju za najčešće slučajeve, a ne za specijalne slučajeve u pogledu raspoređivanja.

Namenski napravljeni ugrađeni operativni sistemi

Veliki broj operativnih sistema koji se koriste u ugrađenim sistemima projektovan je namenski za ugrađene sisteme. U daljem tekstu biće obrađena dva takva sistema, TinyOS i eCos.

Prilikom projektovanja operativnih sistema za rad u realnom vremenu (RTOS) sa jednim procesorom (CPU) treba imati na umu osnovnu činjenicu – u jednom trenutku može da se izvršava samo jedna procesorska naredba, pri čemu broj zadataka može da se menja., odnosno zadaci moraju da dele procesorsko vreme. U takvim uslovima od najvećeg je značaja da se određeni vremenski intervali u kojima je procesor dodeljen određenom poslu raspodele tako da ceo sistem skladno funkcioniše. Tipične karakteristike namenski pravljenih operativnih sistema su :

  • Brza i laka komutacija procesa i niti
  • Politika raspoređivanja u realnom vremenu, a dispečerski modul je deo raspoređivača
  • Mala veličina
  • Velika brzina odgovora na spoljašnje prekide, tipično manje od 10µs
  • Mali intervali u kojima su prekidi onemogućeni
  • Particije fiksne ili promenljive veličine za upravljanje memorijom, sposobnost zaključavanja koda i podataka u memoriji
  • Obezbeđuje specijalne sekvencijalne datoteke koje mogu da prihvataju podatke velikom brzinom

Više puta navedena je važnost vremenskog ograničenja u ugrađenim sistemima. Stoga kernel mora da:

  • Obezbedi ograničeno vreme izvršavanja za većinu primitiva
  • Održava časovnik realnog vremena
  • Obezbeđuje specijalne alarme i pauze
  • Podržava discipline čekanja u redovima za rad u realnom vremenu, kao što je najhitnije prvo
  • Obezbeđuje primitive za zadržavanje obrade za fiksnu veličinu vremena i za obustavljanje / nastavak izvršavanja

U zavisnosti od složenosti sistema ovi zahtevi mogu biti prošireni.

Arhitektura ugrađenih operativnih sistema za rad u realnom vremenu (RTOS)

Uopšteno RTOS se projektuje tako da ima modularnu i slojevitu strukturu (arhitekturu). Možemo reći da su kvalitetni RTOS skalabilni, kako bi podržali različiti skup zahteva za različite primene. U zavisnosti od primene i hardvera, operativni sistem može da sadrži samo kernel, planiranje redosleda korišćenja resursa sistema i algoritme za upravljanje resursima. S druge strane, ako je sistem složeniji, RTOS može da sadrži kombinaciju više različitih modula: kernel, fajl sistem, podršku za mrežne protokole, podršku sa SMP i druge komponente.

Kod arhitekture ugrađenih sistema u realnom vremenu, koristi se linearni memorijski model, u kome su sve aplikacije i RTOS nalaze u istom adresnom prostoru, tako da nema aktivne zaštite deljenog memorijskog prostora. Da bi  aplikacija pristupa resursima sistema ona  kroz API poziva funkcije operativnog sistema.

Arhitektura RTOS-a

BSP

BSP (Board Support Package) je skup programa koji omogućavaju spregu između operativnog sistema i hardvera. Njegova uloga je da inicijalizuje hardver i implementira specifične rutine za sistem. Te rutine koriste kernel i drajveri uređaja. U osnovne komponente BSP-a se ubrajaju:

  • Podrška za mikroprocesor
  • Specifične rutine za rad sa sistemom (bootloader, inicijalizacija memorijske mape, sistemskih tajmera, kontrolera prekida, serijske komunikacije, magistrala, DMA kontrolera, podešavanje sata realnog vremena – Real-Time Clock).

Fajl sistem

Fajl sistem predstavlja skup apstraktnih tipova podataka koji je implementiran, kako bi obezbedio: prostor, hijerarhijsku organizaciju, pristup, obradu i preuzimanje podataka. Većina poznatih fajl sistema koristi neki od tipova uređaja za čuvanje podataka koji omogućava pristup nizu blokova određene dužine, sektorima. Fajl sistem bavi se organizacijom sektora u fajlove i direktorijume, vodeći računa o tome koji sektor pripada kojem fajlu i koji sektori nisu iskorišćeni.

Većina sistema adresira podatke u fiksnim veličinama koji se nazivaju klasteri ili blokovi i oni sadrže određeni broj sektora. Ova veličina predstavlja minimalnu količinu prostora koja se može rezervisati za čuvanje podataka u formi fajla.

Osnovne komponente kernela RTOS

Kernel je osnovni deo, odnosno jezgro operativnog sistema. Njegove fundamentalne komponente su sledeće:

  • Raspoređivač ili planer – sadržan je u svakom kernelu. Na osnovu skupa algoritama za raspoređivanje određuje koji se zadatak u nekom trenutku izvršava.
  • Objekti – specijalne konstrukcije kernela koji pomažu razvoju aplikacija za sisteme koji rade u realnom vremenu. U standardne objekte kernela ubrajaju se
    • Zadaci – predstavljaju nezavisne i/ili konkurentne niti izvršavanja, koje se nadmeću za procesorsko vreme.
    • Semafori – to su signalni objekti kernela čija se vrednost može uvećati ili smanjiti od strane zadataka. Njihova namena je međusobna sinhronizacija, odnosno međusobno isključenje.
    • Redovi za poruke – odgovaraju strukturama podataka u formi bafera. Mogu se koristiti za sinhronizaciju, međusobno isključenje i/ili razmenu podataka između zadataka
  • Servisi – predstavljaju operacije koje kernel izvršava nad objektima ili uobičajene operacije kao što su opsluživanje prekida i upravljanje resursima. Pomenute komponente biće detaljnije obrađene kroz primere operativnih sistema u narednim poglavljima.

Prekidi

Prekid predstavlja hardverski mehanizam koji se koristi da informiše CPU o tome da se javio asinhroni događaj, koji treba da se opsluži. Kada se zahtev za prekid usvoji, CPU stanje svojih registara smešta u magacin i prenosi pravo upravljanja procesora na specijalni potprogram za obradu prekida.

Prekidi omogućavaju mikroprocesoru da procesira događaje samo kada se oni jave, čime se izbegava stalno testiranje da li se događaj javio ili ne. Mikroprocesor ima mogućnost da zabrani ili dozvoli rad prekidima. Kod operativnih sistema za rad u realnom vremenu prekidima treba zabraniti rad na što je moguće kraće vreme.