Лабораторная работа №1 по ОС (задания)
Тема: Объекты синхронизации WIN32

Язык программирования: Паскаль
Компилятор: Delphi 2-8 (dcc32.exe)
ОС: семейства WIN32
Содержание работы: Реализовать в зависимости от задачи варианта один из механизмов синхронизации задач с несколькими потоками выполнения

Требования:
  1. Использование только вызовов API
  2. Желательно описание внешних вызовов ОС производить непосредственно в своем коде (разрешено пользоваться описанием windows.pas)
  3. Обработка ошибок и их анализ по каждому вызову функций API
  4. Остановка исследуемого процесса по вводу символа «а» с клавиатуры
Конечный результат:
  1. Получить требуемую в варианте величину.
  2. Пакетный файл компиляции.
  3. Отчет с выводами и анализом результатов. В анализ должны входить оценки вероятностных показателей измеренной в варианте величины.
  4. Файл с «трейсом» работы объекта синхронизации. Формат - удобный для чтения.
  5. Исходный код программы на дискете.
Варианты:
  1. Реализовать схему «оповещения» трех ожидающих потоков о помещении в очередь (произвольного формата) некоторого сообщения на основе объекта синхронизации «событие». Генерируют события в очередь два потока, которые имеют приоритет на уровень ниже, чем ожидающие. Посчитать среднее число обработанных каждым потоком сообщений. Очередь должна быть защищена критической секцией.
  2. Реализовать критическую секцию на основе объекта синхронизации типа «событие». Продемонстрировать функционирование на примере защиты реализованной критической секцией некоторой очереди сообщений произвольного формата.
  3. Отобразить файл размера 32К в память. Реализовать транспортировку данных из отображения в файл на диске (один поток). Два других потока записывают некоторые данные в это отображение. Синхронизация доступа к данным отображения осуществляется при помощи объекта синхронизации типа «мьютекс».
  4. Реализовать семафор на основе объекта синхронизации «событие». Количественные характеристики семафора должны быть аналогичны соответствующему объекту ядра типа семафор.
  5. Реализовать моделирование «тупика» на примере работы с критическими секциями. Временные параметры модели определяются до начала моделирования (произвольны, но обязательно изменяемы). Провести анализ вероятности тупика, если она равна 1, то обосновать.
  6. Реализовать моделирование «гонок» на примере работы с критическими секциями. Временные параметры модели определяются до начала моделирования (произвольны, но обязательно изменяемы). Провести анализ вероятности тупика, если она равна 1, то обосновать.
  7. (со звездочкой) Реализовать моделирование «столкновений» на примере работы с критическими секциями. Временные параметры модели определяются до начала моделирования (произвольны, но обязательно изменяемы). Провести анализ вероятности тупика, если она равна 1, то обосновать.
  8. Реализовать мьютекс на основе объекта синхронизации «событие». Количественные характеристики мьютекс должны быть аналогичны соответствующему объекту ядра типа мьютекс.
  9. Организовать совместное использование мьютекса и события для защиты добавления элемента в очереди. Очередь произвольного формата. Событие сигнализирует чтение из очереди, а мьютекс - запись. Требуется снять статистику по времени использования объектов ядра.
  10. Реализовать на мьютексе семафор. Количественные характеристики семафора должны быть аналогичны соответствующему объекту ядра типа семафор.
Сайт управляется системой uCoz