Ce sunt registrele de segmente? De ce este segmentată memoria? Cum se face segmentarea memoriei?


Cel mai bun răspuns

Un segment este o bucată de memorie contiguă. Într-o schemă de memorie segmentată, întreaga memorie a unui proces este în segmente. Primele sisteme de memorie virtuală (Burroughs B5000, Mulitcs) s-au bazat pe segmente de dimensiuni variabile care sunt copiate în și din RAM.

Un program face referire la fiecare segment ca un offset la un registru de segmente. Conținutul real al registrului de segmente este controlat de sistem. Sistemul știe când se face referință la un segment atunci când este utilizat registrul de segmente și îl folosește pentru a gestiona memoria virtuală.

Acest lucru este în contrast cu paginat memorie virtuală, utilizată astăzi peste tot, în care cuantele memoriei virtuale sunt bucăți de memorie de dimensiuni fixe. Paginarea este mai complexă și necesită mai multă asistență hardware.

Multits MIT a avut un impact masiv asupra calculelor moderne (inclusiv multe idei încorporate în Unix și Linux). Fred Pollack s-a alăturat proiectului Intel 286 proaspăt ieșit din MIT. El a văzut registrele „segmentului” 8086 (de fapt registre de bază) și a făcut lobby cu succes pentru a face aceste registre reale de segment ca în Multics. (Fred a devenit ulterior membru Intel.)

Segmentele de 286 de 64 KB au suferit aceeași problemă ca și segmentele Multics: erau prea mici. De prea multe ori sunt necesare mai multe segmente pentru a accesa structurile de memorie, ceea ce înseamnă reîncărcarea registrelor de segmente și adesea implicarea sistemului de operare. Datorită impactului asupra performanței, segmentarea a fost rar utilizată, iar registrele de segmente au fost utilizate ca registre de bază în modul de compatibilitate 8086.

Intel 386 pe 32 de biți a adăugat memorie virtuală paginată (YEA!) Sub schema de segmente (meh ). Modelul de arhitectură Intel pe 64 de biți elimină în totalitate registrele de segmente, deși încă mai are moduri de compatibilitate, toate revenind la 8086.

Răspuns

1. ce sunt registrele de segmente?

-> După cum știm cu toții că registrul este prezent în procesor. creăm segmente în memorie (segmentare), pentru a obține locația inițială a acestor segmente stocăm adresa acestor segmente în registrul de segmente. în registre de segmente scurte se stochează locația inițială a segmentelor prezente în memorie, adică adresa segmentului.

3.cum se face segmentarea memoriei?

-> segmentarea memoriei se face folosind adrese de 16 biți. Mai întâi dăm adresa segmentului (începutul segmentului), după ce oferim adresa segmentului, oferim adresa offset () pentru a accesa locațiile din acel segment.

oferim adresa segmentului o singură dată după aceea, oferim adresa offset.

oferim adresa segmentului și adresa offset ambele adrese de 16 biți ca programator. după ce a dat această adresă, este datoria procesorului să ascundă atât adresa în adresa fizică (adresa reală).

adresa fizică = adresa segmentului * 10 + adresa offset

= 1000 * 10 + 2345

= 12345H

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *