Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_01 (XMS) Управление XMA.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
423.94 Кб
Скачать

2. Использование средств управления памятью

Теперь мы знаем, какие типы памяти могут быть в IBM-совместимых ПК, и какие структуры памяти могут быть организованы на них при работе в среде DOS. Для полной реализации некоторой структуры памяти необходима адекватная аппаратная и программная поддержка.

2.1. Общие положения

Для поддержки полной структуры памяти на ПК класса XT (рис. 3), если он снабжен платой отображаемой памяти, следует подключить к системе драйвер, поставляемый вместе с этой платой. Такой драйвер будет выполнять функции EMM.

Рис 4. Структура памяти ПК класса АТ. Рис. 5. Структура памяти ПК на МП

386 и выше

Чтобы реализовать полную структуру памяти на ПК класса AT (рис. 4) при наличии в нем расширенной памяти и платы отображаемой памяти, следует:

  1. подключить к системе драйвер HIMEM.SYS;

  2. подключить к системе драйвер, поставляемый вместе с платой отображаемой памяти.

Для загрузки резидентных модулей DOS в высокую память требуется указать в файле CONFIG.SYS команду DOS=HIGH.

Чтобы обеспечить поддержку полной структуры памяти на ПК с микропроцессором 80386. 80486 или Pentium (рис. 5), требуется:

  1. подключить к системе драйвер HIMEM.SYS;

  2. подключить к системе драйвер EMM386.БХЕ с переключателем RAM;

  3. специфицировать в файле CONFIG.SYS команду DOS=UMB.

Как и в предыдущем случае, для загрузки резидентных модулей DOS в высокую память требуется указать в файле CONFIG.SYS команду DOS=H1GH. Эту команду можно совместить с командой DOS=UMB, задав DOS=HIGH,UMB.

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

2.2. Драйвер himem.Sys: управление расширенной и высокой памятью

Назначение драйвера HIMEM.SYS: управление расширенной и высокой памятью в соответствии со спецификацией XMS 3.0.

Синтаксис строки запуска драйвера в файле CONFIG.SYS:

DEVlCE=[dir\] HMEM.SYS [/HMAIN=n] [/NUMHENDLES=m] [/INT15=p] [/EISA] [/A20CONTROL:{ON|OFF}] [/SHADOWRAM:{ON|OFF}] [/CPUCLOCK:{ON|OFF}] [/MACHINE:c] [/TESTMEM:{ON|OFF}] [/VERBOSE]

Комментарии. Этот драйвер выполняет две основньх функции:

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

  2. формирует высокую память и управляет ею.

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

Таким образом, драйвер HIMEM.SYS – это XMM, обеспечивает бесконфликтное совместное использование расширенной памяти несколькими программами и драйверами так, чтобы никакие из них не смогли одновременно задействовать в своих целях один и тот же фрагмент (блок).

В качестве расходного материала для высокой памяти используется первые 64 Кбайт расширенной памяти.

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

Переключатель /НМАМIN=n специфицирует минимальный размер (в Кбайтах) резидентной программы (или драйвера), которая может быть загружена в высокую память. Программа, загружаемая в высокую память, должна быть соответствующим образом оформлена, поскольку DOS не поддерживает никаких средств загрузки программ в эту память. Значение n должно принадлежать диапазону от 0 до 63 включительно. По умолчанию принимается 0. Т.е. в верхнюю память пропускается первая программа, которая этого потребовала, независимо от её размера. Поскольку в высокую память может быть загружена только одна программа, без переключателя /HMAMIN использование этой памяти может оказаться неэффективным. При указании переключателя /HMAMIN в высокую память будет загружена первая из требующих её программ, размер которой не меньше n (более крупная программа), что позволяет повысить эффективность использования памяти этого типа, освободив тем самым большее количество стандартной памяти.

Переключатель /NUMHENDLES = m задает максимальное число одновременно используемых обработчиков для EMB. Это число m должно лежать в диапазоне от 1 до 128 включительно, по умолчанию принимается 32. Следует иметь ввиду, что каждый обработчик дополнительно требует 6 байтов в стандартной памяти. Поэтому специфицировать переключатель имеет смысл только тогда, когда не хватает обработчиков сформированных по умолчанию.

