La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano © 2001 - William Fornaciari La Gestione della memoria.

Presentazioni simili


Presentazione sul tema: "CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano © 2001 - William Fornaciari La Gestione della memoria."— Transcript della presentazione:

1 CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano © William Fornaciari La Gestione della memoria Introduzione Docente: William Fornaciari Politecnico di Milano

2 Gestione della memoria© William Fornaciari- 2 - Sommario Indirizzamento Caricamento del codice Indirizzi logici e fisici Sistemi Multiprogrammati Segmentazione e paginazione Esempi

3 Gestione della memoria© William Fornaciari- 3 - Indirizzamento La CPU esegue programmi che elaborano insiemi di dati in base ad una sequenza di istruzioni La CPU genera i riferimenti in memoria per dati e istruzioni, cioè gli indirizzi logici Gli indirizzi cambiano formato nei vari passi: Compilazione Linking Caricamento Esecuzione

4 Gestione della memoria© William Fornaciari- 4 - Indirizzamento Si parla di codice Assoluto: in compilazione vengono generati solo indirizzi con riferimento a dove esattamente il codice dovrà risiedere in memoria durante l'esecuzione Eseguibili.COM di DOS Rilocabile: in compilazione gli indirizzi fanno riferimento ad un indirizzo base non specificato. Verrà fissato dal loader durante il caricamento Eseguibili.EXE di DOS/Windows Dinamicamente rilocabile: codice rilocabile che contiene solo riferimenti relativi a se stesso; può essere spostato durante l'esecuzione Eseguibili di Windows NT

5 Gestione della memoria© William Fornaciari- 5 - Caricamento del codice Caricamento dinamico Una funzione viene caricata solo quando ne è richiesta l'esecuzione Ogni funzione è memorizzata separatamente in formato rilocabile Questa tecnica è utilissima in caso di programmi con molte funzioni usate raramente Esempio: Routine di gestione di errori Il sistema operativo fornisce le primitive per il caricamento dinamico La corretta implementazione di questa tecnica è delegata al programmatore dell'applicazione

6 Gestione della memoria© William Fornaciari- 6 - Caricamento del codice Linking dinamico Una libreria di funzioni viene caricata solo quando ne e' richiesta l'esecuzione. Il codice compilato contiene solo uno stub Stub: parte di codice che permette al compilatore di generare la chiamata corretta ad una funzione esterna, gestita dal sistema operativo Al primo riferimento alla funzione, il codice nello stub controlla la disponibilità della libreria ed in caso ne richiede il caricamento al sistema operativo Per i riferimenti successivi, la libreria è disponibile e la chiamata alle sue funzioni è immediata Esempio: le librerie.DLL in Windows

7 Gestione della memoria© William Fornaciari- 7 - Caricamento del codice Overlays Il codice eseguibile è spezzato in più parti, dette overlay, che si richiamano all'occorrenza Il caricamento degli overlay è coordinato dal programma stesso Non c'è alcun supporto nel sistema operativo Esempio: vecchi programmi DOS, costretti nei 640 KB della memoria dei primi PC

8 Gestione della memoria© William Fornaciari- 8 - Indirizzi logici e indirizzi fisici Un indirizzo generato dalla CPU è detto indirizzo logico o virtuale Un indirizzo logico viene fissato (binding) durante la compilazione/linking per il codice assoluto o durante il caricamento per il codice rilocabile L'insieme degli indirizzi logici generati da un programma è detto spazio di indirizzamento logico Un indirizzo presentato alla memoria per il trasferimento di un valore è detto indirizzo fisico Durante l'esecuzione, l'associazione tra indirizzi logici e fisici è realizzata da un dispositivo hardware dedicato Memory Management Unit (MMU)

9 Gestione della memoria© William Fornaciari- 9 - Indirizzi logici e indirizzi fisici Schema di funzionamento della MMU L'utente non vede mai gli indirizzi fisici, ma sempre e solo quelli logici CPU MMU Registro di rilocazione MEMORIA Indirizzo logico Indirizzo fisico

10 Gestione della memoria© William Fornaciari Sistemi multiprogrammati In un sistema multiprogrammato più processi sono contemporaneamente pronti per essere eseguiti I processi nel sistema devono coesistere nello stesso spazio di indirizzamento fisico Un programma deve risiedere in memoria (almeno in parte!) per essere eseguito dalla CPU Quando un programma non è in esecuzione, non è strettamente necessario che stia in memoria La tecnica per cui un processo viene tolto dalla memoria per fare posto per un altro che verrà schedulato è detta swapping

11 Gestione della memoria© William Fornaciari Swapping Il processo uscente subisce uno swap out Il sistema operativo copia i dati del processo su memoria di massa, in un'area riservata, detta area di swap È inutile salvare le istruzioni: basta ricaricarle dal testo del programma memorizzato nel file system Quando il processo può rientrare nel sistema per essere a sua volta schedulato per continuare l'esecuzione, subisce uno swap in Il sistema operativo lo ricarica in memoria ed il processo viene inserito nella lista dei processi pronti per essere eseguiti

12 Gestione della memoria© William Fornaciari Swapping Se gli indirizzi del processo sono dinamicamente rilocabili Lo swap in può avvenire in qualunque punto della memoria In ogni altro caso, il processo deve essere riportato in memoria nella stessa posizione in cui era avvenuto il caricamento iniziale e il conseguente binding degli indirizzi L'area di swap si trova su un dispositivo veloce e ad accesso diretto, possibilmente separato dal file system Non è necessaria un'organizzazione gerarchica o una protezione dei blocchi di swap, essendo utilizzati direttamente dal sistema operativo

13 Gestione della memoria© William Fornaciari Swapping Un processo può subire uno swap out se È completamente inattivo Non ha operazioni I/O in attesa di completamento Come fare? Non swappare processi con I/O pendenti Realizzare I/O in aree di sistema Swapping in Windows 3.X Mantiene in memoria fisica tanti processi quanti ce ne stanno Quindi inizia a scaricare interi processi in "memoria virtuale" in ordine Least Recently Used (LRU)

14 Gestione della memoria© William Fornaciari Swapping in Windows 3.x

15 Gestione della memoria© William Fornaciari Swapping in Windows 3.x

16 Gestione della memoria© William Fornaciari Sistema operativo e processi utente Alcuni esempi DOS, Windows 3.X e Windows 95 Utilizzano un unico spazio di indirizzamento per il sistema operativo e le applicazioni utente Cattiva soluzione Windows NT Utilizza spazi di indirizzamento separati 2 GB in modalità kernel, per il sistema operativo 2 GB in modalità utente, per le applicazioni di differente tipo Win32, OS/2, Posix

17 Gestione della memoria© William Fornaciari Esempio: WindowsNT Executive I/O Manager File System Device Drivers Process Manager Virtual Memory Manager Microkernel Hardware Abstraction Layer Hardware Window Manager Graphics Driver Posix Win16 Win32 DOSOS2

18 Gestione della memoria© William Fornaciari Esempio: WindowsNT Un processo In modalità kernel può eseguire ogni istruzione In modalità utente solo le istruzioni non privilegiate Se un processo in modalità utente cerca di eseguire un'istruzione privilegiata La CPU genera una interruzione (trap) al processo Esempio: cambiare la modalità di risposta alle interruzioni Esempio: un processo utente ha cercato di accedere ad un'area di memoria al di fuori del proprio spazio di indirizzamento (General Protection Fault)

19 Gestione della memoria© William Fornaciari In memoria devono coesistere Il sistema operativo I processi utente Ciò comporta Condivisione della memoria La memoria è logicamente partizionata in un'area di sistema e una per i processi utente Separazione degli spazi di indirizzamento I differenti spazi di indirizzamento è bene che siano separati, in modo da non permettere ad un processo utente di corrompere il sistema operativo o addirittura bloccare il sistema Sistema operativo e processi utente

20 Gestione della memoria© William Fornaciari Il sistema operativo, in genere Risiede nella parte bassa dello spazio di indirizzamento In questa zona vi sono i vettori per le interruzioni Spazi di indirizzamento dei processi delimitati tramite Un registro di rilocazione Un registro limite Sistema operativo e processi utente CPU Registro Limite Registro di Rilocazione Memoria < + TRAP: Errore di indirizzamento Indirizzo logico Indirizzo fisico si no

21 Gestione della memoria© William Fornaciari Partizione singola La memoria è divisa in due parti Una per il sistema operativo Una per un processo utente Quando il processo è schedulato per l'esecuzione, i registri di rilocazione e limite vengono inizializzati Il sistema operativo è protetto dalle azioni del programma utente Le dimensioni dei processi e del sistema operativo stesso possono cambiare dinamicamente É limitante permettere un solo processo utente in memoria

22 Gestione della memoria© William Fornaciari Partizioni multiple fisse La memoria è divisa in aree contigue di dimensione fissa dette partizioni Ognuna delle partizioni può contenere un processo Quando c'è una partizione libera un processo è caricato ed è pronto per essere schedulato per l'esecuzione É necessario conoscere la dimensione del processo prima di attivarlo Processi piccoli causano spreco di spazio di memoria Processo più grande della partizione, non possono essere eseguiti Esempio: IBM OS/360, sui mainframe ( )

23 Gestione della memoria© William Fornaciari Partizioni multiple variabili Il sistema operativo tiene traccia in una tabella di quali parti della memoria sono occupate e quali no All'inizio è libera una unica area pari a tutta la memoria, eccetto la parte occupata dal SO stesso Quando un processo deve essere caricato, il SO Seleziona un'area in memoria di dimensioni sufficienti a contenerlo completamente La alloca al processo, finché il processo, terminando, la rilascia Non viene allocato spazio che sarà inutilizzato È necessario conoscere la dimensione del processo prima di attivarlo

24 Gestione della memoria© William Fornaciari Partizioni multiple variabili Ci può essere complessivamente abbastanza spazio libero per contenere un processo in attesa, ma non in un unica area Si ha frammentazione esterna Se, dato un processo da caricare, più aree sono sufficienti per contenerlo, quale sceglie il sistema operativo? Esistono diverse soluzioni possibili

25 Gestione della memoria© William Fornaciari Partizioni multiple variabili Tecniche di allocazione First fit: La prima area che trova La scelta è rapida Non si fanno analisi sulla bontà della scelta –è la politica utilizzata genericamente poiché rappresenta un ottimo rapporto tra complessità e risultato Best fit: L’area di dimensioni minime Il frammento generato è “piccolo” Occorre tenere ordinata per dimensione la lista delle aree libere, oppure scandirla tutta Worst fit: L’area di dimensioni massime Il frammento generato è “grande” (meglio utilizzabile?) Occorre tenere ordinata per dimensione la lista delle aree libere, oppure scandirla tutta

26 Gestione della memoria© William Fornaciari Frammentazione Interna ed Esterna Frammentazione interna Lo spazio allocato in eccesso rispetto alle esigenze dei processi, inutilizzabile perché allocato Frammentazione esterna Lo spazio libero in aree troppo piccole per essere utili Tutte le tecniche di gestione della memoria soffrono di frammentazione interna, in varia misura La frammentazione esterna può essere ridotta: Tecniche di compattamento basate sulla rilocazione I processi devono essere rilocabili

27 Gestione della memoria© William Fornaciari Frammentazione Interna ed Esterna La rilocazione è particolarmente vantaggiosa se associata allo swapping Il processo da spostare viene trasferito dalla memoria centrale ( swap out ) alla regione di swap Quando è il momento di ricaricarlo ( swap in ), lo si posiziona in una nuova area Al gestore della memoria non resta altro da fare che tenere traccia e gestire le aree libere.

28 Gestione della memoria© William Fornaciari Partizioni: conclusioni Le tecniche di allocazione basata sulle partizioni Sono flessibili, ma migliorabili Sono piuttosto complesse negli algoritmi di gestione Richiedono una stima preventiva della dimensione del processo Il punto critico è che l'area allocata ad un processo deve essere contigua

29 Gestione della memoria© William Fornaciari Paginazione Il sistema operativo alloca ai processi aree di memoria non contigue La memoria fisica è suddivisa in blocchi di dimensione fissata, detti frame Lo spazio di indirizzamento logico è suddiviso in pagine di dimensione pari a quella dei frame Il sistema operativo: Alloca ai processi pagine Tiene traccia dello stato di allocazione dello spazio di indirizzamento A tale scopo utilizza una tabella delle pagine, la page table

30 Gestione della memoria© William Fornaciari Paginazione Ogni indirizzo logico generato dalla CPU è diviso in due parti Il numero di pagina Lo spiazzamento, o offset, all'interno della pagina Il numero di pagina è usato come indice nella tabella delle pagine, per ottenere il numero di frame corrispondente alla pagina richiesta L'indirizzo fisico è composto Dal numero di frame ricavato dalla page table Dall'offset contenuto nell'indirizzo logico

31 Gestione della memoria© William Fornaciari Paginazione Traduzione di indirizzi logici in indirizzi fisici CPU Offset Memoria Indirizzo logico Indirizzo fisico PageOffsetFrame Page Table... f... PMAltri bitFrame P = presente M = modificata... f... Puntatore Page Table + registro

32 Gestione della memoria© William Fornaciari Paginazione Non c'è frammentazione esterna Ogni pagina libera può essere allocata Rimane la frammentazione interna Pagine di grandi dimensioni Maggiore frammentazione interna Pagina di piccole dimensioni Minore frammentazione interna Aumenta il carico di gestione della paginazione in quanto si ha page table più grande) I/O meno efficiente in caso di trasferimento di molti blocchi piccoli, piuttosto che pochi grossi

33 Gestione della memoria© William Fornaciari Paginazione L'utente vede la memoria logica come un unico spazio contiguo di indirizzi Il gestore della memoria tratta pagine La memoria fisica è organizzata a frame un frame è anche detto pagina fisica La paginazione separa completamente il punto di vista dell'utente sulla memoria dalla sua realizzazione fisica Il meccanismo che permette questo tipo di gestione è la combinazione di Sistema operativo Alcuni accorgimenti nell'hardware

34 Gestione della memoria© William Fornaciari Paginazione: dimensione pagina Fattori da considerare Ridurre la frammentazione interna Suggerisce pagine piccole per ottimizzare l’uso della memoria Ridurre la richiesta di pagine dal processo suggerisce pagine grandi per evitare continue richieste da parte del processo Contenere la dimensione della tabella delle pagine suggerisce pagine di grandi dimensione per averne un numero ridotto da gestire. –Pagine molto grandi che risiedono in memoria virtuale potrebbero generare un doppio page fault. »il primo per caricare la parte di tabella desiderata. »il secondo per caricare la pagina del processo.

35 Gestione della memoria© William Fornaciari Paginazione: dimensione pagina Fattori da considerare (continua) Sfruttare le caratteristiche dei trasferimenti dati dei dispositivi di I/O suggerisce pagine ampie. Usare efficientemente il principio di località suggerisce pagine o grandi o piccole ma non di medie dimensioni. –Pagine piccole: saranno disponibili molte pagine per processo che, dopo un periodo di assestamento, conterranno le parti del processo vicine agli accessi recenti. Ne consegue un’alta probabilità di avere un ridotto numero di page fault. –Pagine molto grandi: tanto più la pagina si avvicina alla dimensione del processo tanti meno page fault si avranno

36 Gestione della memoria© William Fornaciari Paginazione: dimensione pagina Ulteriore aspetto: la politica di gestione del working set (software) influenza la progettazione della dimensione della pagina (hardware). –Working set: numero di pagine allocate ad un processo. Infatti, aumentando la dimensione del working set decresce il numero di page fault. Progettazione della dimensione della pagina: ipotizza, oggi giorno, dimensioni di memoria da 4MB a 256 MB considera compromessi tra dimensione del TLB, Cache, numero di accessi alla memoria per ciclo istruzioni.

37 Gestione della memoria© William Fornaciari Paginazione: dimensione pagina Esempi di dimensione di pagina: IBM 370/XA e 370/ESA: 4KB IBM AS/400: 512 B Famiglia VAX: 512 B DEC Alpha: 8 KB PowerPC: 4 KB Diverse architetture supportano dimensioni di pagina variabile. L’uso di pagine di dimensioni differenti consente un uso efficace della TLB. Esempio di pagine variabili: –R4000: sette dimensioni di pagina da 4 KB a 16 MB

38 Gestione della memoria© William Fornaciari Paginazione: Page Table Ne esiste una per ogni processo Fa parte del contesto del processo, come, ad esempio, il program counter Per tenere traccia in tutto il sistema di quali frame/pagine sono allocati, il sistema operativo gestisce una tabella (frame table) Ogni accesso alla memoria (dati, istruzioni) comporta un accesso alla page table Se la page table fosse realizzata esclusivamente via software, tempi di accesso per i programmi utente (e in parte anche per il s.o.) sarebbero raddoppiati É necessario un supporto nell'hardware

39 Gestione della memoria© William Fornaciari Paginazione: Page Table Registri dedicati all'intera page table nella CPU Esempio: DEC PDP 11 ( ) 64 KB di memoria organizzata in pagine da 8 KB Indirizzi a 16 bit Indirizzamento ai singoli byte attraverso un insieme di 8 registri che realizzavano la page table direttamente nel processore Accesso veloce Non scalabile Oggi le memorie sono molto, molto più grandi (GB) ma la dimensione delle pagine resta dell'ordine dei KB, quindi la page table ha migliaia, milioni di elementi

40 Gestione della memoria© William Fornaciari Paginazione: Page Table Registri associativi dedicati alla parte di page table in uso (Translation Lookaside Buffer o TLB) Ogni registro è una coppia chiave/valore Quando una chiave è presentata al TLB La ricerca avviene contemporaneamente su tutti gli elementi Restituisce il valore, se presente Altrimenti innesca il caricamento dalla page table complessiva dell'elemento corretto TLB hit: successo nella ricerca associativa nel TLB TLB miss: mancato ritrovamento nel TLB

41 Gestione della memoria© William Fornaciari Paginazione: Page Table Funzionamento dell’hardware di paginazione Punto di partenza è l’indirizzo virtuale Passo primo: esame del TLB Se si ha un TLB Hit allora si recupera l’indirizzo del frame e si costruisce l’indirizzo fisico. Se si ha un TLB miss allora il processore utilizza il numero di pagina come indice nella tabella delle pagine. Passo secondo: esame della tabella delle pagine se il bit Present ha valore 1 allora la pagina è in memoria e il processore aggiorna il TLB il quale consentirà di costruire l’indirizzo fisico se il bit Present è 0 si ha un page fault e si attiva il SO.

42 Gestione della memoria© William Fornaciari Paginazione: Page Table CPU Offset Memoria Principale Indirizzo logico Indirizzo fisico PageOffsetFrame TLB PageFrame... Page Table... f... TLB hit TLB miss Memoria secondaria Fault di pagina (risolto dal SO) Carica la pagina Aggiorna la page table +

43 Gestione della memoria© William Fornaciari Paginazione: Page Table inizio CPU controlla il TLB Esiste nel TLB? Accesso alla page table Esiste la pagina in memori a no La CPU genera L’indirizzo fisico si Aggiorna il TLB si Memoria piena? Sostituzione pagina Il SO chiede la lettura della pagina da disco; La CPU attiva l’hardware per l’I/O; la pagina è trasferita nella memoria principale; si aggiorna la tabella delle pagine; no si no Routine gestione fault di pagina

44 Gestione della memoria© William Fornaciari Paginazione: Esempio Supponiamo che un sistema abbia 100 ns per l'accesso alla memoria 20 ns per l'accesso al TLB Con un hit rate del 80 % Il tempo medio di accesso alla memoria è: ( ) x ( ) x 0.20 = 140 ns Senza TLB Il tempo medio di accesso alla memoria è: = 200 ns Guadagno: 200/140  1,43 cioè 43% Il meccanismo di base della paginazione comporta Peggioramento delle prestazioni piuttosto contenuto senza paginazione/paginazione con TLB= 100/140  0,71 cioè –29% Aumento di complessità dell'hardware e del SO

45 Gestione della memoria© William Fornaciari Paginazione: Page Table La paginazione permette di condividere le pagine La page table può contenere informazioni aggiuntive sulle pagine Bit di protezione Indica se la pagina è in sola lettura Bit valido/non valido Indica se il contenuto della pagina è valido per il processo (Esempio: nel suo spazio di indirizzamento) In sistemi multiprocessore è di supporto alla gestione della coerenza per la memoria distribuita Contatore di riferimenti In caso di condivisione di pagine

46 Gestione della memoria© William Fornaciari Paginazione: Page Table Nella maggior parte dei sistemi è presente una tabella delle pagine per processo. Ogni processo può occupare enormi quantità di memoria virtuale. Esempio: supponendo che un processo possa avere uno spazio di indirizzamento di 2GB (2 31 B) e supponendo pagine da 2 10 Byte, la tabella delle pagine possiede 2 21 elementi. Soluzione: memorizzazione della tabella delle pagine in memoria virtuale e non in memoria reale. Implica che le tabelle delle pagine sono paginate!

47 Gestione della memoria© William Fornaciari Paginazione: Page Table Una organizzazione tipica è attraverso uno schema a due livelli: Una directory delle pagine ogni elemento punta ad una tabella delle pagine Un insieme di sotto tabelle delle pagine. Tipicamente una sotto tabella delle pagine è ampia quanto una pagina al fine di essere completamente contenuta.

48 Gestione della memoria© William Fornaciari Segmentazione Un programma può essere visto come una collezione di diverse entità Codice, dati statici, dati locali alle procedure, stack... Il compilatore può costruire il codice oggetto in modo da rispecchiare questa ripartizione Ogni entità viene caricata dal loader Separatamente In aree di dimensione variabile dette i segmenti Ogni indirizzo logico consiste di due parti Il numero di segmento Lo spiazzamento (offset) nel segmento stesso

49 Gestione della memoria© William Fornaciari Segmentazione Base :Indirizzo fisico del segmento Limite :Dimensione del segmento CPU Memoria < + TRAP: Errore di indirizzamento si no Segment Table LimiteBase... OffsetSegment

50 Gestione della memoria© William Fornaciari Segmentazione La tabella dei segmenti è realizzata con le stesse tecniche utilizzate per la tabella delle pagine Valgono le considerazioni su hit/miss/tempi di accesso alla memoria presentate per la paginazione Vengono memorizzati nella tabella dei segmenti, per ogni segmento, i bit di protezione/valido/ contatore di condivisione esaminati per la paginazione La segmentazione è complessa Si ha il problema della frammentazione esterna Soluzioni Rilocazione con aggiornamento della segment table Usare tanti segmenti piccoli

51 Gestione della memoria© William Fornaciari Segmentazione con paginazione La segmentazione con paginazione unisce i vantaggi dei due approcci Vantaggi della paginazione: Trasparente al programmatore Elimina la frammentazione esterna Vantaggi della segmentazione: Modulare. Supporto per la condivisione e protezione. Un indirizzo virtuale è formato dal numero di segmento dal numero di pagina e dallo spiazzamento Numero di segmento Numero di paginaoffset

52 Gestione della memoria© William Fornaciari Segmentazione con paginazione Offset Memoria Principale PageOffsetFrame Segment Table s Paginazione + Segm Puntatore segment Table Page Table... f... + Segmentazione Indirizzo virtuale Indirizzo fisico

53 Gestione della memoria© William Fornaciari Segmentazione con paginazione Si implementano i segmenti con pagine Intel i80386 e i80486 Al più 2 14 segmenti Segmenti al massimo di 2 32 byte (4 GB) La pagina è di 2 12 B (4 KB ) Windows NT su Intel, MIPS, PowerPC:pagine da 4 KB DEC Alpha:pagine da 8 MB gestite con la segmentazione con paginazione La memoria virtuale è vista come tre pool di pagine il pool delle pagine libere Il pool paginato, con pagine swappabili il pool non paginato, pagine non swappabili (es. il s.o.)

