16
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 adresi ra linearan adresni prostor od maksimalno 4 GB. Međutim, tehnika pod nazivom EPA (Extended

Vezba 2 - Arhitektura x86 Procesora

Embed Size (px)

DESCRIPTION

Vezba 2 - Arhitektura x86 Procesora

Citation preview

Page 1: Vezba 2 - Arhitektura x86 Procesora

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

Page 2: Vezba 2 - Arhitektura x86 Procesora

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

Page 3: Vezba 2 - Arhitektura x86 Procesora

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

Page 4: Vezba 2 - Arhitektura x86 Procesora

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;

Page 5: Vezba 2 - Arhitektura x86 Procesora

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,

Page 6: Vezba 2 - Arhitektura x86 Procesora

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.

Page 7: Vezba 2 - Arhitektura x86 Procesora

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.

Page 8: Vezba 2 - Arhitektura x86 Procesora

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.

Page 9: Vezba 2 - Arhitektura x86 Procesora

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.

Page 10: Vezba 2 - Arhitektura x86 Procesora

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.

Page 11: Vezba 2 - Arhitektura x86 Procesora

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

Page 12: Vezba 2 - Arhitektura x86 Procesora

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

Page 13: Vezba 2 - Arhitektura x86 Procesora

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.

Page 14: Vezba 2 - Arhitektura x86 Procesora

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.

Page 15: Vezba 2 - Arhitektura x86 Procesora

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

Page 16: Vezba 2 - Arhitektura x86 Procesora

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.