Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Экзамен ОС 2018

.pdf
Скачиваний:
118
Добавлен:
29.01.2018
Размер:
4.67 Mб
Скачать

Оглавление

Пример реализации – в IBM OS 360 для каждого 2KБ блока основной памяти был поставлен в соответствие 4-битовый ключ защиты. Реализовывался принцип защиты «все или ничего».

Развитием предыдущего способа в IBM OS 360/67 является использование дополнительно к ключу защиты еще одного флага – Разряда Режима Обращения (РРО). Если при проверке ключ защиты и ключ программы не совпадает, то при значении РРО равном «0» разрешается выполнить операцию чтения памяти, а при значении «1» доступ запрещается и выполняется прерывание.

Метод матрицы доступа, как усовершенствование метода ключей защиты

Развитием метода ключей защиты следует считать реализацию в системе SCC6700 матрицы доступа.

Каждый процесс имел такую матрицу, определяющую защиту доступа к его сегментам.

Элемент aij этой матрицы определял тип доступа, разрешенный процессу i к j-ому сегменту:

Защита памяти по привилегиям

В случае реализации защиты по привилегиям обычно реализуется уровневая (кольцевая) модель при которой более менее привилегированные программы не имеют доступа к ячейкам памяти более привилегированных программ.

Карлин:

Оглавление

Оглавление

9. Методы с использованием внешней памяти. Стратегии управления виртуальной памятью (свопинг).

Методы с использованием внешней памяти : страничное распределение,

сегментное распределение, сегментно-страничное распределение.

Страничное распределение :

Оперативная память и ВАП каждого процесса делится на фрагменты одинакового размера, фиксированного для ОС, называемые страницами. Обычно размер страницы равен степени двойки, что позволяет упростить механизм преобразования адресов.

Виртуальный адрес, в таком случае имеет след. Вид : v = (p, d). Где p - номер страницы (нумерация с 0), d - смещение адресуемого байта относительно размера страницы.

Система отображения виртуальных адресов в физические сводится к системе отображения виртуальных страниц в физические и представляет собой таблицу страниц.

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

Для ссылки на таблицу страниц используется специальный регистр процессора. При распределении очередного процесса на выполнение в этот регистр загружается адрес таблицы страниц нового процесса.

Элемент таблицы страниц выглядит следующим образом :

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

Если виртуальная страница находится в ОП, то выполняется преобразование ВА в ФА

Если же нужная виртуальная страница в данный момент выгружена на диск, то происходит “страничное прерывание” - программа обработки страничного прерывания находит на диске требуемую виртуальную страницу и пытается загрузить ее в ОП.

Если в памяти имеется свободная физическая страница, то загрузка выполняется

Оглавление

Оглавление

немедленно, если же свободных страниц нет, то решается какую страницу выгрузить из ОП.

Трансляция адреса в страничной системе :

1)При активизации очередного процесса в специальный регистр процессора загружается адрес таблицы страниц для данного процесса.

2)На основании начального адреса таблицы страниц, номера виртуальной страницы и длины записи в таблице страниц определяется адрес нужной записи.

3)Из этой таблицы страниц извлекается номер физической страницы.

4)Учитывая что размер страницы кратен 2, то младшие разряды смещения виртуального адреса могут быть просто присоединены номеру физической страницы.

Достоинства и недостатки распределения :

+Преобразование виртуального адреса в физический использует быструю операцию конкатенации, что уменьшает время получения ФА.

+Отсутствует фрагментация ВАП.

-Большой размер таблицы страниц

-Возможно неэффективное использование физических страниц

-Потенциально большое количество страничных прерываний

-Сложность реализации защиты данных (каждой странице необходимо устанавливать аттрибут защиты)

Выбор размера страницы :

При малых страницах :

Меньшая внутренняя фрагментация страниц и повышенная эффективность использования ОП

Снижаются расходы времени на свопинг страниц

При больших страницах :

Меньшие затраты на поиск и управление страницами (таблицы имеют меньший размер)

Выше эффективность обмена с внешней памятью

Расчет размера страницы :

32 битное ВАП, размер страницы 4096 Байт, 4 ГБ физ памяти Количество элементов в таблице стр :

2^32 адрессуемых байт / 2^12 байт на страницу = 2^20 записей Размер элемента в таблице страниц :

4Гб физ памяти = 2^32 байт 2^32 байт / 2^12 байт на страницу = 2^20 страниц физических

20 бит необходимо для хранения физического номера страницы Элемент таблицы страниц ~4 байт Флаги доступа ~1 байт

Физический номер страницы (20 бит) ~ 3байт

Оглавление

Оглавление

Размер таблицы страниц = 2^20 * 2^2 = 2^22 байт (4 Мб)

Для того, чтобы избежать необходимость хранения в памяти огромных таблиц, применяются многоуровневые таблицы.

Количество уровней в таблице страниц зависит от конкретных особенностей архитектуры. (например, Intel поддерживает двухуровневую).

При многоуровневых таблицах, количество обращений к физ памяти (при трансляции ВА в ФА), возрастает пропорционально уровню.

Механизм ускорения трансляции ВА в ФА - TLB (ассоциативный буффер трансляции) Устройство ниже на рис.

Минусы использования буффера :

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

TLB-кэши многопроцессорной системы аппаратно не синхронизируются , ядро операционной системы должно само выполнять действия по синхронизации их Содержимого.

Инвертированные таблицы страниц применяются в PowerPC и тоже служат для решения проблемы хранения огромных таблиц

Оглавление

Оглавление

В этой таблице содержится по одной записи на каждый страничный кадр физической памяти. В этом случае для всех процессов достаточно одной таблицы, причем размер ее не будет зависеть от количества процессов и от архитектуры системы.

Линейная инвертированная таблица страниц :

Элемент состоит из : идентификатора владельца страницы и номера виртуальной страницы Таблица проиндексирована по номеру физической страницы

Несмотря на экономию оперативной памяти, применение линейных инвертированных таблиц имеет существенный минус – записи в ней не отсортированы по возрастанию номеров виртуальных

страниц, что приводит к необходимости выполнения большого количества обращения к памяти и большого количества операций сравнения, что сильно усложняет трансляцию адреса.

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

Хешированная инвертированная таблица страниц :

Коллизии решаются методом цепочек, каждой странице физ памяти соответствует одна запись.

Сегментное распределение

ВАП процесса делится на сегменты, размер которых определяется программистом с учетом смыслового значения содержащейся в них информации.

Отдельный сегмент может представлять собой программу, массив.

Иногда сегментация программы может производиться компилятором по умолчанию.

При таком распределении ВА будет выглядеть как v = (s, d), где s - номер сегмента , d - смещение относительно размера сегмента

Точно также, как и для страничного распределения, существует таблица сегментов процесса :

Втаблице сегмента , помимо физ. Адреса начала сегмента содержится длина сегмента, биты защиты и прочая служебная информация.

Так как сегменты могут быть разного размера, при загрузке выгрузке их из ОП может возникнуть фрагментация ВАП. В остальном все также похоже на трансляцию в страничном распределении (прерывания и свопинг)

Врамках сегментной модели возможно разделение одного сегмента несколькими процессами.

Оглавление

Оглавление

Достоинства и недостатки распределения :

+Более эффективное использование оперативной памяти

+Потенциально меньшее количество прерываний (локальность данных в сегменте)

+Более простая возможность защиты данных на уровне сегментов

-Более медленное преобразование ВА в ФА в связи с использованием операции сложения

-Фрагментация ВАП

-Сложность реализации свопинга т.к. Сегменты разные по размеру

Сегментно-страничное распределение.

ВАП делится на сегменты, где каждый сегмент делится на страницы, которые нумеруются в пределах делимого сегмента.

Оперативная память делится на физические страницы

Формат ВА выглядит след образом v = (s, p, d), где s - номер сегмента в ВП, p - номер виртуальной страницы в рамках сегмента, d - смещение адресуемого байта в пределах страницы.

Для каждого процесса создается таблица сегментов, в которой указываются адреса таблиц страниц для всех сегментов данного процесса. Адресс таблицы сегментов помещается в специальный регистр процессора.

Для каждого сегмента своя таблица страниц.

Преобразование ВА в ФА :

Достоинства

+Быстрое преобразование ВА в ФА

+Отсутсвие больших таблиц

+Отсутствие фрагментации ВАП

+Возможность защиты данных на уровне сегментов

Оглавление

Оглавление

+Простая реализация свопинга

Стратегии управления ВП

Стратегия выборки

Стратегия размещения

Стратегия замещения

Стратегия выборки

Определяет в какой момент времени следует переписать отсутствующую в ОП страницу ( сегмент ) из внешней памяти.

Выборка бывает по запросу и с упреждением В простейшем случае заключается в загрузке страницы с диска в свободную

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

Стратегия размещения

Определяет, в какое место первичной памяти следует поместить поступающую страницу(сгемент)

Всистемах со страничной организацией данная стратегия практически не имеет никакого значения, т.к. Подходит любой свободный страничный кадр оперативной памяти.

Всистемах с сегментной организацией требуется стратегия, аналогичная стратегии с переменными разделами.

Стратегия замещения

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

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

протяжении всего времени жизни процесса, например, страницы ядра ОС).

Алгоритмы свопинга :

-FIFO Замещение первой использованной страницы Использовался в старых версиях UNIX

-LRU (Least Recently Used) замещение дольше всех неиспользованных страниц Недостаток : сложная аппаратная реализация, однако часто используется.

Еще одно решение : завести счетчик.

Счетчик будет содержать число интервалов, в течение которых страница не использовалась, страница с максимальным значение счетчика – дольше всего не использовавшаяся.

Оглавление

Оглавление

Хранится reference bit (1 - к странице обращались, 0 - иначе) Этот бит отстуствует на архитектуре Intel!

Для его эмуляции использововался бит валидации (validate bit) на ОС Windows 2000-2008

Недостаток : огромное количество страничных прерываний.

-NRU (Not Recently Used) / clock замещение не использововавшихся в последнее время страниц Все страничные кадры ОП хранятся в виде кольцевого списка

Стрелка часов (обычный указатель, движущийся по списку) указывает на текущего кандидата на вытеснение

Если признак обращения сброшен, значит страница давно не использовалась и она - подходящий кандидат

Если признак обращения установлен, значит он сбрасывается и указатель переходит на след элемент списка

+Чем чаще требуются страницы, тем быстрее движется стрелка

+При достаточно большом обьеме памяти дополнительные расходы невелики

+При очень больших обьемах памяти, точность замещения снижается и приходится использовать еще один указатель для сброса reference bit

-NFU (Not Frequently Used) - замещение наименее часто используемых страниц Требуются программные счетчики, по одному на каждую страницу Изначально = 0 При каждом прерывании по времени ОС сканирует все страницы в памяти и у

каждой страницы с установленным флагом обращения увеличивает на единицу значение счетчика, а флаг обращения сбрасывает. Таким образом, кандидатом на освобождение оказывается страница с наименьшим значением счетчика, как страница, к которой реже всего обращались.

-FIFO 2nd chance - clock (дополняется хранением бита R, который указывает - была ли использована страница или нет). Если бит R = 1, то он очищается и

страница помещается в конец очереди. Недостатки :

Недостаточная эффективность алгоритма, потому что постоянно нужно передвигать страницы по списку. Поэтому лучше использовать алгоритм clock, где используется кольцевой список и хранится указатель на старейшую страницу.

Трешинг

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

Оглавление

Оглавление

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

Принцип Деннинга

(непонятно, надо ли, но для общего развития здесь напишу)

Принцип локальности ссылок (недоказуемый, но подтверждаемый на практике) состоит в том, что если в период времени (T-t, T) программа обращалась к страницам (С1, С2, ..., Сn), то при надлежащем выборе t с большой вероятностью эта программа будет обращаться к тем же страницам в период времени (T, T+t).

Другими словами, принцип локальности утверждает, что если не слишком далеко заглядывать в будущее, то можно хорошо его прогнозировать исходя из прошлого.

Набор страниц (С1, С2, ..., Сn) называется рабочим набором программы (или, правильнее, соответствующего процесса) в момент времени T. Понятно, что с течением времени рабочий набор процесса может изменяться (как по составу страниц, так и по их числу).

Полная реализация этого принципа гарантированно исключает трешинг Но полная реализация обязует в дополнительных расходах (аппаратная поддержка)

Аппратная поддержка заключается в том, что каждой странице в ОП необходим собственный регистр с тремя полями - поле π указывает на соответствующий элемент таблицы страниц, t - таймер, измеряющий интервал времени, начальное значение которого находится в t-регистре, A - бит, оповещающий о том, что таймер истек.

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

При каждом обращении к странице поля регистра этой страницы изменяются: t = , A = 0

Для каждой страницы в реальном времени выполняется уменьшение таймера t для страничных фремов.

Когда t заканчивается (истекает секунд), то странице устанавливается бит A = 1, который сигнализирует, что данная страница является кандидатом на вытеснение.

Алгоритм :

Когда системе необходима свободная страницу, то специальный аппаратный модуль сканирует регистры

Оглавление

Оглавление

страниц на предмет обнаружения первой страницы с установленным в «1» битом А.

При замещении страницы идет обращение по ссылке с

элементу таблицы страниц, где сбрасывается бит присутствия страницы в памяти и при необходимости выполняется сброс ее измененного содержимого на диск.

Значение интервала гарантированного времени жизни страницы, которое хранится в t-регистре, может изменяться операционной системой по специальному алгоритму в зависимости от текущей загруженности памяти.

10. Архитектура памяти MS Windows 2000+. Менеджер ВП. Виртуальное АП. Средства защиты памяти. Страничное преобразование. Реализация свопинга в

MS Windows 2000+.

Виртуальная память

Это совокупность программно-аппартаных средств, позволяющих выполнять программы, размер которых превосходит размер имеющейся оперативной памяти.

Реализацией этого механизма занимается менеджер виртуальной памяти, являющийся составной частью ядра ОС. Он выполняет основные 3 задачи :

Размещение данных в запоминающих устройствах разного вида (например, часть в оперативной памяти, а другая часть - на диске);

Перемещение данных между этими устройствами (подгружает нужную часть программы с диска в оперативную память, свопинг)

Преобразование адресов (виртуальный адрес -> физический)

Оглавление