Системное и прикладное программное обеспечение. Абрахин С.И - 26 стр.

UptoLike

Составители: 

26
Прочитать NEXT
Поместить имя
файла RFILE
Нарастить NEXT
Прочитать NEXT
Поместить имя
файла SFILE
Нарастить NEXT
Процесс R
Процесс S
Разделяемый ресурс
NEXT
1. ALPHA
2. BETA
Печать файлов из списка
Принт-сервер
Рис. 7. Схема взаимодействия процессов R и S с разделяемы ресурсом
Предположим, что в некоторый момент процесс R решил распе-
чатать свой файл, для этого он прочитал значение переменной
NEXT, значение которой для определенности предположим
равным 4. Процесс запомнил это значение, но поместить имя
файла не успел, так как его выполнение было прервано (напри-
мер, вследствие исчерпания кванта). Очередной процесс S, же-
лающий распечатать файл, прочитал то же самое значение пе-
ременной NEXT, поместил в четвертую позицию имя своего
файла и нарастил значение переменной на единицу. Когда в
очередной раз управление будет передано процессу R, то он,
продолжая свое выполнение, в полном соответствии со значени-
ем текущей свободной позиции, полученным во время преды-
дущей итерации, запишет имя файла также в позицию 4, поверх
имени файла процесса S.
На рис. 8 представлена диаграмма переключения между
процессами.
Таким образом, процесс S никогда не увидит свой файл
распечатанным. Сложность проблемы синхронизации состоит в
нерегулярности возникающих ситуаций: в предыдущем примере
можно представить и другое развитие событий: были потеряны
файлы нескольких процессов или, напротив, не был потерян ни
                              Принт-сервер
                          Печать файлов из списка


   Процесс R               Разделяемый ресурс
                                                            Процесс S
 Прочитать NEXT              1. ALPHA                    Прочитать NEXT
                             2. BETA
  Поместить имя                                           Поместить имя
   файла RFILE                                             файла SFILE
 Нарастить NEXT                                          Нарастить NEXT


                                  NEXT


   Рис. 7. Схема взаимодействия процессов R и S с разделяемы ресурсом

Предположим, что в некоторый момент процесс R решил распе-
чатать свой файл, для этого он прочитал значение переменной
NEXT, значение которой для определенности предположим
равным 4. Процесс запомнил это значение, но поместить имя
файла не успел, так как его выполнение было прервано (напри-
мер, вследствие исчерпания кванта). Очередной процесс S, же-
лающий распечатать файл, прочитал то же самое значение пе-
ременной NEXT, поместил в четвертую позицию имя своего
файла и нарастил значение переменной на единицу. Когда в
очередной раз управление будет передано процессу R, то он,
продолжая свое выполнение, в полном соответствии со значени-
ем текущей свободной позиции, полученным во время преды-
дущей итерации, запишет имя файла также в позицию 4, поверх
имени файла процесса S.
     На рис. 8 представлена диаграмма переключения между
процессами.
     Таким образом, процесс S никогда не увидит свой файл
распечатанным. Сложность проблемы синхронизации состоит в
нерегулярности возникающих ситуаций: в предыдущем примере
можно представить и другое развитие событий: были потеряны
файлы нескольких процессов или, напротив, не был потерян ни
                                         26