Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




События

Читайте также:
  1. Вероятность случайного события
  2. Жизненный путь: события жизни, психологическая биография. Стили жизни. Жизненное пространство личности.
  3. Зависимые и независимые события.
  4. Зависимые и независимые события. Условная вероятность события
  5. Код для события Click Компонента button1.
  6. Код для события Click Компонента button10
  7. Код для события Click Компонента button4
  8. Код для события Click Компонента button5
  9. Код для события Click Компонента button5
  10. Код для события Click Компонента button7

События обычно просто оповещают об окончании какой-либо операции, они также являются объектами ядра. Со­бытия могут быть мануальными (manual) и единичными (single).
Единичное событие (single event) - это скорее общий флаг. Событие находится в сигнальном состоянии, если его установил какой-нибудь поток. Если для работы программы требуется, чтобы в случае возникновения события на него реа­гировал только один из потоков, в то время как все остальные потоки продолжа­ли ждать, то используют единичное событие. После установления события только один ожидающий поток будет оповещен об этом событии и, соответственно, сможет продолжить работу. После этого система автоматически сбросит событие. Если в момент установки события не существует ни одного ожидающего потока, событие останется в сигнальном положении до тех пор, пока в системе не появится какой-либо ожидающий это событие поток.

Мануальное событие (manual event) - это не про­сто общий флаг для нескольких потоков. Оно выполняет несколько более слож­ные функции. Любой поток может установить это событие или сбросить (очистить) его. Если собы­тие установлено, оно останется в этом состоянии сколь угодно долгое время, вне зависимости от того, сколько потоков ожидают установки этого события. Когда все потоки, ожидающие этого события, по­лучат сообщение о том, что событие произошло, оно автомати­чески сбросится.

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

Если событие больше не нужно, программа должна обратиться к вызову CloseHandle() для того, чтобы уменьшить его счётчик пользователей. Если счетчик будет равен нулю, объект событие удалится системой.


Тупики

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

Tупик (deadlock) - это такая ситуация в системе, когда процесс ожидает некоторого события, которое никогда не произойдет. Системная тупиковая ситуация, или “зависание” системы - это ситуация, когда один или более процессов оказываются в состоянии тупика.

Тупик (deadlock) – множество заблокированных процессов, каждый из которых владеет некоторым ресурсом и ожидает ресурса, которым владеет какой-либо другой процесс из этого множества.

Рассмотрим простой пример тупика при распределении ресурсов.

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

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

Рис. 5 Граф распределения ресурсов

Такое состояние кругового ожидания характерно для систем в тупиковом состоянии.

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

Четыре необходимых условия возникновения тупика

Коффман, Элфик и Шошани сформулировали следующие четыре необходимых условия наличия тупика:

• Условие взаи­моисключения - процессы требуют предоставления им права монопольного управления ресурсами, которые им выделяются (только один процесс в каждый момент времени может получить доступ к ресурсу);

• Условие удержания и ожидания ресурсов - процессы удерживают за собой ресурсы, уже выделенные им, ожидая в то же время выделения дополнительных ресурсов;

• Условие неперераспределяемости - ресурсы нельзя отобрать у процессов, удерживающих их, пока эти ресурсы не будут использованы для завершения работы (процесс может освободить ресурс только добровольно, когда завершит свою работу);

• Условие кругового или циклического ожидания - существует кольцевая цепь процессов, в которой каждый про­цесс удерживает за собой один или более ресурсов, требующихся следующему процессу цепи (существует множество {P0, P1, … P0}, такое, что P0 ожидает ресурса, которым обладает P1; P1 ожидает ресурса, которым обладает P2 … Pn ожидает ресурса, которым обладает P0).


<== предыдущая страница | следующая страница ==>
Семафоры | Основные направления исследований по проблеме тупиков

Дата добавления: 2014-03-11; просмотров: 298; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.