13Aug
"Tarkista levy" -toiminto on hyvä varmistaa, että juuri poltettu levy on kunnossa, mutta miten se toimii? Tänään SuperUser Q & A -postilla on vastaus utelias lukijan kysymykseen.
Tämän päivän kysymys &Vastausistunto tulee meille kohteliaasti SuperUser-osastoon Stack Exchange, yhteisöllinen ryhmittely Q & A verkkosivuilla.
Photo courtesy of cobalt123( Flickr).
Kysymys
SuperUser-lukija user1301428 haluaa tietää, miten levyjä tarkistetaan, kun ne on poltettu:
Mitä tarkistaa levy polttamisen jälkeen tosiasiallisesti tarkistaa tiedot? Kuvittelen, että se on jonkinlainen vertailu alkuperäisten tiedostojen ja tiedostojen välillä, jotka on poltettu levylle, mutta ei kukaan tiedä, miten se todella tehdään alhaisella tasolla?
Tarkoitan, onko se luo lähde- ja kohdesisällön hash, sitten vertaa niitä?Jos on, tallentaa poltetun sisällön hash-muistin RAM-muistissa? Tai tallentaa sen väliaikaiseen tiedostoon kiintolevyltä?Onko lokitiedosto, mitä tapahtuu?
Vain utelias tietää tarkalleen, kuinka tämä ominaisuus toimii. Ja viittaan Windows Image Burner -ohjelmaan.
Miten levyn tarkistusprosessi toimii?
Vastaus
SuperUser-avustajat Frank Thomas ja Synetech ovat meille vastauksemme. Ensin ylös, Frank Thomas:
Katso nämä MSDN-sivut Windows API: ssä IBurnVerification-rajapinnalle ja IMAPI_BURN_VERIFICATION_LEVEL-arvolle.
Tietolevyille näyttää siltä, että pikakuvakkeella ei ole tarkistussummaa koko levyä, vain valikoima aloja. Sen jälkeen varmistetaan, että API kutsuu READ_DISC_INFO ja READ_TRACK_INFO onnistumaan uutta levyä vastaan.
Täydellistä tarkistusta varten se suorittaa yllä olevat tarkistukset ja tekee täyden tarkistussumman uudesta levyn viimeisestä istunnosta muistiin tallennetun tarkistussumman suhteen poltettuna. Tarkistussummat on tallennettava muistiin, mutta ne ovat todennäköisesti lyhytikäisiä arvoja. Huomaa, että vertailu on RAM-levyn kuvaa vastaan, ei itse lähdemediaa, joten jos lähdetiedot eivät ole lukeneet oikein, se kirjoitetaan väärin. Vahvistus ei tunnista tätä.
Musiikkilevyjen kohdalla se keskittyy tarkistamaan READ_TRACK_INFO ja levyjen sisällysluettelon, mutta ei suorita tarkistussummamääriä.Musiikin täydellistä vahvistustapaa ei ole.
Synetechin vastaus:
Frank selkeästi selitti Windows-spesifisen vahvistuksen. Annan yleisemman vastauksen.
- Mitä tarkistaa levylle polttamisen jälkeen tarkistaa tiedot?
- Tarkoitan, onko se luo lähde- ja kohdesisällön hash, sitten vertaa niitä?Jos on, tallentaa poltetun sisällön hash-muistin RAM-muistissa? Tai tallentaa sen väliaikaiseen tiedostoon kiintolevyltä?Onko lokitiedosto, mitä tapahtuu?
Tämä on varmasti yksi tapa vertailu voidaan toteuttaa: hash yksi tiedosto( toivottavasti riittävän suurella lukemalla matala mahdollisuudet törmäys algoritmi), toista toiselle ja vertailla hash. Jos näin varmistetaan, voit nähdä aseman LED-salaman hetkeksi ja sitten CD / DVD-LED vilkkua jonkin aikaa.
Toinen tapa toteuttaa tarkastus on lukea yhden tiedoston lohko, sitten sama lohko toisesta tiedostosta, verrata niitä ja toistaa, kunnes tiedoston loppu on saavutettu. Tässä tapauksessa näet kahden taajuusmuuttajan LEDit vuorotellen edestakaisin.
Tietenkin, jos kiintolevyllä ja optisella asemalla ei ole LED-valoja, niin se ei ole yhtä ilmeinen. Mutta voit silti nähdä sen prosessin muistilla, koska se kirjaa sarjan lukuja yhdestä, sitten toisesta joko yhdestä suuresta purskeesta tai vaihtuvista pienistä purskeista.
- Kuvittelen, että se on jonkinlainen vertailu alkuperäisten tiedostojen ja levyjen kanssa poltettujen tiedostojen välillä, mutta onko kukaan tiedä, miten se todella tehdään alhaisella tasolla?
Itse asiassa vain todella on huuhdella ajaa välimuisti niin, että vertailutoiminto lukee tiedot varsinaisesta levystä eikä muistikeskuksesta. On selvää, että tämä on kriittinen askel, koska jos tarkistus suoritetaan välimuistista, se ei tarkoita, mitä levyllä on, joten korruptio voi helposti siirtyä.
Voit tarkistaa, suoritetaanko vertailu taajuusmuuttajasta tai RAM-muistin välimuistista sen mukaan, kuinka nopeasti se tapahtuu. Jos manuaalisesti tehdään yksinkertainen vertailu( WinDiff, WinMerge tai hajauttamalla ne hajautustyökalulla), huomaat, että vertailu tapahtuu paljon odotettua nopeammin, koska se lukee tiedostot muistikeskuksesta. Sinun on huuhdeltava välimuisti, jotta se pakotetaan lukemaan itse levystä.Jos optiset asemat( ja muut siirrettävät tietovälineet, kuten flash-asemat ja muistikortit), yksinkertaisesti poistaminen asemasta riittää huuhtelemaan välimuistia, mutta kiintolevyille se ei ole läheskään niin yksinkertainen( vaikka yleensä sillä ei ole väliä, koskauusi kopio on se, jonka haluat testata).
Onko jotain lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä?Katso koko keskusteluketju täältä.