Операционная система MS DOS (том 2)


3. Управление памятью - часть 2


- управляющий блок для верхней области памяти UMB (Upper Memory Block):

(00h) 1 Тип блока: 4Dh для всех блоков, кроме последнего. Для последнего блока используется значение 5Ah.
(01h) 2 Первый доступный в верхней памяти UMB

параграф для самого первого блока UMCB, 000Ah - если управляющий блок расположен в конце UMB.

(03h) 2 Размер блока UMB в параграфах.
(05h) 3 Не используются.
(08h) 8 Тип блока: "UMB" для начального блока, "SM" - для конечного.

Начиная с версии 3.0 MS-DOS содержит функцию 58h

прерывания INT21h, позволяющую определять и изменять стратегию выделения памяти запущенным программам. В версии 5.0 добавились новые возможности, в частности, возможность выделения блоков верхней памяти, используемых только в MS-DOS версии 5.0.

Регистры на входе:

Регистр Содержимое
AH 58h
AL Подфункция:

00h - определить используемую стратегию;

01h - установить стратегию;

02h - получить состояние списка блоков верхней памяти UMB;

03h - установить состояние списка блоков верхней памяти UMB.

BL Подфункция 01h - новая стратегия:

00h - первым заполняется первый свободный участок в области младших адресов памяти;

01h - аналогично, но используется участок памяти, наилучшим образом подходящий для запроса;

02h - аналогично, но используется последний свободный участок памяти;


40h ,41h 42h - аналогично 00h, 01h, 02h, но используются старшие адреса памяти;


80h, 81h, 82h - аналогично 00h, 01h, 02h, но сначала делается попытка выделить старшие адреса памяти, а в случае неудачи - младшие.

Подфункция 03h - новое состояние списка блоков верхней памяти:

BX = 0000h - удалить блоки UMB из списка блоков памяти DOS;

BX = 0001h - добавить блоки UMB в список блоков памяти DOS.

BH Подфункция 01h - новая стратегия:

Равен 00h.

Регистры на выходе:

Регистр Содержимое
AX Подфункция 00h - определить стратегию:

AX = код используемой стратегии (см. выше).

Подфункция 02h - определитьсостояние списка блоков верхней памяти:

AL = 00h - блоки UMB удалены из списка блоков памяти DOS;

AL = 01h - блоки UMB входят в список блоков памяти DOS.

<


- Начало -  - Назад -  - Вперед -