
- •19. Динамическое распределение памяти.
- •20. Система двойников.
- •21. Страничная организация памяти.
- •22. Сегментирование.
- •23. Виртуальная память. Принцип локализации.
- •24. Страничная организация и виртуальная память. Таблица страниц. Буфер поиска трансляции.
- •26. Выбор размера страниц. Комбинация сегментации и страничной организации.
- •27. Стратегии выборки и размещения страниц.
22. Сегментирование.
Программа и связанные с ней данные разделяются на сегменты. Сегменты не обязаны
быть одинакового размера. Логический адрес также состоит из номера сегмента и
смещения внутри него. Сегменты могут занимать несколько разделов, которые не
обязательно являются смежными. В остальном этот подход похож на динамическое
распределение, ему также свойственна внешняя фрагментация, однако ее степень
снижается за счет разбиения процесса на небольшие части (сегменты). Главный
недостаток – нужно следить, чтобы размер сегмента не превысил максимально
возможный.
В таблице сегментов кроме адреса сегмента в памяти, хранится и его длина (если
смещение больше длины, адрес некорректен). Также хранится список свободных блоков
памяти. Физический адрес – это сумма физического адреса начала сегмента и смещения.
23. Виртуальная память. Принцип локализации.
В основе концепции виртуальной памяти лежит идея о том, что наличие всех страниц
или сегментов процесса в основной памяти одновременно не является обязательным.
Страницу или сегмент будем обобщенно называть блоком. При загрузке процесса в память
ОС размещает в памяти только один или несколько блоков процесса, в том числе блок,
содержащий начало программы.
Часть процесса, располагающаяся в некоторый момент времени в основной памяти,
называется резидентным множеством процесса. С помощью таблицы страниц или
сегментов процессор может определить, загружен ли запрашиваемый блок в основную
память. Если в основной памяти нет нужного логического адреса, ОС необходимо
загрузить в основную память нужный блок. Процесс блокируется, ОС осуществляет
операцию ввода-вывода (загружает нужный блок), после чего переводит процесс в
состояние готовности.
При использовании виртуальной памяти отмечаются следующие положительные
моменты:
1. В основной памяти ожжет находится большее кол-во процессов, что приводит к
повышению эффективности использования процессора, т.к. повышается
вероятность наличия активных процессов в памяти.
2. Процесс может быть больше, чем вся основная память. Таким образом,
программисту доступен огромный объем памяти.
Т.к. процесс выполняется только в основной памяти, она также называется реальной.
Память, выделенная на диске, для хранения выгруженной части процессов, называется
виртуальной памятью.
Локализация
Почему использование виртуальной памяти является эффективным, несмотря на
необходимость операций ввода-вывода для загрузки нужных блоков? В каждый
небольшой промежуток времени выполнение программы сосредоточено, как правило, в
малой части кода, которая обращается к одному или двум массивам данных – это явление
называется локализацией. Поэтому загружать в память все данные и код необязательно,
достаточно блоков, к которым вероятнее всего будет обращаться программа в ближайший
промежуток времени.
Когда наступает необходимость выгрузить некоторые блоки из памяти для
освобождения места другим процессам, нужно выбрать блок, который с наименьшей
вероятностью нужен будет в ближайшее время. Такие алгоритмы основаны также на
принципе локализации (как правило, выгружаются блоки, к которым дольше всего не
обращались).