I Funkcije i karakteristike operativnih sistema (OS) · Web viewOS ga postavlja na 1 kada upiše...

27
IV Upravljanje operativnom memorijom Šta ćemo učiti ° Osnovni pojmovi ° Monoprogramsko upravljanje memorijom ° Organizacija po particijama ° Stranična organizacija ° Segmentirana organizacija ° Segmentno-stranična organizacija ° Rešenja koja omogućavaju virtuelnu memoriju ° Algoritmi zamene stranica Osnovni pojmovi Uporedni procesi dele dva vitalna resursa - procesore i memoriju. O upravljanju procesorima smo već govorili. Predmet ovog poglavlja je upravljanje memorijom, odnosno tehnike koje se koriste za deljenje unutrašnje memorije ograničenog kapaciteta između uporednih procesa. Kao i kod upravljanja procesorima razlikovaćemo nivoe planiranja: makro (srednjoročni) i mikro (kratkoročni). Makro nivo upravljanja memorijom realizuje politiku opsluživanja korisnika. On održava red za čekanje na sekundarnoj memoriji (Job Queue) i odlučuje kada obrade počinju i kada se završavaju. Takođe, po potrebi, prekida neku obradu da bi se zadovoljili priorotetniji korisnički zahtevi. Mikro nivo upravljanja memorijom obezbeđuje razmenu programa i podataka između operativne memorije (OM) i sekundarne memorije (hard diska). Ovaj nivo treba da obezbedi efikasno korišćenje OM: 1. ograničavanjem učestalosti prenošenja programa i podataka; 2. čuvanjem u OM procesa koji mogu da se izvršavaju dok ostali čekaju na ulaz/izlaz; 3. prenošenjem podataka i programa u OM samo onda kada su neophodni u obradi. Dakle, moduli koji upravljaju meorijom treba da odgovore na pitanja koji procesi treba da se nalaze u memoriji, kada treba da se vrši dodela memorije, koliko memorije treba dodeliti svakom od procesa i gde u memoriji smestiti svaki od procesa. U skladu sa definicijom o upravljanju računarskim resursima, upravljanje memorijom treba da obezbeđuje: 1. Vođenje evidencije o zauzetosti delova OM. Svaki njen registar je slobodan (ne koristi se), ili je zauzet (koristi se). Skup svih - 1 -

Transcript of I Funkcije i karakteristike operativnih sistema (OS) · Web viewOS ga postavlja na 1 kada upiše...

I Funkcije i karakteristike operativnih sistema (OS)

IV Upravljanje operativnom memorijom

Šta ćemo učiti

· Osnovni pojmovi

· Monoprogramsko upravljanje memorijom

· Organizacija po particijama

· Stranična organizacija

· Segmentirana organizacija

· Segmentno-stranična organizacija

· Rešenja koja omogućavaju virtuelnu memoriju

· Algoritmi zamene stranica

Osnovni pojmovi

Uporedni procesi dele dva vitalna resursa - procesore i memoriju. O upravljanju procesorima smo već govorili. Predmet ovog poglavlja je upravljanje memorijom, odnosno tehnike koje se koriste za deljenje unutrašnje memorije ograničenog kapaciteta između uporednih procesa.

Kao i kod upravljanja procesorima razlikovaćemo nivoe planiranja: makro (srednjoročni) i mikro (kratkoročni).

Makro nivo upravljanja memorijom realizuje politiku opsluživanja korisnika. On održava red za čekanje na sekundarnoj memoriji (Job Queue) i odlučuje kada obrade počinju i kada se završavaju. Takođe, po potrebi, prekida neku obradu da bi se zadovoljili priorotetniji korisnički zahtevi.

Mikro nivo upravljanja memorijom obezbeđuje razmenu programa i podataka između operativne memorije (OM) i sekundarne memorije (hard diska). Ovaj nivo treba da obezbedi efikasno korišćenje OM:

1. ograničavanjem učestalosti prenošenja programa i podataka;

2. čuvanjem u OM procesa koji mogu da se izvršavaju dok ostali čekaju na ulaz/izlaz;

3. prenošenjem podataka i programa u OM samo onda kada su neophodni u obradi.

Dakle, moduli koji upravljaju meorijom treba da odgovore na pitanja koji procesi treba da se nalaze u memoriji, kada treba da se vrši dodela memorije, koliko memorije treba dodeliti svakom od procesa i gde u memoriji smestiti svaki od procesa.

U skladu sa definicijom o upravljanju računarskim resursima, upravljanje memorijom treba da obezbeđuje:

1. Vođenje evidencije o zauzetosti delova OM. Svaki njen registar je slobodan (ne koristi se), ili je zauzet (koristi se). Skup svih slobodnih memorijskih registara čini slobodan memorijski prostor, a svih zauzetih – zauzet memorijski prostor.

2. Definisanje strategije raspodele, to jest donošenje odluke o tome KOME dodeliti memoriju, KADA, KOLIKO i GDE. Znači, upravljanje memorijom praktično obuhvata tri vrste strategije raspodele. Strategije donošenja (Fetch strategies) donose odluku o tome koji deo podataka će sledeći biti punjen. Ova odluka može se donositi na zahtev ili unapred. Dakle, odgovor na pitanje kada se podaci učitavaju memoriju zavisi od toga da li se memorija dodeljuje statički – unapred, ili dinamički – na zahtev. Strategije smeštanja (Placement strategies) donose odluku o tome gde će se u memoriji smestiti podaci koje treba napuniti. Strategije zamene (Replacement strategies) donose odluku o tome koji podaci će biti izbačeni iz operativne memorije da bi se napravio prostor za nove podatke neophodne za nastavak obrade.

3. Alokaciju (dodelu) OM po donetoj odluci. Dodela znači i preraspodelu između slobodnog i zauzetog memorijskog prostora.

4. Dealokaciju (oslobađanje) memorije po prestanku potrebe za dodeljenim prostorom, što takođe znači i preraspodelu između slobodnog i zauzetog memorijskog prostora.

Konkretna strategija za upravljanje memorijom bira se pri projektovanju operativnog sistema u zavisnosti od jednostavnosti realizacije, mogućnosti izmena, povećanja efikasnosti čitavog sistema i mnogih drugih kriterijuma. No bez obzira o kojoj strategiji dodele memorije bude reč, izlagaćemo na sledeći način: na početku uopšte o koncepciji, zatim o hardverskoj podršci, konkretnim algoritmima programske podrške i obrade i na kraju o prednostima i nedostacima prezentiranog rešenja.

