Memory - vjj root page

Komentáře

Transkript

Memory - vjj root page
Memory Management
9.12.2015
vjj
1
správa paměti
• sledování stavu paměti
•
•
free
used
• strategie přidělování paměti
• techniky přidělování paměti
• realizace uvolňování paměti
9.12.2015
vjj
2
kdy?
• start programu
• dynamické alokace?
•
•
•
RAM
virtual memory
heap
• přerozdělování paměti
• RAM vs. virtuální paměť
9.12.2015
vjj
3
historie
• x-bitový pravěk
• 32-ti bitový starověk – klasika (sálové počítače)
• 8-mi/16-ti bitový středověk – doba temna
• 32-ti bitový novověk – renesance
• 32-ti/64-ti bitová současnost
9.12.2015
vjj
4
geneze
•
jedna souvislá oblast
•
sekce
•
dynamické přemisťování sekcí
•
stránkování
•
stránkování na žádost
•
segmentace
•
segmentace a stránkování na žádost
9.12.2015
vjj
5
pravěk
srozumitelná jednoduchost
9.12.2015
vjj
6
jediná souvislá sekce
•
jednoduchost
adresa v programu je skutečnou adresou
ve fyzické RAM paměti počítače
•
privilegovaný
•
mezní registr – ochrana paměti OS
•
nevýhody:
•
9.12.2015
•
•
x
uživatelský stav
nevyužita CPU i paměť
omezení úloh velikostí paměti
první (sálové) počítače a po desítkách let znovu první PC
(DOS)
vjj
7
•
source
Start 700
Define A
A = A + <0x708>
•
compiler -> assembly language
load A
add
<0x708>
store A
•
compiler -> obj ( -> link -> exe )
load
0x700
add
0x708
store 0x700
9.12.2015
vjj
8
Von Neumann scheme
ADD
SUB
ZA
∑
RAM
input
3
20
010
28
100
data register
instruction register
2
op. code
7
30 LOAD 28 address register
32 ADD 20
addr
micro-programs
1
4
6
R
W
instruction counter
5
9.12.2015
vjj
A
+2
9
ranný starověk
fixed number of partitions
multitasking
9.12.2015
vjj
10
pevně dané sekce
• výhody: multitasking
• adresa v programu je relativní vůči počátku sekce
• dynamické určení sekcí
•
•
9.12.2015
jednoduchá tabulka přidělených a volných sekcí
nevýhody:
•
•
zbytečné obsazení paměti nepoužitými částmi programu
nevyužitá zbylá část sekce
vjj
11
sekce
free
pgm 1
free
pgm 2
free
9.12.2015
vjj
12
?
source
compiler -> obj
( -> link -> exe )
A = A + B
compiler ->
assembly language
load
A
add
B
store
A
9.12.2015
load
0x700
add
0x708
store
0x700
loader -> RAM (5th partition)
vjj
load
0x4700
add
0x4708
store
0x4700
13
Base register
store
A = A + B
*, BaseReg
. . .
store
*, BaseReg
load
0x700
add
0x708
store
0x700
store
. . .
0x4000,BaseReg
. . .
load
A
load
0x700+BaseReg
add
B
add
0x708+BaseReg
store
A
store
0x700+BaseReg
9.12.2015
vjj
14
rozvinutý starověk
variable number of partitions
->
dynamické sekce
9.12.2015
vjj
15
sekce
free
pgm 1
free
pgm 2
free
9.12.2015
vjj
16
starověk - dynamické sekce
• přidělování oddělených sekcí
•
adresy v každé části programu jsou modifikovány jiným
segmentovým registrem
•
nevýhody: fragmentace paměti
• virtuální paměť (skoro)
•
9.12.2015
není třeba umístit do paměti celý program najednou,
dodatečně potřebné moduly mohou být v samostatné
části, které se sekce paměti přidělí až když to je
zapotřebí
vjj
17
dynamické přemisťování sekcí
• compaction, recompaction, relocation
•
•
•
•
hned po uvolnění paměti
až podle potřeby
když je čas
když je to výhodné (???)
•
•
typ + data
relokační registr, limit
• přeadresování
• výhody: eliminace fragmentace
• nevýhody: cena, čas, vždy celé moduly
9.12.2015
vjj
18
vrcholný starověk
zlatá éra
virtuální paměť
9.12.2015
vjj
19
stránkování
•
adresový prostor programu rozdělen na stránky
(logické stránky)
(4 kB)
•
fyzická paměť rozdělena na rámce
(fyzické stránky)
(4 kB)
•
transformace adres pomocí tabulek stránek
•
překlad adres z logických na fyzické provádí procesor
•
výhody: eliminace fragmentace
•
nevýhody: složitější HW,
práce s tabulkami,
v RAM je vždy celý program
9.12.2015
vjj
20
přepočítávání adres
load
0x3700
add
0x3708
store
0x3700
PGM
page
0
RAM
frame
96
1
403
2
12
3
87
0x3700 =
= page 3 + 0x700
= frame 87 + 0x700
9.12.2015
vjj
21
stránkování na žádost
• virtual memory
proč virtuální?
• fyzické rámce jen pro stránky, které jsou skutečně
používány
• tj. celkový počet stránek všech programů,
ale dokonce i jediného programu,
může překročit celkový počet fyzických rámců
RAM
9.12.2015
vjj
22
stránkování na žádost
•
stránka alokována – příznak VALID
tj. informace o tom, že odpovídající řádek v tabulce stránek byl
již inicializován
•
výpadek stránky – příznak PRESENT
tj. údaj v tabulce stránek o tom, ve kterém fyzickém rámci je
stránka umístěna, je platný
•
algoritmy nahrazování stránek – hledání oběti
•
9.12.2015
•
•
•
•
•
FIFO
LRU – Least Recently Used
NUR – Not Used Recently – algoritmus druhé naděje – příznak
ACCESSED
clock algorithm – varianta NUR
sdružování dvojic
ukládání změn jen když to je nutné – příznak DIRTY
vjj
23
tabulka stránek
PGM
page
9.12.2015
VALID PRESENT
RAM ACCESSED
frame
DIRTY
0
1
1
96
0
0
1
1
0
403
0
0
2
1
1
12
1
1
3
0
0
87
0
0
vjj
24
stránkování
knihovna - dokument - šanon - stránka
knihovník
9.12.2015
vjj
tabulka 1
úředník 1
tabulka 2
úředník 2
tabulka 3
úředník 3
25
stránkování na žádost
knihovna - dokument - šanon - stránka
sklad
9.12.2015
skladník
knihovník
vjj
tabulka 1
úředník 1
tabulka 2
úředník 2
tabulka 3
úředník 3
26
segmentace
• logické seskupení informací
• důsledné dotažení myšlenky algoritmu sdružování
dvojic
• dynamické sestavovaní / linkování – předchůdce
DLL
• sdílené segmenty
• tabulka segmentů
• ochrana segmentů
• nevýhoda: fragmentace
9.12.2015
vjj
27
segmentace
• segment – sada vlastních relativních adres
+ index (selektor) do tabulky deskriptorů
• deskriptor popisuje blok virtuální paměti
Program
segment 1
Virtuální
paměť
tabulky
deskriptorů
segment 2
9.12.2015
vjj
28
segmentace a stránkování na žádost
• konec šedesátých let minulého století
• vrchol memory managementu v operačních
systémech sálových počítačů
9.12.2015
vjj
29
virtuální paměť
Virtuální
paměť
disk
Virtuální
paměť
RAM
pgm modul 2
pgm modul 2
pgm modul 1
data modul 1
pgm modul 1
data modul 1
data modul 2
data modul 2
pgm modul 1
pgm modul 2
sys modul 1
sys modul 2
9.12.2015
data modul 2
data modul 1
sys modul 1
sys modul 1
sys modul 1
sys modul 2
sys modul 2
vjj
sys data
sys modul 2
30
středověk
minipočítače, první PC
PC
1024
1024
CPU
16 bitů
24 bitů
RAM
640 kB
384
memory
1024 kB
0000
512 kB -> 640 kB -> 1 MB -> 16 MB
383
HW
0000
9.12.2015
vjj
32
DOS
• (jediný společný) adresový prostor 1 MB
• offset (16 bitů)
+
segment (16 bitů)
=
adresa (20 bitů)
1
16
2
...
F
F
F
F
F
F
F
F
...
F
F
F
F
F
0
F
F
E
F
 B  64*1024  B  64  kB
