Управление памятью в многозадачном режиме

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

Как уже говорилось выше, основная идея управления адресным пространством компьютера и его оптимальным распределением между различными процессами и пользовательскими задачами основывается на концепции разделения виртуального и физического адресных пространств и автоматического преобразования используемых в командах виртуальных адресов для их отображения в физическую память. В отличие от 16-разрядных ЭВМ, пользователю 32- и 64-разрядных компьютеров при разработке программ предоставляется адресное пространство начиная с нулевого адреса и до максимального, равного соответственно 232 - 1 и 264 - 1. Разбиение про-

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

Рассмотрим для примера управление памятью для 32-раз- рядной ЭВМ. Виртуальное адресное пространство размером 232 адресов разделяется на страницы, например по 512 байт (9 разрядов в адресе). Программа строится в виде последовательности набора страниц, пронумерованных от нуля до некоторого значения. Старшие разряды (с 9-го по 31-й) виртуального адреса определяют номер виртуальной страницы.

Физическая память также разделяется на страницы по 512 байт. Адресация страниц физической памяти выполняется с помощью 23-разрядного адреса (23 = 32 - 9). Младшие 9 (с 0-го по 8-й) разрядов физического адреса указывают номер байта внутри страницы, а старшие 23 разряда — номер страницы в физической памяти.

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

Общая структура отображения виртуальных адресов в физическую память представлена на рис. 13.4.

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

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

Управление памятью ЭВМ

Рис. 13.4. Управление памятью ЭВМ

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

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

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

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

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

Для трансляции виртуальных адресов в физические используется структура данных, называемая таблицей страниц (таблицей преобразования адресов). Эта таблица содержит информацию, необходимую для трансляции адресов. Таблица страниц представляет собой набор записей, по одной на каждую страницу виртуальной памяти. Каждая запись указывает на режим доступа процессора (чтение, запись, недоступна) к соответствующей странице физической памяти, расположение страницы в физической памяти или на диске, номер страницы в физической памяти, если она там находится.

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

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

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

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

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

Формирование физического адреса

Рис. 13.5. Формирование физического адреса

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

Контрольные вопросы

  • 1. В чем состоит проблема управления памятью ЭВМ, в чем отличие этой проблемы для 16- и 32- (64-)разрядных ЭВМ?
  • 2. В чем состоит концепция разделения понятий физического адресного пространства (физической памяти) и логического (логической, виртуальной памяти)?
  • 3. Какой максимальный объем памяти можно адресовать с помощью 16-разрядного адресного слова?
  • 4. Каким образом в 16-разрядной ЭВМ может быть организована возможность формирования адреса для работы с оперативным запоминающим устройством объемом 1 Мбайт (сколько разрядов в адресе для этого требуется)?
  • 5. Каким образом осуществляется отображение страниц логического адресного пространства программы пользователя на страницы физической памяти?
  • 6. Для чего используются регистры адреса страниц (сегментные регистры) процессора?
  • 7. Что такое и для чего используются страничные таблицы?
  • 8. Что такое свопинг?

Глава 14

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >