Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Состояние состязания



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

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

in - переменная, указывающая на следующий свободный сегмент

out - переменная, указывающая на следующее имя файла для печати

Пример состязания

Распишем события по пунктам.

  1. Процесс А считывает переменную in (равную 7), и сохраняет ее в своей переменной next_free_slot.
  2. Происходит прерывание по таймеру, и процессор переключается на процесс В.
  3. Процесс В считывает переменную in (равную 7), и сохраняет ее в своей переменной next_free_slot.
  4. Процесс В сохраняет имя файла в сегменте 7.
  5. Процесс В увеличивает переменнуюnext_free_slot на единицу (next_free_slot+1), и заменяет значение in на 8.
  6. Управление переходит процессу А, и продолжает с того места на котором остановился.
  7. Процесс А сохраняет имя файла в сегменте 7, затирая имя файла процесса В.
  8. Процесс А увеличивает переменнуюnext_free_slot на единицу (next_free_slot+1), и заменяет значение in на 8.

Как видно из этой ситуации, файл процесса В не будет напечатан.





Дата публикования: 2014-11-04; Прочитано: 283 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...