Funcția „Verificare disc” este excelentă pentru a vă asigura că discul dvs. proaspăt ars a ieșit bine, dar cum funcționează exact? Postarea de astăzi a SuperUser Q&A are răspunsul la întrebarea unui cititor curios.
Sesiunea de Întrebări și Răspunsuri de astăzi ne vine prin amabilitatea SuperUser - o subdiviziune a Stack Exchange, un grup de site-uri web de întrebări și răspunsuri bazat pe comunitate.
Fotografie oferită de cobalt123 (Flickr) .
Intrebarea
Cititorul SuperUser user1301428 vrea să știe cum sunt verificate discurile după ce sunt arse:
Ce face de fapt verificarea discului după ardere pentru a verifica datele? Îmi imaginez că este un fel de comparație între fișierele originale și fișierele care au fost arse pe disc, dar știe cineva cum se face cu adevărat la un nivel scăzut?
Adică creează un hash al conținutului sursă și destinație, apoi le compară? Dacă da, stochează hash-ul conținutului ars în RAM? Sau îl salvează într-un fișier temporar de pe hard disk? Există un fișier jurnal cu ceea ce se întâmplă?
Sunt curios să știu exact cum funcționează această caracteristică. Și mă refer la Windows Image Burner.
Cum funcționează procesul de verificare a discului?
Răspunsul
Contribuitorii SuperUser Frank Thomas și Synetech au răspunsul pentru noi. În primul rând, Frank Thomas:
Consultați aceste pagini MSDN din API-ul Windows pentru IBurnVerification interfață și IMAPI_BURN_VERIFICATION_LEVEL enum.
Pentru discurile de date, se pare că în modul rapid nu face suma totală a discului, ci doar o selecție de sectoare. Apoi se asigură că apelurile API READ_DISC_INFO și READ_TRACK_INFO reușesc pe noul disc.
Pentru verificarea completă, efectuează verificările de mai sus, apoi efectuează o sumă de verificare completă la ultima sesiune de pe noul disc cu o sumă de verificare calculată pe fluxul de memorie ars. Sumele de verificare trebuie să fie stocate în ram, dar sunt probabil valori de scurtă durată. Rețineți că comparația este față de imaginea discului din RAM, nu de sursa media în sine, deci dacă datele sursă nu au fost citite corect, vor fi scrise incorect. Verificarea nu va detecta acest lucru.
Pentru discurile muzicale, se concentrează pe verificarea READ_TRACK_INFO și a cuprinsului discului, dar nu efectuează un calcul al sumelor de verificare. Nu există un mod de verificare completă pentru muzică.
Urmat de răspunsul de la Synetech:
Frank a explicat frumos verificarea specifică Windows. Voi da un răspuns mai general.
- Ce face Verify disc după ardere pentru a verifica datele?
- Adică creează un hash al conținutului sursă și destinație, apoi le compară? Dacă da, stochează hash-ul conținutului ars în RAM? Sau îl salvează într-un fișier temporar de pe hard disk? Există un fișier jurnal cu ceea ce se întâmplă?
Acesta este cu siguranță o modalitate prin care poate fi implementată o comparație: hash un fișier (sperăm cu un algoritm suficient de mare - citește șansa mică de coliziune), repetați pentru celălalt și comparați hashuri. Dacă așa este implementată o verificare, atunci veți putea vedea blițul cu LED-uri pentru un timp, apoi blițul cu CD / DVD-LED pentru o vreme.
O altă modalitate de a implementa verificarea este să citiți un bloc al unui fișier, apoi același bloc din celălalt fișier, să le comparați, apoi să repetați până când se ajunge la sfârșitul fișierului. În acest caz, veți vedea LED-urile celor două unități alternând înainte și înapoi.
Desigur, dacă hard disk-ul și unitatea optică nu au LED-uri, atunci nu va fi la fel de evident. Dar îl puteți vedea în continuare cu ceva de genul ProcessMonitor, deoarece va înregistra o serie de citiri de la una, apoi la cealaltă, fie într-o singură rafală mare, fie în rafale mici alternante.
- Îmi imaginez că este un fel de comparație între fișierele originale și fișierele care au fost arse pe disc, dar știe cineva cum se face cu adevărat la un nivel scăzut?
De fapt, tot ce face cu adevărat este să spele memoria cache a unității, astfel încât funcția de comparație să citească datele de pe discul real în loc de memoria cache. Evident, acesta este un pas critic, deoarece dacă verificarea se face din cache, atunci nu reprezintă ceea ce este de fapt pe disc, astfel încât corupția poate trece cu ușurință.
Puteți vedea dacă o comparație se face de pe unitatea de stocare sau din memoria cache, în funcție de cât de repede se produce. Dacă faceți manual o comparație simplă (de exemplu, cu WinDiff, WinMerge sau prin hashing-le cu un instrument de hashing), veți observa că comparația se întâmplă mult mai repede decât se aștepta, deoarece citește fișierele din memoria cache. Trebuie să spălați memoria cache pentru a o forța să citească de pe discul real. Pentru unitățile optice (și alte suporturi amovibile, cum ar fi unitățile flash și cardurile de memorie), pur și simplu scoaterea unității este suficientă pentru a spăla memoria cache, dar pentru unitățile hard disk, nu este la fel de simplă (deși, de obicei, asta nu contează copia nouă este cea pe care doriți să o testați).
Aveți ceva de adăugat la explicație? Sună în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori ai Stack Exchange? Consultați aici firul complet de discuție .