Paginazione. G. Lettieri. 6 Maggio 2018

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Paginazione. G. Lettieri. 6 Maggio 2018"

Transcript

1 Paginazione G. Lettieri 6 Maggio 2018 All avvio del nostro sistema lo stato iniziale dei processi si trova memorizzato in dispositivo di swap (un hard disk). Questo è stato inizializzato usando un sistema di sviluppo separato, in esecuzione su un altra macchina. Il dispositivo di swap viene prima collegato al sistema di sviluppo e, quando lo stato iniziale dei processi è stato creato, staccato e collegato alla macchina su cui viene poi avviato il nostro sistema. La primitiva activate_p() copia lo stato del processo da attivare dal dispositivo di swap alla memoria (nella parte M2). Per quanto visto finora, ogni volta che si esegue un cambio di processo l intero contenuto di M2, che contiene lo stato attuale del processo uscente, deve essere ricopiato nello swap e sostituito con lo stato del processo entrante, letto dallo swap. Incidentalmente, si noti che tutte queste operazioni sono svolte dal codice di sistema: il codice di livello utente non ha alcun accesso al dispositivo di swap. Quello che vogliamo fare ora è di eliminare, o quantomeno ridurre, le copie da e verso lo swap ogni volta che si cambia processo. L idea di partenza è che la maggior parte dei processi non avrà bisogno di tutta la memoria M2, quindi potremmo pensare di caricare più di uno stato alla volta e di tenere in memoria anche lo stato dei processi che non sono in esecuzione, in modo da averli già pronti quando verranno schedulati. In pratica la memoria M2 si comporterà come una cache dello swap, con gli stessi problemi da risolvere: quando tutta M2 è piena e dobbiamo mettere in esecuzione un processo il cui stato non è in M2, dobbiamo fare spazio togliendo lo stato di qualche altro processo; quale scegliamo? Non ci addentreremo però in questi argomenti, che appartengono al corso di Sistemi Operativi. Ci limitiamo invece a studiare il meccanismo che permette di mantenere in memoria lo stato di più di un processo. 1 Problemi Affronteremo i problemi gradualmente, in modo da capire le motivazioni dietro il meccanismo che adotteremo alla fine. 1.1 Dimensione massima di ogni processo Per prima cosa dobbiamo assumere di sapere di quanta memoria ha bisogno ogni processo. Supporremo che sia il programmatore stesso a dirlo al sistema (magari 1

2 .text.data heap stack Figura 1: Organizzazione della memoria di un processo. Lo heap e lo stack si trovano ai capi opposti di un unica regione di memoria, con lo heap che si espande verso il basso e lo stack verso l altro. aiutato dal compilatore). Un processo avrà bisogno di un po di memoria per contenere la sezione.text, contenente il codice del programma da eseguire, e di altra memoria per la sezione.data, contenente (in C++) le variabili globali. La dimensione di queste sezioni è nota al compilatore. Ci sono però altre due sezioni, inizialmente vuote, che si possono espandere durante l esecuzione: la pila e lo heap (usato per la memoria dinamica). Per queste il programmatore deve stabilire un massimo. La memoria di un processo viene tipicamente organizzata come in Figura 1, con tutte le sezioni contigue e con lo heap e la pila che condividono una stessa zona di memoria. È sufficiente che il programmatore dica al sistema quanto deve essere grande la zona utilizzata dallo heap e dalla pila. Il compilatore può assumere un valore di default, per non costringere il programmatore a specificare questa dimensione nei casi più comuni. Sapendo quanto è grande ogni processo, il sistema può caricarne in memoria più di uno, come in Figura 2(a). 1.2 Isolamento tra i processi Il secondo problema che dobbiamo risolvere è: come impedire che lo stato dei processi non in esecuzione venga letto o modificato dal processo in esecuzione? Per il momento abbiamo previsto nella CPU un meccanismo che protegge la memoria M1, ma non la memoria M2. Ricordiamo in cosa consiste questo meccanismo: abbiamo introdotto un registro, scrivibile solo da livello sistema, che contiene un indirizzo limite; abbiamo modificato la CPU in modo che, quando si trova a livello utente, controlli che ogni operazione in memoria (prelievo istruzioni e lettu- 2

3 M1 M1 M1 M1 M1 M1 LINF P 5 P 5 P 3 P 4 LSUP P 3 P 4 LINF LSUP P 3 P 4 P 3 P 4 P 3 (a) (b) (c) (d) (e) (f) Figura 2: Un esempio di evoluzione del sistema. (a) vengono caricati,, P 3 e P 4 ; (b) quando è in esecuzione non si può accedere alla memoria degli altri processi; (c) cambiando il contenuto di LINF e LSUP cambia la zona di memoria accessibile; (d) viene temporaneamente rimosso per far posto a P 5 ; (e) P 3 e P 4 vengono temporaneamente rimossi per far posto a ; (f) viene ricaricato P 3 e P 5 termina: ora non c è più posto per caricare P 4. ra/scrittura operandi) avvenga a indirizzi maggiori del limite, sollevando una eccezione in caso contrario. il registro limite viene inizializzato con l ultimo indirizzo di M1 all avvio del sistema. Si vede che questo meccanismo è efficace nel proteggere M1, ma non impedisce in alcun modo al processo in esecuzione di accedere ovunque voglia nella memoria M2, dunque anche nelle parti che contengono lo stato degli altri processi. Possiamo pensare di aggiungere altri due registri alla CPU, chiamiamoli LINF (limite inferiore) e LSUP (limite superiore). Nel descrittore di ogni processo prevediamo spazio anche per questi due nuovi registri, contesto[i_linf] e contesto[i_lsup]. I due nuovi registri sono scrivibili solo da livello sistema. Quando si trova a livello utente, la CPU controlla che ogni accesso in memoria abbia un indirizzo compreso tra LINF e LSUP (e solleva una eccezione in caso contrario). Ogni volta che un processo viene caricato dallo swap (la prima volta, o dopo che era stato rimosso per fare spazio) il sistema deve inizializzare i campi contesto[i_linf] e contesto[i_lsup] con l indirizzo iniziale e finale della parte di M2 occupata dal processo. Ogni volta che si cambia processo, si aggiorna anche il contenuto di LINF e LSUP con i valori presi dal descrittore del processo entrante. Si vede come questi due registri risolvono il problema: ogni processo non può accedere al di fuori della propria zona di memoria (Figura 2(b) e (c)). Questi due 3

