• Non ci sono risultati.

Memoria  Virtuale

N/A
N/A
Protected

Academic year: 2021

Condividi "Memoria  Virtuale"

Copied!
4
0
0

Testo completo

(1)

Memoria  Virtuale  (WIP)   AXO   Matteo  Guarnerio  

  1  

Memoria  Virtuale  

Riferimento  alla  slide:  AXO  –  03  –  Memoria  Virtuale.pdf    

Viene  gestita  dalla  MMU  (Memory  Management  System),  un  chip  implementato   nella  CPU.  

 

Il  parametro  R,  identifica  il  numero  massimo  di  pagine  che  è  possibile  

memorizzare  per  un  singolo  processo  nella  MMU,  quindi  il  numero  massimo  di   righe  allocate  nella  tabella  MMU  per  ogni  processo.  

 

Ogni  processo  ha  una  tabella  virtuale  delle  locazioni  in  memoria,  la  tabella  MMU:  

PID  –  

Identificativo   del  processo  al   quale  

appartiene  la   zona  di   memoria   allocata  

NPV  –  Indirizzo  di   memoria  virtuale   (quindi  partirà  da   0x0)  

NPF  –  Indirizzo  di   memoria  fisico   (RAM  o  disco)  

Bit  valido  –   Utilizzato  per  il   controllo  se  la   pagina  risiede  in   RAM,  valore  1,  o  se   è  mancante  e   quindi  risiedente   su  disco,  valore   zero  (Interrupt   Page  Fault)   Per  identificare  una  chiave  di  questa  tabella  di  utilizzano  insieme  i  campi  PID  e   NPV.  

Lo  spiazzamento  della  memoria  virtuale  sarà  dato  da:  NPF  –  NPV.  

 

L’interruzione  Page  Fault,  si  verifica  ogni  qualvolta  una  pagina  non  sia  caricata  in   RAM,  successivamente  viene  eseguita  l’operazione  per  caricarla  in  memoria.  

 

La  vista  RAM  si  può  schematizzare  in  una  tabella:  

Bit  Accesso  –   Impostato  a  1   quando  si  accede   alla  pagina  fisica  

Bit  Modifica  –   Impostato  a  1   quando  si  accede   alla  scrittura  della   pagina  fisica  

NPF  –   Indirizzo   fisico  

Contenuto  –  Dati   memorizzati  

 

   

(2)

Memoria  Virtuale  (WIP)   AXO   Matteo  Guarnerio  

  2  

Paginazione  

Consiste  nel  dividere  la  memoria  in  blocchi  di  dimensione  minore,  detti  pagine,   da  utilizzare  come  unità  per  caricare  i  dati.  

 

Ad  esempio:  

 

Memoria  virtuale  (logica)  di  dimensione  4GB.  

Memoria  fisica  (PHY)  di  dimensione  512MB.  

Dimensione  delle  pagine  4KB.  

 

Indirizzo  virtuale  

NPV  –  Numero  di  pagine  virtuali   Spiazzamento  –  Indica  la  dimensione   della  pagina  

20  bit   12  bit  

32  bit    

2!""#$%$ = 2!"= 4096  !"#$ = 4  !"  

#!"#$%& = 2!"# = 2!" ≈ 1  !"#$%&'"  

 

Per  tradurre  le  pagine  virtuali  in  pagine  fisiche  il  SO  utilizza  una  Virtual   Page  Table.  

 

Spazio  memoria  fisico,  determinato  dalla  dimensione  fisica  della  RAM.  

NPF  –  Numero  di  pagine  fisiche   Spiazzamento  –  Indica  la  dimensione   della  pagina,  viene  impostata  uguale  a   quella  della  memoria  virtuale  

17  bit   12  bit  

29  bit    

2!""#$%$ = 2!"= 4096  !"#$ = 4  !"  

#!"#$%& = 2!"# = 2!" = 128  !"  

 I  problemi  legati  alla  progettazione  della  memoria  virtuale  sono:  

• Strategia  di  caricamento  delle  pagine:  Demand  Paging  /  Working  Set  

• Politica  di  sostituzione:  Nel  caso  la  memoria  centrale  non  abbia  pagine   disponibili  bisognerà  scegliere  quali  pagine  sostituire  per  far  posto  alla   nuova  pagina.  

• Dimensione  delle  pagine:  è  strettamente  correlata  alla  velocità  di   trasferimento  delle  pagine  tra  disco  rigido  e  RAM  e  tra  RAM  e  MMU.  

 

Demand  Paging:  Le  pagine  vengono  caricate  su  richiesta,  quindi  in  seguito  ad  un   interrupt  di  Page  Fault.  

Working  Set:  Vengono  caricate  solo  le  pagine  che  in  ogni  istante  delle  ultime  k   richieste  a  memoria  sono  state  utilizzate.  Quindi  con  k  molto  grande,  l’insieme  di   lavoro  di  un  programma  varia  molto  lentamente.  

 

Il  numero  di  pagine  residenti  in  MMU  per  un  processo  si  può  ottenere  da  una   stima  dell’insieme  di  lavoro.  

(3)

Memoria  Virtuale  (WIP)   AXO   Matteo  Guarnerio  

  3  

Se  il  parametro  R<k,  il  Working  Set  non  risiederà  tutto  in  memoria  MMU,  e   quindi  si  verificheranno  spesso  Page  Fault,  con  conseguente  perdita  di  tempo  nel   caricare  le  pagine  in  memoria  MMU.  

 Politica  di  sostituzione:  La  distribuzione  degli  accessi  a  memoria  e  nello  spazio   non  è  omogenea,  ma  presenta  la  caratteristica  di  località.  

