Aktualizace: 8.11.2008
Autor: Michal "Mitch" Pavlík
Enhanced Crash Support
Může se stát, že špatně napsaný ovladač, chyba hardwaru nebo systému způsobí v kernel-mode vrstvě chybu, ze které se bez resetu
systém nezotaví. V takovém případě systém zastaví činnost, zobrazí známou modrou obazovku smrti (BSOD) a vypíše obsah paměti
na disk do speciálního souboru. Tyto soubory jsou užitečné, protože po restartu může služba Microsoft Online Crash Analysis
(OCA) analyzovat příčinu pádu systému. Nebo jej může uživatel analyzovat sám pomocí
Microsoft Debugging Tools for Windows.
Nicméně v předchozích verzích Windows nebylo možné vypsat obsah paměti, dokud Session Manager (%Systemroot%\System32\Smss.exe)
neinicializoval stránkovací soubory. To znamená, že pokud chyba nastala dříve, obsah paměti se nevypsal a analýza byla mnohem
obtížnější.
Windows Vista zavádí podporu výpisu paměti hned po inicializaci ovladačů potřebných k nabootování a to je ještě před načtením
ovladačů pro samotný systém. Zkrátí se tak doba, po kterou může vzniknout chyba bez možnosti výpisu obsahu paměti. Vista navíc
neukládá paměť po 4KB blocích jako v předchozích systémech, ale po 64KB což zrychlí samotný výpis více než 10x.
Vylepšené je i chování při pádu aplikace. Dříve když spadla aplikace, byla spuštěna chybová rutina, která dále spustila Microsoft
Application Error Reporting (AER, %Systemroot%\System32\Dwwin.exe) a zobrazil se dialog s informací, že došlo k chybě a zeptal se,
zda chcete poslat zprávu o chybě Microsoftu. Pokud byl ale během chyby poškozen zásobník hlavního threadu procesu, chybová rutina
selhala, kernel proces ukončil a žádný dialog se nezobrazil.
Windows Vista přesunula obsluhu chyby mimo kontext havarovaného procesu do služby s názvem Windows Error Reporting (WER). Tato služba
je implementována jako knihovna (%Systemroot%\System32\Wersvc.dll) a běží pod Service Host. Když spadne aplikace ve Windows Vista,
vykoná se opět chybová rutina, která ale pošle zprávu službě WER. WER následně spustí proces WER Fault Reporting
(%Systemroot%\System32\Werfault.exe), který zobrazí dialog se zprávou o chybě. Pokud je poškozen zásobník, selže chybová rutina,
spustí se znovu a zase selže, nakonec se ale dostane na konec zásobníku a kernel pošle zprávu službě.
Na obrázcích 1 (Windows XP) a 2 (Windows Vista) můžete vidět vztah mezi havarovanou aplikací Accvivo.exe a procesem hlásícím chybu,
oba zvýrazněny zeleně. Nová architektura zajistí, aby vždy existovala možnost získat informace o chybě a pomoct tak vývojářům s její
opravou.
Obrázek 1 - Obsluha chyby ve Windows XP
Obrázek 2 - Obsluha chyby ve Windows Vista
Volume Shadow Copy
S Windows XP přišla technologie Volume Shadow Copy, která má za úkol v určitých časových intervalech vytvářet obraz disku. Využít je
mohou například zálohovací aplikace ke kompletní záloze. Tyto obrazy jsou skryté a udržované jen po dobu zálohování.
Obrazy nejsou plnou kopií disku, ale obsahují jen sektory změněné od posledního vytvoření obrazu. Ovladač Volume Snapshot Provider
(%Systemroot%\System32\Drivers\Volsnap.sys) monitoruje diskové operace a pokud zjistí, že má dojít ke změně sektoru, tak ho zálohuje
do adresáře System Volume Information.
Windows Server 2003 umožnil spravovat obrazy administrátorům na serveru a uživatelům klientských stanic pomocí Shadow Copies for
Shared Folders. Tato vlastnost také umožňovala vytvořit trvalé obrazy, ke kterým mohl uživatel přistupovat přes záložku Previous Versions
(Předchozí verze) umístěnou v dialogu Properties (Vlastnosti) souborů a složek sdílených na serveru.
Windows Vista přináší podporu Previous Versions všem klientským systémům. Obrazy jsou tvořeny automaticky jednou denně a uživatelské
rozhraní se nachází v dialogu Properties stejně jako u Shadow Copies for Shared Folders. Můžete si nechat zobrazit, obnovit nebo
kopírovat staré verze souborů a složek které byly změněny nebo smazány. V podstatě nejsou Previous Versions novou technologií, ale
optimalizované Volume Shadow Copy pro klientské prostředí.
Windows Vista také používají diskové obrazy ke sjednocení mechanismu ochrany uživatelských a systémových dat. Tím předchází zbytečnému
zdvojování záloh. Když například aplikace nějakým zásahem do systému způsobí jeho nestabilitu, můžete použít System Restore (Obnovení
systému), který obnoví systémové soubory/nastavení a vrátí systém do původního stavu (pokud byl ovšem vytvořen restore point - bod
obnovení).
System Restore ve Windows XP používá ovladač souborového systému, který sleduje systémové soubory a v případě jejich změny zálohuje původní
verze. System Restore ve Windows Vista využívají obrazy disků. Pokud tedy použijete obnovení systému ve Vistách, zkopírují se starší
verze systémových souborů z obrazu na příslušném disku.
Mitch