Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UchbnoePosobieV14 - p2.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.08 Mб
Скачать

4.1.7.Управление виртуальной памятью

Виртуальная память в современных системах может быть организована в 4-х вариантах (см. Рис. 4 .1): страничная память плоская память, сегментная память и сегментно-страничная ВП.

Различие в организации виртуальной памяти наибольшим образом сказываются на многозадачной системе. Очевидно, производительность системы в определяется бездействием процессора, основной причиной которого является время ожидания окончания операций ввода/вывода. Пусть средняя вероятность простоя равна p, тогда в однозадачной системе вероятность работы процессора pзанятости определяется формулой: pзанятости = 1 - p. Время ожидания процессора, по оценкам специалистов, [16] достигает 80 %. В системах РВ используют для уменьшения простоя, например, специальный драйвер, который время ожидания нажатия клавиши отдаёт в распоряжение процессора и начинает обрабатывать ввод символа только после непосредственного нажатия клавиши.

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

pзанятости = 1 - pn,

где n – число процессов.

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

Плоская организация виртуальной памяти. При такой организации все пространство ВП представляет собой единый раздел адресуемой памяти объёмом 2К, где K – разрядность процессора. Структура плоской виртуальной памяти аналогична физической памяти и преобразование адресуемого пространства в физические адреса осуществляется быстрее, чем в любой другой модели памяти: просто ко всем адресам ВП добавляется величина, равная начальному физическому адресу. На первый взгляд создается впечатление, что это обстоятельство может создать хорошую основу для оптимизации подкачки процессов. На практике, при такой модели памяти можно осуществить только подкачку процессов целиком, а она, в целом, уступает частичной (страничной) промежуточной загрузке и выгрузке. Стандарт POSIX рекомендует страничную память.

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

Сегментная виртуальная память. Сегмент (в отличие от страницы) – это переменный раздел памяти. В сознании пользователей персональных компьютеров сегментная память прочно ассоциируется с реальным режимом, который является исконным для семейства машин IBM PC. Появление этого вида виртуальной памяти в указанном семействе связано с расширением адресного пространства в условиях жестких ограничений, которые были связаны с 16–ти разрядными процессорами. Адрес формировался за два обращения к процессору и за счет этого адресное пространство увеличилось до величины 220 (см. разд. 3.7.1). Такая адресация как минимум имеет два существенных недостатка:

  • замедленное формирование адреса;

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

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

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

Размер виртуального адреса составляет 32 бита. Младшие 12 бит отводятся для идентификации смещения в странице размером 4 кб. Остальные 20 бит делятся на две части (например, пополам). Старшая часть указывает на строчку в таблице локальных дескрипторов, где записан базовый адрес сегмента. Другая часть определяет номер страницы в этом сегменте.

Обычно такая структура ВП применяется редко.

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