Билеты (Graur) (1114774), страница 34
Текст из файла (страница 34)
Нозато это просто и дешево.3.Гибридные решения. Т.е. Те, которые имеют и программную и аппаратнуюсоставляющую.Решение проблем, связанных с размерами таблицы страниц – иерархическаяорганизация таблицы страниц.Предположим, что таблицы страниц индексируются по номерам соответствующихвиртуальных страниц. Содержимое каждой записи – информация осоответствующей виртуальной странице.Поля:α – присутствие/отсутствие. Если этот признак установлен, то это означает, что вполе «номер физической станицы» находится та самая физическая страница, ккоторой мы обращаемся. Если отсутствует, то возможны 2 варианта: либо этастраничка запрещена для данного процесса, либо она разрешена, но сама страницав это время откачена во внешнюю память.
Но в любом случае, если есть элементотсутствия, то при обращении к этой строчке происходит прерывание.β – поле защиты (чтение, чтение/запись, выполнение). Когда процессор доходит дотаблицы страниц, он уже знает, с какой целью он получает этот адрес. Либо этотадрес есть операнд, куда мы хотим записать, либо этот адрес есть операнд, изкоторого мы хотим считать информацию, либо этот адрес есть операнд команды,которую я хочу выбрать и выполнить (goto адрес). Соответственно это полеобеспечивает защиту.
Т.е. в зависимости от того, с какой целью процессоробращается к этой строчке, и содержимого этой строчки (а содержимое могут бытькоды, которые разрешают чтение, или чтение/запись, или выполнение, илизапрещают их – так же как в ФС), то при нарушении происходит прерывание.γ – признак изменения (модификации). Если мы в эту страничку писали, то этотпризнак будет установлен. Этот признак устанавливается обычно аппаратно –автоматически. Снимается он либо аппаратно, либо программно ОС.δ – обращение (чтение, запись, выполнение). Когда мы обратились либо зачтением, либо за записью и т.д.ε – признак блокировки кэширования.
Я заказал обмен: прочесть информацию свнешнего устройства на какую-то страницу, в конечном итоге физическуюстаницу. А на самом деле Ν страниц у меня находится в КЭШе. Как разрешить этуколлизию? Внешнее устройство кинет информацию в физическую память, а насамом деле я работаю с КЭШем, а потом из КЭШа я это переобновлю и всепотеряется. Для того, чтобы можно было синхронизовать эту вещь, используетсяблокировка кэширования. Здесь, кроме управления оперативной памятью вконтексте того, о чем говорим, мы еще добавляем некоторую информацию и втемы, связанные с управлением вводом/выводом и в темы, связанные скэшированием.Для разрешения всех коллизий, связанных со скоростью, размерами и прочим,используются гибридные решения.
И, в частности, одно из решений основываетсяна TLB буферах.TLB (Translation Lookaside Buffer) – Буфер быстрого преобразования адресов. Впроцессоре есть буфер (не большой), который используется в качестве КЭШтаблицы страниц.Структура буфера: Каждая запись содержит 2 поля - №виртуальной страницы и №физической страницы. TLB буфер – буфер оперативной памяти. Поиск идетпараллельно: за одну операцию просматривается наличие всей таблицы.Мы мимеем виртуальный адрес, в котором традиционно есть поле: «виртуальнаястраница» и есть поле «смещение». Процессор выбирает поле «виртуальнаястраница» и обращается к TLB буферу. Если мы фиксируем факт попадания, то вэтом случае автоматически происходит замена поля виртуальной страницы насодержимое поля физической страницы – так мы получили физический адрес совсеми вытекающими параметрами, которые могут находиться в TLB. Если мыфиксируем промах, то в этом случае происходит прерывание, управлениепередается ОС.
И ОС уже программно находит необходимую строчку и обновляетTLB буфер и соответственно дообрабатывает команду преобразованиявиртуального в физический.Вирт. адрес:offsetVPФизическаяпамять:TLB...вирт. стр.физ. стр.hitФизическийадрес:fpmisoffsets...Таблицастраниц:Иерархическая организация таблицы страницПроблема – размер таблицы страниц.Объем виртуальной памяти современногокомпьютера - 232,…264Пример:Vвирт.= 232Vстр.
= 212(4Kb)Количество виртуальных страниц – 220(много)Решение – использование многоуровневых таблиц страниц (2х, 3х, 4х)Современные системы используют многоуровневую организацию таблицыстраниц.Двухуровневая организацияVPOffset20VP112VP210Индекс по «внешней» таблицестраницOffset1012Смещение по странице, указаннойчерез VP1Система разделяет VP на 2 подполя: VP1 - индекс по внешней таблице страниц, аVP2 – смещение по странице, на которую указывает VP1. >4 уровней иерархиисчитается не целесообразно.Многоуровневая организацияСуть многоуровневости достаточно простая: если мы имеем виртуальный адресследующей структуры (на слайде): смещение 4кб и 20-ти разрядный адрес, тосистема разделяет поле виртуальной странички на два подполя. 1-е подполе – этоиндекс по внешней таблице страниц, через этот индекс мы попадаем на страничку,в которой находится продолжение описания этой таблицы; 2-е поле – это смещениепо этой странице.
Т.е. мы имеем внешнюю таблицу, по VP1 мы индексируемся исоответственно по содержимому этой таблицы попадаем на некоторую страницу, вкоторой находится часть таблицы страниц 2-го уровня. И по VP2 мы проходимсмещение по этой странице и в соответствующем элементе получаем номерфизической страницы. Этих уровней может быть 2, 3, 4. Больше 4-х считаетсянецелесообразным. Для 64-х разрядных машин таких уровней если ихреализоввывать должно быть не менее 7, что совсем нецелесообразно.Использование хэштаблицХЭШ функции изначально использовались при организации таблицы имен.ХЭШ – функция берет номер виртуальной страницы и по этому номерувиртуальной страницы имеется некоторая функция, которая определяет номерзаписи хэш-таблицы. С этой записью связан список виртуальных страниц с ихфизическими страницами, которые имеют одинаковое значение хэш-функции. Этоозначает, что при преобразовании мы берем виртуальную страницу и фактическиавтоматически попадаем на этот самый список.
Дальше по этому списку мы можемдойти до искомой страницы и получаем физическую страницу. Если в списке нет,то это означает, что и странички такой нет.Инвертированные таблицы страницИспользуется в более развитых системах, системах аппаратно поддерживающихpid обрабатываемого процесса.Каждая строка таблицы соответствует конкретной физической странице.Проблема – поиск по таблицеЗамещение страницПроблема загрузки «новой» страницы в память, если свободных мест в памяти нет.Необходимо выбрать страницу для удаления из памяти (с учетом ее модификациипр.)Алгоритм NRU (Not Recently Used – не использовавшийся в последнее время)Используются биты статуса страницы.
R – обращение, М – модификация.Устанавливаются аппаратно при обращении или модификации.Алгоритм1.При запуске процесса M и R для всех страниц процесса обнуляются2.По таймеру происходит обнуление всех битов R3.При возникновении страничного прерывания ОС делит все страниц на классы:•Класс 0: R=0; M=0; - не читался и не изменялся.•Класс 1: R=0; M=1;•Класс 2: R=1; M=0;•Класс 3: R=1; M=1;4.Случайная выборка страницы для удаления в непустом классе с минимальнымномеромСтратегия: лучше выгрузить измененную страницу, к которой не было обращенийкак минимум в течение 1 «тика» таймера, чем часто используемую страницуОС фиксирует время размещения страницы.
Наиболее старую страницу удаляем,но это может быть неправильно, т.к. старая может часто использоваться, а новая редко. Поэтому используется модификация этотого алгоритма. R – бит обращения.1.Выбирается самая «старая страница». Если R=0, то она заменяется2.Если R=1, то R – обнуляется, обновляется время загрузки страницы в память (т.е.переносится в конец очереди). На п.1Алгоритм FIFO«Первым прибыл – первым удален» - простейший вариант FIFO. Для каждойстраничке, которая была помещена в память, ОС фиксирует время ее размещения.Соответственно после этого наиболее старую страницу ОС удаляет. Это не оченьсправедливо (проблемы «справедливости»).
Потому что в этом случае стараястраница может активно использоваться и быть удалена. Поэтому реальноиспользуются модификации алгоритма FIFO.Модификация алгоритма (алгоритм вторая попытка):1.Выбирается самая «старая страница». Если R=0, то она заменяется2.Если R=1 (к ней обращения идут), то R – обнуляется, обновляется время загрузкистраницы в память (т.е. считается, что она была загружена в момент обнуленияпризнака чтения, т.е. фактически она переносится в конец очереди). На п.1(начинаем смотреть следующую).Алгоритм «Часы»Алгоритм аналогичен предыдущему, только все страницы связаны в кольцевойсписок.
Существует указатель (стрелка) на текущую страницу.Алгоритм LRU (Least Recently Used – «менее недавно» - наиболее давноиспользуемая страница)Пусть в памяти N – страниц. Составляется битовая матрица NxN (изначально всебиты обнулены). При каждом обращении к iой странице происходит присваивание1 всем битам iой строки и обнуление всех битов iго столбца. Строка с наименьшим2ным числом соответствует искомой странице.Алгоритм NFU (Not Frequently Used – редко использовавшаяся страница)Развитие предыдущего алгоритма.Для каждой физической страницы заводится программный счетчик, которыйизначально обнулен.
По таймеру к счетчикам прибавляется признак доступа.В момент принятия решения выбирается страница с минимальным значениемсчетчика.Это все решается программно.Недостаток – если процесс поработал и «сидит без дела», то удалить его неудастся, а он не работает.Модификация:1.Значение счетчика сдвигается на 1 разряд вправо.2.Значение R добавляется в крайний левый разряд счетчика.Достоинства страничной памяти:- нет проблемы внешней фрагментации- никак не ограничены размерами физической памяти, т.е. мы часть страницможем всегда держать во вне и через прерывания их закачивать, когда онинам нужныНедостатки:- проблема принятие решений об организации таблицы страниц- при страничной организации памяти адресное пространство представляетодну модель от 0 до Ν.
Т.е. мы работаем с одним пространством адресации вэтом процессе. В некоторых ситуациях это бывает не очень удобно.Билет 52. Управление ОП. Сегментное распределение.Сегментная организация памятиОсновные концепции:•Виртуальное адресное пространство представляется в виде совокупности сегментов•Каждый сегмент имеет свою виртуальную адресацию (от 0 до N-1)•Виртуальный адрес: <номер_сегмента, смещение>Необходимые аппаратные средства для организации сегментной памяти достаточноконцептуально просты. Это таблица сегментов, по которой при вычислении физическогоадреса из виртуального мы можем индексироваться по номеру сегмента.
Соответственнокаждая запись таблицы сегментов содержит размер сегмента и адрес начала сегмента.«+» простота реализации«+» размер таблицы сегментов может быть много меньше размера таблицы страниц«-» наличие внешней фрагментации«-»сегмент рассматривается как единое целоеNsegoffsetNsegдаsizebaseoffset > sizeПрерываниенетbase + offsetТаблицасегментовФизическийадресПреобразование происходит достаточно просто: мы индексируемся по таблице, получаемзапись, после этого сравниваем смещение с размером сегмента:если смещение выходит за пределы размера – происходит прерывание,иначе мы значению базы прибавляем смещение и получаем физический адрес.Упрощенная модель Intel.Виртуальный адрес содержит 2 поля: селектор и смещение.