4 registri rendono anche inutile il registro limite che avevamo introdotto prima: a maggior ragione, i processi utente non possono accedere alla memoria M Caricamento a indirizzi variabili Il sistema così realizzato presenta però degli svantaggi. Prima tutti i processi venivano sempre caricati a partire dallo stesso indirizzo (l inizio di M2), mentre ora possono essere caricati ovunque, in base a quali altri processi si trovano già in memoria al momento del caricamento. L indirizzo di caricamento non è dunque noto durante la compilazione e il collegamento: come scegliere gli indirizzi a cui collegare i programmi? Ci sono due modi per risolvere questo problema: fare in modo che sia il caricatore a rilocare il programma (con una tecnica del tutto simile a quella usata dal collegatore) in modo da adattarlo all indirizzo di caricamento; oppure, compilare tutti i programmi in modo che siano indipendenti dalla posizione. C è però un secondo svantaggio, molto più grave: che succede se un processo viene rimosso dalla memoria e poi caricato in una posizione diversa, come il processo in Figura 2(e)? In generale non funzionerà, in quanto il suo stato potrebbe ora contenere indirizzi che erano validi solo nella posizione originaria: si pensi agli indirizzi di ritorno salvati in pila, o ai puntatori al prossimo elemento scritti in qualche lista. Questi indirizzi andrebbero corretti in base alla nuova posizione, ma in questa architettura è praticamente impossibile trovarli: lo stato è una sequenza di byte e non c è niente che permetta di distinguere un indirizzo da qualunque altra cosa. Per rimediare a questo problema modifichiamo il comportamento del registro LINF. Facciamo in modo che, ad ogni accesso in memoria eseguito da livello utente, la CPU sommi il contento di LINF all indirizzo generato dal programma, controllando che il risultato non superi LSUP. Il registro LINF contiene dunque una base per tutti gli indirizzi generati dal processo. I programmi utente possono ora essere collegati a partire dall indirizzo zero e i processi che li eseguono possono continuare ad usare gli stessi indirizzi per tutta la loro esecuzione, anche se il loro stato viene tolto dalla memoria e ricaricato in seguito ad un indirizzo diverso. Infatti, siccome LINF conterrà ora il nuovo indirizzo, tutti gli accessi in memoria verranno automaticamente aggiustati in modo da puntare alle locazioni corrette. Si presti attenzione al fatto che questa correzione è operata a tempo di esecuzione dall hardware ed è controllata dal software di sistema, l unico che può scrivere nei registri LINF e LSUP. Gli utenti non possono vedere il meccanismo in opera, né tantomeno modificarlo. Quello che gli utenti vedono è che ora ogni processo sembra avere una memoria tutta per sé. Questo perché il significato di un indirizzo dipende ora dal contesto: l indirizzo x di un processo non è lo stesso indirizzo x di un diverso processo, in quanto ogni volta che usa x leggerà o scriverà una locazione di memoria diversa da quella letta o scritta da, per via dei diversi valori di LINF automaticamente sommati a x. Possiamo dire che ogni processo ha acquisito una sua memoria virtuale, che è l unica a cui ha accesso. Tutti gli indirizzi generati durante l esecuzione di un processo 4

5 (sia per prelevare le istruzioni che per leggere o scrivere gli operandi in memoria) sono relativi alla memoria virtuale del processo, e sono detti indirizzi virtuali. L azione di sommare LINF agli indirizzi generati dal processo corrisponde ad una traduzione da indirizzi virtuali a indirizzi fisici, che possono essere usati per accedere alla memoria del sistema, che da ora in poi chiameremo memoria fisica. I processi utente non hanno alcun controllo sulla traduzione, e dunque nessun accesso diretto agli indirizzi fisici. 1.4 Condivisione e frammentazione Il meccanismo a cui siamo arrivati ha ancora due svantaggi. Come facciamo se vogliamo che due o più processi condividano della memoria (che è proprio ciò che vogliamo nel nostro sistema)? Che succede nella situazione di Figura 2(f) in cui dobbiamo caricare un processo, ma lo spazio in memoria è frammentato in porzioni troppo piccole? Il secondo problema si potrebbe risolvere ricompattando lo spazio, ma per farlo dobbiamo copiare la memoria dei processi da una zona all altra, operazione molto costosa. Entrambi i problemi, invece, potrebbero essere risolti se potessimo spezzare la memoria di un processo in più porzioni e gestire ogni porzione separatamente: potremmo dire che alcune porzioni sono condivise e altre no e caricare ogni porzione in uno spazio diverso. 2 Paginazione Un meccanismo che ci permette di risolvere tutti i problemi che abbiamo illustrato è quello della paginazione. L idea è di considerare tutti i possibili indirizzi generabili da un processo e di raggrupparli in sezioni contigue dette pagine e di applicare una traduzione di indirizzi diversa per ogni pagina. Nel caso dei processori Intel/AMD a 64 bit i possibili indirizzi sono mostrati in Fig. 3, dove si mostra solo il collegamento tra la CPU e la memoria tramite il bus degli indirizzi. Si ricordi che, per queste macchine, solo i 48 bit meno significativi di un indirizzo di 64 bit possono assumere un valore qualsiasi, mentre i 16 bit più significativi devono essere tutti uguali al bit n. 47 (contando da 0). Anche con questa limitazione gli indirizzi possibili sono 2 48 = 256 TiB, ben al di là della capacità della memoria RAM comunemente disponibile su un singolo sistema. Suddividiamo idealmente lo spazio di indirizzamento di Figura 3 in una sequenza di pagine tutte della stessa dimensione. Allo stesso tempo, suddividiamo la memoria del sistema in porzioni della stessa dimensione, dette frame (cornici). Assumiamo che le pagine e i frame siano grandi 4 KiB. Numeriamo inoltre tutte le pagine in ordine, a partire da 0, e facciamo lo stesso per tutti i frame. Il meccanismo della paginazione ci permette di caricare qualunque pagina in 5

6 CPU fff ffff ffff v ffff ffff ffff ffff ffff Figura 3: Spazio di indirizzamento nei processi Intel/AMD a 64 bit. La parte in grigio non è utilizzata. Il processore genera una eccezzione se si tenta di usare un indirizzo che rientra in questa parte. 6

7 qualunque frame. Per farlo si introduce una struttura dati che, dato un numero di pagina p, ci permette di conoscere il numero di frame n in cui p è caricata. La più semplice struttura dati possibile è un array indicizzato dal numero di pagina: se chiamiamo a questo array, il numero di frame che cerchiamo è n = a[p]. Chiamiamo tabella di corrispondenza l array a. In Fig. 4 si mostra come la tabella di corrispondenza sia un vettore in cui ogni elemento, in ordine, si occupa della traduzione della corrispondente pagina, in ordine, della memoria virtuale. Si noti che, per il modo in cui sono definiti gli indirizzi possibili nell architettura Intel/AMD a 64 bit, quando si passa dall elemento di indice (in base 16) 7ffffffff a quello di indice si salta dalla pagina virtuale che inizia all indirizzo ffffffff 000 a quella che inizia a ffff Supponiamo ora che la CPU generi un indirizzo v. La cella a cui la CPU vuole accedere non si trova in memoria all indirizzo v: come nel caso dei registri LINF e LSUP, l indirizzo v deve essere tradotto prima di poter essere usato per accedere alla memoria. La traduzione tramite LINF consisteva semplicemente in una somma, mentre ora è più complessa. L indirizzo v cadrà all interno di una certa pagina, sia la numero p, ad un certo offset o rispetto all inizio della pagina. Se p è caricata in n = a[p], la cella che corrisponde all indirizzo v sarà quella che si trova all offset o dentro il frame numero n. Per eseguire questa traduzione di indirizzi introduciamo un nuovo dispositivo tra la CPU e la memoria: la Memory Management Unit (MMU). La MMU intercetta tutti gli indirizzi generati dalla CPU e li traduce in base alla tabella di corrispondenza attiva, seguendo il procedimento che abbiamo descritto sopra. Se la dimensione delle pagine (e dunque dei frame) è una potenza di due (come stiamo assumendo) le operazioni della MMU si semplificano. Gli indirizzi che arrivano dalla CPU possono essere scomposti in due parti: una parte più significativa che identifica il numero di pagina p e una parte meno significativa che identifica l offset o all interno della pagina, della locazione richiesta. L offset avrà un numero di bit pari al logaritmo in base 2 della dimensione della pagina: 12 bit, nel nostro caso. Se una pagina è caricata nel frame numero n, l informazione richiesta dal processore si troverà all indirizzo n o. Dal momento che i 12 bit meno significativi di n 4096 sono sempre 0 non è necessario eseguire una vera somma: basterà concatenare i bit di n con quelli di o. In altre, parole, anche l indirizzo fisico risulterà scomposto in due parti: il numero di frame e l offset. La traduzione eseguita dalla MMU consisterà nel sostituire il numero di pagina con il numero di frame letto dalla tabella di corrispondenza, lasciando l offset inalterato. L operazione di traduzione è riassunta in Figura 5. Si noti come in questa archiettura il numero di pagina è dato solo dai bit dell indirizzo virtuale, mentre il numero di frame è più grande e occupa i bit dell indirizzo fisico. La paginazione ci permette di risolvere quasi tutti i problemi da cui eravamo partiti. Isolamento tra i processi. Si ottiene utilizzando una diversa tabella di corrispondenza per ogni processo e impedendo che le tabelle di corrispon- 7

8 fff fff ffffffff ffffffff fffffffff ffffffff fff ffff ffff fff ffff ffff fff ffff ffff fffffffff 000 ffff fffffffff fff Figura 4: Tabella di corrispondenza e memoria virtuale. La tabella di corrispondenza è sulla sinistra, con a fianco gli indici (in esadecimale) delle sue entrate. Sulla destra è rappresentata la memoria virtuale, con gli indirizzi iniziali e finali delle pagine. Tutti gli indirizzi che cadono dentro una pagina sono tradotti usando l entrata collegata tramite le linee tratteggiate. 8

9 Indirizzo Virtuale 48 numero di pagina 12 offset 0 tabella di corrispondenza numero di frame offset Indirizzo Fisico Figura 5: Traduzione da indirizzo virtuale a fisico. denza possano essere manipolate da livello utente. In questo modo ogni processo può accedere solo a quelle parti della memoria fisica che si trovano nel codominio della funzione di traduzione realizzata dalla MMU. Per impedire a un processo P di accedere al contenuto di un qualunque frame n è succificente che n non compaia mai nella tabella di corrispodenza di P. Caricamento a indirizzi variabili. I processi usano solo ed esclusivamente gli indirizzi virtuali, che non cambiano anche se i processi vengono rimossi dalla memoria e caricati in un altro punto. Inoltre, visto che ogni processo ha la sua memoria virtuale indipendente, gli indirizzi di collegamento possono essere scelti liberamente senza problemi di collisione. Condivisione. Se si vuole che due o più processi condividano della memoria, è sufficiente che il sistema inserisca gli stessi numeri di frame nelle entrate opportune delle varie tabelle. Frammentazione. Ogni pagina può essere caricata ovunque ci sia un frame libero, non è più necessario caricare un intero processo in una porzione contigua della memoria. Per il momento, però, il programmatore deve comunque dire al sistema quanto spazio occupa ogni processo, con l unica differenza che ora lo spazio si misura in pagine. La presenza della MMU permette di svolgere anche altri compiti, in quanto ogni tabella può associare ulteriori informazioni ad ogni pagina, oltre al numero di frame. Per il momento introduciamo i seguenti campi: 9

