Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab2 / 0303_Болкунов_ВО_ЛР2

.doc
Скачиваний:
1
Добавлен:
12.08.2022
Размер:
164.86 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра математического обеспечения и применения ЭВМ

отчет

По лабораторной работе № 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

Контрольные вопросы

Сегментный адрес недоступной памяти

  1. На какую область памяти указывает адрес недоступной памяти?

- на остальную оперативную память, не занятую программой.

2) Где расположен этот адрес по отношению области памяти, отведенной программе?

- после сегмента памяти занятого программой.

3) Можно ли в эту область памяти писать?

- можно, благодаря общему адресному пространству

Среда передаваемая программе

  1. Что такое среда?

- область памяти с переменными системы (и пользователя) вида

«имя=значение».

2) Когда создается среда? Перед запуском приложения или в другое время?

- при запуске ОС, при загрузке исполняемого модуля, ему передаётся копия среды.

3) Откуда берется информация, записываемая в среду?

- из реестровых файлов ОС.

Выводы:

В ходе лабораторной работы был исследован интерфейс управляющей программы и загрузочных модулей, а именно передача сегмента префикса в загрузочный модуль (PSP).

Был написан исходный код и собрана программа, которая взаимодействует с данными в PSP и выводит информацию о среде и переданные аргументы.

6

Соседние файлы в папке lab2