Главная страница

MetodUkОС. Методические указания к лабораторным работам по дисциплине "Операционные системы " СанктПетербург 2011 введение


Скачать 289.53 Kb.
НазваниеМетодические указания к лабораторным работам по дисциплине "Операционные системы " СанктПетербург 2011 введение
Дата08.10.2022
Размер289.53 Kb.
Формат файлаpdf
Имя файлаMetodUkОС.pdf
ТипМетодические указания
#721556
страница1 из 3
  1   2   3

МИНОБРНАУКИ РОССИИ
Государственное образовательное учреждение высшего профессионального образования
«Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»
(СПбГЭТУ)
А.Ф.ГУБКИН
МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ЛАБОРАТОРНЫМ РАБОТАМ
по дисциплине "Операционные системы
"
Санкт-Петербург
2011

ВВЕДЕНИЕ
Цикл лабораторных работ по дисциплине "Операционные системы" предназначен для получения студентами практических навыков работы с управляющей программой операционной системы (ОС) на уровне программного интерфейса. В лабораторных работах исследуются структуры загрузочных модулей, интерфейс прикладных программ с управляющей программой, управление основной памятью, резидентные обработчики прерываний, загрузка приложений разных форматов для выполнения.
Лабораторные работы выполняются в широко доступной среде Windows XP, не требующей привилегированного доступа пользователей и специальных инструментов.
Работы предполагают знания студентами языка ассемблер Intel и умения работать с системой программирования Microsoft assembler (MASM) или Turbo assembler (TASM), использования компоновщика Link (TLINK) и отладчика TD.
Выполнение лабораторных работ состоит в исследовании механизмов управляющей программы ОС с помощью написанных на ассемблере утилит. В некоторых работах требуется создать несколько вариантов утилиты, с целью исследования различных возможностей, предоставляемых функциями управляющей программы.
По результатам выполнения лабораторной работы представляются исходные тексты утилит, загрузочные модули, отчет в электронном виде в формате MS Word 2003, содержащий постановку задачи и материалы в виде выходной информации утилит и скриншотов, обосновывающие ответы на поставленные вопросы.

ОБЩИЕ СВЕДЕНИЯ
Общие сведения содержат информацию, используемую во всех лабораторных работах и общие требования, которые должны выполняться во всех работах.
Реализация программного интерфейса
Программный интерфейс реализуется посредством функций, доступ к которым осуществляется по программному (синхронному) прерыванию с вектором 21h.
Программные прерывания выполняются синхронно в темпе выполнения программы. В
результате прерывания управление передается ядру операционной системы и по коду функции, заданной в регистре как параметр, обработчик прерываний выбирает соответствующую функцию и передает ей управление.
Обращение к функциям управляющей программы
Обращение к функциям реализуется следующим образом. В регистры в зависимости от функции заносятся различные параметры. Однако, в регистр AH всегда заносится код вызываемой функции. Затем выполняется прерывание с вектором 21h. Пример текста на ассемблере:
mov DX,offset STRING ;занесение параметра функции mov AH,09h ;занесение кода функции int 21h ;прерывание - обращение к
;функции
Обработка завершения функции управляющей программы
После обращения к функции необходимо обработать завершение выполнения функции. Для этого следует проверить С-бит в регистре флагов. Если С-бит имеет значение 0, то функция выполнена успешно. Если С-бит имеет значение 1, то в регистре
AX содержится код завершения, который определяет ошибку. В этом случае программа должна завершить работу и вывести содержимое регистра AX в шестнадцатеричном и десятичном виде, а также диагностическое сообщение.
Ниже приведены некоторые коды завершения (RC) и диагностические сообщения.
Если вызываемая функция не была выполнена, то устанавливается флаг переноса CF=1 и в
AX заносится код ошибки:
 1 - если номер функции неверен;
 2 - если файл не найден;
 5 - при ошибке диска;
 8 - при недостаточном объеме памяти;
 10 - при неправильной строке среды;
 11 - если не верен формат.
Требуемая структура исходного текста модуля типа .СОМ
Шаблон ассемблерного текста с функциями управляющей программы и процедурами перевода двоичных кодов в символы шестнадцатеричных чисел и десятичное число приводится ниже:
; Шаблон текста программы на ассемблере для модуля типа .COM
TESTPC SEGMENT
ASSUME CS:TESTPC, DS:TESTPC, ES:NOTHING, SS:NOTHING
ORG 100H
START: JMP BEGIN
; ДАННЫЕ
STRING db 'Значение регистра AX= ',0DH,0AH,'$'
;ПРОЦЕДУРЫ
;-----------------------------------------------------
TETR_TO_HEX PROC near
and AL,0Fh cmp AL,09
jbe NEXT
add AL,07
NEXT: add AL,30h ret
TETR_TO_HEX ENDP
;-------------------------------
BYTE_TO_HEX PROC near
; байт в AL переводится в два символа шестн. числа в AX
push CX
mov AH,AL
call TETR_TO_HEX
xchg AL,AH
mov CL,4
shr AL,CL
call TETR_TO_HEX ;в AL старшая цифра pop CX ;в AH младшая ret
BYTE_TO_HEX ENDP
;-------------------------------
WRD_TO_HEX PROC near
;перевод в 16 с/с 16-ти разрядного числа
; в AX - число, DI - адрес последнего символа push BX
mov BH,AH
call BYTE_TO_HEX
mov [DI],AH
dec DI
mov [DI],AL
dec DI
mov AL,BH
call BYTE_TO_HEX
mov [DI],AH
dec DI
mov [DI],AL
pop BX
ret
WRD_TO_HEX ENDP
;--------------------------------------------------
BYTE_TO_DEC PROC near
; перевод в 10с/с, SI - адрес поля младшей цифры push CX
push DX
xor AH,AH
xor DX,DX
mov CX,10
loop_bd: div CX
or DL,30h mov [SI],DL
dec SI
xor DX,DX
cmp AX,10
jae loop_bd cmp AL,00h je end_l or AL,30h mov [SI],AL
end_l: pop DX
pop CX
ret
BYTE_TO_DEC ENDP
;-------------------------------
; КОД

BEGIN:
; Вывод строки текста из поля STRING
mov DX,offset STRING
mov AH,09h int 21h
; Выход в DOS
xor AL,AL
mov AH,4Ch int 21H
TESTPC ENDS
END START ;конец модуля, START - точка входа
Использование функции 4А
H
Использование функции 4Ah позволяет освободить неиспользуемую программой память, поскольку при загрузке модуля вся память выделяется этому модулю, в соответствии со стратегией однопрограммных ОС.
Для этого следует использовать функции 4Ah прерывания 21h. Пример обращения к этой функции:
MOV AH,4AH
MOV BX,mem-size ;размер памяти программы в параграфах
INT 21H
В регистр BX заносится размер памяти в параграфах, который необходимо оставить программе.
Если занести заведомо больший размер памяти, чем может предоставить ОС, то в регистре BX возвращается размер доступной памяти в параграфах. В этом случае следует использовать следующее обращение:
MOV AH,4AH
MOV BX,0FFFFH ; заведомо большая память
INT 21H
Если вызываемая функция не была выполнена, то устанавливается флаг переноса
CF=1 и в AX заносится код ошибки.
Требования к оформлению отчета
Отчет выполняется в формате MS Word2003 и представляется в электронном виде единым файлом. Отчет должен содержать:
1)
Титульный лист с названием лабораторной работы, фамилией, именем и отчеством студента, выполнившего работу, номером группы и названием факультета, фамилия, И.О. преподавателя, датой выполнения работы.
2)
Первый раздел «Постановка задачи» должен содержать формулировку цели работы, сведения о функциях и структурах данных управляющей программы,
используемых в работе, последовательность действий, выполняемых утилитой.
3)
Описание результатов исследования проблем, поставленных в лабораторной работе. По каждой работе в Методических Указаниях приводятся вопросы, на которые необходимо найти ответы и подтвердить их соответствующей информацией. В отчете приводятся скриншоты, подтверждающие выполнения шагов лабораторной работы и ответы на вопросы.
4)
Заключение.
По результатам выполнения лабораторной работы представляются;
1) исходные тексты программ,
2) загрузочные модули,

3) отчет в электронном виде по установленной форме, содержащий постановку задачи и материалы в виде выходной информации утилит и скриншотов, обосновывающие ответы на поставленные вопросы.
Требования к защите лабораторной работы
Отчет по лабораторной работе, исходные тексты разработанных утилит и загрузочные модули присылаются для проверки по E-mail на адрес:
gubkin
_ alexandr
@
mail
. ru
После возможного диалога по поводу присланных материалов после достижения согласия ставится зачет, который подтверждается письмом.
Получение зачета по всем лабораторным работам позволяет получить общий зачет.

ЛАБОРАТОРНАЯ РАБОТА № 1
«Исследование структур загрузочных модулей»
Цель работы: Исследование различий в структурах исходных текстов модулей типов .СОМ и .ЕХЕ, структур файлов загрузочных модулей и способов их загрузки в основную память.
Порядок выполнения работы
«Истина познается в сравнении», как говорили древние. К счастью, у нас есть возможность исследовать в одной системе два различных формата загрузочных модулей,
сравнить их и лучше понять как система программирования и управляющая программа обращаются с ними. Система программирования включает компилятор с языка ассемблер
(часто называется, просто, ассемблер), который изготавливает объектные модули.
Компоновщик (Linker) по совокупности объектных модулей, изготавливает загрузочный модуль, а также, функция ядра – загрузчик, которая помещает программу в основную память и запускает на выполнение. Все эти компоненты согласованно работают для изготовления и выполнения загрузочных модулей разного типа. Для выполнения лабораторной работы сначала нужно изготовить загрузочные модули.
Шаг 1. Напишите текст исходного .СОМ модуля, который определяет тип РС и версию системы. Это довольно простая задача и для тех, кто уже имеет опыт программирования на ассемблере, это будет небольшой разминкой. Для тех, кто раньше не сталкивался с программированием на ассемблере, это неплохая задача для первого опыта.
За основу возьмите шаблон, приведенный в разделе «Основные сведения».
Необходимые сведения о том, как извлечь требуемую информацию, представлены в следующем разделе.
Ассемблерная программа должна читать содержимое предпоследнего байта ROM
BIOS, по таблице, сравнивая коды, определять тип РС и выводить строку с названием модели. Если код не совпадает ни с одним значением, то двоичный код переводиться в символьную строку, содержащую запись шестнадцатеричного числа и выводиться на экран в виде соответствующего сообщения.
Затем определяется версия системы. Ассемблерная программа должна по значениям регистров AL и AH формировать текстовую строку в формате xx.yy, где xx - номер основной версии, а yy - номер модификации в десятичной системе счисления,
формировать строки с серийным номером OEM и серийным номером пользователя.
Полученные строки выводятся на экран.
Отладьте полученный исходный модуль.
Результатом выполнения этого шага будет «хороший» .СОМ модуль, а также необходимо построить «плохой» .ЕХЕ, полученный из исходного текста для .СОМ
модуля.
Шаг 2. Напишите текст исходного .ЕХЕ модуля, который выполняет те же функции,
что и модуль в Шаге 1 и постройте и отладьте его. Таким образом, будет получен
«хороший» .ЕХЕ.
Шаг 3. Сравните исходные тексты для .СОМ и .ЕХЕ модулей. Ответьте на контрольные вопросы «Отличия исходных текстов СОМ и ЕХЕ программ».
Шаг 4. Запустите FAR и откройте (F3/F4) файл загрузочного модуля .СОМ и файл
«плохого» .ЕХЕ в шестнадцатеричном виде. Затем откройте (F3/F4) файл загрузочного модуля «хорошего» .ЕХЕ и сравните его с предыдущими файлами. Ответьте на контрольные вопросы «Отличия форматов файлов СОМ и ЕХЕ модулей».

Шаг 5. Откройте отладчик TD.EXE и загрузите .СОМ. Ответьте на контрольные вопросы «Загрузка СОМ модуля в основную память». Представьте в отчете план загрузки модуля .СОМ в основную память.
Шаг 6. Откройте отладчик TD.EXE и загрузите «хороший» .ЕХЕ. Ответьте на контрольные вопросы «Загрузка «хорошего» ЕХЕ модуля в основную память».
Шаг 7. Оформление отчета в соответствии с требованиями. В отчете необходимо привести скриншоты. Для файлов их вид в шестнадцатеричном виде, для загрузочных модулей – в отладчике.
Необходимые сведения для составления программы
Тип IBM PC хранится в байте по адресу 0F000:0FFFEh, в предпоследнем байте ROM
BIOS. Соответствие кода и типа в таблице:
PC FF
PC/XT FE,FB
AT FC
PS2 модель 30 FA
PS2 модель 50 или 60 FC
PS2 модель 80 F8
PCjr FD
PC Convertible F9
Для определения версии MS DOS следует воспользоваться функцией 30H прерывания 21H. Входным параметром является номер функции в AH:
MOV AH,30h
INT 21h
Выходными параметрами являются:
AL - номер основной версии. Если 0, то < 2.0
AH - номер модификации
BH - серийный номер OEM (Original Equipment Manufacturer)
BL:CX - 24-битовый серийный номер пользователя.
Контрольные вопросы по лабораторной работе №1
Отличия исходных текстов СОМ и ЕХЕ программ
1) Сколько сегментов должна содержать COM-программа?
2) EXE-программа?
3) Какие директивы должны обязательно быть в тексте COM-программы?
4) Все ли форматы команд можно использовать в COM-программе?
Отличия форматов файлов СОМ и ЕХЕ модулей
1) Какова структура файла COM? С какого адреса располагается код?
2) Какова структура файла «плохого» EXE? С какого адреса располагается код? Что располагается с адреса 0?
3) Какова структура файла «хорошего» EXE? Чем он отличается от файла
«плохого» EXE?
Загрузка СОМ модуля в основную память
1) Какой формат загрузки модуля COM? С какого адреса располагается код?
2) Что располагается с адреса 0?
3) Какие значения имеют сегментные регистры? На какие области памяти они указывают?
4) Как определяется стек? Какую область памяти он занимает? Какие адреса?

Загрузка «хорошего» ЕХЕ модуля в основную память
1) Как загружается «хороший» EXE? Какие значения имеют сегментные регистры?
2) На что указывают регистры DS и ES?
3) Как определяется стек?
4) Как определяется точка входа?

ЛАБОРАТОРНАЯ РАБОТА № 2
«Исследование интерфейсов программных модулей»
Цель работы: Исследование интерфейса управляющей программы и загрузочных модулей. Этот интерфейс состоит в передаче запускаемой программе управляющего блока, содержащего адреса и системные данные. Так загрузчик строит префикс сегмента программы (PSP) и помещает его адрес в сегментный регистр. Исследование префикса сегмента программы (PSP) и среды, передаваемой программе.
Порядок выполнения работы
Шаг 1. Для выполнения лабораторной работы необходимо написать и отладить программный модуль типа .COM, который выбирает и распечатывает следующую информацию:
1) Сегментный адрес недоступной памяти, взятый из PSP, в шестнадцатеричном виде.
2) Сегментный адрес среды, передаваемой программе, в шестнадцатеричном виде.
3) Хвост командной строки в символьном виде.
4) Содержимое области среды в символьном виде.
5) Путь загружаемого модуля.
Сохраните результаты, полученные программой, и включите их в отчет.
Шаг 2. Оформление отчета в соответствии с требованиями. В отчет включите скриншот с запуском программы и результатами.
Необходимые сведения для составления программы
При начальной загрузке программы формируется PSP, который размещается в начале первого сегмента программы. PSP занимает 256 байт и располагается с адреса,
кратного границе сегмента. При загрузке модулей типа .COM все сегментные регистры указывают на адрес PSP. При загрузке модуля типа .EXE сегментные регистры DS и ES
указывают на PSP. Именно по этой причине значения этих регистров в модуле .EXE
следует переопределять.
Формат PSP:
Смещение
Длина поля(байт)
Содержимое поля
0 2
int 20h
2 2
Сегментный адрес первого байта недоступной памяти. Программа не должна модифицировать содержимое памяти за этим адресом.
4 6
Зарезервировано
0Ah (10)
4
Вектор прерывания 22h (IP,CS)
0Eh (14)
4
Вектор прерывания 23h (IP,CS)
12h (18)
4
Вектор прерывания 24h (IP,CS)
2Ch (44)
2
Сегментный адрес среды, передаваемой программе.
5Ch
Область форматируется как стандартный неоткрытый блок управления файлом (FCB)
6Ch
Область форматируется как стандартный неоткрытый блок управления файлом (FCB).
Перекрывается, если FCB с адреса 5Ch открыт.
80h
1
Число символов в хвосте командной строки.
81h
Хвост командной строки - последовательность символов после имени вызываемого модуля.

Область среды содержит последовательность символьных строк вида:
имя=параметр
Каждая строка завершается байтом нулей.
В первой строке указывается имя COMSPEC, которая определяет используемый командный процессор и путь к COMMAND.COM. Следующие строки содержат информацию, задаваемую командами PATH, PROMPT, SET.
Среда заканчивается также байтом нулей. Таким образом, два нулевых байта являются признаком конца переменных среды. Затем идут два байта, содержащих 00h,
01h, после которых располагается маршрут загруженной программы. Маршрут также заканчивается байтом 00h.
Контрольные вопросы по лабораторной работе №2
Сегментный адрес недоступной памяти
1) На какую область памяти указывает адрес недоступной памяти?
2) Где расположен этот адрес по отношению области памяти, отведенной программе?
3) Можно ли в эту область памяти писать?
Среда передаваемая программе
1) Что такое среда?
2) Когда создается среда? Перед запуском приложения или в другое время?
3) Откуда берется информация, записываемая в среду?

ЛАБОРАТОРНАЯ РАБОТА № 3
«Исследование организации управления основной памятью»
Цель работы: Для исследования организации управления памятью необходимо ориентироваться на тип основной памяти, реализованный в компьютере и способ организации, принятый в ОС. В лабораторной работе рассматривается нестраничная память и способ управления динамическими разделами. Для реализации управления памятью в этом случае строится список занятых и свободных участков памяти. Функции ядра, обеспечивающие управление основной памятью, просматривают и преобразуют этот список.
В лабораторной работе исследуются структуры данных и работа функций управления памятью ядра операционной системы.
  1   2   3


написать администратору сайта