
lab2 / 0303_Болкунов_ВО_ЛР2
.doc
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра математического обеспечения и применения ЭВМ
отчет
По лабораторной работе № 2
по дисциплине «Операционные системы»
Тема Исследование интерфейсов программных модулей
Студент гр. 0303 |
|
Болкунов В.О. |
Преподаватель |
|
Губкин А. Ф. |
Санкт-Петербург
2022
Цель работы.
Исследование интерфейса управляющей программы и загрузочных модулей. Этот интерфейс состоит в передаче запускаемой программе управляющего блока, содержащего адреса и системные данные. Так загрузчик строит префикс сегмента программы (PSP) и помещает его адрес в сегментный регистр. Исследование префикса сегмента программы (PSP) и среды, передаваемой программе.
Порядок выполнения работы.
Шаг 1. Для выполнения лабораторной работы необходимо написать и отладить программный модуль типа .COM, который выбирает и распечатывает следующую информацию:
1) Сегментный адрес недоступной памяти, взятый из PSP, в шестнадцатеричном виде.
2) Сегментный адрес среды, передаваемой программе, в шестнадцатеричном виде.
3) Хвост командной строки в символьном виде.
4) Содержимое области среды в символьном виде.
5)Путь загружаемого модуля. Сохраните результаты, полученные программой, и включите их в отчет.
Шаг 2. Оформление отчета в соответствии с требованиями. В отчет включите скриншот с запуском программы и результатами.
Выполнение работы.
Данные:
endLine - символы перевода строки
lockedMemSeg - строка с адресом недоступной памяти
lockedMemNumOffset - смещение числа адреса
envSeg - сегмент окружение
envNumOffset - смещение числа сегмента
tail - строка с хвостом cmd
tailEmpty - строка в случае отсутствия аргументов
envContent - содержимое окружение
path - путь
keyPress - строка ожидания нажатия
Макроопределения и процедуры:
print _str_ - вывод строки на экран
printChar char - вывод одного символа на экран
printPSPInfo - вывод информации о заголовке сегмент
TETR_TO_HEX - процедуры для перевода чисел из шаблона
BYTE_TO_HEX
WRD_TO_HEX
BYTE_TO_DEC
Загрузочный модуль собирается из файла prog.asm с помощью утилит “masm”, “link” и “exe2bin”, для автоматизации сборки написан скрипт build.bat. Пример работы программы для разных ОС показан на рисунках 1 и 2.
Рисунок 1: работа программы в ОС Windows XP
Рисунок 2: пример работы в DOSBox
Контрольные вопросы
Сегментный адрес недоступной памяти
На какую область памяти указывает адрес недоступной памяти?
- на остальную оперативную память, не занятую программой.
2) Где расположен этот адрес по отношению области памяти, отведенной программе?
- после сегмента памяти занятого программой.
3) Можно ли в эту область памяти писать?
- можно, благодаря общему адресному пространству
Среда передаваемая программе
Что такое среда?
- область памяти с переменными системы (и пользователя) вида
«имя=значение».
2) Когда создается среда? Перед запуском приложения или в другое время?
- при запуске ОС, при загрузке исполняемого модуля, ему передаётся копия среды.
3) Откуда берется информация, записываемая в среду?
- из реестровых файлов ОС.
Выводы:
В ходе лабораторной работы был исследован интерфейс управляющей программы и загрузочных модулей, а именно передача сегмента префикса в загрузочный модуль (PSP).
Был написан исходный код и собрана программа, которая взаимодействует с данными в PSP и выводит информацию о среде и переданные аргументы.