Скачать презентацию Взаимодействие процессов Причины для взаимодействия Повышение скорости Скачать презентацию Взаимодействие процессов Причины для взаимодействия Повышение скорости

04 Взаимодействие процессов.ppt

  • Количество слайдов: 33

Взаимодействие процессов Взаимодействие процессов

Причины для взаимодействия Повышение скорости работы Совместное использование данных Модульная конструкция системы Удобство пользователя Причины для взаимодействия Повышение скорости работы Совместное использование данных Модульная конструкция системы Удобство пользователя

Категории средств общения Сигнальные Канальные Разделяемая память Категории средств общения Сигнальные Канальные Разделяемая память

Способы адресации Прямая адресация При каждой операции общения прямо указывается получатель Симметричная прямая адресация Способы адресации Прямая адресация При каждой операции общения прямо указывается получатель Симметричная прямая адресация Оба партнёра по общению указывают получателя Ассиметричная прямая адресация Один партнёр указывает второго, второй готов к общению с любым процессом Непрямая адресация Используется промежуточный объект, получатель и отправитель не указываются

Валентность связи Валентность Сколько процессов может быть вовлечено: n n Прямая адресация – только Валентность связи Валентность Сколько процессов может быть вовлечено: n n Прямая адресация – только два процесса Непрямая адресация – несколько процессов на каждый объект

Направленность связи Однонаправленная Каждый процесс может использовать связь только для передачи или только для Направленность связи Однонаправленная Каждый процесс может использовать связь только для передачи или только для получения Двунаправленная n Полудуплексная передача информации осуществляется поочерёдно n Дуплексная допускается одновременная передача информации

Канальные средства связи Безопасность Информативность Могут быть использованы для связи между процессами на разных Канальные средства связи Безопасность Информативность Могут быть использованы для связи между процессами на разных системах

Буферизация Сохраняет ли канал информацию, переданную одним процессом, до получения её другим? 1. Буфер Буферизация Сохраняет ли канал информацию, переданную одним процессом, до получения её другим? 1. Буфер отсутствует 2. Буфер ограниченной ёмкости 3. Неограниченный буфер

Модели передачи данных Поток ввода-вывода Данные представляются как единый неструктурированный поток байтов Сообщения Вводится Модели передачи данных Поток ввода-вывода Данные представляются как единый неструктурированный поток байтов Сообщения Вводится структура данных, подразумевающая по крайней мере границы сообщений

Pipe Процесс 1 Pipe Процесс 2 • Неименованый канал – pipe может использоваться внутри Pipe Процесс 1 Pipe Процесс 2 • Неименованый канал – pipe может использоваться внутри процесса или передаваться наследникам • Именованный канал – named pipe, FIFO Может использоваться для связи между любыми процессами

Надёжность линии связи 1. Не происходит потери информации 2. Не происходит искажения информации 3. Надёжность линии связи 1. Не происходит потери информации 2. Не происходит искажения информации 3. Не появляется лишней информации 4. Не нарушается порядок данных в процессе обмена

Обеспечение надёжности Контрольные суммы Коды, исправляющие ошибки Подтверждение получения Нумерация сообщений Обеспечение надёжности Контрольные суммы Коды, исправляющие ошибки Подтверждение получения Нумерация сообщений

Завершение связи Процедура завершения связи Что происходит при несогласованном завершении связи? n n Завершение Завершение связи Процедура завершения связи Что происходит при несогласованном завершении связи? n n Завершение ожидающего процесса Специальный код уведомления

Алгоритмы синхронизации Алгоритмы синхронизации

Interleaving Пусть имеются две активности: P: a b c Q: d e f Параллельное Interleaving Пусть имеются две активности: P: a b c Q: d e f Параллельное выполнение в режиме разделения времени: аbcdef abdcef abdecf abdefc adbcef. . . defabc

Interleaving P: x=2 Q: x=3 y=x-1 y=x+1 Возможные результаты: (x, y): (3, 4), (2, Interleaving P: x=2 Q: x=3 y=x-1 y=x+1 Возможные результаты: (x, y): (3, 4), (2, 1), (2, 3) и (3, 2)

Interleaving Детерминированный набор активностей Недетерминированный набор активностей Interleaving Детерминированный набор активностей Недетерминированный набор активностей

Условия Бернстайна R(P) – набор входных переменных для всех атомарных операций в P W(P) Условия Бернстайна R(P) – набор входных переменных для всех атомарных операций в P W(P) – набор выходных переменных для всех атомарных операций в P Если W(P) W(Q)= , W(P) R(Q)= и R(P) W(Q)= то выполнение P и Q детерминированно

Race condition Если набор активностей не детерминирован, то говорят что он находится в состоянии Race condition Если набор активностей не детерминирован, то говорят что он находится в состоянии race condition. Взаимное исключение одновременного выполнения процессов называют mutual exclusion.

Критическая секция Место в программе, в котором возможно возникновение race condition называют критической секцией Критическая секция Место в программе, в котором возможно возникновение race condition называют критической секцией while (some condition) { entry section critical section exit section remainder section } // пролог // эпилог

Требования к алгоритму Задача решается программным способом, атомарно только выполнение инструкций процессора Не должны Требования к алгоритму Задача решается программным способом, атомарно только выполнение инструкций процессора Не должны использоваться предположения о скорости выполнения процессов и числе процессоров Только один процесс должен находится в критической секции (mutual exclusion) Процессы вне критических участков не должны блокировать другие процессы Не должно возникать неограниченно долгого ожидания входа в критический участок

Запрет прерываний while (some condition) { запретить все прерывания critical section разрешить все прерывания Запрет прерываний while (some condition) { запретить все прерывания critical section разрешить все прерывания remainder section }

Переменная-замок shared int lock = 0; while (some condition) { while(lock); lock = 1; Переменная-замок shared int lock = 0; while (some condition) { while(lock); lock = 1; critical section lock = 0; remainder section }

Строгое чередование shared int turn = 0; while (some condition) { while(turn != i); Строгое чередование shared int turn = 0; while (some condition) { while(turn != i); critical section turn = 1 -i; remainder section }

Флаги готовности shared int ready[2] = {0, 0}; while (some condition) { ready[i] = Флаги готовности shared int ready[2] = {0, 0}; while (some condition) { ready[i] = 1; while(ready[1 -i]); critical section ready[i] = 0; remainder section }

Алгоритм Петерсона shared int ready[2] = {0, 0}; shared int turn; while (some condition) Алгоритм Петерсона shared int ready[2] = {0, 0}; shared int turn; while (some condition) { ready[i] = 1; turn =1 -i; while(ready[1 -i] && turn == 1 -i); critical section ready[i] = 0; remainder section }

Алгоритм булочной shared bool choosing[n]; shared int number[n]; (a, b)<(c, d) если a<c или Алгоритм булочной shared bool choosing[n]; shared int number[n]; (a, b)<(c, d) если a

Семафоры Значение: S 0 Операции: P – proberen/проверять P(S): пока S == 0 процесс Семафоры Значение: S 0 Операции: P – proberen/проверять P(S): пока S == 0 процесс блокируется; S = S – 1; V – verhogen/увеличивать V(S): S = S + 1;

Задача производитель-потребитель Producer: while(1) { produce_item; put_item; } Consumer: while(1) { get_item; consume_item; } Задача производитель-потребитель Producer: while(1) { produce_item; put_item; } Consumer: while(1) { get_item; consume_item; }

Задача производитель-потребитель Semaphore mutex = 1; Semaphore empty = N; /* где N – Задача производитель-потребитель Semaphore mutex = 1; Semaphore empty = N; /* где N – емкость буфера*/ Semaphore full = 0; Producer: while(1) { produce_item; P(empty); P(mutex); put_item; V(mutex); V(full); } Consumer: while(1) { P(full); P(mutex); get_item; V(mutex); V(empty); consume_item; }

Мониторы monitor_name { описание внутренних переменных ; void m 1(. . . ){. . Мониторы monitor_name { описание внутренних переменных ; void m 1(. . . ){. . . } void m 2(. . . ){. . . }. . . void mn(. . . ){. . . } { блок инициализации внутренних переменных; } } Условные переменные/ Conditional variables Операции: Signal() Wait()

Мониторы и задача производителя-потребителя monitor Producer. Consumer { condition full, empty; int count; void Мониторы и задача производителя-потребителя monitor Producer. Consumer { condition full, empty; int count; void put() { if(count == N) full. wait; put_item; count += 1; if(count == 1) empty. signal; } void get() { if (count == 0) empty. wait; get_item(); count -= 1; if(count == N-1) full. signal; } { count = 0; } } Producer: while(1) { produce_item; Producer. Consumer. put(); } Consumer: while(1) { Producer. Consumer. get(); consume_item; }

Сообщения Прямая адресация send(P, message) – послать сообщение message процессу P receive(Q, message) – Сообщения Прямая адресация send(P, message) – послать сообщение message процессу P receive(Q, message) – получить сообщение message от процесса Q Непрямая адресация send(A, message) – послать сообщение message в почтовый ящик A receive(A, message) – получить сообщение message из почтового ящика A