Professional Documents
Culture Documents
HDH 07 Chap6 5163
HDH 07 Chap6 5163
HDH 07 Chap6 5163
Quan ly bo nh
Tong quan
Chuyen oi a ch
4/6/2008
HH
Bo phan Quan ly Bo nh
Mo hnh to chc ?
4/6/2008
C che ho tr
Trn Hnh Nhi
V du
OS
gcc
nachos
emacs
0x9000
0x7000
0x4000
0x3000
0x0000
lib.o
Executable: test.exe
Loader
Memory
4/6/2008
Cac bc chuyen oi
source program -> .exe
A.C
int x;
int y;
x = 12;
y = 5;
F();
A.O
0 // x
2 // y
4 // [0] = 12;
5 // [2] = 5;
6 // jmp F
//external
// object
B.C
F()
{
printf(Hi);
}
B.O
0 -2 // F()
0
3
5
7
8
9
// F()
// x
// y
// [3] = 12;
// [5] = 5;
// jmp 0
Test.exe
OS
? // F()
? // x
? // y
? // [?] = 12;
? // [?] = 5;
? // jmp ?
Thuat ng
a ch logic con goi la a ch ao , la tat ca cac a ch do
bo x ly tao ra
a ch physic - la a ch thc te ma trnh quan ly bo nh
nhn thay va thao tac
Khong gian a ch la tap hp tat ca cac a ch ao phat sinh
bi mot chng trnh
Khong gian vat ly la tap hp tat ca cac a ch vat ly tng
ng vi cac a ch ao
4/6/2008
code segment
data segment
8048314 <add>:
8048314:
push
%ebp
8048315:
mov
%esp,%ebp
8048317:
mov
0xc(%ebp),%eax
804831a:
add
0x8(%ebp),%eax
804831d:
pop
%ebp
804831e:
ret
stack segment
initialized variables
uninitialized variables
data segment
process A
%ebp
%esp,%ebp
sub
$0x18,%esp
and
$0xfffffff0,%esp
mov
$0x0,%eax
804832d:
sub
%eax,%esp
804832f:
movl
$0x0,0xfffffffc(%ebp)
8048336:
movl
$0x2,0x4(%esp,1)
variables in a function
804833e:
8048345:
stored register states (e.g. calling function
EIP)
804834a:
804834d:
grows against lower addresses
804834e:
804834f:
system data segment (PCB)
segment pointers
pid
program and stack pointers
code segment
movl
$0x4,(%esp,1)
call
8048314 <add>
mov
%eax,0xfffffffc(%ebp)
heap
s
nu
u
leave
ret
nop
ed
em
y
or
...
data segment
Tin trnh gm c:
stack
possible
stacks
for more threads
high address
4/6/2008
10
Truy xuat bo nh
a ch cua Instruction va data trong program source code la
symbolic:
goto errjmp;
X = A + B;
4/6/2008
11
Load-time:
Execution-time:
4/6/2008
12
Chuyen oi a ch
MMU
gcc
Load Store
CPU
Translation box
virtual
address
data
4/6/2008
legal addr?
Illegal?
Physical
address
Physical
memory
error
13
4/6/2008
14
4/6/2008
Relocation
Protection
Sharing
Logical Organization
Physical Organization
15
Tai nh v (Relocation)
Khong biet trc chng trnh se c nap vao BN v tr
nao e x ly.
Mot tien trnh co the c di di trong bo nh sau khi a
nap C
Tien trnh tang trng ?
HH sap xep lai cac tien trnh e co the s dung BNC hieu qua
hn.
4/6/2008
16
Bao ve (Protection)
Khong cho phep tien trnh truy cap en cac v tr nh a
cap cho tien trnh khac (khi cha co phep).
Khong the thc hien viec kiem tra hp le tai thi iem
bien dch hay nap, v chng trnh co the c tai nh v.
Thc hien kiem tra tai thi iem thi hanh
Can s ho tr cua phan cng.
4/6/2008
17
Chia se (Sharing)
Can cho phep nhieu tien trnh tham chieu en cung mot
vung nh ma khong ton hai en tnh an toan he thong :
Tiet kiem cho lu tr cho cac module dung chung.
Cho phep cac tien trnh cong tac co kha nang chia se d lieu.
4/6/2008
18
4/6/2008
19
4/6/2008
20
4/6/2008
21
2 mo hnh n gian
Linker Loader
Base & Bound
4/6/2008
22
Fixed Partitioning
Phan chia KGVL thanh cac
partitions
Co 2 cach phan chia partitions :
kch thc bang nhau
kch thc khac nhau
4/6/2008
23
24
S dung 1 hang i
Cap cho tien trnh partition t
do vi kch thc be nhat (u
ln e cha tien trnh)
Can dung mot CTDL e theo
doi cac partition t do
4/6/2008
25
internal fragmentation : kch thc chng trnh khong ung bang kch thc
partition
P2 (4M)
3M
8M
internal frag
4/6/2008
26
Dynamic Partitioning
BNC khong c phan chia
trc
P1 (2M)
P2 (4M)
4/6/2008
27
external
fragmentation
P4 (1.5M)
P3 (8M)
2M
Chon la partition e cap phat cho tien trnh ?
Tien trnh vao sau khong lap ay cho trong tien trnh trc e lai
external fragmentation
V du Dynamic Partitioning
4/6/2008
29
V du Dynamic Partitioning
4/6/2008
30
2M
First Fit
P1
P3 (1M)
8M
Worst Fit
P2
1.5M
4/6/2008
Best Fit
31
Don cac vung b phan manh lai vi nhau e tao thanh partition lien tuc u ln
e s dung
Chi ph thc hien cao
2M
P1
External
fragmentations
1M
P2
1.5M
4/6/2008
32
4/6/2008
33
Mo hnh Linker-Loader
test.exe
OS
0x4000
test.exe
jump 0x5000
jump 0x2000
0x0000
0x7000
0x3000
(base)
34
Bao ve ?
Khong ho tr
4/6/2008
35
Test.exe
0x4000
Test.exe
jump 0x2000
jump 0x2000
0x0000
Bound
0x7000
Base
0x3000
36
logical addrs
CPU
MMU
+ base reg
memory
Ho tr
Bao ve
Tai nh v
4/6/2008
37
38
4/6/2008
39
4/6/2008
40
Segmentation
Lap trnh vien : chng trnh la mot tap cac segments
Mot segment la mot n v chng trnh gom cac oi tng co cung nhom ng
ngha
V du : main program, procedure, function, local variables, global
variables,common block,stack, symbol table, arrays...
Cac segment co the co kch thc khac nhau
Mo hnh Segmentation :
KGC : phan chia thanh cac segment
KGVL : to chc thanh dynamic partitions
Nap tien trnh :
Moi segment can c nap vao mot partition lien tuc, t do, u ln cho
segment
partition nao ? ...Dynamic Allocation !
4/6/2008
Cac segment cua cung 1 chng trnh co the c nap vao nhng partition
khong lien tuc
Trn Hnh Nhi
41
Mo hnh Segmentation
int m;
heap
main ()
{
F1(m);
}
F1(int x)
{ x = 9;
}
stack
data
(m)
code
(main,F1)
Quan ly KGDC
a ch ?
4/6/2008
KGVL
Trn Hnh Nhi
42
To chc Segmentation
ia ch logic :
<segment-number, offset>
a ch physic : <real address>
Chuyen oi a ch : <s,d>
<r>
Chuyen oi a ch vao thi iem thi hanh
Segment Table:
Lu tr Segment Table ?
4/6/2008
43
Logical Addr
3
no
?
128
Seg# offset
fault
yes
Seg table
base
limit
mem
0x1000
seg
128
0
1
2
4/6/2008
0x1000 512
44
4/6/2008
45
External Fragmentation :
Memory Compaction : chi ph cao
4/6/2008
46
Sharing of
Segments:
Text Editor
4/6/2008
47
Paging
Ho tr HH khac phuc bai toan cap phat bo nh ong, va loai bo
external fragmentation
Mo hnh Paging :
KGC : phan chia chng trnh thanh cac page co kch thc bang nhau
Khong quan tam en ng ngha cua cac oi tng nam trong page
KGVL : to chc thanh cac fixed partitions co kch thc bang nhau goi la frame
page size = frame size
Nap tien trnh :
Moi page can c nap vao mot frame t do
Cac pages cua cung 1 chng trnh co the c nap vao nhng frames
khong ke can nhau.
Tien trnh kch thc N pages -> can N frame t do e nap
4/6/2008
48
Mo hnh Paging
int m;
int m;
main ()
main ()
F1(int x)
F1(m);
stack
F1(int x)
{ x = 9;
heap
KGDC
Quan ly a ch ?
4/6/2008
KGVL
Trn Hnh Nhi
49
To chc Paging
ia ch logic :
<page-number, offset>
a ch physic : <frame-number, offset>
Chuyen oi a ch : <p,d>
<f,d>
Chuyen oi a ch vao thi iem thi hanh
Page Table
So phan t cua Page Table = So Page trong KGC cua chng trnh
Moi phan t cua bang Page Table mo ta cho 1 page, va co cau truc :
frame: so hieu frame trong BNC cha page
Lu tr Page Table ?
Cache : khong u
BNC : Page-table base register (PTBR), Page-table length register (PTLR)
4/6/2008
50
Physical
addr
KGVL
f
Page table
4/6/2008
51
4/6/2008
52
4/6/2008
53
Lu tr Page Table
Gia s he thong s dung m bit a ch
Size of KGC = 2m
ia ch logic :
Page Table
4/6/2008
(m-n)
54
4/6/2008
55
0
1
5
16
2
3
...
p
...
7
8
9
10
11
12
13
14
15
4/6/2008
9
56
0
1
2
3
4
5
0
1
6
7
10
11
12
13
14
15
1
0
2
1
3
2
4
3
5
4
6
5
7
6
8
7
9
8
10
9
11
10
12
11
13
12
12
13
13
14
14
15
15
4/6/2008
58
4/6/2008
59
4/6/2008
pi
p2
10
10
12
60
100
0
1
1
0
1
2
3
7
8
9
10
2
3
3
4
11
12
13
14
15
2
3
16
17
4/6/2008
62
4/6/2008
63
4/6/2008
64
Moi entry trong TLB cha mot so hieu page va frame tng
ng ang cha page
Khi chuyen oi a ch, truy xuat TLB trc, neu khong tm
thay so hieu page can thiet, mi truy xuat vao PT e lay
thong tin frame.
4/6/2008
65
4/6/2008
66
Chuyen oi a ch vi Paging
virtual address
CPU
f
physical address
f
d
d
TLB
p
f
Memory
f
f
4/6/2008
PT
67
S dung TBL
4/6/2008
68
69
ed 3 +
data 1
ed 3 +
data 2
ed 3 +
data 3
Cong thc tnh thi gian truy cap thc te (Time Effective
Acess) en mot oi tng trong BNC
bao gom thi gian chuyen oi a ch va thi gian truy xuat d lieu
TEA = (time biding add + time acces memory)
4/6/2008
72
Linker-Loader
TEA = tm
(data)
Base + Bound
Segmentation
TEA =
tc
Paging
tm
(data)
tm
(data)
tm
(data)
Co s dung TLB :
TEA = hit-ratio ( tc + tm ) + (1- hit-ratio)( tc + tm + tm )
(TLB) (data)