"Levyn vahvistus" -ominaisuus on hyvä varmistamaan, että juuri poltettu levysi on hyvä, mutta kuinka se toimii? Tämän päivän SuperUser Q & A -viestillä on vastaus utelias lukijan kysymykseen.
Tämän päivän Kysymys- ja vastausistunto tulee meille SuperUser-yhteisöstään, joka on Stack Exchangen osasto.
Kuva: koboltti123 (Flickr) .
Kysymys
SuperUser-lukija user1301428 haluaa tietää, kuinka levyt tarkistetaan polttamisen jälkeen:
Mitä tarkistaa levyn polttaminen polttamisen jälkeen? Luulen, että se on jonkinlainen vertailu alkuperäisten tiedostojen ja levylle poltettujen tiedostojen välillä, mutta tietävätkö kukaan, miten se todella tapahtuu alhaisella tasolla?
Tarkoittaanko, luo se lähde- ja kohdesisällön hajautuksen, vertaa sitten niitä? Jos näin on, tallentaakö se poltetun sisällön hash-muistin RAM-muistiin? Vai tallentako se sen kiintolevyn väliaikaiseen tiedostoon? Onko olemassa lokitiedostoa siitä, mitä tapahtuu?
On vain utelias tietää tarkalleen, miten tämä ominaisuus toimii. Ja tarkoitan Windows Image Burneria.
Kuinka levyn vahvistusprosessi toimii?
Vastaus
SuperUser-kirjoittajilla Frank Thomasilla ja Synetechillä on vastaus meille. Ensin, Frank Thomas:
Tarkista nämä MSDN-sivut Windows-sovellusliittymässä IBurnVarmistus käyttöliittymä ja IMAPI_BURN_VERIFICATION_LEVEL enum.
Datalevyillä näyttää siltä, että pikatilassa se ei tarkista koko levyä, vain sektorivalikoimaa. Sen jälkeen se varmistaa, että sovellusliittymäkutsut READ_DISC_INFO ja READ_TRACK_INFO onnistuvat uutta levyä vastaan.
Täydellistä tarkistusta varten se suorittaa yllä olevat tarkistukset ja tekee sitten uuden levyn viimeisen istunnon täydellisen tarkistussumman muistivirtaan laskettuun tarkistussummaan nähden. Tarkistussummat on tallennettava ramiin, mutta ne ovat todennäköisesti lyhytaikaisia arvoja. Huomaa, että vertailu tapahtuu RAM-muistissa olevan levykuvan, ei itse lähdemateriaalin kanssa, joten jos lähdetietoja ei luettu oikein, ne kirjoitetaan väärin. Vahvistus ei havaitse tätä.
Musiikkilevyjen kohdalla se keskittyy READ_TRACK_INFO: n ja levyn sisällysluettelon tarkistamiseen, mutta ei tee tarkistussumman laskentaa. Musiikille ei ole täydellistä vahvistustilaa.
Synetechin vastaus seuraa:
Frank selitti hienosti Windows-kohtaisen vahvistuksen. Annan yleisemmän vastauksen.
- Mitä Levyn vahvistus polttamisen jälkeen todella tekee tietojen tarkistamiseksi?
- Tarkoittaanko, luo se lähde- ja kohdesisällön hajautuksen, vertaa sitten niitä? Jos näin on, tallentaakö se poltetun sisällön hash-muistin RAM-muistiin? Vai tallentako se sen kiintolevyn väliaikaiseen tiedostoon? Onko olemassa lokitiedostoa siitä, mitä tapahtuu?
Tämä on varmasti yksi tapa, jolla vertailu voidaan toteuttaa: hajauta yksi tiedosto (toivottavasti riittävän suurella - lue pieni törmäysalgoritmin mahdollisuus), toista toinen ja vertaa hajautuksia. Jos tarkistus toteutetaan näin, voit nähdä aseman LED-vilkkumisen hetkeksi ja sitten CD / DVD-LED-vilkkumisen hetkeksi.
Toinen tapa toteuttaa vahvistus on lukea yhden tiedoston lohko, sitten sama lohko toisesta tiedostosta, verrata niitä ja toistaa sitten, kunnes tiedoston loppu on saavutettu. Tässä tapauksessa näet kahden taajuusmuuttajan LEDit vuorotellen edestakaisin.
Tietysti, jos kiintolevyssä ja optisessa asemassa ei ole LED-merkkivaloja, se ei ole yhtä ilmeistä. Mutta voit silti nähdä sen jotain ProcessMonitorin kaltaista, koska se kirjaa sarjan lukuja yhdestä, sitten toisesta joko yhtenä, suurena sarjana tai vuorotellen pieninä purskeina.
- Luulen, että se on jonkinlainen vertailu alkuperäisten tiedostojen ja levylle poltettujen tiedostojen välillä, mutta tietävätkö kukaan, miten se todella tapahtuu alhaisella tasolla?
Itse asiassa kaikki, mitä se todella tekee, on huuhdella aseman välimuisti niin, että vertailutoiminto lukee tietoja todellisesta levystä muistivälimuistin sijaan. Tämä on tietysti kriittinen vaihe, koska jos vahvistus tehdään välimuistista, se ei edusta levyllä olevaa, joten korruptio voi helposti liukastua läpi.
Näet, tehdäänkö vertailu asemasta vai RAM-muistin välimuistista sen nopeuden mukaan. Jos teet manuaalisen yksinkertaisen vertailun (ts. WinDiff, WinMerge tai hajauttamalla ne hajautus työkalulla), huomaat, että vertailu tapahtuu paljon odotettua nopeammin, koska se lukee tiedostoja muistivälimuistista. Välimuisti on huuhdeltava pakottaaksesi se lukemaan todelliselta levyltä. Optisten asemien (ja muiden siirrettävien tietovälineiden, kuten flash-asemien ja muistikorttien), aseman yksinkertainen poistaminen riittää välimuistin tyhjentämiseen, mutta kiintolevyjen tapauksessa se ei ole läheskään yhtä yksinkertaista (vaikka yleensä sillä ei ole merkitystä, koska uusi kopio on se, jonka haluat testata).
Onko sinulla jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta teknisesti taitavilta Stack Exchangen käyttäjiltä? Katso koko keskusteluketju täältä .