Потоки в распределенных системах

Используется отдельная схема вызова, позволяющая потокам одного процесса выполнять локальные вызовы более эффективно

1. Когда стартует серверная нить S, она экспортирует свой интерфейс, сообщая о нем ядру

2. Когда стартует клиентский поток К, он экспортирует интерфейс из ядра, если собирается вызвать S и получает специальный идентификатор для выполнения вызова.

3. Ядро после экспорта интерфейса создает структуры данных для подготовки к вызову (основная из них – это разделяемый стек аргументов)

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

5. По идентификатору вызов определяется как локальный и запускается поток Сервер.

Для ускорения удаленных вызовов потоков, при поступлении запроса на сервер создается новый обрабатывающий поток, который уничтожается после выполнения запроса без блокировок или остановок (неявный вызов)

Синхронизация в распределенных системах

Алгоритмы синхронизации логических часов

Для 2 произвольных событий А и Б вводится отношение «случилось до». Это отношение транзитивное. Ставится задача такого механизма ведения времени, который для каждого события а мог указать значение времени Т(а), с которым были бы согласны все процессы системы. При этом, если а R b, то Т(а)<T(b) и корректировки времени могут выполняться только прибавлением положительных значений.

О 6 12 18 24 30 36 42 48 54 60
О 8 16 24 32 40 48 56 64 72 80
О 10 20 30 40 50 60 70 80 90 100

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



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: