TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Администратор динамически распределяемой области памяти DOS 

             Расширения Borland защищенного режима DOS  включают  в  себя
        полный администратор памяти защищенного  режима.  При  выполнении
        программы защищенного режима DOS вся доступная память превращает-
        ся в глобальную динамически распределяемую область памяти,  кото-
        рая  управляется  администратором  памяти (подсистемой управления
        памятью) защищенного режима.  Прикладная программа может получить
        доступ к глобальной динамически распределяемой области памяти че-
        рез подпрограммы GlobalXXXX модуля WinAPI.  Хотя можно  распреде-
        лять  блоки глобальной памяти любого размера,  глобальная динами-
        чески распределяемая  область  памяти  предназначена  только  для
        больших блоков (1024 байт или более).  Для каждого блока глобаль-
        ной памяти требуется дополнительно 32 байта (это непроизводитель-
        ные  затраты),  а  общее  число блоков глобальной памяти не может
        превышать 8192.

                   Примечание: Подробнее  расширения  Borland защищенного
              режима DOS описываются в Главе 17 "Программирование в защи-
              щенном режиме DOS".

             Borland Pascal включает в себя администратор памяти (который
        называют также подсистемой управления памятью), реализующий стан-
        дартные процедуры New,  Dispose,  GetMem и FreeMem. Администратор
        памяти  использует для всех распределений памяти глобальную дина-
        мически распределяемую область.  Поскольку глобальная динамически
        распределяемая  область  памяти ограничена 8192 блоками (что оче-
        видно меньше,  чем может потребоваться для  некоторых  прикладных
        программ), администратор памяти Borland Pascal реализует алгоритм
        вторичного распределения сегментов,  который улучшает  производи-
        тельность  и  допускает  распределение существенно большего коли-
        чества блоков.

                   Примечание: Borland Pascal для расширенного режима DOS
              не поддерживает схему распределения с помощью процедур MArk
              и Release, предусмотренную для реального режима DOS.

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

                   Примечание: Об использовании администратора  памяти  в
              DLL подробнее рассказывается в Главе 11 "Динамически компо-
              нуемые библиотеки".

         B.Pascal 7 & Objects/LR     - 363 -


             Переменная HeapLimit  определяет  порог  между  маленькими и
        большими блоками динамически распределяемой памяти.  По умолчанию
        ее значение равно 1024 байтам.  Переменная  HeapBlock  определяет
        размер, используемый  администратором  памяти  при  распределении
        блоков, выделенных для  вторичного  распределения.  По  умолчанию
        значение HeapBlock  равно  8192 байтам.  Значения этих переменных
        изменять не следует, но если вы это сделаете, убедитесь, что зна-
        чение HeapBlock  составляет  не  меньше  четырехкратного  размера
        HeapLimit.

             Переменная HeapAllocFpals определяет значение флагов атрибу-
        тов, передаваемых GlobalAlloc, когда администратор памяти распре-
        деляет блоки глобальной памяти.  По умолчанию ее  значение  равно
        gmem_Moveable.

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz