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

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

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

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-12-21; просмотров: 1060;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.