Modul protejat (modul de adresare virtuală protejat) - modul de funcționare al procesoarelor compatibile x86 . A fost implementat deja parțial în procesorul 80286 , dar modul de lucru cu memoria era semnificativ diferit acolo, deoarece procesoarele erau încă pe 16 biți și paginarea în memorie nu a fost implementată . Prima implementare pe 32 de biți a modului protejat este procesorul Intel 80386 . Folosit în procesoare compatibile de la alți producători. Acest mod este utilizat în sistemele de operare multitasking moderne, Windows , Linux , macOS .
Un mod similar a fost folosit de Digital Equipment (DEC) pentru computerele pe 32 de biți: VAX-11 .
În procesorul 80286 , pe lângă modul real , a fost implementat și un mod protejat. În modul protejat, procesorul poate adresa până la 16 MB de memorie fizică și 1 GB de memorie virtuală (16384 segmente a câte 64 KB fiecare) prin schimbarea mecanismului de adresare. Trecerea de la modul real la modul protejat se face în software și este relativ simplă, totuși, pentru a comuta înapoi, este necesară o resetare hardware a procesorului. Registrul Machine Status Word (MSW) este utilizat pentru a ține evidența modului de funcționare curent al procesorului. Programele în modul real nu pot rula în modul protejat fără modificări, la fel ca programele BIOS ale mașinii .
Esența modului protejat este următoarea: programatorul și programele pe care le dezvoltă folosesc un spațiu de adrese logic, a cărui dimensiune poate fi de 1 gigaoctet. Adresa logică este convertită automat într-o adresă fizică de către unitatea de gestionare a memoriei (MMU). În acest caz, conținutul registrului de segment nu este direct legat de adresa fizică, ci este numărul de segment din tabelul corespunzător. Datorită modului protejat, doar partea din program care este necesară în acest moment poate fi stocată în memorie, iar restul poate fi stocată în memorie externă (de exemplu, pe un hard disk). Dacă este accesată o parte a programului care nu se află în prezent în memorie, sistemul de operare poate întrerupe programul, încărca secțiunea necesară de cod din memoria externă și poate relua execuția programului. În consecință, programele care sunt mai mari decât cantitatea de memorie disponibilă devin valide, iar utilizatorul simte că lucrează cu mai multă memorie decât are de fapt.
Adresa fizică este formată după cum urmează. Registrele de segment stochează un selector care conține indexul descriptorului în tabelul descriptor (13 biți), 1 bit care determină ce tabel de descriptor va fi accesat (local sau global) și 2 biți ai nivelului de privilegiu solicitat. În continuare, sunt accesate tabelul de descriptori corespunzător și descriptorul corespunzător, care conține adresa inițială a segmentului de 24 de biți , dimensiunea segmentului și drepturile de acces, după care adresa fizică necesară este calculată prin adăugarea adresei segmentului cu decalajul față de cei 16 biți. Inregistreaza-te.
Odată cu apariția procesoarelor 80386 pe 32 de biți de la Intel, procesoarele pot funcționa în trei moduri: procesor 8086 real , protejat și virtual.
În modul protejat, sunt utilizate capabilitățile complete ale unui procesor pe 32 de biți - sunt furnizate acces direct la 4 GB spațiu de adrese fizice și multitasking cu execuția paralelă a mai multor programe ( procese ). Strict vorbind, modul multitasking este organizat de sistemul de operare multitasking, cu toate acestea, microprocesorul oferă mecanismul fiabil necesar acestui mod pentru a proteja sarcinile unele de altele folosind un sistem de privilegii pe patru niveluri . Tot în acest mod este disponibilă memoria de paginare, ceea ce crește nivelul de protecție a sarcinilor între ele și eficiența executării acestora.
Cu procesorul i386, Intel a recunoscut necesitatea unui suport mai bun pentru modul real, deoarece software-ul nu era pe deplin pregătit pentru a rula în modul protejat la momentul lansării sale. Prin urmare, de exemplu, în i386, este posibilă trecerea din modul protejat înapoi în modul real (în timpul dezvoltării lui 80286 s-a considerat că acest lucru nu ar fi necesar, prin urmare, pe computerele cu procesor 80286, revenirea la modul real este efectuate de circuite - printr-o resetare a procesorului).
Când microprocesorul este pornit, modul de adresă reală este setat automat în el. Trecerea la modul protejat se realizează programatic prin executarea secvenței adecvate de comenzi. Programele destinate modului protejat trebuie scrise într-un mod special. Aceasta înseamnă că modul real și cel protejat sunt incompatibile.
Toată memoria fizică este împărțită în pagini de dimensiune fixă ( 4K octeți , 2MB sau 4MB, x86_64 și 1GB). Fiecare pagină, indiferent de dimensiune, este aliniată pe o limită de 4K octeți .
Ideea principală se rezumă la formarea tabelelor de descriere a memoriei care determină starea segmentelor/paginilor sale individuale etc. Dacă există o lipsă de memorie, sistemul de operare poate descărca o parte din datele de pe RAM pe disc și poate introduce un indicarea absenței acestor date în memorie în tabelul de descriere. Când încearcă să acceseze datele lipsă, procesorul va genera o excepție #PF (un fel de întrerupere) și va da controlul sistemului de operare, care va returna datele în memorie, iar apoi va returna controlul programului. Astfel, pentru programe, procesul de schimbare a datelor de pe discuri trece neobservat.
Adresarea liniară a memoriei este o schemă de adresare a memoriei computerului în mod protejat (începând cu Intel 80386 și alte procesoare x86 compatibile). Folosit de majoritatea sistemelor de operare multitasking moderne.
Datorită mecanismului de adresare liniară, puteți crea orice număr (limitat doar de dimensiunea RAM ) de spații de adrese virtuale independente . În plus, fiecare pagină a spațiului de adrese liniar poate fi localizată la orice adresă fizică sau chiar poate fi paginată pe disc.
Când se utilizează adresarea liniară, adresa logică de 32 de biți este împărțită în trei părți:
Când utilizați pagini de 4 M octeți , a doua parte lipsește. Offset-ul din pagină va fi determinat de biții 21-0 (22 de biți).
Pentru a activa adresarea liniară, în modul protejat, trebuie să setați bitul PG în registrul CR0 . Mai întâi trebuie să creați în memorie un director de pagini ( English Page Directory , PD) și un tabel de pagini ( English Page Table , PT), apoi încărcați adresa fizică a directorului de pagini în registrul CR3 .
Ambele structuri sunt tabele de intrări de director și tabele de pagini ( English Page Directory Entry , PDE și English Page Table Entry , PTE) pagini de memorie de 4 K octeți .
Ambele elemente au o lungime de 4 octeți (32 de biți ) și au o structură similară:
Câmpurile galbene (Adresa tabelului paginii, Adresa paginii) conțin cei 20 de biți superiori ai tabelului paginii și respectiv adresa paginii (cei 12 biți inferiori ai adresei fizice sunt întotdeauna zero - nu uitați de aliniere).
Cei trei biți Avl sunt biții dați sistemului. În ele se poate scrie orice.
Descrierea steagurilor:
ale sistemelor de operare | Aspecte|||||
---|---|---|---|---|---|
| |||||
Tipuri |
| ||||
Nucleu |
| ||||
Managementul proceselor |
| ||||
Gestionarea și adresarea memoriei |
| ||||
Instrumente de încărcare și inițializare | |||||
coajă | |||||
Alte | |||||
Categorie Wikimedia Commons Wikibooks Wiktionar |