10 un flag P che dice se la traduzione è valida; un flag R/W che dice se sono ammesse scritture nella pagina; un flag U/S che dice se sono ammessi accessi alla pagina da livello utente. Il flag P serve a marcare le pagine che il processo non usa. Si ricordi che la tabella di corrispondenza contiene una entrata per ogni possibile pagina. Il caricatore di sistema (nel nostro caso, la activate_p()), provvederà a porre P=0 in tutte le pagine di cui il processo non ha bisogno. Se la MMU riceve dalla CPU un indirizzo che porta ad una entrata con P=0, fa in modo che la CPU sollevi una eccezione. Il sistema, tipicamente, terminerà il processo con un errore 1. Il bit P può essere anche utilizzato per fermare i processi quando cercano di dereferenziare un puntatore nullo: è sufficiente porre P=0 nell entra di indice 0 (relativa alla pagina numero 0). Il flag R/W può essere usato per proteggere dalla scrittura la sezione.text. Infatti, anche se l architettura detta di von Neumann era stata introdotta proprio per permettere ai programmi di modificare il proprio stesso codice, questa pratica è da tempo fortemente limitata, in quanto crea molti più problemi di quanti ne risolva 2 Tipicamente viene completamente vietata per i processi utente, settando opportunamente i flag R/W. La MMU fa sollevare una eccezione anche quando incontra R/W=0 nel tradurre l indirizzo durante una operazione di scrittura. Per capire la necessità del flag U/S, consideriamo che la MMU presente nei sistemi Intel/AMD è sempre attiva, anche quando il processore si trova a livello sistema. Se vogliamo che sia possibile saltare al codice di sistema quando un processo invoca una primitiva, genera una eccezione o riceve una interruzione esterna, dobbiamo fare in modo che tutta la memoria M1 si trovi nel codominio delle funzioni di traduzione di tutti i processi. Dobbiamo dunque riservare delle pagine nella memoria virtuale di ogni processo, in modo che vengano tradotte nei frame che coprono M1. Sfruttiamo il fatto che la memoria virtuale è naturalmente divisa in due (Figura 3) e riserviamo la parte superiore al sistema e la parte inferiore all utente 3. Allo stesso tempo non vogliamo che i processi utente possano accedere alla memoria M1. Potremmo ricorrere nuovamente al registro limite, ma ora che abbiamo la MMU possiamo sfruttarla per farle fare anche questo controllo: basta porre U/S=sistema in tutte le entrate relative alla parte alta dello spazio di indirizzamento (le entrate con indici da a 7fffffff in Figura 4). Anche in questo caso la MMU fa generare una eccezione se rileva un accesso da livello utente ad una pagina con U/S=sistema. 1 In Unix il processo riceve una signal SIGSEV, che normalmente ne causa la terminazione con ritorno alla shell, che poi stampa Segmentation fault. 2 Si noti che l articolo originale di von Neumann già limitava i modi in cui i programmi dovevano poter modificare il proprio codice, ma i primi calcolatori poi realizzati non applicavano queste limitazioni. In ogni caso, anche il meccanismo più limitato suggerito da von Neumann non è realmente necessario. 3 Linux e FreeBSD fanno al contrario. 10

11 Super-MMU MEM CPU v f Figura 6: Traduzione degli indirizzi con una Super-MMU. Quando è in esecuzione il processo P i, la Super-MMU traduce gli indirizzi usando la corrispondente tabella. 3 La Super-MMU Precedentemente, per fare in modo che ogni processo fosse isolato dagli altri, avevamo una coppia di valori contesto[i_linf] e contesto[i_lsup] per ogni processo, con una sola coppia attiva ad ogni istante (quella appartenente al processo in esecuzione). Analogamente, ora dovremo avere una intera tabella di corrispondenza distinta per ogni processo, con una sola tabella attiva ad ogni istante (quella appartenente al processo in esecuzione). Per introdurre i dettagli un po alla volta, in modo da concentrarci prima sugli aspetti più importanti, introduciamo prima una Super-MMU che contiene tutte le tabelle di corrispondenza, di tutti i processi, al proprio interno (Figura 6). È disponibile un semplice esempio che illustra quando detto finora, facendo uso della Super-MMU. Uno degli scopi dell esempio è di far vedere come la memoria virtuale sia completamente trasparente al programmatore utente. 11

Paginazione su domanda

Paginazione su domanda Paginazione su domanda G. Lettieri 14 Maggio 2018 Usando la tecnica della paginazione abbiamo ottenuto diversi benefici per il sistema e per gli utenti, ma si può ancora migliorare qualcosa: gli utenti

Dettagli

Tabelle multilivello

Tabelle multilivello Tabelle multilivello G Lettieri 4 Maggio 28 MMU : tabella su 4 livelli Proviamo a calcolare quanto sono grandi le tabelle di corrispondenza usate dalla Super-MMU La memoria virtuale è di 2 48 byte e ogni

Dettagli

Calcolatori Elettronici: la memoria centrale

Calcolatori Elettronici: la memoria centrale Calcolatori Elettronici: la memoria centrale G Lettieri 7 Marzo 2017 Ipotesi fondamentali da ricordare nel seguito: la memoria è organizzata in celle, ciascuna della capacità di un byte; una volta collegata

Dettagli

Capitolo 4 Gestione della Memoria

Capitolo 4 Gestione della Memoria Capitolo 4 Gestione della Memoria 4.1 Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di sostituzione 4.6 Criteri di progetto per la paginazione

Dettagli

Corso di Architettura (Prof. Scarano) 10/05/2002

Corso di Architettura (Prof. Scarano) 10/05/2002 Lezione 0 Il Set di Istruzioni (6) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Le procedure Prima della chiamata di una procedura In ogni linguaggio di

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 216-17 Pietro Frasca Lezione 13 Giovedì 24-11-216 Memoria paginata La gestione della memoria fisica

Dettagli

Memoria virtuale (prima parte)

Memoria virtuale (prima parte) Memoria virtuale (prima parte) G. Lettieri 24 e 28 Marzo 2017 La memoria virtuale è una tecnica tramite la quale si simula il funzionamento di un sistema di elaborazione in cui tutta (o quasi) la memoria

Dettagli

Memoria virtuale. Daniele Loiacono, Vittorio Zaccaria

Memoria virtuale. Daniele Loiacono, Vittorio Zaccaria Memoria virtuale Daniele Loiacono, Vittorio Zaccaria Informatica B - Codice Corso: 081369 - A.A. 2010/2011 INGEGNERIA MECCANICA (BV) - INGEGNERIA IV (1 liv.) - Scaglione S - Z INGEGNERIA ENERGETICA (BV)

Dettagli

Gestione della Memoria

Gestione della Memoria Gestione della Memoria Informatica B Il modello della memoria 2 E un modello lineare La memoria è una sequenza di celle numerate da 0 fino a un valore massimo M Il numero che identifica ogni cella è detto

Dettagli

Memoria virtuale (terza parte)

Memoria virtuale (terza parte) Memoria virtuale (terza parte) G. Lettieri 4 Aprile 27 MMU 3 : memoria fisica in memoria virtuale Il nostro software ha i seguenti requisiti, per quanto riguarda l accesso alla memoria:. il software di

Dettagli

Capitolo 8 - Silberschatz

Capitolo 8 - Silberschatz Gestione della memoria centrale Capitolo 8 - Silberschatz Background Un programma in genere risiede su disco in forma di un file binario eseguibile e deve essere portato (dal disco) in memoria e inserito

Dettagli

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando Un altro tipo di indirizzamento L insieme delle istruzioni (3) Architetture dei Calcolatori (lettere A-I) Tipi di indirizzamento visti finora Indirizzamento di un registro Indirizzamento con registro base

Dettagli

Calcolatori Elettronici: indirizzi e oggetti

Calcolatori Elettronici: indirizzi e oggetti Calcolatori Elettronici: indirizzi e oggetti G. Lettieri 3 Marzo 2019 Gli indirizzi sono relativi ad un bus: tutti i componenti collegati al bus, in grado di rispondere a richieste di lettura o scrittura,

Dettagli

Gestione della memoria per sistemi multiprogrammati. Obiettivi. Partizioni fisse. Partizioni fisse. Fondamenti di Informatica

Gestione della memoria per sistemi multiprogrammati. Obiettivi. Partizioni fisse. Partizioni fisse. Fondamenti di Informatica FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Gestione della memoria centrale 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 217-18 Pietro Frasca Lezione 18 Martedì 5-12-217 Partizioni multiple La tecnica delle partizioni multiple

Dettagli

Memoria virtuale (seconda parte)

Memoria virtuale (seconda parte) Memoria virtuale (seconda parte) G Lettieri 18 Aprile 216 1 MMU 2 : tabella su 4 livelli Proviamo a calcolare quanto è grande la tabella di corrispondenza usata da MMU 1 La memoria virtuale è di 2 48 byte

Dettagli

Il sistema operativo

Il sistema operativo Il sistema operativo Vito Perrone Corso di Informatica A per Gestionali Indice Architettura Gestione dei processi Gestione della memoria centrale Driver Gestione dei file 2 1 Il sistema operativo E uno

Dettagli

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia 1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it monoprogrammati multiprogrammati a.a. 2008/09 1 c 2009 M.. Creative Commons Attribuzione-Condividi

Dettagli

Sistemi Operativi. Bruschi Martignoni Monga. Gestione della memoria. Sistemi multiprogrammati. Partizioni fisse Partizioni variabili Paginazione

Sistemi Operativi. Bruschi Martignoni Monga. Gestione della memoria. Sistemi multiprogrammati. Partizioni fisse Partizioni variabili Paginazione 1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it monoprogrammati multiprogrammati Lezione XXXIII: monoprogrammati multiprogrammati a.a. 2008/09

Dettagli

Paginazione su domanda

Paginazione su domanda Paginazione su domanda G. Lettieri 14 Maggio 2018 Usando la tecnica della paginazione abbiamo ottenuto diversi benefici per il sistema e per gli utenti, ma restano ancora degli inconvenienti: gli utenti

Dettagli

Gestione della Memoria Principale

Gestione della Memoria Principale Gestione della Memoria Principale Requisiti della Gestione della Memoria. Gestione a Partizioni Fisse. Partizionamento dinamico. Paginazione. Segmentazione. 1 Gestione della Memoria In un sistema multiprogrammato

Dettagli

Calcolatori Elettronici: introduzione

Calcolatori Elettronici: introduzione Calcolatori Elettronici: introduzione G. Lettieri 3 Marzo 2017 1 Introduzione e richiami La Figura 1 mostra l architettura generale di un calcolatore. Nel corso approfondiremo ogni componente. I principali

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 11 Giovedì 17-11-2016 1 Gestione della memoria La memoria principale

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Assemblatore, Linker e Loader Francesco Lo Presti rielaborate da Salvatore Tucci Assembler, Linker & Loader 1 Compilazione q Nella prima fase, il programma ad alto livello viene

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T4 3-Gestione della memoria 1 Prerequisiti Rilocazione dinamica Spazio degli indirizzi Descrittore di processo Descrittore della memoria 2 1 Introduzione Una volta conosciute

Dettagli

Gestione della memoria centrale. Marco Cesati. Schema della lezione. Memoria centrale. Linux su Intel IA-32 SO Gestione della memoria centrale

Gestione della memoria centrale. Marco Cesati. Schema della lezione. Memoria centrale. Linux su Intel IA-32 SO Gestione della memoria centrale Di cosa parliamo in questa lezione? Lezione 7 La gestione della Sistemi operativi 1 Schemi di indirizzamento della 2 La segmentazione 3 La paginazione 9 maggio 2017 4 System Programming Research Group

Dettagli

Lezione 7. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata.

Lezione 7. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata. Lezione 7 Sistemi operativi 9 maggio 2017 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 17 7.1 Di cosa parliamo in questa lezione? La gestione della 1 Schemi di indirizzamento

Dettagli

Gestione della memoria

Gestione della memoria Gestione della memoria centrale Gestione della memoria Concetti generali. Swapping. Allocazione contigua di memoria. Paginazione. Segmentazione. Segmentazione con paginazione. Esempio: Pentium Intel Background

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Fondamenti di Informatica Daniele Loiacono Ho definito un algoritmo e adesso? Daniele Loiacono Dall algoritmo all esecuzione q Come deve essere formalizzato un algoritmo affinché

Dettagli

Stack e nidificazione dei sottoprogrammi Cos è un sottoprogramma? La chiamata di un sottoprogramma... 6

Stack e nidificazione dei sottoprogrammi Cos è un sottoprogramma? La chiamata di un sottoprogramma... 6 Stack e nidificazione dei sottoprogrammi... 2 Cos è un sottoprogramma?... 2 La chiamata di un sottoprogramma... 6 Lo stack... 9 Il nesting dei sottoprogrammi.... 12 Lo stack pointer... 17 Stack e nidificazione

Dettagli

Memoria Virtuale. Alessandro A. Nacci ACSO 2014/2014

Memoria Virtuale. Alessandro A. Nacci ACSO 2014/2014 Memoria Virtuale Alessandro A. Nacci alessandro.nacci@polimi.it ASO 2014/2014 1 2 Algoritmo LRU! Buone prestazioni in media! Utilizza bit di controllo che riportano le informazioni sugli accessi alle pagine!

Dettagli

Organizzazione di un SO monolitico

Organizzazione di un SO monolitico Organizzazione di un SO monolitico Applicazioni Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del Gestore delle processore / Gestore della periferiche/ Scheduler(s) memoria dispositivi

Dettagli

Gestione della memoria

Gestione della memoria Gestione della memoria Gestione della memoria In un sistema multiprogrammato il numero di processi è > del numero di processori, ciò implica: unità di elaborazione virtuale memoria virtuale Un gestore

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 218-219 Pietro Frasca Lezione 17 Martedì 4-12-218 Memoria segmentata Nei sistemi che utilizzano la

Dettagli

Segmentazione. Gestore della memoria II parte. Segmentazione. Segmentazione: Vantaggi. Segmentazione 07/06/2012. Confronto Paginazione - Segmentazione

Segmentazione. Gestore della memoria II parte. Segmentazione. Segmentazione: Vantaggi. Segmentazione 07/06/2012. Confronto Paginazione - Segmentazione Gestore della memoria II parte La segmentazione come la paginazione prevede di dividere lo spazio di indirizzamento logico del processo(ovvero la memoria necessaria al processo) in più parti Quello che

Dettagli

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno

Dettagli

memoria virtuale protezione

memoria virtuale protezione Memoria Virtuale Le memorie cache forniscono un accesso veloce ai blocchi di memoria usati più di recente La memoria virtuale fornisce un accesso veloce ai dati sulle memorie di massa usati più di recente.

Dettagli

Cenni sull architettura del calcolatore

Cenni sull architettura del calcolatore Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Cenni sull architettura del calcolatore Pietro Di Lena - pietro.dilena@unibo.it hard-ware /h :dwe9 r / n. The part of the computer

Dettagli

20. Gestione della memoria. Andrea Marongiu Paolo Valente

20. Gestione della memoria. Andrea Marongiu Paolo Valente 20. Gestione della memoria Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Classi di memorizzazione Stiamo per vedere la classificazione di un oggetto in funzione del suo tempo di vita In particolare,

Dettagli

Registri della CPU. Memoria Centrale. Memoria di Massa. Memorie di altri sistemi in rete

Registri della CPU. Memoria Centrale. Memoria di Massa. Memorie di altri sistemi in rete + Veloce + Vicina alla CPU + Costosa Registri della CPU Memoria cache di primo livello sul microprocessore L1 - Capiente Memoria cache di secondo livello sul microprocessore L2 Memoria Centrale - Veloce

Dettagli

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Architettura degli Elaboratori, a.a. 2005-06 Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Esercizio 1 (svolto) a) Compilare in assembler Risc (Cap. V) un programma

Dettagli

Definizione di classi. Walter Didimo

Definizione di classi. Walter Didimo Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti

Dettagli

GESTIONE DELLA MEMORIA CENTRALE

GESTIONE DELLA MEMORIA CENTRALE GESTIONE DELLA MEMORIA CENTRALE E MEMORIA VIRTUALE 7.1 Gestione della memoria Segmentazione Segmentazione con paginazione Memoria Virtuale Paginazione su richiesta Sostituzione delle pagine Trashing Esempi:

Dettagli

Programmazione II. Lezione 9. Daniele Sgandurra 16/11/2010.

Programmazione II. Lezione 9. Daniele Sgandurra 16/11/2010. Programmazione II Lezione 9 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 16/11/2010 1/31 Programmazione II Lezione 9 16/11/2010 Sommario 1 Gestione della Memoria 2/31 Programmazione II Lezione 9 16/11/2010

Dettagli

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003 Il Ciclo Fetch-Decode-Execute C Nyssen/Aberdeen College 2003 Linguaggio Assembler Op code (Mnemonico) Operando #assembly code program 0000 LDA-24 #loads 0001 ADD-25 #adds 0002 HLT #stops #end of program

Dettagli

Memoria Cache. G. Lettieri. 16 Marzo 2017

Memoria Cache. G. Lettieri. 16 Marzo 2017 Memoria Cache G. Lettieri 16 Marzo 2017 1 Introduzione La memoria centrale è molto più lenta del processore. Possiamo rendercene conto scrivendo un programma che accede ripetutamente agli elementi di un

Dettagli

Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012

Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012 Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012 Igor Melatti Cenni sui puntatori in C Per ogni variabile normale dichiarata, il compilatore riserva una precisa quantità di

Dettagli

Elaborazione dell informazione

Elaborazione dell informazione Elaborazione dell informazione Primo esempio Ricominciamo dai numeri (45 + 25) è definita rigorosamente Un primo calcolatore (a) Figura 1.1 Configurazione del pallottoliere (a) prima e (b) dopo l esecuzione

Dettagli

Sistemi operativi e distribuiti

Sistemi operativi e distribuiti Sistemi operativi e distribuiti La memoria Indirizzi fisici e indirizzi logici Importante separazione di concetti Ci permette di separare la parte software da la parte hardware Indirizzo logico (o virtuale):

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 Programma del corso Informatica di

Dettagli

Architettura dei sistemi di elaborazione: La memoria (parte 2)

Architettura dei sistemi di elaborazione: La memoria (parte 2) Architettura dei sistemi di elaborazione: La memoria (parte 2) La cache è una memoria veloce e di piccole dimensioni posta fra la CPU e la memoria principale. Memoria Cache La cache e la memoria principale

Dettagli

Architettura degli Elaboratori 19 Memoria Virtuale. Prof. Andrea Sterbini

Architettura degli Elaboratori 19 Memoria Virtuale. Prof. Andrea Sterbini Architettura degli Elaboratori 19 Memoria Virtuale Prof. Andrea Sterbini sterbini@di.uniroma1.it Argomenti Argomenti della lezione - Memoria Virtuale - Esercizi Problema: - In un sistema multiprocesso

Dettagli

1. Un array è: A. Un simbolo usato nel linguaggio C per rappresentare un numero non specificato di variabili B. Un insieme di indirizzi di memoria

1. Un array è: A. Un simbolo usato nel linguaggio C per rappresentare un numero non specificato di variabili B. Un insieme di indirizzi di memoria Esame teorico Rispondere alle domande a risposta multipla (probabilmente 10) Eventualmente 1-2 domande a risposta libera Ogni domanda ha una ed una sola risposta corretta Tempo di risposta: 60 minuti Peso:

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

Gestione della Memoria Introduzione ai Sistemi Operativi Corso di Informatica Laurea in Fisica

Gestione della Memoria Introduzione ai Sistemi Operativi Corso di Informatica Laurea in Fisica Gestione della Memoria Introduzione ai Sistemi Operativi Corso di Informatica Laurea in Fisica prof. Ing. Corrado Santoro A.A. 2008-09 Architettura di un sistema operativo Progr 1 Progr 2 Progr 3 Progr

Dettagli

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).! ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).! MACCHINA DI VON NEUMANN! UNITÀ FUNZIONALI fondamentali! Processore

Dettagli

Spazio di indirizzamento virtuale

Spazio di indirizzamento virtuale Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){

Dettagli

Astrazione. Gestore della memoria. La rilocabilità del codice. Gestore della memoria

Astrazione. Gestore della memoria. La rilocabilità del codice. Gestore della memoria Gestore della memoria E' l'insieme di programmi del sistema operativo che si occupano di gestire la memoria centrale per l'esecuzione (pseudo-parallela) di più processi. 32 MB prog. app.3 prog. app. 2

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Architettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente

Architettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente Architettura dei calcolatori e sistemi operativi M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente 18.01.2015 Architettura Intel x64 Lo spazio di indirizzamento virtuale

Dettagli

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori Programma del corso Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori Cos è un Calcolatore? Un computer (calcolatore) è una macchina

Dettagli

La memoria-gerarchia. Laboratorio di Informatica - Lezione 3 - parte I La memoria - La rappresentazione delle informazioni

La memoria-gerarchia. Laboratorio di Informatica - Lezione 3 - parte I La memoria - La rappresentazione delle informazioni La memoriaparametri di caratterizzazione Un dato dispositivo di memoria è caratterizzato da : velocità di accesso, misurata in base al tempo impiegato dal processore per accedere ad uno specificato indirizzo

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 5 Martedì 25-10-2016 Definizione di processo Esiste una distinzione concettuale

Dettagli

Gestione della memoria. Introduzione Swapping Allocazione contigua Paginazione

Gestione della memoria. Introduzione Swapping Allocazione contigua Paginazione Gestione della memoria Introduzione Swapping Allocazione contigua Paginazione Introduzione In un sistema monoprogrammato la memoria centrale è divisa in due parti: una per il sistema operativo, l altra

Dettagli

Modello di von Neumann

Modello di von Neumann Modello di von Neumann Bus di sistema CPU Memoria Centrale Memoria di Massa Interfaccia Periferica 1 Interfaccia Periferica 2 Codifica dei dati e delle istruzioni La più piccola unità di informazione memorizzabile

Dettagli

Implementazione di dizionari

Implementazione di dizionari Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri campi in cui sono memorizzati i dati associati alla

Dettagli

Introduzione al Sistema Operativo

Introduzione al Sistema Operativo Introduzione al Sistema Operativo Informatica B Il sistema Operativo q Il sistema operativo (SO) è uno strato software che nasconde agli utenti i dettagli dell architettura hardware del calcolatore q Fornisce

Dettagli

Architettura degli Elaboratori Lez. 10 Esercizi su CPU MIPS a 1 ciclo di clock. Prof. Andrea Sterbini

Architettura degli Elaboratori Lez. 10 Esercizi su CPU MIPS a 1 ciclo di clock. Prof. Andrea Sterbini Architettura degli Elaboratori Lez. 10 Esercizi su CPU MIPS a 1 ciclo di clock Prof. Andrea Sterbini sterbini@di.uniroma1.it Argomenti Argomenti della lezione - Esercizi sulla CPU MIPS a 1 colpo di clock

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 12 Martedì 22-11-2016 Partizioni variabili Un miglioramento dell uso

Dettagli

Introduzione alle memorie cache. Sommario

Introduzione alle memorie cache. Sommario Introduzione alle memorie cache Corso ACSO prof. Cristina SILVANO Politecnico di Milano Cristina Silvano, 0/0/200 Sommario Obiettivo Livelli della gerarchia di memoria Memoria cache: concetti base Architettura

Dettagli

Architettura degli Elaboratori - Correzione Appello del 18 luglio 2006, A.A. 2005/06

Architettura degli Elaboratori - Correzione Appello del 18 luglio 2006, A.A. 2005/06 Architettura degli Elaboratori - Correzione Appello del 18 luglio 2006, A.A. 2005/06 Domanda 1 Una unità di elaborazione U, avente ciclo di clock τ, è collegata ad una memoria interallacciata con 8 moduli,

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO JP pq E un istruzione di salto assoluto incondizionato. Per salto assoluto si intende il fatto che grazie a quest istruzione, il contenuto

Dettagli

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN Università degli Studi di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA A.A. 2008/09 Lezione 4 ARCHITETTURA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono

Dettagli

CX: 4 K DX:12 K PX:4 K CY:16 K DY: 4 K PY:4 K

CX: 4 K DX:12 K PX:4 K CY:16 K DY: 4 K PY:4 K esercizio n. 2 memoria virtuale Un sistema dotato di memoria virtuale con paginazione e segmentazione di tipo UNIX è caratterizzato dai parametri seguenti: la memoria centrale fisica ha capacità di 32

Dettagli

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A. < < } } Lezione 5 e 6 Accesso a memoria A questo livello di astrazione, la memoria viene vista come un array di byte Per ogni richiesta di un dato ad un certo indirizzo, la CPU ottiene un numero di byte