Monoprogramsko upravljanje memorijom

U sistemima bez multiprogramiranja termine „korisnik“, „zadatak“ i „proces“ možemo smatrati sinonimima. Na sl. 11 dat je shematski prikaz ove najjednostavnije raspodele OM. Na početku memorije nalazi se operativni sistem, dok je u ostatku memorije korisnički program.

Što se tiče funkcija upravljanja memorijom zaklju-čujemo sledeće.

1. Praćenje stanja OM - Memorija se u potpunosti dodeljuje jednom zadatku, pa je ili zauzeta ili slobodna.

2. Strategija dodele - Zadatak dobija čitavu OM sem dela rezervisanog za OS.

3. Alokacija - Čitava memorija se dodeljuje jednom zadatku.

4. Dealokacija - Čitava memorija se oslobađa po izvršenju zadatka.

Hardverska podrška

Ne traži se nikakva posebna hrdverska podrška. Ponekad se koriste jednostavna hardverska sredstva zaštite OS od slučajnog ili namernog kvarenja koje bi prouzrokovao korisnički program. Ova podrška može se sastojati od registra granice i režima supervizor/korisnik. Registar granice sadrži adresu zaštićene oblasti (u kojoj se nalazi OS). Ako procesor radi u režimu korisnika, onda se svako obraćanje memoriji kontroliše, tj. onemogućava se pristup u zaštićeni deo. Ako se pokuša pristup zaštićenom delu memorije, generiše se signal za prekid i upravljanje se predaje operativnom sistemu. U režimu supervizor operativni sistem može da se obraća i zaštićenom delu memorije i koristi privilegovane instrukcije koje mogu da menjaju sadržaj registra granice.

Algoritam programske podrške

Ukoliko potrebna veličina memorije za zadatak nije veća od raspoložive slobodne memorije vrši se dodela memorije, punjenje zadatka, izvršenje zadatka i potom oslobađanje memorije pa se prelazi na sledeći zadatak. Ukoliko zadatak zahteva više od raspoložive memorije generiše se greška.

Rešenje koje omogućava da se izvršavaju i programi koji ne mogu da stanu u područje predviđeno za programe naziva se preklop (overlay). Program se deli na segmente, pri čemu se vodi računa o tome da međusobno zavisni delovi budu prisutni u memoriji istovremeno.

Slika 12 – Preklop (overlay)

Prednosti i nedostaci.

Ovo je adekvatno rešenje za specijalizovane korisnike. Rešenje ima najveću moguća jednostavnost realizacije sa zanemarljivom režijom operativnog sistema. Nedostaci su slaba iskorišćenost resursa (sporost u radu, niska produktivnost) sa iskorišćenjem memorije svega oko 50%. Veličina programa ograničena je veličinom raspoložive fizičke operativne memorije.

Organizacija po particijama

Postoje različite organizacije po particijama, ali sve one predstavljaju jednostavna rešenja za raspodelu memorije u višeprogramskom radu. Operativna memorija se deli na memorijske zone ili particije. Svaki program se nalazi u izdvojenom prostoru.

Četiri zadatka upravljanja memorijom jednostavno se rešavaju ovom tehnikom na sledeći način.

1. Praćenje stanja OM - Prati se stanje svake particije (“koristi se” ili “slobodna”).

2. Strategija dodele - Određivanje koji posao će koristiti OM u potpunosti je prepuštena makroraspoređivaču (Job Scheduler-u).

3. Alokacija - Slobodna particija se dodeljuje poslu i dobija status “koristi se”.

4. Dealokacija - Kada se posao završi, njegova particija dobija status “slobodna” i na raspolaganju je za sledeći posao.

Hardverska podrška.

Potrebno je vrlo malo specijalizovanog hardvera. To je mehanizam zaštite koji ne dozvoljava da neki posao koristi deo OM koji pripda OS ili nekom drugom poslu. Postoje mnoga rešenja ovog problema. Možemo koristiti dva registra granice koji će ograničavati particiju koja počinje da se koristi. Ako neki drugi posao pokuša da dođe do ovog prostora javlja se zaštitni prekid. Dva su nedostatka ove organizacije – registri granice se moraju menjati uvek kada procesor ponovo otpočinje sa multiprogramskim radom i teško je proširiti ovu zaštitu i na ulazno/izlazni procesor.

Algoritmi programske podrške.

Programska podrška zavisi od toga da li se particije dodelju statički ili dinamički. Kod statičkog dodeljivanja particija memorijski prostor je unapred izdeljen na neke zone određenih veličina bez obzira na veličine programa koji će se u njih smeštati, a OS po određenim kriterijumima dodeljuje ove zone pojedinim poslovima.

Pri dinamičkom dodeljivanju particija one se obrazuju i dodeljuju u toku izvršavanja poslova. Tako se nekorišćen prostor dodeljen pojedinim poslovima može pridruživati slobodnom memorijskom prostoru odakle se stvaraju nove particije. Kako neiskorišćeni memo-rijski prostor može da se stvori i unutar particije, a ne samo na njenom kraju (problem fragmentacije) to dinamičko dodeljivanje particija podrazumeva i povremeno “čišćenje” particije.

Čišćenje se obavlja pomera-njem programa i podataka u particiji tako da se korišćeni memorijski prostor u okviru particije nađe na uzastopnim memorijskim lokacijama sa što manje “rupa” – slobodnih memorijskih lokacija. Taj nekorišćeni deo, obično na kraju particije, može se tada dodavati slobodnom memorij-skom prostoru od koga se zatim stvaraju nove particije. Čišćenje particije obavlja se složenim postupcima izmene ili relokacije nekih adresa u naredbama programa. Rešenje koje omogućava ovakve izmene naziva se relokatibilne particije.

