Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NewОтветыОС_1.doc
Скачиваний:
37
Добавлен:
07.02.2015
Размер:
2.67 Mб
Скачать
  1. Упpавление памятью с помощью связанных списков. Алгоpитмы выделения памяти - 5 алгоpитмов.

Управление памятью с помощью связных списков

Связный спискок занятых и свободных фрагментов памяти, где сегментом является процесс, или участок между двумя процессами. Каждая запись в списке указывает, является ли область памяти свободной (Н, hole - дыра) или занятой процессом (Р, process); адрес, с которого начинается эта область; ее длину; содержит указатель на следующую запись.

Список отсортирован по адресам. Преимущество: когда процесс завершается или скачивается на диск, изменение списка представляет собой несложную операцию. Закончившийся про-

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

верху или на дне памяти). Соседями могут быть процессы или свободные фрагмен-

фрагменты:

Алгоритмы выделения памяти:

1) нахождение первого подходящего участка. Менеджер памяти просматривает список областей до тех пор, пока не находит достаточно большой свободный участок. Затем этот участок делится на две части: одна отдается процессу, а другая остается неиспользуемой.

2) Алгоритм «следующий подходящий участок» работает так же, как и 1 алгоритм, когда находит соответствующий свободный фрагмент, он запоминает его адрес. Когда алгоритм снова вызывается для поиска, он стартует с того самого места, где остановился в прошлый раз

3) «самый подходящий участок». Выполняет поиск по всему списку и выбирает наименьший по размеру подходящий свободный фрагмент. «−» медленнее «первого подход», т.к. каждый раз он производит поиск во всем списке «−» сильно фрагментирует память.

4) «самый неподходящий участок». Выбирает самый большой свободный участок, от которого после разделения остается область достаточн размера и ее можно использовать в дальнейшем.

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

5) «быстрый подходящий», поддерживает отдельные списки для некоторых из наиболее часто запрашиваемых размеров. Например, могла бы существовать таблица с n записями, в которой первая запись указывает на начало списка свободных фрагментов размером 4 Кбайт, вторая - 8 Кбайт, третья — 12 Кбайт и т. д. «+» поиск фрагмента требуемого размера происходит очень быстро, «−» много маленьких свободных областей памяти, при заверш или вырузке проц на диск, поиск его соседей с целью узнать, возможно ли их соединение, дорого.

  1. Виpтуальная память. Стpаничная оpганизация памяти. Диспетчеp памяти. Виpтуальные и физические адpеса.

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

Способы размещ прогр не помещ в дост физ пам: 1) Оверлей (overlay)– часть, разделен програм. Оверлей 0 запускался первым, выполнившись он вызывал следующий оверлей. Оверлеи хранились на диске и по мере необходимости динамически перемещались между памятью и диском средствами ОС(делить программы на части должен был программист).

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

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

Страничная организация памяти (paging)

Существ множество адресов в памяти, к которым может обратиться программа. Инструкция mov reg,1000 (копир содерж пам по адресу 1000 в регистр reg). Адреса могут формиров с использов индексации, базовых регистров, сегментных регистров и др. Эти программно формируемые адреса, называемые виртуальными адресами, формируют виртуальное адресное пространство. На комп без виртуал памяти виртуал адреса подаются на шину памяти и вызывают для чтения или записи слово в физич памяти с тем же самым адресом.

Когда использ виртуал память, виртуал адреса не передаются напрямую шиной памяти. Вместо этого они передаются диспетчеру памяти (MMU - Memory Management Unit), который отображает виртуальные адреса на физические адреса памяти.

Пример: компьютер, который формир 16-разряд адреса, от 0 до 64 К(виртуал адр). Но у этого компьютера только 32 Кбайт физической памяти, поэтому, хотя программы размером 64 Кбайт могут быть написаны, они не могут целиком быть загружены в память и запущены. Полная копия образа памяти программы размером до 64 Кбайт должна присутство-

присутствовать на диске.

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

Передача данных между ОЗУ и диском всегда происходит в страницах.

Когда программа пытается получить доступ к адресу 0, например, используя

команду mov reg, 0 : виртуальный адрес 0 передается диспетчеру памяти (MMU). Диспетчер памяти видит, что этот виртуальный адрес попадает на страницу 0 (от 0 до 8191), которая отображается страничным блоком 2 (от 16394 до 24575). Диспетчер переводит виртуальный адрес 0 в физический адрес 16394 и выставляет его на шину. Память ничего не знает о диспетчере памяти и видит просто запрос на чтение или запись слова по адресу 16394, который и выполняет. Таким образом, диспетчер памяти отображает все виртуальные адреса на физические адреса.

Страницы, обозначенные крестиками, не отображаются. В фактическом аппаратном обеспечении страницы, физически присутствующие в памяти, отслеживаются с помощью бита присутствия/отсутствия.

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

Например, если ОС решает удалить из оперативной памяти

страничный блок 1, она загружает виртуальную страницу 8 по физическому адре-

адресу 4 К и производит два изменения в карте диспетчера памяти. Во-первых, отме-

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

перехватывать в будущем любые попытки обращения к виртуальным адресам меж-

между 4 К и 8 К. Затем заменяется крест в записи для виртуальной страницы 8 на но-

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

виртуальный адрес 32780 на физический адрес 4108.

  1. Таблицы стpаниц и две важные пpоблемы. Многоуpовневые таблицы стpаниц.

Таблицы страниц

Номер вирт страницы используется как индекс в таблице страниц для поиска записи этой страницы. По записи в таблице страниц находится номер физического блока страницы (если это имеет место). Физ адр=ТаблСтр[#вирт стр]+смещение.

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

Проблемы: 1) Таблица страниц может быть слишком большой. современные компьютеры используют по крайней мере 32-разрядные виртуальные адреса. При размере стр= 4 Кбайт, 32-разр адресное пространство будет состоять из 1 миллиона страниц => таблица страниц должна состоять из одного миллиона записей.

2) Отображение должно быть быстрым. преобразование виртуальных адресов в физические должно быть выполнено для каждого обращения к ячейке памяти. 1 команда мож иметь до 4 обращ к памяти. Если Т выполн команды = 4 мс, то Т поиска в таблице страниц <1мс.

Ограничен на констр ЭВМ

1) поддержка таблиц страниц, сост из массива быстрых аппарат регистров с одной записью для каждой виртуал стран, индексированного по номерам виртуал стран. Когда процесс запускается, ОС загружает в регистры табл страниц процесса, данные берутся из копии, хранящейся в ОЗУ. «+» скорость ↑ →нет обращ к ОЗУ во время преобр адрес. «−» ↑ стоимость, необходимо загружать всю таблицы в регистры (производит ↓).

2) табл стр целиком располагается в ОЗУ. Все необходимое оборудование состоит из одного регистра, указывающего на начало таблицы страниц. Такая схема позволяет изменять карту памяти при контекстном переключении путем перезагрузки только одного регистра. «−» во время выполнения каждой инструкции программы требуется одно или несколько обраще-

ний к памяти для чтения записей таблицы страниц.

Многоуровневые таблицы страниц

Чтобы обойти проблему необходимости постоянного хранения в памяти огромных таблиц страниц, многие компьютеры используют многоуровневую таблицу страниц. 32-разрядный виртуальный адрес: РТ1-указ на табл 1 уровня, РТ2 – указ на табл 2 уровня. Т.к. под смещение отведено 12 бит, страницы имеют размер 4 Кбайт, и их всего 220.

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

Адрес ТС1 хранится в PSW в РТ1, адрес ТС2=Mem[TC1[PT1]], адрес физич проц=Mem[TC2[PT2]]+смещение

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

Физический адрес выставляется на шину и передается памяти.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]