Chyba stránky - Page fault

V oblasti výpočetní techniky je chyba stránky (někdy nazývaná PF nebo tvrdá chyba ) výjimkou, kterou jednotka správy paměti (MMU) vyvolá, když proces přistupuje na stránku paměti bez řádných příprav. Přístup na stránku vyžaduje přidání mapování do virtuálního adresového prostoru procesu . Kromě toho může být nutné načíst skutečný obsah stránky ze záložního úložiště, například z disku . MMU detekuje poruchu stránky, ale jádro operačního systému řeší výjimku tak, že zpřístupní požadovanou stránku ve fyzické paměti nebo odepře nelegální přístup do paměti.

Platné chyby stránky jsou běžné a jsou nutné ke zvýšení množství paměti dostupné programům v jakémkoli operačním systému, který využívá virtuální paměť , jako jsou Windows , macOS a jádro Linuxu .

Typy

Méně důležitý

Pokud je stránka načtena do paměti v době, kdy je generována chyba, ale není označena v jednotce pro správu paměti jako načítaná do paměti, pak se tomu říká drobná nebo měkká chyba stránky. Obslužná rutina chyb stránky v operačním systému pouze potřebuje, aby položka pro tuto stránku v jednotce pro správu paměti směřovala na stránku v paměti a indikovala, že je stránka načtena do paměti; nepotřebuje číst stránku do paměti. K tomu může dojít, pokud je paměť sdílena různými programy a stránka je již přenesena do paměti pro jiné programy.

Stránka mohla být také odebrána z pracovní sady procesu, ale ještě nebyla zapsána na disk nebo vymazána, například v operačních systémech, které používají ukládání do mezipaměti sekundární stránky. Například HP OpenVMS může odebrat stránku, kterou není třeba zapisovat na disk (pokud například zůstala nezměněna od posledního načtení z disku), a umístit ji do seznamu bezplatných stránek, pokud je považována za pracovní sadu také velký. Obsah stránky však nebude přepsán, dokud nebude stránka přiřazena jinam, což znamená, že je stále k dispozici, pokud na ni původní proces před přidělením odkazuje. Protože tyto chyby nezahrnují latenci disku, jsou rychlejší a levnější než hlavní chyby stránek.

Hlavní, důležitý

Toto je mechanismus používaný operačním systémem ke zvýšení množství paměti programu dostupné na vyžádání. Operační systém zpomaluje načítání částí programu z disku, dokud se ho program nepokouší použít a nevygeneruje se chyba stránky. Pokud se stránka v době chyby nenačte do paměti, pak se tomu říká závažná nebo tvrdá chyba stránky. Obsluha chyb stránky v operačním systému potřebuje najít volné místo: buď volnou stránku v paměti, nebo nesvobodnou stránku v paměti. Ten druhý může být použit jiným procesem, v takovém případě OS potřebuje vypsat data na dané stránce (pokud nebyla zapsána od poslední úpravy) a označit tuto stránku jako nenačtenou v paměti v jejím procesu tabulka stránek . Jakmile je místo k dispozici, OS může přečíst data pro novou stránku do paměti, přidat položku na její umístění v jednotce pro správu paměti a indikovat, že stránka je načtena. Hlavní chyby jsou tedy dražší než drobné a přidávají k provádění přerušeného programu latenci přístupu k úložišti.

Neplatný

Pokud dojde k chybě stránky u odkazu na adresu, která není součástí virtuálního adresního prostoru , což znamená, že v paměti nemůže být stránka, která by jí odpovídala, pak se tomu říká neplatnost stránky. Obslužná rutina chyby stránky v operačním systému pak obecně přenese chybu segmentace do procesu, který porušuje pravidla, což naznačuje, že přístup byl neplatný; obvykle to má za následek abnormální ukončení kódu, který vytvořil neplatný odkaz. Nulový ukazatel je obvykle reprezentován jako ukazatel na adresu 0 v adresovém prostoru; mnoho operačních systémů nastavilo MMU tak, aby indikovalo, že stránka obsahující tuto adresu není v paměti, a nezahrnovaly tuto stránku do virtuálního adresního prostoru, takže pokusy o čtení nebo zápis paměti odkazované nulovým ukazatelem dostaly neplatný chyba stránky.

Neplatné podmínky

Nelegální přístupy a neplatné stránky mohou mít za následek chybu segmentace nebo chybu sběrnice , což má za následek pád aplikace nebo operačního systému . Příčinou těchto problémů jsou často softwarové chyby , ale chyby hardwarové paměti, například chyby způsobené přetaktováním , mohou poškodit ukazatele a způsobit selhání zdravých kódů.

Operační systémy poskytují různé mechanismy pro hlášení chyb na stránce. Microsoft Windows používá zpracování strukturovaných výjimek k hlášení neplatných chyb stránek jako výjimky narušení přístupu . Systémy podobné systému UNIX obvykle používají signály , například SIGSEGV , k hlášení těchto chybových stavů programům. Pokud program přijímající chybu nezpracuje, operační systém provede výchozí akci, která obvykle zahrnuje ukončení spuštěného procesu, který způsobil chybový stav, a upozorní uživatele, že program selhal. Windows často hlásí takové pády, aniž by přešel na jakékoli podrobnosti. Zkušený uživatel může načíst podrobné informace pomocí WinDbg a minidumpu, který Windows vytvoří během havárie. Operační systémy podobné operačnímu systému UNIX hlásí tyto podmínky s takovými chybovými zprávami jako „narušení segmentace“ nebo „chyba sběrnice“ a může způsobit základní výpis stavu paměti .

Dopad na výkon

Chyby stránky snižují výkon systému a mohou způsobit vymlácení . Významné chyby stránek na konvenčních počítačích využívajících jednotky pevného disku mohou mít významný dopad na jejich výkon, protože průměrný pevný disk má průměrnou latenci otáčení 3 ms, dobu hledání 5 ms a dobu přenosu 0,05 ms/stránku . Celkový čas pro stránkování je tedy blízko 8 ms (= 8 000 μs). Pokud je doba přístupu do paměti 0,2 μs, pak by chyba stránky způsobila operaci asi 40 000krát pomaleji.

Výkon optimalizace programů nebo operačních systémů často zahrnuje snížení počtu výpadků stránek. Dvě hlavní oblasti optimalizace jsou snížení celkového využití paměti a zlepšení lokality paměti . Aby se snížily chyby na stránce, musí vývojáři použít vhodný algoritmus nahrazení stránky, který maximalizuje požadavky na stránku. Bylo navrženo mnoho takových, jako je například implementace heuristických algoritmů ke snížení výskytu chyb stránky.

Větší fyzická paměť také snižuje chyby stránek.

Viz také

Poznámky

Reference

  • John L. Hennessy, David A. Patterson, počítačová architektura, kvantitativní přístup ( ISBN  1-55860-724-2 )
  • Tanenbaum, Andrew S. Operating Systems: Design and Implementation (Second Edition) . New Jersey: Prentice-Hall 1997.
  • Příručka vývojáře softwaru Intel Architecture Software - svazek 3: Programování systému

externí odkazy