Professional Documents
Culture Documents
Ilovepdf Merged
Ilovepdf Merged
Ilovepdf Merged
vremenu
- Omogućava izvršavanje
korisničkih programa
Hardver
Upravljanje procesorom
Raspoređivanje zadataka
Upravljanje memorijom
Kreiranje zadataka
I/O manadžment
Upravljanje fajlovima
Korisnički interfejs
Struktura operativnog sistema
• Hijerarhijski (slojeviti ili onion) model OS
• Paralelizam (Concurrency)
• Pouzdanost (Reliability)
• Sigurnost (Security)
• Upotrebljivost (Usability)
• Modularnost (Modularity)
Paralelizam (Concurrency)
• Upravljanje zadacima
• Zaštita
• Upravljanje podacima
Upravljanje procesorima
- Dodeljivanje memorije
- Upravljanje prekidima
- Kreiranje i uništavanje procesa
- Dodela procesora različitim procesima
- Suspenzija i nastavljanje procesa
- Komunikacija između procesa
- Podrška za I/O
- Upravljanje memorijom
- Upravljanje fajl sistemom
Jezgro (kernel core)
• U slojevitom modelu jezgro je najbliže hardveru i obezbeđuje
vezu između hardvera i ostalih slojeva OS-a
Jezgro
Jezgro (kernel core)
• Jezgro omogućava programima da na siguran način pristupe
hardveru
• Raspoređivač (scheduler)
Vrši raspoređivanje programskih zadataka, odnosno određuje
u kom trenutku će procesor biti dodeljen kom procesu
• Monolitno jezgro
Sav kod je lociran u istom adresnom prostoru. Pod nekim
uslovima ova jezgra su veoma efikasna ali im je mana jaka
međusobna zavisnost – npr. greška u drajveru može da sruši
ceo sistem
• Mikrojezgro
Koje treba da bude minimalno, pouzdano i da ima visoke
performanse. Sve ostale funkcije jezgra su potisnute u tzv.
korisnički prostor. Prednost ovakve arhitekture je modularnost
i lakoća proširenja osnovnog jezgra
Zadaci jezgra
• Upravljanje resursima
- Upravljanje memorijom
- Upravljanje periferijama
Ready – Run: Zadatak je došao na početak reda čekanja i svi resursi potrebni za
njegovo izvršenje su slobodni
Run – Wait: Neki od resursa potrebnih za izvršavanje zadatka više nije slobodan i
zadatak mora da čeka na njegovo oslobađanje
Ready – Suspended Ready: Postoji previše zadataka u redu čekanja ili se mora
izbeći zastoj ili korisnik eksplicitno suspenduje zadatak
Wait – Suspended Wait: Postoji previše zadataka u redu čekanja ili se mora izbeći
zastoj ili korisnik eksplicitno suspenduje zadatak, a zadatak čeka da se oslobodi
resurs koji mu je potreban
Suspended Wait – Wait: Razlozi za suspenziju zadatka više ne važe, ali resurs još
uvek nije oslobođen
Suspendovanje zadataka
1. Računar se uključuje
• Upravljanje memorijom
• Tolerancija otkaza
Izazovi za RTOS
Glavna memorija
• Cache na čipu (interni cache)
• Externa cache memorija
• RAM • Smanjuje se vreme
pristupa
Tercijarna Memorija
• CD ROM
• Flash drive
Logičke i fizičke adrese
• Binding (povezivanje)
Program mora biti smešten negde u fizičkoj memoriji. Način
određivanja fizičke memorijske lokacije u koju je smešten
program:
– Mapiranjem logičkih u fizičke adrese.
– Ovo povezivanje adresa se najčešće odvija pri
kompajliranju programa
– Ukoliko se unapred zna gde će program biti smešten,
kompajler kreira apsolutni kod, u suprotnom kreira se
relocatable kod
Upravljanje memorijom - terminologija
Povezivanje:
Kompajler:
Pretvara simboličke adrese u relocatable kod
Loader:
Povezuje relocatable kod sa fizičkom memorijom
U toku izvršavanja:
Memorijska lokacija koda može se menjati
Jednostavno upravljanje memorijom
• Zastareo koncept
Dinamička particija memorije
• Particije se kreiraju pri učitavanju programa
OS
Memorija po pokretanju sistema
OS Proces 1 Proces 2 Proces 3
Procesi 1, 2 i 3 ulaze u red čekanja
OS Proces 1 Proces 3
Proces 2 se izvršio
OS Proces 1 Proces 3 Proces 4
Proces 4 (koji zauzima više memorije) stiže u red čekanja –
proces 3 je realociran
Mogući problemi sa dinamičkom
particijom
• Fragmentacija se javlja usled kreiranja i uništenja segmenata
pri učitavanju programa
1 1 0 1 0 1 0 0 1 1 0 1 0 1
Mapa bitova za parče memorije iznad
Praćenje nekorišćene memorije
1 2 3 4 5 6 7 8 9 10 11 12 13 14
F 1 5 U 6 3 F 9 2 U 11 4
Granični Registar
Registar Realokacije
Da
CPU < +
Logička Fizička
adresa Ne adresa Memorija
Susedska alokacija memorije
• Memorija se dodeljuje tako da se popune rupe nastale
oslobađanjem delova memorije
OS OS OS
OS OS
P1
P1
P2
P3
P2
P3
Paging
- Broj strane (p), koji se koristi kao indeks i tabeli strana koja
sadrži osnovne adrese svake strane u fizičkoj memoriji
p d
Paging – sistem prevođenja adresa
Logičk Fizička
adresa adresa
Fizička
memorija
Tabela
stranica
Paging – sistem prevođenja adresa
Logička
adresa
Spoljna
tabela
Strana sa
strana
tabelom
strana
Virtuelna memorija
• Blokovski uređaji
– Informacije se nalaze u blokovima fiksne veličine
– Komunikacija sa I/O realizovana je kroz čitanje/pisanje
blokova
– Hard disks, CD rom spadaju u ovu kategoriju
• Znakovni uređaji
– Komunikacija sa I/O realizovana je kroz pojedinačne
karaktere (znakove) i nema njihovog grupisanja u blokove
– Terminali, štampači, miš, džojstik spadaju u ovu kategoriju
Tehnike komunikacije sa ulazima i
izlazima
• Imena fajlova:
- ime – korisnička identifikacija za fajl
- ekstenzija – indikator tipa fajla
• Tipovi fajlova
- Regularni (ASCII, binarni)
- Direktoriji
- Specijalni fajlovi
• Pristup fajlovima
- Sekvencijalni pristup
- Slučajni pristup (pristup bilo kom delu fajla)
Atributi fajlova
Operacije sa fajlovima
• Kreiranje (create)
• Uništenje (delete)
• Otvaranje (open)
• Zatvaranje (close)
• Čitanje (read)
• Pisanje (write)
• Traženje (seek)
• Uzimanje atributa (get attributes)
• Podešavanje atributa (set attributes)
• Preimenovanje
Direktoriji
• Operacije sa direktorijima
- Kreiranje, brisanje, preimenovanje, otvaranje direktorija,
zatvaranje direktorija, čitanje direktorija
Direktoriji i fajlovi
Koreni (Root) Directorij
Disk A /
Linked Branch
d1 f4 d3 Disk B
f1 d2 Radni direktorij d4 d5 d6
f2 f3 f5 f6 f7
• Radni direktorij: d2
• Apsolutna putanja do fajla f2 : /d1/d2/f2
• Relativna putanja do fajla f2 : f2
Fizička organizacija na disku
Sektor
Traka
Cilindar
Glave
• Susedska alokacija
• i-čvorovi
Susedska alokacija
Susedska alokacija
memorijskog prostora na
disku za 7 fajlova
• Prednosti
- Lako se implementira (dovoljan je početni blok i dužina fajla)
- Brz pristup jer blokovi prate jedan drugi
• Mane
- Fragmentacija
- Potrebna je realokacija (kompaktovanje)
Alokacija pomoću povezane liste
• FAT (file allocation table) sadrži ime fajla i adresu prvog bloka
• Prednosti
- Eliminiše se fragmentacija
• Mane:
- Pristup bilo kom delu fajla je otežan jer mora da se prati lista
Alokacija pomoću povezane liste uz
korišćenje indeksa
Indirektni blokovi
Blokovi podataka
i-čvorovi
• Mandrake: http://www.mandrakesoft.com/
• RedHat: http://www.redhat.com/
• Fedora: http://fedora.redhat.com/
• SuSE/Novell: http://www.suse.com/
• Debian: http://www.debian.org/
• Stabilnost i pouzdanost
• arch/<ARCH>
- Kod vezan za arhitekturue
• arch/<ARCH>/mach-<machine>
- Kod specifičan za mašinu, ploču
• arch/<ARCH>/include/asm,
- Hederi koda vezanog za arhitekturu
• arch/<ARCH>/boot/dts,
- Device Tree source fajlovi za neke arhitekture
• block/
- Blok sloj jezgra
Struktura source koda Linux jezgra
• COPYING
- Kopirajt uslovoi za Linux (GNU dozvola)
• CREDITS
- Lista ljudi zaslužnih za nastanak i razvoj Linuxa
• crypto/
- Kriptografske biblioteke
• Documentation/
- Kompletna dokumentacija Linux jezgra
• drivers/
- Drajveri svih uređaja osim onih za zvuk (usb, pci...)
• firmware/
- Funkcije za neke stare drajvere koji se još uvek koriste
Struktura source koda Linux jezgra
• fs/
- Fajl sistem (fs/ext4/, itd.)
• include/
- Hederi jezgra
• include/linux/
- Centralni hederi Linux jezgra
• include/uapi/
- Hederi API-ja
• init/
- Inicijalizacija Linux-a (uključujući init/main.c)
• ipc/
- Kod za komunikaciju među procesima
Struktura source koda Linux jezgra
• Kbuild
- Deo build sistema jezgra
• Kconfig
- Deskripcioni fajl za parametre konfiguracije
• kernel/
- Srž Linux jezgra (vrlo malo)
• lib/
- Biblioteke za osnovne rutine (zlib, crc32...)
• MAINTAINERS
- Maintaineri za svaki deo jezgra
• Makefile
- Osnovni Linux Makefile
Struktura source koda Linux jezgra
• mm/
- Kod za upravljanje memorijom
• net/
- Kod za mrežnu podršku
• README
- Uputstva za bildovanje kernela
• REPORTING-BUGS
- Uputstva za prijavljivanje bagova
• samples/
- Primeri koda
• scripts/
- Skripte za internu ili eksternu upotrebu
Struktura source koda Linux jezgra
• security/
- Implementacija bezbednosnih modula
• sound/
- Kod i drajveri za zvuk
• tools/
- Kod za različite alate u korisničkom prostoru (uglavnom C)
• usr/
- Kod za generisanje initramfs cpio arhive
• virt/
- Podrška za virtuelizaciju
Alat za analizu koda jezgra
• Cscope: http://cscope.sourceforge.net/
• Poziv iz Linuxa: cscope -Rk
Konfiguracija i bildovanje Linux jezgra
• Primer:
linux-3.6.x/
make <target>
Konfiguracija jezgra
• Adapterski drajveri
- drivers/usb/host
• Drajveri uređaja
- Svuda u kodu jezgra, klasifikovani po tipu
Busevi bez dinamičke enumeracije
• Ovaj bus funkcioniše kao bilo koji drugi bus (UBS, PCI) sa
razlikom da su uređaji numerisani statički umesto da se
dinamički identifikuju
Device tree
• Na mnogim embedded arhitekturama manuelna instalacija
platform uređaja se smatra velikim nedostatkom zbog
otežanog održavanja sistema.
• Kod ovakvih arhitektura tendencija je da se pređe na
korišćenje takozvanog Device Tree
• To je drvo čvorova koji modeluju hijararhiju uređaja u
sistemu od uređaja unutar procesora do ostalih uređaja u
okviru jedne ploče
• Svaki čvor može da ima određeni broj osobina koje opisuju
različite osobine samog uređaja: adrese, prekide, clockove
itd.
• U toku podizanja jezgra, jezgru se dodeljuje kompajlirana
verzija Device Tree Blob, koja se koristi da se instanciraju svi
uređaji u Device Tree-u
• Na ARM procesorima: arch/arm/boot/dts.
Device tree - nasleđivanje
• On nudi:
- Drajvere za konfiguraciju multipleksiranja za dati sistem na
čipu
- Korisnički interfejs za drajvere multipleksiranja
• Blokovski uređaji
– Informacije se nalaze u blokovima fiksne veličine
– Komunikacija sa I/O realizovana je kroz čitanje/pisanje
blokova
– Hard disks, CD rom spadaju u ovu kategoriju
• Znakovni uređaji
– Komunikacija sa I/O realizovana je kroz pojedinačne
karaktere (znakove) i nema njihovog grupisanja u blokove
– Terminali, štampači, miš, džojstik spadaju u ovu kategoriju
• Drajver uređaja
- Kada se fajl uređaja po prvi put otvori, drajver registruje
hendler prekida za taj uređaj
• Hendler prekida
- Poziva se kada dođe do prekida
- Obaveštava da je zahtev za prekidom primljen
- Ukoliko je potrebno raspoređuje zadatke za upravljanje
podacima, inače budi procese koji čekaju na podatke
• Drajver uređaja
- Kada uređaj više nije korišćen od strane bilo kog procesa,
deregistruje hendler prekida
Sistemi za rad u realnom
vremenu
• https://rt.wiki.kernel.org
• http://www.xenomai.org/