- •7. Управление памятью Введение
- •Иерархия запоминающих устройств
- •Функции ос по управлению памятью
- •Стратегии управления памятью
- •Типы адресов
- •Алгоритмы распределения памяти
- •Распределение памяти фиксированными разделами
- •Распределение памяти динамическими разделами
- •Перемещаемые разделы
- •Свопинг и виртуальная память
- •Страничное распределение
- •Стратегии управления страничной виртуальной памятью
- •Определение размера страницы
- •Сегментное распределение
- •Сегментно-страничное распределение
- •8.Кэширование данных
- •Принцип действия кэш-памяти
- •Проблема согласования данных
- •Способы отображения основной памяти на кэш
- •Схемы выполнения запросов в системах с кэш-памятью
- •9. Безопасность операционных систем
- •Основные понятия безопасности Конфиденциальность, целостность и доступность данных
- •Классификация угроз
- •Типичные атаки на операционную систему
- •Системный подход к обеспечению безопасности
- •Политика безопасности
- •Подходы к построению защищенных ос
- •Основные функции подсистемы защиты операционной системы
- •Идентификация, аутентификация и авторизация
- •Криптографические функции
- •Управление политикой безопасности
- •Сетевые функции
- •Разграничение доступа к объектам операционной системы Понятие объекта, субъекта и метода доступа
- •Правила разграничения доступа
- •Технология защищенного канала Классификация уровней защиты
- •Руководящие документы Гостехкомиссии
- •Список литературы
- •Оглавление
- •Операционные системы
- •Часть 3
Схемы выполнения запросов в системах с кэш-памятью
Приведем в словесной форме обобщенный алгоритм работы кэш-памяти. В качестве обучающего примера попытайтесь нарисовать схему этого алгоритма.
-
Выполнить запрос к основной памяти.
-
Выполнить просмотр кэша.
-
Произошло кэш-попадание. Если да, то перейти к шагу 4, если нет, то- к шагу 8.
-
Определить какая операция. Если «чтение», то перейти к шагу 5, если «запись» - к шагу 7.
-
Считать данные из кэша.
-
Передать данные источнику запроса. Закончить алгоритм.
-
Определить режим согласования. Если «сквозная запись», то произвести запись в основную память и в кэш, иначе (т.е. режим «обратной записи») – произвести запись в кэш и установить признак модификации. Закончить алгоритм.
-
Определить, какая операция: если «запись», то произвести запись в основную память и закончить алгоритм; если «чтение», перейти к шагу 9.
-
Произвести чтение из основной памяти.
-
Определить, есть ли свободное пространство в кэше. Если да, то перейти к шагу 13, иначе – к шагу 11.
-
Осуществить выбор данных на выгрузку и объявить соответствующий элемент кэша свободным.
-
Определить, были ли выгружаемые данные модифицированы. Если да, то копировать выгружаемые данные в основную память.
-
Копировать данные, считанные из основной памяти в кэш.
-
Передать данные источнику запроса. Закончить алгоритм.
И з приведенного алгоритма видно, что когда выполняется запись, кэш просматривается только с целью согласования содержимого кэша и основной памяти. Если происходит промах, то запросы на запись не вызывают никаких изменений содержимого кэша. В некоторых же реализациях кэш-памяти при отсутствии данных в кэше они копируются туда из основной памяти независимо от того, выполняется запрос на чтение или на запись.
В соответствии с описанной логикой работы кэш-памяти следует, что при возникновении запроса сначала просматривается кэш, а затем, если произошел промах, выполняется обращение к основной памяти. Однако часто реализуется и другая схема работы кэша: поиск в кэше и в основной памяти начинается одновременно, а затем, в зависимости от результата просмотра кэша, операция в основной памяти либо продолжается, либо прерывается.
При выполнении запросов к оперативной памяти во многих вычислительных системах используется двухуровневое кэширование (рис. 8.5). Кэш первого уровня имеет меньший объем и более высокое быстродействие, чем кэш второго уровня. Кэш второго уровня играет роль основной памяти по отношению к кэшу первого уровня.
На рис. 8.6 показана схема выполнения запроса на чтение в системе с двухуровневым кэшем. Сначала делается попытка обнаружить данные в кэше первого уровня. Если произошел промах, поиск продолжается в кэше второго уровня. Если же нужные данные отсутствуют и здесь, тогда происходит считывание данных из основной памяти. Понятно, что время доступа к данным оказывается минимальным, когда кэш-попадание происходит уже на первом уровне, несколько большим – при обнаружении данных на втором уровне и обычным временем доступа к оперативной памяти, если нужных данных нет ни в том, ни в другом кэше. При считывании данных из оперативной памяти происходит их копирование в кэш второго уровня, а если данные считываются из кэша второго уровня, то они копируются в кэш первого уровня.
При работе такой иерархической организованной памяти необходимо обеспечить непротиворечивость данных на всех уровнях. Кэши разных уровней могут согласовывать данные разными способами. Пусть, например, кэш первого уровня использует сквозную запись, а кэш второго уровня – обратную запись. (Именно такая комбинация алгоритмов согласования применена в процессоре Pentium при одном из возможных вариантов работы).