Skip to content

Latest commit

 

History

History

lab_05

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

(Не могу ручаться за ответы. Не сдавала Наталье Юрьевне)

  • Основное свойство набора семафоров? Одной неделимой командой можно изменить состояние всего набора семафоров или части набора.
  • Когда могут блокироваться процессы? На семафоре, когда активен другой процесс
  • Что дает проверка семафора на 0 (или NULL)?! Ожидание освобождения семафора без попытки захвата.

Читатели-писатели

  • В каком режиме работают писатели?
    В режиме монопольного доступа к разделяемой переменной

  • Что за структуру создали?
    Структура описывает действия, которые мы будем производить с нашими процессами (с набором семафоров). Первое значение в тройке является ИНДЕКСОМ, второе действием, третье флагом (если стоит 0, значит флаг отсутствует)

  • Зачем нужен массив структур?
    Чтобы производить неделимую операцию над набором семафоров.

  • На чем могут быть блокированы читатели/писатели

  • Чем обусловлено потерянное обновление?
    Потерянное обновление - это когда несколько писетелей подряд записали данные. (читатель не прочитал обновленные данные).
    Все ок:

    1. writer: a = 1
    2. reader: a = 1
    3. writer: a = 2
      Есть потерянное обновление:
    • reader: a = 2
    • writer: a = 1
    • writer: a = 2
    • reader: a = 2
  • Потерянное обновление обусловлено особенностью алгоритма. При выходе из писателя писатель проверяет, нет ли у нас ждущих писателей,

    • если нет таковых, то выдается разрешение на чтение,
    • если есть ждущие писатели, то писатели пишут до тех пор пока не освободится очередиь писателей. (читатели в это время не могут читать)
  • Что тогда делается с бесконечным откладыванием?

Потребители-производители

  • На чем может быть блокирован потребитель? На бинарном семафоре и на семафоре потребителей
  • На чем может быть блокирован производитель/потребитель?
  • Зачем нужен каждый конкретный семафор?
    • бинарный для предотвращения одновременного доступа производителя и потребителя,
    • производства: для блокировки производителя при заполнении буфера,
    • потребителя: для блокировки потребителя при пустом буфере.