# Kompjuterska memorija

*Za ostale upotrebe, pogledajte Memorija (razvrstavanje).*
U računarstvu, memorija se odnosi na fizičke uređaje koji se koriste za skladištenje programa (nizovi instrukza informaciju u fizičkim sistemima koji rade na visokim brzinama (npr. RAM), kao razlika od sekundarne memorije, koji su fizički uređaji za skladištenje programa i podataka koji imaju sporiji pristup, ali imaju veći memorijski kapacitet. Primarna memorija uskladištena na sekundarnoj memoriji se zove „virtuelna memorija“.

Termin „memorija“, sa značenjem primarna memorija je često povezana sa adresabilnom poluprovodničkom memorijom, tačnije integrisanim kolima koji se sastoje iz tranzistora na bazi silikona. Oni se koriste kao primarna memorija, ali imaju i druge svrhe u računarima i drugim elektronskim uređajima. Postoje dve glavne vrste poluprovodničke memorije: postojane i nepostojane. Primeri postojane memorije su fleš memorija (nekad se koristi kao sekundarna a nekad kao primarna računarska memorija) i ROM/PROM/EPROM/EEPROM memorija (koristi se za firmver, npr. za pokretače operativnih sistema). Primer za nepostojane memorije su primarne memorije (uglavnom DRAM), i brza CPJ keš memorija (uglavnom statički RAM odnosno SRAM, koji je brz ali koristi puno energije i ima manji memorijski kapacitet po jedinici površine od DRAM memorije.

Većina poluprovodničke memorije je organizovana u memorijske ćelije ili bistabilne flip-flopove, od kojih svaki sadrži jedan bit (0 ili 1). Organizacija fleš memorije sadrži i jedan bit po memorijskoj ćeliji i više bitova po ćeliji (ova vrsta se zove ćelija na više nivoa, skraćeno MLC). Memorijske ćelije su grupisane u reči fiksne dužine, na primer 1, 2, 4, 8, 16, 32, 64 ili 128 bita. Svakoj reči se može pristupiti binarnim adresama od N bita, što omogućava skladištenje 2 na N reči u memoriji. Sledi da se procesorski registri obično ne smatraju za memoriju, jer oni skladište po jednu reč i ne sadrže mehanizam adresiranja.
Termin „storidž“ se često koristi kao naziv za sekundarnu memoriju tipa traka, magnetnih diskova i optičkih diskova (CD-ROM i DVD-ROM).

## Historija

Pozadina dela računara ENIAC, gde se vide vakumske cevi
Tokom ranih 1940-ih, memorijska tehnologija je uglavnom imala kapacitet od nekoliko bajtova. Prvi električni programabilni digitalni računar, ENIAC, je mogao da izvodi proste računice koje bi se sastajale iz 20-decimalnih cifara koji su držani u vakumskim cevima.
Sledeći bitan napredak u računarskoj memoriji je došao sa memorijom akustične linije za kašnjenje, koju je razvio J. Presper Ekert ranih 1940ih. Kroz staklenu cev ispunjenu živom sa kvarcnim kristalom na svakom kraju, linije za kašnjenje su mogle da skladište bitove koje bi se zadržavale unutar cevi i prolazile kroz živu u vidu zvučnih talasa. Memorija akustične linije za kašnjenje bi morala da se ograniči na nekoliko stotina hiljada bitova kako bi ostala efikasna.

Alternative liniji sa zakašnjenjem, Vilijamsova cev i Selekciona cev, izmišljene su 1946 i obe su koristile zrake elektrona u staklenim cevima kao način skladištenja. Fred Vilijams je izumeo Vilijamsovu cev koja je prva RAM memorija. Fredova cev je većeg kapaciteta od Selekcione cevi (ova je bila ograničena na 256 bita, dok je Vilijamsova mogla da uskladišti hiljade) i bila je jeftinija. Vilijamsova cev je, doduše, bila veoma osetljiva na dešavanja u okruženju.

1940ih su naučnici pokušavali da pronađu postojanu memoriju. DŽej Forester, DŽen A. Rajhmen i En Veng su razvili memoriju sa magnetnim jezgrom, koja je mogla da se pozove i nakon gubitka struje. Memorija sa magnetnim jezgrom je bio dominantan oblik memorije do pojave tranzistorske memorije krajem 1960ih.

Razvoji u tehnologiji i ekonomiji omogućili su pojavu Računara sa veoma velikom memorijom (VLM).

Termin memorija se generalno odnosi na RAM kada se govori o računarima.

## Nepostojana memorija

Nepostojana memorija je ona memorija kojoj je neophodna struja da zadrži uskladištene informacije. Većina modernih poluprovodničkih nepostojanih memorija je ili statički RAM (SRAM) ili dinamički ram (DRAM). SRAM zadržava sadržaj sve dok ima struje i ima jednostavan interfejs, ali mu je potrebno šest tranzistora po bitu. Dinamički RAM ima komplikovaniji interfejs i kontrole, i potrebni su mu česti ciklusi osvežavanja, kako se uskladišteni podaci ne bi izgubili. Sa druge strane, DRAM koristi samo jedan tranzistor i kondenzator po bitu, što mu omogućava da ima mnogo veću gustinu i da, sa više bitova po čipu, bude jeftiniji. SRAM nije pogodan za sistemsku memoriju desktop računara, gde DRAM dominira, ali se ipak koristi kao keš tih memorija. SRAM je čest u malim, namenskim sistemima, kojima obično treba desetine kilobajta ili manje. Nove tehnologije nepostojanih memorija bi trebalo da se takmiče ili potpuno zamene SRAM i DRAM na tržištu, a u njih spadaju Z-RAM, TTRAM, A-RAM i ETA-RAM.

## Postojana memorija

Postojana memorija je računarska memorija koja može da sadrži pohranjenu informaciju i nakon što ostane bez struje. Primeri postojane memorije su ROM, fleš memorija, većina magnetnih memorija (npr. čvrsti diskovi, flopi diskovi i magnetne trake), optički diskovi, i rane metode kao što su papirna traka i bušena traka. Nove tehnologije su FeRAM, CBRAM, PRAM, SONOS, RRAM, Racetrack memorija, NRAM, Milipede.

## Upravljanje memorijom

Dobro upravljanje memorijom je uslov da bi računarski sistem funkcionisao. Moderni operativni sistemi imaju složene sisteme za ispravno upravljanje memorijom. Ako nemaju, može doći do problema, loših performansi i u najgorem slučaju uništavanje od strane virusa i ostalih malvera.
Skoro sve što programer radi zahteva da raazmisli o kvalitetnom korišćenju memorije. Čak i skladištenje jednog broja u memoriju zahteva od programera da specifira kako memorija treba da ga sačuva.

### Bagovi kod upravljanja memorijom

Nepravilno upravljanje memorijom je čest uzrok bagova.

* U aritmetičkom prelivanju, rezltat računice bude veći nego što alocirana memorija dozvoljava. Na primer, potpisana 8-bitni celi broj dozvoljava brojeve između -128 i +127. Ako je vrednost te promenjiva 127, a instrukcija je da se doda 1, računar neće moći da postavi vrednost 128 na to mesto. U tom slučaju će se za vrednost postaviti -128 umesto 128, što je nepoželjno.
* Curenje memorije se dešava kada program zatraži memoriju od operativnog sistema i ne vrati je kada završi operacije nad njom. Program sa ovom osobinom će zahtevati sve više memorije sve dok ne pukne.
* Greška segmentacije se dešava kada program pokuša da pristupi memoriji kojoj nema dozvolu za pristup. Obično će operativni sistem ugasiti ovakav program.
* Prelivanje bafera znači da program piše podatke na kraj svog alociranog prostora i onda nastavlja da piše podatke u deo memorije koji pripada drugim programima. Posledice mogu da budu nepravilno ponašanje programa, uključujući i greške pri pristupu memoriji, netačne rezultate ili kršenje sistemske bezbednosti, tako da je ovo glavni uzrok mnogih softverskih ranjivosti i mogu se iskoristiti zlonamerno.

### Rani računarski sistemi

U ranim računarskim sistemima, programi su davali mesto za pisanje memorije i podatke za pisanje. Ovo mesto je bila fizička lokacija na memorijskom hardveru. Sporo računanje tih računara nije dozvoljavalo složene sisteme za memorijsko upravljanje koji se koriste danas. Takođe, pošto su svi takvi sistemi bili namenjeni za pojedinačne zadatke, sofisticirani sistemi nisu bili traženi.
Ovakav pristup je imao svoje zamke. Ako specifirano mesto nije bilo tačno, onda bi program pisao podatke na neki drugi deo programa. Rezultat ovakve greške je nepredvidiv. U nekim slučajevima, netačni podaci mogu pisati preko memorije koju koristi operativni sistem.

### Virtualna memorija

Virtualna memorija je sistem gde celu fizičku memoriju kontroliše operativni sistem. Kada je programu potrebna memorija, tada je zatraži od operativnog sistema. Operativni sistem onda bira na koju fizičku adresu će postaviti memoriju.

Ovakav pristup ima više prednosti. Programeri više ne moraju da brinu o tome gde je memorija fizički pohranjena, ili da li korisnikov računar ima dovoljno memorije. Ovo takođe dopušta da se koristi više vrsta memorije. Na primer, jedan deo memorije se može čuvati na RAM čipovima, a ostatak na čvrstom disku. Ovo drastično povećava količinu memorije koja je na raspolaganju programima. Operativni sistem će postaviti memoriju koja se aktivno koristi u RAM, koji je dosta brži od čvrstih diskova. Kada količina RAM-a nije dovoljna da rade svi programi neometano, može se desiti da se više vremena potroši na pomeranje memorije sa RAM-a na disk i natrag nego što se potroši na izvršavanje zadataka. Ovo se zove mlaćenje.

### Zaštićena memorija

Zaštićena memorija je sistem u kome je svakom programu dodeljen tačan deo memorije za korišćenje i programu nije dozvoljeno da koristi memoriju van tog dela. Korišćenje zaštićene memorije znatno poboljšava sigurnost i pouzdanost računarskog sistema.

Bez zaštićene memorije, moguće je da bag u jednom programu promeni memoriju korišćenu u drugom programu. Ovo će prouzrokovati da taj drugi program radi sa iskvarenom memorijom i sa nepredviđenim rezultatima. Ako je memorija operativnog sistema iskvarena, možda će se ceo računarski sistem zaustaviti i ponovo započeti. Ponekad programi namerno menjaju memoriju koju koriste drugi programi. Ovo rade virusi i ostali malver kako bi stavio računar pod svoje.

Zaštićena memorija dodeljuje programima jedinstvene oblasti memorije. Ako operativni sistem otkrije da je program pokušao da promeni memoriju koja mu ne pripada, program se gasi. Na ovaj način, samo napadajući program se gasi, a ostali programi nisu pogođeni.
Sistemi sa zaštićenom memorijom skoro uvek takođe sadrže virtuelnu memoriju.

## Literatura

* Miller, Stephen W. (1977), *Memory and Storage Technology*, Montvale.: AFIPS Press

* *Memory and Storage Technology*, Alexandria, Virginia.: Time Life Books, 1988

## Vanjske veze

* How Computer Memory Works