Помощь в учёбе, очень быстро...
Работаем вместе до победы

Именованные каналы. 
Операционные системы

РефератПомощь в написанииУзнать стоимостьмоей работы

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

Именованные каналы. Операционные системы (реферат, курсовая, диплом, контрольная)

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

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

Данные записываются и считываются из канала при помощи функции write{) и read{), но, в отличие от обычных файлов, для повышения эффективности в канале используются только блоки прямой адресации.

Для создания именованных каналов в некоторых системах имеется функция mkfifo(), создающая файлы особого типа. Из названия функции легко понять, что метод работы с таким каналом основан на технологии «первым пришел — первым вышел». Поскольку с именованным каналом могут работать несколько процессов, то необходимо определять права каждого на чтение/запись, используя функцию umask (), создающая битовую маску на все защитные аттрибуты файла: Вызов mkfifo{).

#include

#include

int mkfifo (const char 4fifoname, mode t mode);

где fifoname — имя создаваемого канала; mode — разрешения на работу с файлом задаваемые через маску mode & ~umask. При возникновении ошибки функция возвращает -1, в противном случае — 0. Если в системе нет функции mkssfoQ, то можно использовать функцию mknod () для создания файла:

int tnknod (char *pathname, int mode, int dev)-,

Параметр pathname обычно указывает каталог и имя файла. Права доступа определяются константой SIFIFO из хидерного файла . Третий параметр dev показывает тип устройства, па котором создается файл, — битили байт-ориентированное (обычно равен нулю). Фрагмент кода для создания именованного канала показан ниже:

if (mknod («/tmp/fifo0001.1 «, SJFIFO SJRUSR SJWUSR, 0) == - 1)

{// обработка ошибки открытия }

Показать весь текст
Заполнить форму текущей работой