Upravljanje memorijom

Upravljanje memorijom je čin upravljanja memorijom računara. Suštinski uslov za upravljanja memorijom je da obezbedi način da dinamički dodeli delove memorije programima na njihov zahtev, i oslobodi ih za ponovnu upotrebu kada više nisu potrebni. Ovo je od ključne važnosti za bilo koji napredni računarski sistem gde više od jednog procesa može biti u bilo kom trenutku u toku.[1]

Nekoliko metoda je osmišljeno za povećanje efikasnost upravljanja memorijom. Sistemi virtuelne memorije odvoje memorijske adrese koje koristi proces od stvarnih fizičkih adresa, omogućavajući razdvajanje procesa i povećanje efikasno raspoloživog iznosa RAM-a koristeći straničenje ili zamenu sekundarne memorije. Kvalitet upravljanja virtuelne memorije može imati širok uticaj na ukupne performanse sistema.

Raspodela dinamičke memorije uredi

 
Eksterna fragmentacija

Detalji uredi

Zadatak ispunjavanja dodele zahteva se sastoji od lociranih blokova nekorišćene memorije dovoljne veličine. Memorijski zahtevi su zadovoljni dodeljivanjem delova iz velikog skladištenja memorije koji se naziva hip. U bilo kom trenutku, neki delovi hipa su u upotrebi, a neki su "slobodni" (neiskorišćeni) i na taj način su na raspolaganju za buduće alokacije. Nekoliko pitanja komplikuju primenu, kao što je eksterna fragmentacija, koja se javlja kada postoji mnogo malih praznina između dodeljenih memorijskih blokova, koja poništava njihovu primenu za zahtev za alokaciju. Alokator metapodataka takođe može da naduva veličinu (pojedinačnih) malih alokacija. Ovim se često upralja preko komadanja( engl. chunking ). Sistem za upravljanje memorijom mora pratiti preostale alokacije kako bi se osiguralo da se ne preklapaju i da nema memorije koja je ikada "izgubljena" kao curenje memorije.

Efikasnost uredi

Specifični implementirani algoritam za raspodelu dinamičke memorije može značajno da utoiče na performanse. Studija koja je sprovedena 1994. godine od strane Didžital ekvipment korporacije ilustruje opšte troškove koji su uključeni za razne alokatore. Najmanja prosečna dužina puta instrukcije potrebna da izdvoji jedan slot memorije bila je 52 (kao što je izmereno sa nivoom instrukcija engl. profiler-a na različitim softverima)[2]

Implementacija uredi

Pošto tačna lokacija raspodele (alokacije) nije poznata unapred, memoriji se pristupa indirektno, obično preko pokazivača reference. Specifičan algoritam koji se koristi da organizujr memorijski prostor i alocira i dealocira komade, povezan je sa kernelom, a može da koristi bilo koji od sledećih metoda:

Alokacija blokova fiksne veličine uredi

Alokacija blokova fiksne veličine, takođe se naziva pool memorijska alokacija, koristi praznu listu memorijskih blokova fiksne veličine (često su svi iste veličine). Ovo dobro funkcioniše za jednostavne građene sisteme gde objekti koji nisu veliki treba da budu alocirani, ali trpe zbog fragmentacije, posebno oni sa velikim memorijskim adresama. Kako god, zbog značajno smanjenog opterećenja ova metoda može značajno poboljšati performanse za objekte kojima je potrebna česta alokacija/dealokacija i često se koristi u video igricama.

Buddy blokovi uredi

U ovom sistemu, memorija se alocira u nekoliko skladištenja(pool) memorija umesto samo jednog, gde svaki pool predstavlja blokove memorije određene veličine 2n. Svi blokovi određene veličine se čuvaju u sortiranoj povezanoj listi ili stablu i svi novi blokovi koji se formiraju tokom alokacije su dodati u svoje pool memorije za kasniju upotrebu. Ako se traži manji broj nego što je na raspolaganju, najmanja dostupna veličina je izabrana i prepolovljena. Jedan od nastalih polovina je izabranlj, i proces se ponavlja dok se zahtev ne ispuni. Kada se blok alocira, alokator će početi sa najmanjim dovoljno velikim blokom da bi se izbeglo nepotrebno razbijanje blokova. Kada je blok oslobođen, on je upoređen sa svojim buddy blokom. Ako su oboje slobodni, oni se kombinuju i stavnjaju u sledeću buddy-blok listu najveći veličine.

Sistemi sa virtuelnom memorijom uredi

Virtuelna memorija je metod razdvajanja organizacije memorije od fizičkog hardvera. Aplikacije operišu sa memorijom preko virtuelnih adresa. Svaki put kad se vrši pokušaj pristupa memorisanim podacima, virtuelna memorija naloži da se virtuelna adresa prevede u fizičku adresu. Na ovaj način dodavanje virtuelne memorije omogućava precizniju kontrolu nad memorijskim sistemima i metodama pristupa.

Zaštita uredi

U sistemima virtuelne memorije operativni sistem ograničava kako proces može da pristupi memoriji. Ova funkcija može da se koristi da zabrani procesu da čita ili upisuje u memoriju koja nije alocirana na njemu, time sprečavajući da se zlonamerni ili neispravni kod u jednom programu upliće u rad drugog.

Deljenje uredi

Iako je alocirana memorija za specifične procese normalno izolovana, procesi ponekad moraju da budu u stanju da razmenjuju tj. dele informacije. Deljena memorija je jedna od najbržih tehnika za međuprocesne komunikacije.

Fizička organizacija uredi

Memorija se obično klasifikuje po stopi pristupa glavnoj memoriji i sekundarnoj memoriji. Sistemi za upravljanje memorijom upravljaju premeštanjem informacija između ova dva nivoa memorije.

Vidi još uredi

Reference uredi

Literatura uredi

Spoljašnje veze uredi