Управление памятью в ОС Doc

Тема в разделе "Другие", создана пользователем JoeQueer, 26 май 2009.

Статус темы:
Закрыта.
  1. JoeQueer

    JoeQueer Гость

    Написать программу по заданию:
    «Установить стратегию "первый подходящий", выделить блоки памяти размером 100К и 200К, освободить блок 100К, выделить блок 150К»

    Пример:
    Установить стратегию распределения памяти "последний подходящий", выделить блок размером 10П, уменьшить размер блока до 9П, затем увеличить размер блока до 11П.
    Напомним, что кроме перечисленных операций эта программа (как и любая другая) должна выполнить сжатие блока памяти программного сегмента (в начале), освобождение затребованных блоков и восстановление исходной стратегии (в конце).
    Результаты работы программы представляются последова¬тельностью карт памяти , просматриваемых при помощи view и peek.com.
    С учетом этих соображений программа рассматриваемого ва¬рианта задания будет выглядеть следуцющим образом:
    [codebox];Подключаем файл с библиотекой макроопределений
    include doslab.mac
    ;
    PSeg SEGMENT para public 'code'
    ASSUME cs:pSeg,ds:pSeg,es:pSeg,ss:pSeg org 100h
    Begin:
    ;Посмотрим исходное распределение памяти
    call view
    ;Произведем сжатие программного блока и
    ;вновь посмотрим карту памяти
    SetComBlock LastByte call view
    ;Установим новую стратегию (с сохранением исходной), ;выделим блок памяти 10П и вновь посмотрим карту памяти
    SwapStrategy LastFit
    AllocMemPara BlkSize,BlkSel
    CheckError Exit2 call view
    ;Уменьшим блок памяти до 9 П , затем увеличим его ;до 11 П и вновь посмотрим карту памяти
    ReallocMemPara BlkSel,NewSize1 CheckError Exit1 call view
    ReallocMemPara BlkSel,NewSize2 CheckError Exit1 call view
    ;Освободим затребованный блок, восстановим исходную ;стратегию и посмотрим итоговую карту памяти Exit1: FreeMem BlkSel
    Exit2: SwapStrategy LastFit
    call view
    Exit3: Exit
    ;Определение данных
    LastFit dB 2 ; код стратегии
    BlkSel dW ? ; сегментный адрес блока
    BlkSize = 10 ; 10 П
    NewSize1 = 9 ; 9 П
    NewSize2 = 11 ; 11 П
    include mcbview.asm
    ;Kонeц программного сегмента
    LastByte DB byte
    PSeg ENDS
    End Begin
    [/codebox]
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей