Segmentare (memorie)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Segmentarea , în domeniul IT, este o tehnică comună de gestionare a memoriei care împarte memoria fizică disponibilă în blocuri de lungime fixă ​​sau variabilă numite segmente . Unul dintre scopurile posibile ale acestei tehnici este implementarea mecanismelor de protecție a memoriei . O altă tehnică comună care asigură securitatea proceselor încrucișate este paginarea . Într-un sistem de operare care utilizează segmentarea, o adresă de memorie conține o parte care identifică un segment și o parte care specifică compensarea în cadrul segmentului specificat. [1] Segmentarea se aplică de obicei direct spațiului de adrese fizice sau unui spațiu de adrese virtuale derivat din cel fizic cu o aplicație liniară .

În plus față de adresa și lungimea fizică, un segment poate fi asociat cu o combinație de permisiuni pe baza cărora se determină ce procese sunt permise sau le este refuzat un anumit tip de acces. În acest fel, de exemplu, se pot distinge segmente de programe , date și stive . Managerul de memorie se poate asigura astfel că numai instrucțiunile (și nu, de exemplu, datele) sunt încărcate dintr-un segment de program sau că informațiile încărcate dintr-un segment de date nu sunt interpretate ca instrucțiuni pentru procesor . În plus, un segment poate avea un semnalizator care specifică dacă segmentul în sine este prezent în stocarea principală sau dacă trebuie recuperat din mediul de stocare secundar înainte de a fi utilizat. Dacă un proces încearcă să acceseze un segment care nu este disponibil în prezent în memoria principală, apare o excepție hardware care permite sistemului de operare să încarce segmentul de interes din memoria secundară.

Suport hardware

Procesoarele moderne au o componentă hardware integrată specială pentru traducerea adreselor virtuale în adrese fizice,MMU , care îndeplinește și sarcina de a verifica validitatea unei adresări. Pe sistemele care nu au o astfel de componentă, cum ar fi procesorul Intel 80286 , adresele fizice pot fi calculate numai din adrese virtuale prin intermediul unei funcții liniare . Pentru acest tip de procesor, segmentarea este singura metodă de gestionare a memoriei în modul protejat . Cu toate acestea, trebuie remarcat faptul că segmentarea utilizată de 80286 și de procesoarele ulterioare face posibilă protejarea memoriei prin atribuirea permisiunilor de citire și scriere ; pe de altă parte, cu procesoarele x86 anterioare, o astfel de protecție nu a fost posibilă. Dacă este disponibilă o MMU, la fel ca în cazul procesoarelor Intel 80386 sau superioare, sistemul de operare poate decide dacă se folosește o masă de paginare sau se folosește tehnica comună de segmentare pentru operațiuni normale de acces la memorie.

Segmentarea

Tehnica segmentării presupune o subdiviziune logică, efectuată a priori, a programului care va fi executat. Această diviziune prevede identificarea unităților de diferite dimensiuni, numite segmente , pe baza unor criterii logice și de către programator. Un program poate fi împărțit într-un segment care conține codul legat de procedurile cele mai frecvent utilizate, într-un alt conținând variabilele globale și așa mai departe. Împărțirea în segmente este dictată de criterii pentru minimizarea apelurilor între segmente. Pentru a vă referi la un obiect din cadrul programului, va fi necesar să cunoașteți numărul segmentului în care este conținut și adresa din cadrul segmentului, numită Offset . Deci adresa logică a unui obiect va fi:

 Adresa logică a lui X = (SegmentNum, Offset)

Pentru a calcula adresa fizică a unui obiect va fi necesar să cunoașteți adresa centrală a memoriei de la care începe segmentul fizic relativ la segmentul logic și să adăugați Offset-ul. Fiecare segment logic corespunde unui segment fizic alocat în celule de memorie centrală adiacente . Pentru a traduce adresa logică într-o adresă fizică, se folosește un tabel numit tabel de traducere a segmentelor, care conține, pentru fiecare proces, următoarele informații referitoare la segmentele logice corespunzătoare acelui proces:

  • Adresa de memorie centrală de la începutul segmentului fizic;
  • Dimensiunea segmentului.

Spațiul fizic al memoriei poate fi gestionat cu tehnica partițiilor variabile; în acest fel, atunci când un proces solicită alocarea unui segment, sistemul de operare încearcă să îi atribuie o partiție gratuită urmând una dintre politicile de alocare deja văzute: cea mai bună potrivire, prima potrivire sau cea mai proastă potrivire.

În general, este, prin urmare, necesar să gestionați spațiul liber adăugând la tabelul anterior și intrările referitoare la „segmentele” libere . Spațiul liber va fi recompactat periodic.

Segmentarea pare a fi o generalizare a tehnicii de alocare a partiției variabile, în care programatorului i se permite să împartă programul în segmente, fiecare dintre acestea fiind alocat unei partiții. Această diviziune facilitează găsirea partițiilor decât în ​​cazul unui singur segment mare pentru întregul program.

Memorie virtuală segmentată

Memoria virtuală segmentată constă în utilizarea în comun a segmentării și încărcării numai a segmentelor necesare în memorie. Pentru a face acest lucru, este necesar să păstrați următoarele informații în tabelul de traducere a segmentelor (așa cum a fost cazul paginilor logice în paginare):

  1. un bit care indică dacă segmentul logic este încărcat sau nu în memoria centrală;
  2. adresa centrală a memoriei de la începutul segmentului fizic;
  3. mărimea segmentului;
  4. un bit care indică dacă segmentul a fost modificat în memoria principală;
  5. locația pe disc a segmentului logic.

Atunci când un segment nu este prezent în memorie, se creează o întrerupere a erorii de segment care este tratată în mod similar cu defecțiunea paginii etc.

Avantajele și dezavantajele segmentării

Comparativ cu paginarea, segmentarea are avantajul de a împărți programul în module coezive logic ; aceasta reduce timpii I / O pe disc. În plus, structurile de date pentru tabelul de traducere trebuie să se afle și în memoria principală, ocupând spațiu valoros.

Segmentarea produce fragmentare externă , datorită dimensiunii diferite a segmentelor, așa cum sa întâmplat pentru organizația cu partiții variabile. Prin urmare, și pentru segmentare sunt necesare activități periodice de compactare și realocare a segmentelor utilizate.

Notă

  1. ^ Tanenbaum , pp. 426-429 .

Bibliografie

Elemente conexe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT