mc cap 2

30
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 2 n-1 (n linii de adresare Î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

Upload: iulian-pavaloiu

Post on 18-Jul-2015

91 views

Category:

Education


1 download

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

7

2.3. Translatarea adresei virtuale

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

9

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

12

c)

Microcontrolere - Capitolul 2 Corneliu BURILEANU

13

d)

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

19

2.6. Registre cache

Microcontrolere - Capitolul 2 Corneliu BURILEANU

20

Microcontrolere - Capitolul 2 Corneliu BURILEANU

21

2.7. Mecanismul paginării

Microcontrolere - Capitolul 2 Corneliu BURILEANU

22

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

Microcontrolere - Capitolul 2 Corneliu BURILEANU

28

Microcontrolere - Capitolul 2 Corneliu BURILEANU

29

2.8. Memorii asociative

Microcontrolere - Capitolul 2 Corneliu BURILEANU

30