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

Отчёт по лабораторной работе №3

.docx
Скачиваний:
0
Добавлен:
30.09.2026
Размер:
601 Кб
Скачать
☆

Министерство цифрового развития связи и массовых коммуникаций

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

СВЯЗИ И ИНФОРМАТИКИ»

Кафедра «Системное программирование»

Отчёт по лабораторной работе №3

по дисциплине «Операционные системы»

Выполнил: студент группы БСТ2104

Ягудин Р.Р.

Проверил: ст. преп. Алексанян Д.А.

Москва, 2023 г.

Цель лабораторной работы:

Получить практические навыки при исследовании методов синхронизаций потоков

Задание на лабораторную работу

Исследовать на конкретных примерах следующие методы синхронизации потоков:

1) критические секции

2) мьютексы

3) события

4) семафоры

Задание 1. Исследование критической секции

Описание задачи:

Разработка программы для учёта баланса банковского счёта. У нас есть два потока, каждый из которых может обращаться к балансу счёта и изменять его. Первый поток связан с внесением суммы, второй поток связан со снятием суммы. Чтобы избежать «гонки данных», используется критическая секция для блокировки доступа к счёту во время изменения баланса.

На рисунке 1 представлен код реализации критической секции

Рисунок 1 – Код реализации критической секции

На рисунке 2 представлен результат реализации критической секции

Рисунок 2 – Результат реализации критической секции

Задание 2. Исследование мьютекса

Описание задачи:

Разработка программы для взаимодействия с текстовым файлом. У нас имеются два процесса. Оба процесса используют два одинаковых потока. Первый поток связан с вводом данных в файл, второй поток связан с выводом данных из файла. При запуске программы выводятся два диалоговых окна (два процесса), при этом между ихними потоками реализована синхронизация. Мьютекс в данном примере нужен для синхронизации доступа к файлу при наличии нескольких процессов.

На рисунке 3 представлен код реализации мьютекса

Рисунок 3 – Код реализации мьютекса

На рисунках 4 и 5 представлены результаты реализации мьютекса

Рисунок 4 – Результат реализации мьютекса при вводе данных (первый процесс)

Рисунок 5 – Результат реализации мьютекса при выводе данных (второй процесс)

Задание 3. Исследование события

Описание задачи:

Разработка программы, связанной со скачиванием определённого количества файлов и с оповещением о завершении скачивания. У нас есть два потока. Первый поток начинает скачивание с первого файла, второй поток – со второго файла. Между ними реализована «конкуренция» за скачивание файлов. Когда один поток заканчивает скачивание файла, он переходит к скачиванию следующего свободного файла. Событие в данном примере используется в качестве сигнала о завершении скачивания всех файлов.

На рисунке 6 представлен код реализации события

Рисунок 6 – Код реализации события

На рисунке 7 представлен результат реализации события

Рисунок 7 – Результат реализации события

Задание 4. Исследование семафора

Описание задачи:

Разработка программы, связанной с совместным использованием ограниченных ресурсов. Предположим, имеются три приложения, каждое из которых должно выполнить вывод на печать, а у компьютера только два параллельных порта. Установив семафор с начальным значением счетчика ресурсов, равным двум, можно заставить приложения запрашивать сервис печати только тогда, когда есть свободный параллельный порт.

На рисунке 8 представлен код реализации семафора

Рисунок 8 – Код реализации семафора

На рисунках 9 и 10 представлены результаты реализации семафора

Рисунок 9 – Результат реализации семафора при освобождении 1 порта

Рисунок 10 – Результат реализации семафора при освобождении 2 порта

7