Page 323 - ЭВМ
P. 323

ленное  сообщение  было  утеряно  из-за  сетевой  ошибки.  Чтобы  пре-
               дотвратить такую ситуацию, блокирующий примитив send часто ис-
               пользует механизм тайм-аута. То есть определяется интервал време-

               ни, после которого операция send завершается со статусом «ошибка».
               Механизм  тайм-аута  может  использоваться  также  блокирующим
               примитивом receive  для  предотвращения  блокировки  процесса-
               получателя на неопределенное время, когда процесс-отправитель по-
               терпел крах или сообщение было потеряно вследствие сетевой ошибки.

                      Если при взаимодействии двух процессов оба примитива (send
               и receive)  являются  блокирующими,  говорят,  что  процессы  взаимо-
               действуют по сети синхронно (рис. 10.2), в противном случае взаимо-
               действие считается асинхронным (рис. 10.3).

























                        Рис. 10.2. Синхронное взаимодействие с помощью блокирующих
                                              примитивов send и receive

                      По  сравнению  с  асинхронным  взаимодействием  синхронное

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

                      Обычно в ОС имеется один из двух видов примитивов, но ОС
               является  более  гибкой,  если  поддерживает  как  блокирующие,  так
               и неблокирующие примитивы.
                      Термины «клиент» и «сервер» используются не только для обо-

               значения  программных  модулей,  но  и  компьютеров,  подключенных
               к сети. Если компьютер предоставляет свои ресурсы другим компью-


                                                           312
   318   319   320   321   322   323   324   325   326   327   328