54 Gestione della memoria© William Fornaciari Esempio: Windows NT Impostazione del file di paginazione Area di swap File: pagefile.sys Si può definire un page file per ogni unità logica La dimensione consigliata è orientativa Va scelta in base al numero e al tipo di applicazioni e servizi che si vuole avere contemporaneamente attivi

55 Gestione della memoria© William Fornaciari Esempio: Windows NT

56 Gestione della memoria© William Fornaciari Esempio: Windows NT Task Manager É un processo che permette di interagire con tutti gli altri processi di sistema in modo da Analizzare l'occupazione di risorse di ognuno Cambiare le priorità di esecuzione Terminare i processi In basso i valori riassuntivi per Uso di CPU Uso di memoria RAM Uso di memoria virtuale

57 Gestione della memoria© William Fornaciari Esempio: Windows NT

58 Gestione della memoria© William Fornaciari Demand paging/segmentation Non è indispensabile che tutto il processo sia in memoria Il SO tiene in memoria solo le parti di dati e codice necessarie per continuare l'esecuzione del processo All'occorrenza, le parti non caricate (o swappate) vengono portate in memoria Questa tecnica è detta Demand paging, nei sistemi paginati Demand segmentation, nei sistemi segmentati Il demand paging è più diffuso in quanto Più efficace Implementazione più semplice del demand segmentation

59 Gestione della memoria© William Fornaciari Demand paging/segmentation Al caricamento, il loader carica Solo le strutture di gestione del processo Demand paging puro Alcune pagine Demand paging con preallocazione Durante l'esecuzione del programma Se un indirizzo fa riferimento a pagine in memoria L'esecuzione procede normalmente Se il riferimento è ad una pagina non caricata Si verifica un page fault Il processo viene sospeso con un trap al SO (page fault) Il SO gestisce il caricamento della pagina e la rischedulazione del processo sospeso

60 Gestione della memoria© William Fornaciari Page fault Evento che genera un trap al sistema operativo da parte di un processo che fa riferimento ad una pagina di memoria non disponibile Il sistema risponde così 1. Trap al sistema operativo 2. Il SO salva lo stato del processo 3. Il SO determina che il trap è un page fault 4. Il SO controlla che il riferimento in memoria fosse legale in modo da distinguere i page fault dagli errori di indirizzamento 5. Il SO localizza la pagina su disco 6. Il SO inizia la copia della pagina dal disco ad un frame libero

61 Gestione della memoria© William Fornaciari Page fault Nel frattempo, la CPU è allocata ad un altro processo La lettura della pagina viene completata e viene sollevato un interrupt Il SO salva lo stato del processo schedulato nel frattempo Il SO determina che l'interrupt è un completamento di una operazione di I/O Il SO aggiorna la page table, e le eventuali altre tabelle, con l'informazione sulla disponibilità della nuova pagina Il SO rimette nella lista dei processi pronti il processo sospeso per il page fault

62 Gestione della memoria© William Fornaciari Page replacement Nel demand paging La memoria disponibile è solitamente molto più piccola della somma degli spazi di indirizzamento logici dei programmi presenti nel sistema Ad un certo punto, ci sarà un page fault per servire il quale non ci saranno frame liberi nel sistema Soluzioni Effettuare uno swap out di pagine, possibilmente quelle “che serviranno meno in futuro”... Diversi criteri di scelta di tali pagine É conveniente rimpiazzare le pagine in sola lettura Non è necessario copiarle nell'area di swap É rapido rimpiazzare le pagine non ancora modificate

63 Gestione della memoria© William Fornaciari Page replacement Criteri di scelta delle pagine da scaricare First In First Out Scaricare le pagine nel sistema da più tempo Least Recently Used Scaricare le pagine non usate da più tempo Second Chance La page table di sistema è scandita una prima volta per identificare le potenziali pagine per uno swap out I corrispondenti reference bit vengono azzerati Successivamente, con l'esecuzione di processi, le pagine accedute avranno il reference bit impostato a 1 Alla successiva scansione, se il reference bit è ancora a zero la pagina viene rilasciata altrimenti viene lasciata nella lista delle pagine "utili"

