1
2.
ARHITEKTURA X86 PROCESORA
2.1 Režimi rada
Procesori x86 familije, kojoj pripadaju Intelovi IA-32 i 32-bitni AMD procesori,
imaju tri osnovna režima rada:
Zaštićeni (Podrazumevano stanje procesora, u kojem su dostupne sve instrukcije
i dodatne funkcije. Programi imaju razdvojene memorijske prostore, segmente, a
procesor sprečava programe da referenciraju memoriju van njihovog segmenta.);
Virtuelni-8086 (podrežim zaštićenog režima rada; Dok je procesor u zaštićenom
režimu rada, može direktno da izvršava npr. MS-DOS programe u bezbednom
okruženju. Drugim rečima, ako se MS-DOS program sruši ili pokuša da upiše
podatke u oblast sistemske memorije, neće uticati na druge programe koji su
pokrenuti u isto vreme.);
Sa realnim adresama (Implementirano je programsko okruženje Intel 8086
procesora sa nekoliko dodatnih funkcija, kao što je mogućnost da se pređe u drugi
režim rada. Ovaj režim je dostupan u Windows-u 98 i može se koristiti za
pokretanje MS-DOS programa koji zahtevaju direktan pristup sistemskoj
memoriji i hardverskim uređajima. Programi koji rade u ovom režimu mogu da
dovedu do kraha operativnog sistema.);
Sistemski (Pruža operativnom sistemu mehanizam za implementaciju funkcija,
kao što su upravljanje napajanjem i bezbednost sistema. Ove funkcije obično
implementiraju proizvođači računara koji prilagođavaju procesor za određene
namene).
2.1.1 Adresni prostor
U 32-bitnom zaštićenom režimu, zadatak ili program može da adresira linearan
adresni prostor od maksimalno 4 GB. Međutim, tehnika pod nazivom EPA (Extended
2
Physical Addressing) omogućava da se adresira ukupno 64 GB fizičke memorije. Sa
druge strane, programi u režimu sa realnim adresama, mogu da adresiraju samo 1 MB.
Ako je procesor u zaštićenom režimu i pokreće više programa u virtuelnom 8086 režimu,
svaki program ima svoj memorijski prostor od 1 MB.
2.1.2 Osnovni skup registara
Registri su memorijski elementi, velike brzine, smešteni unutar procesorskog čipa,
koji su dizajnirani da im se pristupa sa mnogo većom brzinom. Kada je petlja u programu
optimizovana, tada se npr. iteratori petlje čuvaju u registrima, umesto samih promenljivih.
Na slici 1 je prikazan osnovni skup registara. Postoji osam registara opšte namene, šest
registara segmenata, registar statusnih flegova (EFLAGS) i programski brojač (EIP).
Slika 1. Osnovni skup registara
Registri opšte namene
Uglavnom se koriste za aritmetičke i operacije prenosa. Kao što je prikazano na
slici 2, nižih 16 bitova EAX registra se može označiti kao AX.
Slika 2. Registri opšte namene
3
Deo određenih registara se može adresirati sa osmobitnim vrednostima. Na primer,
registar AX ima 8-bitnu višu polovinu, AH, i 8-bitnu nižu polovinu, AL. Isti odnos postoji
i kod registara EAX, EBX, ECX i EDX:
32-bitni 16-bitni 8-bitni (viši) 8-bitni (niži)
EAX AX AH AL
EBX BX BH BL
ECX CX CH CL
EDX DX DH DL
Ostalim registrima opšte namene se može pristupiti samo sa 32-bitnim ili 16-bitnim
imenima:
32-bitni 16-bitni
ESI SI
EDI DI
EBP BP
ESP SP
Specijalna primena registara opšte namene
Pojedini registri opšte namene imaju specijalizovanu primenu:
EAX se automatski koristi od strane instrukcija za množenje i deljenje. Često se
naziva i prošireni akumulator.
ECX se automatski koristi kao brojač u petlji.
ESP adresira podatke na steku. Retko se koristi za obične aritmetičke ili operacije
prenosa. Često se naziva i prošireni pokazivač steka.
ESI i EDI se koriste od strane instrukcija za brz transfer podataka. Često se
nazivaju i prošireni indeks izvorišta i prošireni indeks odredišta.
EBP se koristi od strane programskih jezika visokog nivoa za referenciranje
parametara funkcija i lokalnih promenljivih na steku. Ne bi smeo da se koristi za
obične aritmetičke ili instrukcije prenosa osim na naprednom nivou
programiranja. Često se naziva i prošireni pokazivač okvira.
Segmentni registri
U režimu realnih adresa, 16-bitni segmentni registri označavaju adrese osnove
predodeljenih memorijskih oblasti, segmenata. U zaštićenom režimu, segmentni registri
čuvaju pokazivače na tabelu deskriptora segmenata. Neki segmenti sadrže programske
4
instrukcije (kôd), drugi promenljive (podaci), a stek segment sadrži lokalne promenljive
funkcija i njene parametre.
Instrukcijski pokazivač (programski brojač)
EIP registar sadrži adresu sledeće instrukcije koja treba da se izvrši. Pojedine
mašinske instrukcije mogu manipulisati sa sadržajem ovog registra, čime se u programu
skače na novu lokaciju.
EFLAGS registar
Ovaj registar se sastoji od pojedinačnih binarnih bitova koji kontrolišu rad
procesora ili ukazuju na rezultat pojedinih procesorskih operacija. Pojedine instrukcije
proveravaju i upravljaju pojedinačnim procesorskim flegovima.
Fleg je setovan kada je jednak 1; fleg je obrisan (ili resetovan) kada je jednak 0.
Upravljački flegovi
Ovi flegovi upravljaju radom procesora. Na primer, mogu da prouzrokuju da
procesor pauzira nakon izvršavanja svake instrukcije, izazovu prekid kada je otkriveno
prekoračenje prilikom izvršavanja aritmetičkih operacija, uđu u virtuelni 8086 režim i u
zaštićeni režim.
Programi mogu da setuju pojedinačne bitova u EFLAGS registru kako bi upravljali
radom procesora. Primer je fleg za prekide.
Statusni flegovi
Oni ukazuju na status rezultata aritmetičkih i logičkih operacija. To su:
Carry (CF) – prenos, setuje se kada je rezultat neoznačenih aritmetičkih operacija
suviše veliki da bi stao u odredište;
Overflow (OF) – prekoračenje, setuje se kada je rezultat označenih aritmetičkih
operacija suviše veliki ili suviše mali da bi stao u odredište;
Sign (SF) – znak, setuje se kada je rezultat aritmetičke ili logičke operacije
negativan;
Zero (ZF) – nula, setuje se kada je rezultat aritmetičke ili logičke operacije jednak
nuli;
Auxiliary Carry (AC) – pomoćni prenos, setuje se kada aritmetička operacija
prouzrokuje bit prenosa sa bita 3 na bit 4 u 8-bitnom operandu;
5
Parity (PF) – parnost, setuje se ako bajt najmanje težine u rezultatu sadrži neparan
broj jedinica. U suprotnom, PF se briše. U opštem slučaju, koristi se za proveru
greški kada postoji mogućnost da se podaci mogu izmeniti.
MMX registri
MMX tehnologija je dodata Pentium procesorima kako bi se poboljšale
performanse naprednih multimedijalnih i komunikacionih aplikacija. Osam 64-bitnih
MMX registara podržavaju specijalne instrukcije pod nazivom SIMD (Single-Instruction,
Multiple-Data). Kao što ime govori, MMX instrukcije rade paralelno sa vrednostima koje
se nalaze u MMX registrima. Iako se čini da su to posebni registri, imena MMX registra
su, u stvari, alijasi na iste registre koje koristi jedinica za rad sa pokretnim zarezom.
Postoji i osam 128-bitnih XMM registara.
Jedinica za rad sa pokretnim zarezom (Floating Point Unit, FPU)
FPU obavlja aritmetiku u pokretnom zarezu velikom brzinom. Danas je integrisan
u glavni procesorski čip. Postoji osam registara podataka u FPU, od ST(0) do ST(7).
Ostali upravljački i pokazivački registri su prikazani na slici 3.
Slika 3. FPU registri
2.2 Pregled Intel-ovih procesora
Intel 8086
Intel 8086 procesor (1978. godina) je označio početak savremene familije Intel-ove
arhitekture. Glavne inovacije 8086 procesora nad ranijim procesorima su 16-bitni registri,
6
16-bitna magistrala podataka i korišćenje modela segmentirane memorije koji
omogućava programima da adresiraju do 1 MB operativne memorije. Veći pristup
memoriji je doveo do mogućnosti pisanja složenih poslovnih aplikacija. IBM-PC (1980.
godina) je imao Intel 8088 procesor, koji je bio isti kao 8086, osim što je imao 8-bitnu
magistralu podataka, što ga je činilo malo jeftinijim. Danas se Intel 8088 koristi u
jeftinijim mikrokontrolerima.
Svaki procesor Intel familije, predstavljen nakon 8086 je bio unazad kompatibilan
sa ranijim procesorima. Ovaj pristup omogućava starijim softverima da se pokreću bez
rekompajliranja na novijim računarima.
Intel 80286
Postavio je novi standard u brzini i snazi. Prvobitno se koristio u IBM-PC/AT
računarima. Bio je prvi Intel-ov procesor koji je radio u zaštićenom režimu. 80286 je
mogao da adresira do 16 MB operativne memorije koristeći 24-bitne adresnu magistralu.
IA-32 familija procesora (x86)
Intel 80386 procesor (1985. godina) je uveo 32-bitne registre podataka, 32-bitnu
adresnu magistralu i eksternu putanju podataka. Ovde je moguće razlikovati internu od
eksterne putanje podataka, gde je interna putanja magistrala kojom se kreću podaci unutar
samog procesora, a eksterna putanja je magistrala kojom se kreću podaci ka i od memorije
i U/I uređaja. IA-32 procesori mogu da adresiraju virtuelnu memoriju koja je veća od
fizičke memorije računara. Svakom programu se dodeljuje linearni adresni prostor
veličine 4 GB.
Intel i486
Predstavljen je 1989. godine, poseduje mikroarhitekturu skupa instrukcija koja
koristi tehnike protočnosti (pipeline), koja omogućava izvršavanje više instrukcija u
jednom trenutku.
Pentium
Intel Pentium procesor (1993. godina) je doveo do mnogo poboljšanja po pitanju
performansi, uključujući superskalarni dizajn sa dva paralelna pipeline-a. Dve instrukcije
se mogu dekodovati i izvršavati istovremeno. Pentium je koristio 32-bitnu adresnu
magistralu i 64-bitnu internu putanju podataka. Takođe, uveo je MMX tehnologiju.
7
Intel64
Intel64 je ime Intel-ove implementacije x86-64 specifikacije, koju je originalno
razvio AMD. Intel64 ima 64-bitni linearni adresni prostor, iako pojedinačni procesori
implementiraju manje od 64 bita. Njihov fizički adresni prostor može biti veći od 64 GB.
Intel64 je unazad kompatibilan sa 32-bitnim programima, bez uticaja na performanse.
Višenitnost i višejezgarnost
Sistem sa dva procesora ima dva odvojena fizička procesora, koji su obično
priključeni na istu matičnu ploču sa sopstvenim podnožjima. Operativni sistem takvog
računara može da izvršava dva odvojena zadatka (procesa ili niti) koja se paralelno
izvršavaju.
Intel Hyper-Threading (HT) tehnologija omogućava da se dva zadatka istovremeno
izvršavaju na jednom procesoru. Ovaj pristup je jeftiniji od sistema sa dva procesora i
efikasnije koristi procesorske resurse. U suštini, jedan fizički procesor je podeljen na dva
logička procesora. Deljeni resursi su keš memorija, registri i jedinice za izvršavanje.
Termin Dual Core se odnosi na čip koji sadrži dva fizička procesorska čipa unutar
jednog čipa. Svaki procesor ima svoje resurse i posebnu komunikacionu putanju sa
magistralama. Ponekad, dvojezgarni procesori implementiraju i HT tehnologiju, čime se
dobijaju četiri logička procesora.
2.3 Učitavanje i izvršavanje programa
Kada korisnik pokrene program u komandnom prozoru, dešava se sledeće:
Operativni sistem pretražuje ime programa u trenutnom direktorijumu na disku.
Ako ga tu ne pronađe, pretražuje unapred određenu listu direktorijuma (koje se
nazivaju putanje). Ako ne pronađe program, prijavljuje grešku.
Ako je fajl programa pronađen, operativni sistem prikuplja osnovne informacije
o fajlu programa sa diska, uključujući veličinu fajla i njegovu fizičku lokaciju na
disku.
Operativni sistem određuje sledeću slobodnu memorijsku lokaciju i učitava fajl
programa u memoriju. Alocira memorijski blok za program i unosi informacije o
veličini programa i lokaciji u tabeli deskriptora. Dodatno, operativni sistem može
da promeni vrednost pokazivača unutar programa tako da sadrže adrese
programskih podataka.
8
Operativni sistem počinje sa izvršavanjem prve mašinske instrukcije programa.
Čim program počne da se izvršava, naziva se proces. Operativni sistem dodeljuje
procesu identifikacioni broj, koji se koristi za praćenje programa tokom
izvršavanja.
Proces se sam izvršava. Posao operativnog sistema je da prati izvršavanje procesa
i da odgovori na zahteve za sistemske resurse. Primer ovih resursa su memorija,
fajlovi na disku i ulazno-izlazni uređaji.
Kada se proces završi, uklanja se iz memorije.
Multitasking
Multitasking operativni sistem je sposoban za pokretanje više zadataka u isto
vreme. Zadatak se definiše ili kao program (proces) ili kao nit izvršavanja. Proces ima
svoj memorijski prostor i može da sadrži više niti. Nit deli svoju memoriju sa drugim
nitima koje pripadaju istom procesu. Igre, na primer, često koriste pojedinačne niti kako
bi istovremeno upravljale sa više grafičkih objekata. Web pregledači koriste posebne niti
za istovremeno učitavanje slika i odgovaranje na korisničke zahteve.
Većina savremenih operativnih sistema istovremeno izvršava zadatke koji
komuniciraju sa hardverom, prikazuju korisničke interfejse, rade obradu fajlova u
pozadini, itd. Procesor u stvarnosti može da izvršava samo jednu instrukciju u datom
trenutku, tako da komponenta operativnog sistema pod nazivom raspoređivač (scheduler)
alocira deo procesorskog vremena (vremenski isečak) svakom zadatku. Tokom jednog
vremenskog isečka procesor izvršava blok instrukcija, zaustavljajući se kada istekne
zadato vreme. Primer takvog raspoređivača je Round-Robin.
Multitasking operativni sistem se pokreće na procesoru koji podržava zamenu
zadataka (task switching). Procesor pamti stanje svakog zadatke pre nego što pređe na
drugi. Stanje zadatka se sastoji od procesorskih registara, programskog brojača i statusnih
flegova, zajedno sa referencama na memorijske segmente zadatka. Multitasking
operativni sistem će često dodeliti različite prioritete zadacima, čime im dodeljuje veće
ili manje vremenske isečke. Multitasking operativni sistem sa preuzimanjem
(preemptive), kao što je Windows XP ili Linux, omogućava zadatku višeg prioriteta da
prekine zadatak niskog prioriteta, što dovodi do bolje stabilnosti sistema.
9
2.4 Upravljanje memorijom
Zaštićeni režim je najrobusniji i moćan, ali ograničava programe da direktno
pristupaju sistemskom hardveru.
U režimu realnih adresa, samo 1 MB memorije se može adresirati, od 0x00000
do 0xFFFFF. Procesor može da izvršava samo jedan program u datom trenutku, ali može
da prekine sa izvršavanjem datog programa kako bi obradio prekide od periferija.
Programi mogu da pristupaju bilo kojoj memorijskoj lokaciji, uključujući adrese koje su
direktno povezane sa hardverom. MS-DOS operativni sistem se pokreće u ovom režimu,
dok Windows 95 i 98 mogu da se pokrenu u ovom režimu.
U zaštićenom režimu, procesor može da izvršava više programa u isto vreme. On
dodeljuje svakom procesu (programu u izvršenju) ukupno 4 GB memorije. Svakom
programu se može dodeliti poseban memorijski prostor, a programi su sprečeni da
slučajno pristupe programskom kodu i podacima drugih programa. MS-Windows i Linux
rade u zaštićenom režimu.
U virtuelnom 8086 režimu, računar radi u zaštićenom režimu i kreira virtuelnu
8086 mašinu sa sopstvenim adresnim prostorom od 1 MB, koja simulira 80x86 računar
koji radi u režimu sa realnim adresama. Windows NT i 2000, na primer, kreiraju virtuelnu
8086 mašinu kada otvorite komandni prompt. Može se pokrenuti veći broj takvih prozora
u datom trenutku, a svaki je zaštićen od radnji iz drugih. Neki MS-DOS programi koji
direktno referenciraju hardver se neće pokrenuti u ovom režimu pod Windows-om NT,
2000 i XP.
2.4.1 Režim sa realnim adresama
U ovom režimu, x86 procesor može da pristupi 1.048.576 bajtovima memorije (1
MB) koristeći 20-bitne adrese u opsegu od 0x00000 do 0xFFFFF. Osnovni problem
prilikom razvoja je bio taj da 16-bitni registri ne mogu da čuvaju 20-bitne adrese. Rešenje
je segmentirana memorija. Sva memorija je podeljena na jedinice veličine 64 kB koje se
zovu segmenti, prikazani na slici 4. Analogija sa ovim je velika zgrada, u kojoj segmenti
predstavljaju spratove. Osoba može da se vozi liftom do određenog sprata, siđe i prati
brojeve soba kako bi našla sobu. Pomeraj sobe se može posmatrati kao udaljenost od lifta
do sobe.
10
Slika 4. Mapa segmentirane memorije
Svaki segment počinje sa adresama koje imaju nulu kao svoju poslednju
heksadecimalnu cifru. Pošto je poslednja cifra uvek nula, ona se izostavlja prilikom
predstavljanja vrednosti segmenta. Vrednost segmenta od C000, na primer, ukazuje na
segment na adresi C0000. Na istoj slici je prikazano proširenje segmenta na adresu 80000.
Da bi se došlo do bajta u ovom segmentu, dodaje se 16-bitni pomeraj (ofset, od 0 do
FFFF) na osnovnu adresu segmenta. Adresa 8000:0250, na primer, predstavlja pomeraj
od 250 unutar segmenta koji počinje na adresi 80000. Linearna adresa je 80250h.
20-bitno linearno računanje adresa
Adresa ukazuje na jednu lokaciju u memoriji, a x86 procesori dozvoljavaju da svaki
bajt u lokaciji ima posebnu adresu. Termin za ovakav slučaj je bajt-adresibilna memorija
(ili memorija adresibilna na nivou bajta). U režimu realnih adresa, linearna (ili apsolutna)
adresa je 20-bitna, u opsegu od 0x00000 do 0xFFFFF. Programi ne mogu da direktno
koriste linearne adrese, tako da se adrese prikazuju preko dva 16-bitna cela broja. Adresa
je u formatu segment-ofset i poseduje:
16-bitnu vrednost segment, koja je smeštena u jednom od segmentnih registara
(CS, DS, ES, SS),
16-bitnu vrednost ofset.
11
Procesor automatski konvertuje ovu adresu u 20-bitnu linearnu adresu.
Pretpostavimo da je segment-ofset adresa 08F1:0100. Procesor množi segment sa 16
(heksadecimalno 10) i dodaje proizvod na ofset:
08F1h x 10h = 08F10h (podešen segment)
Podešen segment: 0 8 F 1 0
Dodavanje ofseta: 0 1 0 0
Linearna adresa: 0 9 0 1 0
Tipičan program ima tri segmenta: kod, podaci i stek. Tri segmentna registra, CS,
DS i SS sadrže početne adrese segmenata:
CS sadrži 16-bitnu adresu segmenta za kod,
DS sadrži 16-bitnu adresu segmenta za podatke,
SS sadrži 16-bitnu adresu segmenta za stek,
ES, FS i GS mogu da ukazuju na dodatne segmente podataka, odnosno, segmente
koji dopunjavaju osnovni segment podataka.
2.4.2 Zaštićeni režim
Zaštićeni režim je moćniji, „prirodniji“ režim rada. Kada je pokrenut u zaštićenom
režimu, adresni prostor programa je 4 GB, koristeći adrese od 0x0 do 0xFFFFFFFF. Što
se tiče Microsoft asemblera, model ravne segmentacije je prigodan za programiranje u
zaštićenom režimu. Ravan model se lako koristi jer zahteva samo jedan 32-bitni ceo broj
koji čuva adresu instrukcije ili promenljive. Procesor izvršava računanje adresa i
translaciju u pozadini, što je transparentno za programere. Segmentni registri (CS, DS,
SS, ES, FS i GS) ukazuju na tabelu deskriptora segmenata, koju koristi operativni sistem
za praćenje lokacija individualnih programskih segmenata. Tipičan program u zaštićenom
režimu ima tri segmenta: kod, podaci i stek, koristeći CS, DS i SS segmentne registe:
CS ukazuje na tabelu deskriptora za segment koda,
DS ukazuje na tabelu deskriptora za segment podataka,
SS ukazuje na tabelu deskriptora za segment steka.
Model ravne segmentacije
U ovom modelu, svi segmenti se mapiraju na celokupan 32-bitni fizički adresni
prostor računara. Najmanje dva segmenta su neophodna, jedan za kod i jedan za podatke.
Svaki segment je definisan deskriptorom segmenta, 64-bitnim celim brojem koji je
smešten u globalnoj tabeli deskriptora (GDT). Na slici 5 je prikazan deskriptor segmenta
12
čije polje početne adrese ukazuje na prvu slobodnu lokaciju u memoriji (00000000). Na
ovoj slici, granica segmenta je 0040. Polje pristup sadrži bitove koji određuju kako se
segment može koristiti. Svi savremeni operativni sistemi zasnovani na x86 arhitekturi
koriste ravan model segmentacije.
Slika 5. Ravan model segmentacije
Multi-segmentni model
U ovom modelu, svaki zadatak ili program ima svoju tabelu deskriptora segmenata,
koji se nazivaju lokalna tabela deskriptora (LDT). Svaki deskriptor ukazuje na segment,
koji se može razlikovati od svih segmenata koje koriste drugi procesi. Svaki segment ima
svoj sopstveni adresni prostor. Na slici 6, svaki ulaz u LDT ukazuje na različit segment u
memoriji. Svaki deskriptor segmenta određuje tačnu veličinu svog segmenta. Na primer,
segment koji počinje na adresi 3000 ima veličinu 2000h, koja se računa kao (0002h x
1000h). Segment koji počinje na adresi 8000 ima veličinu A000h.
Slika 6. Multi-segmentni model
13
Straničenje
Procesori x86 familije podržavaju straničenje, mehanizam koji omogućava da se
segmenti podele na blokove veličine 4096 bajtova, koji se nazivaju stranice. Straničenje
omogućava da ukupna memorija koju koriste svi programi koji su pokrenuti u isto vreme
bude mnogo veća od fizičke memorije računara. Ukupan skup stranica koje su mapirane
od strane operativnog sistema se naziva virtuelna memorija. Operativni sistemi imaju
uslužne programe koji se nazivaju menadžeri virtuelne memorije.
Straničenje je važno rešenje za problem sa kojim se suočavaju softverski i
hardverski inženjeri. Program se mora učitati u glavnu memoriju pre nego što se može
izvršavati, ali memorija je skupa. Korisnici žele da učitaju veliki broj programa u
memoriju i da se prebacuju sa jednog na drugi po volji. Spoljašnji diskovi, sa druge strane,
su jeftini i mnogo veće kapaciteta. Straničenje omogućava iluziju da je memorija skoro
neograničene veličine. Pristup diskovima je mnogo sporiji nego pristup glavnoj memoriji,
tako da što se više programi oslanjaju na straničenje, to su i sporiji.
Kada se zadatak pokrene, njegovi delovi mogu biti smešteni na disku ako se
trenutno ne koriste. Delovi zadatka se straniče (prebacuju) na disk. Druge aktivne stranice
ostaju u memoriji. Kada procesor počinje sa izvršavanjem koda koji je bio izbačen iz
memorije, uzrokuje grešku u straničenju (page fault), čime se stranica ili stranice koje
sadrže traženi kod ili podatke učitavaju nazad u memoriju. Računar radi brže sa više
operativne memorije zato što se veliki fajlovi i programi mogu čuvati u glavnoj memoriji,
što umanjuje količinu straničenja.
2.5 Ulazno-izlazni podsistem
2.5.1 Nivoi U/I pristupa
Programi neprekidno čitaju ulaze sa tastature i diska i ispisuju podatke na ekranu
ili ih čuvaju u fajlovima. U/I mehanizmi ne moraju direktno pristupati hardveru. Umesto
toga, mogu se pozivati funkcije koje pruža operativni sistem. U/I podsistemu se može
pristupiti na različitim nivoima pristupa, slično konceptu virtuelne mašine. Postoje tri
osnovna nivoa pristupa:
Funkcije jezika visokog nivoa. Programski jezici visokog nivoa, kao što su C++
ili Java, sadrže funkcije koje vrše unos i ispis podataka. Ove funkcije su prenosive,
zato što mogu raditi na velikom broju različitih računarskih sistema i ne zavise od
nekog operativnog sistema.
14
Operativni sistem. Programeri mogu pozivati funkcije operativnog sistema iz
biblioteka koje su poznate kao API (Application Programming Interface).
Operativni sistem omogućava operacije visokog nivoa, kao što su upis stringova
u fajlove, čitanje stringova sa tastature i alociranje blokova u memoriji.
BIOS. BIOS je skup subrutina niskog nivoa koje direktno komuniciraju sa
hardverom. BIOS instaliraju proizvođači računara i pravi se kako bi odgovarao
hardveru. Operativni sistemi uglavnom komuniciraju sa BIOS-om.
2.5.2 Drajveri uređaja
Drajveri su programi koji omogućavaju operativnom sistemu da direktno
komunicira sa hardverom. Na primer, drajver može da dobije upit od operativnog sistema
da pročita neke podatke; drajver odgovara tako što izvršava kod u firmveru uređaja kojim
se čitaju podaci, na način koji odgovara tom uređaju. Drajveri se uglavnom instaliraju na
jedan od dva načina:
Pre nego što je uređaj priključen na računar,
Posle priključenja uređaja na računar.
U poslednjem slučaju, operativni sistem prepoznaje ime i potpis uređaja, a potom
locira i instalira softver drajvera na računaru.
U/I hijerarhija se može posmatrati preko primera koji pokazuje šta se dešava kada
program treba da prikaže string na ekranu (slika 7). To se radi u sledećim koracima:
1. Iskaz u programu poziva bibliotečnu funkciju jezika visokog nivoa koja upisuje
string na standardni izlaz.
2. Bibliotečka funkcija (nivo 3) poziva funkciju operativnog sistema i prosleđuje joj
pokazivač na string.
3. Funkcija operativnog sistema (nivo 2) poziva BIOS subrutinu, prosleđuje joj
ASCII kod i boju svakog karaktera. Operativni sistem poziva drugu BIOS
subrutinu kako bi pomerila kursor na narednu poziciju na ekranu.
4. BIOS subrutina (nivo 1) prima karakter, mapira ga u određeni sistemski font i
šalje karakter na hardverski port koji je povezan sa grafičkom karticom.
5. Grafička kartica (nivo 0) generiše vremenske hardverske signale video displeju,
koji kontroliše rastersko skeniranje i prikazivanje piksela.
15
Slika 7. Nivoi pristupa za U/I operacije
2.5.3 Programiranje na više nivoa
Asemblerski programi poseduju snagu i fleksibilnost u oblasti programiranja ulaza-
izlaza. Mogu da biraju između sledećih nivoa pristupa (slika 8):
Nivo 3: Poziv bibliotečkih funkcija koje vrše generičke tekstualne i U/I operacije
sa fajlovima.
Nivo 2: Poziv funkcija operativnog sistema za izvršavanje generičkih tekstualnih
i U/I operacija sa fajlovima. Ako operativni sistem koristi grafički korisnički
interfejs, poseduje funkcije za grafički prikaz koji je nezavisan od uređaja.
Nivo 1: Poziv BIOS funkcija za upravljanje mehanizmima koji su svojstveni
pojedinačnim uređajima, kao što su boja, grafika, zvuk, unos sa tastature i niski
nivo pristupa disku.
Nivo 0: Slanje i primanje podataka sa hardverskih portova, čime se poprima
apsolutna kontrola nad pojedinačnim uređajima. Ovaj pristup se ne može koristiti
sa širokim skupom hardverskih uređaja, tako da se može reći da nije prenosiv.
Različiti uređaji često koriste različite hardverske portove, tako da se programski
kod mora prilagođavati svakom pojedinačnom tipu uređaja.
Slika 8. Nivo pristupa asemblerskog jezika
16
Šta su posledice? Glavna je odnos kontrole i prenosivosti. Nivo 2 (OS) radi na bilo
kom računarima koje pokreće isti operativni sistem. Ako U/I uređaj ne poseduje određene
mogućnosti, operativni sistem će uraditi najviše što može kako bi približno dobio traženi
rezultat. Nivo 2 nije preterano brz zato što svaki U/I poziv mora proći kroz nekoliko nivoa
pre izvršenja.
Nivo 1 (BIOS) radi na svim sistemima koji imaju standardni BIOS, ali neće dati
iste rezultate na svim sistemima. Na primer, dva računara imaju video displej sa različitim
rezolucijama. Programer na nivou 1 će morati da piše kod kako bi odredio korisnička
hardverska podešavanja i prilagodio izlazni format da bi se podudarali. Nivo 1 je brži od
nivoa 2 jer je samo jedan nivo iznad hardvera.
Nivo 0 (hardver) radi sa generičkim uređajima kao što je serijski port, i sa
specifičnim U/I uređajima koje proizvode poznati proizvođači. Programi koji koriste ovaj
nivo moraju da prošire svoju programsku logiku kako bi se prilagodili svakom
pojedinačnom U/I uređaju. Igre su savršen primer ovoga zato što često uzimaju kontrolu
nad računarom. Programi na ovom nivou se izvršavaju brzinom koju hardver omogućava.
Pretpostavimo, na primer, da se želi prikazati audio fajl koristeći zvučnu karticu.
Na nivou operativnog sistema, ne morate da znate koji tip uređaja je instaliran, a neće vas
zanimati ni nestandardne funkcije koje kartica možda ima. Na BIOS nivou, moraćete da
pošaljete zahtev zvučnoj kartici (koristeći njen instaliran drajver) i da vidite da li pripada
određenoj klasi zvučnih kartica koje imaju poznate specifikacije. Na nivou hardvera,
moraćete da napišete kod koji se prilagođava određenim modelima zvučnih kartica,
koristeći prednosti specijalnih funkcija svake kartice.
Ne dozvoljavaju svi operativni sistemi korisničkim programima da direktno
pristupe hardveru. Takav pristup je rezervisan za sam operativan sistem i specijalne
drajverske programe. To je slučaj sa svim verzijama Microsoft Windows-a nakon
Windows-a 95, u kojima su vitalni sistemski resursi zaštićeni od aplikativnih programa.
Sa druge strane, MS-DOS nema takvih ograničenja.
Top Related