Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольные вопросы + ответы.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
323 Кб
Скачать
☆
  1. Задача «разделение доступа к ресурсу». Способы ее решения.

В примере учёта поступающих средств для обеспечения надёжной работы требуется предотвратить одновременный доступ нескольких процессов к разделяемому ресурсу – счётчику.

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

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

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

Обеспечение взаимоисключения – необходимость отслеживать попытки входа процессов в свои критические секции (операция entercritical) и выхода из них (операция leavecritical).

При выполнении entercritical процесс может блокироваться до освобождения ресурса. При выполнении leavecritical, один из процессов ожидающих входа, возобновляет свою работу.

Требование к реализации операций entercritical и leavecritical – их атомарность.

  1. Задача «синхронизация по готовности данных». Способы ее решения.

Синхронизация потоков по действиям и данным может быть выполнена с

помощью семафоров.

Семафор S – защищённая переменная, значение которой можно опрашивать и менять только специальными операциями P и V, а также операцией инициализации. Множество значений семафора: неотрицательные целые числа.

Операция инициализации: определяет начальное значение семафора.

Операция P(S): значение семафора уменьшается на 1, если оно положительно или поток блокируется, если значение семафора нулевое.

Операция V(S): пробуждение одного из потоков, ожидающих на семафоре, или увеличение значения на 1, если таковых нет.

При входе в критическую секцию поток должен выполнять операцию P(S), а при выходе – V(S).

Расширение операции P (неблокирующий вариант) – P'(S) : при нулевом значении семафора немедленно возвращается признак отказа в доступе.

Примеры использования семафоров.РИС

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

Синхронизация необходима только для потребителя. Он должен дождаться готовности данных.

Для решения достаточно одного семафора CanRead (признак наличия данных в буфере Data) с начальным значением 0 («отсутствие данных»).

Задача «производитель-потребитель» для случая многократного обмена данными

Необходима синхронизация и для производителя. Ему необходимо знать, что потребитель произвёл считывание предыдущих данных из буфера. Для решения достаточно двух семафоров CanRead (признак наличия данных в буфере Data) с начальным значением 0 («отсутствие данных») и CanWrite (буфер свободен для занесения) с начальным значением 1.

  1. Системные средства синхронизации потоков.

1.Решение задачи «разделение доступа к ресурсу».

В примере учёта поступающих средств для обеспечения надёжной работы требуется предотвратить одновременный доступ нескольких процессов к разделяемому ресурсу – счётчику.

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

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

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

Обеспечение взаимоисключения – необходимость отслеживать попытки входа процессов в свои критические секции (операция entercritical) и выхода из них (операция leavecritical).

При выполнении entercritical процесс может блокироваться до освобождения ресурса. При выполнении leavecritical, один из процессов ожидающих входа, возобновляет свою работу.

Требование к реализации операций entercritical и leavecritical – их атомарность.