cerca
Sistemi Operativi
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Sistemi Operativi

Torna alla pagina di Sistemi Operativi


 :: Appunti caotici ::

Lezione 3 Memoria

Pag 1

Sommario

...

Pag 2

Registri del processore

Sono posti direttamente all'interno della CPU. Alcune ne hanno una decina, altre centinaia; il numero dipende dall'architettura del processore.

L'accesso diretto è ottenuto specificando nell'istruzione macchina il nome del registro da utilizzare.

La capacità è molto ridotta, tipicamente di una parola di memoria. Quindi, se ho ad esempio un processore da 32 bit, la sua parola sarà di quella dimensione.

Memoria cache

E' una memoria temporanea come quella dei registri, e dedicata per il processore.

Al suo interno vengono copiate (dalla memoria centrale) porzioni di memoria di uso frequente, così quando la CPU vorrà leggere in quegli indirizzi non dovrà fare altro che copiare le istruzioni direttamente dalla cache. Grazie ai tempi di accesso molto rapidi, si eliminano i tempi di attesa dovuti al trasferimento dei dati tra i due componenti. E' grazie ad appositi controlli che i circuiti elettronici del processore capiscono se le istruzioni cui punta il loro Program Counter sono presenti o meno nelle cache.

Se il Program Counter punta a un'istruzione non contenuta nella cache, vengono automaticamente "scaricati" al suo interno le istruzioni successive del blocco, in previsione di un utilizzo futuro.

Le cache possono essere sia interne (sullo stesso circuito del processore) o esterne, ovvero montate su un chip aggiutivo dedicato fisicamente separato dalla CPU. Pur essendone separato, è comunque caratterizzato da tempi di accesso molto più veloci rispetto alla memoria. Può essere utile in quanto più capiente della cache interna, nella quale potrebbero non starci i dati sensibili.

Da notare che dal punto di vista logico accedere alla cache è come accedere alla memoria centrale.

Pag 3

Memoria centrale

Contiene le informazioni e i dati da far eseguire al processore (è qui infatti che punta il Program Counter).

Dal punto di vista funzionale è indispensabile (perché il processore non saprebbe caricare istruzioni da nessun'altra parte, cache escluse), a differenza delle memorie cache il cui unico scopo è rendere le macchine più efficienti e rapide.

Al contrario dei registri, identificati da un nome specifico (es. R1, R2, ...), nella memoria si utilizzano gli indirizzi. Ciò che cambia è solo il tipo di identificatore utilizzato, ma ottengo comunque un accesso diretto.

Rispetto ai registri, il tempo di accesso alla memoria varia circa di un ordine di grandezza.

Memoria di massa: dischi magnetici

Le memorie di massa possono essere realizzate con diverse tecnologie, ognuna delle quali con caratteristiche (implementative, funzionali) proprie. Sono necessarie perché la memoria centrale ha comunque una dimensione limitata e potrebbero non starci tutti i dati e i programmi di cui ho bisogno.

Il tipo di accesso può essere sia diretto che sequenziale. Diretto perché se sappiamo qual è la parola di memoria che ci interessa, possiamo dire al dispositivo di posizionare le testine di lettura/scrittura sulla sezione corrispondente (tradotto: non devo leggere per forza tutti i byte del disco, ma posso passare direttamente al blocco desiderato). Sequenziale perché posso anche scaricare un byte dopo l'altro, in sequenza appunto.

Per come sono costruite, non è possibile leggere la singola parola, ma si è costretti a leggere un intero blocco.

Il tempo di accesso è circa un paio d'ordini di grandezza più lento rispetto alla memoria centrale.

Pag 4

Memoria di massa: dischi ottici

...

Memoria di massa: nastri magnetici

Sono caratterizzati da tempi di accesso molto lenti, determinati dalla loro struttura elettro-meccanica.

L'accesso è solo di tipo sequenziale. Devo infatti partire dall'inizio del nastro e andare avanti a leggere fino ad arrivare alla parte di interesse (buttando via via i byte che non mi interessano).

Pag 5

Gerarchia di memoria

...

Caching

Il caricamento e lo scaricamento delle porzioni di memoria nelle cache viene gestito generalmente in automatico dall'hardware.

La coerenza delle informazioni è una proprietà (un vincolo) da rispettare sempre. Se andiamo infatti a fare una modifica nell'area di cache, bisogna provvedere ad apportare la stessa modifica anche nella memoria centrale. In caso contrario avrei informazioni obsolete o modifiche perse.

Se modifico più volte uno stesso byte nell'area di cache, non conviene aggiornare la memoria centrale ad ogni minimo cambiamento: lo faccio una sola volta alla fine. Prima di eliminare dei dati modificati dall'area di cache, è dunque necessario ricopiarli aggiornati nella memoria centrale. Questi aggiornamenti delle modifiche avvengono generalmente a livello hardware.

Pag 6

Protezione della memoria

Premessa: per come sono strutturate le macchine di Paul Newman, un processore non può prelevare le istruzioni dalle memorie di massa.

Se nella memoria centrale sono caricate le istruzioni di un unico programma (che può risolvere al più diverse istanze dello stesso problema), si parla di sistemi di elaborazione dedicati. Ad esempio, la lavatrice. In questo caso, il programma è il padrone esclusivo di tutte le risorse.

La multiprogrammazione prevede invece il caricamento di più programmi nella memoria centrale, per spremere al meglio la potenza di calcolo del processore. In questo modo vengono infatti sfruttati tutti quei tempi morti in cui il processo di un certo programma non ha niente da fare, eseguendone altri.

Per garantire che i programmi vengano eseguiti in modo corretto e che i suoi dati non vengano letti da altri, inserisco dei meccanismi per confinarne l'accesso a specifiche limitate aree di memoria.

Dato che la memoria centrale non implementa in modo nativo alcun sistema di protezione, dovrò utilizzare un supporto hardware dedicato: le MMU.

Protezione della memoria centrale

La MMU è un circuito dedicato che si frappone tra CPU e memoria centrale verificando la leicità degli accessi.

Quando il processore chiede un'istruzione contenuta in un certo indirizzo, la MMU verifica che questo sia compreso tra gli indirizzi estremi in cui il programma chiamante è stato caricato. Se sì, consente l'accesso all'istruzione/dato puntata, no altrimenti.


Torna alla pagina di Sistemi Operativi