13Aug
Caracteristica "Verificați discul" este excelentă pentru a vă asigura că discul proaspăt ars bine, dar cum funcționează exact? Postul SuperUser Q & A de astăzi are răspunsul la o întrebare curioasă a cititorului.
Întrebarea de astăzi &Sesiunea de răspuns vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor web Q & A.
Fotografie de curtoazie a cobalt123( Flickr).
Întrebare Întrebarea
cititorul de utilizatori SuperUser1301428 dorește să știe cum sunt verificate discurile după ce sunt arse:
Ce verifică 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 într-adevăr la un nivel scăzut?
Adică, nu creează un hash al conținutului sursă și al destinației, apoi le compară?Dacă da, stochează conținutul ars din RAM?Sau o salvează într-un fișier temporar de pe hard disk? Există un fișier de jurnal pentru ceea ce se întâmplă?
Doar curios să știu exact cum funcționează această funcție.Și mă refer la Windows Image Burner.
Cum funcționează procesul de verificare a discurilor?
Raspunsul
Contribuitori SuperUser Frank Thomas si Synetech au raspunsul pentru noi.În primul rând, Frank Thomas:
Verificați aceste pagini MSDN pe ferestrele API pentru interfața IBurnVerification și enumul IMAPI_BURN_VERIFICATION_LEVEL.
Pentru discurile de date, se pare că în modul rapid nu se controlează întregul disc, doar o selecție de sectoare. Apoi asigură faptul că API-ul solicită READ_DISC_INFO și READ_TRACK_INFO să reușească împotriva noului disc.
Pentru verificarea completă, efectuează verificările de mai sus, apoi efectuează o sumă completă de verificare a ultimei sesiuni de pe noul disc față de o sumă de control calculată pe fluxul de memorie care este ars. Sumele de control trebuie să fie stocate în ram, dar sunt probabil valori scurte. Rețineți că comparația este împotriva imaginii discului în memoria RAM, nu a mediului în sine, deci dacă datele sursă nu au citit corect, acesta va fi scris în mod incorect. Verificarea nu va detecta acest lucru.
Pentru discurile muzicale, se concentrează pe verificarea READ_TRACK_INFO și a discului de conținut disc, dar nu efectuează un calcul al sumelor de control. Nu există niciun mod complet de verificare pentru muzică.
Urmat de răspunsul de la Synetech:
Frank a explicat frumos verificarea specifică Windows-ului. Voi da un răspuns mai general.
- Ce face Verifică discul după ardere, de fapt, pentru a verifica datele?
- Adică, nu creează un hash al conținutului sursă și al destinației, apoi le compară?Dacă da, stochează conținutul ars din RAM?Sau o salvează într-un fișier temporar de pe hard disk? Există un fișier de jurnal pentru ceea ce se întâmplă?
Asta este cu siguranță o modalitate de a realiza o comparație: să ștergi un fișier( sperăm cu o șansă mică de citire suficient de mare pentru algoritmul de coliziune), să repeți pentru cealaltă și să compară hashes. Dacă aceasta este modul în care este implementată o verificare, atunci veți putea vedea blițul cu LED-uri pentru o vreme, apoi LED-ul CD / DVD-ului clipește o clipă.
O altă modalitate de a implementa verificarea este citirea unui bloc dintr-un fișier, apoi același bloc din celălalt fișier, compararea acestora, apoi repetarea până 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ă unitatea hard disk și unitatea optică nu au LED-uri, atunci nu va fi așa de evidentă.Dar puteți să-l vedeți încă cu ceva asemănător cu ProcessMonitor, deoarece va înregistra o serie de citiri de la unul la altul, apoi de la celălalt, fie într-o explozie unică, mare sau alternativ, mici.
- Î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 ceea ce face cu adevărat este să ștergeți cache-ul unității, astfel încât funcția de comparație să citească datele de pe discul actual în loc de memoria cache-ului de memorie. Evident, aceasta este o etapă critică deoarece, dacă verificarea se face din cache, atunci nu reprezintă ceea ce este de fapt pe disc, astfel încât corupția poate ușor să alunece.
Puteți vedea dacă o comparație se face de la unitate sau din memoria cache în memoria RAM cu cât de rapid se produce. Dacă faceți manual o simplă comparație( adică cu WinDiff, WinMerge sau prin hashing-ul acestora cu un instrument hashing), veți observa că comparația se întâmplă mult mai repede decât se aștepta, deoarece citește fișierele din cache-ul de memorie. Trebuie să spălați memoria cache pentru al forța să citească de pe discul real. Pentru unitățile optice( și alte medii amovibile cum ar fi unități flash și carduri de memorie), pur și simplu scoaterea unității este suficientă pentru a spăla memoria cache, dar pentru hard-discuri, nu este aproape la fel de simplă( deși, de obicei,copia nouă este cea pe care doriți să o testați).
Trebuie să adăugați ceva la explicație? Sunați în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.