Chyba stránky je druh hardwarové výjimky , která se vyskytuje v počítači s virtuální pamětí založenou na stránkování v době přístupu na stránku paměti, která není zahrnuta v adresovém prostoru procesu jednotkou správy paměti . Přístup na tuto stránku může být logicky platný, ale může vyžadovat, aby byla přidána do tabulky stránek a případně nahrána ze sekundárního úložiště ( pevného disku ) do RAM. Detekci chyb stránky zajišťuje hardware (jednotka správy paměti) a software, obvykle součást jádra operačního systému [1] . Během zpracování chyby stránky se operační systém pokusí umístit požadovanou stránku do hlavní paměti a zpřístupnit ji procesu nebo ukončí program v případě neplatného přístupu do paměti.
Navzdory názvu jsou selhání platné stránky normální součástí jakéhokoli operačního systému, který používá virtuální paměť, včetně systémů OpenVMS , Microsoft Windows a systémů podobných UNIX . Ve skutečnosti jsou to jednoduše signály, které potřebuje operační systém k přidělení paměti běžícím programům.
Selhání stránky, které se v systémech podobných Linuxu nazývá light ( eng. minor ) [2] , a ve Windows - software ( eng. soft ) [3] , znamená, že požadovaná stránka je buď již v RAM, ale není označena v blok správy paměti jako načtený, nebo je nově přidělen a nikdy nebyl použit. Ovladač výjimek v operačním systému potřebuje pouze přidat záznam do tabulky stránek pro požadovanou stránku a označit, že je načtena do paměti. Načtení stránky z disku není nutné. K selhání dochází v následujících případech [3] :
Vzhledem k tomu, že tyto chyby nepodléhají latenci přístupu k disku, jsou zpracovány rychleji než velké nebo hardwarové poruchy.
Selhání stránky , nazývané hlavní na systémech podobných Linuxu [ 2 ] a tvrdé na Windows [3] , je primárním mechanismem používaným operačním systémem k přidělování paměti programům na vyžádání. Operační systém zpožďuje načítání částí programu z disku, dokud se k nim program nepokusí získat přístup a tím vygeneruje chybu stránky. Pokud se stránka v době selhání nenačte do paměti, pak se selhání nazývá hlavní nebo hardwarové selhání. Obslužný program chyb stránky v operačním systému musí najít volné místo v paměti RAM: buď volnou stránku, nebo stránku zaneprázdněnou. Zaneprázdněná stránka může patřit jinému procesu. V tomto případě musí operační systém vyprázdnit data stránky na disk (pokud již nebyla odložena) a označit stránku v tabulce stránek procesu jako nedostatek paměti. Jakmile se uvolní místo, může operační systém načíst data pro novou stránku do paměti, přidat její fyzickou adresu do tabulky stránek původního procesu a označit stránku jako uloženou v paměti. Potřeba přístupu k disku činí řešení takovýchto selhání mnohem pomalejší ve srovnání se snadnými.
Pokud dojde k chybě stránky při přístupu na adresu, která nepatří do virtuálního adresního prostoru procesu, to znamená, že v paměti nemůže být stránka odpovídající této adrese, pak se tato chyba nazývá neplatná chyba stránky . Obslužná rutina chyb stránky operačního systému v tomto případě obvykle předá chybu segmentace původnímu procesu, což znamená, že byl přístup neplatný. To způsobí selhání bloku kódu, který provedl neplatné volání . Příkladem neplatné reference je dereference nulového ukazatele . Nulový ukazatel je ukazatel, který neodkazuje na žádný objekt. Obvykle je reprezentován jako ukazatel na adresu 0. Většina operačních systémů nezahrnuje stránku obsahující adresu nula v adresovém prostoru procesu, takže pokusy o čtení nebo zápis paměti pomocí nulového ukazatele vedou k selhání stránky.