Организация ЭВМ и систем. Однопроцессорные ЭВМ. Часть 3

       

СЕГМЕНТНО-СТРАНИЧНАЯ ОРГАНИЗАЦИЯ ПАМЯТИ


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

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

организацией памяти.

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

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

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

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

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

4 Кбайт хорошо подходит для функционирования операционных систем и для подсистем ВВ дисков, а также обеспечивает хороший коэффициент удачных обращений для внутрикристального кэш страниц. Следует отметить, что с появлением процессоров Pentium возникла возможность поддержки страниц размером 4 Мбайт. Однако при дальнейшем изложении материала размер страницы подразумевается 4 Кбайт.

Следует, однако, иметь в виду, что виртуальной памяти

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



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


Такая преемственность достигается в основном двумя путями:

-       Созданием новых моделей процессоров, расширенные системы команд которых "накрывают" системы команд прежних моделей. Так, все процессоры фирмы Intel семейства I80х86, в том числе 32-разрядные (I80386, I80486, Pentium, Pentium Pro), включают в себя как подмножество системы команд и архитектуры нижестоящих моделей, начиная с базовой модели I8088;

-       Созданием новых операционных систем, поддерживающих возможность эмуляции прежних структур логического адресного пространства памяти. Так, все версии операционной системы MS-DOS, включая последние (например,

MS DOS 6.22), поддерживали реальный режим, эмулирующий фактически адресное пространство PC/XT.

Для иллюстрации изложенного очень коротко рассмотрим процесс эволюции первых поколений IBM PC.

Как уже отмечалось, первые МП фирмы Intel появились в конце 60-х годов. Затем появились процессоры I8086 и I8088, положившие начало целому семейству МП. Они имели 20-разрядную ША и совершенно идентичную внутреннюю структуру, т.е. имели 16-разрядное АЛУ, но I8086 подключался к 16-разрядной ШД, а I8088 – к

8-разрядной. В 1981 году фирма IBM выпустила свою первую модель IBM PC, построенную на базе процессора I8088. Она имела ОП емкостью 256 Кбайт и два floppy-диска (f-диска) по 160 Кбайт. IBM PC работал под управлением первой версии операционной системы MS DOS-1.00, созданной с расчетом более широких возможностей процессора, в частности прямоадресуемой памяти объемом 1 Мбайт. Под прямоадресуемой памятью понимается то адресное пространство, которое доступно процессору при данной разрядности ША.

Уже в 1981 году фирма IBM начала выпуск более совершенной модели компьютера IBM PC/XT, построенной на базе процессора I8086. Эта модель выпускалась до 1984 года. Она имела ОП емкостью 640 Кбайт, винчестер емкостью 10 Мбайт и два

f-диска по 360 Кбайт. Для модели XT была написана вторая версия операционной системы MS DOS-2.00, полностью поддерживающая указанную конфигурацию устройств PC.


Эта версия операционной системы явилась "родоначальницей" всех последующих версий MS DOS, под управлением которых работали все последующие модели PC фирмы IBM.

Именно с появлением на рынке модели IBM PC/XT началось массовое внедрение PC в хозяйственную и научную деятельность человека. В результате было наработано огромное количество прикладных программ, возможность использования которых необходимо было предусмотреть в более поздних моделях PC фирмы IBM.

Упрощенная структура прямоадресуемой памяти компьютера IBM PC/XT, работающего под управлением MS DOS-2.00, изображена на рис. 9.14.

Из структуры следует, что для пользователя была доступна только область прямоадресуемой памяти объемом 640 Кбайт (ОП), из которой непосредственно под прикладные программы отводился участок между адресами 70 Кбайт и 640 Кбайт, т.е. не более 570 Кбайт памяти. Верхняя зона прямоадресуемой памяти между адресами 640 Кбайт и 1024 Кбайт объемом 384 Кбайт отводилась под системные нужды и к ОП не относилась.



Однако очень скоро, особенно с появлением электронных таблиц, такой объем ОП перестал удовлетворять пользователей. Частичное решение проблемы расширения объема ОП было найдено посредством использования плат EMS-памяти,

или expanded memory. Первоначально это было физическое устройство в виде отдельной платы с БИС памяти (обычно общим объемом от 2 до 30 Мбайт), устанавливаемой в слот расширения шины ISA. Но процессор не мог обращаться с ней напрямую – не позволяла разрядность ША и существующая операционная система, поэтому для общения процессора с EMS-памятью были использованы свободные от системных программ участки прямоадресуемой памяти в зоне адресов

640К-1024 Кбайт, называемые окнами. При этом процессор не мог общаться с участками EMS-памяти, размер которых превышал размер окна, что было существенным ограничением. Между тем использование EMS-памяти решало многие проблемы, связанные с недостаточным объемом ОП (всего 640 Кбайт).

Так, например, в одной из конфигураций вычислительных систем роль прохода ко всей EMS-памяти играло окно размером 64 Кбайт.


Данное окно, называемое также страничным кадром EMS, делилось на страницы

размером 16 Кбайт. Страницы такого окна (страничного кадра) могли располагаться в несвязных свободных областях системной памяти (объемом не менее 16 Кбайт) между адресами 640 Кбайт и 1024 Кбайт. Таким образом, окно размером 64 Кбайт содержало в себе 4 страницы. Условно отображение адресного пространства на страницы EMS-памяти можно изобразить схемой, приведенной на рис. 9.15 (для упрощения рисунка все страницы окна расположены подряд в одной общей свободной зоне системной памяти).

Совершенствование технологии производства СБИС привело к тому, что необходимость в специальной плате EMS-памяти со временем исчезла, поскольку разработанные БИС памяти имели объемы, существенно превышающие объемы плат EMS-памяти, используемые в IBM PC/XT. При этом понятие EMS-памяти сохранилось в последующих моделях компьютеров.

Процессор I80386 имеет 32-разрядную ША и может напрямую обращаться к ОП емкостью 4 Гбайт. Однако вследствие отмеченной уже необходимости использования наработанного ранее программного обеспечения на компьютерах более поздних моделей операционные системы, в частности MS DOS-6.22, предоставляют процессору для прямой адресации только участок ОП размером 1 Мбайт с адреса 0 Кбайт до 1024 Кбайт. Логическая структура такого участка рассматривалась выше. Таким образом, MS DOS-6.22 фактически эмулировала

адресное пространство компьютера IBM PC/XT и предоставляла в распоряжение пользователя ОП объемом

только 640 Кбайт. Вся остальная часть физического ОП компьютера (выше адреса

1024 Кбайт) считалась extended memory, на которой средствами MS DOS можно эмулировать EMS (expanded memory) необходимого объема. Общение процессора с EMS-памятью возможно только через окна, расположенные в поле адресов от

640 Кбайт до 1024 Кбайт. Такой подход позволял решать задачи, которые написаны для более ранних моделей компьютеров и "привыкли" использовать EMS-память. Режим процессора в этом случае называется реальным и означает, что в память компьютера, работающего под управлением, например, MS DOS-6.22, невозможно ввести программу, размер которой превышает 640 Кбайт, и она требует сегментации.



Между тем столь жесткие ограничения на объем ОП в базовых версиях

MS DOS совершенно не устраивали многих пользователей, тем более, что в других операционных системах (Unix, OS/2, Windows) их не было. Поэтому для MS DOS разрабатывались дополнительные пакеты программ, расширяющие ее возможности, например DOS для графических библиотек (DOS 4GL).


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