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