| |
Ранее было показано, каким образом взаимодействуют между собой процессы,
протекающие на разных машинах, при этом обращалось внимание на то, что
способы реализации взаимодействия могут быть различаться в зависимости от
используемых протоколов и сетевых средств. Более того, эти способы не
всегда применимы для обслуживания взаимодействия процессов, выполняющихся
на одной и той же машине, поскольку в них предполагается существование
обслуживающего (серверного) процесса, который при выполнении функций
open
или read
будет приостанавливаться драйвером. В целях
создания более универсальных методов взаимодействия процессов на основе
использования многоуровневых сетевых протоколов для системы BSD был
разработан механизм, получивший название ``sockets'' (гнезда). Рассмотрим
некоторые аспекты применения гнезд (на пользовательском уровне
представления).
Модель с использованием гнезд.
Процесс-клиент Процесс-сервер | | +--+ +--+ +-------------------------+--+ +--+--------------------------+ | Уровень гнезд | | Уровень гнезд | +-------------------------+--+ +--+--------------------------+ | TCP | | TCP | | Уровень протоколов | | | | Уровень протоколов | | IP | | IP | +-------------------------+--+ +--+--------------------------+ | Драйвер| | Драйвер | | Уровень устройств Ethernet| |Ethernet Уровень устройств | +-------------------------+--+ +--+--------------------------+ +---+ +---+ | | С е т ь
Структура ядра имеет три уровня: гнезд, протоколов и устройств (рисунок). Уровень гнезд выполняет функции интерфейса между обращениями к операционной системе (системным функциям) и средствами низких уровней, уровень протоколов содержит модули, обеспечивающие взаимодействие процессов (на рисунке упомянуты протоколы TCP и IP), а уровень устройств содержит драйверы, управляющие сетевыми устройствами. Допустимые сочетания протоколов и драйверов указываются при построении системы (в секции конфигурации); этот способ уступает по гибкости вышеупомянутому потоковому механизму. Процессы взаимодействуют между собой по схеме клиент-сервер: сервер ждет сигнала от гнезда, находясь на одном конце дуплексной линии связи, а процессы-клиенты взаимодействуют с сервером через гнездо, находящееся на другом конце, который может располагаться на другой машине. Ядро обеспечивает внутреннюю связь и передает данные от клиента к серверу.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |