Skip to content

Latest commit

 

History

History
61 lines (43 loc) · 7.08 KB

FAQ.md

File metadata and controls

61 lines (43 loc) · 7.08 KB

Наиболее распространенне проблемы по курсу ОС

В данном документе акцентировано внимание на мелочи, в которых студенты чаще всего ошибаются.

Лабораторная работа №1

В данной работе после компилирующихся программ имеют большую важность ответы на вопросы. Далее приведены наводящие вопросы, которые должны помочь ответить на основные правильно.

  • COM модуль получается при помощи EXE2BIN.COM LAB1.EXE LAB1.COM.
  • Сколько сегментов минимум может содержать EXE модуль? А максимум? Чем ограничено?
  • Все ли директивы перечислили? Чем директивы отличаются от операторов? Попробуйте убрать все директивы: программа компилируется? Найден ли CS? Работает ли программа?
  • Какие команды допустимы в EXE, которые недопустимы в CS? Почему? Откуда берется информация, благодаря которой недопустимые команды можно использовать в EXE?
  • В чем отличие заголовка от таблицы настройки (relocation table)? Является ли одно другим? Если нет, то в чем разница? Где какая часть начинается? До куда продолжается, каков размер?
  • Точно ли вы учитываете размер стэка при сравнении "плохого" и "хорошего" модулей EXE?
  • Точно ли скриншоты содержимого модулей совпадают с тем, что описано в структуре модулей, как то: смещения начала сегментов, взаимное расположение сегментов, размер?

Лабораторная работа №2

  • Что находится в области недоступной памяти?
  • С какого адреса начинается запущенная программа и в каком диапазоне адресов находится недоступный участок памяти?
  • Как выглядит разметка оперативной памяти? Почему 640кб?
  • Что запрещает писать в память программы или в недоступную память? Есть ли механизм защиты?
  • В DOS нет реестра.
  • Если в DOS нет реестра, то откуда берется среда?
  • Что-такое COMMAND.COM? Как он связан со средой ОС и загруженной программой?
  • Проверьте, что параметры запуска программы корректно обрабатываются (символы не затираются, хвост вообще отображается и т.д.)

Лабораторная работа №3

  • Постарайтесь сделать вывод информации максимально компактной: например табличкой, где каждай строка -- один MCB.
  • Последние 8 байт MCB != принадлежность MCB процессу.
  • Что тогда точно характеризует принадлежность MCB процессу?
  • Небольшой MCB из 144 байт -- что это? Принадлежит ли он процессу?
  • Учитывайте ответы на эти вопросы при подсчете объема программы.

Лабораторная работа №4

  • В лабораторной обязательно надо устанавливать у резидетного обработчика прерывания собственный стек перед исполнением и восстанавливать SS:SP прерванной программы после.
  • После установки стека надо обязательно аккуратно сохранить значения всех используемых внутри обработчика регистров.
  • Обязательно проверьте, что стек восстанавливается в исходное состояние в конце.
  • Как проверять: виртуальная машина (не эмулятор!) DOS и запуск afd нем: если adf корректно запускается и закрывается без ошибок, зависаний и глюков, то скорее-всего все работает верно.
  • Как отлаживать: закомментировать тело обработчика и построчно (зеркальными парами строк) добавлять обратно. В afd переходить стрелочками на непосредственный код обработчика и начать исполнять его: состояние регистров и стека до начала исполнения обработчика (и установки собственного стека в нем) и после меняться не должно.

Лабораторная работа №5

  • Все аналогично прошлой работе, но кроме этого не забывайте явно в отчете указать что конкретно меняет ваш обработчик прерывайний.
  • Подумайте внимательно, можно ли с вашим обработчиком ввести имя вашей программы, afd.com и quit. Если нет -- лучше выберите другие коды.

Лабораторная работа №6

  • Ctrl+C в dosbox не работает. Самое надежное для проверки: вирутальная машина.
  • Обязательно проверяйте, что прогамму можно запустить из другой директории и LAB2.COM тоже загружается (если присутствует рядом с модулем, конечно; если нет -- то об этом должно сообщаться пользователю)

Лабораторная работа №7

  • Оверлей получается путем применения EXE2BIN.COM OVL1.ASM OVL.OVL
  • В бинарном виде оверлея только код: никаких таблиц, пустот и прочего: только байты машинного кода.
  • Проверяйте запуск из директории как в 6й работе.
  • Корректно обрабатывайте отсутствие оверлея.