Kod statičkih particija svaki posao koji zadaje korisnik mora da ima specifikovanu maksimalnu količinu memorijskog prostora koja mu je potrebna. Specifikacije particija zadaje operater ili su ugrađene u OS. Donošenje odluke o dodeli OM u stvari znači proveru da li postoji dovoljno velika slobodna particija. Da bi se moglo upravljati ovako organizovanom OM operativni sistem mora da vodi tabelu particija u kojoj je evidentiran status svake od njih. Kod particija jednake veličine smeštanje procesa je jednostavno. Dok postoji barem jedna slobodna particija proces može u nju da se učita. Kod particija različite veličine postoje dva načina za dodeljivanje particija. Najjednostavniji način je da se svakom procesu dodeli najmanja particija u koju može da stane. U tom slučaju svakoj particiji pridružen je zaseban red poslova koji čekaju na nju (slika 15 a). Prednost ovakve organizacije je minimalna neiskorišćena memorija unutar particije (unutrašnja fragmentacija). Mada je ovakva organizacija optimalna sa tačke gledišta pojedinačne particije, ona to nije sa tačke gledišta sistema kao celine. Može se desiti da u red za najmanju particiju ima puno procesa dok su ostale particije neiskorišćene. Drugi način je da se svi procesi smeštaju u red zajednički za sve particije iz kojeg se raspoređuju u prvu slobodnu particiju u koju mogu da stanu (slika 15 b).

Primer dinamičkog upravljanja particijama dat je na

Primer dinamičkog upravljanja particijama dat je na slikama 16 do 18.

Slika 16 – Dinamičko formiranje particija

Slika 17 – Nastanak “rupa” po završetku poslova

Slika 18 – Objedinjavanje susdenih “rupa” u zajedničku slobodnu particiju

Algoritmi smeštanja

Alokaciju i dealokaciju mogu realizovati različiti algoritmi na osnovu tabela zauzetih i slobodnih particija. Tako algoritam First-fit (prvi odgovarajući) obično radi sa tabelom u kojoj su particije sortirane po lokacijama od kojih započinju. Algoritam testira da li je veličina programa M manja od veličine prve slobodne particije iz liste. Ako jeste, dodeljuje mu se ta particija, a ako nije ide se dalje. Program se puni u prvu particiju koja ispunjava uslov, a preostali slobodni prostor, na primer P3-M proglašava se slobodnom particijom.

Slika19 – Dodela memorije korišćenjem First-fit strategije

Algoritam Best-fit (najbolji odgovarajući) zahteva da tabela slobodnih particija bude sortirana u rastući redosled prema veličini particija. To omogućava da se program puni u onu particiju u kojoj će “otpadak” biti najmanji

Slika 20 - Dodela memorije korišćenjem Best-fit strategije

Algoritam Worst-fit podrazumeva da je tabela slobodnih particija sortirana u opadajući redosled prema veličini particija. Program se smešta u najveću particiju u koju može da stane. Izbor se obavlja brže, jer ako program ne može da se smesti u prvu (najveću) particiju, nema potrebe vršiti dalje provere. Ako se pak napuni, verovatnovaća da će “otpadak” biti upotrebljiv za neki drugi posao je je veća nego kod algoritma Best-fit.

Slika 210 - Dodela memorije korišćenjem Worst-fit strategije

No koju god od prikazanih strategija koristili, posle izvesnog vremena doći će do fragmentacije memorije. Zbir veličina svih slobodnih particija biće veći od prostora potrebnog programu, ali ni jedna od particija neće biti dovoljno velika da primi program. tada se pribegava relokaciji. Rad relokatibilnih particija ilustrovan je slikom 22..Kako je proces kompakcije spor (kompakcija u proseku troši toliko vremena koliko je potrebno da premestimo pola memorije), češće se koristi sledeći način rada. Sistem radi kao sistem sa dinamičkim particijama, a kada memorija više ne može da primi novi program, vrši se parcijalna kompakcija. Parcijalna kompakcija počinje sa particijom ispred koje ima slobodnog memorijskog prostora i vrši se samo dok se ne obezbedi dovoljno prostora za smeštanje programa.

Slika 22 – Relokatibilne particije

Iskorišćenje memorije kod opisanih strategija dodele dat je na sledećoj slici.

Iskorišćenje memorije

50%

60%

76%

85%

0%

20%

40%

60%

80%

100%

Monoprogram.

upravljanje

Statičke

particije

Dinamičke

particije

Relokatibilne

particije

Slika 23 – Iskorišćenje memorije kod organizacija koje podrazumevaju da se ceo program puni na uzastopne memorijske lokacije

Prednosti i nedostaci

Statičke particije

Pogodno kada se radi sa standardnim poslovima čiji su zahtevi za memorijom unapred poznati. Bolje korišćenje resursa nego kod monoprogramskog upravljanja i veća produktivnost sistema. Bolje korišćenje memorije (oko 60%). Međutim, neophodan je uvećan OS sa povećanom režijom, dodatni hardver za zaštitu, paje samim tim i cena veća. Veličina programa ograničena je veličinom najveće particije

Dinamičke particije

Bolja je od statičkih particija jer mogu da se opsluže veći programi. Veće je iskorišćenje memorije (oko 70%), a bolje je i korišćenje ostalih resursa. Međutim, veća je i cena jer režija OS raste i hardverska zaštita je komplikovanija. Veličina programa je ograničena veličinom memorije. Javlja se program fragmentacije.

Relokatibilne particije

Bolje iskorišćenje memorije i svih ostalih resursa nego kod prethodnih rešenja.Rešen je problem fragmentacije.Novi relokacioni hardver povećava cenu,a smanjuje brzinu rada.Vreme kompakcije nije zanemarljivo. Neiskorišćen deo memorije može biti znatan ako su programi veliki.

Svi nabrojani nedostaci doveli su do novog rešenja fragmentacije memorije koji se zove stranična organizacija.

Stranična organizacija memorije

Osnovna ideja ovog koncepta se zasniva na sledećim principima:

1. Adresni prostor programa razbija se na delove jednake dužine koji se nazivaju stranicama (pages). Razbijanje je veštačko tj. nije vezano za logiku programa i njegovu prirodnu podelu na segmente.

2. Operativna memorija se smatra podeljenom na delove jednake dužine – blokove - okvire (frames). Realno nema fizičke podele memorije. Dužina okvira jednaka je dužini stranice.

3. Konstruiše se hardverski i softverski mehanizam za preslikavanje adresa (mapping) koji omogućuje da se adresa iz programa koja se naziva logičkom preslika u realnu fizičku adresu, uz pretpostavku da se svaka stranica programa može naći u svakom bloku memorije.

Četiri funkcije upravljanja memorijom vršese na sledeći način.

1. Vodi se evidencija o područjima specifikovanim tabelama stranica i tabelama okvira.

2. Donošenje odluke o tome ko će dobiti memoriju je velik posao koji obavlja makroraspoređivač. Memorija se može jednostavno dodeliti tako da se prvi slobodan blok dodeli korisniku.

