Кафедра МОП ЭВМ Драйвер управления расширенной памятью HIMEM,SYS, страница 8

Как и в предыдущем случае, для загрузки резидентных модулей 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 Мбайт памяти.