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