Pamięć podręczna strony
W informatyce pamięć podręczna stron , czasami nazywana również pamięcią podręczną dysku , jest przezroczystą pamięcią podręczną dla stron pochodzących z dodatkowego urządzenia pamięci masowej , takiego jak dysk twardy (HDD) lub dysk półprzewodnikowy (SSD). System operacyjny przechowuje pamięć podręczną stron w nieużywanych w inny sposób częściach pamięci głównej (RAM), co zapewnia szybszy dostęp do zawartości stron w pamięci podręcznej i ogólną poprawę wydajności. Pamięć podręczna stron jest zaimplementowana w jądrach z rozszerzeniem stronicowania i jest w większości niewidoczny dla aplikacji.
Zwykle cała pamięć fizyczna, która nie jest bezpośrednio przydzielona aplikacjom, jest używana przez system operacyjny na potrzeby pamięci podręcznej stron. Ponieważ w przeciwnym razie pamięć byłaby bezczynna i można ją łatwo odzyskać, gdy zażądają tego aplikacje, generalnie nie ma związanego z tym spadku wydajności, a system operacyjny może nawet zgłaszać taką pamięć jako „wolną” lub „dostępną”.
W porównaniu z pamięcią główną, odczyt/zapis na dysku twardym jest powolny, a losowy dostęp wymaga kosztownych poszukiwań dysku ; w rezultacie większe ilości pamięci głównej zapewniają poprawę wydajności, ponieważ w pamięci można przechowywać więcej danych. Oddzielna pamięć podręczna dysku jest zapewniana po stronie sprzętowej przez dedykowane układy pamięci RAM lub NVRAM znajdujące się albo w kontrolerze dysku (w takim przypadku pamięć podręczna jest zintegrowana z dyskiem twardym i zwykle nazywana buforem dysku ), albo w kontrolerze macierzy dyskowej . Takiej pamięci nie należy mylić z pamięcią podręczną strony.
Zachowanie pamięci
Strony w pamięci podręcznej stron zmodyfikowane po wprowadzeniu są nazywane stronami brudnymi. Ponieważ niebrudne strony w pamięci podręcznej stron mają identyczne kopie w pamięci dodatkowej (np. na dysku twardym lub dysku półprzewodnikowym), odrzucanie i ponowne wykorzystywanie ich miejsca jest znacznie szybsze niż stronicowanie pamięci aplikacji i często jest preferowane niż opróżnianie brudnych stron do dodatkowej pamięci masowej i ponownego wykorzystania ich przestrzeni. Wykonywalne pliki binarne , takie jak aplikacje i biblioteki, są zwykle dostępne za pośrednictwem pamięci podręcznej stron i mapowane do poszczególnych obszarów procesów przy użyciu pamięci wirtualnej (odbywa się to za pośrednictwem mmap w systemach operacyjnych typu Unix). Oznacza to nie tylko, że pliki binarne są współużytkowane przez oddzielne procesy, ale także, że nieużywane części plików binarnych zostaną ostatecznie usunięte z pamięci głównej, co doprowadzi do zachowania pamięci.
Ponieważ strony z pamięci podręcznej można łatwo eksmitować i ponownie wykorzystać, niektóre systemy operacyjne, w szczególności Windows NT , zgłaszają nawet użycie pamięci podręcznej stron jako „dostępną” pamięć, podczas gdy pamięć jest faktycznie przydzielana stronom dysku. Doprowadziło to do pewnych nieporozumień dotyczących wykorzystania pamięci podręcznej stron w systemie Windows.
Dysk zapisuje
Pamięć podręczna stron pomaga również w zapisywaniu na dysk. Strony w pamięci głównej, które zostały zmodyfikowane podczas zapisywania danych na dysku, są oznaczane jako „brudne” i muszą zostać usunięte na dysk, zanim będą mogły zostać zwolnione. Kiedy następuje zapis do pliku, wyszukiwana jest strona z pamięci podręcznej dla konkretnego bloku. Jeśli znajduje się już w pamięci podręcznej strony, zapis jest wykonywany na tej stronie w pamięci głównej. Jeśli nie zostanie znaleziony w pamięci podręcznej strony, to wtedy, gdy zapis idealnie spadnie na rozmiar strony granice, strona nie jest nawet odczytywana z dysku, ale przydzielana i natychmiast oznaczana jako brudna. W przeciwnym razie strony są pobierane z dysku i wykonywane są żądane modyfikacje. Plik, który jest tworzony lub otwierany w pamięci podręcznej strony, ale nie jest do niego zapisywany, może spowodować, że podczas późniejszego odczytu plik będzie miał zero bajtów .
Jednak nie na wszystkich stronach zapisanych w pamięci podręcznej można zapisywać, ponieważ kod programu jest często mapowany jako tylko do odczytu lub kopiowania przy zapisie ; w tym drugim przypadku modyfikacje kodu będą widoczne tylko dla samego procesu i nie zostaną zapisane na dysku.
Ataki kanałami bocznymi
W 2019 roku badacze bezpieczeństwa zademonstrowali ataki side-channel na pamięć podręczną stron: możliwe jest ominięcie separacji uprawnień i eksfiltracja danych o innych procesach poprzez systematyczne monitorowanie, czy niektóre strony plików (na przykład pliki wykonywalne lub pliki bibliotek ) są obecne w pamięci podręcznej, czy nie.