PDA

View Full Version : Checksum + cache per file identici


Thomas76
07-09-2012, 17:03
Ciao,

Avrei alcune domande...

1) Mi pare che gli hard disk, durante la scrittura dei dati, aggiungono per ogni settore scritto un ECC ("error correcting code"). Dovrebbe essere utilizzato per ovviare alla corruzione dei dati. Sapete se esiste qualcosa del genere, un qualche checksum, che sia però a livello di file intero? Quindi non un codice per ogni settore, ma un solo codice per il singolo file. Si tratta di una caratteristica presente negli hard disk?

2) Mi pare che gli hard disk, e forse Windows, implementano un sistema di cache a livello di file. Se ho capito bene se un file viene aperto, e/o (?) viene utilizzato spesso, esso rimane memorizzato (forse parzialmente per questioni di capacità) in una memoria cache, che essendo più performante dell'hard disk, velocizzerebbe gli accessi ai dati utilizzati di frequente. O qualcosa del genere.
Mi chiedevo se oltre a questo tipo di cache, esiste anche una cache (implementata dagli hard disk o da Windows) che agisce in modo simile, ma anche per stessi file in percorsi differenti.
In pratica, se esistesse qualcosa del genere, se io apro un file in una cartella, e poi apro un identico file che però si trova in un'altra cartella, il secondo file verrebbe letto dalla cache in cui è stato memorizzato il file precedente, perchè verrebbe riconosciuto come identico dal firmware dell'hard disk oppure da Windows. Per effettuare il riconoscimento potrebbe venire utilizzato un sistema di checksum di cui ho scritto sopra nel punto 1.

Ho già chiesto altrove, ed ho fatto alcune ricerche... probabilmente nè il punto 1, nè il punto 2 sono veri, ma ho preferito chiedere per sicurezza. Se fossero veri credo che potrebbero esserci problemi, nel caso si volessero comparare due file (tramite appositi programmi), per determinare se uno di essi ha subito una corruzione; uno dei due verrebbe letto dalla cache, quindi potrebbe risultare identico anche se sul disco uno dei due presenta dei cambiamenti/corruzioni (tutto questo solo se in concomitanza alla corruzione, il checksum assegnato al file rimane invariato, perchè non viene ri-calcolato). Ma probabilmente è solo un gioco di fantasia!

Grazie,

Thomas

alecomputer
09-09-2012, 10:38
1) Non risulta neppure a me che il disco fisso memorizzi un checksum per ogni singolo file .

2) Windows gia dalla versione di windows xp utilizza un sistema chiamato prefetcher , che poi e diventato SuperFetch di vista e seven , che fa appunto quello che dici tu , memorizza i file piu utilizzati su una memoria chache e poi li utilizza senza accedere al disco fisso .
Sempre su vista e seven e possibile utilizzare anche la funzione ReadyBoost , che fa la stessa cosa , ma utilizza una pendrive o un disco fisso veloce ssd .

Oltre a questo se utilizzi la funzione copia/ incolla di windows per spostare un file , lo stesso file rimane spesso memorizzato sulla ram . Se in seguito fai un altro copia/incolla vedrai che il file viene copiato direttamente dalla ram , e non dal disco fisso .

Thomas76
09-09-2012, 11:37
Ti risulta che le funzioni di cui hai scritto (Prefetcher, Superfetch, Readyboost) riconoscano se due file, in diversi percorsi, sono identici? E che quindi di conseguenza utilizzino gli stessi dati presenti in cache, per entrambi i file?

Intendo dire che succederebe questo:
1) Uno dei due file identici viene aperto... e viene letto dall'hard disk;
2) I suoi contenuti rimangono in cache;
3) Il secondo file identico viene aperto... e viene letto dalla cache (quindi vengono letti i contenuti precedentemente memorizzati in cache del primo file).

Se è vero che l'hard disk (e Windows) non memorizzano un checksum per ogni singolo file (nella sua interezza), credo che quanto ho scritto qui sopra sia improbabile. Come farebbe Windows a sapere che si tratta dello stesso file? Dovrebbe avere i checksum di entrambi i file. Non credo che Windows calcoli un checksum ogni volta che un file viene aperto. E non ho mai sentito che Windows abbia un qualche registro dove memorizza i checksum di tutti i file che apre (o sbaglio?).
Che ne dici/dite?

alecomputer
09-09-2012, 17:30
Ti risulta che le funzioni di cui hai scritto (Prefetcher, Superfetch, Readyboost) riconoscano se due file, in diversi percorsi, sono identici?

No non mi risulta , ogni file dovrebbe essere memorizzato in modo separato senza nessun controllo . Anche se hanno un nome identico , ma il percorso e diverso , ogni file e trattato in modo separato .
Non risulta neppure a me che esista un registro checksum per ogni file .

Thomas76
12-01-2013, 14:30
Ciao,
Vorrei un aggiornamento.
Quanto scritto da Alecomputer nel post precedente (del 09-09-2012 17:30), dovrebbe valere anche per Windows 8 (qualsiasi versione: Pro o altro, 32bit o 64bit)?
Quindi due file identici, ma in diversi percorsi sul disco (che sia lo stesso disco, o un altro, o un'altra partizione), se aperti di seguito, verranno letti entrambi interamente dal disco? E non invece il primo dal disco, ed il secondo dall'ipotetica cache di lettura?
Grazie.

alecomputer
12-01-2013, 17:26
Windows 8 ha una nuova gestione della memoria , diversa anche da quella di windows 7 . Non ho potuto verificare la cosa con windows 8 , ma almeno in teoria dovrebbe comportarsi come gli altri sistemi operativi e leggere entrambi i file da disco .