2013-09-14 2 views
2

В процессоре, что происходит с кешем, когда операционная система заменяет страницу, если недостаточно места для хранения всех страниц запущенных процессов в памяти? Нужно ли очищать кеш при каждой замене страницы?Что происходит с кэшем при сбое страницы?

Заранее благодарим за ваши ответы.

ответ

0

При переходе страницы содержимое считывается с диска и в память. Обычно это делается с использованием DMA. Итак, реальный вопрос: «Как кеш поддерживал связь с DMA?». Вы можете либо разговаривать DMA с контроллером кэш-памяти при каждом доступе, либо вручную управлять ОС кешем. См. http://en.wikipedia.org/wiki/Direct_memory_access#Cache_coherency.

0

Я не уверен на 100%, что происходит в деталях, но кеши и виртуальная память с использованием подкачки схожи: обе разделены на «страницы».

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

Есть и другие вещи, которые я не знаю, если они принимают участие в таких заменах: размер кеша, когерентность кэша - запись/запись и т. Д. Надеюсь, кто-то еще может дать вам более подробный ответ.

+0

Если в памяти недостаточно страниц, существует риск ошибки. – marvell

+0

Рассмотрим память только с двумя страницами. (Операционная система занимает первое место.) Предполагая, что каждый процесс заполняет одну страницу, ОС должна заменить вторую физическую страницу на каждом переключателе контекста. Записи кэша, соответствующие второй физической странице, недействительны. – marvell

+0

В случае контекстного переключателя да. Но я точно не знаю, что происходит в ситуации, когда в процессе происходит ошибка страницы. – hdhzero

Смежные вопросы