Każdej stronie przypisano ramkę w pamięci głównej i kiedy wątek próbuje odwołać się do strony, której ramka nie znajduje się w pamięci głównej, pojawia się błąd strony. Jeśli strona rzeczywiście nie jest obecna w pamięci fizycznej i musi zostać pobrana z pamięci wtórnej, takiej jak dysk twardy, występuje błąd, który jest klasyfikowany jako błąd strony twardej.

Co to jest błąd strony?

Błąd strony to rodzaj wyjątku inicjowanego przez sprzęt komputera w celu powiadomienia systemu operacyjnego o odwołaniach do stron bez ramki. Mówiąc najprościej, błąd strony występuje, gdy program próbuje uzyskać dostęp do danych rezydujących na stronie, która nie jest przechowywana w pamięci głównej lub fizycznej. Powiedzmy, że dany program ma pięć stron, z których dwie strony są ładowane do pamięci głównej w dwóch oddzielnych ramkach. Tak więc, kiedy nowa strona jest wywoływana przez procesor, może wystąpić jedna z kilku rzeczy. Jeśli ta strona nie zostanie znaleziona w pamięci głównej, jest to nazywane błędem strony. Tak więc, kiedy procesor żąda wykonania konkretnej strony, ale strona nie jest dostępna w pamięci głównej, pojawia się błąd strony. Strona ta w rzeczywistości rezyduje w pamięci wtórnej lub wirtualnej. Cały ten mechanizm jest obsługiwany przez sprzętową jednostkę zarządzania pamięcią (MMU).

Co to jest Hard Page Fault?





Jeśli żądana strona nie jest obecna w pamięci głównej i musi być pobrana lub stronicowana z pamięci wirtualnej, błąd jest klasyfikowany jako „twardy” błąd strony. Każdy wpis w tabeli stron ma bit ważności, który wskazuje, czy stronie przypisano ramkę w pamięci głównej. Kiedy więc program odwołuje się do strony, której bit ważności wynosi zero, pojawia się błąd strony. System operacyjny interweniuje wtedy i przypisuje stronie odpowiednią ramkę. Wpis w tablicy stron w rzeczywistości mówi nam, że strona znajduje się na dysku. Tak więc, gdy pożądana strona nie zostanie znaleziona w pamięci głównej i zamiast tego zostanie zamieniona na plik stron na dysku, wystąpi hard page fault. System operacyjny musi odzyskać stronę z podsystemu dyskowego, co powoduje, że program znacznie czeka, co z kolei zmniejsza wydajność. Jeśli strona znajduje się w pamięci podręcznej, występuje soft page fault.

Różnica pomiędzy błędem strony a błędem twardym

Wyjątek

– Błąd strony to rodzaj wyjątku, który występuje, gdy program próbuje uzyskać dostęp do strony, która znajduje się w jego przestrzeni adresowej, ale nie można jej znaleźć w pamięci głównej lub fizycznej. Tak więc, gdy procesor żąda określonej strony do wykonania, ale strona nie jest dostępna w pamięci głównej, pojawia się błąd strony. Jeśli żądana strona nie jest obecna w pamięci głównej i musi być pobrana lub stronicowana z pamięci wirtualnej, błąd jest klasyfikowany jako „twardy” błąd strony. Mówiąc prościej, jeśli strona musi zostać pobrana z dysku, występuje błąd twardej strony.

Obsługa



– Jednostka zarządzania pamięcią (MMU) sygnalizuje błąd strony procesorowi, który następnie zgłasza wyjątek błędu strony, co z kolei skłania system operacyjny do zlokalizowania strony w pamięci głównej. Następnie system operacyjny przypisuje stronie odpowiednią ramkę. Akcja ta jest zarządzana przez moduł o nazwie „pagefault handler”. Następnie tablica stron jest aktualizowana i wpis strony powinien już wskazywać na właściwą ramkę. Program jest wtedy gotowy do ponownego uruchomienia, ale tym razem bez błędu strony. Gdy wystąpi hard page fault, system operacyjny znajduje wolną lokalizację dla strony, a gdy miejsce jest dostępne, system odczytuje dane strony do pamięci głównej i aktualizuje wpis w MMU.

Podsumowanie

Page fault jest jednym z powszechnych problemów zarządzania pamięcią, gdy mamy do czynienia z pamięcią wirtualną lub wtórną. Page fault, wbrew temu, co sugeruje jego nazwa, nie jest w rzeczywistości błędem; jest to wyjątek, który pojawia się, gdy program próbuje uzyskać dostęp do adresu na stronie, która nie jest dostępna w pamięci głównej, gdzie ma się znajdować. MMU sygnalizuje wtedy CPU o błędzie strony, a CPU podpowiada systemowi operacyjnemu, aby zlokalizował stronę w pamięci, podczas gdy wątek przechodzi w stan oczekiwania. Tak więc, OS następnie lokalizuje żądaną stronę w innej części pamięci fizycznej lub w najgorszym przypadku, znajduje go na dysku, w którym to przypadku, błąd jest nazywany twardy błąd strony. OS przypisuje wtedy stronie odpowiednią ramkę i aktualizuje tablicę stron. Cały ten mechanizm obsługiwany jest przez moduł zwany pagefault handler.