64 Gestione della memoria© William Fornaciari Esempio: UNIX UNIX è il nome di una famiglia di sistemi operativi, con profonde differenze di struttura. Di seguito sono elencate alcune caratteristiche comuni alle varianti HP/UX Digital UNIX SUN Solaris Memoria virtuale Demand paging Il tipo di demand paging (puro o con preallocazione) è configurabile Swapping

65 Gestione della memoria© William Fornaciari Esempio: UNIX Page replacement Basato su una variante dell'algoritmo second chance Quando il numero di frame liberi scende sotto un certo limite lo scheduler risveglia un processo di sistema detto pagedaemon o swapper, che realizza l'algoritmo Tale limite minimo sul numero di frame è detto low-water-mark o min-free ed è configurabile Scheduler Può decidere per lo swap out di un intero processo Esempio: quando è in attesa di un evento, in condizioni di carico elevato nel sistema

66 Gestione della memoria© William Fornaciari Esempio: UNIX Swapping Avviene su disco in una partizione dedicata Tale partizione è priva di file system (raw mode) Alcuni sistemi supportano lo swap su file (flessibilità) Si noti l'interazione fra Scheduling Swapping Gestione della memoria virtuale

67 Gestione della memoria© William Fornaciari Esempio: UNIX Statistiche di uso della memoria virtuale cdc8g5:/root> swapinfo -a Kb Kb Kb PCT START/ Kb TYPE AVAIL USED FREE USED LIMIT RES PRI NAME dev % /dev/vg00/lvol2 dev % /dev/vg01/lvol1 reserve memory % cdc8g5:/root> Uso progressivo della memoria virtuale cdc8g5:/root> vmstat 5 procs memory page faults cpu r b w avm free re at pi po fr de sr in sy cs us sy id cdc8g5:/root> vmstat 5

68 Gestione della memoria© William Fornaciari Esempio: UNIX Alcuni processi nel sistema cdc8g5:/root> ps –efl F S UID PID C PRI NI ADDR SZ WCHAN STIME TTY TIME COMD 3 S root ea88 0 3bd050 Dec 11 ? 0:19 swapper 41 S root ffe60 Dec 11 ? 0:49 init 3 S root d4d a0 Dec 11 ? 3:05 vhand 3 S root bd050 Dec 11 ? 4:07 statdaemon 1 S root bd58 Dec 11 ? 0:00 ptydaemon 1 S root f cde4 Dec 11 ? 4:49 syncer 1 S pez e ef40 09:19:15 pts/0 0:00 -bash 1 S pez ea :19:15 pts/0 0:00 ftp cdc 1 S pez efc0 09:19:04 pts/0 0:00 -bash 1 S root b5ff :59:38 ? 0:00 tftpd cdc8g5:/root>

69 Gestione della memoria© William Fornaciari Esempio: WinNT Process Viewer WindowsNT mantiene contatori per monitorare i parametri di funzionamento Del sistema operativo (auditing) Dei singoli processi WindowsNT è multithreaded Ogni processo può contenere più thread in esecuzione cooperante I thread di un processo operano nello stesso spazio di indirizzamento logico Per ogni thread è definita una priorità Esempio: il processo Eudora Statistiche di uso delle risorse di sistema

70 Gestione della memoria© William Fornaciari Esempio: WinNT Process Viewer

71 Gestione della memoria© William Fornaciari Esempio: WinNT Process Viewer Un processo in WindowsNT Ha un proprio codice Memorizzato in pagine di memoria proprie (private) Si appoggia a librerie e device driver condivisi Memorizzati in pagine di memoria comuni (mapped) L'allocazione è dinamica Demand segmentation Paging I contatori di sistema sulle statistiche d'uso della memoria e sul comportamento dei processi sono indispensabili a NT stesso per implementare l'algoritmo di pool replacement

72 Gestione della memoria© William Fornaciari Esempio: WinNT Process Viewer


Scaricare ppt "CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano © 2001 - William Fornaciari La Gestione della memoria."

Presentazioni simili


Annunci Google