3. Alokacija - Sve stranice posla pune se u dodeljene okvire po predviđenom preslikavanju između dveju navedenih tabela.

4. Dealokacija - Kada se posao završi, odgovarajućim okvirima dodeljuje se status slobodan u tabeli okvira.

Logička adresa (adresa operanda, ili koja se nalazi u PC-u) posmatra se kao kompozicija broja stranice (p - page) i pomeraja unutar stranice (d - displacement).

p

d

Vrednost d je iz intervala [0,2k-1], gde je k broj bitova u polju d. Dakle, k određuje veličinu stranice. Na primer, ako je k=10 veličina stranice je 1KB, ako je k=12 veličina stranice je 4KB.

Maksimalna vrednost p određuje maksimalan broj stranica, tj. veličinu programa: 2p stranica. Savremeni računari najčešće koriste 32-bitne adrese, ali se koriste i 36-bitne, 40-bitne i 64-bitne adrese. Međutim i u tim računarima dužina fizičke adrese retko prelazi 32 bita što znači da je kapacitet fizičke memorije obično 4GB.

Fizička adresa takođe se posmatra kao kompozicija dva dela: broja bloka (b) i pomeraja u okviru bloka (d) koji je identičan pomeraju u logičkoj adresi.

b

d

Stranice programa se razmeštaju u fizičkoj memoriji u blokove koji ne moraju biti uzastopni. Time je napravljena bitna razlika u odnosu na prethodno opisane metode upravljanja memorijom, jer program u starnično organizovaoj memoriji ne mora da zauzima kontinualni prostor u OM.

Da bi se program mogao izvršavati moraju se predvideti i hardverska i softverska sredstva za preslikavanje, tj. transformaciju logičke adrese u fizičku. U operativnoj memoriji se formira tablica preslikavanja PMT (Page Map Table) u kojoj je za svaku stranicu definisano u kom se bloku nalazi. Svakoj stranici programa odgovara jedan red u PMT (Page Descriptor) u kojoj se nalazi broj bloka (u OM) pridruženog datoj stranici.

PMTAR

b

p

d

b

d

Logi~ka adresa

Realna (fizi~ka)

adresa

PMT

OM

blok 0

blok 1

blok 2

blok i

blok N

0

1

Pmax

Slika 24 - Preslikavanje logičke u fizičku adresu kod stranične organizacije

Svaki proces ima posebnu PMT. Adresa page descriptor-a se formira tako što se sadražaj posebnog registra PMTAR (Page Map Table Address Register) sabere sa brojem p iz logičke adrese. Čitanjem b iz PMT-a i njegovim sabiranjem sa pomerajem (d) iz logičke adrese dobijamo fizičku adresu (primećujemo da se udvostručuje broj pristupa memoriji). Kada proces izgubi procesor sadržaj PMTAR-a se prepisuje u PCB, a novi sadržaj PMTAR-a se dobija iz PCB-a procesa koji upravo dobija procesor (PMTAR zapravo čuva početnu adresu PMT-a tekućeg procesa).

Evidencija o praznim blokovima vodi se u posebnoj tablici FBT (free block table) u koju su uneti svi blokovi i naznačeno koji su zauzeti. Tablica se može pretvoriti u niz bita (0-free, 1-busy), što joj znatno umanjuje dimenzije

Zašitita u vidu graničnih registara i ovde postoji, ali se sa fizičkog prebacuje na logički nivo. Jednostavno, za svaki proces stranice idu od 0 do nekog Pmax koje se upisuje u granični registar prilikom kreiranja procesa. Problem se svodi na to da se poredi generisano p iz logičke adrese sa Pmax i ako je veće generiše se prekid, inače se nastavlja preslikavanje.

Postoji i zaštita na fizičkom nivou, koja je naročito značajna za I/O operacije, u vidu uvođenja dodatnih razreda u svaki registar operativne memorije, koji se nazivaju razredi ključa. Broj razreda ključa određuje broj različitih procesa koji se mogu međusobno štititi. (Moguće je imati više procesa sa istim ključem, ali oni nisu međusobno zaštićeni). Svakom procesu se pridružuje jedan ključ, koji se upisuje u isto vreme kada se stranice procesa unose u memoriju. Ova operacija je transparentna za programera.

U toku izvršenja procesa vrši se provera kjuča. To se ostvaruje tako što se prilikom pristupa memorijskom registru poredi sadržaj ključ tog registra sa sadržajem specijalnog registra KR (key register) u kome se nalazi ključ tekućeg procesa. U trenutku kada proces gubi procesor sadržaj KR se prebacuje u njegov PCB, a u KR se upisuje ključ procesa koji dobija procesor.

Dodatno poboljšanje, u smislu smanjenja broja obraćanja PMT tablici, može se postići uvođenjem jednog dodatnog registra. U taj registar se prilikom prvog pristupa stranici upisuje broj stranice (p) i broj bloka (b) koji odgovara toj stranici. Velika je verovatnoća da će se prilikom izvršenja sledeće naredbe pristupiti toj istoj stranici, pa se zbog toga broj svake stranice p poredi sa brojem p upisanim u pomenuti registar. Ako su sadržaji jednaki ne pristupa se PMT, već se broj bloka b uzima iz registra. Kada se pređe na novu stranicu konstatuje se nejednakost između broja stranice u registru i broja stranice u logičkoj adresi. Tada se pristupa PMT i inovira sadržaj registra. Ovako se veoma uvećava koeficijent uspešnosti, koji se definiše kao odnos broja obraćanja memoriji koji ne zahteva pristup PMT i ukupnog broja obraćanja memoriji. Vrednost koeficijenta uspešnosti ide do 98%.

Deskriptor stranice

Pored broja bloka (u memoriji) koji odgovara datoj stranici page descriptor sadrži i dodatne informacije.

To su pre svega bitovi koji definišu pravo pristupa. Za ovo se koriste tri bita RWE, koji definišu da li se stranici može pristupiti samo za čitanje, upis ili izvođenje. Moguće su naravno različite kombinacije ovih bitova.

Sledeći bit koji uvodimo je A (acessed) koji definiše da li je bilo pristupa stranici. Na 0 ga postavlja OS kada upiše stranicu u OM, a na 1 hardver kada se prvi put pristupi stranici.

