СПОСОБ СИНХРОНИЗАЦИИ ДОСТУПА К РАЗДЕЛЯЕМЫМ РЕСУРСАМ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ И ОБНАРУЖЕНИЯ И УСТРАНЕНИЯ ПОВИСШИХ БЛОКИРОВОК С ИСПОЛЬЗОВАНИЕМ БЛОКИРОВОЧНЫХ ФАЙЛОВ

Способ синхронизации доступа к разделяемому ресурсу вычислительной системы и обнаружения и устранения повисших блокировок с использованием блокировочных файлов, заключающийся в том, что
ассоциируют разделяемый ресурс с блокировочным файлом;
вызывают системный вызов атомарного эксклюзивного создания и открытия временного файла с уникальным именем и в той же файловой системе, в которой предполагается создание блокировочного файла, со стороны текущего процесса, пытающегося получить доступ к разделяемому ресурсу; помещают во временный файл информацию о текущем процессе (PID и/или др. сведения, по которым можно определить наличие данного процесса в системе), который пытается обратиться к разделяемому ресурсу;
осуществляют системный вызов создания жесткой ссылки с именем блокировочного файла на временный файл;
если системный вызов создания жесткой ссылки выполнен успешно, то:
удаляют жесткую ссылку на временный файл;
обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;
удаляют блокировочный файл;
если системный вызов создания жесткой ссылки выполнен с ошибкой, и ошибка не связана с тем, что файл с именем блокировочного файла уже существует, то удаляют временный файл;
если системный вызов создания жесткой ссылки выполнен с ошибкой, и ошибка связана с тем, что файл с именем блокировочного файла уже существует, то;
удаляют временный файл;
осуществляют поиск процесса, указанного в существующем блокировочном файле, выполняя следующие действия:
устанавливают файловую блокировку записи на существующий блокировочный файл;
проверяют наличие в системе процесса, данные которого указаны в существующем блокировочном файле;
если текущий процесс в системе существует, то снимают файловую блокировку записи на существующий блокировочный файл;
если текущий процесс в системе не существует, то выполняют устранение повисшей блокировки, осуществляя следующие действия:
удаляют из существующего блокировочного файла предыдущие данные несуществующего процесса;
заносят в существующий блокировочный файл данные текущего процесса;
снимают файловую блокировку записи с существующего блокировочного файла;
обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;
удаляют существующий блокировочный файл.