378
    E     l   e     k     t   r   o    n    s    k    o     i   z     d    a    n     j    e     (     2     0    1     5     )  

Programiranje 2 ETF

Embed Size (px)

DESCRIPTION

programiranje 2

Citation preview

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    Filip Mari Predrag Janii

    PROGRAMIRANJE 1

    Osnove programiranja kroz programski jezik C

    Beograd

    2015.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    Autori:

    dr Filip Mari, docent na Matematikom fakultetu u Beogradu

    dr Predrag Janii, redovni profesor na Matematikom fakultetu u Beogradu

    PROGRAMIRANJE 1

    Izdava: Matematiki fakultet Univerziteta u Beogradu

    Studentski trg 16, 11000 Beograd

    Za izdavaa: prof. dr Zoran Raki, dekan

    Recenzenti:

    dr Gordana Pavlovi-Laeti, redovni profesor na Matematikom fakultetu u

    Beogradu

    dr Miodrag ivkovi, redovni profesor na Matematikom fakultetu u Beogradu

    dr Dragan Uroevi, nauni savetnik na Matematikom institutu SANU

    Obrada teksta, crtei i korice: autori

    ISBN 978-86-7589-100-0

    c2015. Filip Mari i Predrag JaniiOvo delo zatieno je licencom Creative Commons CC BY-NC-ND 4.0 (Attribution-

    NonCommercial-NoDerivatives 4.0 International License). Detalji licence mogu se

    videti na veb-adresi http://creativecommons.org/licenses/by-nc-nd/4.0/. Do-

    zvoljeno je umnoavanje, distribucija i javno saoptavanje dela, pod uslovom da se

    navedu imena autora. Upotreba dela u komercijalne svrhe nije dozvoljena. Prerada,

    preoblikovanje i upotreba dela u sklopu nekog drugog nije dozvoljena.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    Sadraj

    Sadraj 5

    I Osnovni pojmovi raunarstva i programiranja 10

    1 Raunarstvo i raunarski sistemi 11

    1.1 Rana istorija raunarskih sistema . . . . . . . . . . . . . . . . . 12

    1.2 Raunari fon Nojmanove arhitekture . . . . . . . . . . . . . . . 16

    1.3 Oblasti savremenog raunarstva . . . . . . . . . . . . . . . . . . 21

    1.4 Hardver savremenih raunara . . . . . . . . . . . . . . . . . . . 22

    1.5 Softver savremenih raunara . . . . . . . . . . . . . . . . . . . . 26

    2 Reprezentacija podataka u raunarima 38

    2.1 Analogni i digitalni podaci i digitalni raunari . . . . . . . . . . 38

    2.2 Zapis brojeva . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    2.3 Zapis teksta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    2.4 Zapis multimedijalnih sadraja . . . . . . . . . . . . . . . . . . 55

    3 Algoritmi i izraunljivost 61

    3.1 Formalizacije pojma algoritma . . . . . . . . . . . . . . . . . . 61

    3.2 er-Tjuringova teza . . . . . . . . . . . . . . . . . . . . . . . . 63

    3.3 ur maine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    3.4 Enumeracija urm programa . . . . . . . . . . . . . . . . . . . . 69

    3.5 Neizraunljivost i neodluivost . . . . . . . . . . . . . . . . . . 71

    3.6 Vremenska i prostorna sloenost izraunavanja . . . . . . . . . 73

    4 Vii programski jezici 78

    4.1 Kratki pregled istorije programskih jezika . . . . . . . . . . . . 79

    4.2 Klasifikacije programskih jezika . . . . . . . . . . . . . . . . . . 80

    4.3 Leksika, sintaksa, semantika programskih jezika . . . . . . . . . 80

    5

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    4.4 Pragmatika programskih jezika . . . . . . . . . . . . . . . . . . 83

    II Jezik C 90

    5 Osnovno o programskom jeziku C 91

    5.1 Standardizacija jezika . . . . . . . . . . . . . . . . . . . . . . . 91

    5.2 Prvi programi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    6 Predstavljanje podataka i operacije nad njima 101

    6.1 Promenljive i deklaracije . . . . . . . . . . . . . . . . . . . . . . 101

    6.2 Osnovni tipovi podataka . . . . . . . . . . . . . . . . . . . . . . 104

    6.3 Konstante i konstantni izrazi . . . . . . . . . . . . . . . . . . . 109

    6.4 Operatori i izrazi . . . . . . . . . . . . . . . . . . . . . . . . . . 112

    6.5 Konverzije tipova . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    6.6 Nizovi i niske . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

    6.7 Korisniki definisani tipovi . . . . . . . . . . . . . . . . . . . . . 140

    7 Naredbe i kontrola toka 151

    7.1 Naredba izraza . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

    7.2 Sloene naredbe (blokovi) . . . . . . . . . . . . . . . . . . . . . 152

    7.3 Naredbe grananja . . . . . . . . . . . . . . . . . . . . . . . . . . 152

    7.4 Petlje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

    8 Funkcije 168

    8.1 Primeri definisanja i pozivanja funkcije . . . . . . . . . . . . . . 168

    8.2 Deklaracija i definicija funkcije . . . . . . . . . . . . . . . . . . 170

    8.3 Parametri funkcije . . . . . . . . . . . . . . . . . . . . . . . . . 171

    8.4 Prenos argumenata . . . . . . . . . . . . . . . . . . . . . . . . . 172

    8.5 Konverzije tipova argumenata funkcije . . . . . . . . . . . . . . 174

    8.6 Povratna vrednost funkcije . . . . . . . . . . . . . . . . . . . . 175

    8.7 Nizovi i funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

    8.8 Korisniki definisani tipovi i funkcije . . . . . . . . . . . . . . . 178

    8.9 Rekurzija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

    8.10 Funkcije sa promenljivim brojem argumenata . . . . . . . . . . 179

    9 Organizacija izvornog i izvrnog programa 186

    9.1 Od izvornog do izvrnog programa . . . . . . . . . . . . . . . . 187

    9.2 Organizacija izvornog programa . . . . . . . . . . . . . . . . . . 193

    9.3 Organizacija izvrnog programa . . . . . . . . . . . . . . . . . . 219

    10 Pokazivai i dinamika alokacija memorije 234

    10.1 Pokazivai i adrese . . . . . . . . . . . . . . . . . . . . . . . . . 234

    10.2 Pokazivai i argumenti funkcija . . . . . . . . . . . . . . . . . . 239

    10.3 Pokazivai i nizovi . . . . . . . . . . . . . . . . . . . . . . . . . 241

    10.4 Pokazivaka aritmetika . . . . . . . . . . . . . . . . . . . . . . . 244

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    10.5 Pokazivai i niske . . . . . . . . . . . . . . . . . . . . . . . . . . 247

    10.6 Nizovi pokazivaa i viedimenzioni nizovi . . . . . . . . . . . . . 251

    10.7 Pokazivai i strukture . . . . . . . . . . . . . . . . . . . . . . . 254

    10.8 Pokazivai na funkcije . . . . . . . . . . . . . . . . . . . . . . . 255

    10.9 Dinamika alokacija memorije . . . . . . . . . . . . . . . . . . . 258

    11 Pregled standardne biblioteke 269

    11.1 Zaglavlje string.h . . . . . . . . . . . . . . . . . . . . . . . . . 269

    11.2 Zaglavlje stdlib.h . . . . . . . . . . . . . . . . . . . . . . . . . 272

    11.3 Zaglavlje ctype.h . . . . . . . . . . . . . . . . . . . . . . . . . 274

    11.4 Zaglavlje math.h . . . . . . . . . . . . . . . . . . . . . . . . . . 275

    11.5 Zaglavlje assert.h . . . . . . . . . . . . . . . . . . . . . . . . . 276

    12 Ulaz i izlaz programa 277

    12.1 Standardni tokovi . . . . . . . . . . . . . . . . . . . . . . . . . . 277

    12.2 Ulaz iz niske i izlaz u nisku . . . . . . . . . . . . . . . . . . . . 285

    12.3 Ulaz iz datoteka i izlaz u datoteke . . . . . . . . . . . . . . . . 286

    12.4 Argumenti komandne linije programa . . . . . . . . . . . . . . 294

    A Tabela prioriteta operatora 300

    B Reenja zadataka 301

    Indeks 373

    7

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    Predgovor

    Ova knjiga pisana je kao udbenik za predmet Programiranje 1 na smeru

    Informatika Matematikog fakulteta u Beogradu. U ovom predmetu i u ovoj

    knjizi, centralno mesto ima programski jezik C, ali predmet i knjiga nisu samo

    kurs ovog jezika, ve pokuavaju da dju ire osnove programiranja, ilustrovane

    kroz jedan konkretan jezik.

    Knjiga je nastala na osnovu materijala za predavanja koja smo na ovom

    predmetu drali od 2005. godine. Ipak, vremenom je materijal proiren i de-

    lovima koji se u okviru tog predmeta ne predaju ili se predaju u vrlo ogranie-

    nom obimu. Zahvaljujui tome, ova knjiga i njen nastavak (Programiranje 2

    Osnove programiranja kroz programski jezik C) mogu se koristiti kao udbenici

    za vie razliitih kurseva. Za predmet na studijama na kojima nema drugih

    (ili nema mnogo drugih) raunarskih predmeta, predlaemo obraivanje i-

    tave knjige, s tim to obraivanje glave 4 preporuujemo samo za studije sa

    jakom matematikom orijentacijom. itaocima (studentima) koji poznaju os-

    nove raunarstva i programiranja, a ne znaju jezik C, preporuujemo itanje

    samo drugog dela knjige (Jezik C). Za kurs Programiranje 1 na smeru Infor-

    matika preporuujemo samo ubrzano upoznavanje sa glavama 1 i 2 (jer se ti

    sadraji izuavaju u okviru drugih predmeta na prvoj godini). Za ovaj kurs

    preporuujemo i upoznavanje sa glavama 3 i 4, a upoznavanje sa glavama 10 i

    12 preporuujemo za drugi semestar.

    Na kraju veine poglavlja naveden je vei broj pitanja i zadataka koji mogu

    da slue za proveru znanja. Meu ovim pitanjima su praktino sva pitanja

    koja su zadata na testovima i ispitima iz predmeta Programiranje 1 u peri-

    odu od pet godina. Odgovori na pitanja nisu eksplicitno navoeni, jer su ve

    implicitno sadrani u osnovnom tekstu knjige. Na kraju knjige navedena su

    reenja zadataka, te se moe smatrati da ova knjiga obuhvata i potpunu prateu

    zbirku zadataka. Za zadatka tipa ta ispisuje naredni program? nisu navoeni

    odgovori jer italac to moe da proveri na svom raunaru (i knjiga pokuava

    da ohrabri itaoca da itanje knjige kombinuje sa radom na raunaru).

    U pripremi knjige koristili smo mnoge izvore, pre svega sa interneta. Od

    8

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    izvora o jeziku C, pomenimo ovde znamenitu knjigu Programski jezik C (The

    C Programming Language, K&R) Brajana Kernigana i Denisa Riija koja je

    dugo sluila kao nezvanini standard jezik, knjigu Knjiga o C-u (The C Book)

    Majka Banahana, Deklana Brejdija i Marka Dorana, kao i ISO standarde jezika

    C. Za pripremu glave Algoritmi i izraunljivost koristili smo knjigu Teorija al-

    goritama, jezika i automata - zbirka zadataka, Irene Spasi i Predraga Janiia.

    Na veoma paljivom itanju i brojnim korisnim savetima zahvaljujemo re-

    cenzentima Gordani Pavlovi-Laeti, Miodragu ivkoviu i Draganu Uroe-

    viu. Na brojnim sugestijama i ispravkama zahvalni smo i nastavnicima Matem-

    atikog fakulteta Mileni Vujoevi-Janii, Nenadu Mitiu i Mladenu Nikoliu,

    kao i studentima Nikoli Premevskom, Mladenu Canoviu, Nemanji Mioviu,

    Vojislavu Grujiu, Stefanu oreviu, Petru Vukmiroviu, Bobanu Piskuliu,

    Jani Proti, Ljubici Peleksi, Ivanu Baleviu, Danielu Doi, Milou Samardiji,

    Stefanu Saviu, Petru Kovrliji i Tomislavu Milovanoviu.

    Ova knjiga dostupna je (besplatno) u elektronskom obliku preko internet

    strana autora. Sadraj tampanog i elektronskog izdanja je identian. Be-

    splatna dostupnost elektronskog oblika knjige odraava stav autora o otvorenim

    sadrajima kdu programa i sadraju knjiga.

    Autori

    Beograd, april 2015. godine

    9

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    Deo I

    Osnovni pojmovi raunarstva i

    programiranja

    10

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    Glava 1

    Raunarstvo i raunarski sistemi

    Raunarstvo i informatika predstavljaju jednu od najatraktivnijih i naj-

    vanijih oblasti dananjice. ivot u savremenom drutvu ne moe se zamis-

    liti bez korienja razliitih raunarskih sistema: stonih i prenosnih raunara,

    tableta, pametnih telefona, ali i raunara integrisanih u razliite maine (au-

    tomobile, avione, industrijske maine, itd). Definicija raunarskog sistema je

    prilino iroka. Moe se rei da se danas pod digitalnim raunarskim sistemom

    (raunarom) podrazumeva maina koja moe da se programira da izvrava ra-

    zliite zadatke svoenjem na elementarne operacije nad brojevima. Brojevi

    se, u savremenim raunarima, zapisuju u binarnom sistemu, kao nizovi nula

    i jedinica tj. binarnih cifara, tj. bitova (engl. bit, od binary digit). Koristei

    bitova, moe se zapisati 2 razliitih vrednosti. Na primer, jedan bajt(B)oznaava osam bitova i moe da reprezentuje 28, tj. 256 razliitih vrednosti.1

    Raunarstvo se bavi izuavanjem raunara, ali i optije, izuavanjem teorije

    i prakse procesa raunanja i primene raunara u raznim oblastima nauke,

    tehnike i svakodnevnog ivota

    2

    .

    Raunari u dananjem smislu nastali su polovinom XX veka, ali koreni

    raunarstva su mnogo stariji od prvih raunara. Vekovima su ljudi stvarali

    mehanike i elektromehanike naprave koje su mogle da reavaju neke numer-

    ike zadatke. Dananji raunari su programabilni, tj. mogu da se isprogrami-

    raju da vre razliite zadatke. Stoga je oblast programiranja, kojom se ova

    knjiga bavi, jedna od najznaajnijih oblasti raunarstva. Za funkcionisanje

    modernih raunara neophodni su i hardver i softver. Hardver (tehniki sis-

    tem raunara) ine opipljive, fizike komponente raunara: procesor, memo-

    1

    Koliina podataka i kapacitet memorijskih komponenti savremenih raunara obino se

    iskazuje u bajtovima ili izvedenim jedinicama. Obino se smatra da je jedan kilobajt (KB)

    jednak 1024 bajtova (mada neke organizacije podrazumevaju da je jedan KB jednak 1000

    bajtova). Slino, jedan megabajt (MB) je jednak 1024 KB ili 10242 B, jedan gigabajt (GB)je jednak 1024 MB, a jedan teraabajt (TB) je jednak 1024 GB.

    2

    esto se kae da se raunarstvo bavi raunarima isto onoliko koliko se astronomija bavi

    teleskopima, a biologija mikroskopima. Raunari nisu sami po sebi svrha i samo su sredstvo

    koje treba da pomogne u ostvarivanju razliitih zadataka.

    11

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    12 1. Raunarstvo i raunarski sistemi

    rija, matina ploa, hard disk, DVD ureaj, itd. Softver (programski sistem

    raunara) ine raunarski programi i pratei podaci koji odreuju izrauna-

    vanja koja vri raunar. Raunarstvo je danas veoma iroka i dobro utemeljena

    nauna disciplina sa mnotvom podoblasti.

    1.1 Rana istorija raunarskih sistema

    Programiranje u savremenom smislu postalo je praktino mogue tek kra-

    jem Drugog svetskog rata, ali je njegova istorija znatno starija. Prvi pre-

    cizni postupci i sprave za reavanje matematikih problema postojali su jo

    u vreme antikih civilizacija. Na primer, kao pomo pri izvoenju osnovnih

    matematikih operacija koriene su raunaljke zvane abakus. U IX veku per-

    sijski matematiar Al Horezmi

    3

    precizno je opisao postupke raunanja u indo-

    arapskom dekadnom brojevnom sistemu (koji i danas predstavlja najkorieniji

    brojevni sistem). U XIII veku Leonardo Fibonai

    4

    doneo je ovaj nain zapi-

    sivanja brojeva iz Azije u Evropu i to je bio jedan od kljunih preduslova za

    razvoj matematike i tehnikih disciplina tokom renesanse. Otkrie logaritma

    omoguilo je svoenje mnoenja na sabiranje, dodatno olakano raznovrsnim

    analognih spravama (npr. klizni lenjir iber)

    5

    . Prve mehanike sprave koje

    su mogle da potpuno automatski izvode aritmetike operacije i pomau u rea-

    vanju matematikih zadataka su napravljene u XVII veku. Blez Paskal

    6

    kon-

    struisao je 1642. godine mehanike sprave, kasnije nazvane Paskaline, koje su

    sluile za sabiranje i oduzimanje celih brojeva. Gotfrid Lajbnic

    7

    konstruisao je

    1672. godine mainu koja je mogla da izvrava sve etiri osnovne aritmetike

    operacije (sabiranje, oduzimanje, mnoenje i deljenje) nad celim brojevima.

    Ova maina bila je zasnovana na dekadnom brojevnom sistemu, ali Lajbnic je

    prvi predlagao i korienje binarnog brojevnog sistema u raunanju.

    Slika 1.1: Abakus. iber. Paskalina

    3

    Muhammad ibn Musa al-Khwarizmi (780850), persijski matematiar.

    4

    Leonardo Pisano Fibonacci, (11701250), italijanski matematiar iz Pize.

    5

    Zanimljivo je da su klizni lenjiri noeni na pet Apolo misija, ukljuujui i onu na Mesec,

    da bi astronautima pomagali u potrebnim izraunavanjima.

    6

    Blaise Pascal (16231662), francuski filozof, matematiar i fiziar. U njegovu ast jedan

    programski jezik nosi ime PASCAL.

    7

    Gottfried Wilhelm Leibniz (16461716), nemaki filozof i matematiar.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    13 1. Raunarstvo i raunarski sistemi

    Mehanike maine. ozef Mari akard

    8

    konstruisao je 1801. godine prvu

    programabilnu mainu mehaniki tkaki razboj koji je koristio buene kar-

    tice kao svojevrsne programe za generisanje kompleksnih ara na tkanini. Svaka

    rupa na kartici odreivala je jedan pokret maine, a svaki red na kartici odgo-

    varao je jednom redu are.

    U prvoj polovini XIX veka, arls Bebid

    9

    dizajnirao je, mada ne i real-

    izovao, prve programabilne raunske maine. Godine 1822. zapoeo je rad

    na diferencijskoj maini koja je trebalo da rauna vrednosti polinomijalnih

    funkcija (i eliminie este ljudske greke u tom poslu) u cilju izrade to pre-

    ciznijih logaritamskih tablica. Ime je dobila zbog toga to je koristila tzv. metod

    konanih razlika da bi bila eliminisana potreba za mnoenjem i deljenjem.

    Maina je trebalo da ima oko 25000 delova i da se pokree runo, ali nije

    nikada zavrena

    10

    . Ubrzo nakon to je rad na prvom projektu utihnuo bez

    rezultata, Bebid je zapoeo rad na novoj maini nazvanoj analitika maina.

    Osnovna razlika u odnosu na sve prethodne maine, koje su imale svoje speci-

    fine namene, bila je u tome to je analitika maina zamiljena kao raun-

    ska maina opte namene koja moe da se programira (programima zapisanim

    na buenim karticama, slinim akardovim karticama). Program zapisan na

    karticama kontrolisao bi mehaniki raunar (pokretan parnom mainom) i

    omoguavao sekvencijalno izvravanje naredbi, grananje i skokove, slino pro-

    gramima za savremene raunare. Osnovni delovi raunara trebalo je da budu

    mlin (engl. mill) i skladite (engl. store), koji po svojoj funkcionalnosti sasvim

    odgovaraju procesoru i memoriji dananjih raunara. Ada Bajron

    11

    zajedno

    sa Bebidem napisala je prve programe za analitiku mainu i, da je maina

    uspeno konstruisana, njeni programi bi mogli da raunaju odreene sloene ni-

    zove brojeva (takozvane Bernulijeve brojeve). Zbog ovoga se ona smatra prvim

    programerom u istoriji (i njoj u ast jedan programski jezik nosi ime Ada).

    Ona je bila i prva koja je uvidela da se raunske maine mogu upotrebiti i za

    nematematike namene, ime je na neki nain anticipirala dananje namene

    digitalnih raunara.

    Elektromehanike maine. Elektromehanike maine za raunanje koristili

    su se od sredine XIX veka do vremena Drugog svetskog rata.

    Jedna od prvih je maina za itanje buenih kartica koju je konstruisao

    Herman Holerit

    12

    . Ova maina koriena je 1890. za obradu rezultata popisa

    stanovnitva u SAD. Naime, obrada rezultata popisa iz 1880. godine trajala

    je vie od 7 godina, a zbog naglog porasta broja stanovnika procenjeno je

    8

    Joseph Marie Jacquard (17521834), francuski trgovac.

    9

    Charles Babbage (17911871), engleski matematiar, filozof i pronalaza.

    10

    Dosledno sledei Bebidev dizajn, 1991. godine (u nauno-popularne svrhe) uspeno

    je konstruisana diferencijska maina koja radi besprekorno. Neto kasnije, konstruisan je i

    tampa koji je Bebid dizajnirao za diferencijsku mainu, tj. tamparska presa povezana

    sa parnom mainom koja je tampala izraunate vrednosti.

    11

    Augusta Ada King (ro. Byron), Countess of Lovelace, (18151852), engleska matem-

    atiarka. U njenu ast nazvan je programski jezik ADA.

    12

    Herman Hollerith (18601929), ameriki pronalaza.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    14 1. Raunarstvo i raunarski sistemi

    Slika 1.2: akardov razboj. Bebidova diferencijska maina.

    da bi obrada rezultata iz 1890. godine trajala vie od 10 godina, to je bilo

    neprihvatljivo mnogo. Holerit je sproveo ideju da se podaci prilikom popisa za-

    pisuju na mainski itljivom medijumu (na buenim karticama), a da se kasnije

    obrauju njegovom mainom. Koristei ovaj pristup obrada rezultata popisa

    uspeno je zavrena za godinu dana. Od Holeritove male kompanije kasnije je

    nastala uvena kompanija IBM.

    Godine 1941, Konrad Cuze

    13

    konstruisao je 22-bitnu mainu raunanje Z3

    koji je imao izvesne mogunosti programiranja (podrane su bile petlje, ali

    ne i uslovni skokovi), te se esto smatra i prvim realizovanim programabilnim

    raunarom

    14

    . Cuzeove maine tokom Drugog svetskog rata naile su samo na

    ograniene primene. Cuzeova kompanija proizvela je oko 250 razliitih tipova

    raunara do kraja ezdesetih godina, kada je postala deo kompanije Simens

    (nem. Siemens).

    U okviru saradnje kompanije IBM i univerziteta Harvard, tim Hauarda

    Aikena

    15

    zavrio je 1944. godine mainu Harvard Mark I . Ova maina itala je

    instrukcije sa buene papirne trake, imala je preko 760000 delova, duinu 17m,

    visinu 2.4m i masu 4.5t. Mark I mogao je da pohrani u memoriji (korienjem

    elektromehanikih prekidaa) 72 broja od po 23 dekadne cifre. Sabiranje i

    oduzimanje dva broja trajalo je treinu, mnoenje est, a deljenje petnaest

    sekundi.

    Elektronski raunari. Elektronski raunari koriste se od kraja 1930-ih do

    danas.

    Jedan od prvih elektronskih raunara ABC (specijalne namene reavanje

    13

    Konrad Zuse (19101995), nemaki inenjer.

    14

    Maini Z3 prethodile su jednostavnije maine Z1 i Z2, izgraeni 1938. i 1940. godine.

    15

    Howard Hathaway Aiken (19001973).

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    15 1. Raunarstvo i raunarski sistemi

    Slika 1.3: Holeritova maina. Harvard Mark I. ENIAC (proces reprogrami-

    ranja).

    sistema linearnih jednaina) napravili su 1939. godine Atanasov

    16

    i Beri

    17

    .

    Maina je prva koristila binarni brojevni sistem i elektrine kondenzatore (engl.

    capacitor) za skladitenje bitova sistem koji se u svojim savremenim vari-

    jantama koristi i danas u okviru tzv. DRAM memorije. Maina nije bila pro-

    gramabilna.

    Krajem Drugog svetskog rada, u Engleskoj, u Bleli parku (engl. Bletch-

    ley Park) u kojem je radio i Alan Tjuring

    18

    , konstruisan je raunar Kolos

    (engl. Colossus) namenjen deifrovanju nemakih poruka. Raunar je omoguio

    razbijanje nemake ifre zasnovane na maini Enigma, zahvaljujui emu su

    saveznici bili u stanju da prate komunikaciju nemake podmornike flote, to

    je znaajno uticalo na ishod Drugog svetskog rata.

    U periodu izmeu 1943. i 1946. godine od strane amerike vojske i tima

    univerziteta u Pensilvaniji koji su predvodili Don Mokli

    19

    i Dej Ekert

    20

    kon-

    struisan je prvi elektronski raunar opte namene ENIAC (Electronic Nu-

    merical Integrator and Calculator). Imao je 1700 vakuumskih cevi, duinu

    30m i masu 30t. Raunske operacije izvravao je hiljadu puta bre od elek-

    tromehanikih maina. Osnovna svrha bila mu je jedna specijalna namena

    raunanje trajektorije projektila. Bilo je mogue da se maina preprogramira i

    za druge zadatke ali to je zahtevalo intervencije na preklopnicima i kablovima

    koje su mogle da traju danima.

    16

    John Vincent Atanasoff (19031995).

    17

    Clifford Edward Berry (19181963).

    18

    Alan Turing (19121954), britanski matematiar.

    19

    John William Mauchly (19071980).

    20

    J. Presper Eckert (19191995).

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    16 1. Raunarstvo i raunarski sistemi

    1.2 Raunari fon Nojmanove arhitekture

    Rane maine za raunanje nisu bile programabilne ve su radile po un-

    apred fiksiranom programu, odreenom samom konstrukcijom maine. Takva

    arhitektura se i danas koristi kod nekih jednostavnih maina, na primer, kod

    kalkulatora (digitrona). Da bi izvravali nove zadatke, rani elektronski rau-

    nari nisu programirani u dananjem smislu te rei, ve su sutinski redizajni-

    rani. Tako su, na primer, operaterima bile potrebne nedelje da bi prespojili

    kablove u okviru kompleksnog sistema ENIAC i tako ga instruisali da izvrava

    novi zadatak.

    Potpuna konceptualna promena dola je kasnih 1940-ih, sa pojavom rauna-

    ra koji programe na osnovu kojih rade uvaju u memoriji zajedno sa podacima

    raunara sa skladitenim programima (engl. stored program computers). U

    okviru ovih raunara, postoji jasna podela na hardver i softver. Iako ideje

    za ovaj koncept datiraju jo od arlsa Bebida i njegove analitike maine i

    nastavljaju se kroz radove Tjuringa, Cuzea, Ekerta, Moklija, za rodonaelnika

    ovakve arhitekture raunara smatra se Don fon Nojman

    21

    . Fon Nojman se u

    ulozi konsultanta prikljuio timu Ekerta i Moulija i 1945. godine je u svom

    izvetaju EDVAC (Electronic Discrete Variable Automatic Computer) opisao

    arhitekturu koja se i danas koristi u najveem broju savremenih raunara i u

    kojoj se programi mogu uitavati isto kao i podaci koji se obrauju. Rau-

    nar EDVAC, naslednik raunara ENIAC, koristio je binarni zapis brojeva, u

    memoriju je mogao da upie hiljadu 44-bitnih podataka i bio je jedan od prvih

    raunara koji su mogli da uitaju programe u memoriju. Iako je dizajn rau-

    nara EDVAC bio prvi opis fon Nojmanove arhitekture, pre 1951. godine - kada

    je EDVAC puten u rad, ve je nekoliko raunara sline arhitekture bilo kon-

    struisano i funkcionalno njega (Mark 1 i EDSAC - 1949. godine i MESM u

    tadanjem SSSR, 1950. godine).

    Osnovni elementi fon Nojmanove arhitekture raunara su procesor (koji

    ine aritmetiko-logika jedinica, kontrolna jedinica i registri) i glavna memo-

    rija, koji su meusobno povezani. Ostale komponente raunara (npr. ulazno-

    izlazne jedinice, spoljanje memorije, . . . ) smatraju se pomonim i povezuju

    se na centralni deo raunara koji ine procesor i glavna memorija. Sva obrada

    podataka vri se u procesoru. U memoriju se skladite podaci koji se obrauju,

    ali i programi, predstavljeni nizom elementarnih instrukcija (kojima se proce-

    soru zadaje koju akciju ili operaciju da izvri). I podaci i programi se zapisuju

    obino kao binarni sadraj i nema nikakve sutinske razlike izmeu zapisa pro-

    grama i zapisa podataka. Tokom rada, podaci i programi se prenose izmeu

    procesora i memorije. S obzirom na to da i skoro svi dananji raunari imaju

    fon Nojmanovu arhitekturu, nain funkcionisanja ovakvih raunara bie opisan

    detaljnije u poglavlju o savremenim raunarskim sistemima.

    Moderni programabilni raunari se, po pitanju tehnologije koju su koristili,

    mogu grupisati u etiri generacije, sve zasnovane na fon Nojmanovoj arhitek-

    21

    John Von Neumann (19031957), ameriki matematiar.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    17 1. Raunarstvo i raunarski sistemi

    turi.

    Slika 1.4: Osnovni gradivni elementi korieni u etiri generacije raunara:

    vakuumska cev, tranzistor, integrisano kolo i mikroprocesor

    I generacija raunara (od kraja 1930-ih do kraja 1950-ih) koristila je vaku-

    umske cevi kao logika kola i magnetne doboe (a delom i magnetne trake) za

    memoriju. Za programiranje su korieni mainski jezik i asembler a glavne

    primene su bile vojne i naune. Raunari su uglavnom bili unikatni (tj. za

    veinu nije postojala serijska proizvodnja). Prvi realizovani raunari fon No-

    jmanove arhitekture bili su Manesterska Beba (engl. Manchester Baby)

    eksperimentalna maina, razvijena 1949. na Univerzitetu u Manesteru, na

    kojoj je testirana tehnologija vakuumskih cevi i njen naslednik Manesterski

    Mark 1 (engl. Manchester Mark 1) , EDSAC razvijen 1949. na Univerzitetu

    u Kembridu, MESM razvijen 1950. na Kijevskom elektrotehnikom institutu

    i EDVAC koji je prvi dizajniran, ali napravljen tek 1951. na Univerzitetu u

    Pensilvaniji. Tvorci raunara EDVAC, poeli su 1951. godine proizvodnju pr-

    vog komercijalnog raunara UNIVAC UNIVersal Automatic Computer koji

    je prodat u, za to doba neverovatnih, 46 primeraka.

    II generacija raunara (od kraja 1950-ih do polovine 1960-ih) koristila je

    tranzistore umesto vakuumskih cevi. Iako je tranzistor otkriven jo 1947. go-

    dine, tek sredinom pedesetih poinje da se koristi umesto vakuumskih cevi kao

    osnovna elektronska komponenta u okviru raunara. Tranzistori su izgraeni

    od tzv. poluprovodnikih elemenata (obino silicijuma ili germanijuma). U

    poreenju sa vakuumskih cevima, tranzistori su manji, zahtevaju manje en-

    ergije te se manje i greju. Tranzistori su unapredili ne samo procesore i mem-

    oriju ve i spoljanje ureaje. Poeli su da se iroko koriste magnetni diskovi

    i trake, zapoelo je umreavanja raunara i ak korienje raunara u zabavne

    svrhe (implementirana je prva raunarska igra Spacewar za raunar PDP-1 ).

    U ovo vreme razvijeni su i prvi jezici vieg nivoa (FORTRAN, LISP, ALGOL,

    COBOL). U to vreme kompanija IBM dominirala je tritem samo raunar

    IBM 1401, prodat u vie od deset hiljada primeraka, pokrivao je oko treinu

    tada postojeeg trita.

    III generacija raunara (od polovine 1960-ih do sredine 1970-ih) bila je za-

    snovana na integrisanim kolima smetenim na silicijumskim (mikro)ipovima.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    18 1. Raunarstvo i raunarski sistemi

    Prvi raunar koji je koristio ovu tehnologiju bio je IBM 360, napravljen 1964. go-

    dine.

    Slika 1.5: Integrisana kola dovela su do minijaturizacije i kompleksni iani

    spojevi su mogli biti realizovani na izuzetno maloj povrini.

    Nova tehnologija omoguila je poslovnu primenu raunara u mnogim oblas-

    tima. U ovoj eri dominirali su mejnfrejm (engl. mainframe)mejnfrejm raunari

    raunari koji su bili izrazito moni za to doba, ija se brzina merila milionima

    instrukcija u sekundi (engl. MIPS; na primer, neki podmodeli raunara IBM

    360 imali su brzinu od skoro 1 MIPS) i koji su imali mogunost skladitenja i

    obrade velike koliine podataka te su korieni od strane vlada i velikih korpo-

    racija za popise, statistike obrade i slino. Kod raunara ove generacije uve-

    den je sistem deljenja vremena (engl. timesharing) koji dragoceno procesorsko

    vreme raspodeljuje i daje na uslugu razliitim korisnicima koji istovremeno

    rade na raunaru i komuniciraju sa njim putem specijalizovanih terminala. U

    ovo vreme uvedeni su prvi standardi za jezike vieg nivoa (npr. ANSI FOR-

    TRAN). Korieni su razliiti operativni sistemi, uglavnom razvijeni u okviru

    kompanije IBM. Sa udelom od 90%, kompanija IBM je imala apsolutnu domi-

    naciju na tritu ovih raunara.

    Pored mejnfrejm raunara, u ovom periodu iroko su korieni i mini rau-

    nari (engl. minicomputers) koji se mogu smatrati prvim oblikom linih (person-

    alnih) raunara. Procesor je, uglavnom, bio na raspolaganju iskljuivo jednom

    korisniku. Obino su bili veliine ormana i retko su ih posedovali pojedinci

    (te se ne smatraju kunim raunarima). Tritem ovih raunara dominirala je

    kompanija DEC Digital Equipment Corporation sa svojim serijama raunara

    poput PDP-8 i VAX. Za ove raunare, obino se vezuje operativni sistem Unix

    i programski jezik C razvijeni u Belovim laboratorijama (engl. Bell Laborato-

    ries), a esto i hakerska

    22

    kultura nastala na univerzitetu MIT (engl. Mas-

    sachusetts Institute of Technology).

    IV generacija raunara (od ranih 1970-ih) zasnovana je na visoko inte-

    grisanim kolima kod kojih je na hiljade kola smeeno na jedan silikonski ip.

    22

    Termin haker se obino koristi za osobe koje neovlaeno pristupaju raunarskim sis-

    temima, ali hakeraj kao programerska podkultura podrazumeva anti-autoritaran pristup

    razvoju softvera, obino povezan sa pokretom za slobodan softver. U oba sluaja, hakeri

    su pojedinici koji na inovativan nain modifikuju postojee hardverske i softverske sisteme.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    19 1. Raunarstvo i raunarski sistemi

    Slika 1.6: Mejnfrejm raunar: IBM 7094. Mini raunar: DEC PDP 7

    U kompaniji Intel 1971. godine napravljen je prvi mikroprocesor Intel 4004

    celokupna centralna procesorska jedinica bila je smetena na jednom ipu. Iako

    prvobitno namenjena za ugradnju u kalkulatore, ova tehnologija omoguila je

    razvoj brzih a malih raunara pogodnih za linu tj. kunu upotrebu.

    asopis Popular electronics nudio je 1975. godine itaocima mogunost

    naruivanja delova za sklapanje mikroraunara MITS Altair 8800 zasnovanog

    na mikroprocesoru Intel 8080 (nasledniku mikroprocesora Intel 4004 ). In-

    teresovanje meu onima koji su se elektronikom bavili iz hobija bio je izuzetno

    pozitivan i samo u prvom mesecu prodato je nekoliko hiljada ovih uradi-sm

    raunara. Smatra se da je Altair 8800 bio inicijalna kapisla za revoluciju

    mikroraunara koja je usledila narednih godina. Altair se vezuje i za nas-

    tanak kompanijeMicrosoft danas jedne od dominantnih kompanija u oblasti

    proizvodnje softvera. Naime, prvi proizvod kompanije Microsoft bio je inter-

    pretator za programski jezik BASIC za Altair 8800.

    Nakon Altaira pojavljuje se jo nekoliko raunarskih kompleta na skla-

    panje. Prvi mikroraunar koji je prodavan ve sklopljen bio je Apple, na ijim

    temeljima je nastala istoimena kompanija, danas jedan od lidera na tritu

    raunarske opreme.

    Kuni raunari koristili su se sve vie uglavnom od strane entuzijasta

    za jednostavnije obrade podataka, uenje programiranja i igranje rau-

    narskih igara. Kompanija Commodore je 1977. godine predstavila svoj rau-

    narom Commodore PET koji je zabeleio veliki uspeh. Commodore 64, jedan

    od najuspenijih raunara za kunu upotrebu, pojavio se 1982. godine. Iz

    iste kompanije je i serija Amiga raunara sa kraja 1980-ih i poetka 1990-ih.

    Pored kompanije Commodore, znaajni proizvoai raunara toga doba bili su

    i Sinclair (sa veoma popularnim modelom ZX Spectrum), Atari, Amstrad, itd.

    Kuni raunari ove ere bili su obino jeftini, imali su skromne karakteristike i

    najee koristili kasetofone i televizijske ekrane kao ulazno-izlazne ureaje.

    Najznaajnija raunarska kompanija toga doba IBM ukljuila se na

    trite kunih raunara 1981. godine, modelom IBM PC 5150, poznatijem jed-

    nostavno kao IBM PC ili PC (engl. Personal computer). Zasnovan na In-

    telovom mikroprocesoru Intel 8088, ovaj raunar veoma brzo je zauzeo trite

    raunara za linu poslovnu upotrebu (obrada teksta, tabelarna izraunavanja,

    . . . ). Pratei veliki uspeh IBM PC raunara, pojavio se odreen broj klonova

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    20 1. Raunarstvo i raunarski sistemi

    Slika 1.7: Prvi mikroprocesor: Intel 4004. Naslovna strana asopisa Popular

    electronics sa Altair 8800. Commodore 64. IBM PC 5150.

    raunara koji nisu proizvedeni u okviru kompanije IBM, ali koji su kompat-

    ibilni sa IBM PC raunarima. PC arhitektura vremenom je postala standard

    za kune raunare. Sredinom 1980-ih, pojavom naprednijih grafikih (VGA) i

    zvunih (SoundBlaster) kartica, IBM PC i njegovi klonovi stekli su mogunost

    naprednih multimedijalnih aplikacija i vremenom su sa trita istisli sve ostale

    proizvoae. I naslednici originalnog IBM PC raunara (IBM PC/XT, IBM

    PC/AT, . . . ) bili su zasnovani na Intelovim mikroprocesorima, pre svega na

    x86 seriji (Intel 80286, 80386, 80486) i zatim na seriji Intel Pentium. Opera-

    tivni sistem koji se tradicionalno vezuju uz PC raunare dolaze iz kompanije

    Microsoft prvo MS DOS, a zatim MS Windows. PC arhitektura podrava i

    korienje drugih operativnih sistema (na primer, GNU/Linux).

    Jedini veliki konkurent IBM PC arhitekturi koji se sve vreme odrao na

    tritu (pre svega u SAD) je serija raunara Macintosh kompanije Apple. Mac-

    intosh, koji se pojavio 1984., je prvi komercijalni kuni raunar sa grafikim

    korisnikim interfejsom i miem. Operativni sistem koji se i danas koristi na

    Apple raunarima je Mac OS.

    Iako su prva povezivanja udaljenih raunara izvrena jo krajem 1960-ih

    godina, pojavom interneta (engl. internet) i veba (engl. World Wide Web

    WWW), veina raunara postaje meusobno povezana sredinom 1990-ih god-

    ina. Danas se veliki obim poslovanja izvrava u internet okruenju, a domen

    korienja raunara je veoma irok. Dolo je do svojevrsne informatike revolu-

    cije koja je promenila savremeno drutvo i svakodnevni ivot. Na primer, tokom

    prve decenije XXI veka dolo je do pojave drutvenih mrea (engl. social net-

    works) koje postepeno preuzimaju ulogu osnovnog medijuma za komunikaciju.

    Tritem dananjih raunara dominiraju raunari zasnovani na PC arhitek-

    turi i Apple Mac raunari. Pored stonih (engl. desktop) raunara popularni

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    21 1. Raunarstvo i raunarski sistemi

    Slika 1.8: Stoni raunar. Prenosni raunar: IBM ThinkPad. Tablet: Apple

    Ipad 2. Pametni telefon: Samsung Galaxy S2.

    su i prenosni (engl. notebook ili laptop) raunari. U najnovije vreme, javlja

    se trend tehnoloke konvergencije koja podrazumeva stapanje razliitih ure-

    aja u jedinstvene celine, kao to su tableti (engl. tablet) i pametni telefoni

    (engl. smartphone). Operativni sistemi koji se danas uglavnom koriste na ovim

    ureajima su IOS kompanije Apple, kao i Android kompanije Google.

    Pored linih raunara u IV generaciji se i dalje koriste mejnfrejm raunari

    (na primer, IBM Z serija) i superraunari (zasnovani na hiljadama procesora).

    Na primer, kineski superraunar Tianhe-2 radi brzinom od preko 30 petaflopsa

    (dok proseni lini raunar radi brzinom reda 10 gigaflopsa).

    23

    1.3 Oblasti savremenog raunarstva

    Savremeno raunarstvo ima mnogo podoblasti, kako praktinih, tako i teori-

    jskih. Zbog njihove isprepletenosti nije jednostavno sve te oblasti sistematizo-

    vati i klasifikovati. U nastavku je dat spisak nekih od oblasti savremenog

    raunarstva (u skladu sa klasifikacijom amerike asocijacije ACM Associa-

    tion for Computing Machinery, jedne od najveih i najuticajnijih raunarskih

    zajednica):

    Algoritmika (procesi izraunavanja i njihova sloenost); Strukture podataka (reprezentovanje i obrada podataka);23

    Flops je mera raunarskih performansi, posebno pogodna za izraunavanja nad broje-

    vima u pokretnom zarezu (i pogodnija nego generika mera koja se odnosi na broj instrukcija

    u sekundi). Broj flopsa govori koliko operacija nad brojevima u pokretnom zarezu moe da

    izvri raunar u jednoj sekundi. Brzina dananjih raunara se obino izraava u gigaflopsima

    (109 flopsa), teraflopsima (1012 flopsa) i petaflopsima (1015 flopsa).

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    22 1. Raunarstvo i raunarski sistemi

    Programski jezici (dizajn i analiza svojstava formalnih jezika za opisivanjealgoritama);

    Programiranje (proces zapisivanja algoritama u nekom programskom je-ziku);

    Softversko inenjerstvo (proces dizajniranja, razvoja i testiranja pro-grama);

    Prevoenje programskih jezika (efikasno prevoenje viih programskihjezika, obino na mainski jezik);

    Operativni sistemi (sistemi za upravljanje raunarom i programima); Mreno raunarstvo (algoritmi i protokoli za komunikaciju izmeu rau-nara);

    Primene (dizajn i razvoj softvera za svakodnevnu upotrebu); Istraivanje podataka (pronalaenje relevantnih informacija u velikim sku-povima podataka);

    Vetaka inteligencija (reavanje problema u kojima se javlja kombina-torna eksplozija);

    Robotika (algoritmi za kontrolu ponaanja robota); Raunarska grafika (analiza i sinteza slika i animacija); Kriptografija (algoritmi za zatitu privatnosti podataka); Teorijsko raunarstvo (teorijske osnove izraunavanja, raunarska matem-atika, verifikacija softvera, itd).

    1.4 Hardver savremenih raunara

    Hardver ine opipljive, fizike komponente raunara. Iako je u osnovi savre-

    menih raunarskih sistema i dalje fon Nojmanova maina (procesor i memo-

    rija), oni se danas ne mogu zamisliti bez niza hardverskih komponenti koje

    olakavaju rad sa raunarom.

    Iako na prvi pogled deluje da se jedan uobiajeni stoni raunar sastoji od

    kuita, monitora, tastature i mia, ova podela je veoma povrna, podlona

    promenama (ve kod prenosnih raunara, stvari izgledaju znatno drugaije) i

    nikako ne ilustruje koncepte bitne za funkcionisanje raunara. Mnogo znaa-

    jnija je podela na osnovu koje raunar ine:

    procesor tj. centralna procesorska jedinica (engl. Central Processing Unit,CPU), koja obrauje podatke;

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    23 1. Raunarstvo i raunarski sistemi

    glavna memorija (engl. main memory), u kojoj se istovremeno uvaju ipodaci koji se obrauju i trenutno pokrenuti programi (takoe zapisani

    binarno, u obliku podataka);

    razliiti periferijski ureaji ili ulazno-izlazne jedinice (engl. peripherals,input-output devices, IO devices), kao to su mievi, tastature, ekrani,

    tampai, diskovi, a koje slue za komunikaciju korisnika sa sistemom i

    za trajno skladitenje podataka i programa.

    Sve nabrojane komponente meusobno su povezane i podaci se tokom rada

    raunara prenose od jedne do druge. Veza izmeu komponenti uspostavlja se

    hardverskim sklopovima koji se nazivaju magistrale (engl. bus). Magistrala

    obuhvata provodnike koji povezuju ureaje, ali i ipove koji kontroliu protok

    podataka. Svi periferijski ureaji se sa memorijom, procesorom i magistralama

    povezuju hardverskim sklopovima koji se nazivaju kontroleri . Matina ploa

    (engl. motherboard) je tampana ploa na koju se prikljuuju procesor, mem-

    orijski ipovi i svi periferijski ureaji. Na njoj se nalaze ipovi magistrale, a

    danas i mnogi kontroleri periferijskih ureaja. Osnovu hardvera savremenih

    raunara, dakle, ine sledee komponente:

    Procesori. Procesor je jedna od dve centralne komponente svakog rau-

    narskog sistema fon Nojmanove arhitekture. Svi delovi procesora su danas

    objedinjeni u zasebnu jedinicu (CPU) realizovanu na pojedinanom ipu

    mikroprocesoru. Procesor se sastoji od kontrolne jedinice (engl. Control Unit)

    koja upravlja njegovim radom i aritmetiko-logike jedinice (engl. Arithmetic

    Logic Unit) koja je zaduena za izvoenje aritmetikih operacija (sabiranje,

    oduzimanje, mnoenje, poreenje, . . . ) i logikih operacija (konjunkcija, ne-

    gacija, . . . ) nad brojevima. Procesor sadri i odreeni, manji broj, registara

    koji privremeno mogu da uvaju podatke. Registri su obino fiksirane irine

    (8 bitova, 16 bitova, 32 bita, 64 bita). Komunikacija sa memorijom se ranije

    vrila iskljuivo preko specijalizovanog registra koji se nazivao akumulator. Ar-

    itmetiko logika jedinica sprovodi operacije nad podacima koji su smeteni u

    registrima i rezultate ponovo smeta u registre. Kontrolna jedinica procesora

    ita instrukciju po instrukciju programa zapisanog u memoriji i na osnovu njih

    odreuje sledeu akciju sistema (na primer, izvri prenos podataka iz proce-

    sora na odreenu memorijsku adresu, izvri odreenu aritmetiku operaciju

    nad sadrajem u registrima procesora, uporedi sadraje dva registra i ukoliko

    su jednaki izvri instrukciju koja se nalazi na zadatoj memorijskoj adresi i

    slino). Brzina procesora meri se u milionima operacija u sekundi (engl. Mil-

    lion Instructions Per Second, MIPS) tj. poto su operacije u pokretnom zarezu

    najzahtevnije, u broju operacija u pokretnom zarezu u sekundi (engl. FLoat-

    ing Point Operations per Second, FLOPS). Dananji standardni procesori rade

    oko 10 GFLOPS (deset milijardi operacija u pokretnom zarezu po sekundi).

    Dananji procesori mogu da imaju i nekoliko jezgara (engl. core) koja istovre-

    meno izvravaju instrukcije i time omoguuju tzv. paralelno izvravanje.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    24 1. Raunarstvo i raunarski sistemi

    CPU

    Kontrolna

    jedinica

    Aritmetiko

    logika jedinica

    registri

    Memorija

    Ulazni

    ureaji

    Izlazni

    ureaji

    magistrala

    Slika 1.9: Shema raunara fon Nojmanove arhitekture

    Vane karakteristike procesora danas su broj jezgara (obino 1, 2 ili 4),

    irina rei (obino 32 bita ili 64 bita) i radni takt (obino nekoliko gigaherca

    (GHz)) vei radni takt obino omoguava izvravanje veeg broja operacija

    u jedinici vremena.

    Memorijska hijerarhija. Druga centralna komponenta fon Nojmanove arhi-

    tekture je glavna memorija u koju se skladite podaci i programi. Memorija je

    linearno ureeni niz registara (najee bajtova), pri emu svaki registar ima

    svoju adresu. Kako se kod ove memorije sadraju moe pristupati u sluajnom

    redosledu (bez unapred fiksiranog redosleda), ova memorija se esto naziva

    i memorija sa slobodnim pristupom (engl. random access memory, RAM).

    Osnovni parametri memorija su kapacitet (danas obino meren gigabajtima

    (GB)), vreme pristupa koje izraava vreme potrebno da se memorija pripremi

    za itanje odnosno upis podataka (danas obino mereno u nanosekundama

    (ns)), kao i protok koji izraava koliinu podataka koji se prenose po jedinici

    merenja (danas obino mereno u GBps).

    U savremenim raunarskim sistemima, uz glavnu memoriju uspostavlja se

    itava hijerarhija memorija koje slue da unaprede funkcionisanje sistema.

    Memorije neposredno vezane za procesor koje se koriste iskljuivo dok je rau-

    nar ukljuen nazivaju se unutranje memorije, dok se memorije koje se ko-

    riste za skladitenje podataka u trenucima kada raunar nije ukljuen nazivaju

    spoljne memorije. Procesor obino nema naina da direktno koristi podatke

    koji se nalaze u spoljnim memorijama (jer su one znatno sporije od unutran-

    jih), ve se pre upotrebe svi podaci prebacuju iz spoljnih u unutranju memo-

    riju.

    Memorijska hijerarhija predstavlja se piramidom. Od njenog vrha ka dnu

    opadaju kvalitet i brzina memorija, ali zato se smanjuje i cena, pa se kapacitet

    poveava.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    25 1. Raunarstvo i raunarski sistemi

    CPU

    registri

    Ke memorija

    RAM

    ROM/BIOS

    USB diskovi

    hard diskovi

    CD, DVD, Blu-ray, magnetne trake

    niacena/veikapacitet

    veaveliina/manjabrzina

    viacena/manjikapacitet

    manjaveliina/veabrzina

    podnapajanjembeznapajanja

    Slika 1.10: Memorijska hijerarhija

    Registri procesora predstavljaju najbru memoriju jer se sve aritmetike i

    logike operacije izvode upravo nad podacima koji se nalaze u njima.

    Ke (engl. cache) je mala koliina brze memorije (nekoliko hiljada puta

    manjeg kapaciteta od glavne memorije; obino nekoliko megabajta) koja se

    postavlja izmeu procesora i glavne memorije u cilju ubrzanja rada raunara.

    Ke se uvodi jer su savremeni procesori postali znatno bri od glavnih mem-

    orija. Pre pristupa glavnoj memoriji procesor uvek prvo pristupa keu. Ako

    traeni podatak tamo postoji, u pitanju je tzv. pogodak kea (engl. cache hit) i

    podatak se dostavlja procesoru. Ako se podatak ne nalazi u keu, u pitanju je

    tzv. promaaj kea (engl. cache miss) i podatake se iz glavne memorije prenosi

    u ke zajedno sa odreenim brojem podataka koji za njim slede (glavni fak-

    tor brzine glavne memorije je njeno kanjenje i praktino je svejedno da li se

    prenosi jedan ili vie podataka jer je vreme prenosa malog broja bajtova mnogo

    manje od vremena kanjenja). Motivacija ovog pristupa je u tome to programi

    esto pravilno pristupaju podacima (obino redom kojim su podaci smeteni u

    memoriji), pa je velika verovatnoa da e se naredni traeni podaci i instrukcije

    nai u ke-memoriji.

    Glavna memorija uva sve podatke i programe koje procesor izvrava. Mali

    deo glavne memorije ini ROM (engl. read only memory) nepromenljiva mem-

    orija koja sadri osnovne programe koji slue za kontrolu odreenih kompone-

    nata raunara (na primer, osnovni ulazno-izlazni sistem BIOS). Znatno vei

    deo glavne memorije ini RAM privremena promenljiva memorija sa slobod-

    nim pristupom. Terminoloki, podela glavne memorije na ROM i RAM nije

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    26 1. Raunarstvo i raunarski sistemi

    najpogodnija jer ove vrste memorije nisu sutinski razliite nepromenljivi

    deo (ROM) je takoe memorija sa slobodnim pristupom (RAM). Da bi RAM

    memorija bila to bra, izrauje se uvek od poluprovodnikih (elektronskih)

    elemenata. Danas se uglavnom realizuje kao sinhrona dinamika memorija

    (SDRAM). To znai da se prenos podataka izmeu procesora i memorije vri

    u intervalima odreenim otkucajima sistemskog sata (esto se u jednom otku-

    caju izvri nekoliko prenosa). Dinamika memorija je znatno jeftinija i jednos-

    tavnija, ali zato sporija od statike memorije od koje se obino gradi ke.

    Spoljne memorije uvaju podatke trajno, i kada raunar ostane bez elek-

    trinog napajanja. Kao centralna spoljna skladita podataka uglavnom se ko-

    riste hard diskovi (engl. hard disk) koji uvaju podatke korienjem magnetne

    tehnologije, a u novije vreme se sve vie koriste i SSD ureaji (engl. solid state

    drive) koji uvaju podatke korienjem elektronskih tzv. fle memorija (engl.

    flash memory). Kao prenosne spoljne memorije koriste se uglavnom USB fle-

    memorije (izraene u slinoj tehnologiji kao i SSD) i optiki diskovi (CD, DVD,

    Blu-ray).

    Ulazni ureaji. Osnovni ulazni ureaji dananjih raunara su tastature i

    mievi. Prenosni raunari imaju ugraenu tastaturu, a umesto mia moe se

    koristiti tzv. taped (engl. touchpad). Tastature i mievi se sa raunarom

    povezuju ili kablom (preko PS/2 ili USB prikljuaka) ili beino (najee ko-

    rienjem BlueTooth veze). Ovo su uglavnom standardizovani ureaji i nema

    velikih razlika meu njima. Skeneri sliku sa papira prenose u raunar. Princip

    rada je slian digitalnom fotografisanju, ali prilagoen slikanju papira.

    Izlazni ureaji. Osnovni izlazni ureaji savremenih raunara su monitori.

    Danas dominiraju monitori tankog i ravnog ekrana (engl. flat panel display),

    zasnovani obino na tehnologiji tenih kristala (engl. liquid crystal display,

    LCD) koji su osvetljeni pozadinskim LED osvetljenjem. Ipak, jo uvek su

    ponegde u upotrebi i monitori sa katodnom cevi (engl. cathode ray tube, CRT).

    Grafiki kontroleri koji slue za kontrolu slike koja se prikazuje na monitoru

    ili projektoru danas su obino integrisani na matinoj ploi, a ponekad su i na

    istom ipu sa samim procesorom (engl. Accelerated Processing Unit, APU).

    to se tehnologije tampe tie, danas su najzastupljeniji laserski tampai

    i inkdet tampai (engl. inkjet). Laserski tampai su ee crno-beli, dok su

    ink-det tampai obino u boji. Sve su dostupniji i 3D tampai.

    1.5 Softver savremenih raunara

    Softver ine raunarski programi i pratei podaci koji odreuju izrauna-

    vanja koje vri raunar. Na prvim raunarima moglo je da se programira

    samo na mainski zavisnim programskim jezicima na jezicima specifinim

    za konkretnu mainu na kojoj program treba da se izvrava. Polovinom 1950-

    ih nastali su prvi jezici vieg nivoa i oni su drastino olakali programiranje.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    27 1. Raunarstvo i raunarski sistemi

    Danas se programi obino piu u viim programskim jezicima a zatim prevode

    na mainski jezik jezik razumljiv raunaru. Bez obzira na to kako je nastao,

    da bi mogao da se izvri na raunaru, program mora da budu smeten u mem-

    oriju u obliku binarno zapisanih podataka (tj. u obliku niza nula i jedinica)

    koji opisuju instrukcije koje su neposredno podrane arhitekturom raunara.

    U ovom poglavlju bie prikazani osnovni principa rada raunara kroz nekoliko

    jednostavnih primera programa.

    1.5.1 Primeri opisa izraunavanja

    Program specifikuje koje operacije treba izvriti da bi se reio neki zadatak.

    Principi rada programa mogu se ilustrovati na primeru nekoliko jednostavnih

    izraunavanja i instrukcija koje ih opisuju. Ovi opisi izraunavanja dati su u

    vidu prirodno-jezikog opisa ali direktno odgovaraju i programima na viim

    programskim jezicima.

    Kao prvi primer, razmotrimo izraunavanje vrednosti 2+ 3 za datu vred-nost . U programiranju (slino kao i u matematici) podaci se predstavljajupromenljivama. Meutim, promenljive u programiranju (za razliku od matem-

    atike) vremenom mogu da menjaju svoju vrednost (tada kaemo da im se

    dodeljuje nova vrednost). U programiranju, svakoj promenljivoj pridrueno je

    (jedno, fiksirano) mesto u memoriji i tokom izvravanja programa promenljiva

    moe da menja svoju vrednost, tj. sadraj dodeljenog memorijskog prostora.

    Ako je promenljiva ija je vrednost ulazni parametar oznaena sa , a promen-ljiva ija je vrednost rezultat izraunavanja oznaena sa , onda se pomenutoizraunavanje moe opisati sledeim jednostavnim opisom.

    y := 2*x + 3

    Simbol * oznaava mnoenje, + sabiranje, a := oznaava da se promenljivoj

    sa njene leve strane dodeljuje vrednost izraza sa desne strane.

    Kao naredni primer, razmotrimo odreivanje veeg od dva data broja. Ra-

    unari (tj. njihovi procesori) obino imaju instrukcije za poreenje brojeva, ali

    odreivanje vrednosti veeg broja zahteva nekoliko koraka. Pretpostavimo da

    promenljive i sadre dve brojevne vrednosti, a da promenljiva treba dadobije vrednost vee od njih. Ovo izraunavanje moe da se izrazi sledeim

    opisom.

    ako je x >= y onda

    m := x

    inae

    m := y

    Kao malo komplikovaniji primer razmotrimo stepenovanje. Procesori skoro

    uvek podravaju instrukcije kojima se izraunava zbir i proizvod dva cela broja,

    ali stepenovanje obino nije podrano kao elementarna operacija. Sloenije

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    28 1. Raunarstvo i raunarski sistemi

    operacije se mogu ostvariti korienjem jednostavnijih. Na primer, -ti ste-pen broja (tj. vrednost ) mogue je izraunati uzastopnom primenommnoenja: ako se krene od broja 1 i puta sa pomnoi brojem , rezultate biti . Da bi moglo da se osigura da e mnoenje biti izvreno tano puta, koristi se brojaka promenljiva koja na poetku dobija vrednost 0, azatim se, prilikom svakog mnoenja, uveava sve dok ne dostigne vrednost .Ovaj postupak moemo predstaviti sledeim opisom.

    s := 1, i := 0

    dok je i < n radi sledee:

    s := sx, i := i+1

    Kada se ovaj postupak primeni na vrednosti = 3 i = 2, izvodi se naredniniz koraka.

    s := 1, i := 0, poto je i(=0) manje od

    n(=2), vre se dalje ope-

    racije

    s := sx = 13 = 3, i := i+1 = 0+1 = 1, poto je i(=1) manje odn(=2), vre se dalje ope-

    racije

    s := sx = 33 = 9, i := i+1 = 1+1 = 2, poto i(=2) nije manje odn(=2), ne vre se dalje

    operacije.

    1.5.2 Mainski programi

    Mainski programi su neposredno vezani za procesor raunara na kojem se

    koriste procesor je konstruisan tako da moe da izvrava odreene elemen-

    tarne naredbe. Ipak, razvoj najveeg broja procesora usmeren je tako da se

    isti mainski programi mogu koristiti na itavim familijama procesora.

    Primitivne instrukcije koje podrava procesor su veoma malobrojne i jed-

    nostavne (na primer, postoje samo instrukcije za sabiranje dva broja, kon-

    junkcija bitova, instrukcija skoka i slino) i nije lako kompleksne i apstraktne

    algoritme izraziti korienjem tog uskog skupa elementarnih instrukcija. Ipak,

    svi zadaci koje raunari izvravaju svode se na ove primitivne instrukcije.

    Asemblerski jezici. Asemblerski (ili simboliki) jezici su jezici koji su veoma

    bliski mainskom jeziku raunara, ali se, umesto korienja binarnog sadraja

    za zapisivanje instrukcija koriste (mnemotehnike, lako pamtljive) simbolike

    oznake instrukcija (tj. programi se unose kao tekst). Ovim se, tehniki, olakava

    unos programa i programiranje (programer ne mora da direktno manipulie bi-

    narnim sadrajem), pri emu su sve mane mainski zavisnog programiranja i

    dalje prisutne. Kako bi ovako napisan program mogao da se izvrava, neop-

    hodno je izvriti njegovo prevoenje na mainski jezik (tj. zapisati instrukcije

    binarnom azbukom) i uneti na odgovarajue mesto u memoriji. Ovo prevoenje

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    29 1. Raunarstvo i raunarski sistemi

    je jednostavno i jednoznano i vre ga jeziki procesori koji se nazivaju asem-

    bleri .

    Sva izraunavanja u primerima iz poglavlja 1.5.1 su opisana neformalno,

    kao uputstva oveku a ne raunaru. Da bi se ovako opisana izraunavanja

    mogla sprovesti na nekom raunaru fon Nojmanove arhitekture neophodno je

    opisati ih preciznije. Svaka elementarna operacija koju procesor moe da izvri

    u okviru programa zadaje se procesorskom instrukcijom svaka instrukcija

    instruie procesor da izvri odreenu operaciju. Svaki procesor podrava un-

    apred fiksiran, konaan skup instrukcija (engl. instruction set). Svaki program

    raunara predstavljen je nizom instrukcija i skladiti se u memoriji raunara.

    Naravno, raunari se razlikuju (na primer, po tome koliko registara u proce-

    soru imaju, koje instrukcije moe da izvri njihova aritmetiko-logika jedinica,

    koliko memorije postoji na raunaru, itd). Meutim, da bi se objasnili osnovni

    principi rada raunara nije neophodno razmatrati neki konkretan raunar, ve

    se moe razmatrati neki hipotetiki raunar. Pretpostavimo da procesor sadri

    tri registra oznaena sa ax, bx i cx i jo nekoliko izdvojenih bitova (tzv. zas-

    tavica). Dalje, pretpostavimo da procesor moe da izvrava naredne aritmetike

    instrukcije (zapisane ovde u asemblerskom obliku):

    Instrukcija add ax, bx oznaava operaciju sabiranja vrednosti brojevakoji se nalaze u registrima ax i bx, pri emu se rezultat sabiranja smeta

    u registar ax. Operacija add moe se primeniti na bilo koja dva registra.

    Instrukcija mul ax, bx oznaava operaciju mnoenja vrednosti brojevakoji se nalaze u registrima ax i bx, pri emu se rezultat mnoenja smeta

    u registar ax. Operacija mul moe se primeniti na bilo koja dva registra.

    Instrukcija cmp ax, bx oznaava operaciju poreenja vrednosti brojevakoji se nalaze u registrima ax i bx i rezultat pamti postavljanjem zastavice

    u procesoru. Operacija cmp se moe primeniti na bilo koja dva registra.

    Program raunara je niz instrukcija koje se obino izvravaju redom, jedna

    za drugom. Meutim, poto se javlja potreba da se neke instrukcije ponove vei

    broj puta ili da se odreene instrukcije preskoe, uvode se instrukcije skoka.

    Da bi se moglo specifikovati na koju instrukciju se vri skok, uvode se labele

    oznaena mesta u programu. Pretpostavimo da na procesor moe da izvrava

    sledee dve vrste skokova (bezuslovne i uslovne):

    Instrukcija jmp label, gde je label neka labela u programu, oznaavabezuslovni skok koji uzrokuje nastavak izvravanja programa od mesta u

    programu oznaenog navedenom labelom.

    Uslovni skokovi prouzrokuju nastavak izvravanja programa od instruk-cije oznaene navedenom labelom, ali samo ako je neki uslov ispunjen.

    Ukoliko uslov nije ispunjen, izvrava se naredna instrukcija. U nas-

    tavku e se razmatrati samo instrukcija jge label, koja uzrokuje uslovni

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    30 1. Raunarstvo i raunarski sistemi

    skok na mesto oznaeno labelom label ukoliko je vrednost prethodnog

    poreenja brojeva bila vee ili jednako.

    Tokom izvravanja programa, podaci se nalaze u memoriji i u registrima

    procesora. S obzirom na to da procesor sve operacije moe da izvri iskljuivo

    nad podacima koji se nalaze u njegovim registrima, svaki procesor podrava

    i instrukcije prenosa podataka izmeu memorije i registara procesora (kao i

    izmeu samih registara). Pretpostavimo da na procesor podrava sledeu

    instrukciju ove vrste.

    Instrukcija mov oznaava operaciju prenosa podataka i ima dva parame-tra prvi odreuje gde se podaci prenose, a drugi koji odreuje koji

    se podaci prenose. Parametar moe biti ime registra (to oznaava da

    se pristupa podacima u odreenom registru), broj u zagradama (to oz-

    naava da se pristupa podacima u memoriji i to na adresi odreenoj

    brojem u zagradama) ili samo broj (to oznaava da je podatak ba taj

    navedeni broj). Na primer, instrukcija mov ax bx oznaava da se sadraj

    registra bx prepisuje u registar ax, instrukcija mov ax, [10] oznaava da

    se sadraj iz memorije sa adrese 10 prepisuje u registar ax, instrukcija

    mov ax, 1 oznaava da se u registar ax upisuje vrednost 1, dok instruk-

    cija oznaava mov [10], ax da se sadraj registra ax upisuje u memoriju

    na adresu 10.

    Sa ovakvim procesorom na raspolaganju, izraunavanje vrednosti 2 + 3moe se ostvariti na sledei nain. Pretpostavimo da se ulazni podatak (broj

    ) nalazi u glavnoj memoriji i to na adresi 10, a da rezultat treba smestiti naadresu 11 (ovo su sasvim proizvoljno odabrane adrese). Izraunavanje se onda

    moe opisati sledeim programom (nizom instrukcija).

    mov ax, [10]

    mov bx, 2

    mul ax, bx

    mov bx, 3

    add ax, bx

    mov [11], ax

    Instrukcija mov ax, [10] prepisuje vrednost promenljive (iz memorije saadrese 10) u registar ax. Instrukcija mov bx, 2 upisuje vrednost 2 u registar

    bx. Nakon instrukcije mul ax, bx vri se mnoenje i registar ax sadri vrednost

    2. Instrukcija mov bx, 3 upisuje vrednost 3 u registar bx, nakon instrukcijeadd ax, bx se vri sabiranje i u registru ax se nalazi traena vrednost 2+ 3.Na kraju se ta vrednost instrukcijom mov [11], ax upisuje u memoriju na

    adresu 11.

    Odreivanje veeg od dva broja moe se ostvariti na sledei nain. Pret-

    postavimo da se ulazni podaci nalaze u glavnoj memoriji i to broj na adresi

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    31 1. Raunarstvo i raunarski sistemi

    10, broj na adresi 11, dok rezultat treba smestiti na adresu 12. Program(niz instrukcija) kojima moe da se odredi maksimum je sledei:

    mov ax, [10]

    mov bx, [11]

    cmp ax, bx

    jge vecix

    mov [12], bx

    jmp kraj

    vecix:

    mov[12], ax

    kraj:

    Nakon prenosa vrednosti oba broja u registre procesora (instrukcijama mov

    ax, [10] i mov bx, [11]), vri se njihovo poreenje (instrukcija cmp ax, bx).

    Ukoliko je broj vei od ili jednak broju prelazi se na mesto oznaeno labe-lom vecix (instrukcijom jge vecix) i na mesto rezultata upisuje se vrednost

    promenljive (instrukcijom mov[12], ax). Ukoliko uslov skoka jge nije is-punjen (ako nije vee ili jednako ), na mesto rezultata upisuje se vrednostpromenljive (instrukcijom mov [12], bx) i bezuslovno se skae na kraj pro-grama (instrukcijom jmp kraj) (da bi se preskoilo izvravanje instrukcije koja

    na mesto rezultata upisuje vrednost promenljive ).Izraunavanje stepena moe se ostvariti na sledei nain. Pretpostavimo da

    se ulazni podaci nalaze u glavnoj memoriji i to broj na adresi 10, a broj na adresi 11, i da konaan rezultat treba da bude smeten u memoriju i to na

    adresu 12. Pretpostavimo da e pomone promenljive i koje se koriste upostupku biti smetene sve vreme u procesoru, i to promenljiva u registruax, a promenljiva u registru bx. Poto postoji jo samo jedan registar (cx), unjega e naizmenino biti smetane vrednosti promenljivih i , kao i konstanta1 koja se sabira sa promenljivom . Niz instrukcija kojim opisani hipotetikiraunar moe da izrauna stepen je sledei:

    mov ax, 1

    mov bx, 0

    petlja:

    mov cx, [11]

    cmp bx, cx

    jge kraj

    mov cx, [10]

    mul ax, cx

    mov cx, 1

    add bx, cx

    jmp petlja

    kraj:

    mov [12], ax

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    32 1. Raunarstvo i raunarski sistemi

    Ilustrujmo izvravanje ovog programa na izraunavanju vrednosti 32. Inici-jalna konfiguracija je takva da se na adresi 10 u memoriji nalazi vrednost = 3,na adresi 11 vrednost = 2. Poetna konfiguracija (tj. vrednosti memorijskihlokacija i registara) moe da se predstavi na sledei nain:

    10: 3 ax: ?

    11: 2 bx: ?

    12: ? cx: ?

    Nakon izvravanja prve dve instrukcije (mov ax, 1 i mov bx, 0), postavlja

    se vrednost registara ax i bx i prelazi se u sledeu konfiguraciju:

    10: 3 ax: 1

    11: 2 bx: 0

    12: ? cx: ?

    Sledea instrukcija (mov cx, [11]) kopira vrednost 2 sa adrese 11 u regis-

    tar cx:

    10: 3 ax: 1

    11: 2 bx: 0

    12: ? cx: 2

    Vri se poreenje sa registrom bx (cmp bx, cx) i kako uslov skoka (jge kraj)

    nije ispunjen (vrednost 0 u bx nije vea ili jednaka od vrednosti 2 u cx), nas-

    tavlja se dalje. Nakon kopiranja vrednosti 3 sa adrese 10 u registar cx (in-

    strukcijom mov cx, [10]), vri se mnoenje vrednosti u registrima ax i cx

    (instrukcijom mul ax, cx) i dolazi se u sledeu konfiguraciju:

    10: 3 ax: 3

    11: 2 bx: 0

    12: ? cx: 3

    Nakon toga, u cx se upisuje 1 (instrukcijom mov cx, 1) i vri se sabiranje

    vrednosti registara bx i cx (instrukcijom add bx, cx) ime se vrednost u reg-

    istru bx uveava za 1.

    10: 3 ax: 3

    11: 2 bx: 1

    12: ? cx: 1

    Bezuslovni skok (jmp petlja) ponovo vraa kontrolu na poetak petlje,

    nakon ega se u cx opet prepisuje vrednost 2 sa adrese 11 (mov cx, [11]).

    Vri se poreenje sa registrom bx (cmp bx, cx) i kako uslov skoka (jge kraj)

    nije ispunjen (vrednost 1 u bx nije vea ili jednaka vrednosti 2 u cx), nastavlja

    se dalje. Nakon jo jednog mnoenja i sabiranja dolazi se do konfiguracije:

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    33 1. Raunarstvo i raunarski sistemi

    10: 3 ax: 9

    11: 2 bx: 2

    12: ? cx: 1

    Bezuslovni skok ponovo vraa kontrolu na poetak petlje, nakon ega se

    u cx opet prepisuje vrednost 2 sa adrese 11. Vri se poreenje sa registrom

    bx, no, ovaj put je uslov skoka ispunjen (vrednost 2 u bx je vea ili jednaka

    vrednosti 2 u cx) i skae se na mesto oznaeno labelom kraj, gde se posled-

    njom instrukcijom (mov [12], ax) konana vrednost iz registra ax kopira u

    memoriju na dogovorenu adresu 12, ime se stie u zavrnu konfiguraciju:

    10: 3 ax: 9

    11: 2 bx: 2

    12: 9 cx: 1

    Mainski jezik. Fon Nojmanova arhitektura podrazumeva da se i sam pro-

    gram (niz instrukcija) nalazi u glavnoj memoriji prilikom njegovog izvravanja.

    Potrebno je svaki program (poput tri navedena) predstaviti nizom nula i je-

    dinica, na nain razumljiv procesoru na mainskim jeziku. Na primer,

    mogue je da su binarni kdovi za instrukcije uvedeni na sledei nain:

    mov 001

    add 010

    mul 011

    cmp 100

    jge 101

    jmp 110

    Takoe, poto neke instrukcije primaju podatke razliite vrste (neposredno

    navedeni brojevi, registri, apsolutne memorijske adrese), uvedeni su posebni

    kdovi za svaki od razliitih vidova adresiranja. Na primer:

    neposredno 00

    registarsko 01

    apsolutno 10

    Pretpostavimo da registar ax ima oznaku 00, registar bx ima oznaku 01, a

    registar cx oznaku 10. Pretpostavimo i da su sve adrese osmobitne. Pod nave-

    denim pretpostavkama, instrukcija mov [10], ax se, u ovom hipotetikom

    mainskom jeziku, moe kodirati kao 001 10 01 00010000 00. Kd 001 dolazi

    od instrukcije mov, zatim slede 10 i 01 koji ukazuju da prvi argument pred-

    stavlja memorijsku adresu, a drugi oznaku registra, za im sledi memorijska

    adresa (10)16 binarno kodirana sa 00010000 i na kraju oznaka 00 registra ax.Na slian nain, celokupan prikazani mainski kd navedenog asemblerskog

    programa koji izraunava 2+ 3 je mogue binarno kodirati kao:

    001 01 10 00 00010000 // mov ax, [10]

    001 01 00 01 00000010 // mov bx, 2

    011 00 01 // mul ax, bx

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    34 1. Raunarstvo i raunarski sistemi

    001 01 00 01 00000011 // mov bx, 3

    010 00 01 // add ax, bx

    001 10 01 00010001 00 // mov [11], ax

    Izmeu prikazanog asemblerskog i mainskog programa postoji veoma direk-

    tna i jednoznana korespondencija (u oba smera) tj. na osnovu datog mainskog

    kda mogue je jednoznano rekonstruisati asemblerski kd.

    Specifini hardver koji ini kontrolnu jedinicu procesora dekodira jednu po

    jednu instrukciju i izvrava akciju zadatu tom instrukcijom. Kod realnih proce-

    sora, broj instrukcija i naini adresiranja su mnogo bogatiji a prilikom pisanja

    programa potrebno je uzeti u obzir mnoge aspekte na koje se u navedenim

    jednostavnim primerima nije obraala panja. Ipak, mainske i asemblerske

    instrukcije stvarnih procesora veoma su sline navedenim hipotetikim instruk-

    cijama.

    1.5.3 Klasifikacija savremenog softvera

    Raunarski programi veoma su sloeni. Hardver raunara sainjen je od

    elektronskih kola koja mogu da izvre samo elementarne operacije i, da bi rau-

    nar mogao da obavi i najjednostavniji zadatak zanimljiv korisniku, neophodno

    je da se taj zadatak razloi na mnotvo elementarnih operacija. Napredak

    raunara ne bi bio mogu ako bi programeri morali svaki program da opisuju

    i razlau do krajnjeg nivoa elementarnih instrukcija. Zato je poeljno da pro-

    grameri naredbe raunaru mogu zadavati na to apstraktnijem nivou. Rau-

    narski sistemi i softver se grade slojevito i svaki naredni sloj oslanja se na

    funkcionalnost koju mu nudi sloj ispod njega. U skladu sa tim, softver savre-

    menih raunara se obino deli na aplikativni i sistemski . Osnovni zadatak

    sistemskog softvera je da posreduje izmeu hardvera i aplikativnog softvera

    koji krajnji korisnici koriste. Granica izmeu sistemskog i aplikativnog soft-

    vera nije kruta i postoje programi za koje se moe smatrati da pripadaju obema

    grupama (na primer, editori teksta).

    Aplikativni softver. Aplikativni softver je softver koji krajnji korisnici rau-

    nara direktno koriste u svojim svakodnevnim aktivnostima. To su pre svega

    pregledai Veba, zatim klijenti elektronske pote, kancelarijski softver (pro-

    grami za kucanje teksta, izradu slajd-prezentacija, tabelarna izraunavanja),

    video igre, multimedijalni softver (programi za reprodukciju i obradu slika,

    zvuka i video-sadraja) itd.

    Sistemski softver. je softver ija je uloga da kontrolie hardver i prua

    usluge aplikativnom softveru. Najznaajniji skup sistemskog softvera, danas

    prisutan na skoro svim raunarima, ini operativni sistem (OS). Pored OS,

    sistemski softver sainjavaju i razliiti usluni programi : editori teksta, alat za

    programiranje (prevodioci, dibageri, profajleri, integrisana okruenja) i slino.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    35 1. Raunarstvo i raunarski sistemi

    Korisnici OS esto identifikuju sa izgledom ekrana tj. sa programom koji

    koriste da bi pokrenuli svoje aplikacije i organizovali dokumente. Meutim,

    ovaj deo sistema koji se naziva korisniki interfejs (engl. user interface UI)

    ili koljka (engl. shell) samo je tanak sloj na vrhu operativnog sistema i OS je

    mnogo vie od onoga to krajnji korisnici vide. Najvei i najznaajni deo OS

    naziva se jezgro (engl. kernel). Osim to kontrolie i apstrahuje hardver, op-

    erativni sistem tj. njegovo jezgro sinhronizuje rad vie programa, rasporeuje

    procesorsko vreme i memoriju, brine o sistemu datoteka na spoljanjim mem-

    orijama itd. Najznaanjni operativni sistemi danas su Microsoft Windows,

    sistemi zasnovani na Linux jezgru (na primer, Ubuntu, RedHat, Fedora, Suse)

    i Mac OS X.

    OS upravlja svim resursima raunara (procesorom, memorijom, periferi-

    jskim ureajima) i stavlja ih na raspolaganje aplikativnim programima. OS je

    u veoma tesnoj vezi sa hardverom raunara i veliki deo zadataka se izrvrava uz

    direktnu podrku specijalizovanog hardvera namenjenog iskljuivo izvravanju

    OS. Nekada se hardver i operativni sistem smatraju jedinstvenom celinom i

    umesto podele na hardver i softver razmatra se podela na sistem (hardver i

    OS) i na aplikativni softver.

    Programer ne bi trebalo da misli o konkretnim detaljima hardvera, tj. po-

    eljno je da postoji odreena apstrakcija hardvera. Na primer, mnogo je pogod-

    nije ako programer umesto da mora da kae Neka se zavrti ploa diska, neka

    se glava pozicionira na odreenu poziciju, neka se zatim tu upie odreeni bajt

    itd. moe da kae Neka se u datu datoteku na disku upie odreeni tekst.

    OS je taj koji se brine o svim detaljima, dok se programer (tanije, aplikacije

    koje on isprogramira), kada god mu je potrebno obraa sistemu da mu tu

    uslugu prui. Konkretni detalji hardvera poznati su u okviru operativnog sis-

    tema i komande koje programer zadaje izvravaju se uzimajui u obzir ove

    specifinosti. Operativni sistem, dakle, programeru prua skup funkcija koje

    on moe da koristi da bi postigao eljenu funkcionalnost hardvera, sakrivajui

    pritom konkretne hardverske detalje. Ovaj skup funkcija naziva se program-

    ski interfejs za pisanje aplikacija

    24

    (engl. Aplication Programming Interface,

    API ). Funkcije se nazivaju i sistemski pozivi (jer se OS poziva da izvri odreeni

    zadatak). Programer nema mogunost direktnog pristupa hardveru i jedini

    nain da se pristupi hardveru je preko sistemskih poziva. Ovim se osigurava

    odreena bezbednost celog sistema.

    Postoji vie nivoa na kojima se moe realizovati neka funkcionalnost. Pro-

    gramer aplikacije je na vrhu hijerarhije i on moe da koristi funkcionalnost

    koju mu prua programski jezik koji koristi i biblioteke tog jezika. Izvrni

    programi esto koriste funkcionalnost specijalne rantajm biblioteke (engl. run-

    time library) koja koristi funkcionalnost operativnog sistema (preko sistemskih

    poziva), a zatim operativni sistem koristi funkcionalnost samog hardvera.

    24

    Ovaj termin se ne koristi samo u okviru operativnih sistema, ve i u irem kontekstu,

    da oznai skup funkcija kroz koji jedan programski sistem koristi drugi programski sistem.

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    36 1. Raunarstvo i raunarski sistemi

    Pitanja za vebu

    Pitanje 1.1. Nabrojati osnovne periode u razvoju raunara i navesti njihove

    osnovne karakteristike i predstavnike.

    Pitanje 1.2. Ko je i u kom veku konstruisao prvu mehaniku spravu na kojoj

    je bilo mogue sabirati prirodne brojeve, a ko je i u kom veku konstruisao prvu

    mehaniku spravu na kojoj je bilo mogue sabirati i mnoiti prirodne brojeve?

    Pitanje 1.3. Kojoj spravi koja se koristi u dananjem svetu najvie odgovaraju

    Paskalove i Lajbnicove sprave?

    Pitanje 1.4. Kakva je veza izmeu tkakih razboja i raunara s poetka XIX

    veka?

    Pitanje 1.5. Koji je znaaj arlsa Bebida za razvoj raunarstva i programi-

    ranja? U kom veku je on dizajnirao svoje raunske maine? Kako se one

    zovu i koja od njih je trebalo da bude programabilna? Ko se smatra prvim

    programerom?

    Pitanje 1.6. Na koji nain je Herman Holerit doprineo izvravanju popisa

    stanovnika u SAD 1890? Kako su bili uvani podaci sa tog popisa? Koja

    uvena kompanija je nastala iz kompanije koju je Holerit osnovao?

    Pitanje 1.7. Kada su nastali prvi elektronski raunari? Nabrojati nekoliko

    najznaajnijih.

    Pitanje 1.8. Na koji nain je programiran raunar ENIAC, a na koji raunar

    EDVAC?

    Pitanje 1.9. Koje su osnovne komponente raunara fon Nojmanove arhitek-

    ture? ta se skladiti u memoriju raunara fon Nojmanove arhitekture? Gde se

    vri obrada podataka u okviru raunara fon Nojmanove arhitekture? Od kada

    su raunari zasnovani na fon Nojmanovoj arhitekturi?

    Pitanje 1.10. ta su to raunari sa skladitenim programom? ta je to hard-

    ver a ta softver?

    Pitanje 1.11. ta su procesorske instrukcije? Navesti nekoliko primera.

    Pitanje 1.12. Koji su uobiajeni delovi procesora? Da li se u okviru samog

    procesora nalazi odreena koliina memorije za smetanje podataka? Kako se

    ona naziva?

    Pitanje 1.13. Ukratko opisati osnovne elektronske komponente svake gen-

    eracije raunara savremenih elektronskih raunara? ta su bile osnovne elek-

    tronske komponente prve generacije elektronskih raunara? Od koje generacije

    raunara se koriste mikroprocesori? Koji tipovi raunara se koriste u okviru

    III generacije?

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    37 1. Raunarstvo i raunarski sistemi

    Pitanje 1.14. U kojoj deceniji dolazi do pojave raunara za kunu upotrebu?

    Koji je najprodavaniji model kompanije Commodore? Da li je IBM proizvo-

    dio raunare za kunu upotrebu? Koji komercijalni kuni raunar prvi uvodi

    grafiki korisniki interfejs i mia?

    Pitanje 1.15. Koja serija Intelovih procesora je bila dominantna u PC rau-

    narima 1980-ih i 1990-ih godina?

    Pitanje 1.16. ta je to tehnoloka konvergencija? ta su to tableti, a ta

    pametni telefoni?

    Pitanje 1.17. Koje su osnovne komponente savremenog raunara? ta je

    memorijska hijerarhija? Zato se uvodi ke-memorija? Koje su danas najko-

    rienije spoljne memorije?

    Pitanje 1.18. U koju grupu jezika spadaju mainski jezici i asemblerski jezici?

    Pitanje 1.19. Da li je kd na nekom mainskom jeziku prenosiv sa jednog na

    sve druge raunare? Da li asembler zavisi od maine na kojoj se koristi?

    Pitanje 1.20. Ukoliko je raspoloiv asemblerski kd nekog programa, da li

    je mogue jednoznano konstruisati odgovarajui mainski kd? Ukoliko je

    raspoloiv mainski kd nekog programa, da li je mogue jednoznano konstru-

    isati odgovarajui asemblerski kd?

    Zadatak 1.1. Na opisanom asemblerskom jeziku opisati izraunavanje vred-

    nosti izraza x := x*y + y + 3. Generisati i mainski kd za napisani pro-

    gram.

    Zadatak 1.2. Na opisanom asemblerskom jeziku opisati izraunavanje:

    ako je (x < 0)

    y := 3*x;

    inace

    x := 3*y;

    Zadatak 1.3. Na opisanom asemblerskom jeziku opisati izraunavanje:

    dok je (x

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    Glava 2

    Reprezentacija podataka u

    raunarima

    Dananji raunari su digitalni . To znai da su svi podaci koji su u njima

    zapisani, zapisani kao nizovi celih brojeva. Dekadni brojevni sistem koji ljudi

    koriste u svakodnevnom ivotu nije pogodan za zapis brojeva u raunarima jer

    zahteva azbuku od 10 razliitih simbola (cifara). Bilo da se radi o elektronskim,

    magnetnim ili optikim komponentama, tehnologija izrade raunara i medijuma

    za zapis podataka koristi elemente koji imaju dva diskretna stanja, to za

    zapis podataka daje azbuku od samo dva razliita simbola. Tako, na primer,

    ukoliko izmeu dve take postoji napon vii od odreenog praga, onda se smatra

    da tom paru taaka odgovara vrednost 1, a inae mu odgovara vrednost 0.Takoe, polje hard diska moe biti ili namagnetisano to odgovara vrednosti 1ili razmagnetisano to odgovara vrednosti 0. Slino, laserski zrak na povrinikompakt diska bui rupice kojim je odreen zapis podataka pa polje koje

    nije izbueno predstavlja vrednost 0, a ono koje jeste izbuesno predstavljavrednost 1. U nastavku e biti pokazano da je azbuka od samo dva simboladovoljna za zapisivanje svih vrsta brojeva, pa samim tim i za zapisivanje svih

    vrsta digitalnih podataka.

    2.1 Analogni i digitalni podaci i digitalni raunari

    Kontinualna priroda signala. Veina podataka koje raunari koriste nas-

    taje zapisivanjem prirodnih signala. Najznaajniji primeri signala su zvuk i

    slika, ali se pod signalima podrazumevaju i ultrazvuni signali, EKG signali,

    zraenja razliite vrste itd.

    Signali koji nas okruuju u prirodi u veini sluajeva se prirodno mogu pred-

    staviti neprekidnim funkcijama. Na primer, zvuni signal predstavlja promenu

    pritiska vazduha u zadatoj taki i to kao neprekidnu funkciju vremena. Slika se

    moe opisati intenzitetom svetlosti odreene boje (tj. odreene talasne duine)

    u datom vremenskom trenutku i to kao neprekidna funkcija prostora.

    38

  • El

    e

    k

    t

    r

    o

    n

    s

    k

    o

    i

    z

    d

    a

    n

    j

    e

    (

    2

    0

    1

    5

    )

    39 2. Reprezentacija podataka u raunarima

    Analogni zapis. Osnovna tehnika koja se primenjuje kod analognog zapisa

    signala je da se kontinualne promene signala koji se zapisuje opiu kontinualnim

    promenama odreenog svojstva medijuma na kojem se signal zapisuje. Tako,

    na primer, promene pritiska vazduha koji predstavlja zvuni signal direktno

    odgovaraju promenama nivoa namagnetisanja na magnetnoj traci na kojoj se

    zvuk analogno zapisuje. Koliina boje na papiru direktno odgovara intenzitetu

    svetlosti u vremenskom trenutku kada je fotografija bila snimljena. Dakle,

    analogni zapis uspostavlja analogiju izmeu signala koji je zapisan i odreenog

    svojstva medijuma na kome je signal zapisan.

    Osnovna prednost analogne tehnologije je da je ona obino veoma jednos-

    tavna ukoliko se zadovoljimo relativno niskim kvalitetom (jo su drevni narodi

    mogli da naprave nekakav zapis zvuka uz pomo jednostavne igle prikaene na

    trepereu membranu).

    Osnovni problem analogne tehnologije je to je izrazito teko na medijumu

    napraviti veran zapis signala koji se zapisuje i izrazito je teko napraviti dva

    identina zapisa istog signala. Takoe, problem predstavlja i inherentna nestal-

    nost medijuma, njegova promenljivost tokom vremena i podlonost spoljanjim

    uticajima. S obzirom na to da varijacije medijuma direktno dovode do vari-

    jacije zapisanog signala, vremenom neizbeno dolazi do pada kvaliteta analogno

    zapisanog signala. Obrada analogno zapisanih signala je obino veoma komp-

    likovana i za svaku vrstu obrade signala, potrebno je da postoji ureaj koji je

    specijalizovan za tu vrste obrade.

    Digitalni zapis. Osnovna tehnika koja se koristi kod digitalnog zapisa po-

    dataka je da se vrednost signala izmeri u odreenim vremenskim trenucima ili

    odreenim takama prostora i da se onda na medijumu zapiu izmerene vred-

    nosti. Ovim je svaki digitalno zapisani signal predstavljen nizom brojeva koji

    se nazivaju odbirci ili semplovi (engl. sample). Svaki od brojeva predstavlja

    vred