Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие_Unix.doc
Скачиваний:
4
Добавлен:
26.11.2019
Размер:
2.41 Mб
Скачать
  1. Разделяемая память.

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

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

  1. Передача сообщений.

Разделяемым ресурсом здесь является очередь сообщений. Эта очередь может содержать произвольное количество (в пределах разумного) сообщений разной длины и разного типа.

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

Рисунок 3.10 - Использование очереди сообщений

Порядок чтения и записи сообщений из очереди соответствует названию этой структуры - очередь. Кроме того, за счет того, что каждое сообщение типизировано, есть возможность рассмотрения этой очереди с нескольких точек зрения. Первая точка зрения - это одна очередь и порядок в ней хронологический. Вторая точка зрения - это возможность представление этой очереди в виде нескольких очередей, каждая из которых содержит элементы определенного типа.

Здесь также возникают проблемы синхронизации.

  1. Семафоры.

Семафоры - это некоторый объект, который имеет целочисленное значение S, и с которым связаны две операции: V(S) и P(S).

Одна позволяет увеличивать значение семафора, другая - уменьшать. С этими изменениями связаны возможности блокировки процесса и разблокировки процесса.

Выполнение этих операций не может прерваться до их завершения. Т.е. если семафор реализован в системе, то это должна быть одна команда.

В этом случае разделяемым ресурсом является “массив семафоров”, каждый элемент массива - семафор. Как и к любому разделяемому ресурсу, к этому массиву может быть обеспечен доступ со стороны различных процессов, обладающих нужными правами и ключом к данному ресурсу.

Для управления работой семафора есть некоторые функции, которые позволяют реализовывать операции P и V над одним или несколькими семафорами и управлять ресурсом.

3.6.4 Межпроцессное взаимодействие с помощью файловой системы

FIFO – именованные каналы

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

Именованный канал используется как обыкновенный файл. При организации межзадачного взаимодействия одна программа должна открыть файл для чтения, а другая – для записи.

Для создания именованного канала используется системный вызов mkfifo() или из командной строки

Mkfifo /tmp/fifo

Теперь можно использовать канал так

В одном окне

Саt > /tmp/fifo

В другом

Cat < /tmp/fifo

Введенный в первом окне текст отразится во втором.

FIFO являются средством System V и не используются в BSD.

Именованные каналы Unix похожи на именованные каналы Win32. Однако, последние могут соединять процессы по сети, а в Unix для этого используются сокеты.

Сокеты

В отличие то канала, сокет – это устройство двунаправленного взаимодействия, которое предназначено для связи процессов, расположенных на одном или на разных компьютерах.

Сокеты образуют пользовательский интерфейс с сетью как телефонные розетки или почтовые ящики.

Взаимодействие сокетов носит клиент-серверный характер.

Рисунок 3.11 - Использование сокетов

Как только созданы сокеты на двух компьютерах, можно установить соединение. Функции установленного соединения аналогичны функциям канала (чтение, запись по дескриптору файла для сокета)