/BMSTU_5sem_operating_systems

5th sem BMSTU, Operating Systems Course

Primary LanguageTeX

Операционные системы

Лабораторные работы

1.1 Дизассемблирование INT 8h

Используя sourser (sr.exe) получить дизассемблерный код обработчика аппаратного прерывания от системного таймера Int 8h. На основе полученного кода составить алгоритм работы обработчика Int 8h. Отчет должен содержать:

  • полученный ассемблерный код с адресами команд и коментариями;
  • графический алгоритм работы обработчика прерывания Int 8h

1.2. Изучение функций прерывания от системного таймера в системах разделения времени, изучение пересчета динамических приоритетов.

Отчет по лабораторной работе состоит из двух частей:

  1. Функции обработчика прерывания от системного таймера для двух классов ОС - Windows и Unix:
  • по тику;
  • по главному тику;
  • по кванту.
  1. Пересчет динамических приоритетов - также отдельно для ОС семейства Windows и для ОС Unix. Отчет заканчивается выводами, сделанными на основе проведенного исследования.

2. Перевод компьютера в защищенный режим

Написать программу, переводящую компьютер в защищенный режим (32-разраядный режим работы компьютеров на базе процессоров Intel). Программа начинает работать в реальном режиме. Для перевода в защищенный режим выполняются необходимые действия. В защищенном режиме программа работает на нулевом уровне привилегий. В защищенном режиме программа должна:

  • определить объем доступной физической памяти;
  • осуществить ввод с клавиатуры строки с выводом введенной строки на экран;
  • получить информацию на экране от системного таймера или в виде мигающего курсора, или в виде количества тиков с момента запуска программы на выполнение, или в виде значения реального времени.

Затем программа корректно возвращается в реальный режим с соответствующими сообщениями.

4. Процессы (Unix). Системные вызовы fork() и exec().

В лабораторной работе надо создать пять программ:

  1. Процессы-сироты. В программе создаются не менее двух потомков. В потомках вызывается sleep(). Чтобы предок гарантированно завершился раньше своих потомков. Продемонстрировать с помощью соответствующего вывода информацию об идентификаторах процессов и их группе. Продемонстрировать «усыновление».
  2. Предок ждет завершения своих потомком, используя системный вызов wait(). В программе необходимо, чтобы предок выполнял анализ кодов завершения потомков.
  3. Потомки переходят на выполнение других программ, которые передаются системному вызову exec() в качестве параметра.
  4. Предок и потомки обмениваются сообщениями через неименованный программный канал.
  5. Предок и потомки аналогично п.4 обмениваются сообщениями через неименованный программный канал. В программу включается собственный обработчик сигнала. С помощью сигнала меняется ход выполнения программы.

5. Взаимодействие параллельных процессов (UNIX)

В лабораторной работе исследуются вопросы и формируются навыки использования в приложениях таких средств меж процессного взаимодействия, как семафоры и разделяемая память. В лабораторной работе выполняются две программы на основе задач, характерных для взаимодействия асинхронных параллельных процессов: «производство-потребление» и «читатели-писатели».

6. Реализация монитора Хоара «Читатели-писатели» под ОС Windows

В лабораторной работе необходимо разработать многопоточное приложение, используя API ОС Windows такие как, потоки, события (event) и мьютексы (mutex). Потоки разделяют единственную глобальную переменную. Приложение реализует монитор Хоара «Читатели-писатели».