Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KONSP OT.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.76 Mб
Скачать

Глава 6. Запоминающие устройства пк

от разрядности адресных шин, поскольку максимальное количество адресов опре­деляется разнообразием двоичных чисел, которые можно отобразить в п разря­дах, то есть адресное пространство равно 2", где п — разрядность адреса. За осно­ву в ПК взят 16-разрядный адресный код, равный по длине размеру машинного слова. При помощи 16-разрядного представления адреса можно непосредственно адресовать всего 216 = 65 536 = 64 Кбайт ячеек памяти. Это 64-килобайтовое поле памяти, так называемый сегмент, также является базовым в логической структу­ре ОП. Следует заметить, что в защищенном режиме размер сегмента может быть иным и значительно превышать 64 Кбайт.

Современные ПК (кроме простейших бытовых компьютеров) имеют основную память, емкостью существенно больше 1 Мбайт. Но память до 1 Мбайт является еще одним важным структурным компонентом ОП — назовем ее непосредствен­но адресуемой памятью (справедливо полностью только для реального режима). Для адресации 1 Мбайт = 220 = 1 048 576 ячеек непосредственно адресуемой па­мяти необходим 20-разрядный код, получаемый в ПК при помощи специальной структуризации адресов ячеек ОП.

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

Адрес сегмента сегм) — это начальный адрес 64-килобайтового поля, внутри ко­торого находится адресуемая ячейка.

Адрес смещения см) — это относительный 16-разрядный адрес ячейки внутри сегмента.

Лсегм должен быть 20-разрядным, но если принять условие, что Лссгм должен быть обязательно кратным параграфу (в последних четырех разрядах должен со­держать нули), то однозначно определять этот адрес можно 16-разрядным ко­дом, «увеличенным» в 16 раз, что равносильно дополнению исходного кода спра­ва 4 нулями и превращению его, таким образом, в 20-разрядный код. То есть условно можно записать:

^абс = 16 X Лсегы + Аси.

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

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

Основная память

159

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

ИНДЕКС IF СЛ

где СЛ — вспомогательная служебная информация; F — идентификатор, опреде­ляющий тип таблицы дескрипторов для формирования Асеп1 (таблицы дескрип­торов создаются в ОП при виртуальной адресации автоматически):

О если F= О, то используется глобальная таблица дескрипторов (GDT ), общая для всех задач, решаемых в ПК в многозадачном режиме;

□ если F= 1, то используется локальная таблица дескрипторов (LDT), создавае­мая для каждой задачи отдельно.

В соответствии с индексом и идентификатором из GLT или LDT извлекается 64-битовая строка, содержащая, в частности, и адрес сегмента. Разрядность этого адреса зависит от размера адресного пространства микропроцессора, точнее рав­на разрядности его адресной шины. Подобная виртуальная адресация использу­ется в защищенном режиме работы микропроцессора. Для большей плотности размещения информации в оперативной памяти (уменьшения сегментированности, характерной для многозадачного режима) часто практикуется сегментно-странич-ная адресация, при которой поля памяти выделяются программам внутри сегмен­тов страницами размером от 2 до 4 Кбайт. Формирование сегментно-страничной структуры адресов выполняется автоматически операционной системой.

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

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

160

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