Автор работы: Пользователь скрыл имя, 08 Апреля 2013 в 18:22, лабораторная работа
Цель работы: Для исследования организации управления памятью необходимо ориентироваться на тип основной памяти, реализованный в компьютере и способ организации, принятый в ОС. В лабораторной работе рассматривается нестраничная память и способ управления динамическими разделами. Для реализации управления памятью строится список занятых и свободных участков памяти. Функции ядра, обеспечивающие управление основной памятью, просматривают и преобразуют этот список.
Санкт-Петербургский
государственный
Лабораторная работа №3.
«Исследование организации управления основной памятью »
Дисциплина: Операционные системы
Выполнил: Мишнев Никита Валерьевич
Факультет: ФКТИ
Группа: 1304 (МОЭВМ)
Преподаватель: Губкин Александр Федорович
Дата выполнения: 20 февраля 2013
2013
Оглавление
Исследование организации управления основной памятью
Цель работы: Для исследования организации управления памятью необходимо ориентироваться на тип основной памяти, реализованный в компьютере и способ организации, принятый в ОС. В лабораторной работе рассматривается нестраничная память и способ управления динамическими разделами. Для реализации управления памятью строится список занятых и свободных участков памяти. Функции ядра, обеспечивающие управление основной памятью, просматривают и преобразуют этот список.
Задача заключается в том, чтобы посредством программы, выполненной на языке Ассемблер, мы должны получить информацию о состоянии используемой основной памяти, основываясь на функции управления памятью. Конкретно наша программа должна выводить следующую информацию:
Предварительные сведения
Когда программа загрузилась, DOS автоматически отводит для нее всю свободную основную память. Программист может по своему усмотрению урезать блоки памяти, отводить другие, а также освобождать отведенные блоки.
Для того чтобы урезать (освободить) память используется функция 4Ah прерывания 21h. Чтобы отвести память применяется функция 48h прерывания 21h.
Учет занятой и свободной памяти ведется при помощи MCB блоков управления памятью. MCB занимает 16 байт и располагается всегда с адреса кратного 16, находится в адресном пространстве непосредственно перед тем участком памяти, которым управляет. По сегментному адресу и размеру участка памяти, контролируемого этим MCB, можно определить местоположение следующего MCB в списке.
Размер расширенной памяти находится в ячейках 30h, 31h CMOS. CMOS – энергонезависимая память , в которой хранится информация о конфигурации ПЭВМ.
Сведения о функциях и структурах данных управляющей программы
Описание используемых процедур приведено в Таблице 1.
Таблица 1
Процедура |
Описание |
WriteMsg |
Процедура вывода строки на экран |
CorrectCheck |
Процедура проверяет флаг CF при работе с памятью. CF=1 – ошибка, в АХ код ошибки. |
OutInt |
Процедура выводит переводит количество байт из 16-ричного значения в 10-ричное. |
Mem_Free |
Процедура освобождает память. |
Need_64 |
Процедура запрашивает 64kb памяти. |
King_Size_Mem |
Процедура определяет количество доступной памяти. |
Out_AvailMem |
Процедура выводит количество доступной памяти в байтах. |
Out_XMS_mem |
Процедура выводит размер расширенной памяти в kb. |
About_MCB |
Процедура выводит информацию о блоках MCB. |
MCB_LIST |
Процедура подготовки к выводу блоков MCB. |
BYTE_TO_HEX |
Процедура перевода байт в 16-ричный символ |
Последовательность действий выполняемых программой
При запуске программы происходят следующие действия в установленном порядке:
Результат:
После того как наша программа загрузилась в память, вся свободная память отведена только нашей программе. Из результата видно , что размер доступной памяти – 632576 байт. Размер расширенной 1024 килобайт. Количество блоков MCB равно шести.
Анализируя список блоков MCB можно сделать следующие выводы:
Результат:
После того как мы освободили отведенную память размер доступной памяти составил 1280 байт. Также к списку MCB блоков добавился один блок – свободный. Его размер составляет 631280 байт с учетом занятости 1280 байт нашей программы и общего числа доступной (632576 байт). Итого – 7 блоков MCB.
Результат:
После того как мы освободили отведенную память и запросили 64 КБ памяти , размер доступной памяти составил 1296 байт. Нужно принять во внимание , что запрошенные 65536 байт составляют 7 блок. Также при выполнении данного этапа мы можем наблюдать появление 8 блока MCB в списке блоков. Шестой блок как и раньше является блоком нашей программы.
Результат:
После выполнения данного этапа , размер доступной памяти составил 1296 байт. Блоков уже будет не восемь , а семь. Седьмой блок будет обладать размером 631264 байт. При этом он будет свободным.
Ответ:
“Доступный объем памяти” – это объем основной свободной памяти который может использоваться для загрузки прикладных и системных программ.
Ответ:
MCB блок нашей программы является шестым по счету в списке MCB блоков. Его можно заметить по размеру блока ( он равен размеру доступной памяти для программы).
Ответ:
Как было проанализировано в предыдущем пункте выполнения работы, программа занимает столько памяти сколько ей доступно. При загрузке вся свободная основная память отведена нашей программе , но мы можем изменить доступную память с помощью функций управления памятью. Так в 1 пункте программы занимает 632576 байт, во 2 пункте – 1280 байт, в 3 и 4 пунктах -1296 байт. В третьем пункте нужно учесть также запрошенный блок памяти размером 64 Кб .
В процессе выполнения работы мы приобрели знания и опыт в области работы с основной памятью. Мы выполнили поставленные задачи и проанализировали результаты.
Информация о работе Исследование организации управления основной памятью