В вычислениях, кэш страниц , иногда также называемый дисковый кэшем , [1] представляет собой прозрачный кэш для страниц , происходящих из вторичного хранения устройства , такие как жесткий диск (HDD) или твердотельный накопитель (SSD). Операционная система хранит кэш страницы в противном случае неиспользованных частей основной памяти (RAM), в результате чего более быстрый доступ к содержимому кэшированных страниц и общее улучшение производительности. Кэш страниц реализован в ядрах с управлением памятью подкачки и в основном прозрачен для приложений.
Обычно вся физическая память, не выделяемая приложениям напрямую, используется операционной системой для кеширования страниц. Поскольку в противном случае память была бы простаивающей и ее можно было бы легко восстановить, когда приложения запрашивают ее, обычно не возникает связанного с этим снижения производительности, и операционная система может даже сообщать о такой памяти как о «свободной» или «доступной».
По сравнению с основной памятью чтение / запись жесткого диска происходит медленно, а случайный доступ требует дорогостоящих поисков на диске ; в результате большие объемы основной памяти улучшают производительность, поскольку в памяти можно кэшировать больше данных. [2] Отдельное кэширование диска обеспечивается на аппаратной стороне с помощью выделенных микросхем RAM или NVRAM, расположенных либо в контроллере диска (в этом случае кэш интегрирован в жесткий диск и обычно называется дисковым буфером [3] ), либо в контроллер дискового массива . Такую память не следует путать со страничным кешем.
Сохранение памяти
Страницы в кэше страниц, измененные после внесения, называются грязными страницами. [4] Поскольку незагрязненные страницы в кэше страниц имеют идентичные копии во вторичном хранилище (например, на жестком диске или твердотельном накопителе), сброс и повторное использование их пространства происходит намного быстрее, чем выгрузка памяти приложения, и часто предпочтительнее, чем очистка грязные страницы во вторичное хранилище и повторно используют их пространство. Исполняемые двоичные файлы , такие как приложения и библиотеки, также обычно доступны через кеш страниц и сопоставляются с отдельными пространствами процессов с использованием виртуальной памяти (это делается с помощью системного вызова mmap в Unix-подобных операционных системах). Это не только означает, что двоичные файлы используются совместно отдельными процессами, но также и неиспользуемые части двоичных файлов в конечном итоге будут удалены из основной памяти, что приведет к экономии памяти.
Поскольку кэшированные страницы могут быть легко удалены и повторно использованы, некоторые операционные системы, особенно Windows NT , даже сообщают об использовании кэша страниц как «доступную» память, в то время как память фактически выделяется для страниц на диске. Это привело к некоторой путанице в использовании кеша страниц в Windows.
Запись на диск
Кеш страницы также помогает при записи на диск. Страницы в основной памяти, которые были изменены во время записи данных на диск, помечаются как «грязные» и должны быть сброшены на диск, прежде чем их можно будет освободить. Когда происходит запись в файл, ищется кешированная страница для конкретного блока. Если он уже найден в кэше страниц, запись выполняется на эту страницу в основной памяти. Если он не найден в кэше страниц, то, когда запись идеально попадает в границы размера страницы , страница даже не считывается с диска, а выделяется и сразу же помечается как грязная. В противном случае страницы извлекаются с диска и выполняются запрошенные изменения. Файл, который создается или открывается в кэше страниц, но не записывается в него, может привести к нулевому байтовому файлу при последующем чтении.
Однако не все кэшированные страницы могут быть записаны, поскольку программный код часто отображается как доступный только для чтения или копируемый при записи ; в последнем случае изменения кода будут видны только самому процессу и не будут записаны на диск.
Атаки по побочным каналам
В 2019 году исследователи безопасности продемонстрировали атаки по побочным каналам на кеш страниц: можно обойти разделение привилегий и извлечь данные о других процессах, систематически отслеживая, присутствуют ли некоторые страницы файлов (например, исполняемые или библиотечные файлы) в кеше или нет. [5]
Смотрите также
Рекомендации
- ^ Роберт Лав (2005-01-12). «Разработка ядра Linux (второе издание), глава 15. Кэш страницы и обратная запись» . makelinux.net . Самс Паблишинг . Проверено 24 июля 2015 .
- ^ «Дисковый кэш» . Вебопедия .
- ^ Марк Кырнин. «Что искать на жестком диске» . about.com . Проверено 20 декабря 2014 .
Буфер диска - это объем ОЗУ на диске для хранения часто используемых данных с диска.
- ^ «Глоссарий - библиотека TechNet» . Microsoft.
- ^ Грусс, Даниэль; Крафт, Эрик; Тивари, Тришита; Шварц, Майкл; Трахтенберг, Ари; Хеннесси, Джейсон; Ионеску, Алекс; Фог, Андерс (2019-01-04). «Атаки на кэш страницы». arXiv : 1901.01161 [ cs.CR ].
Внешние ссылки
- Кэш страницы, дело между памятью и файлами