Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OS Possible answers to the exam / Ответы на ОС.docx
Скачиваний:
174
Добавлен:
03.06.2014
Размер:
3.11 Mб
Скачать
    • Выборка:

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

    • Выборка бывает по запросу и с упреждением.

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

    • Размещение:

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

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

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

    • Замещение:

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

    • Разумная стратегия замещения  позволяет оптимизировать хранение в памяти самой необходимой информации.

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

    • 1’st page fault : страница 1 была вытеснена и заменена страницей 5, т.к. страница 1 в будущем больше не будет вызываться.

    • 2’nd page fault: страница 2 была вытеснена и заменена страницей 4, т.к. страница 2 будет вызвана позже чем остальные две страницы (страницы 5 и 3).

    • 3’rd page fault: страница 4 была вытеснена и заменена страницей 2, т.к. страница 4 в будущем больше не будет вызываться.

    • Алгоритмы замещения страниц (свопинга):

    • Глобальные – оперируют всей совокупностью страниц оперативной памяти.

    • Локальные – оперируют множеством страниц оперативной памяти, принадлежащих конкретному процессу.

    • Алгоритмы замещения страниц (свопинга):

    • FIFO (First In First Out) – замещение первой использованной страницы

    • FIFO 2nd Chance (похож на clock)

    • LRU (Least Recently Used) – замещение дольше всех неиспользовавшихся страниц

    • NRU (Not Recently Used) или clock – замещение не использовавшихся в последнее время страницы

    • NFU (Not Frequently Used) – замещение наименее часто используемых страниц

    • Пример действия FIFO:

    • FIFO 2nd Chance:

    • Модификация алгоритма FIFO, которая использовалась в ранних версиях UNIX.

    • Позволяет избежать потери часто используемых страниц с помощью анализа признака использования R для самой «старой» страницы.

    • Если признак установлен (R = 1), то страница, в отличие от FIFO, не выталкивается, а очищается бит (R = 0) и страница становится в конец очереди.

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

    • Алгоритм LRU:

    • Для замещения выбирается дольше всего неиспользовавшаяся страница.

    • Часто используется и считается хорошим.

    • Основная проблема – реализация (требуется аппаратная поддержка).

    • Реализация LRU №1:

    • Основана на использовании специального признака обращения (reference bit) к странице (требуется аппаратная поддержка).

    • Каждой странице назначается свой счетчик обращений.

    • С некоторым постоянным временным интервалом для каждой страницы выполняется:

    • - если признак обращения = 0 (страница не использовалась), увеличить счетчик на 1;

    • - если признак обращения = 1 (страница использовалась), обнулить счетчик;

    • - сбросить признак обращения.

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

    • Реализация LRU №2:

    • В некоторых архитектурах (например, Intel) признак обращения отсутствует.

    • Для эмуляции признака обращения можно использовать признак достоверности (valid bit), сбрасывая его для возникновения «псевдосбоев» страниц – пример ОС Windows 2000-2008.

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

    • NRU или clock:

    • Реализация:

    • - все страничные кадры ОП выстраиваются в один большой круг (часы) реализуемый обычным кольцевым списком;

    • - “стрелка часов” указывает следующего кандидата на вытеснение движется по списку страниц как стрелка часов;

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

    • - если признак обращения установлен, он сбрасывается, и стрелка переводится на следующую страницу.

    • Особенности:

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

    • - при достаточно большом объеме памяти дополнительные расходы невелики;

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

    • NFU (Not Frequently Used):

    • Программная реализация алгоритма, близкого к LRU, - алгоритм NFU.

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

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

    • Главный недостаток алгоритма NFU состоит в том, что он ничего не забывает. Например, страница, к которой очень часто обращались в течение некоторого времени, а потом обращаться перестали, все равно не будет удалена из памяти, потому что ее счетчик содержит большую величину (глубина истории ограничена разрядностью счетчика).

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

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

    • Понятие «trashing».

    • Высокая частота страничных прерываний называется трешинг (thrashing).

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

    • Критическая ситуация такого рода возникает вне зависимости от конкретных алгоритмов замещения.

    • В результате все процессы попадают в очередь запросов на свопинг, а очередь процессов в состоянии готовности пустеет.

    • ОС видит это и постепенно увеличивает степень мультипрограммирования.

    • Таким  образом, пропускная способность системы падает из-за трешинга.

    • Решение проблемы trashing:

    • Эффект трешинга, возникающий  при использовании глобальных алгоритмов,  может быть ограничен за счет использования локальных алгоритмов замещения.

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

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

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

    • Менеджер виртуальной памяти:

  • управление виртуальными адресными пространствами процессов;

  • разделение памяти между процессами;

  • защита виртуальной памяти одного процесса от других процессов.

  • Менеджер виртуальной памяти (VMM) является составной частью ядра ОС. Приложения не могут получить к нему прямой доступ.

  • Для управления памятью прикладным программам предоставляются различные интерфейсы (API).

    • Virtual Memory API - набор функций, позволяющих приложению работать с виртуальным адресным пространством: назначать физические страницы блоку адресов и освобождать их, устанавливать атрибуты защиты.

    • Memory Mapped File API - набор функций, позволяющий работать с файлами, отображаемыми в память. Новый механизм, предоставляемый Win32 API для работы с файлами и взаимодействия процессов.

    • Heap Memory API - набор функций, позволяющих работать с динамически распределяемыми областями памяти (кучами).

    • Local, Global Memory API - набор функций работы с памятью, совместимых с 16-битной Windows. Следует избегать их использования.

    • CRT Memory API - функции стандартной библиотеки языка “С” периода исполнения (runtime).

    • Архитектура api управления памятью.

    • Адресное пространство процесса:

    • Средства защиты памяти:

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

    • Отдельное адресное пространство для каждого процесса. Аппаратура запрещает процессу доступ к физическим адресам другого процесса.

    • Два режима работы: режим ядра, в котором процессам разрешен доступ к системным данным, и пользовательский режим, в котором это запрещен.

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

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

    • Страничное преобразование:

    • Виртуальная память в Windows имеет страничную организацию, принятую во многих современных ОС. Процессоры Intel начиная с Pentium Pro позволяют ОС применять одно-, двух- и трехступенчатые схемы. И даже разрешается одновременное использование страниц различного размера. Эта возможность, конечно, повысила бы эффективность страничного преобразования, будь она внедрена в Windows. Однако Windows возникла раньше и поддерживает только двухступенчатую схему преобразования с фиксированным размером страниц.

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

    • 32-разрядный виртуальный адрес в ОС Windows разбивается на три части:

    • Старшие 10 разрядов адреса определяют номер одного из 1024 элементов в каталоге страниц, адрес которого находится в регистре процессора CR3. Этот элемент содержит физический адрес таблицы страниц.

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

    • Размер страницы - 4 Кбайт, и младших 12 разрядов линейного адреса как раз хватает (212 = 4096), чтобы определить точный физический номер адресуемой ячейки памяти внутри этой страницы.

    • Элемент таблицы страниц (Page Table Element)

    • Защита – Win32 API поддерживает ряд значений, в том числе: PAGE_NOACCESS, PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE.

    • Базовый физический адрес страницы в памяти.

    • Pagefile – индекс используемого файла подкачки (один из 16 возможных в системе файлов).

    • State – состояние страницы в системе:

  1. T (Transition) – отмечает страницу как переходную;

  2. D (Dirty) – страница, в которую была произведена запись;

  3. P (Present) – страница присутствует в ОП или находится в файле подкачки.