mc cap 2
TRANSCRIPT
Microcontrolere - Capitolul 2 Corneliu BURILEANU
1
Adresare liniară ↔↔↔↔ adresare segmentată(”fizic” ↔ “logic”)
Acces continuu în memorie Memorie divizată în segmente
Spaţiul adreselor de la 0 la 2n-1 (n linii deadresare
În interiorul segmentelor, adresarea este liniar ă, relativă la baza segmentului
Adresa fizică este la dispoziţia utilizatorului
Adresa fizică este transparentăutilizatorului
Segmentarea memoriei→ Gestionarea memoriei
Principiile gestionării memoriei:
•Segmente de dimensiuni variabile, strict izolate
•Segmentele sunt înzestrate cu proprietăţi care permit:
•Personalizarea segmentelor
•Protecţia informaţiei din segmente
•Segmentele pot fi mutate între memoria internă (fizică) şi cea externă
2. GESTIONAREA MEMORIEI
2.1. Memoria virtuală
Microcontrolere - Capitolul 2 Corneliu BURILEANU
2
Memoria virtual ă: totalitatea hăr ţii logice a memoriei care poate fi formată prin concatenarea numărului maxim de segmente ce pot fi definite, fiecare presupus la dimensiunea maximă.
Cuprinde totalitatea resurselor de memorie ale microcalculatorului (interne şi externe), limitele fizice fiind transparente utilizatorului
Adresa logică (AL) →→→→ Adresa fizică (AF)
Adresa virtuală (AV) →→→→ Adresa fizică (AF)
Gestionarea memoriei: mecanism de translatare a adreselor virtuale în adrese fizice
Gestionare↔↔↔↔ Protecţie, Multiprocesare
Mod real ↔↔↔↔ Mod virtual (ptotejat)
Microcontrolere - Capitolul 2 Corneliu BURILEANU
3
Exemple :
Pentru Intel 80286:
AV ≡≡≡≡ adr32
- AE ≡≡≡≡ adr16; dimensiunea maximă a unui segment = 216 B = 64 kB
- SELECTOR ≡≡≡≡ adr16; numai 14 biţi din selector sunt folosiţi pentru definirea segmentelor
nr. maxim de segmente = 214 (16 k segmente)
Dimensiunea memoriei virtuale: 214 segmente * 216 B/segment = 230 B = 1 GB
AF ≡≡≡≡ adr24 Harta memoriei fizice are 224 B = 16 MB
SELECTOR = INDEX ↑↑↑↑ TI ↑↑↑↑ RPL
Microcontrolere - Capitolul 2 Corneliu BURILEANU
4
Pentru Intel 386, 486, Pentium:
AV ≡≡≡≡ adr48
- AE ≡≡≡≡ adr32; dimensiunea maximă a unui segment = 232B = 4GB
- SELECTOR ≡≡≡≡ adr16; nr. maxim de segmente = 214 (16k segmente)
Dimensiunea memoriei virtuale: 214 segmente * 232 B/segment = 246 B = 64 TB
AF ≡≡≡≡ adr32 Harta memoriei fizice are 232 B = 4GB
TI = 0 →→→→ spaţiul adreselor globale cu 213 segmente
TI = 1 →→→→ spaţiul adreselor locale cu 213 segmente
Microcontrolere - Capitolul 2 Corneliu BURILEANU
5
Descriptor – conţine informaţiile legate de:
•Localizarea segmentelor în memoria virtuală
•Dimensiunea segmentelor
•Proprietăţile segmentelor (inclusiv cele legate de protecţie)
a) Descriptorii segmentelor: permit identificarea segmentelor uzuale de lucru (de programe şi/sau de date)
b) Descriptorii speciali de control:
1. Descriptorii segmentelor de sistem – pentru segmente care sunt folosite demicroprocesor în mecanismul gestionării memoriei
2. Descriptorii "segmentelor de stare a proceselor" – pentru implementarea mecanismului multiprocesării
3. Descriptorii "por ţilor" – pentru protec ţia multi-nivel, multiprocesare,răspuns la cererile de întreruperi
2.2. Tabele de descriptori
Microcontrolere - Capitolul 2 Corneliu BURILEANU
6
Segmentele de tip aşi b1 au următoarele câmpuri:
•BAZA de 24 sau 32 de biţi: Octet_2 , Octet_3 , Octet_4 , [[[[Octet_7 ]]]]
BAZA ≡≡≡≡ AF bazei segmentului
•LIMITA de 16 sau 20 de biţi: Octet_0 , Octet_1 , [[[[Octet_6 l]]]]
•ACCES de 8 biţi: Octet_5
•[[[[ALTE _PROPRIETĂŢI de 4 biţi: Octet_6 h]]]]
Descriptorii sunt organizaţi în tabele de descriptori:
•GDT – Tabela de descriptori globali – segment de sistem aflat în spaţiul adreselor globale
•LDT – Tabele de descriptori locali – segment de sistem aflat în spaţiul adreselor globale
Pentru microprocesoarele Intel, o tabelă poate avea 213 (8k) descriptori; fiecare descriptor are 8B
Microcontrolere - Capitolul 2 Corneliu BURILEANU
8
(CS) | (SS) | (DS) | (ES) [ | (FS) | (GS)] ≡≡≡≡ SELECTOR
SELECTOR ≡≡≡≡ INDEX ↑↑↑↑ TI ↑↑↑↑ RPL
TI ←←←← 0
INDEX ←←←← INDEX ∗∗∗∗ 8
(GDTR) ≡≡≡≡ BAZA_GDT ↑↑↑↑ LIMITA_GDT
Octet_0descriptor ←←←← (BAZA_GDT + INDEX)
Se verifică dacă: INDEX ≤≤≤≤ LIMITA_GDT
[Octet_6l descriptor ↑↑↑↑] Octet_1descriptor ↑↑↑↑↑↑↑↑ Octet_0descriptor ≡≡≡≡ LIMITA
[Octet_7descriptor ↑↑↑↑] Octet_4descriptor ↑↑↑↑↑↑↑↑ Octet_3descriptor ↑↑↑↑ Octet_2descriptor ≡≡≡≡ BAZA
data | cod_instruc ţiune ←←←← (BAZA +AE)
Se verifică dacă: AFdata | cod_instruc ţiune ≤≤≤≤ BAZA + LIMITA
Microcontrolere - Capitolul 2 Corneliu BURILEANU
10
(GDTR) ≡≡≡≡ BAZA_GDT ↑↑↑↑ LIMITA_GDT
(LDTR) ≡≡≡≡ SELECTOR_LDT
SELECTOR_LDT ≡≡≡≡ INDEX_LDT ↑↑↑↑ TI_LDT ↑↑↑↑ RPL_LDT
TI_LDT ←←←← 0
INDEX_LDT ←←←← INDEX_LDT ∗∗∗∗ 8
Octet_0 LDT ←←←← (BAZA_GDT + INDEX_LDT)
Se verifică dacă: INDEX_LDT ≤≤≤≤ LIMITA_GDT
[Octet_6l LDT ↑↑↑↑] Octet_1 LDT ↑↑↑↑ Octet_0 LDT ≡≡≡≡ LIMITA_LDT
[Octet_7 LDT ↑↑↑↑] Octet_4 LDT ↑↑↑↑ Octet_3 LDT ↑↑↑↑ Octet_2 LDT ≡≡≡≡ BAZA_LDT
(CS) | (SS) | (DS) | (ES) [ | (FS) | (GS)] ≡≡≡≡ SELECTOR
SELECTOR ≡≡≡≡ INDEX ↑↑↑↑ TI ↑↑↑↑ RPL
TI ←←←← 1
INDEX ←←←← INDEX ∗∗∗∗ 8
Octet_0 descriptor ←←←← (BAZA_LDT + INDEX)
Se verifică dacă: INDEX ≤≤≤≤ LIMITA_LDT
[Octet_6l descriptor ↑↑↑↑] Octet_1 descriptor ↑↑↑↑ Octet_0 descriptor ≡≡≡≡ LIMITA
[Octet_7 descriptor ↑↑↑↑] Octet_4 descriptor ↑↑↑↑ Octet_3 descriptor ↑↑↑↑ Octet_2 descriptor ≡≡≡≡ BAZA
data | cod_instruc ţiune ←←←← (BAZA +AE)
Se verifică dacă: AFdata | cod_instruc ţiune ≤≤≤≤ BAZA + LIMITA
Microcontrolere - Capitolul 2 Corneliu BURILEANU
11
2.4. Modalităţi de organizare a proceselor
a)
b)
Microcontrolere - Capitolul 2 Corneliu BURILEANU
14
2.5. Anatomia descriptorului de segment
Descriptorii de tip a şi b1
Microcontrolere - Capitolul 2 Corneliu BURILEANU
15
•••• P - “prezent” = 0 – segmentul nu este în memoria fizică= 1 – segmentul este în memoria fizică
•••• DPL – “nivel de privilegiu al descriptorului”
•••• S – “tip de segment” = 0 – segment de sistem de tip b1 (LDT)= 1 – segment de tip a
•••• P/D – “executabil” = 0 – segment de date= 1 – segment de program
•••• C – “conform” = 0 – segment de program supus regulilor privilegiilor multi-nivel= 1 – segment de program care face excepţie de la aceste reguli
•••• ED – “creşte în jos” = 0 – segment de date obişnuit= 1 – segment de stivă
•••• R – “citibil” = 0 – segment de program ce poate fi doar executat= 1 – segment de program care poate fi şi citit
•••• W – “inscrip ţionabil” = 0 – segment de date care poate fi doar citit= 1 – segment de date în care se poate scrie
•••• A – “accesat” setat când se accesează segmentul vizat→→→→ tehnica “LRU”
Microcontrolere - Capitolul 2 Corneliu BURILEANU
16
•••• G – “granularitate” = 0 – cuanta este octetul – dimensiune maximă 220B= 1 – cuanta este pagina – dimensiune maximă 220pagini=232B
•••• D – “compatibil” = 0 – compatibil IA16 (dimensiune operanzi, dimensiune segmente, moduri de adresare, set instrucţiuni)
= 1 – compatibil IA32
Microcontrolere - Capitolul 2 Corneliu BURILEANU
17
sau LIMITAAE ≤
LIMITABAZAAF cod|data +≤ LIMITABAZAAF cod|data +>
sau LIMITAAE >
•••• ED – “creşte în jos” = 0 – segment de date obişnuit= 1 – segment de stivă
Microcontrolere - Capitolul 2 Corneliu BURILEANU
18
Concluzii cu privire la informa ţiile din descriptori:
•••• BAZA şi LIMITA localizează şi definesc mărimea segmentului; ED reglementează modul în carese interpretează LIMITA
•••• P şi A asistă sistemul de operare la schimbul informaţiei între memoria internă şi externă
•••• S indică tipul se segment vizat: de sistem (LDT), de date, de program
•••• R şi W definesc modul de acces al informaţiei în segmente – protecţie
•••• DPL şi C asigură protecţia conform mecanismului privilegiilor multi-nivel
Microcontrolere - Capitolul 2 Corneliu BURILEANU
23
AL ≡≡≡≡ DIRECTOR ↑↑↑↑ TABELA ↑↑↑↑ OFFSET
în care:
a) DIRECTOR este un câmp de 10 biţi. Aceştia, concatenaţi cu 00, formează adresa relativă la bazăa elementului vizat din director. Concatenarea cu 00 este normală pentru că un element are 4 B, deci informa ţia este "aliniată" din 4B în 4B
b) TABELA este un câmp de 10 biţi. Tot prin concatenare cu00 formează adresa relativă la bazăa elementului selectat dintr-o tabelă a paginilor
c) OFFSET este un câmp de 12 biţi care localizează informa ţia în pagina selectată. Evident şi aceastăadresă este relativă la adresa fizică a bazei paginii
Microcontrolere - Capitolul 2 Corneliu BURILEANU
24
Pentru Intel 386, 486 Pentium:
• Directorul are 4kB
• Tabelele paginilor au 4kB
• Paginile au 4kB
Directorul şi tabelele paginilor conţin câte 1k elemente de câte 4B:
Microcontrolere - Capitolul 2 Corneliu BURILEANU
25
•••• P - “prezent” = 0 – pagina/tabela paginilor nu este în memoria fizică= 1 – pagina/tabela paginilor este în memoria fizică
•••• R/W, U/S – pentru protecţia paginilor
•••• CD – “cache disable”
•••• WT – “write through”
•••• A – “accesat” – setat când se accesează pagina vizată →→→→ tehnica “LRU”
•••• D – “modificat” = 0 – pagina nu a fost modificată= 1 – în pagină s-a scris
nu e definit pentru director
N.B.: dacă ar exista o singură tabelă a paginilor:Dimensiune maximă segment (232B) / dimensiune pagină (212B) � 220 paginiRezultă: dimensiune tabelă = 4B*220 = 4MB
Microcontrolere - Capitolul 2 Corneliu BURILEANU
26
AL ≡≡≡≡ DIRECTOR ↑↑↑↑ TABELA ↑↑↑↑ OFFSET
(CR3) ≡≡≡≡ BAZA_DIRECTOR
DIRECTOR ←←←← DIRECTOR ↑↑↑↑ 00
ELEMENT_DIRECTOR ←←←← ((CR3)+DIRECTOR+3) ↑↑↑↑ ((CR3)+DIRECTOR+2) ↑↑↑↑↑↑↑↑ ((CR3)+DIRECTOR+1) ↑↑↑↑ ((CR3)+DIRECTOR)
BAZA_TABELA ←←←← ((CR3)+DIRECTOR+3) ↑↑↑↑ ((CR3)+DIRECTOR+2) ↑↑↑↑ ((CR3)+DIRECTOR+1)h
BAZA_TABELA ←←←← BAZA_TABELA ↑↑↑↑ 000 H
TABELA ←←←← TABELA ↑↑↑↑ 00
ELEMENT_TABELA ←←←← (BAZA_TABELA +TABELA+3) ↑↑↑↑ (BAZA_TABELA +TABELA+2) ↑↑↑↑↑↑↑↑ (BAZA_TABELA +TABELA+1) ↑↑↑↑ (BAZA_TABELA +TABELA)
BAZA_PAGINA ←←←← (BAZA_TABELA +TABELA+3) ↑↑↑↑ (BAZA_TABELA +TABELA+2) ↑↑↑↑↑↑↑↑ (BAZA_TABELA +TABELA+1) h
BAZA_PAGINA ←←←← BAZA_PAGINA ↑↑↑↑ 000 H
AF ←←←← BAZA_PAGINA + OFFSET
Microcontrolere - Capitolul 2 Corneliu BURILEANU
27
Exemplu:
Fie AL = 13A49F01 H(CR3) = 1C000000 H(1C000138) = 67 H (3A7A2924) = 61 H(1C000139) = 20 H (3A7A2925) = 50 H(1C00013A) = 7A H (3A7A2926) = 11 H(1C00013B) = 3A H (3A7A2927) = 2C H
Deci: DIRECTOR ←←←← 04E HTABELA ←←←← 249 HOFFSET ←←←← F01 H
BAZA_DIRECTOR ← 1C000000 H
138 H ←←←← 04E H ↑↑↑↑ 00
ELEMENT_DIRECTOR ←←←← (1C00013B) ↑↑↑↑ (1C00013A) ↑↑↑↑ (1C000139) ↑↑↑↑ (1C000138)
BAZA_TABELA ←←←← (1C00013B) ↑↑↑↑ (1C00013A) ↑↑↑↑ (1C000139)h
BAZA_TABELA ←←←← 3A7A2 H ↑↑↑↑ 000 H
924 H ←←←← 249 H ↑↑↑↑ 00
ELEMENT_TABELA ←←←← (3A7A2927) ↑↑↑↑ (3A7A2926) ↑↑↑↑ (3A7A2925) ↑↑↑↑ (3A7A2924)
BAZA_PAGINA ←←←← (3A7A2927) ↑↑↑↑ (3A7A2926) ↑↑↑↑ (3A7A2925)h
BAZA_PAGINA ←←←← 2C115 H ↑↑↑↑ 000 H
AF ←←←← 2C115000 H + F01 H
AF ←←←← 2C115F01 H