1 MB  64 kB  16 B
9.12.2015
vjj
33
A = A + B
store
*, BaseReg
store
dataSeg, DataReg
. . .
store
store
. . .
load
add
store
9.12.2015
*, CodeReg
dataSeg, DataReg
load
0x700
add
0x708
store
0x700
store
store
. . .
load
add
store
A
B
A
vjj
0x4000, CodeReg
0x5000, DataReg
0x700 + DataReg
0x708 + DataReg
0x700 + DataReg
34
adresový mód Windows 3.x
• reálný (max 640 kB RAM)
- 8086
• standardní (max 16 MB, RAM)
- 80286
• enhanced (max 16 MB, RAM a swap file)
- 80386
16  = 224 
9.12.2015
vjj
35
kouzla a čáry
16 MB
RAM
15 MB
1 MB
1024
CPU
16 bitů
24 bitů
RAM
640 kB
384
memory
1024 kB
0000
383
64 kB
HW
0000
9.12.2015
vjj
36
Windows 3.x
• nepreemptivní multitasking:
Windows + všechny aplikace = jediný proces
• vlastní správa paměti
• hadle
<-> adresa
• zamykání segmentů
• defragmentace
9.12.2015
vjj
37
Windows 3.x
• jeden společný, reálný, adresový prostor pro
RAM
•
DOS
•
program Windows 3.x
2. aplikace
•
všechny Win16 aplikace
3. aplikace
• retro:
•
•
9.12.2015
1. aplikace
smartphones
Windows Metro
Windows
DOS
vjj
38
novověk
32-bitů
virtual memory
9.12.2015
vjj
39
Intel
1. logická adresa: offset a (impl./expl.) registr
registr = selektor = index do tabulky deskriptorů
deskriptor: bázová adresa a limit segmentu
2. lineární/virtuální adresa = ( báze + offset )
32 bitů => virtuální adresový prostor 4 GB
3. fyzická adresa: tabulky stránek
9.12.2015
vjj
40
1. - logická adresa
• selektor (16 bitů)
•
segmentové registry:
CS, DS, ES, SS, FS, GS
• offset (32 bitů)
9.12.2015
vjj
41
tabulky deskriptorů
• standardní deskriptor segmentu
9.12.2015
•
začátek segmentu ve virtuální paměti
•
velikost segmentu
•
granularita
•
Descriptor Privilege Level
(1 byte
vs.
vjj
4 kB)
43
tabulky deskriptorů
• GDT –
globální
jediná pro celý systém,
informace o segmentech
obsahujících TSS, LDT, IDT, ...
• LDT –
lokální
jedna pro každý proces,
informace o jednotlivých
segmentech procesu
• IDT –
Interrupt Descriptor Table
9.12.2015
vjj
44
segmentace
• oddělení kódu a dat, ...
GDT
Virtuální paměť
IDT
segment 1
tabulky
deskriptorů
segment 2
9.12.2015
vjj
45
2. virtuální adresa
Virtuální
paměť
disk
Virtuální
paměť
RAM
pgm modul 2
pgm modul 1
pgm modul 2
data modul 1
pgm modul 1
data modul 1
data modul 2
pgm modul 1
data modul 2
pgm modul 2
sys modul 1
data modul 2
data modul 1
sys modul 2
9.12.2015
vjj
sys modul 1
sys modul 1
sys modul 1
sys modul 2
sys modul 2
sys data
sys modul 2
47
Windows 95, 98, Me
•
2 GB privátního virtuálního prostoru –
obsahuje moduly aplikace (EXE, DLL)
•
další 2 GB přístupné pouze pro systém:
9.12.2015
•
1 GB sdíleného virtuálního prostoru –
(změny provedené jedním procesem se
ihned projeví ve všech ostatních
procesech)
obsahuje systémové moduly !!!
•
1 GB systém (ring 0)
vjj
48
9.12.2015
vjj
49
NT, W2K, XP, W2K3, W7
•
2 GB privátního virtuálního prostoru
•
•
•
moduly aplikace (EXE, DLL)
systémové moduly (copy-on-write)
sdílená paměť
•
2 GB systém (ring 0) - přístupné pouze pro systém
•
•
W2K a W2K3 mají možnost dělení 3:1
9.12.2015
DataServer používá toto rozdělení standardně
vjj
50
3. - fyzická adresa
• Lineární adresa rozdělena na 3 části:
• bity 31 - 22
adresář tabulek stránek
(1024 tabulek)
•
bity 21 - 12
tabulka stránek
(1024 stránek)
•
bity 11 - 0
offset
(12 bitů -> stránka = 4 kB)
• ---------------------------------------------------1024 x 1024 x 4 kB = 4 GB
9.12.2015
vjj
55
stránkování
• virtuální adresy obsahují index (indexy) do
tabulky (tabulek) stránek a offset
• transformace adres pomocí tabulek stránek
Virtuální
paměť
process
RAM
tabulka
stránek
tabulka
stránek
adresář
tabulek
stránek
tabulka
stránek
9.12.2015
vjj
58
rozdělení úkolů
•
•
9.12.2015
HW - procesor
•
při provádění instrukce vyhledá podle tabulek stránek v RAM
obsah adresy uvedené v instrukci
•
pokud podle tabulek stránek není stránka v paměti přítomna interrupt - výpadek stránky
SW - operační systém
•
při alokaci paměti vyhledá podle VAD vhodné místo ve virtuální
paměti a podle toho upraví záznamy v tabulkách stránek, v
tabulkách souborů a ve VAD
•
•
•
pokud to je nutné, vybere nejdřív oběť
podle příznaků určí, jestli je nutné stránku zapsat zpět na disk
podle údajů v tabulkách souborů určuje kam a odkud se mají
stránky zapisovat nebo číst
vjj
59
Page Table Entry
•
9.12.2015
0
1
2
3
4
5
6
7
8
9
10
11
12-31
V
W
O
Wt
Cd
A
D
PDE
Gl
Cw
P
U
PFN
Valid
Write (writable on MP system)
Owner (K/U)
Write through
Cache disabled
Accessed
Dirty
large page
Global
reserved
reserved
reserved (writable on MP system)
Page Frame Number
vjj
62
TLB
9.12.2015
vjj
64
System Memory Pool
• Nonpaged pool
•
•
•
•
části systémového virtuálního prostoru
stále v RAM
přístup k nim nemůže způsobit výpadek stránky
nutné při zpracování přerušení
• Paged pool
•
•
9.12.2015
části systémového virtuálního prostoru
mohou být vystránkovány
vjj
65
Working Set
•
množina virtuálních stránek každého procesu a Systému
přítomných v RAM
•
private
•
paged pool
•
size trimming
9.12.2015
x
shared
x
nonpaged pool
vjj
67
Windows
• při HW výpadku stránky je načten rovnou celý
"cluster" stránek:
•
•
data
-
4 stránky
kód
-
8 stránek
• výběr oběti:
•
9.12.2015
local NUR (clock algorithm)
NT, W2K on multiprocessor systems:
vjj
local FIFO
68
memory queues
Active
1
process
Modified
process
3
Standby
4
process
2
1.
2.
3.
4.
5.
dirty page removed from working set
clean page removed from working set
modified page writer
page deallocated
Zero-page thread clears page
Free
system
5
Zeroed
system
memory queues
Active
1
process
Modified
Standby
Free
Zeroed
process
process
system
system
2
3
1. "soft" page fault
2. "soft" page fault
3. page read from disk or kernel allocations
4. demand zero page fault
4

