Кеш страницы - Page cache

Положение кеша страницы в различных слоях Ядро Linux стек хранилища.[1]

В вычислениях кеш страницы, иногда также называемый дисковый кеш,[2] прозрачный тайник для страницы происходящий из вторичное хранилище устройство, такое как привод жесткого диска (HDD) или твердотельный накопитель (SSD). В Операционная система хранит кеш страницы в неиспользуемых частях основная память (RAM), что приводит к более быстрому доступу к содержимому кешированных страниц и повышению общей производительности. Кеш страницы реализован в ядра с пейджинг управление памятью и в основном прозрачно для приложений.

Обычно вся физическая память, не выделяемая приложениям напрямую, используется операционной системой для кеширования страниц. Поскольку в противном случае память была бы простаивающей и ее можно было бы легко восстановить, когда приложения ее запрашивают, обычно не возникает связанного с этим снижения производительности, и операционная система может даже сообщить о такой памяти как о «свободной» или «доступной».

По сравнению с основной памятью, чтение / запись на жесткий диск медленные и случайный доступ требуют дорогих диск ищет; в результате большие объемы основной памяти улучшают производительность, поскольку в памяти можно кэшировать больше данных.[3] Отдельное кэширование диска обеспечивается на аппаратной стороне с помощью выделенной оперативной памяти или NVRAM чипы, расположенные либо в дисковый контроллер (в этом случае кеш встроен в жесткий диск и обычно называется дисковый буфер[4]) или в контроллер дискового массива. Такую память не следует путать со страничным кешем.

Сохранение памяти

Страницы в кэше страниц, измененные после внесения, называются грязными страницами.[5] Поскольку незагрязненные страницы в кэше страниц имеют идентичные копии в вторичное хранилище (например, жесткий диск или твердотельный накопитель), сброс и повторное использование их пространства намного быстрее, чем подкачка памяти приложения, и часто предпочтительнее сброса грязных страниц во вторичное хранилище и повторного использования их пространства. Исполняемый двоичные файлы, такие как приложения и библиотеки, также обычно доступны через кеш страницы и сопоставляются с отдельными процесс пространства с использованием виртуальная память (это делается через mmap системный вызов в Unix-подобных операционных системах). Это не только означает, что двоичные файлы используются совместно отдельными процессами, но также и неиспользуемые части двоичных файлов в конечном итоге будут удалены из основной памяти, что приведет к экономии памяти.

Поскольку кешированные страницы можно легко удалить и использовать повторно, некоторые операционные системы, в частности Windows NT, даже сообщают об использовании кэша страниц как «доступную» память, в то время как память фактически выделяется страницам на диске. Это привело к некоторой путанице в использовании кеша страниц в Windows.

Запись на диск

Кеш страницы также помогает при записи на диск. Страницы в основной памяти, которые были изменены во время записи данных на диск, помечаются как «грязные» и должны быть сброшены на диск, прежде чем их можно будет освободить. Когда происходит запись в файл, выполняется поиск кэшированной страницы для конкретного блока. Если он уже находится в кеше страниц, запись выполняется на эту страницу в основной памяти. Если он не найден в кеше страниц, то при записи отлично ложится на размер страницы границ, страница даже не читается с диска, а выделяется и сразу помечается как грязная. В противном случае страница (страницы) извлекаются с диска и выполняются запрошенные изменения. Файл, который создается или открывается в кэше страниц, но не записывается в него, может привести к файл с нулевым байтом при более позднем прочтении.

Однако не все кэшированные страницы могут быть записаны, поскольку программный код часто отображается как только чтение или же копирование при записи; в последнем случае изменения кода будут видны только самому процессу и не будут записаны на диск.

Атаки по побочным каналам

В 2019 году исследователи безопасности продемонстрировали атаки по побочным каналам против кеша страницы: можно обойти разделение привилегий и извлекать данные о других процессах, систематически отслеживая, есть ли некоторые страницы файлов (например, исполняемый файл или же библиотека файлы) присутствуют в кеше или нет.[6]

Смотрите также

Рекомендации

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

внешняя ссылка