- •1. Подготовка к выполнению лабораторных работ Цели и задачи лабораторного практикума
- •Программа и порядок выполнения лабораторных работ
- •Требования к оформлению отчёта о выполнении лабораторной работы
- •Общие теоретические сведения Файловый сервис операционной системы ms-dos
- •Системные регистры процессора
- •2. Лабораторная работа №1. Реализация низкоуровневых функций работы с файлами
- •Общие теоретические сведения
- •Общие теоретические сведения
- •Контрольные вопросы к лабораторной работе
- •3. Лабораторная работа №2. Применение дескрипторно-ориентированных файловых функций
- •Контрольные вопросы к лабораторной работе
- •4. Лабораторная работа №3. Реализация низкоуровневых функций работы с каталогами
- •Общие теоретические сведения
- •Контрольные вопросы к лабораторной работе
- •5. Лабораторная работа №4. Реализация низкоуровневых функций работы с памятью
- •Общие теоретические сведения
- •Контрольные вопросы к лабораторной работе
- •6. Лабораторная работа №5. Реализация низкоуровневых функций работы с системной датой и временем
- •Общие теоретические сведения
- •Контрольные вопросы к лабораторной работе
- •7. Лабораторная работа №6. Прерывания в ос ms-dos. Обработчики аппаратных прерываний. Механизм обработки прерываний
- •Общие теоретические сведения
- •Контрольные вопросы к лабораторной работе
- •Приложение №1. Коды ошибок для операций работы с файлами
Контрольные вопросы к лабораторной работе
Каковы основные правила работы с каталогами в операционной системе MS-DOS?
Какие возможности предоставляет операционная система MS-DOS для работы с каталогами?
Какие переменные языка Т.Паскаль служат для работы с регистрами и прерываниями?
Понятие «текущий каталог» в операционных системах MS-DOS и Windows.
Каковы правила реализации модуля на языке Т.Паскаль?
5. Лабораторная работа №4. Реализация низкоуровневых функций работы с памятью
Цель работы: изучение механизма распределения памяти в ОС. Блок памяти, сегмент, смещение. Реализация модуля на языке Турбо Паскаль, его синтаксис.
Задание: разработать низкоуровневые функции работы с памятью с использованием возможностей предоставляемых системным сервисом ОС MS-DOS на языке высокого уровня Турбо Паскаль. Функции должны резервировать память, освобождать её и изменять размер зарезервированной памяти. Законченные функции оформить в виде модуля.
Общие теоретические сведения
Функция 48H: Распределить память (дать размер памяти)
Входные параметры:
Регистр AH - 48H;
Регистр BX- запрошенное количество памяти в 16-байтовых параграфах.
Выходные параметры:
Если флаг CF установлен, то в регистре AX - код ошибки;
Если ошибок не было, то в регистре АХ сегментный адрес распределенного блока;
Регистр BX - размер доступной памяти в параграфах (если была ошибка).
Описание:
Распределяет блок памяти длиной BX параграфов, возвращая сегментный адрес этого блока в AX (блок начинается с AX:0000). Если распределение неудачно, взводится Carry-флаг (флаг CF), в AX возвращается код ошибки, а BX содержит максимальный размер доступной для распределения памяти (в параграфах).
Чтобы определить наибольший доступный блок памяти, общепринято устанавливать BX=0ffffH перед вызовом. Распределение завершится с ошибкой, возвратив размер максимального блока памяти в BX.
Замечание:
Когда процесс получает управление через функцию 4bH EXEC, вся доступная память уже распределена ему.
Функция 49H: Освободить распределенный блок памяти
Входные параметры:
Регистр AH - 49H;
Регистр ES - сегментный адрес (параграф) освобождаемого блока памяти.
Выходные параметры:
Регистр AX - код ошибки, если CF установлен.
Описание:
Освобождает блок памяти, начинающийся с адреса ES:0000. Этот блок становится доступным для других запросов системы. Программа должна освобождать лишь те блоки памяти, которые она получили через функцию 48H (распределить память). Родитель отвечает за освобождение памяти порожденных процессов.
Функция 4aH: Сжать или расширить блок памяти
Входные параметры:
Регистр AH - 4aH;
Регистр ES - сегмент распределенного блока памяти;
Регистр BX - желаемый размер блока в 16-байтовых параграфах.
Выходные параметры:
Регистр AX - код ошибки, если CF установлен;
Регистр BX - наибольший доступный блок (если расширение неудачно).
Описание:
Изменяет размер существующего блока памяти. Когда программа получает управление, функция 4bH EXEC уже распределила блок памяти, начиная с PSP, который содержит всю доступную память. Чтобы освободить память для запуска порождаемых процессов, блок памяти, начинающийся с PSP, необходимо сначала сжать.
Замечание:
Функция 31H (KEEP) и INT 27H (TSR) сжимают блок по адресу PSP.
