Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену СРВ.doc
Скачиваний:
7
Добавлен:
15.04.2019
Размер:
245.25 Кб
Скачать

25. Методы синхронизации задач, связанных друг с другом.

1) Сообщение – механизм передачи информации от одной задачи к другой.

Асинхронное сообщение – случай, когда доставка сообщений задаче производится после того, как она в плановом порядке получит управление.

Синхронное сообщение – случай, когда циркуляция сообщений оказывает непосредственное влияние на планирование задач.

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

3) Сигналы, события, прокси – механизмы передачи сообщений.

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

26. Средства синхронизации доступа к общим ресурсам.

Ресурс – физическое устройство или область памяти, которая одновременно может использоваться только одной задачей (клавиатура, монитор, принтер).

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

  • Двоичные семафоры (начальное значение = 1)

  • Счетные семафоры (счетчик) – может быть одновременно использован ограниченным числом задач.

Участки кода программ, где происходит обращение к разделяемым ресурсам наз. критическими секциями.

Они критические, потому что несколько задач могут одновременно использовать ресурсы.

Mutex – механизм, который гарантирует, что критическая секция кода программ используется в каждый момент времени только одним потоком (задачей). Это разновидность семафора, которая сигнализирует другим потокам, что критическая секция кода кем-то уже выполняется.

27. Ошибки, возникающие при синхронизации задач: «гонки», инверсия приоритетов, смертельный захват.

Гонки.

Если доступ к ресурсу не упорядочен, то могут возникать времяупорядочные ошибки (гонки)

«Гонка» - ситуация по захвату доступа к ресурсу задачей с немаксимальным приоритетом. Понятие «гонка» связано с операционной системой реального времени.

Устранение этих ошибок:

1) Желательно не использовать алгоритм планирования задач с вытеснением.

2) Нужно выделить отдельную задачу, ответственную за упорядочение доступа к этому ресурсу.

3) Запретить прерывание на время доступа к разделяемым данным.

4) Использовать для упорядочивания доступа семафоры (наиболее часто употребляемое решение).

Инверсия приоритетов.

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

Рассмотрим простой случай с тремя потоками: поток 1, поток 2 и поток 3.

Поток 1 - высокоприоритетный и становится готовым быть допущенным к процессору для исполнения кода. Поток 2, поток с низким приоритетом, выполняет код в критической секции программы. Поток 1 начинает ожидать совместно используемый ресурс от потока 2. Поток 3 имеет средний приоритет. Поток 3 получает все процессорное время, потому что поток 1 ожидает совместно используемые ресурсы от потока 2. Поток 2 не оставит критическую секцию программы, потому что не имеет самого высокого приоритета и не будет допущен к процессору для исполнения кода. И т.д.

Смертельный захват.

Зацикливание, зависание, т.е. задачи не поделили ресурсы.

Пример: задача А захватила ресурс клавиатуры и ждет, когда освободится дисплей, а другая задача В захватила дисплей и ждет освобождение дисплея.