CS111 - Lesson 1 - Lecture Book
Proba različitih rešenja
Site: | Digitalna škola |
Course: | CS111 Objektno orijentisano programiranje |
Book: | CS111 - Lesson 1 - Lecture Book |
Printed by: | Korisnik u ulozi gosta |
Date: | Sunday, 1 September 2024, 8:33 AM |
Računar je sistem koji se sastoji iz više komponenti; čine ga hardverske i softverske komponente. Ako se prisećate nekog dobrog filma koji ste gledali, vi razmišljate o nečemu što je konceptualno. Film je nešto što se ne može opipati; ne možete ga uzeti i okačiti na zid ili prelomiti na pola; znači, on fizički ne postoji. Mogli biste da ga snimite na video traku – traka je fizička. Kada govorite o filmu, obično mislite na konceptualni film, a ne na traku na kojoj je on snimljen. Televizor koji koristite za gledanje filmova ima fizičku predstavu. Na njemu možete gledati tv program koji je opet konceptualan. Televizija znači kombinuje opipljive (televizijski aparat) i neopipljive predstave (tv program).
Računarski sistemi rade slično kao televizija. Oni kombinuju opipljive komponente koje nazivamo hardverom i konceptualne komponente, koje nazivamo softverom.
Hardverske komponente računarskog sistema su njegovi elektronski i mehanički delovi.
Softverske komponente sistema su podaci i programi koji postoje na tom računaru.
Osnovne hardverske komponente računarskog sistema su:
- procesor
- glavna memorija
- sekundarna memorija
- ulazni uređaji
- izlazni uređaji
Hardverske komponente
Termini ulaz i izlaz ukazuju na tok podataka u i iz sistema. Na sledećoj slici su prikazane osnovne hardverske komponente računarskog sistema. Strelice ukazuju na tok podataka.
Slika 1: Osnovne komponente računara
Magistrala predstavlja grupu žica na matičnoj ploči računara. Preko nje teku podaci između komponenti. Većina uređaja je sa magistralom povezana preko kontrolora koji koordinišu aktivnosti uređaja i magistrale.
Procesor je elektronski uređaj koji u sebi sadrži milione drugih elektronskih uređaja – tranzistora. Procesor je mozak računara. On obavlja osnovne računske operacije u sistemu direktno, ili indirektno kontroliše sve ostale komponente. Procesor se često naziva centralnom procesorskom jedinicom (CPU - Central Processor Unit). Konkretan računar ima konkretan tip procesora. Personalni računari na primer, najčešće koriste procesore tipa ’’Pentium’’.
Memorija
Procesor je mozak računara. Sve računske operacije se obavljaju u njemu. Druge komponente učestvuju u radu (na primer, prebacuju podatke u i iz procesora), ali je procesor mesto gde se obavljaju osnovne akcije.
Za razliku od ljudskog mozga koji kombinuje memoriju sa mogućnošću obrade, procesor računara ima veoma malo memorije. On se zbog toga mora osloniti na druge komponente koje će skladištiti podatke i programe, kao i rezultate njegovih izračunavanja. Kod računarskih sistema postoje dva osnovna tipa memorije:
Glavna memorija
- tesno povezana sa procesorom;
- sadržaj se brzo i lako menja;
- sadrži programe i podatke sa kojima procesor trenutno radi;
- interakcija sa procesorom se obavlja u milionitim delovima sekunde.
Sekundarna memorija
- sa glavnom memorijom povezana preko magistrale i kontrolora;
- sadržaj se lako menja, ali je to u poređenju sa glavnom memorijom, vrlo sporo;
- koristi se za dugotrajno skladištenje programa i podataka;
- sa ovom memorijom procesor komunicira samo povremeno.
Glavna memorija je mesto gde se podaci i programi nalaze kada ih procesor aktivno koristi. Kada programi i podaci postaju aktivni, oni se kopiraju iz sekundarne memorije u glavnu. Ta kopija ostaje u glavnoj memoriji. Ova memorija je blisko povezana sa procesorom, tako da je prebacivanje instrukcija iz programa i podataka do procesora vrlo brzo. Glavna memorija se često naziva RAM memorijom. To je skraćenica za Random Access Memory. "Random" (slučajno) znači da se memorijskim ćelijama može pristupiti bilo kojim redosledom.
Kada ljudi kažu da računar ima "256 megabajta RAM-a", oni govore o njegovoj glavnoj memoriji. U glavnoj memoriji se ništa ne čuva za stalno. Ponekad se podaci tu nalaze samo nekoliko sekundi, odnosno samo onoliko vremena koliko su bili potrebni.
Sekundarna memorija je mesto gde se podaci i programi trajno skladište. Najčešće se kao uređaji za skladištenje koriste diskovi i diskete. Razlog postojanja dve vrste memorije se može ustanoviti iz sledeće tabele koja daje uporedan pregled karakteristika glavne i sekundarne memorije.
Glavna memorija |
Sekundarna memorija |
Brza |
Spora |
Skupa |
Jeftina |
Mali kapacitet |
Veliki kapacitet |
Povezana direktno sa procesorom |
Nije povezana direktno sa procesorom |
Ulazni i izlazni uređaji
Ulazni i izlazni uređaji omogućavaju računaru da komunicira sa spoljašnjim svetom. Tom prilikom se podaci prenose u i iz sistema. Ulazni uređaj se koristi za unos podataka u sistem. Neki ulazni uređaji su na primer, tastatura, miš, mikrofon, čitač bar koda.
Izlazni uređaji se koriste za slanje podataka iz sistema. Neki izlazni uređaji su, na primer, monitor, štampač i sl.
Softver
Softver obuhvata programe i podatke koje računar koristi; nalazi se na nekom uređaju, na primer, na disku, ali je sam po sebi neopipljiv. Softver se sastoji od programa i podataka. Programi su lista instrukcija koje procesor treba da izvrši. Podaci mogu biti bilo koje informacije koje program koristi. To mogu biti brojčani podaci, tekst, zvučni ili neki drugi podaci. Razlika između programa i podataka nije baš tako jasna kako bismo možda zaključili.
I programi, i podaci se u memoriji računara predstavljaju na isti način. Elektronika memorije računara ne pravi razliku između programa i podataka. Upravo ta činjenica da se i programi, i podaci skladište na isti način, jedna je od najvažnijih ideja u računarskim naukama. Računarski sistemi svoju memoriju koriste za ono što potrebe nalažu.
Tipovi programa
Postoje dve kategorije programa: Aplikacioni programi (aplikacije) su programi koje ljudi koriste za obavljanje nekog konkretnog posla. Računari i postoje upravo zato što ljudi imaju potrebu da koriste takve programe. Sistemski programi omogućavaju da hardver i softver jednog računarskog sistema rade kako treba. U sledećoj tabeli su dati primeri jedne i druge vrste programa.
Aplikacioni programi |
Sistemski programi |
Programi za obradu teksta |
Operativni sistem |
Igre |
Sistem za kontrolu mreže |
Sistemi za upravljanje bazama podataka |
Program za izvršavanje nekog programskog jezika |
Pretraživači web-a |
|
Operativni sistemi
Najvažniji sistemski program je operativni sistem. Ovaj program je uvek prisutan kada računar radi. On koordinira rad svih hardverskih i softverskih komponenti sistema. Operativni sistem je odgovoran za pokretanje aplikacionih programa; za pronalaženje resursa koji su potrebni za rad tih programa. Tokom rada nekog aplikacionog programa operativni sistem rukuje detaljima vezanim za hardver koji su, tom prilikom - potrebni. Na primer, kada na tastaturi unesete neki karakter, operativni sistem određuje kojem programu je to namenjeno.
Savremeni operativni sistemi obično imaju grafički korisnički interfejs koji korisnicima omogućava da lako komuniciraju sa aplikacionim programima. Komunikacija se obično obavlja preko prozora, dugmadi, menija i tastature. Primeri operativnih sistema su ''Unix'', ''Windows'', ''Linux'', ''Solaris'' itd.
Operativni sistem je program. Isti hardver se može koristiti sa više operativnih sistema. Ponekad se operativni sistem može oštetiti; u tom slučaju ga morate ponovo instalirati. Sve dok operativni sistem ponovo ne bude u funkciji, ne možete koristiti druge programe na računaru.
Pokretanje programa
Šta se dešava kada korisnik pokrene neku aplikaciju? Pod pretpostavkom da je operativni sistem već pokrenut, dešava se sledeće:
1. Korisnik pokreće aplikaciju (klikom na ikonu, izborom iz menija ili na neki drugi način);
2. OS oodređuje ime aplikacije;
3. OS pronalazi deo na disku gde se nalazi taj aplikacioni program i negovi podaci;
4. OS pronalazi deo glavne memorije koji se ne koristi i koji je dovoljno velik za tu aplikaciju;
5. OS pravi kopiju aplikacije i njenih podataka i smešta to u glavnu memoriju;
6. Operativni sistem definiše resurse potrebne za rad te aplikacije;
7. OS pokreće aplikaciju.
Tokom rada aplikacije operativni sistem u pozadini rukuje resursima, obavlja ulazne i izlazne operacije i omogućava rad cele aplikacije.
Reč ''binarno'' znači "dva stanja". Ova dva stanja se nekad označavaju sa ''0 i 1''; ponekad sa ''tačno i netačno'' ili ''uključeno i isključeno''. Najvažnija karakteristika svakog binarnog uređaja je da on može imati dva stanja.
Bit je signal, odnosno najmanji element programa koji može imati samo dve vrednosti: 'uključeno/isključeno'' ili 1 ili 0.
Zamislite prekidač za svetlo. Taj prekidač možete samo uključiti ili isključiti. Prekidač znači nosi jedan bit informacija.
Prekidač sa postepenim podešavanjima nije binarni uređaj. On ima više položaja koji se nalaze između uključenog i isključenog.
Prekidač za paljenje nekog automobila je diskretan. On ima konačan broj stanja, ali je to obično više od dva stanja. Dugme na kalkulatoru je binarni uređaj. Ono može biti u stanju uključeno ili isključeno. Kada pritisnete dugme, ono je u stanju uključeno. Kada otpustite dugme, ono se vraća u stanje isključeno.
Zašto se koriste binarni signali? Neki od razloga su:
1. Jednostavni, laki za izradu
Prekidač za uključivanje i isključivanje se lako pravi. Takav prekidač spaja ili odvaja dva metalna dela.
Slika 2 Vrednosti bita: »ukljućeno« ili »isključeno«
Ako biste želeli da napravite prekidač koji bi postepeno menjao jačinu svetla, to bi bilo mnogo teže za rad, utoliko što bi takav prekidač morao da ima i više delova.
Isto važi i za silikonski čip. Prekidači sa samo dva stanja se relativno lako prave. To znači da su uređaji mali, jeftini i pouzdani, tako da se milioni njih mogu staviti na mali prostor.
2. Nedvosmisleni signali
Godine 1775., kada su se Amerikanci borili za nezavisnost, Pol Revere je čekao na vesti o tome da li Englezi dolaze kopnom ili morem. O tome je trebalo da izvesti Vrhovnu komandu. Signal je trebalo da dođe preko svetionika. Zamislite da je dogovoreno da signal bude sledeći:
1.32456, ako dolaze kopnom i 1.71922, ako dolaze morem.
Signal je došao, ali glasnik čeka nekoliko sati dok se precizno ne otkrije šta je javljeno, odnosno koliko je jak bio svetlosni signal. Dvosmislenost signala može biti veliki problem. Dogovoreni signal koji je čekao Pol Revere je bio: jedan signal za dolazak kopnom, a dva – za dolazak morem. Takav signal se lako interpretirao. On je trebalo samo da izbroji. Ovakvi signali su diskretni, pošto imaju fiksni broj konačnih stanja.
Analogni signal kontinuirano menja svoju vrednost. Ovakav signal može imati bilo koju vrednost u nekom opsegu. Ovo je ilustrovano na sledećoj slici:
Slika 3 Promena vrednosti kontinualnog signala – analogni dijagram
Ovo je zvučni signal. Vrednost u nekom trenutku morate čitati sa dijagrama.
Sa druge strane, ako posmatramo samo voltažu, možemo ovo iskazati i na sledeći način: Vrednosti ispod nekog praga se smatraju signalom 0, a vrednosti iznad – smatraju se signalom 1.
Analogni signali kontinuirano menjaju vrednost. Ako se uvede prag, analogni signali se mogu predstaviti kao binarni podaci. Ovo je lako i brzo, tako da elektronika, (a i ljudi) mogu lako da odrede da li je voltaža iznad ili ispod nekog praga. Na sledećoj slici je prikazan signal ovog tipa.
Slika 4 Digitaliziran dijagram iz analognog dijagrama na slici 3
3. Mogu se napraviti besprekorne kopije
Na kraju na kojem se prima signal - zainteresovani smo samo za binarne vrednosti. Sve što treba uraditi je da se proveri da li je signal iznad ili ispod praga. Ovo se može uraditi savršeno precizno.
Slika 5 Rekonstrukcija idealnog digitaliziranog dijagrama
Originalni signal je besprekorno rekonstruisan. Taj proces se može ponoviti onoliko puta koliko je potrebno, pri čemu se svaki put dobija savršena kopija. Za računarske sisteme ovo je vrlo bitno. Razlog je što se kod računara šabloni sa bit-ovima stalno prebacuju od procesora do memorije i obrnuto. Ovo se dešava i po milion puta u sekundi. Te kopije moraju biti savršene.
4. Binarnim signalom se može predstaviti bilo šta.
Sve što se može predstaviti nekim obrascem, može se predstaviti obrascem bit-ova.
Ideja je da se bilo koji sistem simbola može prevesti u obrazac sa bit-ovima. Pogledajmo na primer, kako se karakteri predstavljaju preko obrazaca od osam bit-ova. Sporazum o tome šta obrazac predstavlja se naziva ASCII. Hardver i softver računara prate ovaj sporazum kada su u pitanju tekstualni podaci. Drugi tipovi podataka se predstavljaju na drugi način.
Japanski i kineski karakteri se takođe prebacuju u obrasce bit-ova, a računari mogu da njima manipulišu podjednako lako kao da je reč o engleskim slovima. Tada se koristi sporazum nazvan UNICODE, koji karaktere predstavlja preko 16 bit-ova (ASCII to radi preko 8 bit-ova). Na primer, karakter je preko bit-ova predstavljen kao 111110011111110.
Ove karakteristike binarnih signala je prvi predstavio Klod Šanon. Njegov rad iz 1948. godine, pod naslovom ’’Matematička teorija komunikacija’’, predstavlja osnovu informatičkih teorija i računarskih nauka.
Bajt-ovi
Jedan bit informacija je toliko mali da se memorija računara obično organizuje u grupe od po osam bit-ova. Osam bit-ova čine jedan bajt. Kada je za neke podatke potrebno više od osam bitova koristi se ceo broj bajt-ova. Jedan bajt je otprilike dovoljno memorije za skladištenje jednog karaktera.
Za podatke je često potrebno imati na raspolaganju hiljade, milione ili milijarde bajtova. Veće jedinice od jednog bajta se izražavaju kao umnošci stepena broja 2.
Ime |
Broj bajtova |
Stepen broja 2 |
bajt |
1 |
20 |
kilobajt |
1024 |
210 |
megabajt |
1,048,576 |
220 |
gigabajt |
1,073,741,824 |
230 |
terabajt |
1,099,511,627,776 |
240 |
Glavna memorija se sastoji od dugačke liste bajtova. Kod većine modernih računara, svaki bajt ima adresu koja se koristi da bi se on pronašao. Na sledećoj slici je prikazan deo glavne memorije.
Slika 6 Glavna memorija sa adresama memorijskih lokacija
Svaki pravougaonik na ovoj slici predstavlja jedan bajt. Svaki bajt ima adresu. Adrese su, na ovoj slici, celi brojevi sa leve strane. Adrese na većini računara počinju od 0 i rastu naviše sve dok svaki bajt ne dobije adresu.
Adresa nekog bajta nije deo njegovog sadržaja. Kada je procesoru potrebno da pristupi određenom bajtu, računar zna kako da u memoriji pronađe taj bajt.
Procesor može da čita ili piše nove bajtove na određenoj memorijskoj lokaciji. U istom trenutku može da čita ili piše veći broj bajtova. Ako se kaže da je neki procesor 64-bitni, to znači da on u istom trenutku može da piše ili čita 64/8=8 bajtova.
Programi i memorija
Tokom rada procesor stalno upisuje nove podatke i čita postojeće. Program tokom rada ima deo memorije koji koristi. Ako program, na primer, sabira brojeve, onda će se i suma naći u glavnoj memoriji (verovatno će se upotrebiti nekoliko bajtova). Kako se sumi budu dodavali novi brojevi, suma će se menjati, a samim tim se menja i glavna memorija.
Drugi delovi glavne memorije se možda neće menjati; na primer, instrukcije koje čine program se obično ne menjaju tokom rada programa. Instrukcije se takođe nalaze u glavnoj memoriji, ali se ove lokacije ne menjaju.
Kada u nekom programskom jeziku pišete program, niste Vi taj koji brine o memorijskim lokacijama i njihovom sadržaju. O tome automatski brine programski jezik (Java, C) u kojem je program pisan. Cilj programskog jezika višeg nivoa, kao što je Java, upravo je da male elektronske operacije organizuje u veće jedinice predstavljene iskazima programskog jezika.
Mašinske instrukcije
Korisnici i programeri obično ne razmišljaju o milionima elektronskih operacija koje se dešavaju svake sekunde. Situacija je slična sa vožnjom automobila. Tokom vožnje razmišljate o velikim operacijama, kao što su - ubrzati, skrenuti levo i sl. Ne razmišljate o delovima automobila i o tome kako oni funkcionišu.
Jedna elektronska operacija koju procesor izvodi se naziva mašinskom operacijom. Procesor u jednom trenutku obavlja jednu operaciju, ali u jednoj sekundi izvodi milione takvih operacija.
Mašinska instrukcija se sastoji od nekoliko bajtova u memoriji koji procesoru govore da obavi jednu mašinsku operaciju. Procesor pronalazi mašinske instrukcije u glavnoj memoriji i izvršava ih sekvencijalno. Skup mašinskih instrukcija u glavnoj memoriji računara naziva se izvršnim programom.
Program pisan u mašinskom jeziku predstavlja niz mašinskih instrukcija koje se nalaze u glavnoj memoriji računara. Jedan program sadrži milione mašinskih instrukcija.