<<
>>

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

Функции POSIX для блокировки файлов перечислены в табл. 5.9. Область файла можно заблокировать на запись и чтение или только на запись при помощи системного вызова f cntl с запросом F_SETLK или F_SETLKW.
Узнать, заблокирована ли та или иная область файла, можно с помощью запроса F_GETLK.

Таблица 5.9. Операции блокировки записей согласно POSIX. Они выполняются по запросу с помощью системного вызова FCNTL

Операция Действие__________________________________________________

F SETLK Блокирует область на запись и чтение

F_SETLKW Блокирует область на запись

F_GETLK_____ Проверяет, свободна ли область________________________________________

В файле lock. с есть только две функции. К первой из них, 1оск_ор (строка 23820), обращается системный вызов fcntl при выполнении каждой из операций, перечисленных в таблице. Функция делает несколько тестов, гарантирующих, что область в файле задана корректно. Блокировка области не должна конфликтовать с существующими блокировками и не должна выполняться дважды. Для снятия блокировки вызывается другая процедура из этого файла, 1оск_ revive (строка 23964). Она разблокирует все процессы, ранее заблокированные в ожидании освобождения данной области.

Это компромиссная стратегия, потому для точного решения, какой процесс получит управление, потребовался дополнительный код. Те процессы, время которых еще не наступило, вновь блокируются после запуска. Подобная стратегия выбрана, исходя из предположения, что блокировка файлов — операция редкая. Если на основе MINIX 3 будет построена многопользовательская база данных, не исключено, что потребуется изменить данный алгоритм.

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

5.7.3.

<< | >>
Источник: Э. ТАНЕНБАУМ, А. ВУДХАЛЛ. ОПЕРАЦИОННЫЕ СИСТЕМЫ Разработка и реализация 3-е издание. 2007

Еще по теме Блокировка файлов:

  1. ТУННЕЛЬ ЗАПЯСТНЫЙ (БЛОКИРОВКА) См. статью ЗАПЯСТЬЕ.
  2. Физическая блокировка
  3. Эмоциональная блокировка
  4. Духовная блокировка
  5. Ментальная блокировка
  6. Блокировка привязанности и интимности
  7. ПЕРФОРАЦИЯ
  8. РЕГУРГИТАЦИЯ
  9. ДАЛЬНОЗОРКОСТЬ
  10. АСФИКСИЯ
  11. ТРЕЩИНА
  12. ОЗНОБ
  13. ОЖОГ
  14. ГАЗЫ, СКОПЛЕНИЕ
  15. СУДОРОГА