Переключатель /INT15=p обеспечивает резервирование p килобайт расширенной памяти для доступа к ней через прерывание 15H вместо спецификации XMS. Это необходимо для работы ряда устаревших продуктов, которые обращаются к расширенной памяти непосредственно. В качестве p допустимо значение из диапазона 64—65535 включительно, если ПК имеет достаточное количество памяти. При указании числа меньше 64 используется нулевое значение. Оно же используется по умолчанию. Это означает, что вся расширенная память, за исключением первых 64 Кбайт для высокой памяти, становится доступной в соответствии со спецификацией XMS.

Переключатель /EISA обеспечивает выделение всей доступной расширенной памяти под использование в соответствии со спецификацией XMS. Этот переключатель необходим только в случаях подключения драйвера на ПК с системной шиной EISA при наличии более 16 Мбайт памяти.

Переключатель /A20CONTROL:{ON|OFF} указывает, брать(ON), или не брать (OFF) управление адресной линией А20. В том случае, когда она при подключении драйвера была активной. (Активность линии означает, что она , возможно, используется другим драйвером.) По умолчанию принимается ON. Если задано OFF, то управление со стороны драйвера HIMEM.SYS будет осуществляться только в том случае, когда при подключении драйвера она была пассивной. Вспомним. что посредством адресной линии А20 производится адресация высокой памяти. Так что, если управление адресной линией А20 драйвером не осуществляется, то высокая память может оказаться недоступной.

Переключатель, /SHADOWRAM:{ON|OFF} специфицирует, выключатель (OFF) или нет (ON) теневую память, если она на ПК поддерживается. Теневая память, - это область расширенной памяти (но логически адресуемая в пределах UMA как постоянная память), которая хранит копию BIOS для ускорения доступа к ней. (Известно, что постоянная память ПК более медленная, чем оперативная.) Копирование BIOS в теневую память, когда она на ПК поддерживается, и подмена адресов осуществляется в процессе загрузки DOS по прошитому в BIOS коду. Использование теневой памяти возможно только на ПК с микропроцессором 80386 и выше. Если теневая намять выключается, то ее область будет использоваться драйвером в соответствии со спецификацией XMS. Когда переключатель не задан, а емкость памяти ПК меньше 2 Мбайт, драйвер попытается самостоятельно выключить, теневую память, чтобы высвободить расширенную память для ее использования, в частности, в среде Windows. Однако автоматическое выключение возможно не на всех типах компьютеров. При большем размере памяти попытка автоматического отключения теневой памяти не производится, Отметим, что отключение теневой памяти замедляет работу ПК.

Переключатель /CPUCLOCK:{ON|OFF} указывает, корректировать (ON) или нет (OFF) тактовую частоту ПК. По умолчанию принимается OFF, Значение ON можно задать в случае, когда при подключении драйвере тактовая частота изменяется, что можно определить по показаниям системных часов. Однако при корректировке тактовой частоты работа драйвера замедляется.

Переключатель /MACHINE: c специфицирует тип адаптера адресной линии А20. Обычно он распознается драйвером автоматически. В случаях, когда опознать адаптер не удалось, считается, что использован адаптер, такой как в IBM PC AT. Поэтому переключатель имеет смысл задавать, только если адаптер драйвером не распознается и этот адаптер не совместим с адаптером адресной линии А20 ПК IBM PC AT. На момент выпуска MS-DOS 6.2 компьютерами с такими адаптерами были только Acer 1100, Wyse и IBM 7552. В качестве значения c допускается указывать код или номер ПК (см. табл., где приведены все допустимые значения). Различные коды и номера ПК для IBM PC AT соответствуют различным значениям времени обращения к памяти.

Переключатель /TESTMEM:{ON: OFF} определяет должен ли драйвер при его подключении к системе тестировать (проверять работоспособность и устойчивость функционирования) расширенной памяти. Драйвер способен тестировать память более «внимательно» чем это делает BIOS в начале «холодной» загрузки системы. Указание ON, а OFF – отменяет такое тестирование. При тестировании на экране отображается сообщение:

HIMEM is testing extended memory…

HIMEM тестирует расширенную память…

Таблица. Коды и номера ПК

Код

