Системы реального времени Лекция 5: взаимодействие процессов
Взаимодействие процессов Взаимодействие процессов может быть условно поделено на – Взаимодействие с целью синхронизации – Взаимодействие с целью обмена данными В данной лекции будет рассмотрено взаимодействие для обмена данными
Обмен данными между процессами Должен происходить максимально быстро Должен быть безопасным с точки зрения целостности данных Желательна переносимость метода обмена данными
Обмен данными между процессами Методы обмена данными между процессами заметно различаются для – Систем с раздельным адресным пространством для каждого процесса – Систем с общим адресным пространством для всех процесса Существуют – Общие методы обмена данными – Специфические метода обмена данными
Общие методы обмена данными Сетевые сокеты Сокеты UNIX Каналы, или пайпы (pipe)
Сетевые сокеты Служат для передачи информации по сетям Могут использоваться локально (интерфейс- петля, loopback) Стандартизованы POSIX Поддерживаются практически всеми ОСРВ Работают медленно – Многократное копирование пользовательских данных
Сокеты UNIX Служат для обмена данными между процессами в UNIX-системах Стандартизованы POSIX Поддерживаются практически всеми ОСРВ Работают медленно – Запись в файл передаваемых данных
Сокеты: интерфейс #include #include int socket(int domain, int type, int protocol); Возвращает дескриптор domain: PF_LOCAL (PF_UNIX), PF_INET, … Type: SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET Protocol: зависит от domain и type
Каналы Служат для обмена данными между процессами в UNIX-системах Стандартизованы POSIX Поддерживаются большинством ОСРВ Работают быстрее сокетов – Меньше копирований пользовательских данных
Каналы: интерфейс #include int pipe(int filedes[2]); Заполняет два дескриптора filedes: – filedes[0] – для чтения – filedes[1] – для записи
Специфические метода обмена данными Системы с общим адресным пространством для процессов: Системы с раздельным адресным пространством процессов: – Разделяемая память: System V Shared memory (shmem) – Очереди сообщений: System V message queues
Литература по теме Настоятельно рекомендуется книга У. Стивенса «UNIX: взаимодействие процессов», изд-во «Питер», 2002.