• Non ci sono risultati.

Corso di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Corso di Informatica"

Copied!
11
0
0

Testo completo

(1)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 1

Modulo T4

1-Concetti preliminari

Corso di Informatica

Prerequisiti

 Struttura elementare di un computer

 Uso pratico elementare di un sistema operativo

 Indirizzi logici e indirizzi fisici

 Traduttori di linguaggio

(2)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 3

Introduzione

Tra i compiti del SO c’è quello della gestione della memoria. L’efficienza del sistema e la velocità di esecuzione dei programmi dipendono

strettamente dal modo con cui il SO è in grado di gestire la memoria.

Per ora, facciamo riferimento alla sola memoria centrale.

Quali compiti svolge il gestore della memoria?

Come è possibile avere più programmi presenti in RAM?

La gestione della memoria condiziona l’attività di programmazione?

Come viene gestita la memoria in caso di multiutenza?

A queste domande diamo una risposta in questa Unità.

Le necessità dell’utente

L’utente programmatore richiederebbe alla memoria i seguenti requisiti:

 spazio illimitato

 velocità infinita

 costo ridotto

 memorizzazione permanente dei dati

Questi requisiti sono in netto contrasto tecnologico e commerciale, per cui in pratica le memorie reali sono un compromesso di queste ambiziose richieste.

(3)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 5

Il gestore della memoria

La parte del SO che gestisce la memoria ha almeno i seguenti compiti:

 tenere traccia delle parti di memoria in uso e di quelle libere;

 allocare uno spazio privato di memoria ai processi che la richiedano;

 deallocare la memoria quando un processo muore;

 usare meccanismi di protezione

Vedremo alcune tecniche con le quali il SO assolve ai compiti suddetti.

Quando la memoria reale non è sufficiente ad ospitare un programma, si ricorre ad una tecnica dettta memoria virtuale, consistente nell’utilizzare una parte del disco come estensione della memoria reale (oggetto della prossima Unità).

Concetti preliminari

Prima di affrontare lo studio delle tecniche di gestione della memoria, premettiamo alcuni concetti di base:

1. spazio fisico e spazio logico 2. tipi di memoria

3. condivisione del codice

(4)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 7

1.Spazio fisico e spazio logico

- spazio fisico (SF)

Con il termine Spazio Fisico (SF) intendiamo lo spazio degli indirizzi fisici delle locazioni della memoria centrale, ossia quegli indirizzi reali effettivamente accessibili.

Tuttavia può essere utile, per il progettista, pensare la memoria con una visione astratta, indipendente dalla effettiva struttura fisica.

In questo modo, la memoria può essere facilmente rappresentata tramite adeguate strutture dati (descrittore di memoria), in modo che sia facile implementare:

 le necessarie tecniche di protezione

 le tecniche di allocazione e deallocazione per i vari processi

1.Spazio fisico e spazio logico

- spazio logico (SL)

Così facendo, possiamo indicare con il termine Spazio Logico (SL) lo spazio degli indirizzi logici del nostro programma, immaginando che esso inizi sempre dall’indirizzo 0, in cui è collocata la prima istruzione.

(5)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 9

1.Spazio fisico e spazio logico

- rilocazione

Ovviamente, le operazioni sullo spazio logico devono corrispondere a quelle sullo spazio fisico, per cui il SO deve disporre di una funzione di traduzione T (mapping) del tipo:

T : SL  SF

che trasforma ogni indirizzo logico nel corrispondente indirizzo fisico.

L’azione svolta da T prende il nome di rilocazione semplicemente, rilocazione.

Molto schematicamente, possiamo dire che la rilocazione consiste nel sommare a tutti gli indirizzi logici presenti nel programma un valore (detto offset o spiazzamento) corrispondente all’indirizzo fisico nel quale verrà effettivamente caricato il programma

1.Spazio fisico e spazio logico

- rilocazione

La traduzione T può avvenire in diversi momenti:

a. alla generazione del codice b. al caricamento del codice c. all’esecuzione del codice

(6)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 11

1.Spazio fisico e spazio logico

- rilocazione

La traduzione T può avvenire in diversi momenti:

a. alla generazione del codice b. al caricamento del codice c. all’esecuzione del codice

Per vedere come funzionano i vari metodi, supponiamo di considerare il seguente codice con i corrispondenti indirizzi logici

… 0

… 7 300

… 300 101

“ADD”

100

codice indirizzo

1.Spazio fisico e spazio logico

- rilocazione

Se la rilocazione avviene al momento della generazione del codice (ad esempio, alla compilazione del programma):

 è eseguita dal traduttore;

 usa indirizzi fisici specifici e prefissati;

 necessita di ricompilazione nel caso cambino gli indirizzi di programma.

Questa soluzione:

 è detta rilocazione assoluta;

 è poco flessibile ed utilizzata solo in casi particolari;

(7)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 13

1.Spazio fisico e spazio logico

- rilocazione

Nella figura a fianco, il programma viene caricato all’indirizzo base 60000, per cui l’indirizzo logico 300 viene modificato in 60300.

Qualunque riferimento (v. figura in basso), durante l’esecuzione, all’indirizzo logico 300, corrisponde all’indirizzo fisico 60300.

1.Spazio fisico e spazio logico

- rilocazione

Quando, invece, la rilocazione avviene al momento del caricamento del codice:

 gli indirizzi generati dai traduttori, non sono riferiti ad alcuna area della memoria e pertanto, si parla di codice rilocabile;

 si dice rilocazione statica.

Il codice prodotto sarà caricabile in una qualunque zona

(8)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 15

1.Spazio fisico e spazio logico

- rilocazione

Nella rilocazione statica si copia interamente lo spazio di indirizzamento di un programma da memoria secondaria alla RAM all’inizio

dell’esecuzione.

Una possibile organizzazione della RAM (di dimensione MAX) con più programmi attivi

contemporaneamente

Area riservata, non accessibile in modalità utente

Sistema Operativo Spazio programma 1 MAX - 1

Spazio programma 2 RAM vuota

0

1.Spazio fisico e spazio logico

- rilocazione

Nella rilocazione statica:

 non si possono eseguire programmi con spazio di indirizzamento più grande della RAM

 spesso si generano spazi non utilizzati (frammentazione della memoria)

Il primo problema viene risolto in modo efficiente con la tecnica della memoria virtuale (descritta nella prossima Unità)

(9)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 17

1.Spazio fisico e spazio logico

- rilocazione

Quando la traduzione avviene al momento dell’esecuzione del codice, il codice eseguibile viene caricato in memoria così come è, e la

mappatura degli indirizzi avviene via hardware, mediante un modulo detto MMU (Memory Management Unit) che agisce istruzione per istruzione mediante un registro base.

Questo tipo di traduzione si dice rilocazione dinamica.

1.Spazio fisico e spazio logico

- rilocazione

Durante l’esecuzione, il riferimento all’indirizzo logico 300 viene trasformato, Nella figura in alto, il programma viene caricato mantenendo gli indirizzi logici, alla locazione 60000.

(10)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 19

2. Tipi di memoria

Normalmente, nei sistemi attuali, la memoria RAM viene affiancata, per migliorare le prestazioni del sistema, ad altri tipi di memoria:

 il problema della capacità viene, come accennato più volte, risolto ricorrendo all’utilizzo di parte della memoria secondaria (detta appunto memoria virtuale), gestendola come se fosse memoria centrale, tecnica della quale ci interessiamo in seguito;

 il problema della velocità, viene ormai generalmente risolto mediante interposizione, tra memoria centrale e processore, di una memoria piccola ma veloce, detta cache memory gestita generalmente in modo

microprogrammato.

Entrambe le tecnologie introducono un notevole

miglioramento delle prestazioni e sono del tutto trasparenti all’utente (anche nella programmazione a livello assembly).

3. Condivisione del codice

È frequente, in un ambiente operativo, che più processi nascano dallo stesso programma P(ad esempio, l’utilizzo contemporaneo di un editor o di un compilatore da parte di più utenti).

La soluzione di avere più copie della stessa immagine del programma è evidentemente inefficiente.

In questi casi, è sufficiente consentire la condivisione del codice di P, ossia consentire che ogni utente che usa P, possieda un’area delle sue proprie variabili di P, in modo che gli ambienti dei vari utenti siano mantenuti indipendenti. In questi casi, si dice anche che il codice di P è rientrante.

(11)

08/08/2013

M. Malatesta 1-Concetti preliminari-04 21

Argomenti

 Le necessità dell’utente

 Il gestore della memoria

 Concetti preliminari – spazio fisico (SF) – spazio logico (SL) – rilocazione

 Tipi di memoria

 Condivisione del codice

Altre fonti di informazione

 A. Lorenzi, D.Rossi – I fondamenti della programmazione-ATLAS

Riferimenti

Documenti correlati

la nuova pagina DS0 viene allocata in pagina fisica 2, ma S raggiunge così il livello massimo di pagine residenti e quindi la successiva (DS1) deve essere allocata al posto di

Un sistema dotato di memoria virtuale con paginazione e segmentazione tipo UNIX è caratterizzato dai pa- rametri seguenti: la memoria centrale fisica ha capacità 32 Kbyte, la

notevolmente le prestazioni servendo prima tutte le richieste che sono vicine alla posizione attuale della testina. • Su questa ipotesi è basato l’algoritmo Shortest Seek Time

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

❖ Una richiesta di accesso al disco può venire soddisfatta immediatamente se unità a disco e controller sono disponibili; altrimenti la richiesta deve essere aggiunta alla coda

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

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

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