Dettagli

Gestione Memoria. Gestione della memoria

Gestione Memoria. Gestione della memoria Gestione Memoria Gestione della memoria Il sistema operativo ha il compito di: Assegnare ad ogni processo la memoria di cui ha bisogno per la sua esecuzione Isolare i processi facendo in modo che i processi

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE

INTRODUZIONE ALLA PROGRAMMAZIONE INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni

Dettagli

Architettura hardware

Architettura hardware Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 10 Giovedì 7-11-2013 1 Gestione della memoria La memoria principale è

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione E una notazione con cui e possibile descrivere gli algoritmi. Programma: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni

Dettagli

ISA Input / Output (I/O) Data register Controller

ISA Input / Output (I/O) Data register Controller ISA Input / Output (I/O) Numerose Periferiche di tanti tipi diversi, collegati alla CPU mediante BUS diversi. Solo Input (tastiera, mouse), producono dati che la CPU deve leggere. Solo Output (Schermo),

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T -Struttura vettore 0/08/0 Prerequisiti Programmazione elementare Passaggio parametri per indirizzo 0/08/0 Introduzione I dati di tipo semplice (Intero, Reale, Carattere, Booleano)

Dettagli

Sistemi RAID. Motivazioni Concetti di base Livelli RAID. Sommario

Sistemi RAID. Motivazioni Concetti di base Livelli RAID. Sommario Sistemi RAID 1 Motivazioni Concetti di base Livelli RAID Sommario 2 1 Motivazione L evoluzione tecnologica ha permesso di avere dischi sempre più piccoli e meno costosi E facile equipaggiare un sistema

Dettagli

Introduzione alle gerarchie di memoria

Introduzione alle gerarchie di memoria Introduzione alle gerarchie di memoria 1 Un ripasso Circuito sequenziale Segnale di clock Circuito sincrono Temporizzazione sensibile ai fronti Latch tipo S-R Latch tipo D Flip-flop tipo D Register file

Dettagli

Architettura di un calcolatore: Introduzione parte 2

Architettura di un calcolatore: Introduzione parte 2 Corso di Calcolatori Elettronici I Architettura di un calcolatore: Introduzione parte 2 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle

Dettagli

Funzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri

Funzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri Funzioni (Passaggio dei parametri per riferimento) Passaggio dei parametri Per passaggio dei parametri si intende l associazione fra parametri attuali e parametri formali che avviene al momento della chiamata

Dettagli

Gestione della memoria centrale. Capitolo 8 - Silberschatz

Gestione della memoria centrale. Capitolo 8 - Silberschatz Gestione della memoria centrale Capitolo 8 - Silberschatz Background Un programma in genere risiede su disco in forma di un file binario eseguibile e deve essere portato (dal disco) in memoria e inserito

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 205-6 Pietro Frasca Lezione 3 Martedì 7--205 Paginazione su richiesta Con la tecnica della paginazione

Dettagli

Iniziare a programmare in C++

Iniziare a programmare in C++ Iniziare a programmare in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi di Napoli

Dettagli

Corso di Informatica Modulo T3 2 Ambiente locale e globale

Corso di Informatica Modulo T3 2 Ambiente locale e globale Corso di Informatica Modulo T3 2 Ambiente locale e globale 1 Prerequisiti Struttura elementare della memoria Area dati e area programma Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità

Dettagli

Componenti principali

Componenti principali Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria

Dettagli

Componenti e connessioni. Capitolo 3

Componenti e connessioni. Capitolo 3 Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura

Dettagli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria

Dettagli

La memoria virtuale. Calcolatori Elettronici. Valeria Cardellini Rielaborate da Salvatore Tucci

La memoria virtuale. Calcolatori Elettronici. Valeria Cardellini Rielaborate da Salvatore Tucci La memoria virtuale Calcolatori Elettronici Valeria Cardellini Rielaborate da Salvatore Tucci La gerarchia di memorie Registri Istruzioni, operandi L Cache Blocchi Nelle lezioni L2 Cache precedenti{ Più

Dettagli