Upload
alen-cerimovic
View
11
Download
0
Embed Size (px)
Citation preview
04/21/23 1
Operativni sistemi
04/21/23 2
Sadržaj
Uvod Dinamičke stranice Stranični prekid Struktura tabele stranica Algoritmi zamene stranica Poređenje FIFO i LRU
04/21/23 3
Sadržaj - nastavak
NRU algoritam Algoritam druge šanse Satni algoritam Višenivoske tabele stranica Veličina stranice Virtuelne i fizičke adrese - primeri
04/21/23 4
CPUCPU
reg.reg.
KEŠ
memorijamemorija diskdisk
veličina:brzina:$/Mbyte:Veličina linije:
32 B1 ns
8 B
Registar Keš Memorija Memorija diska
32 KB-4MB2 ns$125/MB32 B
1024 MB30 ns$0.20/MB4 KB
100 GB8 ms$0.001/MB
veće, sporije, jeftinije
8 B 32 B 4 KB
keš Virtuelna memorija
Hijerarhija memorije
04/21/23 5
Virtuelne memorije
Izloženi modeli upravljanja memorijom polazili su od pretpostavke da se program pre početka izvršavanja nalazi u memoriji, što znači da je manji od raspoložive memorije
U mnogim slučajevima nije potrebno da se za vreme izvršavanja programa sve procedure ili podaci nalaze u memoriji, pa su razvijene posebne programerske tehnike koje zaobilaze ograničenja OS sa izloženim modelima upravljanja memorijom
Opšte rešenje problema upravljanja memorijom treba da omogući izvršavanje programa proizvoljne veličine - OS sa virtuelnom memorijom
Virtuelna memorija
rešava problem eksterne fragmentacije rešava problem povećanja potrebne memorije rešava problem ograničenja veličine memorije
04/21/23 7
VIRTUELNA MEMORIJA
Virtuelna memorija - konceptualno razdvajanje korisničke logičke memorije od fizičke memorije. Tako možemo imati veliku virtuelnu memoriju na sistemu sa malom fizičkom memorijom.
Virtuelnamemorija
Memorijskopreslikavanje
Fizičkamemorija
Disk
Pojedinačne stranice
04/21/23 8
Virtuelna memorija - prikaz
Virtuelni adresni prostor
Program
Fizički adresni prostor
Glavna memorija
Virt. stranica
Virt. stranica
Virt. stranica
Fiz. stranica
Fiz. stranicaOkvir stranice
Stranica na disku
Stranica na disku
Stranica na disku
Disk
Stranica nije mapirana u glavnu memoriju.
04/21/23 9
Virtuelno adresiranje
Virtuelna (logička) adresa se preslikava u stvarnu adresu koristeći tabelu stranica
Veličina fizičke adrese je ograničena veličinom memorije
Šta ograničava veličinu virtuelne adrese??
Broj stranice
Tabelastranica
Pomeraj
PomerajBroj okvira
Virtuelna adresa
Fizička adresa
04/21/23 10
Virtuelna memorija povećava veličinu memorije
Virtuelna memorija može biti veća od fizičke memorije
Dati proces može da koristi više memorije
Ograničena je samo veličinom “swap” prostora na disku
Više programa može da se napuni u isti virtuelni memorijski prostor
Tabela stranica preslikava virtuelne adrese u adrese fizičke memorije
04/21/23 11
Virtuelna memorija – korišćenje hardvera
Hardver preslikava virtuelne adrese u fizičke memorijske adrese
magistrala
Memorija
Diskkontrole
r
CPU
MMU
šalje virtuelne adrese do MMU
šalje fizičke adrese do memorije
04/21/23 12
“Swap” memorija na disku
Stranice koje nisu u glavnoj memoriji su memorisane unutar posebnog prostora na disku – “swap” prostor
Stranice
0
4 6
3
Tabela stranica
6
43
0
7
5
21
“Swap” prostor
Glavna memorija Disk
04/21/23 13
Thrashing – sistem više vremena “swap”-uje stranice nego što izvršava kod
proces Bproces A
proces D proces C
Translac.
adresa
Memorijski okviri
“swap” disk
prelaz na proces B, za koji je mali broj stranica napunjen u glavnoj mem. Zatim na procese C, D, A
04/21/23 14
Tehnika preklapanja
• Tehnika međusobnog preklapanja ("overlay"), omogućava da se definišu konkurentni delovi koda ili podataka, za koje ne postoji istovremena potreba prilikom izvršavanja
• Informacije o konkurentnim delovima programa ugradio bi program za povezivanje u program na način koji omogućava da se tokom izvršavanja pojedini delovi koda ili podataka izbacuju iz memorije na disk, a na njihovo mesto u iste memorijske lokacije sa diska unose druge procedure ili podaci i tako omogući da se izvrši program koji je po veličini bio veći od raspoloživog dela memorije
04/21/23 15
Preklapanje i OS• Opšte rešenje: Mehanizam za preklapanje se ugrađuje u OS koji
koristi mehanizme segmenata i/ili stranica• Ako OS koristi mehanizam segmenata, na početku rada se samo
segment glavnog programa unosi u memoriju, a neki drugi segment u trenutku kada se eksplicitno pojavi potreba za segmentom koji nije u memoriji
• Ako OS koristi mehanizam stranica na početku rada u memoriju se unosi samo početna stranica programa, a neka druga se unosi u trenutku kada instrukcija koja se izvršava zahteva pristup stranici koja nije u memoriji
• Ako u memoriji nema mesta za novi segment (ili stranicu) vrši se izbacivanje nekog segmenta (stranice) iz memorije i ubacivanje traženog segmenta (stranice)
04/21/23 16
IMPLEMENTIRANJE VIRTUELNE MEMORIJE
Postoje dva opšta pristupa za implementiranje virtuelne memorije: pomoću segmenata i pomoću stranica Rad sa segmentima: memorija se deli u segmente različite veličine Virtuelna adresa ima dve komponente: broj segmenta i pomeraj (offset) Osnovna jedinica za prenošenje između primarne i sekundarne memorije je segmentRad sa segmentima omogućava programeru veću kontrolu nad jedinicama transfera u odnosu na rad sa stranicamaNedostatak segmentne organizacije: eksterna fragmentacija
04/21/23 17
IMPLEMENTIRANJE VIRTUELNE MEMORIJE POMOĆU STRANICA
Organizacija memorije u obliku stranica: memorija se deli na stranice koje imaju fiksnu veličinu Osnovna jedinica za prenošenje između primarne i sekundarne memorije je stranica Kod rada sa stranicama program za upravljanje virtuelnom memorijom ima potpunu kontrolu i odgovornost za transfer stranica Smeštanje stranica u primarnu memoriju je fleksibilnije od smeštanja segmenata Segmentnu organizaciju memorije je teže koristiti i teže implementirati od organizacije u obliku stranica
04/21/23 18
Virtuelna memorija organizovana u stranice (dinamičke stranice)
• Osnovna razlika između mehanizma upravljanja memorijom pomoću statičkih i dinamičkih stranica je u pogledu unošenja
• Kod dinamičkih stranica unošenje u memoriju vrši se isključivo po zahtevu ("demand paging"), jer u tabeli stranica postoje stranice i sa “nil” vrednošću pokazivača na pripadajući memorijski blok
• Kada se u toku izvršavanja programa traži pristup adresi koja pripada strani koja nije u memoriji dolazi do prekida programa, stranični prekid (page fault)
04/21/23 19
Postupak izvršavanja instrukcije kod dinamičkih stranica
1. Ako je programska adresa kojoj se pristupa u memoriji, nastavi sa izvršavanjem instrukcije, inače idi na korak 2
2. Prekini izvršavanje programa
3. Nađi slobodan memorijski blok. Ako takav blok ne postoji izbaci jednu od stranica dodeljenih programu i tako oslobodi blok
4. Pronađi na disku stranicu kojoj se pristupa i upiši je u raspoloživ blok
5. Ažuriraj tabelu stranica (upiši adresu bloka u koji je smeštena stranica)
6. Iniciraj izvršavanje instrukcije koja je izazvala prekid
04/21/23 20
Stranični prekid
Pojavljuje se kada proces pristupa stranici koja nije u memoriji
Memorijapuna?
Pokrenutinovi spreman
proces
Ažurirati tabelustranica
Blokirati tekućiproces
Izbaciti stranicuIz memorije
da
ne
Učitati stranicu sadiska
Stranicanapunjena?
Označiti procesda je spreman
da
ne
Početak procesiranja straničnog prekida Procesiranje kada se stranicanapuni
04/21/23 21
Procesor signalizira kontroleru
Čitanje bloka veličine P počev od adrese X na disku i upisivanje u memoriju počev od adrese Y
Čitanje počinje
Direktan memorijski pristup (DMA)
Pod kontrolom U/I kontrolera
U/I kontroler signalizira završetak
Prekid rada procesora
OS nastavlja suspendovani proces
diskDiskdiskDisk
Memorija-U/I magistralaMemorija-U/I magistrala
ProcesorProcesor
KešKeš
MemorijaMemorijaU/I
kontroler
U/Ikontroler
Reg
(2) DMA prenos
(1) Iniciranje čitanja bloka
(3)Čitanjezavršeno
Servisiranje straničnog prekida
04/21/23 22
STRUKTURA TABELE STRANICA
Najveći broj operativnih sistema za svaki proces kreira posebnu tabelu stranica. U kontrolnom bloku procesa se čuva i pokazivač na tabelu stranica procesa. Kod savremenih računara sa velikim kapacitetom memorije broj okvira stranica je veći od milion. Tabeli stranica se mora pristupiti kod svakog referenciranja memorije.Za čitanje jednog bajta iz memorije potrebna su dva čitanja.
04/21/23 23
TLB bafer
TLB (Translation Look-aside Buffer) – Asocijativna memorija koja se koristi u radu sa tabelama stranica (keš memorija za tabelu stranica). Sadrži broj stranice i broj okvira. Broj asocijativnih registara u TLB-u je između 8 i 2048 Ukoliko broj stranice nije u TLB-u tada se mora pročitati tabela stranica sa diska da bi se dobio broj okvira Kod savremenih računara procenat pogađanja je do 98%
04/21/23 24
Algoritmi zamene stranica
• Algoritmi zamene stranica rade sa diskom, pa su smene stranica vremenski “skupe” operacije (ms u odnosu na ns u radu sa memorijom!!!) i loš algoritam značajno degradira performanse sistema
• Dobri algoritmi za zamenu stranica uče iz iskustva. Na osnovu istorije “ponašanja” programa pokušavaju da predvide njegovo buduće “ponašanje”
• Najpoznatiji algoritmi zamene stranica– FIFO (First In First Out) – LRU (Least Recently Used)– OPT (Optimal)
04/21/23 25
FIFO algoritam
• FIFO algoritam izbacuje stranu koja je najduže boravila u memoriji
• Primer rada FIFO algoritma u dva slučaja – kada su programu dodeljena samo dva
memorijska bloka – kada su programu dodeljena tri memorijska
bloka
04/21/23 26
Trag adresa
• Trag adresa - redosled brojeva strana kojima je program u toku izvršavanja pristupio
• Masno podvučeni su brojevi strana koje su izazivale stranične prekide
• U okvirima su prikazani brojevi strana koje se trenutno nalaze u memoriji, pri čemu su “najstarije” stranice, kandidati za izbacivanje, označene sa zvezdicom
04/21/23 27
Rad FIFO algoritma za zamenu stranica
1*
3
-
1*
3
4
1
-
-
1*
3
4
1*
3
4
5
1
4*
5*
1
3
5
3*
4
5*
1
3
2
1*
3
2
5
3*
2*
5
1
2
1*
3
3
5*
1
3
5*
1
Tragadresa 1 3 4 1 4 5 1 3 5 2 3 5 1 3 5
Okvir 1
Okvir 2
Okvir 3
1*
3
4
3*
1
-
4*
1
4*
1
5
1*
5*
3
5
1*
5*
3
2
3*
2*
5
1
5*
2
3*
1*
3
5
3*
Tragadresa 1 3 4 1 4 5 1 3 5 2 3 5 1 3 5
Okvir 1
Okvir 2
(a) Programu su dodeljena dva okvira
(b) Programu su dodeljena tri okvira
04/21/23 28
Analiza rada FIFO algoritma
• Broj straničnih prekida opada sa povećanjem broja blokova dodeljenih programu • za dva bloka relativna frekvencija straničnih
prekida je 74%, • za tri bloka 67%
• Anomalija FIFO algoritma - za isti trag adresa pri povećanju broja dodeljenih blokova može doći do povećanja broja straničnih prekida !
FIFO zamena stranica
FIFO Belady-eva anomalija
04/21/23 31
LRU algoritam zamene stranica
• LRU algoritam izbacuje stranu koja je najduže nekorišćena
• Primer rada LRU algoritma sa istim tragom adresa i istim brojem memorijskih blokova kao u slučaju FIFO algoritma
04/21/23 32
Rad LRU algoritma za zamenu stranica
1*
3
-
1*
3
4
1
-
-
1
3*
4
1
3*
4
1
5
4*
1
5*
3
1*
5
4
1*
5
3
2
5
3*
2*
5
3
1
5
3*
2
5*
3
1
5*
3
1*
5
3
Tragadresa 1 3 4 1 4 5 1 3 5 2 3 5 1 3 5
Okvir 1
Okvir 2
Okvir 3
1*
3
4
3*
1
-
4*
1
4
1*
5*
1
3
1*
5
4*
3*
5
2
5*
5
3*
5*
1
2*
3
3
1*
3*
5
Tragadresa 1 3 4 1 4 5 1 3 5 2 3 5 1 3 5
Okvir 1
Okvir 2
(a) Programu su dodeljena dva okvira
(b) Programu su dodeljena tri okvira
04/21/23 33
Poređenje FIFO i LRU
• Razlika se uočava u pristupima memoriji kod kojih je strana kojoj se pristupa već u memoriji, jer strana sigurno postaje “najsvežija”, pa za LRU neka druga strana je kandidat za izbacivanje
• Pri manjem broja blokova moguće je da FIFO algoritam pokaže bolje performanse (manji broj straničnih prekida) dok sa povećanjem broja blokova LRU algoritam pokazuje bolje rezultate (relativna frekvencija straničnih prekida za dva bloka iznosi 94%, a za tri okvira pada na 47%)
• LRU spada u algoritme kod koji FIFO anomalija nije moguća
04/21/23 34
LRU algoritam – primer 2
Trag
012
Trag
0123
LRU zamena stranica
04/21/23 36
Ostali algoritmi zamene stranica
• FIFO i LRU algoritmi spadaju u klasu algoritama kod kojih se programu unapred odredi određen broj memorijskih blokova
• OPT algoritam zamenjuje onu stranicu koja se u budućnosti najduže neće koristiti. Ovaj algoritam ostvaruje najbolji broj straničnih prekida, ali njegova implementacija u praksi nije moguća.
• Postoje i složeniji algoritni kod kojih se broj blokova dodeljen programu menja (raste i opada) u toku jednog izvršavanja
OPTIMALNI algoritam zamene stranica
04/21/23 38
NRU (Not Recently Used) algoritam
• Kriterijum za izbacivanje stranice – ona kojoj nije skoro pristupljeno.
• Uvode se dva bita za svaku stranicu: bit R za pristup i bit M za upis (stranica je ažurirana).
• Hardverski sat svakih 20 ms generiše prekid i automatski se svi R biti postavljaju na nulu.
• Pri učitavanju virtuelne stranice u glavnu memoriju bit M se postavlja na nulu.
• Hardverski sat ne resetuje M bite, već samo pri učitavanju nove virtuelne stranice.
04/21/23 39
NRU (Not Recently Used) algoritam - nastavak
• Postoje 4 klase fizičkih stranica (na osnovu R i M bita):
00 – nije bilo pristupa u poslednjih 20 ms i nije bilo modifikacije sadržaja,
01 – nije bilo pristupa u poslednjih 20 ms ali je bilo modifikacije sadržaja,
10 – bilo je pristupa u poslednjih 20 ms i nije bilo modifikacije sadržaja i
11 – bilo je pristupa u poslednjih 20 ms i bilo je modifikacije sadržaja.
• Ovo je ujedno i redosled izbacivanja stranica iz glavne memorije.
04/21/23 40
Algoritam druga šansa (“Second chance”)
• Algoritam predstavlja poboljšanje FIFO algoritma. • Dodatak u listi deskriptora: R bit koji označava da li je
bilo pristupa stranici u poslednjih 20 ms. • Ako je kod prvog elementa liste R bit postavljen na
jedinicu, tada se bit R postavlja na nulu i deskriptor se prebacuje na kraj liste.
• Ovaj postupak se ponavlja dok se ne pronađe stranica koja se može izbaciti.
• Kada su svi R biti postavljeni na nulu, algoritam se ponaša kao FIFO.
04/21/23 41
Algoritam druga šansa (“Second chance”) - nastavak
• Kada su svi R biti postavljeni na jedinicu moguća je situacija da ni jedna stranica ne može da se izbaci iz glavne memorije.
• Ovo se rešava tako što se nakon jednog prebacivanja prvog elementa liste na kraj liste onemogućava postavljanje R bita na jedinicu (čak iako se u međuvremenu pristupi toj stranici).
04/21/23 42
Satni algoritam
• Satni algoritam – poboljšanje algoritma druge šanse • Deskriptori stranica se povezuju u kružnu listu • Pokazivač pokazuje na deskriptor najstarije stranice • Ako je R bit postavljen na jedinicu, tada se on
postavlja na nulu i pokazivač se pomera na sledeći deskriptor
• Ako je R bit postavljen na nulu, ubacuje se nova stranica, ažurira se pokazivač da pokazuje na nju i pomera se pokazivač kružne liste na sledeći element
• Na ovaj način se poboljšavaju performanse u odnosu na prethodni algoritam
04/21/23 43
• Dato:• 4KB (212) veličina stranice• 32-bit adresni prostor• 4-byte PTE (page table entry)
• Problem:• Potrebna je tabela stranica veličine 4 MB!
• 220 *4 bajtova• Rešenje
• Višenivoske tabele stranica• npr, 2-nivoska tabela
• Tabela 1 nivoa: 1024 rekorda, od kojih svaki pokazuje na tabelu stranica 2 nivoa.
• Tabela 2 nivoa: 1024 rekorda, od kojih svaki pokazuje na stranicu
Tabela
1 nivoa
...
Tabele
2 nivoa
Višenivoske tabele stranica
04/21/23 44
Veličina stranice
Ako je suviše velika pojavljuje se fragmentacija i nekorišćeni delovi stranice.
Ako je suviše mala održavanje tabele stranica postaje značajno, tj. U/I aktivnost postaje vremenski zahtevna.
Obično je veličina stranice stepen broja 2.
Tipična veličina stranice je
od 512 B do 8 KB
04/21/23 45
Veličina stranice - nastavak
Veoma male stranice povećavaju broj straničnih prekida
Velike stranice ograničavaju broj “rezidentnih” procesa
Ako je veličina logičkog adresnog prostora 2m, veličina stranice 2n adresibilnih jedinica, tada n bita manje težine predstavlja pomeraj unutar stranice, a m-n bita veće težine logičke adrese određuje broj stranice.
04/21/23 46
Zavisnost broja straničnih prekida od veličine stranice
Male stranice: memorija sadrži samo ono što je potrebno (mali broj straničnih prekida)Veće stranice: memorija sadrži i delove koji joj nisu potrebni (broj straničnih prekida se povećava) Broj straničnih prekida opada kada je veličina stranice jednaka veličini procesaBroj prekida zavisi i od broja okvira koji su dodeljeni po procesu
04/21/23 47
Algoritmi za rad sa dinamičkim stranicama kod savremenih operativnih sistema
Veličina fizičke memorije koja je dodeljena procesu varira u vreme izvršavanja procesa (broj okvira stranica). Koliko memorije treba dodeliti procesu?
Veličina dodeljene memorije se menja u zavisnosti od faze procesa.Broj straničnih prekida ne sme biti veliki.
Savremeni modeli se zasnivaju na radnom skupu (“working set“) stranica. Radni skup stranica je skup aktivnih stranica u datom vremenskom intervalu. Proces p treba preneti u memoriju i da bude aktivan ako se može dodeliti dovoljan broj okvira stranica za ceo radni skup.
04/21/23 48
Dodela memorije procesima
MOGUĆA REŠENJA SU: svakom procesu dodeliti isti broj stranica,
dodela memorije na osnovu veličine procesa,
dodela memorije na osnovu prioriteta procesa
04/21/23 49
PRIMER 1:Ako procesor ima 32-bitne virtuelne adrese, 28-bitne fizičke adrese i stranice veličine 2 KB, koliko bita se može koristiti za redne brojeve virtuelnih i fizičkih stranica?
Odgovor: Za offset unutar jedne stranice je potrebno 11 bita. 21 bit za redne brojeve virtuelnih stranica (32-11) 17 bita za redne brojeve fizičkih stranica (28-11)
04/21/23 50
PRIMER 2:Dati sistem ima 48-bitne virtuelne adrese, 36-bitne fizičke adrese i 128 MB glavne memorije. Ako sistem koristi stranice veličine 4096 bajtova, koliko virtuelnih i fizičkih stranica sistem može da podrži? Koliki je broj okvira stranica u glavnoj memoriji?
Odgovor: Za offset unutar jedne stranice je potrebno 12 bita. Virtuelni adresni prostor može da podrži 236 virtuelnih stranica. Fizički adresni prostor može da podrži 224 fizičkih stranica. Broj okvira stranica je 32,768, tj. (128 MB : 4 KB).