b'\n_START_ARTICLE_\nCache\n_START_SECTION_\nEtimologia e pronuncia\n_START_PARAGRAPH_\n"Cache" \xc3\xa8 un adattamento inglese del termine francese "cach\xc3\xa9" (in italiano \'nascosto\'). Solitamente viene pronunciato /\xcb\x88ka\xca\x83/ (influenzato dall\'inglese /\xcb\x88k\xc3\xa6\xca\x83/). L\'origine del nome deriva dal fatto che la cache e il suo utilizzo sono "trasparenti" al programmatore, in pratica "nascosti" perch\xc3\xa9 amministrati direttamente dal sistema operativo o dall\'hardware.\n_START_SECTION_\nDescrizione\n_START_PARAGRAPH_\nUna cache \xc3\xa8 associata ad una memoria "principale", in cui risiedono i dati._NEWLINE__NEWLINE_Essa \xc3\xa8 tipicamente di capienza inferiore rispetto alla memoria principale, ma il suo utilizzo \xc3\xa8 pi\xc3\xb9 conveniente in termini di tempo di accesso e/o carico sul sistema. _NEWLINE_Quando \xc3\xa8 necessario l\'accesso ad un dato, una copia di questo viene prima cercata nella cache: se \xc3\xa8 presente e valida, viene utilizzata tale copia; altrimenti il dato viene recuperato dalla memoria principale, e memorizzato nella cache, nel caso possa servire successivamente. _NEWLINE_La memoria principale pu\xc3\xb2 essere hardware come una RAM (memoria principale di un processore) o un disco rigido, ma anche un complesso database distribuito, come il DNS o il Web. In questi casi, la memoria principale pu\xc3\xb2 essere modificata senza passare dalla cache, il che comporta problemi di coerenza tra i dati "originali" e quelli nella cache, ovvero un possibile disallineamento._NEWLINE_In alcuni casi \xc3\xa8 possibile convalidare i dati contenuti nella cache interrogando la memoria principale per verificare se sono ancora sincronizzati e corretti. Questo \xc3\xa8 compito che nel web, per esempio, fanno i server proxy: chiedono al server HTTP se la pagina che posseggono \xc3\xa8 stata modificata dopo la sua memorizzazione, e se non lo \xc3\xa8 evitano di trasferirla e la ripropongono direttamente al client._NEWLINE_In altri casi, si utilizza un meccanismo di scadenza a tempo dei dati memorizzati, e fino a quando un dato presente nella cache non \xc3\xa8 scaduto questo viene utilizzato, anche se non corrisponde a quanto presente nella memoria principale. Questo \xc3\xa8 il meccanismo adottato dal DNS._NEWLINE_Una cache riduce il carico di richieste che deve essere smaltito dalla memoria principale, e dal collegamento tra questa e l\'utilizzatore dei dati. Anche questo pu\xc3\xb2 contribuire a migliorare le prestazioni del sistema. Si pensi per esempio ad un server proxy utilizzato da molti utenti: quando un utente richiede una pagina che era gi\xc3\xa0 stata richiesta da un altro, il proxy potr\xc3\xa0 rispondere senza doversi collegare al sito originale, ed eviter\xc3\xa0 cos\xc3\xac di caricare sia il sito originale che la rete, migliorando cos\xc3\xac le prestazioni del sistema anche per le richieste che devono essere inoltrate ai siti originali._NEWLINE_Una cache utilizza un algoritmo per decidere quali dati mantenere e quali scartare, che tiene conto delle pagine utilizzate pi\xc3\xb9 di recente, della contiguit\xc3\xa0 delle pagine, o di diversi altri fattori._NEWLINE_Una cache pu\xc3\xb2 indicizzare i dati memorizzati sulla base del loro indirizzo (un blocco di memoria o di dati su disco fisso) o del loro "nome" (cache associativa, ad esempio una pagina Web o un nome DNS)._NEWLINE_In alcuni casi la memoria cache supporta anche la modifica dei dati. Questo \xc3\xa8 di implementazione semplice se la cache \xc3\xa8 l\'unico percorso di accesso alla memoria principale, come nel caso della cache della memoria RAM presente nei processori: la cache "accetta" una operazione di scrittura verso la RAM, permettendo al processore di proseguire l\'elaborazione, presenta subito al processore i dati aggiornati se questo ne chiede nuovamente la lettura, e si prende carico di scriverli sulla RAM prima di eliminare la pagina. In questo modo, se un dato in memoria \xc3\xa8 modificato frequentemente dal processore, \xc3\xa8 possibile mantenere le modifiche nella cache ed evitare continui trasferimenti verso la RAM (vedi Coerenza della cache)._NEWLINE_Tutti i tipi di cache archiviate su memoria non volatile sono facilmente eliminabili sia agendo direttamente nelle cartelle relative sia usando i comandi del sistema operativo o applicazione sia ricorrendo a uno dei tanti pulitori di parti terze quali, ad esempio, CCleaner.\n_START_SECTION_\nTipologia\n_START_PARAGRAPH_\nIl termine cache assume diversi significati a seconda del termine a cui \xc3\xa8 associato e in dipendenza del contesto. Parliamo quindi di: Memory cache, Disk cache, TLB - Translation Lookaside Buffer (Page Table cache, Branch Prediction cache, Branch history table, Branch Target Address Cache, Trace cache), che sono memorie fisiche._NEWLINE_Altre sono memorie gestite dal software per memorizzare dati temporanei in spazi di MM riservati, come: Disk cache, Page cache, System cache, Application cache, Database cache, Web cache, DNS cache, Browser cache, Router cache, ecc._NEWLINE_Alcune di queste ultime sono solamente "Buffers" (memorie tampone), cio\xc3\xa8 memorie non-associative con accesso sequenziale (stringhe di dati) rispetto agli accessi casuali tramite associazioni di indirizzo memoria-cache delle classiche cache.\n_START_SECTION_\nPage cache\n_START_PARAGRAPH_\nConsiste nell\'avere una parte della RAM usata dal sistema operativo in cui si copiano dall\'hard disk i dati correntemente in uso. In questo caso, l\'accesso alla RAM \xc3\xa8 pi\xc3\xb9 veloce dell\'accesso al disco. Poich\xc3\xa9 la memoria disponibile \xc3\xa8 generalmente limitata, il sistema operativo cerca di mantenere il pi\xc3\xb9 possibile in memoria una pagina, mantenendo una tabella delle pagine che non sono usate correntemente ma lo sono state in passato. Quando occorre caricare una pagina nuova, verr\xc3\xa0 sovrascritta la pi\xc3\xb9 vecchia non ancora in uso.\n_START_SECTION_\nDisk cache\n_START_PARAGRAPH_\nConsiste nell\'avere un hard disk che ha al suo interno una parte di RAM, dove possono venire caricati i settori del disco logicamente contigui a quello richiesto. Quando si accede in lettura al disco, nel caso i dati richiesti siano presenti nella cache si evita lo spostamento della testina di lettura del disco stesso, velocizzando il reperimento dell\'informazione e contribuendo al ridurre l\'usura del disco stesso.\n_START_SECTION_\nGoogle cache\n_START_PARAGRAPH_\nPi\xc3\xb9 propriamente cache dei motori di ricerca, consiste in copie delle pagine web salvate presso i server di un motore di ricerca. Queste vengono utilizzate per due motivi: eseguire ricerche locali all\'interno delle pagine ed offrire la possibilit\xc3\xa0 di vedere una copia, per quanto non aggiornata, di una pagina non disponibile, per problemi momentanei o perch\xc3\xa9 \xc3\xa8 stata rimossa dal server originale.\n_START_SECTION_\nBrowser cache\n_START_PARAGRAPH_\nI browser utilizzati su qualsiasi dispositivo conservano, oltre alla cronologia di navigazione, nomi utente e password inseriti, cookie e dati dei siti, informazioni di compilazione dei moduli, anche la cache. Questa \xc3\xa8 rappresentata dai contenuti oggetto di navigazione: file, immagini, testi, ecc. Questa cache \xc3\xa8 facilmente eliminabile sia cancellando, nelle cartelle dell\'utente, i singoli elementi, sia utilizzando i comandi del browser, sia impiegando i cosiddetti "pulitori"._NEWLINE_L\'esistenza di questa cache facilita e personalizza l\'esperienza di navigazione. Ovviamente, quando la si cancella, le pagine caricate "perdono" le precedenti memorizzazioni.'