Gerarchie di memoria
- Memorie primarie:
- Cache (SRAM): veloci ma di dimensioni limitate
- DRAM: memoria centrale, volatile, utilizzata per programmi e dati
- Memorie secondarie:
- Dischi magnetici (HDD): non volatili, accesso diretto ma lenti (tempi in millisecondi)
- Dischi ottici (CD/DVD) e nastri: utilizzati per backup, accesso sequenziale
- Memorie flash: combinano velocità e non volatilità
Struttura dei dischi magnetici
- Organizzazione:
- Tracce: cerchi concentrici sul disco
- Settori/Blocchi: unità minime di trasferimento (tipicamente 512 byte - 16 KB)
- Tempi di accesso:
- Seek time (posizionamento testina) + latenza rotazionale + trasferimento blocco
- Ottimizzazione: lettura di blocchi consecutivi per ridurre i tempi
Organizzazione dei file
- Record:
- A lunghezza fissa: più semplici da gestire, con posizioni predefinite
- A lunghezza variabile: utilizzano separatori o informazioni di lunghezza
- Blocchi:
- Un blocco contiene più record
- Blocking factor (bfr): numero di record per blocco
- Allocazione dei blocchi:
- Contigua: blocchi consecutivi, veloce ma difficile da espandere
- Linked: blocchi collegati da puntatori, espansione facile ma accesso lento
- Indicizzata: utilizza blocchi di indice per puntare ai dati
Tecniche di accesso ai dati
- Heap file:
- Record inseriti in ordine, ricerca lineare
- Inserimento efficiente, cancellazione con buchi o flag
- File ordinati:
- Ricerca binaria, ma inserimento/cancellazione costosi
- Utilizzo di file di overflow per gestire nuovi record
- Hashing:
- Interno: tabella hash in memoria, risoluzione collisioni con open addressing o chaining
- Esterno: bucket su disco, overflow gestito con liste linkate
- Hashing dinamico:
- Estendibile: directory per gestire bucket, espansione flessibile
- Lineare: espansione progressiva senza directory
Tecnologia RAID