9.2. Блокирование записей и файлов

9.2. Блокирование записей и файлов

Ядро Unix никак не интерпретирует содержимое файла, оставляя всю обработку записей приложениям, работающим с этим файлом. Тем не менее для описания предоставляемых возможностей используется термин «блокировка записей». В действительности приложение указывает диапазон байтов файла для блокирования или разблокирования. Сколько логических записей помещается в этот диапазон — значения не имеет.

Стандарт Posix определяет один специальный диапазон с началом в 0 (начало файла) и длиной 0 байт, который устанавливает блокировку для всего файла целиком. Мы будем говорить о блокировке записей, подразумевая блокировку файла как частный случай.

Термин «степень детализации» (granularity) используется для описания минимального размера блокируемого объекта. Для стандарта Posix эта величина составляет 1 байт. Обычно степень детализации связана с максимальным количеством одновременных обращений к файлу. Пусть, например, с некоторым файлом одновременно работают пять процессов, из которых три считывают данные из файла и два записывают в него. Предположим также, что каждый процесс работает со своим набором записей и каждый запрос требует примерно одинакового времени для обработки (1 секунда). Если блокировка осуществляется на уровне файла (самый низкий уровень детализации), три считывающих процесса смогут работать со своими записями одновременно, а двум записывающим придется ждать окончания их работы. Затем запись будет произведена сначала одним из оставшихся процессов, а потом другим. Полное затраченное время будет порядка 3 секунд (это, разумеется, очень грубая оценка). Если же уровень детализации соответствует размеру записи (наилучший уровень детализации), все пять процессов смогут работать одновременно, поскольку они обрабатывают разные записи. При этом на выполнение будет затрачена только одна секунда.

ПРИМЕЧАНИЕ

Потомки BSD поддерживают лишь блокировку файла целиком с помощью функции flock. Возможность заблокировать диапазон байтов не предусматривается. 

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

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

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

Блокирование активного содержимого

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

Блокирование активного содержимого Веб-страницы могут содержать не только тексты и рисунки, но и специальные программные модули, расширяющие возможности веб-страниц и позволяющие сделать их интерактивными. Однако в то же время этими средствами могут воспользоваться


Блокирование объектов

Из книги ArchiCAD 11 автора Днепров Александр Г

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


Блокирование объектов

Из книги ArchiCAD. Начали! автора Орлов Андрей Александрович

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


11. Блокирование Tor и как с ним бороться

Из книги Установка и настройка Tor автора Стручков Юрий

11. Блокирование Tor и как с ним бороться Система Tor позволяет скрывать от провайдера конечные (целевые) адреса, тем самым прорывая возможную блокаду доступа к заблокированным им сетевым ресурсам. Также система Tor скрывает от целевых ресурсов адрес отправителя, тем самым


9.3. Блокирование записей с помощью fcntl по стандарту Posix

Из книги Системное программирование в среде Windows автора Харт Джонсон М

9.3. Блокирование записей с помощью fcntl по стандарту Posix Согласно стандарту Posix, интерфейсом для блокировки записей является функция fcntl:#include <fcntl.h>int fcntl(int fd, int cmd,… /* struct flock *arg */);/* Возвращает –1 в случае ошибки: результат, возвращаемый в случае успешного завершения,


9.8. Блокирование файлов

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

9.8. Блокирование файлов Стандарт Posix.1 гарантирует, что если функция open вызывается с флагами O_CREAT (создать файл, если он еще не существует) и O_EXCL (исключающее открытие), функция возвращает ошибку, если файл уже существует. Более того, проверка существования файла и его


9.9. Блокирование в NFS

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

9.9. Блокирование в NFS Аббревиатура NFS расшифровывается как Network File System (сетевая файловая система); эта система подробно обсуждается в главе 29 [22]. Блокировка записей fcntl представляет собой расширение NFS, поддерживаемое большинством ее реализаций. Обслуживается эта


10.7. Блокирование файлов

Из книги Дело о реформе копирайта автора Энгстрём Кристиан

10.7. Блокирование файлов Вернемся к задаче о порядковом номере из главы 9. Здесь мы напишем новые версии функций my_lock и my_unlосk, использующие именованные семафоры Posix. В листинге 10.10 приведен текст этих функций.Листинг 10.10. Блокирование файла с помощью именованных семафоров


11.6. Блокирование файлов

Из книги Операционная система UNIX автора Робачевский Андрей М.

11.6. Блокирование файлов С помощью семафоров System V можно реализовать еще одну версию функций my_lock и my_unlock из листинга 10.10. Новый вариант приведен в листинге 11.6.Листинг 11.6. Блокировка файлов с помощью семафоров System V//lock/locksvsem.c1  #include "unpipc.h"2  #define LOCK_PATH "/tmp/svsemlock"3  #define MAX_TRIES


Блокирование файлов

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

Блокирование файлов В системах, допускающих одновременное выполнение нескольких процессов, особую актуальность приобретает проблема координации и синхронизации доступа к разделяемым (совместно используемым) объектам, например файлам.В Windows имеется возможность


13.3. Блокирование файлов

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

13.3. Блокирование файлов Хотя доступ к одному и тому же файлу со стороны нескольких процессов — вполне обычное явление, делать это следует осторожно. Многие файлы содержат сложные структуры данных, и обновление этих структур создает те же условия состязаний, что и в


14.2.3. Блокирование BSD: flock()

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

14.2.3. Блокирование BSD: flock() 4.2 BSD представило свой собственный механизм блокировки, flock()[155]. Функция объявлена следующим образом:#include <sys/file.h> /* Обычный */int flock(int fd, int operation);Дескриптор fd представляет открытый файл. Имеются следующие операции:LOCK_SH  Создает совместную


Цензура и блокирование интернета

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

Цензура и блокирование интернета http://habrahabr.ru/post/155295/Этапы введения цензуры в интернете 2007–201218 октября 2012 в 19:22.Копирайт: Dura Lex.Глядя на то, как в отдельных областях России блокируется youtube и ubuntu, я не мог не вспомнить, как Кристиан Энгстрём и Рик Фальквинге в брошюре,


Блокирование доступа к файлу

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

Блокирование доступа к файлу Традиционно архитектура файловой подсистемы UNIX разрешает нескольким процессам одновременный доступ к файлу для чтения и записи. Хотя операции записи и чтения, осуществляемые с помощью системных вызовов read(2) или write(2), являются атомарными, в