Podobné dokumenty

Technologie počítačových sítí 6. přednáška

Technologie počítačových sítí 6. přednáška doc. PhDr. Milan Klement, Ph.D. Příklad neřešil problém sériové linky propojující firmu s Internetem. To je třeba projednat vždy s poskytovatelem. Možná, že se vám zdá, proč připojovat jednotlivé ...

Více

Cloud computing

Cloud computing Testovací prostředí nepoběží v noci, ale jen v pracovní dobu

Více

digitální podpis

digitální podpis záruka bezchybného a/nebo neškodného kódu - NE

Více

Téma 4: Adresy a adresování v TCP/IP, IP adresy verze 4

Téma 4: Adresy a adresování v TCP/IP, IP adresy verze 4 • pokud se dvě síťová rozhraní nachází ve stejné síti, musí mít jejich IP adresy stejnou síťovou část (network ID) • a naopak různé relativní části (host ID) • pokud se dvě síťová rozhraní nachází ...

Více

Seznam účastníků, program po sekcích a sborník abstraktů

Seznam účastníků, program po sekcích a sborník abstraktů Návrh zařízení pro přenos obrazového signálu pro dálkově řízené modely. Krýda, P. Tato práce se zabývá vytvořením systému přenosu obrazu z kamery nesené vzdáleným prostředkem do přijímací stanice. ...

Více

pouze režim adaptéru - Rockwell Automation

pouze režim adaptéru - Rockwell Automation Network Communication Option Module Installation Instructions, publikace 750COM-IN002

Více

PESdde

PESdde Více sítí automatů připojených k PC Aplikace PESdde lze normálně v systému spustit jen jednu. Při pokusu o spuštění další instance se aktualizuje okno již běžící instance a pokus o nové spuštění je...

Více