• Località  temporale:  un  programma  tende  ad  accedere  agli  stessi  indirizzi   di  memoria  cui  ha  già  acceduto  di  recente  (cicli  di  istruzioni,  solitamente   quelli  più  interni).  

• Località  spaziale:  un  programma  accede  con  maggior  probabilità  agli   indirizzi  vicini  a  quelli  a  cui  ha  già  acceduto  in  passato  (strutture  dati   lineari,  media  file).  

 

Tra  le  politiche  di  sostituzione  troviamo:  

• Casuale:  viene  estratta  una  pagina  casuale.  

• Algoritmo  LRU  (Last  Recently  Used):  il  SO  cerca  di  determinare  la   pagina  meno  utile  in  un  futuro  prossimo,  ovvero  quella  utilizzata  meno  di   recente  (principio  di  località),  quindi  con  bassa  probabilità  di  appartenere   all’insieme  di  lavoro  corrente.  

Si  basa  sul  Bit  Accesso,  che  viene  posto  a  1  quando  la  pagina  viene   acceduta  e  periodicamente  viene  posto  a  0  dal  SO.  Quando  il  bit  è  a  0,   viene  incrementato  un  contatore.  

Verrà  cancellata  la  pagina  con  Bit  Accesso  a  0  e  contatore  più  elevato.  

• FIFO  (First  In  First  Out):  viene  sostituita  sempre  la  pagina  caricata  meno   di  recente,  indipendentemente  da  quando  si  sia  fatto  riferimento  a  tale   pagina.  

• LIFO  (Last  In  First  Out):  viene  sostituita  sempre  la  pagina  caricata  più  di   recente,  indipendentemente  da  quando  si  sia  fatto  riferimento  a  tale   pagina.  

 

Quando  ci  sono  più  possibilità  di  scelta  tra  le  pagine  da  espellere,  andrebbe   scelta  la  pagina  non  modificata,  cosicché  non  bisogna  riscriverla  su  disco.  Per   fare  questo  si  utilizza  il  Bit  Modifica,  che  se  è  impostato  a  0  significa  che  la  pagina   non  è  stata  modificata.  

   

(4)

Memoria  Virtuale  (WIP)   AXO   Matteo  Guarnerio  

  4  

Segmentazione  

I  segmenti  sono  spazi  di  memoria  virtuali  indipendenti.  

Il  processo  viene  diviso  in  tre  segmenti:  codice,  dati  e  pila.  

Queste  tre  pagine  sono  messe  in  corrispondenza  con  la  memoria  fisica.  

 

I  vantaggi  di  utilizzare  i  segmenti  sono:  

• Possibilità  di  ridimensionarli  dinamicamente  con  il  programma  in   esecuzione.  

• Possibilità  di  condividere  aree  di  memoria  “logiche”  tra  più  processi.  

• Possibilità  di  assegnare  privilegi  e  diritti  d’accesso  ad  ogni  segmento.  

 

La  struttura  di  un  segmento  è  composta  da  

N.  Pagina  Virtuale  nel  Segmento   Spiazzamento  Pagina    

Per  tradurre  l’indirizzo  virtuale  in  indirizzo  fisico  sono  necessarie:  

1. Una  tabella  dei  segmenti  del  processo:  

Composta  da  una  riga  per  ogni  segmento  contenente  la  pagina  virtuale   d’inizio  del  segmento  stesso.  

2. La  tabella  delle  pagine  complessiva  per  ogni  processo:  

Composta  da  una  riga  per  ogni  pagina  dello  spazio  di  indirizzamento   virtuale  del  processo.  Ha  la  stessa  struttura  della  tabella  utilizzata  per  la   paginazione.  

 

NOTA:  Quando  un  segmento  viene  condiviso  da  più  processi,  nella  tabella  della   MMU  dovrò  aggiungere  un  record  per  ogni  processo  che  lo  utilizza.  

Riferimenti

Documenti correlati

• quando il processo in esecuzione cerca di accedere a una pagina alla quale non è assegnato alcun page frame, tale pagina viene copiata dallo swap space a un frame libero;.. •

all’interno della lower level page table situata all’indirizzo appena ottenuto, si accede alla entry specificata dai bit centrali dell’indirizzo logico, che contiene il numero del

Allora in CS verrà messo l’indirizzo 4000 (vedi più avanti l’argomento SEGMENTAZIONE per ulteriori dettagli). Dopo il LOADING, poiché ora CS contiene l’indirizzo di inizio

Segmentazione pura (niente paginazione) e calcolo degli indirizzi fisici in IA-32 (Selettore di Segmento e Tabella dei Segmenti – vedi figura precedente ).. • Indirizzi Logici

– Se tenta di accedere a un indirizzo con bit di validità 0, viene generato un trap denominato page fault che può essere dovuto ad un errore nella gestione degli indirizzi

Ancora sulla paginazione su richiesta − 2.. ❖ Quando si verifica un page fault, il SO deve portare la pagina desiderata dalla memoria secondaria nella me- moria principale. ❖ La

 Alcuni SO, come Solaris, usano solo file mappati: nella memoria del processo o del kernel, a seconda della chiamata di sistema usata. File mappati in memoria: condivisione

 Accesso alla memoria: ad ogni riferimento ad una pagina, il contenuto del registro dell’orologio “viene copiato” nel campo del tempo d’uso della tabella delle pagine per