Краткая характеристика областей памяти в случае исполь-зования MS-DOS:
Базовая память (Base, Conventional) – основная память компьютера; занимает в массиве ОЗУ первые 640 кбайт (адреса 000 000–655 359), условно разбитые на 10 сегментов (0–9) по 64 кбайт каждый: в нее загружается DOS (рис. 2.16).
В первых двух килобайтах 0-го сегмента (адреса 0000–2048) размещены рабочие области DOS и BIOS, буферы устройств, таблицы векторов прерываний. Следующие несколько десятков килобайт используются для размещения драйверов операционной системы.
Оставшийся массив базовой памяти считается свободным и может быть использован прикладными (пользовательскими) программами. Объем свободной базовой памяти имеет для пользователя большое практическое значение. Многие программы предъявляют жесткие требования: "объем базовой памяти не менее ..." Если в компьютере на момент запуска этой программы памяти хотя бы чуть-чуть меньше, то работать она не станет. Для того чтобы освободить максимально возможный объем базовой памяти, используются всевозможные ухищрения. Например, драйверы устройств стремятся разместить в верхней памяти (UMA) или старших адресах (НМА).
Рис. 2.16. Структура базовой памяти
Верхняя память (UMA – UpperMemoryArea) – область ОЗУ между 640 кбайт и 1 Мбайт (1024 кбайт). Она зарезервирована для служебных целей.
Адресное поле сегментов А и В используется для размещения ОЗУ видеоконтроллеров (рис. 2.17).
Свободные области UMA, сегменты С, D, Е и F обычно используются программами-админи-страторами расширенной памяти для помещения в них резидентных программ и ядра DOS. Свободных фрагментов в UMA несколько, они называются блоками верхней памяти (Upper Memory Blocks – UMB). Поскольку размеры блоков UMA невелики, то нерезидентные программы туда обычно не загружаются, так как их код должен занимать непрерывную область памяти.
В настоящее время в этой области только два участка жестко закреплены за конкретными устройствами:
- в адресном пространстве сегмента С размещено ПЗУ видеоконтроллера (контроллер EGA использует 16 кбайт, VGA – 32 кбайт);
Рис. 2.17. Организация верхней памяти
- пространство сегмента F занято системным ПЗУ, находящимся на материнской плате.
Оставшиеся участки могут использоваться пользователем по своему усмотрению. В верхней памяти может быть создана теневая память (Shadow), т. е. в некоторых участках адресного пространства верхней памяти оказались параллельно подключенными оперативная память и блоки ПЗУ, находящиеся на материнской плате и контроллерах. Таких участков в настоящее время два: сегмент F и частично сегмент С. Обычно работает ПЗУ. Проектировщиками материнских плат был предложен вариант функционирования системы, при котором вместо медленного ПЗУ применяется более быстрое ОЗУ. По желанию пользователя возможен режим начальной загрузки компьютера, когда содержимое блоков ПЗУ переписывается в параллельные области ОЗУ, и в дальнейшем обращение идет к ним. Фактически в оперативной памяти создается копия – "тень" ПЗУ, отсюда и название режима. Управление работой теневой памяти выполняется через программу Setup.
Свободные участки в сегментах С, D и Е могут быть преобразованы при помощи утилиты EMM386.exe в блоки, пригодные для хранения информации. В них как правило размещены системные программы и драйверы. Весь объем верхней памяти, находящейся под управлением EMM386.exe, получил название UMB.
На 286-й и 386-й материнских платах с верхней памятью может быть выполнена переадресация (remaping). В аппаратной части этих плат была заложена возможность программного переключения (условного перемещения) части верхней памяти в область расширенной (сразу после первого мегабайта). Такой режим давал возможность на материнских платах, реально имеющих всего 1 Мбайт ОЗУ, создать область расширенной памяти и устанавливать на компьютер ОС Windows. На некоторых платах при создании режима Shadow переадресацию выполнить нельзя.
Расширенная память (EMA – ExtendedMemoryArea) – весь объем ОЗУ "выше, старше" первого мегабайта. Доступ к ней организуется при помощи драйвера HIMEM.sys (область, находящаяся под его управлением, получила название XMS – ExtendedMemorySpecification).
В системах "под DOS" возможности этого вида памяти ограничены:
− в расширенной памяти не может находиться операционная система;
− в ней невозможно создание рабочих областей устройств;
− находящиеся в EMA программы не могут быть выполнены.
В основном расширенная память используется для сохранения данных и программ. В составе ОС MS-DOS есть драйверы RAMDRIVE.sys и SMARTDRV.exe, ориентированные на работу с EMA. Для записи в расширенную память или считывания оттуда они переводят МП в защищенный режим, а затем возвращают в реальный.
Область старшей памяти, старшие адреса (НМА – HighMemoryArea) – область первых 64 кбайт (без 16 байт) расширенной памяти, доступ к которым можно получить без выхода из реального режима. Это дополнительный участок ОЗУ, пригодный для размещения компонентов операционной системы.
Для того чтобы объяснить, откуда появились эти 64 кбайт памяти, вспомним, как формируется адрес в МП. Если в старшие 16 разрядов сегментного регистра загрузить максимальное значение FFFF16 (a 4 младших автоматически устанавливаются в нуль) и задать смещение FFFF16, можно получить предельный адрес равный l'0FFEF16 (рис. 2.18). Адресный интервал 10000016 – l'0FFEF16 и составляет область старшей памяти. Управление размещением данных в старших адресах возложено на драйвер HIMEM.sys.
Рис. 2.18. Формирование адресного интервала области старшей памяти
Дополнительнаяпамять (Expanded Memory Area).
В компьютере доступ к дополнительной памяти (LIMEMS) реализует драйвер EMM386.exe. Для него необходим свободный участок ОЗУ размером в 64-килобайтный страничный блок (обычно он берется в верхней памяти – окно EMA). В процессе работы он делится на четыре 16-килобайтные логические страницы. На такие же по размеру страницы делится весь имеющийся объем дополнительной памяти. В логические страницы заносится информация, требующая сохранения. После этого их содержимое путем определенной программной процедуры копируется на одну из страниц дополнительной памяти. Затем в логические страницы помещается следующая порция данных и процедура повторяется. Страничный блок как перемещающееся смотровое окошко имеет доступ к любой точке области дополнительной памяти. Через него производится как запись, так и считывание.
Дополнительная память может быть использована для хранения данных и программ. С помощью драйверов RAMDRIVE.sys и SMARTDRV.exe в ней могут быть созданы электронный диск и буферы дисковых накопителей. Спецификацией EMS могут пользоваться только специально разработанные для этого программы. В связи с необходимостью частого переключения страниц и копирования их в UMA отображаемая память работает довольно медленно.
Электронный диск – программно построенная структура, по организации и принципу работы с ним идентичная логическому диску на винчестере. Доступ к нему при записи или чтении выполняется быстрее, так как нет медленной операции перемещения головок. Емкость невелика (не может превосходить по объему расширенную память). На электронном диске удобно держать короткие часто исполняемые программы. При выключении компьютера все содержимое диска теряется.
Виртуальная память – это такая система организации выполнения задания, при которой часть программы располагается в быстродействующей памяти (микросхемах), а часть – на некотором более медленном и дешевом запоминающем устройстве (например, жестком диске). Виртуальная организация памяти позволяет программисту работать, не заботясь о емкости реальной памяти. В системах виртуальной памяти диск превращается в основную память, а RAM (реальная память) содержит код и данные, используемые процессорами.
Механизм виртуальной памяти, реализованный на процессоре 80286, позволяет организовать виртуальную память большого объема при относительно небольших размерах оперативной и дисковой памяти. Основная идея виртуальной памяти заключается в хранении и обновлении на диске сегментов программы и загрузки их в оперативную память по мере необходимости. Процесс загрузки и выгрузки сегментов называется свопингом.
В версиях DOS6.x появилась утилита MEMMAKER, которая автоматически оптимизирует использование верхней памяти. Поскольку эта память фрагментирована, то не всегда удается вручную загрузить туда все желаемые резиденты. Кроме того, некоторые резидентные программы могут менять свой размер после загрузки. MEMMAKER просчитывает все возможные комбинации распределения программ по блокам верхней памяти (их может быть несколько десятков тысяч) и выбирает из них оптимальную. Следует отметить, что с этой задачей MEMMAKER справляется далеко не лучшим образом, поскольку он не обрабатывает командные файлы, вызываемые из файла AUTOEXEC.BAT, а также не способен изменить порядок загрузки драйверов и резидентов, что могло бы привести к более удачному варианту их размещения в верхней памяти. Однако существует специально разработанные драйверы оптимизации, позволяющие добиться лучших результатов: QEMM386, 386MAX и др.
2.4.1.3 Общая характеристика способов реализации
запоминающих устройств
В общем случае под запоминающим устройством (ЗУ) можно понимать любое устройство, которое хранит информацию для дальнейшего использования. При таком понимании ЗУ ПЭВМ можно разделить на два класса.
Первый класс ЗУ представляет собой память, которая хранит команды и данные, обрабатываемые МП непосредственно, т. е. в любой момент времени МП имеет доступ к любой команде или данным, например, ЗУПВ (ЗУ произвольной выборки – ОЗУ, ПЗУ).
Второй класс состоит из средств, которые могут хранить информацию, но ее необходимо передавать в память первого класса прежде, чем к ней может обратиться МП, например, внешние ЗУ (НГМД, НЖМД и др.).