Professional Documents
Culture Documents
Chapter4a - Quan Ly Bo Nho
Chapter4a - Quan Ly Bo Nho
Chapter4a - Quan Ly Bo Nho
1
Noäi dung
n Toång quan
n Nhu caàu boä nhôù cuûa tieán trình
n Caùc vaán ñeà veà boä nhôù
n Chuyeån ñoåi ñòa chæ
n Caùc coâng ñoaïn
n Caùc moâ hình chuyeån ñoåi ñòa chæ
n Vai troø Quaûn lyù boä nhôù cuûa HÑH
n Caùc yeâu caàu
n Caùc moâ hình toå chöùc boä nhôù
n Moâ hình Lieân tuïc
n Moâ hình Khoâng lieân tuïc
2
Toång quan
Moâ hình toå chöùc ? Cô cheá hoã trôï Chieán löôïc thöïc hieän
3
Toång quan : Caùc vaán ñeà veà Boä nhôù
0x9000
OS
0x7000
Moâi tröôøng ña nhieäm gcc
0x4000
nachos
0x3000
emacs 0x0000
C program: test.c
Compiler
Object:test.o
Linker lib.o
Executable: test.exe
Loader
Memory
6
Caùc böôùc huyeån ñoåi
source program -> .exe
7
A.C
B.C
int x; F()
int y; { OS
x = 12; printf(“Hi”);
y = 5; }
F();
n Ñòa chæ logic – coøn goïi laø ñòa chæ aûo , laø taát
caû caùc ñòa chæ do boä xöû lyù taïo ra
n Ñòa chæ physic - laø ñòa chæ thöïc teá maø
trình quaûn lyù boä nhôù nhìn thaáy vaø thao taùc
n Khoâng gian ñòa chæ – laø taäp hôïp taát caû caùc
ñòa chæ aûo phaùt sinh bôûi moät chöông trình
n Khoâng gian vaät lyù – laø taäp hôïp taát caû caùc
ñòa chæ vaät lyù töông öùng vôùi caùc ñòa chæ aûo
9
Nhu caàu boä nhôù cuûa tieán trình
low address
system data segment (PCB)
n Tiến trình gồm có: …
n code segment 8048314 <add>:
n read from program file by exec 8048314: push %ebp code segment
8048315: mov %esp,%ebp
n usually read-only
8048317: mov 0xc(%ebp),%eax
n can be shared 804831a: add 0x8(%ebp),%eax
804831d: pop %ebp
initialized variables
data segment
data segment
n 804831e: ret
n initialized global variables (0 / NULL) 804831f <main>:
uninitialized variables
n uninitialized global variables 804831f: push %ebp data segment
n heap 8048320: mov %esp,%ebp process A
n dynamic memory 8048322: sub $0x18,%esp
8048325: and $0xfffffff0,%esp heap
n e.g., allocated using malloc
8048328: mov $0x0,%eax
n grows against higher addresses
804832d: sub %eax,%esp
11
Truy xuaát boä nhôù
12
Thôøi ñieåm keát buoäc ñòa chæ ?
MMU
gcc
Translation box
Physical
Load Store legal addr? address Physical
virtual
address Illegal? memory
CPU
error
data
14
CPU, MMU and Memory
15
Yeâu caàu quaûn lyù boä nhôù
16
Taùi ñònh vò (Relocation)
17
Baûo veä (Protection)
18
Chia seû (Sharing)
19
Toå chöùc logic (Logical Organization)
20
Toå chöùc vaät lyù (Physical Organization)
21
Caùc moâ hình toå chöùc boä nhôù
22
Caáp phaùt Lieân tuïc (Contigous Allocation)
n Nguyeân taéc :
n Chöông trình ñöôïc naïp toaøn theå vaøo BNC ñeå
thi haønh
n Caàn moät vuøng nhôù lieân tuïc, ñuû lôùn ñeå chöùa
Chöông trình
n Khoâng gian ñòa chæ : lieân tuïc
n Khoâng gian vaät lyù : coù theå toå chöùc
n Fixed partition
n Variable partition
n 2 moâ hình ñôn giaûn
n Linker – Loader
n Base & Bound 23
Fixed Partitioning
26
Nhaän xeùt Fixed Partitioning
P1 (2M)
3M
internal frag
P2 (4M)
8M
internal frag
27
Dynamic Partitioning
28
Dynamic Partitioning: tình
huoáng
P1 (2M)
external
P2 (4M) fragment
?
ation
P4 (1.5M)
P3 (8M)
2M
30
Ví duï Dynamic Partitioning
31
Giaûi quyeát vaán ñeà Dynamic Allocation
P2
1.5M Best Fit
32
Memory Compaction (Garbage
Collection)
n Giaûi quyeát vaán ñeà External Fragmentation :
n Doàn caùc vuøng bò phaân maûnh laïi vôùi nhau ñeå taïo thaønh
partition lieân tuïc ñuû lôùn ñeå söû duïng
n Chi phí thöïc hieän cao
2M
External P1
fragmentations
1M
P2
1.5M
33
Caùc moâ hình chuyeån ñoåi ñòa chæ
34
Moâ hình Linker-Loader
OS
test.exe
0x4000 0x7000
test.exe
jump 0x5000
jump 0x2000
0x3000
0x0000 (base)
n Taïi thôøi ñieåm Link, giöõ laïi caùc ñòa chæ logic
n Vò trí base cuûa tieán trình trong boä nhôù xaùc
ñònh ñöôïc vaøo thôøi ñieåm naïp :
ñòa chæ physic = ñòa chæ logic + base
35
Nhaän xeùt moâ hình Linker-Loader
36
Moâ hình Base & Bound
OS
Test.exe Bound
0x4000 0x7000
Test.exe
jump 0x2000 Base
jump 0x2000
0x0000 0x3000
n Taïi thôøi ñieåm Link, giöõ laïi caùc ñòa chæ logic
n Vò trí base , bound ñöôïc ghi nhaän vaøo 2 thanh ghi:
n Keát buoäc ñòa chæ vaøo thôøi ñieåm thi haønh => taùi
ñònh vò ñöôïc :
ñòa chæ physic = ñòa chæ logic + base register
n Baûo veä : ñòa chæ hôïp leä [base, bound] 37
Nhaän xeùt moâ hình Base & Bound
nKeát buoäc ñòa chæ taïi thôøi ñieåm thi haønh => caàn
hoã trôï cuûa phaàn cöùng
physical
logical addrs addrs
MMU memory
CPU + base reg
n Hoã trôï
§ Baûo veä
§ Taùi ñònh vò
38
Khuyeát ñieåm cuûa caáp phaùt lieân tuïc
P2
1M
39
Caùc moâ hình toå chöùc boä nhôù
40
Caùc moâ hình caáp phaùt khoâng lieân tuïc
41
Segmentation
n Laäp trình vieân : chöông trình laø moät taäp caùc
segments
n Moät segment laø moät ñôn vò chöông trình goàm caùc ñoái
töôïng coù cuøng nhoùm ngöõ nghóa
n Ví duï : main program, procedure, function, local
variables, global variables,common block,stack, symbol
table, arrays...
n Caùc segment coù theå coù kích thöôùc khaùc nhau
n Moâ hình Segmentation :
n KGÑC : phaân chia thaønh caùc segment
n KGVL : toå chöùc thaønh dynamic partitions
n Naïp tieán trình :
n Moãi segment caàn ñöôïc naïp vaøo moät partition lieân tuïc,
int m; heap
main ()
{
F1(m);
stack
}
data
F1(int x) (m)
{ x = 9; code
} (main,F1)
Quaûn lyùKGDC
ñòa chæ
?
KGVL
43
Toå chöùc Segmentation
fault
Logical Addr no mem
yes
3 ? + 0x1000
128
Seg# Seg table 128
offset seg
base limit
0
1
2
3 0x1000 512
45
Logical-to-Physical Address Translation
in segmentation
46
Nhaän xeùt Moâ hình Segmentation
n Caáp phaùt khoâng lieân tuïc => taän duïng boä nhôù
hieäu quaû
n Hoã trôï taùi ñònh vò
n Töøng Segment
n Hoã trôï Baûo veä vaø Chia seû ñöôïc ôû möùc module
n YÙ nghóa cuûa “möùc module” ?
L Chuyeån ñoåi ñòa chæ phöùc taïp
J Ñaõ coù MMU...
L Söû duïng dynamic partition : chòu ñöïng
L Dynamic Allocation : choïn vuøng nhôù ñeå caáp cho moät
segment
J First fit, Best fit, Worst fit
L External Fragmentation :
L Memory Compaction : chi phí cao
47
Sharing of
Segments:
Text Editor
48
Paging
n Hoã trôï HÑH khaéc phuïc baøi toaùn caáp phaùt boä nhôù
ñoäng, vaø loaïi boû external fragmentation
n Moâ hình Paging :
n KGÑC : phaân chia chöông trình thaønh caùc page coù kích
thöôùc baèng nhau
n Khoâng quan taâm ñeán ngöõ nghóa cuûa caùc ñoái töôïng naèm
trong page
n KGVL : toå chöùc thaønh caùc fixed partitions coù kích thöôùc
baèng nhau goïi laø frame
n page size = frame size
n Naïp tieán trình :
n Moãi page caàn ñöôïc naïp vaøo moät frame töï do
n Caùc pages cuûa cuøng 1 chöông trình coù theå ñöôïc naïp
int m; int m;
main () main ()
{ F1(int x)
F1(m);
} stack
F1(int x)
{ x = 9; heap
}
KGDC
Logical Physical
addr addr
p d f d
CPU
KGVL
Page table
52
Logical-to-Physical Address Translation
in Paging
53
Nhaän xeùt Moâ hình Paging
n Loaïi boû
n Dynamic Allocation
n External Fragmentation
n “Trong suoát” vôùi LTV
n Hoã trôï Baûo veä vaø Chia seû ôû möùc page
L Internal Fragmentation
L Löu tröõ Page Table trong boä nhôù
LToán choã
LTaêng thôøi gian chuyeån ñoåi ñòa chæ
54
Löu tröõ Page Table
n Giaû söû heä thoáng söû duïng m bit ñòa chæ
n Size of KGÑC = 2m
n Kích thöôùc page
n Treân nguyeân taéc tuøy yù, thöïc teá choïn pagesize = 2n
n Taïi sao ?
n Soá trang trong KGÑC: #pages = 2m / 2n = 2m-n
n Ví duï : 32-bits ñòa chæ, pagesize = 4K
n KGÑC = 232 -> #pages= 232-212 = 220 = 1.000.000
pages !
n #pages = #entry trong PT
56
Baûng trang ña caáp p d 0 5
1 16
2
n Baûng trang tuyeán tính
3
n Söû duïng page- ...
number laøm chæ muïc p f
ñeán Page Table ...
n Phaûi löu taát caû caùc 7
phaàn töû moâ taû taát 8 2
caû caùc trang trong 9
KGÑC 10
n Nhöõng page khoâng söû 11
duïng : laõng phí 12
n Naïp toaøn boä PT vaøo 13
BNC : toán choã 14
15 9
57
Baûng trang ña
0 0
caáp 1
1
0
2 2
1
3 Page Table caáp 23
2
4
4 3
5
5 4
6
5
6 7
0 6
7 Page Table caáp 28
1 7
9
2 8 8
10
3 9 9
11
10 10
12
Page Table caáp 1 11 Page Table caáp 211
13
12
12 12
13
13 13
14
14 Page Table caáp 214
15
15 15 58
Moâ hình baûng trang 2 caáp
59
Ví duï moâ hình baûng trang 2 caáp
60
Ví duï moâ hình baûng trang 2 caáp
61
Baûng trang ña
0 0
caáp 1
1
1 2 100 2
2
3 Page Table caáp 32
4
0 5
1 6
2 7
0
3 Page Table caáp 82
1
9
2 0
10
3 1
11
2
12
Page Table caáp 1 3 Page Table caáp 2
13
0 14
1 15
2 Page Table caáp 216
3 17 62
Baûng trang nghòch ñaûo (Inverted Page
Table)
63
Kieán truùc baûng trang nghòch ñaûo
64
Löu tröõ Page table : Tieát kieäm thôøi gian
65
Translation Lookaside Buffer (TLB)
67
Chuyeån ñoåi ñòa chæ vôùi Paging
virtual address
CPU p d f
physical address d
f d
TLB
p f
f Memory
f
PT
68
Söû duïng TBL
69
Baûo veä vaø chia seû trong Segmentation
vaø Paging
n Baûo veä
n Segmentation : moãi phaàn töû trong ST ñöôïc gaén
theâm caùc bit baûo veä
n Moãi segment coù theå ñöôïc baûo veä tuøy theo ngöõ nghóa
cuûa caùc ñoái töôïng beân trong segment
n Paging : moãi phaàn töû trong PT ñöôïc gaén theâm
caùc bit baûo veä
n Moãi page khoâng nhaän thöùc ñöôïc ngöõ nghóa cuûa caùc
ñoái töôïng beân trong page, neân baûo veä chæ aùp duïng
cho toaøn boä trang, khoâng phaân bieät.
n Chia seû: Cho nhieàu phaàn töï trong KGÑC
cuøng troû ñeán 1 vò trí trong KGVL
n Segmentation : chia seû möùc module chöông
trình
70
n Paging : chia seû caùc trang
Sharing Pages: A Text Editor
71
Sharing Pages: A Text Editor
ed 3 +
data 1
ed 3 +
data 2
ed 3 +
data 3
72
Chia seû Page 2 = Chia seû caû code vaø data !
Ñaùnh giaù caùc moâ hình chuyeån ñoåi ñòa
chæ
73
n Linker-Loader
n TEA = tm
(data)
n Base + Bound
n TEA = (tc + tc) + tm
(Base & Bound) (data)
n Segmentation
n TEA = tc + tm
(ST trong cache) (data)
n Paging
n Khoâng söû duïng TLB :
n TEA = tm + tm
(PT trong mem) (data)
n Coù söû duïng TLB :
n TEA=hit-ratio(tc + tm) + (1-hit-ratio)(tc +tm+tm)
(TLB) (data) (TLB) (PT) (data) 74