Атомарность записи в FIFO

Атомарность записи в FIFO

Наша простейшая пара клиент-сервер позволяет наглядно показать важность наличия свойства атомарности записи в пpoгрaммныe каналы и FIFO. Предположим, что два клиента посылают серверу запрос приблизительно в один и тот же момент. Первый клиент отправляет следующую строку:

1234 /etc/inet/ntp.conf

второй:

9876 /etc/passwd

Предполагая, что каждый клиент помещает данные в FIFO за один вызов write и кaждая строка имеет размер, не превышающий величины PIPE_BUF (что чаще всего заведомо выполняется, поскольку PIPE_BUF обычно лежит в диапазоне 1024-5120, а длина полного имени обычно oгрaничeнa 1024 байт), мы можем гарантировать, что в FIFO данные будут иметь следующий вид:

1234 /etc/inet/ntp.conf

9876 /etc/passwd

либо

9876 /etc/passwd

1234 /etc/inet/ntp.conf

Данные в канале не могут смешаться в «кашу», наподобие:

1234 /etc/inet9876 /etc/passwd

/ntp.conf

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Записи

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович


4.6. Именованные каналы (FIFO)

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

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


FIFO и NFS

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

FIFO и NFS Каналы FIFO представляют собой вид IPC, который может использоваться только в пределах одного узла. Хотя FIFO и обладают именами в файловой системе, они могут применяться только в локальных файловых системах, но не в присоединенных сетевых (NFS).solaris % mkfifo


4.11. Ограничения программных каналов и FIFO

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

4.11. Ограничения программных каналов и FIFO На программные каналы и каналы FIFO системой накладываются всего два ограничения:? OPEN_MAX — максимальное количество дескрипторов, которые могут быть одновременно открыты некоторым процессом (Posix устанавливает для этой величины


10.14. Реализация с использованием FIFO

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

10.14. Реализация с использованием FIFO Займемся реализацией именованных семафоров Posix с помощью каналов FIFO. Именованный семафор реализуется как канал FIFO с конкретным именем. Неотрицательное количество байтов в канале соответствует текущему значению семафора. Функция sem_post


12.14.1 Записи SOA

Из книги Linux программирование в примерах автора Роббинс Арнольд

12.14.1 Записи SOA Первой записью в файле стоит начало авторизации (Start of Authority — SOA):FISHFOOD.COM. IN SOA NS.FISHFOOD.COM. (                      postmaster.FISHFOOD.COM.                      94101101 ; serial number                         86400 ; refresh after 24 hours                          7200 ; retry after 2


26.3. Каналы типа FIFO

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

26.3. Каналы типа FIFO Канал FIFO — это канал, основанный на принципе очереди: «первым вошел, первым вышел». От обычного канала канал FIFO отличается следующим:? Канал FIFO сохраняется в файловой системе в виде файла, поэтому каналы FIFO называются именованными.? С именованным


Атомарность

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Атомарность Транзакция (называемая также единицей работы) описывается как множество действий, преобразующих данные. Чтобы быть "атомарной", транзакция должна быть реализована таким образом, чтобы обеспечить принцип "все или ничего, когда выполняются либо все операции,


9.3. Базовое межпроцессное взаимодействие: каналы и очереди FIFO

Из книги автора

9.3. Базовое межпроцессное взаимодействие: каналы и очереди FIFO Межпроцессное взаимодействие (Interprocess communication — IPC) соответствует своему названию: это способ взаимодействия для двух отдельных процессов. Самым старым способом IPC на системах Unix является канал (pipe):


9.4.3.4. Неблокирующий ввод/вывод для каналов и FIFO

Из книги автора

9.4.3.4. Неблокирующий ввод/вывод для каналов и FIFO Ранее для описания способа работы каналов мы использовали сравнение с двумя людьми, моющими и вытирающими тарелки с использованием сушилки; когда сушилка заполняется, останавливается моющий, а когда она пустеет,


Угроза получения учетной записи администратора с помощью учетной записи опытного пользователя

Из книги автора

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


5.4.5. Каналы FIFO

Из книги автора

5.4.5. Каналы FIFO Файл FIFO (First-In, First-Out — первым пришел, первым обслужен) — это канал, у которого есть имя в файловой системе. Любой процесс может открыть и закрыть такой файл. Процессы, находящиеся на противоположных концах канала, не обязаны быть связанными друг с другом.


FIFO

Из книги автора

FIFO Название каналов FIFO происходит от выражения First In First Out (первый вошел — первый вышел). FIFO очень похожи на каналы, поскольку являются однонаправленным средством передачи данных, причем чтение данных происходит в порядке их записи. Однако в отличие от программных