SYSYTEMY OPERACYJNE
Zarządzanie Pamięcią Operacyjną
04.01.2011
Segmentacja Pamięci Operacyjnej
Segmentacja to podział programu na części logiczne i przydzielenie każdej części
(segmentowi) odrębnego miejsca w pamięci operacyjnej
Adresy fizyczne = Adresy bazowe segmentu + OFFSET w danym segmencie
PROCESOR
(Dynamiczne wiązanie adresów)
Realizacja segmentacji pamięci przez procesory rodziny x86
Tryb pracy:
•
REAL (tryb adresów rzeczywistych)
•
PROTECTED (tryb pracy chronionej)
◦
praca wielozadaniowa
Skompilowany program
Pamięć Operacyjna
O
F
FS
E
T
(k
om
pi
la
to
r)
STOS
DANE
KOD
(
)
plik.exe
STOS
DANE
KOD
A
dr
es
y
ba
zo
w
e
S
O
A
dr
esy
fi
zy
cz
ne
Tryb REAL
CS (CODESEGMANT) – segment kodu
DS (DATA SEGMENT) – segment danych – dane
SS (STACK SEGMENT) – segment stosu
ES (EXTRA SEGMENT) – segment ekstra – dane
Rola rejestrów segmentowych
Pamięć operacyjna =1MB=20
20
B
Adres fizyczny - 20 bitowy
Wyznaczanie adresu fizycznego
rejestry segmentowe
15
0
15
0
CS
DS
SS
ES
OFFSET
+
Adres fizyczny
ALU
FR
31
15
0
EAX
EBX
ECX
EDX
EBP
ESP
ESI
EDI
AX
BX
CX
DX
BP
SP
SI
DI
AH
BH
CH
DH
AL
BL
CL
DL
Magistrala wewnętrzna
Rejestry robocze
Jednostka adresowa
Jednostka wykonywawcza
Rejestr segmentowy
Adres bazowy segmentu
(z dokładnością do paragrafu)
0000
19
15
0
0
Rejestr segmentowy
0000
19
15
0
0
0000
OFFSET
15
0
19
0
Adres fizyczny
segment kodu
CS:IP – adres logiczny
segment stosu
SS:SP – adres logiczny
segmenty danych
DS: Adres efektywny
OFFSET w segmencie danych
Tryb adresowania
◦
natychmiastowy np.: ADD AX,5
◦
rejestrowy np.: ADD AX,BX
◦
bezpośredni np.: ADD AX, nazwa zmiennej
◦
pośredni rejestrowy np.: ADD AX,[BX]
rejestr adresowy
ES: Adres efektywny
ADD AX,[BX] (domyślnie DS)
ADD AX,[ES:BX]
prefiks
ES:
ADD AX,[BX]
CS
0000
15
0
IP
15
0
19
0
Adres rozkazu
+