mikroračunarski sistemi za rad u realnom vremenu skripta

178
Predrag Teodorović Veljko Malbaša Mikroračunarski sistemi za rad u realnom vremenu U saradnji sa / In cooperation with

Upload: mirko-mirkovic

Post on 06-Nov-2015

91 views

Category:

Documents


23 download

DESCRIPTION

arm arhitektura ftn novi sad

TRANSCRIPT

  • Predrag Teodorovi Veljko Malbaa

    Mikroraunarski sistemi za rad u realnom vremenu

    U saradnji sa / In cooperation with

  • Fakultet tehnikih nauka Katedra za elektroniku Novi Sad, april 2010.

    SVA PRAVA ZADRANA PRETAMPAVANJE I UMNOAVANJE ZABRANJENO

    I U CELINI I U DELOVIMA

  • Autori se najiskrenije zahvaljuju na svesrdnoj pomoi u prikupljanju materijala za skriptu studentima sa smera za Mikroraunarsku elektroniku koji su sluali predavanja i vebe na predmetu Mikroraunarski sistemi za rad u realnom vremenu kolske 2009/2010 godine. Autori

  • MSREAL ARM mikrokontroleri

    1

    1 ARM mikrokontroleri

    1.1 UVOD

    1.1.1 O NASTANKU ARM PROCESORA ARM procesorska jezgra vode poreklo od britanske kompanije Acorn. 1983.

    godine ova kompanija je traila 16-bitni mikroprocesor (zamenu za 6502 procesor) za novu verziju svog desktop raunara. Kako ni jedna od na tritu dostupnih 16-bitnih arhitektura nije zadovoljavala njihove zahteve, oni su dizajnirali svoj 32-bitni procesor. Procesori su bili sporiji od dostupnih memorijskih modula, imali su komplikovan set instrukcija od kojih je izvravanje pojedinih trajalo nekoliko stotina taktova, tako da je dizajniranje novog procesora bilo neophodno.

    Originalna ideja potie od projekta Barkley RISC (Reduced Instruction Set Computer) (1981. g.), u kome je grupa studenata pokazala da je mogue napraviti veoma jednostavan procesor sa performansama uporedivim sa naprednim CISC (Complex Instruction Set Computer) procesorima. Acorn usvaja taj pristup i 1985. godine realizuje svoj prvi 26-bitni ARM (Acron RISC Machine), koji ujedno postaje prvi komercijalni RISC procesor. Sadrao je manje od 25000 tranzistora, to je veoma mali broj, a po performansama je bio uporediv, ili ak bolji od Intel 80286 procesora koji je proizveden u isto vreme. Druga verzija proizvedena je 1987. godine, a unapreenje u odnosu na prvu predstavlja koprocesorska podrka. 1990. godine mnoge kompanije postaju zainteresovane za ARM procesore, a kompanija Apple poinje da koristi ARM procesore za svoje PDA ureaje. Iz saradnje kompanija Acorn i Apple nastaje kompanija Advanced RISC Machine Ltd, ili samo ARM Ltd. Potom nastaje trea generacija procesora, pa etvrta, peta,... Svaka nova generacija procesora donela je izvesna unapreenja, naravno, kao na primer:

    - prelazak na 32-bitnu arhitekturu, - uvoenje kompresovanog seta instrukcija (Thumb), - multiprocesiranje, - ...

  • MSREAL ARM mikrokontroleri

    2

    O nekim od unapreenja koja predstavljaju najvanije karakteristike savremenih ARM procesora, kao i o najvanijim karakteristikama ARM arhitekture uopte, bie govoreno u narednim poglavljima.

    1.1.2 PRIMENA ARM PROCESORA

    Jednostavnost, dobre performanse i niska potronja ine ARM procesore veoma

    pogodnim za primenu u embedded sistemima, stoga je ARM arhitektura najire primenjena 32-bitna RISC arhitektura. 2009. godine ARM procesori ine oko 90% od svih embedded 32-bitnih RISC procesora. Koriste se u potroakoj elektronici, ukljuujui PDA ureaje, mobilne telefone, iPOD ureeje i druge digitalne media plejere, rune konzole za igrice, kalkulatore, ali i kompjuterske periferije kao to su hard diskovi i ruteri.

    Inae, kompanija ARM ne proizvodi ipove, ve samo pravi dizajn procesora (oni

    su tzv. intellectual property company), a proizvode ih firme koje od ARM-a kupuju licencu za njihov dizajn, pa tako imamo Intel-ove ARM procesore, Philips-ove ARM procesore i sl. Kompanije u ije ureaje su ugraeni ARM procesori su jo i: Alcatel, Atmel, Broadcom, Freescale, LG, NEC, NVIDIA, Samsung, Sharp, ST Microelectronics, Texas Instruments, VLSI Technology, Yamaha,

    1.2 ARHITEKTURA ARM PROCESORA

    1.2.1 OSNOVNE KARAKTERISTIKE

    Jednostavnost arhitekture ARM procesora kao posledicu ima male dimenzije ipova na koje je dizajn implementiran, a male dimenzije dovode do vrlo male potronje. Dakle, mala veliina ipova, performanse i mala potronja su glavni atributi u razvoju ARM arhitekture.

    ARM je, kao to je ve napomenuto, Reduced Instruction Set Computer (RISC) i karakteriu ga sledee tipine osobine RISC arhitekture:

    - uitaj / smesti (load / store) arhitektura, gde operacije za rad sa podacima manipuliu samo sa

    sadrajem registara, a ne direktno sa sadrajem memorije,

  • MSREAL ARM mikrokontroleri

    3

    - jednostavani modovi adresiranja, - sve instrukcije su iste duine (32 bita), - mogunost uslovnog izvravanja skoro svih instrukcija.

    Load / Store arhitektura Sve instrukcije ARM procesora su registarsko-registarske. Za razliku od

    registarsko-memorijskih instrukcija kod kojih mesto jednog ili vie operanada moe biti u memoriji, kod registarsko-registarskih instrukcija mesta svih operanada moraju biti u registrima. Dakle, kod ovakvog skupa instrukcija operandi iz memorije se prvo moraju preneti u registre, a zatim obaviti aritmetiko-logika operacija. Na primer, za sabiranje operanada koji se nalaze u memoriji na adresama adr2 i adr3, a rezultat treba smestiti u memorijsku lokaciju sa adresom adr1, potrebno je izvriti sledee instrukcije:

    MOV R2, adr2 ; R2

  • MSREAL ARM mikrokontroleri

    4

    a) b)

    Slika 1.1 Uopteni prikaz arhitekrure kontrolera a) von Neumann-ova

    b) Harvard

    1.2.2 TIPOVI PODATAKA

    ARM procesori podravaju sledee tipove podataka: - 8-bitne (byte) - 16-bitne (halfword) - 32-bitne (word) 1.2.3 MODOVI RADA PROCESORA, REGISTRI

    Na slici 1.2 pikazani su registri ARM procesora u razliitim modovima rada procesora.

  • MSREAL ARM mikrokontroleri

    5

    Slika 1.2 Registri ARM procesora

    ARM arhitektura podrava 7 modova rada procesora. Promena moda se moe

    uraditi softverski ili moe biti izazvana spoljanjim prekidima ili do nje dolazi radi procesiranja izuzetaka. Modovi rada ARM procesora su:

    1) User mode (USR) osnovni mod, veina programa se izvrava u ovom modu, 2) Fast Interrupt (FIQ) mod koji omoguava procesiranje prekida visokog prioriteta, 3) Interrupt (IRQ) mod namenjen prekidima niskog prioriteta, 4) Supervisor (SVC) mod u sluaju reseta ili softverskog prekida, 5) Abort (ABT) mod koji se aktivira prilikom greaka u pristupu memoriji (load / store), 6) Undifined (UND) mod koji se aktivira kada se pokua dekodirati nedefinisana instrukcija, 7) System (SYS) privilegovani mod za operativni sistem.

    Svi modovi osim User moda su tzv. privilegovani modovi jer imaju potpuni

    pristup resursima sistema. Svi modovi osim User moda i System moda slue za procesiranje izuzetaka.

  • MSREAL ARM mikrokontroleri

    6

    Kada se desi promena moda, neki od standardnih registara zamenjuju se registrima namanjenim za rad u tom modu (oseneni registri na slici 1.2), ime se izbegava pamenje sadraja odgovarajueg registra pri svakom izuzetku.

    ARM ima 31 registar opte namene i 6 statusnih registara. 16 registara opte

    namene (R0..R15) i jedan ili dva statusna registra su vidljivi u svakom trenutku, u zavisnosti od moda rada, a ostali se koriste za ubrzavanje procesiranja izuzetaka. Od pomenutih 16 registara, 3 registra imaju specijalnu namenu to su registri R13, R14 i R15.

    Stack pointer (SP) Registar R13 se koristi kao stack pointer, a koriste ga instrukcije PUSH i POP. Link register (LR) Registar R14 je link register. Ovaj registar sadri adresu sledee instrukcije posle instrukcija kojima se pozivaju potprogrami. Takoe se koristi za skalditenje povratne adrese prilikom ulaska u modove izuzetaka. U svim drugim situacijama, R14 se koristi kao registar opte namene. Program counter (PC) Registar R15 je program counter. On se moe koristiti u mnogim instrukcijama kao pokaziva na instrukciju koja treba da se izvri dve instrukcije nakon instrukcije koja se trenutno izvrava. S obzirom na to da su sve instrukcije u ARM modu1 duine 32 bita (4 bajta), instrukcije su smetene na adesama 0, 4, 8, 12, 16 itd, pa su poslednja dva bita ovog registra uvek 0. U Thumb modu instrukcije su 16-bitne.

    Pored registara opte namene, od kojih neki imaju i specijalnu namenu, postoji i statusni registar u kome se nalaze informacije o trenutnom statusu procesora.

    Current Program Status Register (CPSR) CPSR registru je mogue pristupiti u svim modovima rada procesora. On sadri uslovne flegove (conditional flags), bite za zabranjivanje prekida (interrupt disable

    1 O ARM i Thumb modu, odnosno o ARM i Thumb setu instrukcija e biti govoreno u poglavlju 1.3

  • MSREAL ARM mikrokontroleri

    7

    bits), informaciju o modu rada procesora i druge statusne i kontrolne informacije. Svaki mod izuzetaka ima svoj Saved Program Status Register (SPSR) u kome se uva vrednost CPSR registra kada se odgovarajui izuzetak deava. Izgled CPSR registra prikazan je na slici 1.3.

    Slika 1.3 CPSR registar

    U nastavku je opisana funkcija pojedinih bita ovog registra. N Negative result from ALU Z Zero result from ALU C ALU operation Caried out V ALU operation oVerflowed Q Q flag, indicate whether overflow and/or saturation has occured in some instructions GE [3:0] Greater then or Equal (prethodno pomenuti bitovi mogu biti upisivani u bilo kom modu rada procesora i spadaju u grupu tzv. user-writable bitova ovog registra) A, I, F interrupt disable bits M [4 : 0] determine the mode in which processor operates (A,I,F i M bitovi mogu biti upisani u bilo kom privilegovanom modu rada procesora)

  • MSREAL ARM mikrokontroleri

    8

    T i J select the current instruction set

    ARM arhitektura podrava 7 tipova izuzetaka i privilegovan mod rada za svaki od njih. Izuzeci su:

    1) reset, 2) greka u pristupu memoriji (Data Abort), 3) spoljanji prekid visokog prioriteta (FIQ), 4) spoljanji prekid niskog prioriteta (IRQ), 5) greka prilikom uzimanja instrukcije (Prefetch Abort), 6) softverski prekid (Software Interrupt), 7) pokuaj dekodiranja nedefinisane instrukcije (Undefined Instruction). Kada se desi izuzetak, procesor:

    - kopira CPSR u SPSR_ - postavlja odgovarajue CPSR bite - prelazi na ARM stanje - prelazi u mod za obradu izuzetka - zabranjuje prekide - povratnu adresu upisuje u LR_ - u PC upisuje adresu vektora prekida

    Posle obrade izuzetka, procesor: - u CPSR upisuje vrednost koja je sauvana u SPSR_ - u PC upisuje povratnu adresu koja je sauvana u LR_

  • MSREAL ARM mikrokontroleri

    9

    1.3 SET INSTRUKCIJA 1.3.1 USLOVNO IZVRAVANJE INSTRUKCIJA

    Veina instrukcija ARM-a se moe izvravati uslovno, to znai da njihovo

    izvravanje zavisi od toga da li odreeni bitovi u CPSR registru (N, Z, C, V) zadovoljavaju uslov definisan u instrukciji. Ako uslov nije zadovoljen, instrukcija se ponaa kao NOP. Svaka instrukcija sadri 4-bitno polje za definisanje uslova. Na slici 1.4 prikazano je polje za definisanje uslova i date su potencijalne vrednosti istog, njihovo znaenje i vrednosti bita CPSR registra koje treba da budu postavljene u datom trenutku da bi se instrukcija izvrila.

    Slika 1.4 Polje za definisanje uslova i kodovi uslova

  • MSREAL ARM mikrokontroleri

    10

    Uslovnim izvravanjem instrukcija postie se poveenje gustine koda i poboljanje performansi.

    Veina ARM procesora podrava dva seta instrukcija:

    1) 32-bitni ARM set instrukcija, 2) 16-bitni Thumb set instrukcija.

    1.3.2 ARM SET INSTRUKCIJA

    U nastavku su opisane neke od instrukcija ARM procesora. Load/Store instrukcije

    Svi memorijski transferi se obavljaju instrukcijama iz ove grupe. Ostale instrukcije ne mogu imati memorijske operadne. 1) Uitavanje iz memorije: LDR uitava jedan 32-bitni podatak LDRB uitava jedan bajt, a ostatak registra je proiren nulama LDRH uitava 16-bitni podatak, ostatak se proiruje nulama 2) uvanje u memoriju: STR smeta 32-bitni podatak u memoriju STRB smeta jedan bajt (LSB) u memoriju STRH smeta jedan 16-bitni podatak (nii) u memoriju ARM load / store adresni modovi: 1) Offset (bazni registar + ofset +/- 12-bitna konstanta ili +/- drugi registar koji opciono moe biti iftovan)

    LDR R0, [R1, #4] ; R0

  • MSREAL ARM mikrokontroleri

    11

    STR R0, [R1, -R2, LSL #2] ; M[R1 - 4 * R2]

  • MSREAL ARM mikrokontroleri

    12

    Dodavanjem odgovarajueg uslovnog koda kao sufiksa (tabela sa slike 1.4, Mnemonic extension), postie se uslovno izvravanje instrukcija:

    ADDGT R0, R0, R1 ; R0 Thumb mod, uzimaju se (fetch) 16-bitne instrukcije, PC se uveava za 2.

  • MSREAL ARM mikrokontroleri

    13

    Prelazak u Thumb mod se radi izvravanjem naredbe BX (Branch and Exchange) ili setovanjem T bita u CPSR registru.

    Kompresovanje 32-bitnih instrukcija u 16-bitne mogue je jer kod veine

    instrukcija: - uslovno izvravanje se ne koristi, - isti registar se koristi za smetanje operanda i rezultata koji nastaje obradom tog operanda, - koristi se samo niih 16 bitova registara, - ...

    Na slici 1.5 prikazan je izgled jedne Thumb instrukcije (ADC) i njoj ekvivalentne ARM instrukcije.

    Slika 1.5 ADC instrukcija u Thumb i ARM modu

    Za Thumb ADC: Rd informacija o registru koji sadri prvi operand i u koji e biti smeten rezultat operacije Rm informacija o registru koji sadri drugi operand

    Primetimo da su prva 4 bita u 32-bitnoj instrukciji 1110, a ta 4 bita definiu uslov izvravanja naredbe, pa, ako pogledamo tabelu sa slike 1.4, vidimo da se naredba izvrava bezuslovno.

  • MSREAL ARM mikrokontroleri

    14

    1.4 PROTONA OBRADA (PIPELINE)

    ARM procesori (ARM7 i stariji) koriste 3-stepenu protonu obradu, tako sa emo prednost protone obrade instrukcija objasniti na optem primeru protone obrade u 3 koraka.

    Svaki korak protone obrade traje tano jedan period sinhronizacionog signala. Prvi korak je itanje instrukcije (fetch), grugi korak je dekodiranje instrukcije (decode) i trei korak je izvrenje (execute). Poto su stepeni protone obrade striktno odvojeni i svaki stepen ima na raspolaganju sve informacije i sve operande, jasno je da kada je jedna instrukcija u stepenu dekodiranja, stepen za itanje je potpuno slobodan i moe se iskoristiti za uzimanje naredne instrukcije. Ptethodno pomenuto zapravo predstavlja osnovnu osobinu i osnovnu prednost protone obrade preklapanje u izvrenju delova razliitih instrukcija (slika 1.6).

    Slika 1.6 Protona obrada

    Kao to se vidi sa slike, posle drugog perioda postie se puno preklapanje jer

    svaki stepen protone obrade obrauje razliitu instrukciju. Odnosno, posle punjena svih stepeni protone obrade postie se puni paralelizam na nivou obrade instrukcija. Paralelizam u obradi znaajno ubrzava izvravanje instrukcija u odnosu na obradu bez paralelizma.

  • MSREAL ARM mikrokontroleri

    15

    Protona obrada ne skrauje vreme izvrenja instrukcija (sa slike se vidi da se sve instrukcije izvravaju u tri perioda takta), ali, zbog preklapanja odnosno paralelizma u obradi delova instrukcija, poveava broj izvrenih instrukcija u jedinici vremena. U idealnom sluaju, ubrzanje koje se postie protonom obradom jednako je broju stepeni protone obrade. Tako je u sluaju 3-stepene protone obrade, ubrzanje koje se postie protonom obradom u odnosu na isti processor koje ne koristi protonu obradu jednako 3. To znai da je u idealnom sluaju izvrenje programa na procesoru sa protonom obradom 3 puta bre u odnosu na isti procesor bez protone obrade.

    Na slici 1.7 nalazi se prikaz originalne ARM protone obrade u 3 koraka koja je ostala gotovo neizmenjena od prvog ARM procesora pa do jednog od savremenih ARM procesora ARM7TDMI. To je klasina fetch-decode-execute protona obrada, koja izvrava jednu instrukciju po taktu. Prvi segment protone obrade ita instrukciju iz memorije i uveava vrednost u instrukcijskom adresnom registru, u kome se sada nalazi adresa sledee instrukcije. Ista ta vrednost se smeta i u programski broja. Sledei segment dekodira (deifruje) instrukciju i priprema kontrolne signale potrebne za izvravanje iste. Trei segment ita operande iz registara, izvrava aritmetiko-logike operacije, ita iz memorije ili upisuje u nju, ako je potrebno, i konano upisuje nazad modifikovane vrednosti registara.

  • MSREAL ARM mikrokontroleri

    16

    Slika 1.7 Protona obrada kod ARM7TDMI procesora

    Novije generacije ARM procesora imaju protonu obradu koja je podeljena na 5, 6, 7, 8, 9, pa ak i 13 koraka.

  • MSREAL Uvod u Operativne Sisteme

    17

    2 Uvod u Operativne Sisteme Svaki sloeni postupak koji se moe izraziti pomou algoritma sa konanim brojem elementarnih operacija, moe se predati raunaru na izvrenje. Jedan od kljunih delova raunarskog sistema koji omoguava prenoenje intelektualnog rada sa oveka na raunar jeste sistemski softver. Sistemski softver je posrednik izmeu korisnikog (aplikativnog) softvera i hardvera koji korisniku omoguava da lake, jednostavnije i efikasnije iskoristi resurse raunarskog sistema. Glavni deo sistemskog softvera i osnova svakog raunarskog sistema jeste operativni sistem. 2.1 DEFINICIJA OPERATIVNOG SISTEMA Operativni sistem (OS) je skup raunarskih programa koji upravljaju hardverskim i softverskim resursima raunara. Komponente raunarskog sistema su hardver, softver i podaci, a operativni sistem osigurava sredstva za pravilno korienje navedenih komponenti. On je podloga svim ostalim programima koji se izvravaju na raunaru i bitno olakava i pojednostavljuje njihovo izvoenje. Na slici 2.1 prikazano je mesto koje zauzima OS u prikazu korienja raunara.

    Slika 2.1 Mesto OS u prikazu korienja raunara

  • MSREAL Uvod u Operativne Sisteme

    18

    ezdesetih godina OS smo mogli definisati kao programska sredstva koja upravljaju hardverom. Danas je prisutna tendencija migracije mnogih funkcija tradicionalnih programa ka mikroprogramima tako da je u nekim sistemima vie funkcija realizovano mikroprogramski nego obinim programskim sredstvima. Stoga OS moemo definisati kao skup programa, kako obinih tako i mikroproprograma, koji obezbeuju mogunost korienja hardvera. Pri tome hardver raunara predstavlja sirovu raunarsku mo, a zadatak OS je da se hardverske mogunosti uine dostupnim i po mogunosti udobnim za korisnika. Dizajn i izrada OS je usko povezana sa hardverom kao osnovom na kojoj se operativni sistem izgrauje, pa zato proizvoai hardvera najee i proizvode operativne sisteme. Otuda imamo mnotvo razliitih pristupa, nivoa, verzija i namena OS, pa samim tim i razliitih definicija ovog pojma. Pritom, korisnik vidi OS preko jezika OS (komandni jezik, kontrolno-upravljaki jezik), a veina unutranjih problema, reenja i postupaka OS za korisnika je transparentna, tj. on o njima ne mora voditi rauna niti ih poznavati. U optem smislu, operativni sistem se moe definisati kao skup programa koji upravljaju resursima raunarskog sistema i obezbeuju interfejs ka korisniku. Prva funkcija operativnog sistema je upravljanje resursima raunara (engl. resource management). Pod pojmom resurs podrazumevamo sve to je programu potrebno za rad. Resursi mogu biti hardverski (procesor, memorija, ulazno-izlazni ureaji) i softverski (programi, podaci, tj. datoteke svih vrsta). Zadatak operativnog sistema je da vodi rauna o resursima raunara, to jest da zadovolji potrebe programa, da prati koji program koristi koje resurse, da obezbedi pristupano radno okruenje za krajnjeg korisnika raunara, tako to raunar kao mainu koja rukuje bitovima, bajtovima i blokovima pretvara u mainu koja rukuje datotekama i procesima, itd. Ukratko reeno, operativni sistem je skup sistemskih programa koji posreduje izmeu korisnika raunara i raunarskog hardvera, a cilj mu je da: izvrava korisnike programe i olaka reavanje korisnikih problema; korienje raunarskog sistema uini podesnijim za korisnika; omogui to efikasnije iskorienje raunarskog hardvera.

    Kao takav, operativni sistem je jedan od najvanijih i najsloenijih delova raunarskog sistema i sastoji se od vie relativno nezavisnih celina. Prema tradicionalnom shvatanju operativni sistem ine: kernel (jezgro) program koji obavlja osnovne funkcije OS i uvek se nalazi u

    memoriji; skup uslunih sistemskih programa;

  • MSREAL Uvod u Operativne Sisteme

    19

    shell (koljka) komandni ili grafiki korisniki interfejs (GUI) prema funkcijama OS.

    Prema modernom shvatanju operativni sistem obuhvata sve ovo i jo: luksuzan GUI; skup uslunih aplikativnih programa; programi za Internet usluge.

    Dakle, po modernom shvatanju operativni sistem je Sve to proizvoa

    isporui pod tim nazivom to najbolje ilustruje primer Microsoft Windows-a. Treba imati na umu da svaki proizvoa raunara ima svoje operativne sisteme, pa je teko dati optu strukturu operativnog sistema. Na slici 2.2 prikazan je hijerarhijski model operativnog sistema.

    Slika 2.2 Hijerarhijski model OS

    Pojedini delovi predstavljaju nivoe operativnog sistema. Hijerarhijski model ima sledei smisao: na posmatranom nivou operativnog sistema mogu se zahtevati usluge samo od njegovih niih nivoa, a nikako od viih. Najnii sloj je poznat kao jezgro

  • MSREAL Uvod u Operativne Sisteme

    20

    operativnog sistema (engl. nucleus, kernel). To je osnovni deo svakog OS. Nadovezuje se na hardver i predstavlja vezu, tj. interfejs izmeu hardvera i ostalih slojeva operativnog sistema. Zbog odnosa veliine operativnog sistema i radne memorije, veina operativnih sistema ne moe da stane u radnu memoriju. Zato se u memoriji uvek nalaze samo najvaniji delovi operativnog sistema, takozvani rezidentni delovi, kakav je i kernel koji aktiviraju i zavravaju korisnike programe, dodeljuju memoriju i datoteke, i obavljaju ulazno-izlazno operacije. Kao to smo ve napomenuli, operativni sistem je fundamentalni deo sistemskih programa, iji je zadatak upravljanje resursima raunara i koji obezbeuje osnovu za pisanje aplikacionih programa. Postavlja se pitanje kako OS obezbeuje osnovu za pisanje aplikacionih programa? Odgovor lei u injenici da je raunar kompleksni sistem sastavljen od velikog broja modula, kao to su: procesor, memorija, diskovi, tastatura, mi, tampa, skener itd. Pisanje programa na taj nain da se ti delovi raunara programiraju direktno je vrlo teak posao. Zato je dolo do ideje da se stavi jedan sloj izmeu aplikacionih programa i hardvera. Uloga tog sloja je da obezbedi neki interfejs (ili virtuelnu mainu) ostalim programima radi lakeg i bezbednijeg pristupa hardveru. Taj sloj je upravo OS. Sada imamo sledeu situaciju:

    office baze podataka igre Korisniki programi

    kompajleri,interpreteri editori linkeri Sistemski programi

    operativni sistem

    mainski jezik

    HARDVER mikro programi

    fiziki ureaji

    Na najniem nivou imamo fizike ureaje fiziki delovi raunara. Iznad tog sloja su mikro programi direktno kontroliu fizike ureaje i obezbeuju interfejs prema sledeem nivou. Predstavljaju elementarne korake od kojih se sastoje instrukcije mainskog jezika. Mainski jezik je skup instrukcija koje procesor direktno razume (izvrava ih pomou svojih mikro programa). Glavna funkcija operativnog sistema je sakrivanje detalja ovih niih nivoa od ostalih programa i pruanje niza jednostavnijih instrukcija za pristup hardveru.

  • MSREAL Uvod u Operativne Sisteme

    21

    2.2 KARAKTERISTIKE OPERATIVNOG SISTEMA Karakteristikama nekog OS moemo nazvati njegove osobine koje ispoljava pri upotrebi. Iz niza osobina koje mogu posedovati OS izdvojiemo: Istovremenost - paralelizam (Concurrency) Zajedniko korienje, odnosno deljenje resursa (Sharing) Pouzdanost (Reliability) Sigurnost (Security) Upotrebljivost (Usability) i Deljivost - modularnost (Modularity)

    Paralelizam u radu podrazumeva uporedno odvijanje vie procesa (programa u

    stanju izvravanja) u raunarskom sistemu. Ovu karakteristiku poseduju oni OS koji su u stanju da odjednom zaponu reavanje vie zadataka i omogue njihovo istovremeno odvijanje.

    U datom trenutku, meutim, jedan procesor izvrava samo jedan program. Dakle, gledajui sa strane korisnika, izvrava se vie programa istovremeno, ali sa interne strane raunarskog sistema zapravo se izvrava onoliko programa koliko ima procesora u sistemu. Naime, ako postoji samo jedan (centralni) procesor, onda se u svakom trenutku na njemu moe izvravati samo jedan program, ali ako ima vie procesora, onda je izvravanje zaista paralelno. Da bi se ostvario takav rad uvodi se koncepcija procesa. Za sada, proces definiimo kao program u izvravanju .

    Zajedniko korienje, odnosno deljenje resursa posledica je paralelizma koji postoji u raunarskom sistemu, bilo da se radi o prividno ili stvarno paralelnoj obradi. Razume se, deliti se mogu samo resursi kojima to njihova konstrukcija doputa.

    Ureaji mogu biti: deljivi (sharable) kao npr. operativna memorija jer moe vie procesa istovremeno da bude smeteno u njoj; nedeljivi (nonsharable) kao npr. disk jer ne moe vie procesa da istovremeno pristupa disku (ali nijedan proces ne dri disk sve vreme izvravanja nego izmeu dva uzastopna pristupa istog procesa moe biti proizvoljan broj pristupa drugih procesa) i monopolski (dedicated) su takoe nedeljivi, ali kod njih izmeu uzastopnih pristupa jednog procesa ne sme biti pristupa drugih procesa (npr. tampa, magnetna traka...), tj. oni se ne oslobaaju dok proces sa njima ne zavri.

    Pouzdanost je karakteristika OS koja govori o uestalosti greaka ili zastoja. Jasno je da pouzdanost sistema zavisi ne samo od operativnog sistema, ve i od

  • MSREAL Uvod u Operativne Sisteme

    22

    spoljanjih dogaaja i zahteva poput reima korienja, konfiguracije sistema, zahteva korisnika i slino.

    Npr. kod nekih real-time sistema neophodno je obezbediti neprekidno pouzdano funkcionisanje bez havarijskih situacija ili prekidanje kontrole pri otkazu pojedinih ureaja. Poveanje pouzdanosti sistema postie se uvoenjem rezervenih ureaja i specijalnom logikom organizacijom koja omoguava automatsku rekonfiguraciju sistema.

    Sigurnost sistema je osobina koja omoguava OS da zatiti od neovlaenog pristupa one delove u raunarskom sistemu koje korisnik eli da zatiti. Najee se radi o zatiti podataka i programa. Operativni sistem mora da zatiti i samog sebe od ostalih programa u sistemu.

    Upotrebljivost je karakteristika po kojoj se funkcije operativnog sistema moraju

    to jednostavnije koristiti. To se pre svega odnosi na komunikaciju izmeu OS i korisnika, odnosno na kontrolno upravljaki jezik. Meutim, pod upotrebljivou OS podrazumevamo i druge aspekte korienja kao to su: podravanje raznih reima rada, mogunost izvrenja vie programa, razliite mogunosti pristupa i slino.

    Modularnost je karakteristika koja ukazuje na modularan pristup izgradnji samog operativnog sistema. Ova karakteristika omoguava proizvoau da ga modifikuje u delovima koje treba ili eli da promeni, a da se pri tom ne menja itav sistem, a takoe i samom korisniku da ga nadograuje. Pored gore navedenih osobina operativnog sistema moemo jos da navedemo i niz drugih, poeljnih osobina operativnog sistema koji su neophodni za njegovo ispravno funkcionisanje. Neke od tih poeljnih osobina su: visok nivo efikasnosti, jednostavnost odravanja, postojanje dugotrajne memorije, nedeterminizam itd. 2.2.1 FUNKCIJE OPERATIVNOG SISTEMA

    Za razliku od karakteristika, koje su poeljna svojstva, funkcije sistema su zadaci koje sistem mora da realizuje. Kako je svaki zadatak mogue algoritamski reiti na vie naina, postoji mnogo razliitih OS-a koji na razliite naine reavaju iste zadatke. Razliita reenja uslovljena su i hardverom na kojem se izvravaju moduli OS-a. Kaemo moduli, jer su savremeni OS napravljeni tako da predstavljaju skup modula. Modul je napravljen kao posebna programska celina koja realizuje jednu funkciju OS-a. Pojedini moduli mogu funkcionisati nezavisno jedan od drugog,

  • MSREAL Uvod u Operativne Sisteme

    23

    ali i pozivati jedan drugog. Funkcije modula se nadovezuju jedna na drugu, a obino postoji modul koji koordinira akcije svih ostalih.

    Poto se radi o uvodnom predavanju o operativnim sistemima naveemo samo globalne funkcije koje moraju biti reene u svakom OS. Uz upravljanje raunarskim resursima - procesorima, operativnom memorijom, perifernim ureajima i podacima, OS-i treba da obezbede interpretiranje i izvoenje kontrolno upravljakih komandi i programa, upravljanje poslovima, upravljanje sekundarnom memorijom, zatitu, a esto i podrku daljinske obrade i rada u mrei.

    Upravljanje osnovnim resursima raunarskog sistema obezbeuje vie

    funkcionalnih grupa programa namenjenih za: Upravljanje procesorima moemo ilustrovati sledeim pitanjima: kojem procesu dodeliti procesor za izvravanje, koliko dugo sme proces drati procesor, koliko procesa moe konkurisati za procesor i sl. Oigledno da je realizacija ove funkcije daleko sloenija u multiprogramiranju nego u monoprogramskom radu. Stoga, uvodi se jezik za upravlajnje poslovima (engl. Job control language), koji se interpretira preko OS. Upravljanje memorijom ima svrhu reavanja problema oko efikasnog korienja operativne memorije. Ono je neraskidivo vezano sa dodelom procesora i upravljanjem perifernim ureajima. Na ovom nivou obavljaju se sledee funkcije: 1. realizacija odreene strategije dodeljivanja memorije (statiko i dinamiko dodeljivanje memorije), 2. dodeljivanje memorije, 3. sprovoenje strategije za oslobaanje memorije. Upravljanje perifernim ureajima odnosi se na celokupan rad oko ulaznih, odnosno izlaznih ureaja od njihovog dodeljivanja do izvravanja zahteva sa pojedinim ulazno/izlaznim operacijama. Kako su U/I operacije sporije od procesora, OS mora da izoluje U/I operacije od procesora, to se postie upotrebom brzog medijuma za privremeno memorisanje U/I podataka. U te svrhe, realizovane su dve hardverske strukture: kanal i prekidi. Tehnika prekida i DMA kontroler (Direct Memory Access) obezbeuju visoke preformanse i izolovanost od U/I ureaja. Upravljanje podacima odnosi se na rukovanje podacima na spoljanjim memorijama, dakle na nain smetanja na eksterne memorije, pristupe podacima, upisivanje i itanje podataka iz datoteka, kreiranje, odravanje i brisanje datoteka, upravljanje eksternim memorijama i drugo.

    Ono to je zajedniko za module koji upravljaju svakim od navedenih resursa raunarskog sistema je da moraju da obezbede:

  • MSREAL Uvod u Operativne Sisteme

    24

    voenje evidencije o resursu donoenje odluke o dodeli resursa alokaciju resursa i dealokaciju resursa.

    2.2.2 OSNOVNI POJMOVI I KONCEPTI OS-A Raunarski sistem ine hardver, operativni sistem i korisnike programe. Videli smo da je jedan od zadataka OS-a da sakrije hardver od aplikacionih programa, odnosno da obezbedi laki pristup hardveru. To se ostvaruje preko niza proirenih instrukcija, koji se zovu sistemski pozivi (system calls). Sistemski pozivi (system calls) Aplikacioni programi komuniciraju sa OS-om pomou sistemskih poziva, tj. preko operacija (funkcija) definisanih od strane OS-a. Sistemski pozivi se realizuju pomou sistema prekida: korisniki program postavlja parametre sistemskog poziva na odreene memorijske lokacije ili registre procesora, inicira prekid, OS preuzima kontrolu, uzima parametre, izvri traene radnje, rezultat stavi u odreene memorijske lokacije ili u registre i vraa kontrolu programu. Sistemske pozive esto podrava i hardver, tj. procesor, na taj nain to razlikuje dva reima rada: korisniki reim (user mode) i sistemski reim (kernel mode, sistem mod, supervisor mod) rada. Korisniki programi mogu raditi iskljuivo u korisnikom reimu rada procesora, sistemski reim rada je predvien za OS. Ako korisniki program pokua izvriti neku operaciju koja je dozvoljena samo u sistemskom reimu rada, kontrola se predaje OS-u. Prilikom sistemskih poziva procesor prelazi iz korisnikog reima rada u sistemski, OS obradi poziv, nakon ega se procesor vraa u korisniki reim rada. Komandni interpreter (shell) Operativni sistem je zaduen za sistemske pozive. Komandni interpreter interpretira komande korisnika i izvrava ih oslanjajui se na sistemske pozive OS-a. To je deo OS-a koji je vidljiv za korisnike raunara. Npr. u DOS-u to izgleda ovako: komandni interpreter nakon startovanja ispisuje prompt, i eka komande korisnika: C:\dir

  • MSREAL Uvod u Operativne Sisteme

    25

    Komanda dir e ispisati sadraj trenutno aktivnog direktorijuma (u ovom sluaju C:). Komandni interpreter je primarni interfejs izmeu korisnika i operativnog sistema. U DOS-u to je bio fajl COMMAND.COM. Procesi Procesi predstavljaju jedan od najvanijih koncepata operativnih sistema. Program je niz instrukcija koje ostvaruju neki algoritam. Proces je program u statusu izvravanja, zajedno sa svim resursima koji su potrebni za rad programa. To praktino znai da je program je fajl (datoteka) na disku, a kada se taj fajl uita u memoriju i poinje da se izvrava dobijamo proces. Procesi se nalaze u jednom od sledeih stanja:

    proces se izvrava (RUNNING) - procesor upravo izvrava kod ovog procesa; proces je spreman, ali se ne izvrava (READY) - proces je dobio sve potrebne resurse, spreman je za izvravanje, eka procesor; proces je blokiran, eka na neto (npr. eka tampa da zavri sa tampanjem BLOCKED), za dalji rad procesa potrebni su neki resursi, koji trenutno nisu na raspolaganju, eka IO operaciju, rezultat nekog drugog procesa itd.

    Postoje etiri mogua prelaza izmeu stanja, kao to je prikazano na gornjoj slici. Kod nekih operativnih sistemima procesi mogu biti i suspendovani (suspended). Na taj nain dobijamo jo dva stanja:

    proces je suspendovan i spreman (ako je dolo do suspendovanja u stanju spreman)

    RUNNING

    READY BLOCKED

    1 2

    3

    4

  • MSREAL Uvod u Operativne Sisteme

    26

    proces je suspendovan i blokiran (ako je dolo do suspendovanja u stanju blokiran)

    i sledei dijagram:

    Posmatrajmo sledeu situaciju: imamo multiprogramirano okruenje (eng. multitasking environment) sa dva procesa. Proces P1 se izvrava dok ne doe do blokiranja zbog ekanja na neki dogaaj (npr. skeniranje). Tada krenemo sa izvravanjem procesa P2 koji se nakon nekog vremena isto postaje blokiran. U meuvremenu se desi dogaaj na koji je ekao proces P1 i sada moemo nastaviti sa izvravanjem. Da bismo znali, gde treba nastaviti, potrebno je pamtiti neke informacije o procesu. Upravo tome slui PCB tj. Process Control Block. Svakom procesu se dodeljuje jedinstveni PCB koji sadri informacije koje su potrebne za nastavak izvravanja tog procesa. Te informacije ukljuuju:

    jedinstveni identifikator procesa (pid process ID) stanje procesa prioritet procesa (iz liste ekanja biramo najpre procese sa veim prioritetima) adresa memorije gde se nalazi proces adrese zauzetih resursa sadraj registara procesora, itd.

    Operativni sistem treba da obezbedi sledee operacije sa procesima:

    RUNNING

    READY BLOCKED

    1 2

    3

    4

    SUSPENDED AND READY

    SUSPENDED AND BLOCKED

    5 6

    7

    8 9

  • MSREAL Uvod u Operativne Sisteme

    27

    kreiranje novog procesa (kreiranjem PCB-a) unitavanje procesa (brisanjem PCB-a iz liste) menjanje stanja procesa menjanje prioriteta procesa izbor procesa za izvravanje (dodela procesora nekom procesu context switch) sinhronizacija procesa komunikacija izmeu procesa itd.

    Fajl sistem (file system) Videli smo da je operativni sistem duan da obezbedi laki pristup hardveru

    programima na viim nivoima. Na isti nain, treba da obezbedi i abstraktniji prikaz fajlova kroz fajl sistem. Dakle, programi na viim nivoima ne treba da vode rauna o tome, kako su u stvari fajlovi smeteni na disku, o tome e voditi racuna OS. Za rad sa fajlovima, OS treba da obezbedi operacije, kao to su:

    otvaranje fajlova i zatvaranje fajlova; promena pozicije fajl-pokazivaa (FilePos); itanje iz fajlova i pisanje u fajlove; kreiranje novih fajlova; brisanje postojeih fajlova; reimenovanje, kopiranje, itd. Mnogi operativni sistemi podravaju i koncept direktorijuma, kao nain

    grupisanja fajlova, pa obezbeuju i operacije za rad sa njima. Elementi direktorijuma mogu biti fajlovi i drugi direktorijumi, tako dolazimo do fajl sistema u obliku stabla. Jezgro OS-a (kernel, nucleus, core)

    Jezgro je deo operativnog sistema, koji obavlja najbitnije operacije: upravljanje prekidima kreiranje i unitavanje procesa odabiranje procesa iz liste spremnih procesa (context switch) suspenzija i nastavljanje procesa (manipulacije sa PCB-om ) komunikacija izmedu procesa podrka za ulaz/izlaz (IO) upravljanje memorijom upravljanje fajl sistemom, itd.

  • MSREAL Uvod u Operativne Sisteme

    28

    2.3 DIZAJN I STRUKTURA OPERATIVNIH SISTEMA U nastavku teksta opisane su dve koncepcije projektovanja operativnih sistema, a to su monolitna organizacija (engl. monolithic systems) i slojevita organizacija (engl. layered systems). Takoe, bie prikazana i trea, savremena koncepcija, a to je arhitektura mikrojezgra (engl. microkernel).

    Monolitni sistemi (monolithic systems)

    U prolosti monolitni sistemi su predstavljali najeu organizaciju OS-a. Ovaj nain organizacije OS-a dobio je naziv The Big Mess velika zbrka, videemo zato. OS je realizovan kao skup procedura, od kojih svaka moe pozvati svaku ako je to potrebno. Korisniki programi servise OS-a koriste na sledei nain: parametri sistemskog poziva se smetaju u odreena mesta, kao to su registri procesora ili stek, pa sledi specijalna operacija poziv jezgra OS-a (kernel call). Ova operacija prebacuje procesor iz korisnikog reima rada u sistemski reim rada i kontrolu predaje OS-u. U korisnikom reimu rada nisu dozvoljene neke komande procesora, a u sistemskom reimu mogu se koristiti sve operacije poznate od strane procesora. Posle poziva jezgru, OS preuzima kontrolu, na osnovu parametara poziva odreuje koju sistemsku proceduru treba pozvati i poziva tu proceduru i na kraju se

    KORISNIKI PROGRAMI, KORISNIKI REIM

    1

    2 2 2 2

    3 3 3 3 3

  • MSREAL Uvod u Operativne Sisteme

    29

    kontrola vraa korisnikom programu. Dakle, OS ima sledeu strukturu (sastoji se od 3 sloja):

    1. glavni program koji obrauje sistemske pozive 2. skup sistemskih procedura koje se pozivaju prilikom sistemskih poziva 3. skup pomonih procedura koje se koriste od strane sistemskih procedura

    Slojevita realizacija (layered systems) Kod slojevite realizacije OS se deli na razliite slojeve na hijerarhijski nain: svaki sloj se gradi na slojeve ispod njega. Prvi OS koji je napravljen na ovaj nain je OS sa imenom THE (Technische Hogeschool Eindhoven) od strane E.W.Dijkstre. THE se sastojao od 6 slojeva na sledei nain:

    5 Komandni interpreter 4 Korisniki programi 3 U/I operacije 2 Procesi 1 Upravljanje memorijim 0 Procesor i multiprogramming

    Nulti sloj se bavi upravljanjem procesora, obezbeuje prebacivanje izmeu razliitih procesa. Prvi sloj upravlja memorijom: zauzima potrebnu memoriju za procese. Slojevi iznad prvog sloja ne treba da brinu o memorijskim potrebama, to e umesto njih uraditi prvi sloj. Drugi sloj upravlja komunikacijom izmeu razliitih procesa i komandnog interpretatora. Trei sloj obavlja U/I operacije. Slojevi 0..3 predstavljaju jezgro OS-a i rade u sistemskom reimu rada. Na etvrtom nivou imamo korisnike programe oni ne treba da se brinu ni oko procesa, memorije, komandnog interpretera, IO operacija, sve to obavljaju slojevi ispod.

    Znai bitna razlika izmeu monolitne i slojevite realizacije je u tome, to se OS kod monolitne strukture sastoji od skupa procedura bez ikakvog grupisanja ili hijerarhije, a kod slojevite realizacije OS se deli na vie slojeva od kojih se svaki oslanja na slojeve ispod, i gde svaki sloj ima tano odreenu funkciju (upravlja tano odreenim resursima).

  • MSREAL Uvod u Operativne Sisteme

    30

    Arhitektura mikrojezgra Mikrojezgro (engl. microkernel) predstavlja veoma savremen koncept u realizaciji savremenih OS. Osnovna zamisao je napraviti minimalno i pouzdano jezgro visokih preformansi, a sve ostale funkcije jezgra potisnuti u takozvani korisniki prostor (engl. user space). Korisniki moduli meusobno komuniciraju slanjem poruka (engl. message passing). U dobre osobine arhitekture mikrojezgra spadaju:

    Jednostavno proirivanje i optimizacija jezgra Jednostavno dodavanje novih modula bez uticaja na osnovno jezgro Jednostavna prenosivost na drugu raunarsku arhitekturu Vea pouzdanost (manje koda se izvrava u reimu jezgra) Vea sigurnost

    2.4 VRSTE OPERATIVNIH SISTEMA

    Postoje brojne podele operativnih sistema na osnovu razliitih kriterijuma: prema broju korisnika i/ili procesa, prema nainu obrade poslova, prema distribuciji procesorske snage i ostalih resursa, prema nameni i funkcionalnim osobinama,..

    Najjednostavniju klasu OS ine monokorisniki (single user) i to su OS za raunare sa samo jednim korisnikom na kojima se u datom trenutku izvrava samo jedan program (npr. MS-DOS).

    Drugu grupu ine multikorisniki monoprogramski OS. U takvim OS vie korisnika koristi usluge istog programa (npr. bankarski sistemi, rezervacija avionskih karata...).

    Najoptiju klasu OS ine multikorisniki multiprogramski sistemi. U takvim OS razliiti korisnici izvravaju razliite programe. U ovu klasu OS spadaju UNIX OS i uslovno Windows2000/XP/2003 ako obezbeuju terminalske usluge. Izvravanje je konkurentno (kvaziparalelno). Znai, vie programa je istovremeno prisutno u memoriji. Multiprogramski OS je uvek multiprocesni jer se za svaki program koji uestvuje u multiprogramskom reimu rada formira bar jedan proces. Nasuprot tome, monoprogramski sistem ne mora biti monoprocesni jer se program moe razbiti na delove i za svaki od tih delova formirati proces. Zbog toga se pojavljuju monokorisniki multiprocesni OS (MS Windows 3.1/9x/ME).

    Multiprogramiranje je uvedeno da bi se poveala iskorienost resursa, a time i celog raunarskog sistema. Sutina multiprogramskog rada obuhvata paraleni rad periferijskih ureaja i procesora (centralnog, tj. CPU). Ideja je da se CPU dodeli

  • MSREAL Uvod u Operativne Sisteme

    31

    drugom programu (procesu) dok periferijska jedinica radi za neki program (proces), tj. dok on eka na I/O. Time moemo jedan program da paralelizujemo u vie procesa i izvravanje e se ubrzati (ukupno vreme e biti manje) jer dok jedan proces (deo programa) eka, drugi proces se izvrava. Npr. dok korisnik unosi znake sa tastature (prilino sporo u odnosu na operacije sa diskom), moe se, pri ekanju da znak bude pritisnut, CPU koristiti za, recimo, itanje ili pisanje u cilju keiranja diska.

    Savremeni OS su u velikom broju sluajeva sistemi sa raspodeljenim vremenom (time-sharing). To se odnosi prvenstveno na multiprogramske sisteme. Da jedan program (odnosno jedan korisnik), ne bi uzurpirali procesor predvieno je kvantovanje, tj. raspodela vremena: svakom programu, tj. procesu se dodeljuje kvant vremena. Kada on istekne procesor se dodeljuje drugom procesu. Ovo se realizuje korienjem posebnog intervalnog asovnika u koji se upisuje kvant vremena kada proces dobije CPU. Dok se proces izvrava, asovnik se autonomno dekrementira dok ne doe na nulu. Tada se generie prekid. OS zatim dodeljuje CPU drugom procesu. Savremeni sistemi raspodeljenog vremena su po pravilu multiprogramski, odnosno multiprocesni.

    Neki OS podravaju mehanizam paketne obrade (batch). Termin potie iz vremena buenih kartica kada je vie programa uitavano u memoriju sa itaa kartica u obliku paketa programa. OS je uzimao paket po paket i obraivao, tj. prevodio, povezivao i izvravao. Sada se sistemi paketne obrade u istom obliku praktino ne koriste. Meutim, mnogi OS pored navedenih reima rada imaju kao opciju i tip paketne obrade. Taj reim rada se koristi ak i u nekim PC-jevima. Na disku se dri niz programa niskog prioriteta (background jobs) koji se izvravaju samo kada nema osnovnih (prioritetnijih) programa. Npr. Windows 95 ponekad radi neto po hard disku bez vidljivog razloga. Savremeni OS su uglavnom interaktivni, tj. korisnici komuniciraju sa sistemom preko terminala. Meutim, ne mora svaki unos podataka da bude interaktivan. Postoji i trea opcija - rad preko mree (kombinovani sistemi) .

    Znaajna klasa su OS u realnom vremenu. Kod tih sistema zahteva se reakcija u nekom fiksiranom vremenskom intervalu. Sistemi za upravljanje u realnom vremenu (engl. real-time systems) praktino spadaju u klasu specijalnih operativnih sistema. Glavna karakteristika ovih sistema je davanje odziva u propisanom vremenskom intervalu i precizno definisana vremenska ogranienja u kojima moraju da se dogode odzivi. Po pravilu, glavni izvori podataka su senzorski ureaji, te razni prekidai, A/D i D/A konvertori. To su sistemi koji kontroliu aplikacije specijalne namene, kao to su: specijalni grafiki sistemi, sistemi za medicinsku grafiku, sistemi za industrijsku kontrolu, kontrolisanje naunih eksperimenata itd. Dele se na dve

  • MSREAL Uvod u Operativne Sisteme

    32

    klase: vrsti sistemi za rad u realnom vremenu (engl. hard real-time systems) i meki sistemi za rad u realnom vremenu (engl. soft real-time systems). vrsti realni sistemi garantuju da e se svi vani poslovi obaviti na vreme. Po pravilu, nemaju sekundarnu memoriju, to jest diskove, jer najee rade u tekim uslovima, a kompletan kod i operativnog sistema i aplikacija uva se u ROM memoriji. Sam operativni sistem je ogranien, tako da mnoge funkcije operativnih sistema opte namene uopte ne postoje. Meki realni sistemi su manje zahtevni, oni obezbeuju dve klase procesa, a to su obini procesi i procesi u realnom vremenu koji imaju apsolutni prioritet. Praktino, oni su meavina sistema za rad u realnom vremenu i operativnih sistema opte namene. Meki realni sistemi su, praktino, sve vrste UNIX i Linux sistema, Windows 2000/XP/2003.

    U grupu klasinih OS spadaju jo i OS za stone raunare, OS za multiprocesorske sisteme itd. to se tie stonih raunarskih sistema, u ovu klasu spada vie vrsta OS (MS DOS, Windows, UNIX, Linux)

    Pored klasinih operativnih sistema javljaju se i dve nove vrste, a to su mreni operativni sistemi i distribuirani operativni sistemi.

    Mrene operativne sisteme karakteriu raunari povezani u mreu. Ovi raunari zadravaju relativno visok stepen autonomije svaki raunar ima svoj operativni sistem a u mogunosti su da meusobno razmenjuju podatke pomou odgovarajuih protokola. Operativni sistemi mogu biti razliiti, potreban je samo zajedniki protokol, tj. zajedniki jezik za komunikaciju. Korisnik jednog raunara moe se prijaviti na drugi, preuzeti neke datoteke itd. Korisnik zna da nije sam u mrei, tj. svestan je razliitih raunara s kojima komunicira preko mree.

    Distribuirani operativni sistemi su mnogo ozbiljnija varijanta u mrenom okruenju, zato to osim deljenja i migracije datoteka i tampaa omoguavaju i deljenje procesa, tj. programa. Korisnici ovaj sistem vide kao jednoprocesorski sistem, ali se, u stvari, radi o operativnom sistemu namenjenom za rad s vie procesora koji su fleksibilno povezani preko mree. To znai da postoji vie raunara povezanih u mreu, ali samo jedan operativni sistem, upravlja svim resursima u mrei. U pravom distribuiranom sistemu, korisnik ne treba da vodi rauna o tome gde su smetene njegove datoteke ili gde se izvrava njegov program to je posao distribuiranog operativnog sistema. Distribuirani operativni sistem se, dakle, ponaa kao jedinstvena celina. Korisnik ne mora znati da je umreen s drugim raunarima on ceo sistem vidi kao jedan raunar.

  • MSREAL Uvod u Operativne Sisteme

    33

    2.5 ISTORIJAT OPERATIVNIH SISTEMA Istoriju operativnih sistema emo posmatrati preko istorije raunara: 1. Generacija: (1945-1955) - raunari pravljeni od vakuumskih cevi. Raunari su bili ogromnih dimenzija i jako skupi (koristila ih je vojska), u jednom raunaru je bilo ak i do 20.000 cevi, bili su jako spori, programirao se na mainskom jeziku, programski jezici (ukljuujui i asembler) i operativni sistemi su bili nepoznati. Ljudi koji su radili na tim raunarima radili su sve: od programiranja do odravanja raunara. 2. Generacija: (1955-1965) raunari se prave od tranzistora, postaju manji, pouzdaniji i jeftiniji tako da su ih mogli kupovati (pored vojske) i velike korporacije, univerziteti itd. Raunari su bili odvojeni u posebnim sobama. Programeri piu programe na papiru u programskom jeziku FORTRAN, zatim se ti programi prenose na buene kartice. Buene kartice se ostavljaju u sobi sa poslovima (input room). Sistem operator pokupi buene kartice, u raunar ubaci kartice sa FORTRAN kompajlerom, pa buene kartice sa programom koji treba izvriti. Raunar odradi posao i razultat se dobija isto na buenim karticama, koje se prenose u prostoriju sa rezultatima (output room). Ovde se mnogo vremena troi na etanje izmeu raznih prostorija sa buenim karticama. Jo uvek nema operativnog sistema. Uvodi se sledee poboljanje: - paketna obrada (batch system) u sobi sa poslovima se sakuplja jedna koliina slinih (npr. svi zahtevaju fortran kompajler) poslova (programa), koji se pomou jeftinijeg raunara (npr. IBM 1401) prenosi na magnetnu traku. Nakon toga se magnetna traka prenosi u sobu sa glavnom raunarom moniji i skuplji raunar predvien za izvravanje programa (npr. IBM 7094), na glavni raunar se uitava poseban program koji je zaduen da sa trake sa poslovima redom uitava programe i izvrava ih. Taj program je predak dananjih OS-a. Nakon izvravanja programa, rezultat se snima na drugu magnetnu traku. 3. Generacija : (1965-1980) raunari se prave od integrisanih kola (IC) poetkom 60-ih veina proizvoaa raunara proizvodi dve vrste raunara : jednu jau verziju (kao IBM 7094) i jednu slabiju (kao IBM 1401) to je skup poduhvat. Novi korisnici raunara ele slabije raunare koji su jeftiniji, a posle nekog vremena treba im jai model koji je u stanju da izvri sve stare programe, ali bre. IBM taj problem pokuava reiti uvoenjem Systema/360. To je serija kompatibilnih raunara

  • MSREAL Uvod u Operativne Sisteme

    34

    razliitih snaga. Svaki od ovih raunara je pogodan i za naunu i za poslovnu primenu, pa je time podela raunara na dve vrste nestala. Ovaj koncept su preuzeli i ostali proizvoai raunara. Raunari iz serije System/360 su radili pod operativnim sistemom OS/360 koji je bio jako glomazan i prepun greaka.

    S razvojem discipline poznate pod imenom softversko inenjerstvo (engl. Software engineering), uvode se nove funkcije:

    multiprogramiranje, (engl. multiprogramming); viestruke ulazno-izlazne (U/I) operacije(engl. spool); podela raunarskog vremena (engl. time-sharing).

    Kod tree generacije raunara posebno treba istai pojavu dva operativna sistema MULTICS i UNIX. 4. Generacija: (1980-1990) Personalni Raunari razvoj personalnih raunara poeo je pojavom LSI (Large Scale Integration veliki stepen integracije) ipova. Miniraunari su bili dovoljno jeftini, da ih imaju i vie departmana iste firme ili univerziteta, a personalni raunari su postali dovoljno jeftini da ih imaju i pojedinci. Primeri personalnih raunara su: Spectrum, Commodore, Atari. Zatim IBM PC, Apple Macintosh , itd. Javljaju se prvi pravi operativni sistemi kao to su MS-DOS,UNIX,itd.

    Prave se programi za korisnike, koji nisu strunjaci za raunare, pa se razvija i korisniki interfejs programa. Dolazi do razvoja grafikog okruenja. Raniji OS (MS DOS, UNIX, VMS, ...) su radili u tzv. tekstualnom modu. To znai da je korisnik kucao tekstualne naredbe koje su uglavnom bile komplikovane. Korienje raunara je bilo dosta nepraktino i teko za uenje. To je bio jedan od razloga zato je malo ljudi tada koristilo raunare. Poznato je da obrada jedne slike trai mnogostruko vie raunarskih resursa od obrade bilo kog teksta. Razvojem hardvera raunari su imali sve bolje performanse i rad sa grafikom je postajao sve laki. To je bio preduslov za pojavu tzv. grafiki orjentisanih operativnih sistema (Windows, Linux, Mac OS). Ovi OS su uveli pojam pokazivaa (pointer) koji se koristi kao kaiprst. Pomjeranje ovog pointera se obavlja pomou mia. Ovim pointerom se biraju komande ili sliice koje se zatim startuju nekim od tastera mia. Ova grafika veza izmeu korisnika i raunara se naziva GUI (Graphical User Interface). Prednosti pri korienju GUI-a su jednostavnost pri radu, intuitivno i brzo uenje. Korienje GUI-a lii na sporazumevanje rukama. Dakle, umesto da se

  • MSREAL Uvod u Operativne Sisteme

    35

    kucaju komplikovane naredbe prosto se prstom pokazuje na njih. To je doporinelo ogromnom poveanju broja korisnika PC raunara. Danas ne postoji OS koji nema ili ne razvija GUI. Trenutno se na PC raunarima najvie koriste razne verzije Windows operativnog sistema. Razlog za to je lak i dopadljiv nain upotrebe PC raunara. Koristei asocijativne sliice korisnik upravlja raunarom i koristi njegove mogunosti. Za takav OS se kae da ima grafiki interfejs. Postoje razne verzije ovog operativnog sistema: Windows 95, Windows 98, Windows ME (Millennium), Windows NT (New Technology), Windows 2000, Windows XP (Experience), Windows 2003, Windows Vista i Windows 7. Kompanija koja proizvodi ovaj OS je iz Sjedinjenih Amerikih Drava i zove se Microsoft. Drugi, sve popularniji OS je Linux. Predstavlja jednu od poslednjih varijanti UNIX sistema. Linux je viekorisniki, vieprocesni operativni sistem. To je jeftin ili besplatan OS kojeg razvijaju programeri irom sveta. I on ima grafiki interfejs i postaje sve prisutniji kod PC raunara. Njegova osnovna prednost je otvorenost. To znai da je svaki detalj svih programa Linux OS javan i poznat. Drugim reima svako moe videti ili menjati ovaj OS. Upravo zbog toga se Linux najvie koristi u obrazovnim institucijama.

    Slika2.3 Simboli Windows-a i Linux-a

    2.6 POKRETANJE OPERATIVNOG SISTEMA

    Startovanje raunara predstavlja sloeni proces u kome hardver i softver naizmenino preuzimaju glavne uloge. Nakon ukljuivanja raunara, inicijalizuje se POST sekvenca (Power On Self Test) matine ploe koja proverava osnovne hardverske delove raunara. Po zavretku procedure, BIOS (Basic Input Output

  • MSREAL Uvod u Operativne Sisteme

    36

    System) dobija punu kontrolu nad hardverom sa osnovnim ciljem pokretanja operativnog sistema. BIOS pretrauje memorijske ureaje kako bi uitao image veliine 512 bajta, odnosno veliine jednog sektora koji se oznaava kao bootsector. Redosled pretrage je najece korisniki definisan, a obino BIOS najpre pretrauje ita CD-ova, pa onda hard disk ureaje prisutne na sistemu. Po pronalasku validnog image-a, BIOS uitava kod u memoriju i izvrava ga. Kako je praktino nemogue napisati kernel operativnog sistema koji bi bio manji od 512B, u bootsector-u se nalazi program (oznaen kao bootloader) koji po startovanju sa predefinisane fizike memorijske lokacije uitava kernel operativnog sistema koji onda nije ogranien veliinom sektora. Bootloader mora biti manji od 512B, to uvodi brojna ogranienja. Najece se pie u asembleru kako bi se to vie dobilo na veliini. Takoe, kako bi BIOS prepoznao da se radi o validnom bootloader-u, zadnja dva bajta bootsector-a moraju biti oznaka 0x55 0xAA (pri tome treba voditi rauna o razlici izmeu Little Endian i Big Endian arhitektura jer na Intel x86 platformi koja je Little Endian 511 bajt je 0xAA, a 512 bajt 0x55). BIOS e bootloader uitati na fiziku memorijsku adresu 0x7C00 nakon ega bootloader treba sa zadate pozicije da uita kernel operativnog sistema i prepusti mu izvravanje. Ukoliko se kernel uitava sa hard diska, BIOS e prvo uitati MBR (Master Boot Record) koji se nalazi u prvom sektoru hard diska i sadri tabelu primarnih particija. MBR pretrauje pristustvo bootloader-a (koji zavrava sa specifinom oznakom i nije vei od 512 bajta) na particiji koja ima boot oznaku, pa onda i na ostalim primarnim particijama. Iako bootloader najece uitava kernel u memoriju, on mora prethodno da uradi dodatnu inicijalizaciju sistema, poput prebacivanja u 32-bitni nain rada procesora sa aktiviranjem protected mod mogunosti, ukljuivanje A20 linije (preko ipa za kontrolu tastature) i slino. Ukoliko bootloader podrava vie kernela, esto se moe dogoditi da bootloader postane preglomazan pa ga je potrebno podeliti u dva dela bootsector koji se nalazi u prvih 512 bajta memorijskog ureaja sa koga poinje uitavanje sistema i bootloader koji se nalazi na nekoj fiksnoj poziciji, koga poziva bootsector, a koji ulazi u 32-bitni nain rada i zatim pokree kernel sa druge lokacije na disku.

  • MSREAL Uvod u Operativne Sisteme

    37

    Po uitavanju kernel e inicijalizovati delove, prebrojati memoriju, podsisteme za upravljanje memorijom, rasporeivanje procesa i mehanizam za ureivanje pristupa resursima, a zatim uitati ostale korisnike programe kako bi korisniku podesio radno okruenje.

    Slika 2.4 ematski opisan princip podizanja operativnog sistema

  • MSREAL Kernel operativnog sistema

    38

    3 Kernel operativnog sistema

    3.1 UOPTENO O KERNELU

    Jezgro je osnovni deo svakog operativnog sistema. U hijerarhijskom modelu, jezgro je najbile hardveru i najee se nadovezuje direktno na hardver, obezbeujui vezu (interfejs) izmeu hardvera i ostalih slojeva operativnog sistema slika 3.1. Izuzetak predstavljaju operativni sistemi u ijoj se osnovi nalazi NT arhitektura. U slojevitom modelu ove arhitekture, ispod jezgra se nalazi sloj apstrakcije hardvera (Hardware Abstraction Layer), koji omoguava OS da vidi razliit hardver na isti nain.

    Slika 3.1 Hijerarhija OS

    Jezgro se moe definisati kao deo operativnog sistema koji omoguava programima da na siguran nain pristupe hardveru, slika 3.2. Jezgro OS nije neophodno za pokretanje i izvravanje programa. Programi i procesi se mogu izvravati na raunaru bez jezgra ako je programer spreman da zaobie apstrakciju hardvera i usluge koje prua OS, i program napie na niskom nivou koristei funkcije mainskig jezika. Ovaj nain programiranja i izvravanja programa bio je uobiajen na starijim raunarskim sistemima.

  • MSREAL Kernel operativnog sistema

    39

    Slika 3.2 Grafiki prikaz uloge kernela u operativnom sistemu

    Osnovne funkcije jezgra su upravljanje resursima raunara (procesorom, memorijom, perifernim ureajima), dodeljivanje procesora procesima i obezbeivanje mehanizama za interprocesnu komunikaciju. Kako se na jednom procesoru u jednom trenutku moe izvravati samo jedan proces, jezgro odreuje kada i na koje vreme e proces dobiti procesor. Ova pojava je poznata pod nazivom multipleksiranje i predstavlja osnovu kvaziparalelnosti.

    Da bi jezgro ostvarilo svoje osnovne funkcije, neophodno je da na nivou hardvera postoje komponente koje omoguavaju nadgradnju hardvera jezgrom. U te komponente spadaju:

    Mehanizam prekida obezbeuje izvravanje prekidne rutine, tj. prebacivanje kontrole izvravanja s korisnikog na upravljaki program. Ovaj mehanizam treba da sauva vrednost programskog brojaa prekinutog korisnikog programa i pokrene upravljaki program sa fiksne adrese u memoriji. Upravljaki program odreuje izvor prekida i reaguje na odgovarajui nain.

    Zatitni mehanizam adresiranja memorije spreava pogreno adresiranje, tj. onemoguava da jedan proces upie svoje pratee podatke u deo memorije koji je dodeljen drugom procesu.

    Skup privilegovanih instrukcija ine sve instrukcije dostupne OS, ali ne i korisnikim programima. Ove instrukcije omoguavaju operativnom sistemu da maskira prekide, dodeli procesor drugom procesu, pristupi zatienim

  • MSREAL Kernel operativnog sistema

    40

    registrima u memoriji, izvri ulazno-izlaznu operaciju ili zaustavi procesor. Za razliku od neprivilegovanih insrtukcija koje se izvravaju u korisnikom modu, prilikom izvravanja privilegovanih funkcija operativni sistem se nalazi u superskalarnom (sistemskom) reimu. Korisniki program ne moe da izvri privilegovanu funkciju direktno, ve iskljuivo pomou sistemskih poziva. Korisniki program pomou sistemskog poziva zahteva od operativnog sistema da izvri privilegovanu funkciju; nakon toga OS prelazi u operativni mod i izvrava tu instrukciju.

    asovnik realnog vremena (real time clock) na osnovu vremena kontrolie se i evidentira potronja resursa raunara za sve pojedinane procese. Ovaj mehanizam se moe koristiti i za rasporeivanje i zakazivanje izvrenja raznih poslova.

    3.2 DELOVI JEZGRA

    Razvoj kernela predstavlja jedan od najkompleksnijih i najteih zadataka u programiranju. Njegova centralna pozicija u operativnom sistemu ini ga odgovornim za dobre performanse raunara, a s obzirom na to da je on kritian deo softvera to dodatno oteava njegov dizajn i implementaciju. Teorijski, jezgro operativnog sistema moe se podeliti na tri osnovne celine:

    Planer poslova scheduler je deo jezgra koji dodeljuje procesor procesima. Pri tome, procesor se uvek dodeljuje na osnovu nekog algoritma, kao to su npr. Shortest Job First, First Come First Serviced, Rubin Round ili rasporeivanje na osnovu prioriteta.

    Rutine za ostvarivanje interprocesne komunikacije obezbeuju komunikaciju meu procesima. Postoji vie naina ove komunikacije, kao to su: slanje poruka, semaforske tehnike, korienje imenovanih cevi (named pipes) i korienje deljive memorije.

    Prvi nivo obrade prekida (First Level Interrupt Handler) ine rutine za odreivanje izvora prekida i iniciranje servisa, tj. opsluivanje pojedinih vrsta

  • MSREAL Kernel operativnog sistema

    41

    prekida. FLIH odgovara na spoljanje prekide i sistemske pozive. Posle izvravanja koda koji ini ovaj deo operativnog sistema, prekid se smatra opsluenim, a skeduler odluuje kom e procesu dodeliti procesor na korienje.

    3.3 KERNEL DIZAJN

    to se tie dizajna kernela postoje dve osnovne varijante, a to su monolitni i mikrokernel. Pored njih tu su i neke egzotine izvedbe kernela, kao to su hibridni kernel, nanokernel i eksokernel. U nastavku je dat osvrt na svaki od njih.

    Monolitni kerneli su dizajnirani tako da imaju sav kod u istom adresnom prostoru, zvanom kernel space. Ovu injenicu neki inenjeri pravdaju neophodnou da bi se poveale performanse sistema. Zaposleni na razvoju ovih kernela takoe smatraju da su monolitni sistemi izuzetno efikasni ako ih dobro napiete. Monolitni kernel e biti efikasniji od mikrokernelovog dizajna pod uslovom da koristi deljenu memoriju. Monolitni kerneli poseduju laki dizajn i implementaciju nego druge vrste kernela. Glavna mana monolitnih kernela predstavlja zavisnost izmeu komponenata sistema greka u drajveru moe sruiti ceo sistem.

    Mikrojezgro predstavlja savremen koncept u realizaciji operativnih sistema. Osnovna zamisao je napraviti minimalno i pouzdano jezgro visokih performansi, a sve ostale funkcije jezgra potisnuti u takozvani korisniki prostor (user space). Ove funkcije u korisnikom prostour nazivaju se serverima. Korisniki moduli komuniciraju meusobno slanjem poruka (message passing). U dobre osobine arhitekture mikrojezgra spadaju:

    jednostavno proirivanje i optimizacija jezgra; jednostavno dodavanje novih modula bez uticaja na osnovno jezgro; jednostavna prenosivost na drugu raunarsku arhitekturu; vea pouzdanost (manje koda se izvrava u reimu jezgra);

  • MSREAL Kernel operativnog sistema

    42

    vea sigurnost. Mikrokernel omoguava implementaciju preostalog dela operativnog sistema kao aplikacionog programa koji je pisan u viem programskom jeziku. Takoe, omoguava upotrebu razliitih operativnih sistema na vrhu istog, nepromenjenog, kernela.

    Hibridni kernel pristup koncepciji hibridnog kernela kombinuje brzinu i jednostavnost dizajna monolitnog kernela sa modularnou i bezbednou mikrokernela. Dakle, hibridni kerneli predstavljaju kompromis izmeu monolitnih i mikrokernela. Ovo implicira izvravanje nekih servisa kernela, kao to su network stack ili filesystem, u kernelovom prostostoru kako bi se poveale performanse iznad performansi tradicionalnog kernela. Drajveri perifernih ureaja izvravaju se u korisnikom modu.

    Nanokernel predstavlja sve servise virtuelno od onih najosnovnijih kao to su kontrola prekida ili tajmer pa do drajvera periferija. Na taj nain se ostvaruje uteda kernel memorije. Inae ona je manja od memorije tradicionalnih mikrokernela, pa je stoga ovaj kernel i dobio naziv nano.

    Pored navedednih postoji jo i eksokernel, takav je na primer Xen hypervisor.

    3.4 ZADACI KERNELA

    Izvravanje kernela u supervizor modu se, u veini sluajeva, startuje boot loade-rom. Kernel se onda inicijalizuje i poinje sa izvravanjem prvog procesa. Posle ovoga, kernel se ne izvrava stalno ve samo kao odgovor na spoljanje dogaaje kao to su sistemski pozivi ili prekidi. Dodatno, kad god nema procecsa za izvravanje kernel izvrava svoju mrtvu petlju, ekajui da se neto desi. Ta petlja se naziva idle process.

  • MSREAL Kernel operativnog sistema

    43

    3.4.1 UPRAVLJANJE RESURSIMA

    Upravljanje memorijom: Kernel ima pun pristup programskoj memoriji i mora dozvoliti procesu da

    bezbedno pristupi ovoj memoriji, ako on to zahteva. Obino prvi korak u obavljanju ovog posla predstavlja virtuelno adresiranje. Virtuelno adresiranje omoguava kernelu da fizikim adresama dodeli nove adrese, tj. virtuelne adrese. Virtuelni adresni prostor moe biti razliit za razliite procese, meutim moe se desiti da dva razliita procesa imaju isti virtuelni adresni prostor, a da pri tome pristupaju razliitim memorijskim lokacijama. Ovakav nain rada spreava aplikacije da utiu jedna na drugu.

    Virtualna adresa se moe odnositi na podatak koji uopte nije u memoriji (misli se na RAM). Lejer koji obezbeuje virtuelno adresiranje dozvoljava operativnom sistemu da koristi dodatnu memoriju, kao to je hard disk, da bi u nju skladitio podatke koji ne mogu da stanu u RAM. Kao rezultat, operativni sistem dozvoljava programima da koriste vie memorije nego to sistem zaista ima. Kada programu zatrebaju podaci koji se ne nalaze u RAM-u, CPU signalizira kernelu da se to desilo. Kernel zatim odgovara upisivanjem sadraja neaktivnog memorijskog bloka na hard disk (ako je to nephodno) i zamenjuje sadraj tog bloka podatkom koji je zahtevao program. Program onda moe da nastavi sa izvravanjem od take gde je dolo do prekida. Ovo je poznato pod nazivom demand paging.

    Upravljanje periferijama: Za obavljanje neke funkcije proces moe da zahteva pristup perifernom

    ureaju. Svaki periferni ureaj ima svoj drajver koji se koristi od strane kernela za upravljanje tom periferijom. Na primer, da bi prikazala neto na monitoru aplikacija mora da uputi zahtev kernelu, koji e ga potom proslediti odgovarajuem drajveru, u ovom sluaju monitora. Taj drajver posle toga biva odgovoran za sve ono to se ispisuje na ekranu.

  • MSREAL Kernel operativnog sistema

    44

    Kernel mora da nadgleda listu ureaja koji su mu na raspolaganju. Ova lista moe biti poznata unapred, konfigurisana od strane korisnika ili detektovana od strane operativnog sistema u vreme njegovog podizanja. Kod poslednje pomenutog naina formiranja liste prvo se vri skeniranje razliitih hardverskih magistrala, kao to su PCI (Peripheral Component Interconnect) ili USB kako bi se detektovali instalirani ureaji, a zatim se traga za njihovim drajverima.

    3.4.2 PROCESI

    Raunarski sistem koji ima samo jedan procesor moe da izvrava samo jednu instrukciju u jednom trenutku. OS mora obezbediti svim korisnicima raunarskog sistema i svim programima pristup procesoru i ne sme dopustiti nikome da ostvari monopol nad njim. Da bi obavio taj zadatak, OS mora imati odreene informacije o svakom korisniku i svakom programu na raunaru, u svakom trenutku.

    Proces je program ili deo programa u stanju izvravanja, zajedno sa svim resursima koji su potrebni za rad programa. Jednostavno reeno program je pasivan objekat, tj. datoteka na disku. Kada se ta datoteka uita ona postaje proces, tj. aktivan objekat koji ima svoje resurse, poput registara i memorije.

    Svaki proces ima tri fundamantalna memorijska dela:

    Programska ili tekstualna memorija, koja se ne menja i koja sadri programski kod;

    Stek memorija, koja sadri promenljive podatke (povratne adrese, lokalne promenljive, ...);

    Memorija za podatke, koja sadri globalne promenljive. Osim memorijskih sekcija, proces sadri i informacije poput vrednosti

    programskog brojaa, vrednost registara procesora itd. Takoe, obuhvata i ulazno-izlazne resurse koje koristi, kao to su datoteke i razne vrste ulazno-izlaznih ureaja.

  • MSREAL Kernel operativnog sistema

    45

    Predstavljanje procesa

    Svaki program se sastoji od niza instrukcija i statikog je karaktera. Za razliku od programa, proces je dinamika struktura i najjednostavnije se moe opisati kao program u stanju izvrenja, tj. kao niz aktivnosti koje su posledica izvrenja programa. Deo procesa su i podaci koji tu aktivnost opisuju, odnosno podaci koji su neophodni za upravljanje procesom. Ove podatke generie i koristi operativni sistem, to jest dispeer, a u literaturi se pominje pod raznim imenima: kontrolni blok procesa (Process Control Block, PCB), vektor stanja ili deskriptor procesa.

    Na primer, posmatrajmo vieprocesni operativni sistem sa dva aktivna procesa (P1 i P2). Proces P1 koji se izvrava, u jednom trenutku se dovodi u stanje ekanja na resurs. Nakon toga, nastavlja se izvravanje procesa P2 koji posle nekog vremena takoe biva blokiran. U meuvremenu se odblokira resurs neophodan za izvravanje procesa P1, pa proces P1 moe nastaviti izvravanje. Da bi OS znao gde treaba nastaviti izvrenje, svakom procesu se dodeljuju pratee informacije, odnosno jedinstven kontrolni blok.

    Kontrolni blok je deo radne memorije sa osnovnim informacijama o procesu, koje operativni sistem koristi za upravljanje tim procesom. Zahvaljujui kontrolnom bloku, izvravanje programa se moe prekidati i nastavljati vie puta. U informacije iz kontrolnog bloka spadaju:

    Jedinstveni identifikator procesa; Kontekst (okruenje) procesa; Prioritet procesa; Informacije o memoriji procesa; Lista otvorenih datoteka; Status zauzetih ulazno-izlaznih resursa; Trenutno stanje procesa.

  • MSREAL Kernel operativnog sistema

    46

    Kontekst procesa ine podaci koji se uvaju prilikom oduzimanja procesora, a njih generie sam hardver. U te podatke spadaju vrednost programskog brojaa, vrednost registara i pokazivai na deo memorije koje proces koristi. Deo kontrolnog bloka u kome se uva kontekst se naziva jo i hardverski kontrolni blok ili hardverski deskriptor procesa.

    Dijagram stanja procesa Proces se sastoji od niza koraka koji slede jedan za drugim. Izmeu dva

    koraka proces moe biti prekinut, a njegovo izvravanje se moe nastaviti u drugom trenutku, na istom ili na drugom procesoru. Svi procesi koji uu u raunarski sistem prolaze kroz niz stanja tokom svog boravka u raunaru. Jednostavno reeno, stanje procesa opisuje ono to se u datom trenutku dogaa s procesom. Prevoenje procesa iz jednog u drugo stanje obavlja operativni sistem.

    Proces se moe nai u nekoliko stanja (5 ili 7 zavisno od konanog automata koji je korien za opisivanje stanja) a sledea tri su najznaajnija:

    Stanje izvrenja (RUN) procesor izvrava instrukcije ovog procesa Stanje ekanja na procesor (READY) proces je dobio sve potrebne resurse osim procesora, spreman je za rad i eka da mu se dodeli procesor.

    Stanje ekanja na resurs (WAIT) proces eka na neki dogaaj (na primer, da se zavri tampanje) jer su za dalje izvrenje procesa potrebni resursi koji trenutno nisu na raspolaganju.

    Na slici 3.3 prikazan je dijagram sa 5 stanja procesa. Proces se u svakom trenutku mora nai u jednom od ovih stanja, a tranzicije iz jednog stanja u drugo vre se zavisno od dogaaja vezanih za proces, resursa koje proces koristi i ostatka raunarskog sistema.

  • MSREAL Kernel operativnog sistema

    47

    Slika 3.3 Dijagram sa pet stanja procesa

    Prilikom upravljanja procesima, dispeer prati i ispituje stanja u kontrolnim blokovima procesa. Na primer, na osnovu toga, procesi se mogu dodati u red za ekanje na proces. Dodavanje u red je simboliko proces se fiziki ne pomera s jedne lokacije na drugu, ve se samo menjaju podaci u kontrolnom blokovima i pokazivai pomou kojih se formiraju redovi. Svaki proces poinje u stanju START, nakon ega se dovodi u stanje READY, tj. u stanje ekanja na dodelu procesora u procesorskom redu. Ovo je prva tranzicija u dijagramu stanja. Posle nje, proces prolazi kroz dodatne tranzicije u konanom automatu:

    READY-RUN dodela procesora procesu koji je doao na poetak reda za dodelu procesora. Proces prelazi iz stanja ekanja na procesor u stanje izvravanja kada procesor prekine izvravanje tekueg procesa.

    RUN-READY oduzimanje procesora procesu nakon isticanja perioda u kojem mu je procesor dodeljen. Ako je u pitanju pre-emptive OS, procesor se moe oduzeti ako naie proces vieg prioriteta. Ova tranzicija je mogua samo u vieprocesnim operativnim sistemima.

    RUN-WAIT oduzimanje procesora procesu ukoliko je resurs koji je potreban za izvravanje procesa zauzet. Ova tranzicija je mogua i u jednoprocesnim i u vieprocesnim OS. Do ove tranzicije se moe doi i kada se eka reziltat operacije koju obavlja drugi proces ili ako proces eka odreeni trenutak koji je unapred programiran i u kome se moe nastaviti izvravanje.

    WAIT-READY proces se vraa na kraj procesorskog reda nakon oslobaanja resursa koji je neophodan za rad procesa. Napomena: tranzicija

  • MSREAL Kernel operativnog sistema

    48

    WAIT-RUN nije mogua u vieprocesnim OS. U takvim sistemima, proces se uvek prvo dovodi u stanje READY.

    RUN-STOP proces zavrava rad (prirodno ili nasilno). U ovom stanju proces oslobaa sve resurse koje je koristio.

    U stanju RUN se u jednom trenutku moe nai onoliko procesa koliko procesora ima u sistemu. Procesi koji se nalaze u ovom stanju su tekui proseci. Procesor se ne moe zadrati do svog zavretka u ovom stanju, zato to se u optem sluaju posmatra vieprocesno okruenje u kome se procesor dodeljuje na odreeno vreme, po nekom algoritmu. Na taj nain se spreava da jedan proces crpe resurse raunara, dok drugi procesi ekaju u redu.

    Svi procesi koji se nalaze u stanju READY mogu se povezati u red na jednostavnoj listi. Ova linearna lista prikazana na slici 3.4. U tu listu ukljuen je i tekui proces. Skeduler koristi procesorski red prilikom upravljanja procesima.

    Slika 3.4 Procesorski red ili lista ekanja

    Proiren dijagram stanja procesa

    Kao to je ve pomenuto ranije, dijagram stanja procesa moe sadrati 5 ili 7 stanja. U prthodnom odeljku je opisan dijagram sa 5 stanja, dok e pod ovim naslovom biti razmotrena preostala dva stanja. Ta dva stanja su SUSPENDEDREADY i SUSPENDEDWAIT. Na slici 3.5 prikazan je dijagram sa sedam stanja.

  • MSREAL Kernel operativnog sistema

    49

    Slika 3.5 Proiren dijagram stanja procesa

    Na ovaj nain se dobija nov automat sa tri nove tranzicije.

    READY-SUSPENDED READY- proces prolazi kroz ovu tranziciju ako:(1) u sistemu postoji previe procesa u stanju READY, (2) treba izbei zastoj ili (3) korisnik eksplicitno suspenduje proces.

    WAIT-SUSPENDED WAIT dovoenje procesa u suspendovano stanje iz stanja WAIT

    SUSPENDED WAIT-SUSPENDED READY-resurs neophodan za dalje izvrenje procesa je slobodan, ali proces je i dalje suspendovan.

    SUSPENDED READY-READY proces je odmrznut i dovodi se na kraj procesorskog reda.

    SUSPENDED WAIT-WAIT proces je odmrznut, ali resurs neophodan za njegovo izvrenje nije slobodan.

  • MSREAL Kernel operativnog sistema

    50

    Zamena konteksta procesa

    Prilikom dodele procesora drugom procesu, skeduler:

    Pamti stanje procesa koji se prekida, kako bi se proces mogao kasnije nastaviti;

    Puni memoriju stanjem novog procesa kome se dodeljuje procesor. Navedene operacije su poznate pod nazivom zamena konteksta procesa (context switch). Kontekst procesa ine podaci koji se uvaju prilikom oduzimanja procesora, a koji omoguavaju nastavak izvrenja procesa, kao to su registri procesora, memorijske sekcije i lista otvorenih datoteka.

    Prilikom zamene konteksta, poslednje stanje tekueg procesa uva se u njegovom kontrolnom bloku. Poslednje stanje procesa koji e se dalje izvravati rekonstruie se iz odgovarajueg kontrolnog bloka, nakon ega se procesu dodeljuje kontrola za nastavak izvrenja. Prebacivanje konteksta je ist gubitak vremena, ali je neophodno radi omoguavanja multiprogramiranja. Koliko e se vremena izgubiti zavisi od hardverskih performansi procesora i memorije, broja registara procesora koji se moraju sauvati, broja asemblerskih instrukcija koje moraju da se izvre da bi se stanje zapamtilo i naina korienja raznih memorijskih tehnika (tehnika za pristup memoriji).

    3.4.3 RUTINE ZA INTERPROCESNU KOMUNIKACIJU

    Rutine za interprocesnu komunikaciju moraju se implementirati u jezgro kako bi bile dostupne svim procesima i kako bi imale direktan pristup dispeeru. Ova komunkacija se moe ostvariti na vie naina: semaforskim tehnikama, slanjem poruka, korienjem deljive memorije i imenovanih cevi.

    U odnosu na meusobnu zavisnost toka izvravanja, procesi se mogu podeliti na:

  • MSREAL Kernel operativnog sistema

    51

    Nezavisne procese; Kooperativne procese;

    Proces je nezavisan ukoliko ne utie direktno na izvrenje drugih procesa i ukoliko na njegovo izvrenje direktno ne utiu drugi procesi. Nezavisni su oni procesi koji ne dele nikakve podatke sa drugim procesima.

    Kooperativni procesi su oni koji jedni na druge utiu, a to su svi procesi koji dele podatke ili bilo kakve resurse. Ovi procesi zahtevaju specijalan tretman.

    Konkurentno izvravanje kooperativnih procesa zahteva mehanizam koji e dozvoliti procesima da komuniciraju izmeu sebe i da sinhronizuju svoje akcije. Problem sinhronizacije se moe objasniti na sledeem primeru, koji predstavlja zajedniku paradigmu kooperativnih procesa. Posmatrajmo dva procesa P1 i P2, pri emu proces P1 stvara informacije koje koristi proces P2. Ta dva procesa mogu da rade konkurentno, ukoliko postoji bafer koji e proces P1 puniti, a P2 prazniti. Pravila sinhronizacije su sama po sebi jasna: P2 ne moe uzeti nita iz bafera ukoliko to P1 nije prethodno stavio u bafer. Bafer takoe namee svoja pravila. U idealnom sluaju bafer je beskonanog kapaciteta i nikada se ne moe napuniti. Ovakav sluaj ne postoji u praksi. Kapacitet realnih bafera ogranien je na N elemenata. Ogranienjem kapaciteta uvodi se novo ogranienje, tj. novo pravilo sinhronizacije: ukoliko je bafer pun P1 ne moe ubaciti informaciju dok P2 najpre ne uzme neto iz bafera. Bafer se pod OS moe realizovati na dva naina:

    Interprocesnom komunikacijom; Pomou deljive memorije;

    Slanje poruka

    Procesi mogu komunicirati i slanjem poruka, ime se omoguava sinhronizacija aktivnosti bez upotrebe deljive memorije. Ovaj nain komunikacije je veoma podesan u distribuiranim okruenjima gde se procesi odvijaju na razliitim raunarima. Kako bi procesi mogli da komuniciraju slanjem poruka,

  • MSREAL Kernel operativnog sistema

    52

    neophodno je u jezgro implementirati operacije za prijem i slanje poruka. Poruke koje se razmenjuju izmeu procesa mogu biti fiksne ili promenljive veliine. Metoda slanja poruka fiksne veliine jednostavnije se implementira ali je manje fleksibilna, dok se slanje poruka promenljive veliine tee implementira ali je fleksibilnije.

    Postoje razlilite eme za realizaciju ovih osnovnih operacija, a sledee dve su dominantne:

    sinhrono ili blokirajue slanje i prijem poruka; asinhrono ili neblokirajue slanje i prijem poruka;

    Prilikom blokirajueg slanja poruka, proces koji alje poruku se blokira dok dugi proces ne primi poruku. Prilikom blokirajueg prijema poruke, proces koij prima poruku se blokira dok ne dobije poruku. Ukoliko je slanje neblokirajue, proces koji alje poruku nastavlja aktivnosti ne ekajui potvrdu o prijemu. U sluaju prijema neblokirajuih poruka: ako je poruka stigla primie se, a ako nije proces nastavlja sa daljim izvravanjem.

    Mogue su razliite kombinacije opisanih metoda. Na primer, ema u kojoj su i slanje i prijem blokirajui zove se rendezvous. Da bi dva procesa mogla da razmenjuju poruke, izmeu njih mora postojati komunikaciona veza, koja se moe implementirati na razliite naine (pomou deljive memorije, magistrale, mrene kartice i odgovarajuih protokola).

    Semafori

    Semafor je celobrojna nenegativna promenljiva, ija vrednost titi neki resurs i omoguava kmunikaciju izmeu procesa. Vrednost semafora odreuje da li je resurs, koji taj semafor titi, slobodan ili zauzet. Svaki semafor ima svoju poetnu vrednost, a nad njim se mogu izvriti dve nedeljive operacije, a to su inkrementiranje i dekrementiranje. Dva procesa ne mogu istovremeno izvravati ove operacije nad istim semaforom.

  • MSREAL Kernel operativnog sistema

    53

    Resursi se tite semaforom na sledei nain: operacija dekrementiranja smanjuje vrednost semafora samo ako je njegova vrednost (s) vea od nule. Da bi proces koristio resurs on mora prvo da dekrementira vrednost semafora koji titi taj resurs. U sluaju da je s=0, proces koji pokua da izvri operaciju dekrementiranja nad nultom vrednou semafora, ulazi u stanje ekanja na resurs (stanje WAIT). Kada drugi proces oslobodi resurs koji je koristio, on inkrementira vrednost s. Tada proces koji se nalazio u stanju WAIT dekrementira s i prelazi u kritinu sekciju.

    Kritina sekcija predstavlja deo koda u kome proces koristi resurs. Kada program eli da prekine korienje resursa on inkrementira s i naputa kritinu sekciju. Kada se operacija inkrementiranja izvrava nad semaforima na kojijm ne eka nijedan proces, kao i u sluajevima u kojima je vrednost semafora posle izvravanja dekrementiranja pozitivna, skeduler nastavlja izvravanje tekueg procesa jer u procesorskom redu nije dolo do promene.

  • MSREAL RTOS

    54

    4 Operativni sistemi za rad u realnom vremenu

    4.1 UOPTENO O SISTEMIMA ZA RAD U REALNOM VREMENU

    Sistemi za rad u realnom vremenu (RTS) su raunarski sistemi koji upravljaju

    i nadgledaju fizike procese. RTS su obino sastavni deo nekog veeg sistema ili ureaja i iz tog razloga se nazivaju ugraeni (ili embedded) mikroprocesorski sistemi. RTS, za razliku od raunarskih sistema opte namene, projektuju se za unapred odreenu primenu, koja diktira njihovu, kako hardversku, tako i softversku strukturu. Kljuni deo specifikacije RTS-a se odnosi na vreme odziva, koje je odreeno prirodom fizikog procesa. Korektnost rada RTS-a zavisi ne samo od logike ispravnosti rezultata izraunavanja, ve i od vremena za koje se ti rezultati generiu. Drugim reima, da bi korektno obavio svoj zadatak, RTS mora svoju funkciju da izvri u unapred zadatom vremenu. Ukoliko se zadato vreme odziva prekorai moe doi do otkaza sistema to moe imati katastrofalne posledice. Takoe, od RTS-a se obino zahteva visoko-pouzdani rad i predvidljivo ponaanje u svim okolnostima. Kada se RTS ugrauje u ureaje, iz razloga ekonominosti, zahteva se minimalno korienje hardverskih resursa (8/16 bitni CPU, mala koliina memorije). Zbog svega navedenog, projektovanje RTS sistema predstavlja sloen zadatak.

    4.2 OPERATIVNI SISTEMI ZA RAD U REALNOM VREMENU

    Sve to je navedeno ukazuje na sloenost razvoja RTS aplikacija, kao i na sutinske razlike izmeu aplikacija koje koriste sisteme opte namene. Takoe, uoava se potreba za podrkom, na sistemskom nivou, za impementaciju mehanizama i tehnika kojima se to radi. Takva podrka je operativni sistem, ili tanije operativni sistem za rad u realnom vremenu (Real Time Operating System, RTOS). RTOS treba da u to veoj meri sakrije hardversku sloenost sistema od

  • MSREAL RTOS

    55

    programera (detaljno poznavanje prekida, A/D konvertora, tajmera), tj. da za pristup hardveru obezbedi standardizovane softverske procedure. Takoe, RTOS treba da obezbedi podrku za multitasking, komunikaciju i sinhronizaciju zadataka, kontrolu pristupa deljivim resursima itd. Na taj nain, RTOS stvara privid virtuelne maine, nezavisne od konkretne hardverske platforme, to omoguava projektantu da se usredsredi na reavanje konkretnog problema na viem nivou (identifikacija zadataka, komunikacija i/ili sinhronizacija zadataka, obezbeivanje zahtevanih performansi itd.) i da se u to veoj meri oslobodi implementacionih detalja niskog nivoa.

    Prednosti korienja RTOS-a su: 1) smanjuje se vreme razvoja (skrauje se vreme realizacije korisnike

    aplikacije); 2) poveava pouzdanost sistema, jer se smanjuje verovatnoa programerske

    greke prilikom programiranja mehanizama niskog nivoa, pod uslovom da su mehanizmi niskog nivoa dobro isprojektovani i programirani;

    3) olakana portabilnost (prenosivost) - prenos aplikacije na drugu hardversku platformu (npr. drugi CPU).

    4.3 STRUKTURA RTOS-a

    RTOS prua brojne servise koji u velikoj meri olakavaju razvoj RTOS

    aplikacija, tako to obezbeuju podrku za standardizovan pristup hardveru, konkurentno izvravanje zadataka i upravljanje resursima. Struktura RTOS sistema prikazana je na slici 4.1. RTOS se projektuje tako da ima modularnu i slojevitu strukturu (arhitekturu).

    Srce RTOS-a ini tzv. jezgro (kernel) koje obezbeuje podrku za: plani