Gestione della Memoria. Scenario 1 o più CPU Un certo quantitativo di memoria Una memoria di massa.

Slides:



Advertisements
Presentazioni simili
Scheduling (Schedulazione) Susanna Pelagatti – Università di Pisa
Advertisements

Memoria Virtuale in Linux
Gestione della Memoria
Gestione della memoria centrale
Gestione della memoria
Organizzazione della memoria
I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE
Algoritmi e Programmazione
Gestione della Memoria
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Gestione della Memoria
Scheduling in Linux (Kernel 2.6)
Memoria virtuale Memoria virtuale – separazione della memoria logica dell’utente dalla memoria fisica. Solo alcune parti di un programma devono trovarsi.
Gestione della memoria
INTRODUZIONE AI SISTEMI OPERATIVI
Informatica di base A.A. 2003/2004 Algoritmi e programmi
File.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Le prestazioni (velocità) di un singolo disco sono limitate dalla tecnologia usata, -per aumentare le prestazioni si può pensare di far operare in parallelo.
Processi, Thread, Multitasking, Multithreading. Ingredienti 1 CPU 1 Memoria RAM Tanti programmi che condividono la stessa memoria Esigenza di far girare.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
MEMORIA CENTRALE Spazio di lavoro del calcolatore: contiene i dati da elaborare e i risultati delle elaborazioni durante il funzionamento del calcolatore.
Gestione della memoria logica e fisica degli elaboratori x86
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
MODULO 01 Come è fatto un computer e come ragiona.
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
STRUTTURA GENERALE DI UN ELABORATORE
Introduzione al linguaggio assemby del microprocessore a parte
Architettura del calcolatore
Seconda Università degli Studi di Napoli Facoltà di Economia Corso di Informatica Prof.ssa Zahora Pina.
Introduzione all'uso del PC
Il Sistema Operativo (1)
Gestione della Memoria
Memoria La memoria è un vettore di stringhe di bit (word/parole) In memoria è allocato il Sistema Operativo. In memoria sono allocati i programmi per poter.
SISITEMI MONOPROGRAMMATI E MULTI PROGRAMMATI
Docente: G. Ianni Esercitatori: A. Martello (Sistemi Operativi), V. Lio (Reti) Sito del corso: Google ‘sistemi operativi e reti unical’ Gruppo FB («Sistemi.
Elettronica Digitale (II Parte) 10-11_5 1 ELETTRONICA DIGITALE II (5) 6/12 Il processo di assemblaggio.
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Gestione della Memoria
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
Gestione della Memoria
1 Cenni di gestione della memoria Unix-Linux. 2 Organizzazione della Memoria Spazio logico dei processi A e B e memoria fisica Condivisione dell’area.
Informatica Generale Marzia Buscemi
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
La gerarchia di memorie
Processi, Thread, Multitasking, Multithreading (Thread-Fu)
Memoria Cache l Memoria molto veloce intermedia tra RAM e CPU l i dati di uso piu’ frequente sono mantenuti nella memoria Cache per minimizzare i trasferimenti.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
I Sistemi Operativi. Definizione Per Sistemi Operativi (di seguito SO) si intendono quei pacchetti software, a loro volta costituiti da più sottoprogrammi.
Il modello di Von Neumann
Il computer RAM: Unità di misura MByte e GByte MHz Processore: Unità di misura Singolo o multiprocessore 32/64 bit velocità GHz Mouse tastiera video stampante.
CNAF 6 Novembre Layout del testbed  wn a OS SL5.0 8 GB RAM kernel xen_3.1.0 SMP  wn a OS SL5.0 8 GB RAM kernel.
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
Tipologie di memoria: Elettroniche Magnetiche Ottiche La qualità di una memoria dipende da vari parametri: Modo di accesso: tecnica utilizzata per accedere.
HARDWARE (2). MEMORIE Due classi di memoria MEMORIA CENTRALE –media capacità - ottima velocità MEMORIA DI MASSA elevata capacità - bassa velocità.
© 2016 Giorgio Porcu - Aggiornamennto 31/01/2016 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Thread G IORGIO P.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Compitino di Sistemi Operativi corsi A -C 19 Maggio 2003.
Transcript della presentazione:

Gestione della Memoria

Scenario 1 o più CPU Un certo quantitativo di memoria Una memoria di massa

Sommario Gestione della Memoria Virtuale Protezione

Una soluzione comune Spazio degli indirizzi reali virtualByte mem[M]; // dove M = 512MB,1GB... –Diviso in pagine: byte P[ X ][4096] // X dipende dalla memoria Spazio degli indirizzi virtuali (1 per processo) virtualByte memPn[N]; // N = 4GB per intel x32 –Diviso in pagine: byte Pn[ 1MB ][4096]

Ogni processo viene “illuso” di avere a disposizione 4 GB (OS a 32bit) User Space 0 4GB - 1 System Space 3GB - 1 User Space 0 4GB - 1 System Space 3GB - 1 byte P1[1MB][4096] byte P2[1MB][4096]

Dov’è il trucco?

Suddivisione dell’indirizzo Numero Pagina (da 0 a 1MB-1 = 20 bit) Offset (byte all’interno della pagina, da 0 a 4095 = 12 bit)

Gli indirizzi di memoria sono virtuali Assumiamo di avere un solo processo P1, e di avere 4GB di memoria fisica. Immaginiamo di poter esaminare il microcodice delle istruzioni macchina –mov AL,indirizzo ** LETTURA ** –mov indirizzo, AL ** SCRITTURA **... AL = memP1[indirizzo]; // lettura... oppure memP1[indirizzo] = AL; // scrittura... byte& virtualByte::operator[] (long indirizzo) { pagina = indirizzo >> 12; offset = indirizzo % 4096; return P[pagina][offset]; }

Purtroppo... C’è più di un processo. L’array P può anche essere più piccolo di 4GB; Soluzione Introduzione di una tabella delle “Page Entries”, una per ogni processo. typedef pagina byte[4096]; pagina P[X];// X dipende dalla memoria RAM reale. class PageEntry { bool inMemoria; bool acceduto; bool scritto; long posizione; long posizioneSuDisco; bool leggibile; bool scrivibile; bool eseguibile; } class process {.... PageEntry pageDirectory[1MB]; virtualByte mem(4GB, pageDirectory); }

Il vero operator[] è simile a... byte& virtualByte::operator[] (long indirizzo) { pagina = indirizzo >> 12; offset = indirizzo % 4096; PageEntry pe = pageDirectory[pagina]; if (!pe.inMemoria) { // page fault. pe.posizione = trovaPaginaLibera(); loadPage(pe.posizioneSuDisco); // swap in pe.scritto = false; // pagina fresca presa da disco } pe.acceduto = true; if (operazione di Scrittura) pe.scritto = true; return P[pe.posizione][offset]; }

Swap in e Swap out Ci sono dei thread ad altissima priorità che si occupano di –Caricare in anticipo le pagine che si prevede siano usate (Swap in) –Eliminare le pagine non usate (swap out) Linux: è il demone kswapd

Swap out Semplice algoritmo: le pagine stanno in una lista FIFO. Quando una pagina p è acceduta, viene settato il bit p.acceduto a 1, e viene messa in testa alla FIFO. Un thread “pulitore”, elimina periodicamente dalla fine della coda (swap out) quelle pagine p in cui trova p.acceduto == 0. Pone p.acceduto = 0 per tutte le altre pagine Le pagine accedute periodicamente tendono ad evitare di essere “swapped out”. Eccezioni: pagine marcate come inamovibili, working set Algoritmo reale.. un po’ più complicato. Il “pulitore” è tanto più aggressivo tanto più c’è meno memoria.

Swap out void swapout(PageEntry p) { if (p.scritto) p.posizioneSuDisco =scriviSuDisco(p.posizione); p.inMemoria = false; }

Windows Memory Lifecycle

Thrashing Ipotesi: Thread tutti uguali: occupazione 128MB, 25% occupazione media processore Memoria centrale: 512MB

Protezione E’ fisicamente impossibile (o quasi) che un processo acceda alla memoria di un altro User Space 0 4GB - 1 System Space 3GB - 1 Mem Reale 0 1GB - 1 System Space Image Swap File 0 1GB - 1 Swapped Out System Pages User Space 0 4GB - 1 System Space 3GB - 1 User Space 0 4GB - 1 System Space 3GB - 1 P0 P1 P2

Protezione – 2 I processi tuttavia condividono lo stesso system space –Ci sono pagine fisiche riferite da page entries di più processi –L’accesso in lettura/scrittura può essere proibito tramite i valori di p.leggibile e p.scrivibile –Si può proibire anche l’eseguibilità (DEP: Data execution prevention)

Loading e rilocazione CA 8B 1D 50 8D mov ebx,dword ptr [a (00428d50)] D0 A1 D mov eax,[b (004299d0)] D5 F7 E3 mul eax,ebx D7 4B dec ebx D8 75 FB jne ciclo (004010d5) DA A3 D mov [b (004299d0)],eax Codice indipendente dalla posizione = -5

Codice non rilocabile E jmp ostream::operator<< ( ) A E9 E jmp ostream::operator<< (004011f0) F E9 8C jmp endl (004011a0) E jmp main ( ) E jmp flush ( ) EA B9 E mov ecx,offset cout (004299e0) EF E8 8C call ostream::operator<< ( ) F4 8B C8 mov ecx,eax F6 E8 0A FF FF FF ( ) ASLR  Address space layout randomization

PE : Portable Executable

Mobile OSes Android: cambio di paradigma –No swap space –Un processo può essere killed per avere memoria libera –OOM Manager (Out of Memory Manager) diventa modulo cruciale