Bit D (dirty) govori da li je pisano po stranici. 0 postavlja OS kada upiše stranicu, a 1 hardver kada se nešto upiše.

Bit V (valid) definiše da li je stranica u operativnoj memoriji. OS ga postavlja na 1 kada upiše stranicu u OM, a 0 takođe OS kada je izbaci iz OM. Ovaj bit se konsultuje od strane hardvera pri pristupu stranici.

Zajedničko korišćenje stranica

Stranična organizacija pogodna je za korišćenje standardnih programa, koji su potrebni različitim korisnicima (editor, compiler i sl.), čime se štedi memorijski prostor. Da bi se program mogao zajednički koristiti ne sme se menjati tokom izvršenja (tj. mora predstavljati čistu proceduru). Ovo ograničava zajedničko korišćenje korisničkih programa, kao i činjenica da stranice nisu logičke celine.

Posmatrajmo primer programa koji koriste editor (tri korisnika). Sa straničnom organizacijom memorije zajedničko korišćenje editora je prikazano na sledećoj slici.

Slika 25 – Zajedničko korišćenje stranica

Segmentna organizacija memorije

Segmentna organizacija memorije realizuje na sličan način kao i stranična. Umesto na stranice jednake dužine, program se deli na logičke celine – segmente, onako kako ih je definisao korisnik. To je prirodna podla koja postoji u svakom programu. Primer je pokazan na sledećoj slici.

Slika 26 – Segmenti programa

Segmentna organizacija memorije zasniva se na hardverskom mehanizmu za preslikavanje adresa sličnom hardverskom mehanizmu za preslikavanje adresa u straničnoj organizaciji.

Efektivna adresa, koja je rezultat izračunavanja na osnovu parametara definisanih u naredbi, se posmatra kao logička adresa, sastavljena iz dva dela s: broj segmenta i d: displacement (pomeraj) unutar segmenta.

U memoriji se formira SMT (Segment Map Table), po jedna za svaki proces, u trenutku kreiranja procesa.

Svakom segmentu odgovara jedan red u SMT koji se naziva deskriptor segmenta.

Polje L (segment length) je dužina segmenta, a BA (base adress) je. početna adresa segmenta sa kojom se sabira pomeraj.

SMTAR

s

d

adr

Logi~ka adresa

Realna (fizi~ka)

adresa

SMT

OM

0

1

Smax

+

L

BA

Slika 27 - Preslikavanje logičke u fizičku adresu kod segmentne organizacije

U procesoru se nalazi registar STMAR koji ukazuje na početnu adresu SMT tekućeg procesa.

Preslikavanje adrese se sastoji od sledećih mikrooperacija:

MAR ( (SMTAR) + s

MBR (M

; memorijski sadržaj segment deskriptora

MAR ( BA + d-

MBR ( M

Primećujemo da se i ovde broj pristupa memoriji udvostručuje.

Slobodan prostor u memoriji se posmatra kao skup praznih segmenata. Evidencija o slobodnim segmentima se može voditi u tablici SFT (segment free table). Pri tom svaka vrsta tablice sadrži početnu adresu (BA) i dužinu slobodnog segmenta (L). Često se slobodni segmenti vezuju u liste. (Slobodne spojene celine se vezuju u jedan segment: ako je npr. neki proces zauzimao dva segmenta i iza njih je bio prazan prostor, nakon završetka procesa se sve ovo spaja u jedan segment).

Zaštitu je moguće organizovati na logičkom nivou, tako što se za svaki proces odredi maksimalni broj segmenta (Smax) koji se upiše u specijalan registar prilikom kreiranja procesa. Postoji poseban komparator koji u slučaju S > Smax generiše prekid. Takođe, postoji i komparator koji proverava da li je d<=L i u slučaju neregularnosti generiše prekid.

Slika 28 – Zaštita kod segmentne organizacije

U deskriptoru segmenta se nalaze svi bitovi koji se nalaze u deskriptoru stranice. RWE se ovde jednostavnije definišu jer je segment logička celina.

Dinamičko proširivanje segmenta

Statičko proširiivanje segmenata podrazumeva mogućnost proširenja segmenta u toku izvršenja procesa, na zahtev programera. Dinamičko proširivanje segmenta omogućuje da se proširivanje odvija nezavisno od programera. Jedino što se od korisnika zahteva je da deklariše koji su segmenti predviđeni za proširivanje.

Postupak proširivanja je sledeći:

Ako uslov d (L nije zadovoljen generiše se prekid. Proverava se da li je segment predviđen za proširivanje. Ako nije daje se izveštaj o grešci i upravljanje se vraća dispečeru.

Ako je segment predviđen za proširivanje u listi slobodnih segmenata OS traži segment odgovarajuće dužine. Segment se najčešće proširuje na 10% veću veličinu od početne. Kada se nađe dovoljno veliki segment on se deli na dva dela (potreban deo i višak) i slobodni deo se povezuje u listu slobodnih. Sadržaj starog segmenta se prepisuje u novi, stari segment se proglašava slobodnim, ažurira se SMT i upravljanje se vraća prekinutom procesu.

Zajedničko korišćenje segmenata

Korisnik mora deklarisati segmente koji su predviđeni za korišćenje od strane više procesa. Takvi segmenti moraju biti napisani kao procedure.

Posmatrajmo proces P1 sa tablicom SMT1 i proces P2 sa SMT2. Pretpostavimo da je najpre kreiran proces P1. OS za svaki segment proverava da li je definisan kao deljiv.

Ako jeste unosi ga u SST (Shared Segment Table) Pri tom se unosi ime segmenta, BA, L i identifakor procesa P1.

SST:

segment name

L

BA

P1,P2,..

Pri kreiranju procesa P2 u njegovu SMT2 se upisuju L, BA i ostale informacije o deljivom segmentu iz SST. U SST se samo dopisuje identifikator procesa P2.

Kada se P1 završi segment koji je deljiv i koji koristi P2 ne smemo brisati. Brišemo samo identifikator procesa P1. Tek kada je lista identifikatora prazna možemo obrisati segment.

Slika 29 –Primer zajedničkog korišćenja segmenta editora od strane dva korisnika

Segmentno-stranična organizacija memorije

Da bi se iskoristile dobre strane i stranične i segmentne organizacije, koristi se segmentno-stranična organizacija. Program se posmatra podeljen na segmente, ali se svaki segment deli na stranice. U ovoj organizaciji logička adresa se posmatra kao dekompozicija tri komponente: s (broj segmenta), p (broj stranice u segmentu), d (pomeraj unutar stranice).

Za preslikavaje adrese potrebna je tablica SMT i više tablica PMT (broj tih tablica je jednak broju segmenata, za svaki segment po jedna.

PMTL – Page Map Table Length; PMTBA – PMT Base Address

Najpre se pristupa tablici SMT na već opisan način, pomoću SMTAR. Međutim, deskriptor segmenta je nešyo drugačiji. Umesto dužine segmenta u standardnim jedinicama (obično bajtovi), data je dužina segmenta u stranicama PMTL. Umesto početne adrese segmenta (BA) data je početna adresa odgovarajuće tablice PMT (PMTBA). U tablicama PMT deskriptori stranica su standardni, tj. sadrže broj bloka (b) i eventualno neke druge informacije (npr. RWE bitove). Interesantno je da biti RWE mogu biti stavljeni i u SMT jer se prava pristupa po pravilu definišu za segment kao celinu.

Zaštita se realizuje pomoću registra u koji se upisuje smax na isti način kao i u čisto segmentnoj organizaciji. Takođe se posle čitanja deskriptora segmenta vrši poređenje broja stranice p sa PMTL iz deskriptora segmenta. Nedostatak segmentno-stranične organizacije je povećanje broja pristupa operativnoj memoriji (tri umesto dva kod čisto segmentne ili čisto stranične organizacije memorije). Taj nedostatak se znatno ublažava upotrebom bafera preslikavanja (TLB). U njemu se sada kao ključ pojavljuje broj segmenta i broj stranice

Svaki segment se deli na stranice, koje se numerišu sa 0,1,... i svaki segment ima svoju PMT. SMT sadrži u svakom segment deskriptoru adresu tablice stranica tog segmenta (PMTA) i dužinu te tablice (PMTL). Primećujemo da su nam ovde potrebna tri pristupa memoriji za dobijanje sadržaja memorijskog registra.

Virtuelna memorija

U svim prethodno opisanim metodam dodeljivanja operativne memorije ostali su sledeći nedostaci: program čije su dimenzije veće od ukupno raspoložive memorije ne može se izvršavati (osim sa prelapanjima, overlay), a delovi programa koji se u toku nekog prolaza uopšte ne izvršavaju moraju ipak da budu uneti u memoriju. Praktično nema mnogo razloga da se kreira proces pre nego što se za njega nađe mesto u operativnoj memoriji. Ovi nedostaci se uklanjaju sa koncepcijom virtuelne memorije. Tu koncepciju ćemo razmatrati na principu stranične organizacije virtuelne memorije.

Stranična virtuelna memorija

Ova koncepcija podrazumeva da se program izvršava iako sve njegove stranice nisu prisutne u memoriji. Pri svakom pristupu stranici hardver konsultuje v bit u deskriptoru stranice. Ako je v=1 (prisutna u memoriji) završava se preslikavanje adrese i nastavlja se izvršenje naredbe. U suprotnom se generiše prekid. OS posle prepoznavanja prekida organizuje učitavanje stranice sa eksterne memorije. Pre toga vrši proveru u FBT-u postoji li slobodan blok u koji se data stranica može upisati.

Pretpostavimo da takav blok postoji. OS zatim pronalazi adresu tražene stranice na eksternoj memoriji. U tom cilju OS mora organizovati posebnu tablicu sa adresama stranica na eksternoj memoriji (naravno, za svaki proces). Drugo resenje je da se deskriptoru stranice pridruži adresa stranice na eksternoj memoriji. Broj bloka, tj. početnu adresu bloka, i adresu stranice na eksternoj memoriji OS koristi u procesu inicijalizacije kontolera diska. Kada završi tu inicijalizaciju, OS ažurira FBT, blokira proces u kome je nastao prekid i predaje upravljanje dispečeru.

Kada kontroler zavrsi učitavanje stranice, generiše prekid. OS prepoznaje prekid (znak da je učitavanje stranice završeno), deblokira proces koji je čekao na stranicu i vraća ga u red spremnih, ažurira PMT tog procesa (postavlja v=1, upisuje odgovarajuće b) i predaje upravljanje dispečeru ili ga vraća procesu koji je prekinut.

Drugi slučaj je kada je FBT prazan. Tada OS organizuje izbacivanje jedne stranice na disk, tj. oslobađanje jednog bloka. Ovo podrazumeva dostavljanje kontroleru adrese bloka u kome se nalazi ta stranica i njene adrese na eksternoj memoriji.

Posle inicijalizacije kontrolera OS blokira proces u kome je nastao stranični prekid. Ažurira se PMT, ali na specifičan način: briše se v bit stranice koja je predviđena za izbacivanje i predaje upravljanje dispečeru.

Kada kontroler prepiše stranicu na disk, generiše prekid. OS prepoznaje prekid i ažurira listu slobodnih blokova, tj. uzima adresu oslobođenog bloka i adresu stranice koju treba upisati i sa tim podacima inicijalizuje kontroler. Potom vraća upravljanje prekinutom procesu (ne dispečeru, jer u red spremnih još nije dospeo novi proces).

Kada stigne novi prekid od kontrolera ponavlja se ranije opisana procedura.

Primećujemo da se ovim postupkom znatno poboljšava iskorišćenost procesora, ali da se i uvećava interni rad. Interni rad se može smanjiti optimalnim izborom stranica za alociranje i dealociranje (dobrim izborom algoritma zamene stranica). Primećujemo, međutim da rad uvećava i sama činjenica da je potrebno dva puta pristupiti memoriji- jednom u tabelu stranica, a drugi put na samu adresu. Ovaj problem se prilično uspešno rešava uvođenjem skupa adresnih registara (associative registers). Kada proces dobije izvođenje adresni podaci za stranice koje su aktivne pune se u adresne registre.Prvo polje u adresnom registru sadrži broj stranice, drugo sadrži adresu te stranice u OM, a treće sadrži podatak 1 ili 0: 1 označava da stranica pripada tekućem aktivnom procesu, a 0 da je ta stranica ostala od prošlog procesa. Adresiranje se sada sprovodi upotrebom ovih registara: za zadatu programsku adresu (p) prvo se sprovodi pretraživanje adresnih registara. Ukoliko se stranica nalazi u adresnim registrima vrlo brzo pronađemo njenu fizičku adresu i pristupimo joj u memoriji. Ukoliko se stranica ne nalazi u adresnim registrima pristupimo PMT tabeli, i na osnovu nje izvršimo adresiranje. Nakon pristupa stranici i nju upisujemo u skup adresnih registara i dalje joj tako pristupamo. Ovakva organizacija ima smisla jer je velika verovatnoća da će se proces izvesno vreme zadržati na malom broju stranica kojima se pristupa preko adresnih registara. Pokazuje se da se u 99% slučajeva adresa izračunava preko adresnih registara dok je samo u 1% slučajeva potrebno pristupiti tabeli stranica.

Algoritmi zamene stranica

Problem izbora stranice za zamenu javlja se u slučaju kada nastane stranični prekid, tj. kada se zahteva da se učita nova stranica tekućeg procesa, a u memoriji nema slobodnih blokova. Problem se rešava tako što se neka stranica izbacuje iz memorije i na njeno mesto učitava tražena stranica. To se naziva zamenom stranica. Moguća su dva pristupa problemu zamene. Prvi pristup podrazumeva zamenu neke od stranica koje pripadaju tekućem procesu (lokalna zamena). Drugi pristup dozvoljava da se za zamenu izabere bilo koja stranica koja pripada bilo kojem od aktivnih procesa (ovde se pod aktivnim podrazumevaju procesi koji se nalaze u stanju spremih i stanju blokiranih). To je tzv. globalna zamena. U daljem izlaganju govorićemo o lokalnoj zameni, osim ako drugačije nije posebno naglašeno. Idealno rešenje za zamenu stranica daje algoritam optimalne zamene. Taj algoritam podrazumeva da se zamenjuje stranica koja neće biti korišćena najduže vremena u budućnosti. Ovaj algoritam služi samo za poređenje drugih algoritama, jer se ponašanje programa ne može predvideti.

Najjednostavniji algoritam zamene stranica zasnovan je na FIFO principu. Kod FIFO algoritma, međutim, može se javiti naizgled čudan efekat da sa povećanjem memorijskog prostora dodeljenog nekom procesu broj zamena stranica raste umesto da opada. Ovo je Beladeyeva anomalija.

Primer: BIFO algoritam (Biased in first out) je modifikovani FIFO u smislu da se nakon određenog vremena svakom procesu menja broj stranica dodeljenih za izvođenje čime se nastoji da svaki od procesa povremeno dolazi u povoljniju situaciju za izvođenje i da se time eliminiše uticaj FIFO anomalije.

LRU (Least receantly used) algoritam pretpostavlja da će ponašanje procesa u budućnosti biti slično ponašanju procesa u nedavnoj prošlosti, tj. da će proces vrlo verovatno u kraćim razmacima koristiti iste stranice. Ovaj algoritam je nešto teže implementirati, jer se mora voditi evidencija o svakom korišćenju stranice tokom izvođenja. To se može postići proširivanjem deskriptora za polje time stamp u koje se pri svakom pristupu stranici upisuje vreme pristupa. Kada se traži stranica za izbacivanje izbacuje se ona koja ima najmanji time stamp. Ovaj relativno jednostavan algoritam zahteva dodatni hardver, dodatni rad OS i povećava dužinu deskriptora stranice. Zato se često primenjuje njegova blaža varijanta poznata kao NUR (Not Used Receantly). Ovde se u page descriptor uvodi dodatni bit – bit pristupa (a – access) koji se za sve stranice nakon dogovornog kraćeg razdoblja postavlja na nulu. Posle toga svaki put kada se nekoj stranici pristupi taj se bit postavlja na 1. Kada neku stranicu treba prbaciti na spoljnu memoriju sve stranice koje imaju a=0. Obično se uzima prva na koju se naiđe.

Strategija LFU (Last Frequently Used) izbacuje stranicu koja je najmanje bila upotrebljavana. Takav algoritam se može implementirati tako što se pri svakom pristupu stranici referentno polje stranice (u deskriptoru stranice) uveća za 1. Zamenjuje se stranica koja ima najnižu vrednost. Nedostatak je taj što će novounesena stranica imati najmanji brojač, pa treba sprečiti izbacivanje upravo te stranice.

Primeri. U svim našim primerima referentni niz stranica biće:

1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.

1. First-In-First-Out (FIFO) algoritam

a) 3 bloka na raspolaganju

1

1

4

5

2

2

1

3

3

3

2

4

9 straničnih prekida

b) 4 bloka na raspolaganju

1

1

5

4

2

2

1

5

3

3

2

4

4

3

10 straničnih prekida

2. Optimalni algoritam

4 bloka na raspolaganju

1

1

4

2

2

3

3

4

4

5

6 straničnih prekida

3. Least Recently Used (LRU) algoritam

4 bloka na raspolaganju

1

1

5

2

2

3

3

5

4

4

4

3

Neki problemi funkcionisanja virtuelne stranične memorije

Iako se teorijski može dozvoliti da proces uzima slobodne blokove sve dok ih ima , to se obično ne radi. Procesima se dodeljuje maksimalan broj blokova koje mogu zauzeti (srazmerno veličini i prioritetu procesa). Kada proces dostigne taj limit i zatraži novi blok čak i ako ima slobodnih blokova jedna njegova stranica će biti izbačena.

Drugi problem vezan je za minimalan broj stranica koje proces mora imati da bi se mogao izvršavati. Može se desiti da se jedna instrukcija nalazi na dve stranice (presečena na granici dve stranice) a da se i njeni operandi nalaze na nekim drugim stranicama. Minimalni broj stranica određen je arhitekturom procesora , a broj blokova treba odrediti td. se i u najgorem slučaju sve instrukcije mogu izvršiti (npr add a, b, c može zahtevati u najgorem slučaju 8 blokova: operacioni kod u dva bloka, a u 2 bloka itd., ali je verovatnoća da se to desi zaista minimalna).

U prethodnom izlaganju se podrazumevalo da se iz memorije izbacuje stranica tekućeg procesa. To je takozvana lokalna zamena. Postoji i mogućnost globalne zamene, gde se dozvoljava izbacivanje stranice drugog procesa, ali se to retko primenjuje.

Problem, poznat pod nazivom trashing, javlja se u multiprogramiranju kada se u OM nalazi veliki broj procesa sa malim brojem stranica. Tada je potrebna česta zamena stranica koja generiše veliki interni rad i smanjuje iskorišćenost procesora. Rešenje se nalazi u definisanju radnog skupa stranica. Tom skupu pripadaju sve stranice koje je proces koristio u nekom intervalu (praktično stranice koje proces intenzivno koristi). Ako se nekom procesu traži da izbaci neku stranicu iz radnog skupa, onda je boje da se on suspenduje (ili neki proces sa nižim prioritetom).

Drugo rešenje je u definisanju minimalnog i maksimalnog broja straničnih prekida. U zavisnosti od frekvencije prekida dinamički se menja broj blokova koje proces ima na raspolaganju (ako je broj prekida veći od maximalno dozvoljenog procesu se dodeljuje više blokova, ako je manji od minimalnog procesu se oduzimaju blokovi na raspolaganju).

U nekim OS se primenjuje i strategija prepaging u kojoj se procesu ne dozvoljava početak bez određenog broja blokova (čak iako proces može početi sa manje blokova). Na taj način se sprečava veliki broj straničnih prekida na početku izvršenja.

U virtuelnoj straničnoj organizaciji kao problem se može javiti realizacija ulaza/izlaza. Ako je proces inicirao I/O a zatim nastavio rad, ili ako se koristi globalna zamena stranica može se desiti da stranica u koju se nešto upisuje (kao posledica ulaznih operacija) bude odabrana za zamenu. Ovo se može rešiti uvođenjem dodatnog bita (I- interlock) u deskriptor stranice, koji se setuje kada se startuje I/O. Prilikom odabiranja stranice za zamenu ne uzimaju se u obzir stranice sa I=1.

Segmentna i segmentno-stranična virtuelna memorija

Virtuelna memorija se organizuje i u slučaju segmentne organizacije praktično na isti način kao i stranična virtuelna memorija. U deskriptoru segmenta se pojavljuju biti V, A, RWE. Njihove funkcije su potpuno iste kao i u slučaju stranične virtuelne memorije.

Segmentno-stranična organizacija se takođe koristi za realizaciju virtuelne memorije. Pri tom V=1 znači da ni jedna stranica tog segmenta nije u memoriji, a V=1 da je bar jedna stranica procesa prisutna u memoriji.

Ključni pojmovi

strategija dodele

strategija smeštanja

strategija zamene

preklop (overlay)

statičke particije

dinamičke particije

relokatibilne particije

fragmentacija

kompakcija

algoritmi smeštanja

stranična organizacija OM

deskriptor stranice

zajedničko korišćenje stranica

segmentirana organizacija OM

zajedničko korišćenje i zaštita segmenata

stranično-segmentna organizacija. OM

virtualna memorija

straničenje na zahtev

stranični prekid

algoritmi zamene stranica

premašenje (trashing)

prepaging

Pitanja i zadaci za vežbu

1. Navesti funkcije Memory Manager-a.

2. Šta su to logičke a šta fizičke adrese?

3. Objasniti najprostiju MMU šemu sa relokacionim registrom?

4. Objasniti preklop (overlay).

5. Objasniti pojam fragmetacije memorije, šta je to kompakcija

6. Objasniti diskontinualnu alokaciju memorije. Koje sve tehnike postoje za diskontinualnu alokaciju?

7. Objasniti paging

8. Objasniti Deljive stranice (Shared Pages)

9. Objasniti segmentaciju

10. Objasniti zaštitu i deljenje segmenata

11. Objasniti segmentaciju sa straničenjem

12. Objasnititi pojam virtuelne memorije

13. Objasnititi pojam straničenje na zahtev (Demand Paging) i stranični prekid (page fault)

14. Navesti algoritme za zamenu stranica

15. Objasnititi FIFO algoritam

16. Šta je to Belady anomalija

17. Objasnititi Optimalni algoritam

18. Objasnititi LRU algoritam i kako se može aproksimirati

19. Objasnititi globalnu i lokalnu razmenu stranica

20. Objasnititi thrashing efekat

21. Slobodne memorijske particije: 100K, 500K, 200K, 300K i 600K redom. Kako će biti popunjavane po algoritmima: a) First-fitb) Best-fitc) Worst-fit

ako nailaze procesi sa sledećim memorijskim zahtevima: 212K, 417K, 112K, 426K? Koji od algoritama će na najbolji način koristiti memoriju?

22. Pretpostavimo da imamo sledeću tabelu segmenata:

SegmentBaseLength

0

219600

1

230014

2

90100

3

1327580

4

195296

Koje fizičke adrese će odgovarati sledećim logičkim adresama?

a) 0, 430 b) 1, 10

