A „lemez ellenőrzése” funkció kiválóan alkalmas annak biztosítására, hogy a frissen megírt lemez jól működjön, de hogyan működik pontosan? A mai SuperUser Q & A bejegyzés megválaszolja az olvasó kíváncsi kérdését.
A mai Kérdések és válaszok ülés a SuperUser jóvoltából érkezik hozzánk - a Stack Exchange alosztályához, amely a Q & A webhelyek közösségvezérelt csoportosulása.
Fotó jóvoltából kobalt123 (Flickr) .
A kérdés
A SuperUser Reader1301428 olvasó tudni akarja, hogyan ellenőrzik a lemezeket az égés után:
Mit csinál a lemez ellenőrzése az írás után az adatok ellenőrzéséhez? Úgy képzelem, hogy ez valamiféle összehasonlítás az eredeti fájlok és a lemezen égetett fájlok között, de bárki tudja, hogy valósul meg valójában alacsony szinten?
Úgy értem, létrehoz egy kivonatot a forrás és a céltartalomról, majd összehasonlítja őket? Ha igen, tárolja-e az égetett tartalom kivonatát a RAM-ban? Vagy egy ideiglenes fájlba menti a merevlemezre? Van naplófájl arról, hogy mi történik?
Csak kíváncsi, hogy pontosan hogyan működik ez a funkció. És a Windows Image Burner-re gondolok.
Hogyan működik a lemezellenőrzési folyamat?
A válasz
Frank Thomas és a Synetech, a SuperUser közreműködői megtalálják a választ számunkra. Először Frank Thomas:
Nézze meg ezeket az MSDN oldalakat a Windows API-n a IBurnVerification interfész és a IMAPI_BURN_VERIFICATION_LEVEL enum.
Adatlemezek esetében úgy tűnik, hogy gyors módban nem ellenőrzi az egész lemezt, csak egy szektor kiválasztását. Ezután megbizonyosodik arról, hogy az API hívások READ_DISC_INFO és READ_TRACK_INFO sikeresek-e az új lemezzel szemben.
A teljes ellenőrzés érdekében elvégzi a fenti ellenőrzéseket, majd teljes ellenőrző összeget hajt végre az új lemez utolsó munkamenetén az égetett memóriafolyamon kiszámított ellenőrző összeggel szemben. Az ellenőrző összegeket ram-ban kell tárolni, de ezek valószínűleg rövid életű értékek. Ne feledje, hogy az összehasonlítás a RAM lemezen lévő lemezképpel, nem magával a forrás adathordozóval történik, tehát ha a forrásadatokat nem olvasták helyesen, akkor azokat helytelenül írják. Az ellenőrzés ezt nem fogja észlelni.
Zenei lemezek esetében a READ_TRACK_INFO és a lemez tartalomjegyzékének ellenőrzésére összpontosít, de nem végez ellenőrző összeg-számítást. A zenéhez nincs teljes ellenőrzési mód.
A Synetech válasza következik:
Frank szépen elmagyarázta a Windows-specifikus ellenőrzést. Általánosabb választ adok.
- Mit tesz a lemez ellenőrzése az írás után az adatok ellenőrzéséhez?
- Úgy értem, létrehoz egy kivonatot a forrás és a céltartalomról, majd összehasonlítja őket? Ha igen, tárolja-e az égetett tartalom kivonatát a RAM-ban? Vagy egy ideiglenes fájlba menti a merevlemezre? Van naplófájl arról, hogy mi történik?
Ez minden bizonnyal az összehasonlítás megvalósításának egyik módja: az egyik fájl kivonása (remélhetőleg kellően nagy - olvassa el az ütközési algoritmus alacsony esélyét), a másik megismétlése és a kivonatok összehasonlítása. Ha így hajtják végre az ellenőrzést, akkor egy ideig láthatja a meghajtó LED villanását, majd egy ideig a CD / DVD-LED villogását.
Az ellenőrzés megvalósításának másik módja az, ha elolvassa az egyik fájl blokkját, majd ugyanazt a blokkot a másik fájlból, összehasonlítja őket, majd ismételje meg, amíg a fájl vége el nem ér. Ebben az esetben a két meghajtó LED-je előre-hátra váltakozik.
Természetesen, ha a merevlemezen és az optikai meghajtón nincs LED, akkor az nem lesz annyira nyilvánvaló. De még mindig láthatja valami hasonlóval, mint a ProcessMonitor, mert az egyik, majd a másik olvasássorozatát naplózza, egyetlen, nagy sorozatban vagy váltakozva, kis sorozatban.
- Úgy képzelem, hogy ez valamiféle összehasonlítás az eredeti fájlok és a lemezen égetett fájlok között, de bárki tudja, hogy valósul meg valójában alacsony szinten?
Valójában csak annyit tesz, hogy kiüríti a meghajtó gyorsítótárát, hogy az összehasonlító funkció az aktuális lemezről olvassa az adatokat, a memória gyorsítótár helyett. Nyilvánvaló, hogy ez egy kritikus lépés, mert ha az ellenőrzést gyorsítótárból végzik, akkor az nem azt jelenti, ami valójában a lemezen van, így a korrupció könnyen átcsúszhat.
Láthatja, hogy az összehasonlítás a meghajtóról vagy a RAM gyorsítótárából történik-e az ütemezés sebességével. Ha manuálisan végez egy egyszerű összehasonlítást (azaz a WinDiff, a WinMerge használatával, vagy egy hash eszközzel való hasítással), akkor észreveszi, hogy az összehasonlítás a vártnál sokkal gyorsabban történik, mert a fájlokat a memória gyorsítótárából olvassa. Le kell öblítenie a gyorsítótárat, hogy a tényleges lemezről olvasható legyen. Az optikai meghajtók (és más cserélhető adathordozók, például a flash meghajtók és a memóriakártyák) esetében a gyorsítótár kiürítéséhez elegendő a meghajtó egyszerű kiadása, a merevlemezek esetében azonban ez korántsem olyan egyszerű (bár általában ez nem számít, mert a az új példányt szeretné tesztelni).
Van valami hozzáfűzhető a magyarázathoz? Hang a kommentekben. Szeretne további válaszokat olvasni más, hozzáértő Stack Exchange-felhasználóktól? Nézze meg a teljes vitafonalat itt .