Modul protejat este conceput pentru sarcini multiple, care necesită protecția resurselor unei probleme privind efectele posibile ale altor (sub sarcini menite atât aplicațiile și sarcinile de sistem de operare).
Resursa principală este protejată de memorie.
memorie de protecție se bazează pe segmentare, atribute și privilegii.
Segment - un bloc de spațiu de memorie. Mărimea segmentului maximă - 4 GB. segmentele de memorie alocate sarcinilor de către sistemul de operare, dar în mod real orice sarcină poate suprascrie registrele segment care definesc poziția segmentului în spațiul de memorie, si „urca“ într-o altă zonă de date sau cod. În modul protejat, segmentele distribuite, de asemenea, sistemul de operare, dar aplicația poate utiliza aprobate doar pentru segmentele ei de memorie, selectându-le cu selectorii din tabelele de pre-format descriptor segment.
de protecție a memoriei folosind segmentarea nu permite:
# 159; segmente sunt utilizate în alte scopuri (de exemplu, pentru a încerca să interpreteze zona de date ca codurile de instrucțiuni);
# 159; încalcă drepturile de acces (pentru a încerca să modifice segmentul numai în citire, se referă la segmentul, care nu are suficiente privilegii, etc ...);
# 159; modifica conținutul tabelului descriptor (adică parametrii de segmente), care nu au suficiente privilegii.
Patru niveluri sistem de privilegii ierarhic este proiectat pentru a controla utilizarea instrucțiunilor privilegiate și accesul la descriptori. nivelurile de privilegiu sunt numerotate de la 0 la 3, nivelul zero, corespunde unei maxime capabilități (nelimitat) de acces și rezervate pentru nucleul sistemului de operare. Nivelul 3 are drepturi limitate și este de obicei furnizat de aplicație.
Descriptori și tabele
tabelul global (GDT) conține descriptori disponibile pentru toate sarcinile. Acesta poate conține toate tipurile de descriptori, cu excepția mânere întrerupe și capcane. Elementul zero al acestui tabel nu este utilizat de către procesor.
O masă locală (LDT) poate fi privat, pentru fiecare activitate și conține descriptori segment numai, probleme și provocări gateway-uri. Segment sarcină disponibilă dacă descriptorul nu este în prezent, nici în GDT, orice LDT.
Figura descriptor segment de date 3.10-
În segmentele de câmp atributele au următoarele funcții:
# 159; A (Accesat) - tratament. A = 0 pentru segmentul nu a fost tratamentul A = 1 selector încărcat în testarea comandă segment sau registrul segment efectuat pentru acestea;
# 159; W (inscriptibile) - Rezoluție (W = 1) sau dezactivați (W = 0), scrierea datelor pe segmentul;
# 159; E (Expand jos) este direcția extensiei E = 0 în sus, E = 1- extensia descendentă (stivă, în care deplasarea trebuie să fie mai mare decât valoarea limită);
# 159; DPL (Descriptor Level Privilege) segment -privilegii;
# 159; P (Prezent) - prezența în memorie. Când P = 1 segment mapat la memorie fizică la P = 0 No afișaj;
# 159; B - definește limita superioară a segmentului, la B = 0 - 64 Kbytes, pentru B = 1 dimensiunea maximă segment de 4 GB.
descriptor segment de cod este prezentat în figura 3.12. Punctele limita la ultimul octet, și biții de atribut au următoarele valori:
# 159; C (Conforming sau subordonarea conformality). pentru C = 1, comanda poate fi executată, în cazul în care nivelul de privilegii (CPL) nu este mai mic descriptor nivelul de privilegii (DPL), cu C = 0 (segment de coordonate) pentru a controla segmentul poate fi transmis numai dacă CPL = DPL;
# 159; R (citibil) - rezoluția (R = 1) sau dezactiva (R = 0) citit segment.
Pentru sistemele de operare multi-utilizator multi-tasking și, important este capacitatea procesorului la comutarea rapidă a sarcinilor. Comutare sarcini procesor (sarcină Comutare Operation) salvează starea procesorului și conexiunea cu sarcina anterioară, noua sarcină încarcă statului și începe executarea sa.
sarcina de comutație se realizează printr-o instrucțiune inter-segmente de salt (JMP) sau apel (CALL), în funcție de întreruperile hardware și software și excepții.
TSS puncte descriptor pentru segmentul care conține starea procesorului complet (Figura 3.12).
problema Descriptor Gateway cuprinde un selector îndreptat spre Descriptor TSS.
Fiecare sarcină are TSS. segmentele TSS cuprind procesor înregistrează imagini, indicii de stivă izolate pentru nivele de privilegiu 0, 1 și 2 precum și legătura inversă pentru selectorul TSS cauzat probleme. câmp liber TSS poate fi utilizat la discreția sistemului de operare. Ultimul element trebuie să fie octet TSS OFFh
managementul memoriei Paged
Pagina de management (paginare) este un mijloc de memorie paginată cerere virtuală (paginate-Demand Virtual Memory) și funcționează cu memorie ca un set de aceleași pagini de dimensiune. Timpul de tratament al paginii poate fi prezentă în memoria fizică, poate fi descărcat la un (disc) de memorie externă. Când se face referire la pagina descărcată a memoriei procesorului generează o excepție #PF - vina pagină și un manipulator de excepție de software efectuează conversia - „pompare“, pagina de lipsă de pe disc. Paginile nu au nici o legătură directă cu structura logică a datelor sau a programelor.
managementul memoriei Paged oferă posibilitatea de a efectua simultan mai multe sarcini, cu o cantitate limitată de memorie, pentru că la un moment dat în memorie ar trebui să fie păstrate doar câteva pagini de sarcina activă și de a efectua schimbarea necesară.
Figura 3.12 - Stare sarcină Segmentprocesor introdus tampon pentru lookaside TLB (Traducere Uita-te la o parte tampon), care reținerile folosite intensiv tabele rânduri.
În procesoarele TLB Tastarea este o memorie cache cu patru tabele asociative 32 de linii de traducere. O astfel de rezoluție poate stoca informații despre o emisiune de la 128 Kbytes de memorie, care permite lovit raportul cache-ul de 98%, adică, doar 2% din accese la memorie necesită referințe suplimentare la tabele. Procesorul Pentium au separat TLB pentru instrucțiuni și date și P6 în tampoane separate prin mărime și paginile încă deservite (4k + 2 megabiti / 4 MB).
31 12 11 9 8 7 6 5 4 3 2 1 0