Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМКДО_СистПрог_2016.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

5.3. Результаты работы программы

В процессе работы программы на экран была выведена следующая информация о распределении памяти:

-----------------------------------------------------------------------------

------------ Лабораторная работа N12 ---------------

------------ Управление памятью ---------------

Карта распределяемой памяти.

Addr=025B:0000 PID=0008 Size=9130 Dos

Addr=0496:0000 PID=0008 Size=64 Dos

Addr=049B:0000 PID=04A0 Size=48 Data COMMAND.COM

Addr=049F:0000 PID=04A0 Size=2640 Pgm COMMAND.COM

Addr=0545:0000 PID=04A0 Size=64 Data COMMAND.COM

Addr=054A:0000 PID=04A0 Size=513 Env COMMAND.COM

Addr=056B:0000 PID=0008 Size=32 Dos

Addr=056E:0000 PID=06CB Size=160 Env NC C:\NC\NC.EXE

Addr=0579:0000 PID=057A Size=5376 Pgm KEYRUS C:\NC\NC.EXE

Addr=06CA:0000 PID=06CB Size=13152 Pgm NC C:\NC\NC.EXE

Addr=0A01:0000 PID=0AFA Size=160 Data COMMAND.COM

Addr=0A0C:0000 PID=0AFA Size=256 Env COMMAND.COM

Addr=0A1D:0000 PID=0BA0 Size=160 Env TC_LAB12 D:\TC\TC_LAB12.EXE

Addr=0A28:0000 PID=0000 Size=2464 Free

Addr=0AC3:0000 PID=0ACF Size=160 Env COPY_ECR D:\TC\COPY_ECR.COM

Addr=0ACE:0000 PID=0ACF Size=672 Pgm COPY_ECR D:\TC\COPY_ECR.COM

Addr=0AF9:0000 PID=0AFA Size=2640 Pgm COMMAND D:\TC\COPY_ECR.COM

Addr=0B9F:0000 PID=0BA0 Size=17408 Pgm TC_LAB12 D:\TC\COPY_ECR.COM

Addr=0FE0:0000 PID=0000 Size=65008 Free

Нажмите любую клавишу для возврата в DOS.

Лабораторная работа № 13. Управление памятью

1. Цель работы

Просмотр таблицы векторов прерываний, которая в данный момент находится в ПЭВМ на рабочем месте.

2. Темы для предварительной проработки

  • Таблица векторов прерываний.

  • Управление памятью.

3. Постановка задачи

Определить, какие вектора прерываний на данном компьютере перехвачены программами не из состава DOS/BIOS и имена этих программ.

4. Порядок выполнения работы

5. Пример решения задачи

5.1. Разработка алгоритма решения

5.1.1. Структура программы

Программа состоит из основной программы main() и пяти вспомогательных функций.

  • void *readvect(int in) - функция читает вектор прерывания с номером in и возвращает его значение.

  • void get_memtop(void) - функция возвращает адрес начала цепочки MCB csegm.

  • void dos_version_h(void) - функция возвращает номер версии DOS.

  • void name_handler(void) - функция находит какой программой было перехвачено текущее прерывание.

  • void PrintVec(int num) - функция выводит на экран номера прерываний и программы которые их перехватили начиная с номера num.

5.1.2. Описание переменных

Переменные глобальные для всей программы:

  • memtop - сегментный адрес начала памяти;

  • csegm - сегментный адpес текущего MCB;

  • othersegm - сегментный адрес другого MCB; 8

  • fathersegm - сегментный адрес родител0я;

  • *envstr - адpес стpоки окружения;

  • envlen - длина очередной строки окружения;

  • envsize - размер блока окружения;

  • dos - номер версии DOS;

  • *vect - вектор;

  • intnum - номер прерывания.

Стpуктуpа MCB:

struct MCB {

byte type; /* тип */

word owner; /* владелец */

word size; /* размер */

byte reserved[3]; /* не используется */

char pgmname[8]; /* имя (только DOS 4.0 и выше) */

};