stringtranslate.com

Кэш страницы

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки

  1. ^ Роберт Лав (12.01.2005). «Разработка ядра Linux (второе издание), Глава 15. Кэш страниц и обратная запись страниц». makelinux.net . Sams Publishing . Получено 24.07.2015 .
  2. ^ "Диск кэш". Webopedia . Сентябрь 1996.
  3. ^ Марк Кирнин. «Что искать на жестком диске». about.com . Архивировано из оригинала 2015-04-04 . Получено 2014-12-20 . Буфер диска — это объем оперативной памяти на диске для хранения часто используемых данных с диска.{{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  4. ^ "free(1) — procps — Debian bookworm — Debian Manpages".
  5. ^ "Глоссарий - Библиотека TechNet". Microsoft. 28 января 2010 г.
  6. ^ Грусс, Дэниел; Крафт, Эрик; Тивари, Тришита; Шварц, Майкл; Трахтенберг, Ари; Хеннесси, Джейсон; Ионеску, Алекс; Фог, Андерс (04 января 2019 г.). «Атаки на кэш страниц». arXiv : 1901.01161 [cs.CR].

Внешние ссылки