Sistemi Operativi 2(prof.Robino)

Transcript

Sistemi Operativi 2(prof.Robino)
GESTIONE MEMORIA SECONDARIA Ges$one della memoria secondaria (file system) •  Realizzata dal modulo del Sistema Opera$vo, de<o file system, che si occupa di: –  Associare un nome di file ad una parte dello spazio del disco –  Fornire metodi per accedere ai file –  Rendere trasparente la stru<ura fisica del disco Gestore del File System •  Il gestore del file system è quel modulo del sistema opera$vo incaricato di ges$re le informazioni memorizzate sui disposi$vi di memoria di massa à DISCO •  Il gestore del file system deve garan$re: –  la corre<ezza –  la coerenza –  Il recupero efficiente delle informazioni memorizzate Gestore del File System •  Insieme di programmi per l’organizzazione –  Logica: fornire all’utente una visione logica dei file (che astrae dall’organizzazione fisica) –  Fisica: ges:re i file nella memoria secondaria (dischi) e oHmizzare l’u$lizzo dello spazio disponibile Organizzazione logica •  L’utente deve poter –  Organizzare le proprie informazioni in file e insiemi di file –  Accedere ai da$ –  Iden$ficare ogni file con un nome logico –  Operare sui file (creare, eliminare, cambiare nome, modificare) –  Proteggere i propri file (da accessi non desidera$) Organizzazione fisica •  Il Sistema Opera$vo deve: –  Tener traccia dei file memorizza$ e della loro posizione fisica sui dischi –  OHmizzare l’u$lizzo dello spazio su disco –  Ges$re le comunicazioni tra la memoria principale e la memoria secondaria (disco) Altre funzioni •  Nei sistemi mul$-­‐utente, deve me<ere a disposizione dei meccanismi di protezione in modo tale da consen$re agli uten$ di proteggere i propri da$ dall’accesso da parte di altri uten$ non autorizza$. Interfaccia grafica File •  Unica unità logica di informazione usata dal Sistema Opera$vo •  Fisicamente: –  Sequenza di byte che con$ene informazioni omogenee –  Es., programma, testo, da$ simili, … –  Byte = 8 bit •  TuH i da$ vengono suddivisi in file •  I file vengono memorizza$ nelle memorie di massa File •  Un insieme di informazioni (da$, documen$) memorizzate su suppor$ di memoria secondaria •  Una sequenza di bit, byte, record logici, record fisici (dipende dal $po del file e dal punto di vista), il cui significato è definito dal creatore del file Tipo di file •  Ogni file è composto $picamente da: –  Nome: stringa arbitraria decisa dall’utente –  Estensione: insieme (fissato) di cara<eri che definiscono il TIPO di un file •  Esempi –  relazione.doc –  report.txt –  foto.jpg –  ar$colo.pdf –  … Operazioni su file • 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
Creazione Apertura Chiusura Cancellazione Copia Rinomina Visualizzazione Le<ura Scri<ura Modifica … Organizzazione di più file •  Quasi tuH i sistemi opera$vi u$lizzano un’organizzazione gerarchica del File System •  L’elemento u$lizzato per raggruppare più file insieme è la directory •  L’insieme gerarchico delle directory e dei file può essere rappresentato a<raverso un grafo delle directory Organizzazione dei file •  Possibilità di organizzare i file in Directory (de<e anche Cartelle), ovvero come insiemi di: –  file –  altre directory •  Il tu<o arricchito da un elenco dei contenu$ •  Organizzazione a<ualmente scelta: gerarchica •  Organizzazione solo logica. Non c’è alcuna relazione con la posizione fisica dei file di una directory (cartella) sul disco Organizzazione ad albero • 
• 
• 
• 
• 
Albero rovesciato (come genealogico) Nodi e collegamen$ padre-­‐figlio tra nodi Nodo: file o directory Nodi divisi per livelli Collegamen$ tra nodi di livelli vicini: –  nodo sopra = padre –  nodo so<o = figlio • 
• 
• 
• 
Ogni nodo ha un solo padre Padre più in alto = radice I nodi file non hanno figli Cammino assoluto o rela$vo (per file) Albero delle Directory Esempio: Albero delle directory in Unix Operazioni su directory •  Organizzazione di file in stru<ure chiamate cartelle (directory) •  Creazione directory •  Eliminazione directory •  Elenco file di una directory •  Ricerca –  di un par$colare file –  di tuH i file che soddisfano una par$colare relazione –  Operazioni più complesse: backup, … WINDOWS 8 •  Windows 8 è l'ul$ma versione del sistema opera$vo Windows •  introduce una nuova interfaccia utente, simile a quella di Windows Phone, proge<ata per ada<arsi meglio all'input da touchscreen e u$lizzabile anche con mouse e tas$era. •  Inoltre, l'edizione RT di Windows 8 aggiunge il supporto all'archite<ura di processori ARM. •  L'interfaccia utente è oHmizzata per i touchscreen, ma u$lizzabile anche con mouse e tas$era ANDROID •  Android è un sistema opera$vo per disposi$vi mobili cos$tuito da uno stack sodware che include un sistema opera$vo di base, i middleware per le comunicazioni e le applicazioni di base. •  Cara<eris$che principali di Android sono la stru<ura open source (escluse alcune versioni intermedie), e il suo basarsi su kernel Linux. ANDROID •  L'interfaccia utente di Android è basata sul conce<o di direct manipula$on, per cui si u$lizzano gli ingressi mono e mul$-­‐touch come strisciate, tocchi e pizzichi sullo schermo per manipolare gli oggeH visibili sullo stesso. •  Android è stato proge<ato principalmente per smartphone e tablet, il cara<ere aperto e personalizzabile del sistema opera$vo perme<e di essere u$lizzato su altri disposi$vi ele<ronici, tra cui porta$li e netbook, ebook reader, e smart TV. MEMORIE Tipologie di memorie •  Le memorie sono disposi$vi per immagazzinare informazioni •  Ogni memoria è cos$tuita da celle, a cui si accede tramite un indirizzo •  In ogni elaboratore vi sono tre $pi di memorie: –  Registri: contengono informazioni necessarie alla elaborazione della singola istruzione –  Memoria centrale: con$ene da$ e istruzioni a<ualmente elabora$ dal processore –  Memorie di massa: contengono da$ e programmi che non sono ogge<o di elaborazione immediata Cara<eris$che •  Modalità o ordine di accesso (memorie ad accesso dire<o o sequenziale); •  Possibilità di scri<ura (memorie a le<ura-­‐scri<ura, memorie scrivibili una sola volta, memorie a sola le<ura); •  Velocità di le<ura; •  Velocità di scri<ura; •  Costo unitario; •  Vola$lità; •  Tecnologia (ele<ronica, magne$ca, oHca, magnetooHca). Principali disposi$vi di memoria •  Due tecnologie di memorizzazione di informazioni digitali si sono affermate in base alle loro cara@erisAche economiche e tecniche: –  le memorie a semicondu@ore –  le memorie a supporto magneAco •  Entrambe queste memorie si basano su bistabili, cioè elemen/ cara@erizzaA da un diagramma energeAco del Apo di quello rappresentato in figura Principali disposi$vi di memoria •  Da un punto di vista matema$co, il diagramma energe$co di un bistabile deve presentare due minimi rela:vi separa: da un massimo rela:vo di ampiezza significa$va •  In termini pra$ci, questo si traduce in un elemento che è in grado di permanere, per un tempo a priori indeterminato, in uno dei due sta$ stabili (cioè di minima energia) finché non interviene un fenomeno di en$tà sufficiente a far commutare il bistabile, cioè a farlo passare da uno stato a minima energia all’altro. •  Associando convenzionalmente il valore logico ZERO ad uno dei due sta$ ed il valore logico UNO all’altro, è possibile memorizzare un’informazione binaria (bit) in ogni bistabile. •  La classificazione delle memorie si basa su: –  modalità di accesso (a cui è legata la velocità di risposta) –  stabilità dell’informazione memorizzata Le memorie -­‐ 2 •  I parametri fondamentali che definiscono una memoria sono: Dimensione della parola (locazione di memoria) Modalità di accesso (dire<o o sequenziale) Permanenza o vola$lità dei da$ Capacità (numero di locazioni disponibili), espressa in KB, MB, GB, etc. –  Tempo di accesso, necessario per accedere ad una locazione di memoria per un’operazione di le<ura o scri<ura, espresso in nsec, millisec, sec – 
– 
– 
– 
•  In base agli ul$mi due parametri, le memorie si collocano a diversi livelli di una gerarchia, che va da memorie più capaci ma più lente (memorie di massa) a memorie piccole e veloci (registri) La memoria centrale -­‐ 1 •  La memoria centrale o memoria principale, de<a anche RAM (Random Access Memory, ovvero memoria ad accesso casuale, perché qualsiasi cella può essere le<a/scri<a in un tempo, mediamente, costante), è la memoria in linea con il processore, che con$ene i da$ e i programmi che sono a<ualmente u$lizza$/in esecuzione •  Un programma, quando non è ogge<o di elaborazione, è memorizzato su memoria di massa (dischi) •  Quando deve essere eseguito, viene caricato tu<o o in parte, in memoria centrale (memoria virtuale) La memoria centrale -­‐ 2 •  Le cara<eris$che fondamentali della memoria centrale sono: –  accesso dire<o alle informazioni –  velocità elevata e vola$lità: quando il computer viene spento, i da$ e i programmi presen$ in memoria vengono cancella$ •  La tecnologia u$lizzata per la memoria centrale è quella dei disposi$vi a semicondu<ori, che la fanno apparire come una matrice di bit •  Ogni bit è presente come stato (alto o basso) di tensione La memoria centrale -­‐ 3 •  La memoria principale è un insieme di locazioni o celle •  L’unità di memorizzazione, la dimensione della singola cella, è il byte •  Ciascun byte nella memoria è individuato da un indirizzo che lo dis$ngue da tuH gli altri, cos$tuito da un numero variabile da 0 a 2N-­‐1 dove N è la dimensione in bit dell’indirizzo (es. numero di bit/fili sul bus indirizzi) Memorie a semicondu<ore •  Memorie RAM (Random Access Memory) •  Ne esistono di due $pi: –  Sta$che: Sta$c RAM (SRAM) –  Dinamiche: Dynamic RAM (DRAM) •  SRAM: la cella elementare che memorizza un bit è cos$tuita da un circuito contenente diversi transistor. L’informazione scri<a si man$ene finché sono alimentate. •  DRAM: basta un solo transistor. L’informazione tende a cancellarsi e va rinfrescata, riscrivendola, ogni pochi msec (refresh). Serve un controllore che ges$sca l’operazione di riscri<ura (Dynamic RAM Controller) •  Le SRAM sono più veloci delle DRAM, più costose e di minore capacità •  RAM sincrone (SDRAM e SSRAM): offrono la possibilità di trasferire blocchi di da$ presen$ in memoria a indirizzi consecu$vi, specificando un indirizzo di partenza e una lunghezza. Il trasferimento è più veloce perché si genera solo il primo indirizzo e un segnale di clock sincronizza la sequenzializzazione dei da$. Memorie a semicondu<ore •  Memorie ROM (Read Only Memory): memorie a sola le<ura che contengono in genere solo programmi, $picamente di funzionamento per applicazioni embedded o di inizializzazione dei calcolatori •  Mantengono l’informazione anche se sono disalimentate •  Ne esistono di vari $pi: –  ROM : l’informazione viene scri<a in fabbrica durante il processo di fabbricazione e non è più modificabile –  PROM (Programmable ROM): possono essere scri<e una volta sola dall’utente a<raverso una par$colare apparecchiatura de<a programmatore di PROM –  EPROM (Erasable Programmable ROM): come la PROM, può essere programmata dall’utente, ma può essere cancellata tramite esposizione ai raggi ultravioleH. Per questo mo$vo, i contenitori di EPROM hanno sempre una finestrella che lascia vedere il chip Memorie a semicondu<ore –  OTP ROM (One Time Programmable ROM): iden$che alle EPROM, ma prive della finestrella trasparente (per produzioni in serie) –  EEPROM o E2PROM (Electrically Erasable Programmable ROM): come la EPROM, ma la cancellazione viene effe<uata con segnali ele<rici –  EAROM (Electrically Alterable ROM): alterabili ele<ricamente. Non è più necessaria la cancellazione di tu<o il contenuto della memoria quando si vogliono modificare anche solo poche celle –  FLASH: offrono significa$vi vantaggi rispe<o alle EPROM. U$lizzano una tecnica di cancellazione tramite impulsi ele<rici, al posto della radiazione UV. Perme<ono cancellazioni parziali, dire<amente sulla scheda e rapide. Supportano più operazioni di scri<ure/cancellazioni. Meno veloci della RAM. La memoria ROM •  Una parte della memoria centrale è la ROM (Read Only Memory), una memoria a sola le<ura, des$nata a contenere informazioni non variabili •  Cara<eris$che delle memorie ROM: –  accesso casuale alle informazioni –  velocità elevata (inferiore alle RAM) •  La ROM viene scri<a in modo permanente in fase costruHva: le celle della ROM possono essere successivamente le<e, ma mai riscri<e •  Viene usata per memorizzare programmi di sistema Il sodware della ROM -­‐ 1 •  La ROM con$ene il sodware e i da$ necessari ad inizializzare il computer ed a far funzionare i disposi$vi periferici •  Il nucleo del sodware della ROM è cos$tuito dalle rou$ne di avviamento che comprendono il caricatore di boot-­‐strap ed il ROM BIOS •  Le rou$ne di avviamento realizzano l’inizializzazione del calcolatore: –  Ne effe<uano un rapido controllo di affidabilità, per accertare che tu<e le componen$ hardware siano perfe<amente funzionan$ –  Caricano il sistema opera$vo dal disco (caricatore di boot-­‐
strap) Il sodware della ROM -­‐ 2 •  Il caricatore di boot-­‐strap ha la funzione di leggere un programma di lancio dal disco, de<o bootstrap, e di trasferire ad esso il controllo: il boostrap carica il nucleo del sistema opera$vo e lo manda in esecuzione •  Il ROM BIOS (Binary Input-­‐Output System) è la parte della ROM aHva quando il computer è al lavoro: il suo ruolo è quello di fornire un insieme di servizi di base richies$ per il funzionamento delle periferiche Operazioni sulla memoria centrale •  Le operazioni che si effe<uano sulla memoria centrale sono operazioni di le<ura e scri<ura •  Entrambe presuppongono l’u$lizzo di un indirizzo che iden$fica univocamente la cella interessata all’operazione •  L’operazione di scri<ura è distruHva, cioè cancella l’informazione precedentemente contenuta nella cella •  L’operazione di le<ura preserva il contenuto della cella indirizzata: all’esterno della memoria centrale viene trasferita copia dell’informazione La memoria secondaria •  Esistono diversi disposi$vi di memoria secondaria: dischi magne$ci (hard disk), dischi oHci (CD, DVD), disposi$vi USB, memorie flash •  Memoria non vola$le ad alta capacità •  Il disco fisso è cos$tuito da uno o più piaH metallici ricoper$ di materiale magne$co su entrambe le facce •  Ciascuna superficie è associata ad una o più tes$ne di le<ura/scri<ura che si muovono radialmente per leggere/ scrivere l’informazione organizzata in tracce concentriche I dischi magne$ci -­‐ 1 •  I dischi magne$ci rappresentano il mezzo fondamentale per la memorizzazione di massa •  I dischi ruotano ad una velocità (costante) compresa tra i 60 e i 200 giri al secondo I dischi magne$ci -­‐ 2 •  L’informazione è disposta sul disco in tracce, ovvero in cerchi concentrici •  La densità dei bit decresce dalle tracce interne alle più esterne per mantenere costante la quan$tà di da$ che passano so<o le tes$ne nell’unità di tempo •  Le tracce sono divise in se<ori •  La capacità di memorizzazione dei dischi cresce in conseguenza allo sviluppo tecnologico I dischi magne$ci -­‐ 3 •  Il numero di bit contenu$ in una traccia è dell’ordine delle cen$naia di migliaia (512/4096 byte a se<ore) •  Cen$naia di se<ori (512/1024 per traccia) •  Decine di migliaia di cilindri (tracce concentriche disposte sulle diverse facce dei diversi dischi) •  Per leggere (o scrivere) sul disco, la tes$na si deve posizionare sulla traccia che con$ene il dato, ed a<endere che il dato passi so<o di essa –  Le operazioni di le<ura/scri<ura si basano sulla proprietà del campo magne$co di indurre/essere indo<o il/dal passaggio di corrente in una bobina I dischi magne$ci -­‐ 4 •  La magne$zzazione avviene mediante la tes$na magne$ca (una piccola bobina racchiusa in un involucro di metallo dotato di una minuscola fessura, il traferro) •  Facendo passare corrente nella bobina si induce un campo magne$co nel traferro (invertendo la corrente si inverte anche il campo) •  Quando si fa passare corrente a<raverso la tes$na alternandone la direzione, le aree del disco al di so<o della tes$na si magne$zzano in una delle due direzioni: questo procedimento rappresenta la scri<ura su disco I dischi magne$ci -­‐ 5 •  I da$ binari che l’unità scrive sul disco sono tradoH in un formato cos$tuito da una serie di aree magne$zzate in un senso o nell'altro •  Le<ura da disco: poiché le par$celle magne$zzate sono circondate da un campo magne$co, quando il traferro passa sul disco le variazioni del campo inducono sulla tes$na una corrente che si manifesta con variazioni di voltaggio alle estremità della bobina; i circui$ di le<ura decodificano le variazioni nell’andamento dell’intensità di corrente riconducendole a 0/1 Accesso al disco •  Il tempo medio di accesso all’informazione memorizzata su disco è dato da •  T = tseek + tlat + ttr •  tseek è il tempo di ricerca, necessario per posizionare la tes$na sulla traccia che con$ene l’informazione; dipende dall’ampiezza dello spostamento •  tlat è il tempo di latenza, necessario perché l’informazione ricercata passi so<o la tes$na; dipende dalla velocità di rotazione dei dischi •  ttr è il tempo di trasferimento; dipende dalla velocità di rotazione, dalla densità di registrazione e dalla quan$tà di informazione da trasferire Memorie a supporto magne$co: hard disk •  Parametri $pici: –  densità lineare di memorizzazione: > 500.000 bit/
pollice –  numero di tracce per pollice: > 10.000 –  velocità di rotazione: da 7200 a 15.000 rpm (giri/
minuto) –  velocità di spostamento del braccio: 30 ms a<raverso tu<e le tracce –  velocità di trasferimento: 10 -­‐ 60 MByte/secondo –  capacità di memorizzazione: 20 Gbyte-­‐Terabyte I dischi oHci -­‐ 1 •  Sui dischi oHci si u$lizza la tecnologia laser per realizzare le operazioni di le<ura/scri<ura •  Densità dei bit per traccia uniforme –  Un’unica traccia elicoidale o… –  …tracce più lontane dal centro del disco sono più lunghe e contengono un maggior numero di se<ori (fino al 40% in più rispe<o alle tracce vicine al centro di rotazione) I dischi oHci -­‐ 2 •  Sui dischi di le<ura/scri<ura i da$ possono essere modifica$ più e più volte (dischi a cambio di fase) •  I dischi WORM, Write Once-­‐Read Many, si possono scrivere una sola volta •  La tecnologia originale per dischi WORM consiste nell’inserire una pellicola di alluminio tra due piaH di plas$ca o di vetro (o un pigmento polimerico) •  Per scrivere un bit, l’unità usa un raggio laser per pra$care un piccolo foro nell’alluminio (o opacizzare il pigmento): l’informazione può venir distru<a ma non alterata Memorie a supporto magne$co: nastri •  Il materiale ferromagne$co è depositato su nastri di plas$ca avvol$ su opportune bobine; sono suddivisi generalmente, in senso trasversale, in 9 strisce (piste) parallele, ciascuna assegnata ad una tes$na che consentono la memorizzazione di un byte dotato del bit di parità Memorie a supporto magne$co: nastri •  In senso longitudinale, invece, le informazioni sono organizzate in blocchi, suddivisi in record, intercala$ da zone non magne$zzate (interrecord gap) •  Il nastro è normalmente fermo e trasferisce un blocco per volta •  Parametri $pici: –  i forma$ più usuali sono: bobine da 1/2 pollice, cartucce da ¼ pollice, casse<e (simili alle casse<e audio) –  velocità di trascinamento: 100 – 200 pollici/secondo –  larghezza del nastro: ¼ – ½ pollice –  lunghezza del nastro: 350 – 1.000 m –  densità di memorizzazione: 25 MByte/pollice –  capacità: 100 GByte – 1 TByte Processore e RAM •  La connessione tra memoria e processore rappresenta un limite degli elaboratori di Von Neumann –  Limite archite<urale: il bus perme<e l’accesso ad una sola informazione per volta (“collo di boHglia”) –  Limite tecnologico: la velocità con cui il processore oHene le informazioni dalla memoria centrale (velocità di accesso della RAM) è inferiore alla velocità con cui è in grado di elaborarle •  Soluzioni –  Allargamento del bus da$, in modo da poter estrarre più istruzioni e/o da$ per volta –  Superamento del limite tecnologico mediante introduzione di una memoria intermedia tra memoria centrale e processore che approssimi la velocità del processore Tempi di accesso •  Il tempo di accesso varia da disposi$vo a disposi$vo: –  memoria centrale di $po cache: circa 1 nsec –  memoria centrale: circa 5 nsec –  dischi magne$ci: fino a 1-­‐5 msec –  discheH e dischi oHci: 20-­‐100 msec –  nastro: secondi Tipi di accesso •  Uniforme o casuale: $pico della memoria centrale. L’accesso ai da$ avviene in modo dire<o tramite il loro indirizzo e in un tempo costante che non dipende dalla loro posizione •  Sequenziale: $pico dei nastri. I da$ vengono scriH e leH uno dopo l’altro in posizione con$gua sul supporto •  Dire<o o misto: $pico dei dischi. L’accesso ai da$ avviene in modo dire<o, ma il tempo di accesso varia a seconda della posizione corrente rela$va tra dato e tes$na di le<ura/scri<ura Riassumendo SSD •  Un'unità a stato solido o drive a stato solido, in sigla SSD (solid-­‐state drive), è una $pologia di disposi$vo di memoria di massa che u$lizza memoria a stato solido (in par$colare memoria flash) per l'archiviazione dei da$. •  L'importante differenza con i classici dischi è la possibilità di memorizzare in modo non vola$le grandi quan$tà di da$, senza u$lizzare organi meccanici. Vantaggi SSD •  La totale assenza di par$ meccaniche in movimento porta diversi vantaggi, di cui i principali sono: rumorosità assente; minore possibilità di ro<ura; minori consumi durante le operazioni di le<ura e scri<ura; tempo di accesso rido<o: si lavora nell'ordine dei decimi di millisecondo; il tempo di accesso dei dischi magne$ci è oltre 50 volte maggiore, a<estandosi invece tra i 5 e i 10 millisecondi; –  maggiore resistenza agli ur$: le specifiche di alcuni produ<ori arrivano a dichiarare resistenza a shock di 1500; –  Maggiore durata: le unità a stato solido hanno mediamente un tasso di ro<ura inferiore a quelli degli hard disk. Questo tasso oscilla tra lo 0.5% fino a 3% mentre negli hard disk può raggiungere il 10%. –  minore produzione di calore – 
– 
– 
– 
Svantaggi SSD •  A fronte di una maggiore resistenza agli ur$ e a un minor consumo, le unità a stato solido hanno due svantaggi principali: –  un maggiore prezzo per bit, pari a circa dieci volte il costo di un disco rigido tradizionale. –  una possibile minore durata dell'unità, a causa del limite di riscri<ure delle memorie flash. I disposi$vi a<uali dichiarano un numero massimo di riscri<ure consecu$ve dello stesso bit che va da 10.000 a 1.000.000 di cicli, a seconda del modello e degli u$lizzi ipo$zza$. •  Entrambi i problemi sembrano però des$na$ a risolversi in futuro. Memoria centrale e di massa •  Due parametri molto u$li per qualificare i diversi $pi di disposi$vi sono il costo per bit memorizzato e il tempo di accesso (la velocità di risposta alla richiesta di trasferimento di informazioni) Memoria centrale e di massa •  Una considerazione che discende dall’esame del grafico è il costo rela$vamente elevato dei disposi$vi a semicondu<ore, tale da rendere troppo onerosa e quindi improponibile la realizzazione di calcolatori con grandi quan$tà di memoria di lavoro •  Un problema ulteriore è rela$vo alla vola$lità delle informazioni (vengono perse quando il disposi$vo viene disalimentato). •  Un’ampia disponibilità di memoria è par$colarmente u$le perché: –  uno spazio di indirizzamento ampio consente di u$lizzare stru<ure da$ complesse ed estese; –  i calcolatori usa$ da più uten$ devono soddisfare la presenza contemporanea di vari programmi e dei rela$vi da$ in memoria Memoria centrale e di massa •  Da un punto di vista funzionale, ogni disposi$vo di memorizzazione cos$tuisce un serbatoio di sequenze di bit (parole) accessibili mediante il loro indirizzo •  Da un punto di vista comportamentale, esistono invece significa$ve differenze fra memorie basate su principi fisici diversi o realizzate con diverse tecnologie e tali differenze separano in modo ne<o i campi applica$vi delle diverse memorie •  Il conce<o di gerarchia di memoria nasce dal tenta:vo di fornire il calcolatore di un supporto di memorizzazione dotato delle migliori cara<eris$che di tuH i $pi di memoria disponibili Necessità di ges$re la memoria •  La memoria è una risorsa importante e deve essere ges$ta a<entamente •  Un programmatore vorrebbe: –  una memoria infinita –  veloce –  non vola$le –  poco costosa •  Ques$ desideri possono essere solo parzialmente soddisfaH (sono contraddi<ori) Principio di località degli accessi •  Una soluzione economicamente valida sarebbe quella di u$lizzare disposi$vi a supporto magne$co (ad esempio dischi) per realizzare, a parità di costo, memorie di lavoro molto estese. Purtroppo i tempi di accesso necessari per o<enere l’informazione ricercata sono tali da impedirne l’uso come supporto di memoria di lavoro •  Tu<avia la distribuzione degli indirizzi genera$ durante l’esecuzione di programmi non è di fa<o casuale •  Principio di località degli accessi: esiste un’elevata probabilità che, a par$re dalla generazione di un certo indirizzo di memoria, ne venga generato uno uguale o simile entro breve tempo, cioè a distanza di pochi accessi in memoria Località temporale e sequenziale •  Il principio di località degli accessi deriva da: –  una località temporale, dovuta al fa<o che ogni programma ha un’elevata probabilità di riu$lizzare a breve le informazioni appena acquisite –  una località sequenziale, dovuta al fa<o che l’esecuzione di un’istruzione ha un’elevata probabilità di essere seguita dall’istruzione immediatamente successiva nel programma; discorso analogo vale per i da$ Memoria virtuale •  Grazie al principio di località degli accessi è possibile realizzare un sistema di ges$one della memoria di lavoro virtuale, nella quale lo spazio u$lizzabile da ogni singolo programma è largamente superiore alle dimensioni fisiche della memoria centrale effeHvamente presente nel calcolatore. •  Il termine virtuale deriva dal fa>o che in questa organizzazione di memoria lo spazio di indirizzamento dell’unità centrale non ha un riscontro fisico nella memoria centrale, che è solo una parte della memoria reale del sistema, ma fa riferimento ad una memoria di lavoro virtuale (corrispondente in pra$ca alla memoria di massa) •  Questo meccanismo prevede che le informazioni correntemente u$lizzate dalla CPU vengano temporaneamente ricopiate dalla memoria più ampia e lenta (memoria di massa) alla più veloce e più piccola (memoria centrale) Schema$camente Ges$one della memoria virtuale •  Nei computer senza memoria virtuale, l'indirizzo virtuale viene messo dire<amente sul bus di memoria, quindi la parola di memoria fisica con lo stesso indirizzo viene le<a o scri<a •  Nei calcolatori che implementano una ges$one della memoria virtuale (cioè che vedono una memoria più ampia di quella fisica di lavoro), ogni programma può produrre un insieme di indirizzi di memoria, deH Indirizzi Virtuali, e formano lo Spazio di Indirizzamento Virtuale. •  Questo richiede una poli$ca di ges$one della memoria virtuale, che consiste in un metodo di conversione dell’indirizzo virtuale, emesso dall’unità centrale, nell’indirizzo fisico della cella di memoria di lavoro nella quale è stato ricopiato il valore della locazione virtuale cercata. •  Tale compito è demandato ad un’unità dedicata, l’unità di ges:one della memoria (MMU: Memory Management Unit) Spazi di indirizzamento •  Al tempo di esecuzione del programma P il processore genera indirizzi logici appartenen$ allo spazio N assegnato dal compilatore al programma •  N è ampio al più 2p indirizzi dove p è l’ampiezza in bit dell’indirizzo logico •  La memoria principale offre uno spazio di indirizzamento fisico M al programma caricato per l’esecuzione •  L’ampiezza di M non coincide necessariamente con quella di N Spazi di indirizzamento •  Nel caso di allocazione sta$ca N ed M coincidono –  Una traduzione sta$ca può essere necessaria se N ed M usano una base diversa –  Tale traduzione avviene nelle fase di caricamento (linking loader) •  Nel caso di allocazione dinamica M varia sia in ampiezza che in posizionamento: –  Ciò richiede l’uso di una funzione di rilocazione f : N à M di cui si occupa il gestore della memoria Memoria centrale e di massa •  Quando l’unità centrale richiede l’accesso ad una locazione di memoria virtuale non presente in una cella di memoria reale, si rende necessario effe<uare una ricopiatura della memoria virtuale desiderata da memoria di massa a memoria centrale, eventualmente preceduta da una ricopiatura in senso inverso per liberare spazio nella memoria centrale (swapping) •  Per oHmizzare le prestazioni, si sfru<a in queste situazioni il principio della località degli accessi e si trasferisce da memoria di massa un intero blocco di locazioni adiacen$, contando su un’elevata probabilità di usarle a breve Memory Management Unit (MMU) •  Quando viene u$lizzata la memoria virtuale gli indirizzi virtuali non vengono messi dire<amente sul bus di indirizzi, ma vengono manda$ alla Memory Management Unit (MMU) un chip che mappa gli indirizzi virtuali sugli indirizzi della memoria fisica •  La MMU svolge i seguen$ compi$: –  Traduce l'indirizzo logico in indirizzo fisico; –  Controlla che l'indirizzo fisico corrisponda a una zona di memoria fisicamente presente nella memoria centrale; –  Se invece la zona in ques$one è nello spazio di swap, la MMU lo segnala al processore e si occupa di caricarla in memoria centrale, scartando una pagina già presente. Meccanismi di ges$one •  La funzione di rilocazione f può u$lizzare –  Paginazione: decomponendo sia N che M in blocchi di ampiezza fissa e contenen$ informazioni con$gue (pagine) –  Segmentazione: decomponendo N ed M in aree di ampiezza variabile, contenen$ informazioni con$gue e corrisponden$ a specifiche en$tà del programma (segmen$) –  Segmentazione paginata Ges$one della memoria: paginazione •  Si basa sul conce<o di pagina, cioè di blocco di parole consecu:ve, di dimensione prefissata (pochi Kbyte) che cos$tuisce l’unità minima di informazione trasferita durante le operazioni di swapping richieste dalla ges$one virtuale della memoria •  In questa modalità di ges$one della memoria, sia la memoria virtuale, sia la memoria fisica vengono suddivise in pagine di uguali dimensioni e ogni programma occupa in genere più pagine la cui dislocazione è libera dal vincolo di consecu$vità •  I trasferimen$ fra la memoria ed il disco avvengono sempre per unità di una pagina •  L’operazione di conversione da indirizzo virtuale a indirizzo fisico consiste nella ricerca della posizione di memoria fisica nella quale la pagina virtuale referenziata è stata inserita •  Questo si fa costruendo una tabella che fornisce la corrispondenza fra pagine virtuali e quelle fisiche Ges$one della memoria: paginazione •  Tale tabella ha un elemento (riga) per ogni pagina virtuale referenziabile dal programma; il contenuto è un bit che indica se la pagina è presente o meno nella memoria centrale ed, eventualmente, la posizione occupata da tale pagina virtuale nella memoria centrale •  Ogni accesso a memoria da parte della CPU comporta la le<ura dell’elemento della tabella corrispondente alla pagina virtuale referenziata e la verifica del bit di presenza: –  se la pagina è presente, l’indirizzo fisico è ricavabile dalla tabella –  se la pagina non è presente, deve essere caricata dalla memoria di massa per essere usata. In questo caso si deve iden$ficare una pagina di memoria centrale libera in cui caricare la pagina richiesta Esempio •  La macchina ha 64K di memoria virtuale e 32K di memoria fisica, le pagine sono di 4K Poli$ca di swapping •  Se tu<e le pagine sono occupate, la poli$ca di scelta più usata prevede di eliminare la pagina non u$lizzata da più tempo (LRU: Least Recently Used) •  Il problema principale della ges$one a pagine è l’eccessiva dimensione della tabella quando lo spazio di indirizzamento virtuale è molto esteso •  Questo problema non può essere risolto aumentando la dimensione delle singole pagine, se si vuole evitare un eccessivo spreco di memoria dovuto al fa<o che l’ul$ma pagina di un programma è u$lizzata solo in parte Ges$one della memoria: segmentazione •  La suddivisione non è in blocchi di uguale dimensione, ma in unità logicamente separate, i segmen: (moduli di cui è composto un programma, stru<ure da$ usate da un programma, ecc.) •  La conversione di indirizzo richiede che ad ogni programma venga associata una tabella che, per ogni segmento del programma, riporta il bit di presenza, l’indirizzo di tale segmento in memoria centrale e la lunghezza del segmento •  La conversione comporta quindi la le<ura della tabella: –  se il segmento è presente, si oHene dalla tabella l’indirizzo di memoria centrale in cui il segmento interessato è stato caricato Ges$one della memoria: segmentazione –  se il segmento è assente, si rende necessario il caricamento dalla memoria di massa: la differente lunghezza dei segmen$ comporta una suddivisione molto più ar$colata della memoria fisica, non più par$zionata in pagine di uguale lunghezza, ma assegnata in base alla richieste dei programmi in esecuzione •  Nasce un problema: ogni caricamento di un nuovo segmento va ad occupare lo spazio lasciato libero da un segmento di dimensioni maggiori di quello che si sta caricando, con il risultato di lasciare inu$lizzata la parte di memoria corrispondente alla differenza fra segmen$ vecchio e nuovo Ges$one della memoria: segmentazione •  Dopo un certo numero di operazioni di swapping, la memoria appare frammentata, cioè piena di “buchi” residui dei vari caricamen$, singolarmente piccoli, ma abbastanza numerosi da ridurre in modo inacce<abile lo spazio di memoria centrale u$lizzabile •  Una compa<azione periodica della memoria implica una ricopiatura dell’intero contenuto della memoria ed è quindi un’operazione estremamente lenta