Блокировка файла (англ. file locking) — механизм, который ограничивает доступ к файлу, давая доступ в данный момент только одному пользователю или процессу. Системы реализуют блокировку для предотвращения классического interceding update сценария (который является типичным примером состояния гонки) посредством принуждения к последовательным процессам обновления любого файла.
Следующий пример демонстрирует проблему interceding update:
- Процесс A читает запись о клиенте из файла, содержащего бухгалтерскую информацию, включая остаток денег на счете клиента и его номер телефона.
- Процесс B тогда же читает ту же самую запись из того же файла, так что у него есть своя копия записи.
- Процесс A изменяет остаток на счете в своей копии записи и записывает её обратно в файл.
- Процесс B, который все ещё имеет изначальное значение остатка на счете в своей копии записи, обновляет остаток и пишет обратно в файл.
- В итоге процесс B записал свое неактуальное значение остатка в файл, приведя к потере изменений, сделанных процессом A.
Неправильное использование блокировки файла, как и любой блокировки, может привести к снижению производительности или взаимной блокировке.
Microsoft Windows
правитьMicrosoft Windows использует три разных механизма для управления доступом к разделяемым файлам. Дополнительные механизмы блокировки применяются к сетевым файловым ресурсам (SMB)[1].
Unix-подобные системы
правитьUnix-подобные системы (включая Linux и OS X) обычно автоматически не блокируют открытые файлы[2]. В них предусмотрен системный вызов flock, однако он никак не ограничивает доступ к файлам из других процессов и лишь служит способом синхронизации доступа к файлу между несколькими процессами.
Также существует метод «fcntl(F_SETLK)» и «fcntl(F_GETLK)», описанный в стандартах POSIX[3][4].
Amiga ОС
правитьВ ОС Amiga можно получить блокировку файла, вызвав функцию Lock
(в dos.library
).
Системы контроля версий
правитьЭтот раздел статьи ещё не написан. |
Примечания
править- ↑ Chapter 17. File and Record Locking . Дата обращения: 29 сентября 2018. Архивировано 4 октября 2018 года.
- ↑ Архивированная копия . Дата обращения: 29 сентября 2018. Архивировано 19 сентября 2015 года.
- ↑ Режимы блокировки . Дата обращения: 29 сентября 2018. Архивировано 29 сентября 2018 года.
- ↑ FCNTL(2) . Дата обращения: 29 сентября 2018. Архивировано 29 сентября 2018 года.
Ссылки
править- https://www.oreilly.com/library/view/understanding-the-linux/0596005652/ch12s07.html
- https://www.thegeekstuff.com/2012/04/linux-file-locking-types/
- http://0pointer.de/blog/projects/locking.html (рус.)
Это заготовка статьи о программном обеспечении. Помогите Википедии, дополнив её. |
В другом языковом разделе есть более полная статья File locking (англ.). |
В статье не хватает ссылок на источники (см. рекомендации по поиску). |