Разделяемая память. Если несколько процессов разделяют область памяти, каждый процесс отображает ее в собственном адресном пространстве. Если такие адреса не выровнены, то они будут попадать в разные строки кэша, что приведет к появлению синонимов. Так как процессы вправе отображать разделяемые области памяти по любому адресу в своем пространстве, ядро обычно не в состоянии гарантировать выравнивание.
Также вам может показаться, что такая тема как http://www.koelgamramor.ru/ никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт koelgamramor.ru. Тема мрамор в спб там представлена весьма широко. На том сайте можно узнать много интересного на тему мрамор в спб. Что означает вообще тема мрамор в спб, где найти мрамор в спб - про это написано на сайте koelgamramor.ru. Это очень важная для многих людей тема - мрамор в спб. Спасибо сайту koelgamramor.ru за информацию на тему мрамор в спб.
Вызов mmap. Процессы могут использовать вызов mmap для создания отображения файла или объекта памяти в любом месте своего адресного пространства. Если несколько процессов отображают один и тот же объект по не выровненным адресам, это приводит к созданию синонимов. Процесс также способен отображать одну и ту же область в различные части своего адресного пространства, с аналогичным результатом.
♦ DVMA. Системы, поддерживающие прямой доступ к виртуальной памяти (Direct Virtual Memory Access), позволяют устройствам создавать новое отображение виртуального адреса для страницы, уже имеющей другой виртуальный адрес. Эта операция требует сброса содержимого кэша при создании нового отображения и повторного сброса после ее завершения.
Многие устройства обладают возможностью непосредственного обмена данных с памятью без участия процессора. Эта возможность получила название прямого доступа к памяти (Direct Memory Access, DMA)1. При использовании технологии DMA производится обращение сразу к основной памяти, минуя кэш. Несмотря на то, что это дает определенное увеличение скорости передачи, применение DMA становится причиной возникновения проблем корректности кэша. Представьте, что кэш содержит некоторое количество измененных данных, еще не записанных в основную память. Операция прямого чтения об этом не знает и, следовательно, считает из основной памяти устаревшую информацию. Сходные проблемы возникают и при прямой записи: операция не перезаписывает кэш, что делает содержимое кэша непригодным из-за устаревания данных. Через некоторое время устаревшая строка кэша может быть сброшена в память, тем самым будут «затерты» более свежие данные.
Поддержка корректности кэша
В системах с виртуально адресуемым кэшированием ядро должно уметь распознавать события, следствием которых является недостоверность кэша, и производить некоторые действия по исправлению данных. Обычно кэш экспортирует ядру две операции, flush и purge, которые позволяют очистить вхождение кэша или сбросить его. В отличие от операции purge (очистка), операция flush (сброс) также производит запись всех изменений в основную память машины. Действия ядра системы зависят от конкретной ситуации. Представим некоторые из них.
При изменении отображения страницы ядру необходимо сбросить все вхождения, относящиеся к этой странице. Сброс кэша является весьма трудоемкой операцией, поэтому должен производиться как можно реже. Ядро в любом случае сбрасывает вхождения избирательно, тогда, когда они были изменены с корректных на некорректные. Например, при переключении контекста ядро сбрасывает вхождения кэша области и предыдущего процесса, если отображения помечены как некорректные. При подключении новой области и не потребуется сброса, так как это изменение в обратную сторону (invalid-to-valid).
Демон pagedaemon сбрасывает корректность освобождаемых страниц. Кэшированные вхождения таких страниц должны быть сброшены, чтобы не дать процессу возможности продолжать обращаться к неправильным страницам. Однако при заполнении свободной страницы новыми данными операция сброса не требуется.
При выполнении вызова fork ядра многих версий UNIX временно отображают страницы области и процесса-предка в часть адресного пространства ядра под названием forkutl. Процедуры, использующие область forkutl, не освобождают такое отображение после завершения работы. В случае применения систем с виртуально адресуемым кэшированием такие процедуры должны производить сброс соответствующих вхождений кэша.
Опубликовал katy
June 23 2015 06:34:14 ·
0 Комментариев ·
3475 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.