Upravljanje memorijom je jedna od osnovnih funkcija operativnih sistema. Za izvršavanje svakog procesa je potrebna operativna memorija. Savremeni operativni sistemi omogućavaju svakom procesu da dobije više virtuelne memorije, nego što je ukupna veličina stvarne (fizičke) memorije na datom računarskom sistemu. Glavni cilj kod upravljanja memorijom je da se kombinovanjem velike spore memorije sa malom brzom memorijom ostvari efekat velike brze memorije. Za upravljanje memorijom bitni su programski prevodilac, operativni sistem i hardver. Prvo, programski prevodilac struktuira adresni prostor date aplikacije. Zatim, operativni sistem preslikava strukture programskog prevodioca u hardver. Na kraju, hardver izvršava stvarne pristupe memorijskim lokacijama.
Problem upravljanja memorijom
Najvažnije aktivnosti operativnog sistema u dijelu za upravljanje memorijom su:
1) vođenje evidencije o tome koji se dijelovi memorije trenutno koriste i ko ih koristi,
2) donošenje odluke o učitavanju procesa u memoriju, odnosno koje procese prebaciti u memoriju kada memorijski prostor postane raspoloživ,
3) dodjela i oslobađanje memorijskog prostora po potrebi.
Da bi se jedan program izvršio neophodno je da se u memoriju unesu i njegove instrukcije i podaci, kako bi bili dostupni centralnom procesoru. To ne znači da sve instrukcije i svi podaci moraju da budu u memoriji sve vrijeme tokom izvršavanja programa. Moguće je unijeti u memoriju samo jedan dio instrukcija programa sa podacima neophodnim za njihovo izvršavanje. Po izvršavanju tog dijela programa u memoriju se može unijeti, u sve lokacije, sljedeći niz naredbi sa podacima potrebnim za njihovo izvršavanje. U uslovima višeprogramskog rada ovakva mogućnost je posebno zanimljiva. Držanjem u memoriji dijelova, a ne cijelih programa, moguće je aktivirati više programa u jednom vremenskom intervalu čime se povećava stepen višeprogramskog rada, a time i stepen iskorišćenja ostalih resursa računara. Naravno, ovakav način rada zahtijeva dodatne hardverske komponente i povećava složenost operativnog sistema. Sa stanovišta operativnog sistema memorija je podjeljena u dva nivoa. Prvi nivo čini primarna (glavna) memorija u kojoj se nalaze trenutno aktivni dijelovi različitih programa, dok drugi nivo čini sekundarna (pomoćna) memorija sa relativno brzim pristupom, na kojoj se čuvaju kompletne kopije svih aktivnih programa.
Operativni sistem problem upravljanja memorijom svodi na problem vremenske i prostorne raspodjele programa ili dijelova programa između dva nivoa memorije. Drugim riječima, upravljanje memorijom se sastoji od sljedeće tri komponente:
- upravljanje unošenjem (“fetch policy“) – u smislu donošenja odluke o tome kada će se program ili njegovi dijelovi unijeti u memoriju,
- upravljanje smještanjem (“placement policy“) – u smislu donošenja odluke o tome gdje će se program ili njegovi dijelovi smjestiti u memoriji,
- upravljanje zamjenom (“replacement policy“) – u smislu donošenja odluke o tome koji će se program ili dijelovi programa izbaciti iz memorije da bi se oslobodio prostor za unošenje drugog programa ili dijelova drugog ili istog programa.