c) 1, 11

d) 2, 500e) 3, 400f) 4, 112

23. Referentni string za algoritme zamene stranica je:

1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6

Ako pretpostavimo da za ovaj proces u memoriji imamo na raspolaganju 3 frejma, kako će se oni dodeljivati i koliko će biti straničnih prekida ako se koristi algoritam:

a) FIFO

b) optimalni

c) LRU (Least recently used)

24. Data je sledeća sekvenca memorijskih referenci iz 460-bajtnog programa:

10, 11, 104, 170, 73, 309, 185, 245, 246, 434, 458, 364

Napisati referentni string ako su stranice veličine 100 bajtova

a) Koliko će biti straničnih prekida ako imamo na raspolaganju 200 bajtova primarne memorije i koristi se FIFO algoritam?

b) Koliko će biti straničnih prekida ako imamo na raspolaganju 200 bajtova primarne memorije i koristi se LRU algoritam?

c) a) Koliko će biti straničnih prekida ako imamo na raspolaganju 200 bajtova primarne memorije i koristi se optimalni algoritam?

b)

a)

Slika 1� SEQ Slika \* ARABIC �5� Dodeljivanje memorije izdeljene u statičke particije

Slika 1� SEQ Slika \* ARABIC �4� - Fragmentacija

Slika 1� SEQ Slika \* ARABIC �3� – Hardverska podrška za organizaciju po particijama

Slika � SEQ Slika \* ARABIC �1�1 – Monoprogramsko upravljanje memorijom

- 1 -

_1262287277.vsd
_1269016016.xls

Chart1

Monoprogram. upravljanje

Statičke particije

Dinamičke particije

Relokatibilne particije

Iskorišćenje
Iskorišćenje memorije
76%
0.5
0.6
0.76
0.85

Sheet1

Iskorišćenje

Monoprogram. upravljanje50%

Statičke particije60%

Dinamičke particije76%

Relokatibilne particije85%

_1262287279.vsd