Организация ЭВМ и систем

Страничное распределение


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

Вся оперативная память машины также делится на части такого же раз­мера, называемые физическими страницами

(или блоками).

Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.

Рис.4.14. Страничное распределение памяти

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

При активизации очередного процесса в специальный регистр процессо­ра загружается адрес таблицы страниц данного процесса.

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

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



- дольше всего не использовавшаяся страница;

- первая попавшаяся страница;

- страница, к которой в последнее время было меньше всего обраще­ний.

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

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

Рассмотрим механизм преобразования виртуального адреса в физиче­ский при страничной организации памяти (рис. 4.15).

Виртуальный адрес при страничном распределении может быть пред­ставлен в виде пары (р, s), где р — номер виртуальной страницы процесса (нумерация страниц начинается с 0), s — смещение в пределах виртуальной страницы. Учитывая, что размер страницы равен 2 в степени k, смещение s может быть получено простым отделением k младших разрядов в двоичной записи виртуального адреса.


Оставшиеся старшие разряды представляют со­ бой двоичную запись номера страницы р.

При каждом обращении к оперативной памяти аппаратными средствами

выполняются следующие действия:

1.

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

2.        Из записи извлекается номер физической страницы.

3.        К номеру физической страницы присоединяется смещение (младшие разряды виртуального адреса.



Рис.4.16. Распределение памяти сегментами

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

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, as — смещение в сегменте. Физический адрес получается путем сложения начального физического адре­са сегмента, найденного в таблице сегментов по номеру g, и смещения s.

Недостатком данного метода распределения памяти является фрагмен­тация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

Странично-сегментное распределение

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


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

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



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

Процесс преобразования адресов посредством таблиц является доста­точно длительным и, естественно, приводит к снижению производительности

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



Рис.4.18. Механизм динамического преобразования адресов

Виртуальный адрес страницы VA, составленный из полей g и р, переда­ется в ассоциативную память (буфер быстрой переадресации) в качестве по­искового признака — первое поле ассоциативного ЗУ (АЗУ). Вторым полем АЗУ является физический адрес страницы в ОП. При обнаружении совпаде­ния VAi с содержимым памяти из соответствующей ячейки АЗУ выбирается физический адрес страницы п, позволяющий сформировать полный физиче­ский адрес элемента данных, находящегося в ОП. Если совпадение не про­изошло, то трансляция адресов осуществляется обычными методами через таблицы сегментов и страниц. Эффективность механизма динамического преобразования адресов зависит от коэффициента «попадания», т.е.


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

 

Свопинг

Разновидностью виртуальной памяти является свопинг. На рис. 4.19 показан график зависимости коэффициента загрузки про­цессора в зависимости от числа одновременно выполняемых процессов и до­ли времени, проводимого этими процессами в состоянии ожидания ввода-вывода.



Рис. 4.19. Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода

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

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


Содержание раздела