Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные. Дагаев / Операционные_системы_ЛР_№5_Отчет.docx
Скачиваний:
1
Добавлен:
02.01.2026
Размер:
58.58 Кб
Скачать

Сравнение средств синхронизации

Механизм

Преимущества

Недостатки

Применимость

Семафоры

Межпроцессная синхронизация, контроль доступа

Требуют явного управления, возможны deadlock

Межпроцессные системы, критические секции

Мьютексы

Простая синхронизация внутри процесса

Межпроцессная работа сложнее, требуется PTHREAD_PROCESS_SHARED

Многопоточность в рамках одного процесса

Read-write locks

Позволяют нескольким читателям читать одновременно

Писатели могут голодать, поддержка ОС

Преобладание чтений, современные системы

Выводы

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

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

  • Read-write locks удобны для систем с большим числом читателей, однако их поддержка зависит от операционной системы.

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

Результаты работы

  1. Семафоры (semaphores):

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

  1. Мьютексы (mutex):

Мьютексы эффективны для синхронизации потоков внутри одного процесса, однако для межпроцессной синхронизации требуют специальных атрибутов (PTHREAD_PROCESS_SHARED). В условиях лабораторной работы их применение усложняет код и не даёт явных преимуществ перед семафорами. При использовании мьютексов возможны задержки и сложности при масштабировании на несколько процессов.

  1. Блокировки чтения-записи (read-write locks):

Этот механизм позволяет нескольким читателям читать одновременно, что делает его эффективным при преобладании операций чтения. Однако писатели могут ожидать, если поток читателей постоянный, что может замедлять обновление данных. Read-write locks удобны и просты для реализации в современных системах, но их поддержка зависит от ОС.

Общие выводы

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

  • Мьютексы эффективны для многопоточности внутри одного процесса, но их использование для нескольких процессов усложняет реализацию.

  • Read-write locks удобны для систем с большим числом читателей, но писатели могут ожидать доступа к ресурсу, что снижает предсказуемость времени отклика.

  • Выбор механизма синхронизации зависит от конкретного сценария: при преобладании чтений можно использовать read-write locks, при критичной записи — семафоры.

Рис. 18. Зависимость времени цикла работы писателя от числа читателей

Выводы

В ходе выполнения лабораторной работы были реализованы следующие задачи:

  • Изучена среда разработки Visual Studio 2022.

  • Изучены различные средства синхронизации процессов: семафоры, мьютексы и блокировки чтения-записи (read-write locks).

  • Разработана программа для демонстрации работы писателя и нескольких читателей с разделяемой памятью.

  • Опытным путём получены значения времени работы писателя и читателей при разном числе процессов.

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

В результате исследования были сформулированы следующие выводы:

  1. Семафоры оказались наиболее эффективным инструментом для межпроцессной синхронизации, так как они позволяют корректно управлять доступом нескольких процессов к разделяемой памяти, предотвращая гонки данных. При увеличении числа читателей наблюдается рост времени отклика писателя, но данные остаются корректными.

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

  3. Read-write locks позволяют нескольким читателям одновременно читать данные, что делает их удобными при преобладании чтений. Однако писатели могут блокироваться при постоянном потоке читателей, что снижает предсказуемость времени отклика и может замедлять обновление данных.

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