Номер

Тип ПК

AT

1

IBM PC AT (или полностью совместимый с ним), Abacus 386, Chaplet, CompuAdd 386, JDR 386/33, системная плата OPT 386-25, Pak :386SX. Everex AT Plus 1800, Everex Notebook ELX и Phoenix Cascade BIOS

PS2

2

IBM PS/2. Datamedia 386/486, Unisys PowerPort. а также BIOS PC 380/ЗЗС и PC 300/33C dерсии 1.14

PTLCASCADE

3

Phoenix Cascade BIOS

HPVECTRA

4

HP Vectra (A и А+), PC Limited

ATT6300PLUS

5

AT&T 6300 Plus

ACER 1100

6

Acer 1100

TOSHIBA

7

Toshiba 1600. 1200ХЕ и 5100

WYSE

8

Wyse 12,5 Мгц 286, Phoenix Cascade BIOS, Hitachi HL500C. Intel 301z или 302, а также CompulAdd 386

TULIP

9

Tulip SX

ZENITH

10

Zenith Data Systems ZBIOS

AT1

11

IBM PC AT

AT2

12

IBM PC AT

CSS

12

CSS Labs

AT3

13

IBM PC AT. Excel Computer Systems и Philips

PHILIPS

13

Philips

FASTHP

14

HP Vectra

IBM7552

15

IBM 7552 Industrial Computer

BULLM1CRAL

16

Bull Micral 60

DELL

1 7

Dell XBIOS

а после его успешного завершения справа от этого сообщения появляется слово done (сделано). Тестирование обеспечивается по умолчанию и увеличивает время загрузки DOS, но зато гарантирует безопасность при использовании расширенной памяти.

Переключатель /VERBOSE (сокращение — /V) обеспечивает отображение сообщений о статусе при подключении драйвера. Без переключателя эти сообщения на экран не выдаются. Однако если при подключении драйвера обнаружена ошибка, то сообщение об этом отображается независимо от того, задан ли переключатель /V. Когда переключатель /V не специфицирован, то сообщения о статусе можно получить, держа нажатой клавишу Alt во время подключения драйвера HIMEM.SYS при загрузке DOS.

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

-отображение о том, что подключить к системе драйвер HIMEM.SYS не получилось.

- отображение сообщения об отсутствии драйвера HIMEM.SYS при попытке подключить. драйвер EMM386.ЕХЕ. Загрузить администратор КЭШа SinartDrv, или запустить в работу Windows

.Чтобы справиться с проблемой, можно воспользоваться нижеприведенной процедурой:

  1. убедиться в том ,что драйвер HIMEM.SYS действительно не подключен или функционирует неправильно;

  2. добавить к команде DEVICE, обеспечивающей подключение драйвера к системе, переключатели /CPUCLOCK:ON и /V;

  3. перезагрузить DOS и проверить, подключился ли теперь драйвер HIMEM.SYS и правильно ли он функционирует;

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

Для проверки правильности функционирования драйвера, что требуется в пп. 1, 3 и 4 описанной процедуры, лучше всего воспользоваться утилитой Microsoft Diagnostics. Запустив ее, нажмите командную кнопку Memory и проверьте наличие в правом нижнем углу открывшегося диалогового бокса секции XMS Information (Информация об XMS-памяти). Если указанная секция имеется, то драйвер подключен к системе нормально, в противном случае – нет.

О функционировании драйвера HIM5M.SYS можно также судить (но только косвенно), проанализировав отчеты команды MEM.

При использовании переключателя /MACHINE:c нелишне знать код или номер вашего ПК. Если вы его не знаете (т.е. если ПК не указан в таблице), или его указание не решает проблемы, то придется поэкспериментировать. Для этого лучше перебирать номера ПК в таком порядке: 1, 11, 12, 13, 8, 2-7. 9, 10, 14-16.

После смены кода или номера ПК необходимо перезагрузить DOS. Когда это сделать не удается (система зависает), используйте средства шунтирования команд из файлов CONFIG.SYS и AUTOEXEC.BAT, чтобы отменить обработку команды, обеспечивающей подключение к системе драйвера HIMEM.SYS, После успешной загрузки DOS измените значение в переключателе /MACHINE.