You are here

Mehanizmi funkcionisanja operativnog sistema

28.02.2017 - 08:00
Galerija

U okviru predmeta Projektovanje namenskih računarskih struktura (PNRS), studenti master studija upoznaju se sa načinima funkcionisanja jezgra operativnog sistema ugrađenih uređaja, i to kroz izučavanje mehanizama kao što su: međuprocesna komunikacija, napredne tehnike deljenja memorije, zatim protok podataka kroz slojeve operativnog sistema i upravljanje multimedijalnim i grafičkim podsistemima.

 „PNRS se oslanja na materiju koja se izučava u okviru PNRS1 predmeta (sa nižih godina) i nadograđuje je konceptima i metodama projektovanja sistemskog softvera na modernim namenskim platformama. Tačnije, u okviru PNRS 1 akcenat je na aplikativnom nivou i razvoju aplikacija, dok je naš nivo izučavanja „ispod haube“, dakle, upoznajemo studente sa mehanizmima funkcionisanja samog operativnog sistema“, naveo je doc. dr Nemanja Lukić.

Prema rečima doc. dr Lukića, svi koncepti, mehanizmi i procesi, objašnjeni su na primeru Android platforme, kao jedne od trenutno najzastupljenijih platformi na tržištu namenskih sistema.

android

„Andriod je danas praktično svuda. Stoga je dobar primer na kojem možemo da pokažemo evoluciju operativnog sistema, odnosno koje su sve izmene i prilagođavanja neophodne da jedan operativni sistem zaživi“, rekao je doc. dr Lukić dodajući da koncept jeste objašnjen na primeru Andrioida, ali da to ne znači da taj koncept nije već viđen na nekom drugom operativnom sistemu, ili da neće biti primenjen u nekom sistemu u budućnosti.

U formi u kojoj se danas održava, PNRS postoji dve godine, i od početka je organizovan u vidu blok nastave. Tokom četiri sedmice studenti stiču teorijska i praktična znanja iz arhitekture i projektovanja sistemskog softvera, te modelovanja jezgra operativnog sistema, dok se praktični deo predmeta radi u programskim jezicima C, C++ i Java.

Doc. dr Lukić objašnjava da se tokom prve nastavne sedmice studenti intenzivno upoznaju sa teorijskim štivom, dok se u drugoj sedmici uvode auditorne vežbe, gde im asistenti daju primere - koncepte na nivou malih, izolovanih, softverskih modula, koje studenti mogu, bez velikih izmena, da pokrenu i izuče. Treća i četvrta sedmica su u potpunosti posvećene izradi individualnih projektnih zadataka, koje studenti treba da završe do kraja blok nastave. Cilj je da studenti zaista implementiraju konkretna proširenja operativnog sistema, i da ovladaju tim tehnikama.

„Trudimo se da projektnim zadacima pokrijemo koncepte o kojima se uči u teorijskom delu predmeta. Najčešće su u pitanju primeri u vezi sa interprocesnom komunikacijom, jer je to nešto što je zaista specifično, i sa čime se studenti sigurno nisu sreli tokom dosadašnjih studija“, rekao je doc. dr Lukić.

On navodi da se studenti tokom nižih godina studija uglavnom bave komunikacijom između programskih niti, gde se sve odvija u okviru jednog procesa.

„To su uglavnom sekvencijalni ili paralelni programi, ali i dalje korisničke aplikacije sa izuzetno limitiranim pravima, dok im ovde, zapravo, dajemo pregled toga kako izgleda komunikacija između dva različita procesa koji imaju različita prava i privilegije“, ističe doc. dr Lukić. „Mi ih ne učimo kako da pišu aplikacije za korisnike, već ih učimo da razviju neki konkretan uređaj. Ključ je u tome da im damo isključivo koncepte, detaljno ih opišemo i pokažemo na primeru. Na kraju, od studenata očekujemo da to primene, odnosno da „ispod haube“ znaju da poprave i implementiraju stvari.“ 

Mehanizmi funkcionisanja operativnog sistema

Student master studija Duško Gajić navodi da je kurs iz PNRS generalno veoma  zanimljiv, materija je dobro objašnjena, uz mnoštvo korisnih informacija koje su studenti dobili „iz prve ruke“.

S obzirom na to da se, kako navodi, i sam zanima sistemskim konceptima, u okviru PNRS najzanimljiviji mu je bio deo u vezi sa interprocesnom komunikacijom. Tako je i njegov projektni zadatak bio da implementira HAL servis na nivou C++ upotrebom interprocesne komunikacije.

Sebastian Novak kaže da su u okviru praktičnog dela PNRS zadaci bili uglavnom takvi da ne mogu da se reše u „normalnom“ Java i C++ okruženju, odnosno da je potrebno prelaziti iz jednog okruženja u drugo.

„Jedan od zadataka bio je da se u Android aplikaciji, gde imamo Java sloj, na visokom nivou izabere slika koja će biti učitana, te da se potom prosledi nižim sistemskim slojevima, koji su bliski operativnom sistemu, koji zaista vrše učitavanje izabrane slike sa diska u memoriju i potom omogućuju višim slojevima Androida (gde je uostalom i Java aplikacija), da slici pristupe i istu prikažu, jer dole, na nižim nivoima, može brže i lakše da se manipuliše memorijom“, rekao je Novak.

On je dodao da je najkompleksniji, odnosno najapstraktniji deo, upravo to skakanje iz visokog aplikativnog nivoa u malo niži, pa u skroz niski sistemski nivo, a zatim nazad, iz niskog u najviši nivo apstrakcije.

„Osim što je to konceptualno teško zamisliti, nije jednostavna ni implementacija, jer se koriste drugačije tehnike kada se programira skok iz jednog programskog jezika u drugi, iz Jave u C++,  nego kada si samo u Javi ili C++“, kazao je Sebastian Novak.

Na kraju, u okviru svog projektnog zadatka Rade Maksimović je radio sa multimedijalnim servisima, odnosno dobio je zadatak da implementira FFmpeg  plejer na Android platformi.

„Na PNRS 1 smo se uglavnom kretali u Java delu, vrlo uskom delu Android sistema, dok smo ovde dublje zašli u native deo, odnosno u sam operativni sistem, gde smo radili sa bibliotekama koje se tiču pristupa hardverskim komponentama obrade zvuka i slike“, rekao je Maksimović.