Upravljanje memorijom temeljni je fenomen operativnog sustava koji se koristi za upravljanje ili upravljanje primarnom memorijom radi kontrole prava pristupa memoriji na računalu. Cilj je spriječiti bilo koji proces da pristupi memoriji koja mu još nije dodijeljena.
Operativni sustav dodjeljuje memoriju za svaki postupak koji je podijeljen u segmente. Stack i Heap su dva načina na koje se memorija raspoređuje u operativnom sustavu.
Segment segmenata koristi se za spremanje lokalnih varijabli funkcija koje se automatski stvaraju, dok se heap segment koristi za dinamički raspoređenu memoriju.
Oboje su pohranjeni u računalnoj RAM-u i mogu rasti i smanjivati se tijekom izvođenja programa. Razmotrimo njih detaljno i usporedimo ih da bismo razumjeli koji je bolji.
Korak segmenta je tehnika upravljanja memorijom koja se koristi za dodjelu statičke memorije. To je posebno područje u memoriji računala koje se koristi za spremanje lokalnih varijabli funkcije. Kad se funkcija zove, memorija se dodjeljuje svim lokalnim varijablama negdje i možete pristupiti tim varijablama kao što znate njihove lokacije. Memorijski blokovi oslobađaju se kada funkcija prestane. Stack je jedan od načina da se ovaj proces učinkovito provede. Zamislite to kao osnovnu strukturu podataka u kojoj su stavke postavljene jedna na drugu poput snopa. Slično tome, lokalnim varijablama može se pristupiti pritiskom i iskakanjem. Guranje odnosi se na dodavanje predmeta u snop i iskakanje znači povlačenje predmeta iz snopa. Stavkama se može pristupiti iz snopa po redoslijedu zadnji-u-prvom-izlasku (LIFO).
Heap se odnosi na veliki skup memorije koji se koristi za dinamičku raspodjelu memorije što znači da memorija ostaje dodijeljena dok se program ne prekine ili ne oslobodi memoriju. Memorija se raspodjeljuje nasumično, tako da ne postoji jednostavan način pristupa memoriji. Za razliku od segmenta snopa, elementi se oslobađaju obrnutim redoslijedom kako su prvotno raspoređeni. Jednostavno rečeno, memorija se dodjeljuje programima na zahtjev i oslobađa se kada više nije potrebna. Elementi gomile su neovisni jedan o drugom, što znači da im se može pristupiti dok se program pokreće i oslobađa kada program prestane. To je poput bazena globalne memorije koji se koristi za spremanje globalnih varijabli i mnogih varijabli koje na njih upućuju.
U računalnoj arhitekturi, snop je posebno područje memorije računala koje je izričito dodijeljeno automatskim varijablama. U programiranju, automatska varijabla je lokalna varijabla što znači da je opseg varijable lokalni za blok u kojem je deklarirana. Memorija se ovim varijablama dodjeljuje automatski nakon ulaska u blok, a memorija se oslobađa po izlasku. Heap, s druge strane, je dio memorije računala koji se koristi za dinamičku dodjelu memorije što znači da su blokovi memorije raspoređeni i raspoređeni nasumično.
Stack se koristi za spremanje lokalnih varijabli i čiji je opseg definiran u funkciji. Tehnički gledano, stock podržava raspodjelu statičke memorije koja odgovara lokalnim statičkim i varijablama opsega. Memorija se dodjeljuje prije izvršenja programa, obično u vrijeme sastavljanja, a korištena se struktura podataka naziva snop. Heap, s druge strane, koristi se za dinamičku raspodjelu memorije što znači da se memorija ručno dodjeljuje za vrijeme izvođenja programa. Programi zahtijevaju memoriju, obično za dodavanje čvora strukturi podataka i vraćaju ako nije potrebno.
Kopcem upravlja i optimizira CPU, a podacima se pristupa u redoslijedu zadnji-prvi-izlaz (LIFO). LIFO se odnosi na metodu pohrane podataka u memorijskim nizovima u kojima se najnoviji blok memorije prvi oslobađa i obrnuto. To omogućuje učinkovito upravljanje memorijom. Nasuprot tome, elementi hrpe su neovisni jedan o drugom i podacima se može pristupiti proizvoljno što znači da se memorijski blok može dodijeliti i osloboditi u bilo kojem trenutku bez obzira na njihov redoslijed. Za razliku od skupova, hrpe nemaju definitivan obrazac za dodjelu i razmještanje memorijskih blokova.
Memorijom se automatski upravlja u snopu, a varijable se dodjeljuju i raspoređuju automatski što znači da je skup rezerviran samo za privremene varijable. Lokalne varijable postaju aktivne kada se funkcija izvrši i kada se ona zaustavi, varijable izađu izvan okvira što znači da je opseg varijable lokalni funkciji i postoji sve dok se izvršava. Za razliku od snopa, memorija se raspoređuje dok program radi u hrpi, što čini malo sporiji pristup ovdje spremljenim varijablama. Kako ne postoji određeni redoslijed rezerviranja blokova, blokovi memorije se mogu dodijeliti i besplatno u bilo kojem trenutku.
Oba su najčešći načini dodjele memorije i pohranjuju se u računalnu RAM memoriju za učinkovito upravljanje memorijom. Međutim, pristup memoriji u hrpi je brz, jer se memorijom upravlja automatski, dok se u hrpi, memorijom treba ručno upravljati, što znači da morate slobodno dodijeliti slobodnu memoriju kada blokovi više nisu potrebni. Zahvaljujući fleksibilnosti, Stack se očigledno brži i lakši za upotrebu, ali ima i dobar udio prednosti i nedostataka. Iako snop nema ograničenja u veličini memorije, to je malo teško implementirati. Heap je sporiji od snopa, ali njegova je implementacija jednostavnija.