RU2577200C1 - Method of synchronising access to shared resources of computer system under control of posix-compatible os and detecting and eliminating deadlocks using lock files - Google Patents
Method of synchronising access to shared resources of computer system under control of posix-compatible os and detecting and eliminating deadlocks using lock files Download PDFInfo
- Publication number
- RU2577200C1 RU2577200C1 RU2014143964/08A RU2014143964A RU2577200C1 RU 2577200 C1 RU2577200 C1 RU 2577200C1 RU 2014143964/08 A RU2014143964/08 A RU 2014143964/08A RU 2014143964 A RU2014143964 A RU 2014143964A RU 2577200 C1 RU2577200 C1 RU 2577200C1
- Authority
- RU
- Russia
- Prior art keywords
- file
- lock
- hard link
- remove
- temporary
- Prior art date
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Область техники, к которой относится изобретениеFIELD OF THE INVENTION
Предлагаемое изобретение относится к вычислительной технике и, в частности, к обеспечению синхронизации доступа к разделяемым ресурсам вычислительной системы и обнаружения и устранения повисших блокировок с использованием блокировочных файлов.The present invention relates to computer technology and, in particular, to ensure synchronization of access to shared resources of the computing system and the detection and elimination of hanging locks using lock files.
Уровень техникиState of the art
Во многих современных вычислительных системах имеются ресурсы (файлы, базы данных, участки оперативной памяти и пр.), доступ к которым осуществляется для параллельно выполняемых процессов. Для обеспечения корректного доступа применяются различные способы синхронизации доступа. При обеспечении синхронизации исключительный доступ предоставляется только одному процессу, а сам ресурс блокируется для записи и/или чтения для других процессов. Блокировка может осуществляться разными методами, однако возможны ситуации, когда ресурс оказывается заблокирован одновременно несколькими процессами, и ни один из них не может ни снять блокировку, ни выполнить необходимые операции с разделяемым ресурсом.Many modern computing systems have resources (files, databases, areas of RAM, etc.) that are accessed for parallel processes. To ensure correct access, various access synchronization methods are used. When synchronization is provided, exclusive access is granted to only one process, and the resource itself is blocked for writing and / or reading for other processes. Blocking can be carried out by different methods, however, there may be situations when the resource is blocked by several processes at the same time, and none of them can neither remove the lock, nor perform the necessary operations with the shared resource.
Такое состояние обычно называют повисшей блокировкой (deadlock), определяют его наличие и затем устраняют с использованием разных механизмов.This condition is usually called a deadlock, determine its presence and then eliminate it using various mechanisms.
Так, известен способ синхронизации доступа к разделяемым ресурсам между параллельно выполняемыми процессами с использованием механизма блокировочных файлов [1], заключающийся в том, чтоSo, there is a method of synchronizing access to shared resources between parallel processes using the lock file mechanism [1], which consists in the fact that
- ассоциируют разделяемый ресурс с блокировочным файлом;- associate a shared resource with a lock file;
- создают в ходе попытки доступа процесса (приложения) к разделяемому ресурсу блокировочный файл;- create a lock file during an attempt to access a process (application) to a shared resource;
- если такой блокировочный файл уже существует, эта операция будет завершена с ошибкой;- if such a lock file already exists, this operation will be completed with an error;
- если такой блокировочный файл не существует, то создается блокировочный файл;- if such a lock file does not exist, a lock file is created;
- записывают в только что созданный и открытый блокировочный файл данные процесса, который его создал (например, идентификатор процесса, process ID (PID)) или др.);- write to the just created and open lock file the data of the process that created it (for example, the process identifier, process ID (PID)), etc.);
- обеспечивают выполнение процессом операций с разделяемым ресурсом;- ensure that the process performs operations with a shared resource;
- снимают блокировку с разделяемого ресурса (файла) путем удаления блокировочного файла.- remove the lock from the shared resource (file) by deleting the lock file.
Однако этот известный способ имеет недостаток. Так, если процесс, владеющий блокировкой, завершился некорректно и не удалил блокировочный файл, то больше ни один процесс не сможет получить доступ к разделяемому ресурсу, и возникает повисшая блокировка. Соответственно, надежность известного способа является невысокой.However, this known method has a drawback. So, if the process that owns the lock ended incorrectly and did not delete the lock file, then no more processes will be able to access the shared resource, and a deadlock occurs. Accordingly, the reliability of the known method is low.
Известен также способ синхронизации доступа к разделяемым ресурсам вычислительной системы и обнаружения и устранения повисших блокировок с использованием блокировочных файлов [2], заключающийся в том, чтоThere is also a method of synchronizing access to shared resources of a computing system and detecting and removing dangling locks using lock files [2], which consists in the fact that
- ассоциируют разделяемый ресурс с блокировочным файлом;- associate a shared resource with a lock file;
- вызывают системный вызов атомарного эксклюзивного создания и открытия временного файла с уникальным именем и в той же файловой системе, в которой предполагается создание блокировочного файла, со стороны текущего процесса, пытающегося получить доступ к разделяемому ресурсу;- cause a system call of atomic exclusive creation and opening of a temporary file with a unique name and in the same file system in which it is supposed to create a lock file from the side of the current process trying to access the shared resource;
- помещают во временный файл информацию о текущем процессе, который пытается обратиться к разделяемому ресурсу;- put information on the current process, which is trying to access the shared resource, into a temporary file;
- осуществляют системный вызов создания жесткой ссылки с именем блокировочного файла на временный файл;- carry out a system call to create a hard link with the name of the lock file to a temporary file;
- если системный вызов создания жесткой ссылки выполнен успешно, то:- if the system call to create a hard link is successful, then:
- удаляют жесткую ссылку на временный файл;- delete a hard link to a temporary file;
- обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;- ensure that the current process performs operations with a shared resource;
- удаляют блокировочный файл;- delete the lock file;
- если системный вызов создания жесткой ссылки выполнен с ошибкой, и ошибка не связана с тем, что файл с именем блокировочного файла уже существует, то удаляют временный файл;- if the system call to create a hard link is made with an error, and the error is not related to the fact that the file with the name of the lock file already exists, then delete the temporary file;
- если системный вызов создания жесткой ссылки выполнен с ошибкой, и ошибка связана с тем, что файл с именем блокировочного файла уже существует, то;- if the system call to create a hard link is made with an error, and the error is due to the fact that a file with the name of the lock file already exists, then;
- удаляют временный файл;- delete the temporary file;
- осуществляют поиск процесса, указанного в существующем блокировочном файле, выполняя следующие действия:- they search for the process specified in the existing lock file by performing the following steps:
- устанавливают файловую блокировку записи на блокировочный файл;- set the file write lock on the lock file;
- проверяют наличие в системе процесса, данные которого указаны в существующем блокировочном файле;- check the presence in the system of a process whose data is specified in an existing lock file;
- если текущий процесс в системе существует, то снимают файловую блокировку записи на блокировочный файл;- if the current process in the system exists, then remove the file lock on the write to the lock file;
- если текущий процесс в системе не существует, то выполняют устранение повисшей блокировки, осуществляя следующие действия:- if the current process in the system does not exist, then the suspension is removed by performing the following actions:
- удаляют из существующего блокировочного файла предыдущие данные несуществующего процесса;- delete from the existing lock file the previous data of a nonexistent process;
- заносят в блокировочный файл данные текущего процесса;- enter the data of the current process into the lock file;
- снимают файловую блокировку записи с существующего блокировочного файла;- remove the file lock record from an existing lock file;
- обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;- ensure that the current process performs operations with a shared resource;
- удаляют блокировочный файл.- delete the lock file.
Если в ходе выполнения известного способа после проверки выясняется, что процесс, данные которого указаны в блокировочном файле, в данный момент в вычислительной системе не существует (например, произошел внутренний программный сбой, и приложение было принудительно выгружено операционной системой (ОС) из оперативной памяти), то это не помешает обеспечить доступ к разделяемому ресурсу другим процессам и позволит обеспечить отсутствие повисшей блокировки.If during the execution of the known method, after checking, it turns out that the process whose data is specified in the lock file does not currently exist in the computing system (for example, an internal software failure occurred and the application was forcibly unloaded from the main memory by the operating system (OS)) , then this will not prevent other processes from providing access to the shared resource and will ensure that there is no hanging lock.
Описанный способ принят за прототип.The described method is adopted as a prototype.
Однако этот способ также имеет недостатки.However, this method also has disadvantages.
В известном способе надежность обнаружения повисшей блокировки зависит от сведений, которые указаны в блокировочном файле. В общем случае, ОС предоставляет уникальный идентификатор процесса (PID) только для запущенных в данный момент процессов. Если процесс был завершен, то его PID может быть назначен другому процессу.In the known method, the reliability of detecting a hanging lock depends on the information that is specified in the lock file. In general, the OS provides a unique process identifier (PID) only for currently running processes. If the process has been completed, then its PID can be assigned to another process.
Кроме того, назначенный определенному процессу PID при перезагрузке ОС может быть присвоен другому процессу и, таким образом, утратит уникальность. Соответственно, операция удаления предыдущих данных несуществующего процесса (если текущий процесс в системе не существует) или снятия файловой блокировки записи на блокировочный файл (если текущий процесс в системе существует) вполне может быть выполнена неправильно, поскольку будет относиться к процессу, не связанному с разделяемым ресурсом.In addition, the PID assigned to a specific process during OS reboot can be assigned to another process and, thus, lose its uniqueness. Accordingly, the operation of deleting the previous data of a nonexistent process (if the current process does not exist in the system) or unlocking the file lock on the lock file (if the current process exists in the system) may well be performed incorrectly, since it will relate to a process that is not associated with a shared resource .
С учетом этого, для правильного назначения PID для процесса, уникального среди не только запущенных процессов, но и среди процессов, завершивших работу, целесообразна разработка и использование отдельной системы, в которой процессы будут отслеживаться и регистрироваться и которая будет следить за активностью процессов.With this in mind, for the correct PID assignment for a process that is unique among not only running processes, but also among processes that have completed work, it is advisable to develop and use a separate system in which processes will be monitored and recorded and which will monitor the activity of processes.
Отсутствие же такой системы снижает надежность обнаружения и устранения повисшей блокировки. Однако наличие такой отдельной системы приведет к увеличению сложности реализации способа и увеличению потребления вычислительных ресурсов (оперативной памяти и процессора). Это может стать преградой для использования такого решения в вычислительных системах с ограниченными ресурсами (к примеру, встраиваемые системы).The absence of such a system reduces the reliability of detection and elimination of hanging locks. However, the presence of such a separate system will increase the complexity of the method and increase the consumption of computing resources (RAM and processor). This may become an obstacle to using such a solution in computing systems with limited resources (for example, embedded systems).
Раскрытие изобретенияDisclosure of invention
Техническим результатом является повышение надежности обнаружения и устранения повисших блокировок.The technical result is to increase the reliability of detection and elimination of hanging locks.
Дополнительным техническим результатом является упрощение процесса обнаружения повисших блокировок и снижение потребления вычислительных ресурсов за счет исключения процедуры поиска процесса, указанного в существующем блокировочном файле.An additional technical result is to simplify the process of detecting dangling locks and reduce the consumption of computing resources by eliminating the process search procedure specified in the existing lock file.
Для этого предлагается способ, заключающийся в том, чтоFor this, a method is proposed, which consists in the fact that
- ассоциируют разделяемый ресурс с блокировочным файлом;- associate a shared resource with a lock file;
- вызывают системный вызов атомарного эксклюзивного создания и открытия временного файла с уникальным именем и в той же файловой системе, в которой предполагается создание блокировочного файла, со стороны текущего процесса, пытающегося получить доступ к разделяемому ресурсу;- cause a system call of atomic exclusive creation and opening of a temporary file with a unique name and in the same file system in which it is supposed to create a lock file from the side of the current process trying to access the shared resource;
- создают рекомендательную эксклюзивную блокировку на временный файл;- create a recommendative exclusive lock on a temporary file;
- осуществляют системный вызов создания жесткой ссылки с именем блокировочного файла на временный файл;- carry out a system call to create a hard link with the name of the lock file to a temporary file;
- если системный вызов создания жесткой ссылки выполнен успешно, то удаляют жесткую ссылку на временный файл;- if the system call for creating the hard link is successful, then the hard link to the temporary file is deleted;
- обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;- ensure that the current process performs operations with a shared resource;
- удаляют жесткую ссылку на блокировочный файл;- remove the hard link to the lock file;
- снимают рекомендательную эксклюзивную блокировку с блокировочного файла;- remove the recommended exclusive lock from the lock file;
- закрывают открытый блокировочный файл;- close the open lock file;
- если системный вызов создания жесткой ссылки выполнен с ошибкой, и ошибка не связана с тем, что файл с именем блокировочного файла уже существует, то- if the system call to create a hard link is made with an error, and the error is not related to the fact that the file with the name of the lock file already exists, then
- удаляют жесткую ссылку на временный файл;- delete a hard link to a temporary file;
- снимают рекомендательную эксклюзивную блокировку с временного файла;- remove the recommended exclusive lock from a temporary file;
- закрывают открытый временный файл;- close the open temporary file;
- если системный вызов создания жесткой ссылки выполнен с ошибкой, и ошибка связана с тем, что файл с именем блокировочного файла уже существует, то- if the system call to create a hard link is made with an error, and the error is due to the fact that the file with the name of the lock file already exists, then
- удаляют жесткую ссылку на временный файл;- delete a hard link to a temporary file;
- снимают рекомендательную эксклюзивную блокировку с временного файла;- remove the recommended exclusive lock from a temporary file;
- закрывают открытый временный файл; открывают блокировочный файл;- close the open temporary file; open a lock file;
- устанавливают рекомендательную эксклюзивную блокировку на блокировочный файл;- establish a recommended exclusive lock on the lock file;
- если рекомендательная эксклюзивная блокировка на блокировочный файл успешно установлена, то- if the recommended exclusive lock on the lock file is successfully installed, then
- обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;- ensure that the current process performs operations with a shared resource;
- удаляют жесткую ссылку на блокировочный файл;- remove the hard link to the lock file;
- снимают рекомендательную эксклюзивную блокировку с блокировочного файла;- remove the recommended exclusive lock from the lock file;
- закрывают открытый блокировочный файл;- close the open lock file;
- если рекомендательную эксклюзивную блокировку на блокировочный файл установить не удалось, то закрывают открытый блокировочный файл.- if it was not possible to establish a recommended exclusive lock on the lock file, then the open lock file is closed.
Следует обратить внимание на порядок действий над блокировочным файлом при освобождении ресурса. Сначала удаляют жесткую ссылку на блокировочный файл, далее снимают рекомендательную эксклюзивную блокировку с блокировочного файла и в завершение закрывают открытый блокировочный файл. При этом после удаления жесткой ссылки на блокировочный файл, файл на диске продолжает существовать, пока последний открыт хотя бы в одном процессе, и физически будет удален, когда последний процесс, держащий блокировочный файл открытый, закроет его. Однако попытка другого процесса создать другой блокировочный файл либо создать жесткую ссылку с именем блокировочного файла завершится успешно.You should pay attention to the order of actions on the lock file when releasing the resource. First, remove the hard link to the lock file, then remove the recommended exclusive lock from the lock file and finally close the open lock file. In this case, after removing the hard link to the lock file, the file on the disk continues to exist until the last one is opened in at least one process, and will be physically deleted when the last process holding the lock file open closes it. However, an attempt by another process to create another lock file or create a hard link with the name of the lock file will succeed.
Стоит отметить, что в предложенном способе для определения того, является ли существующая блокировка повисшей, отсутствует необходимость заносить сведения о процессе в блокировочный файл, а также отсутствует необходимость осуществлять поиск процесса по этим сведениям. Вместо этого осуществляется установка рекомендательной эксклюзивной блокировки (advisory lock). Если процесс, создавший блокировочный файл в системе по каким-то причинам завершился некорректно и не удалил блокировочный файл, то попытка другого процесса установить блокировку пройдет успешно. Если процесс, создавший блокировочный файл и удерживающий блокировку, в системе присутствует, то попытка другого процесса установить блокировку завершится ошибкой. Все это приводит к упрощению процесса обнаружения повисших блокировок и снижению потребления вычислительных ресурсов.It is worth noting that in the proposed method for determining whether an existing lock is dangling, there is no need to enter process information into a lock file, and there is no need to search for a process by this information. Instead, an advisory lock is installed. If for some reason the process that created the lock file in the system did not complete correctly and did not delete the lock file, then an attempt by another process to set the lock will succeed. If the process that created the lock file and holds the lock is present in the system, then an attempt by another process to set the lock will fail. All this leads to a simplification of the process of detecting dangling locks and reducing the consumption of computing resources.
Устраняется также необходимость в дополнительной системе, в которой бы регистрировались процессы, захватившие блокировку, и которая бы отслеживала их наличие в системе. При этом надежность обнаружения повисшей блокировки зависела бы от надежности работы дополнительной системы. Отсутствие дополнительной системы также приводит к упрощению процесса обнаружения повисших блокировок и снижению потребления вычислительных ресурсов.It also eliminates the need for an additional system in which processes that capture the lock are recorded and which tracks their presence in the system. In this case, the reliability of detecting a hanging lock would depend on the reliability of the additional system. The absence of an additional system also simplifies the process of detecting dangling locks and reduces the consumption of computing resources.
Осуществление изобретенияThe implementation of the invention
Реализация предложенного способа может быть осуществлена в вычислительной системе, работающей под управлением POSIX-совместимой ОС, в частности ОС GNU/Linux, где механизм блокировочных файлов для синхронизации доступа к разделяемому ресурсу получил широкое распространение.Implementation of the proposed method can be implemented in a computer system running a POSIX-compatible OS, in particular, GNU / Linux, where the lock file mechanism for synchronizing access to a shared resource is widespread.
Необходимым условием реализации предложенного способа является наличие в составе ОС вычислительной системы следующих средств, описанных в стандарте ISO/IEC/IEEE 9945:2009 [3]:A necessary condition for the implementation of the proposed method is the presence of the following tools as part of the OS of a computer system described in the standard ISO / IEC / IEEE 9945: 2009 [3]:
- системных вызовов для работы с файлами (open, close, link, unlink);- system calls for working with files (open, close, link, unlink);
- поддержка жестких ссылок в ОС и файловой системой, в которой предполагается создание блокировочного файла;- support for hard links in the OS and the file system, which is supposed to create a lock file;
- операций атомарного эксклюзивного создания и открытия временного файла с уникальным именем (например, выполняемых с помощью системного вызова mkstemp);- operations of atomic exclusive creation and opening of a temporary file with a unique name (for example, performed using the mkstemp system call);
- поддержка файловых блокировок и наличие системных вызовов для работы с ними (fcntl и F_SETLKW).- support for file locks and the presence of system calls to work with them (fcntl and F_SETLKW).
Все указанные средства присутствуют в ОС GNU/Linux, в частности, в доступном для любого пользователя дистрибутиве ОС Debian 6.All these tools are present in the GNU / Linux OS, in particular, in the Debian 6 OS distribution available for any user.
Жесткие ссылки поддерживаются большинством файловых систем, в частности файловой системой Ext3 (Extended File System версии 3), поддерживаемой в ОС Debian.Hard links are supported by most file systems, in particular the Ext3 (Extended File System version 3) file system supported by Debian.
Для реализации способа в создаваемой или модернизируемой программе или программном модуле, предназначенном для работы с разделяемыми ресурсами, выполняют последовательно следующие действия.To implement the method in the created or modernized program or program module designed to work with shared resources, the following actions are performed sequentially.
Ассоциируют разделяемый ресурс (например, последовательный порт, файл базы данных) с блокировочным файлом. Это можно сделать, к примеру, сформировав константу, содержащую путь к блокировочному файлу.Associate a shared resource (for example, a serial port, a database file) with a lock file. This can be done, for example, by forming a constant containing the path to the lock file.
В каждом процессе перед обращением к разделяемому ресурсу вызывают системный вызов mkstemp путем вызова одноименной системной функции, указав в качестве шаблона пути для создания временного файла путь в той же файловой системе, в которой предполагается создание блокировочного файла.In each process, before accessing the shared resource, they call the mkstemp system call by calling the system function of the same name, specifying the path in the same file system in which the creation of the lock file is intended as a template for creating a temporary file.
Устанавливают рекомендательную эксклюзивную блокировку записи на временный файл, для чего вызывают системный вызов fcntl, передавая в качестве первого параметра номер файлового дескриптора открытого блокировочного файла, в качестве второго значения - F_SETLKW, в качестве третьего значения - заполненную структуру flock, для установки блокировки временного файла.They establish a recommended exclusive write lock on a temporary file, for which they call the fcntl system call, passing the file descriptor number of the open lock file as the first parameter, F_SETLKW as the second value, and the filled flock structure as the third value to set the temporary file lock.
Вызывают системный вызов link с помощью одноименной функции, передавая в качестве первого параметра путь к временному файлу, а в качестве второго параметра - путь к блокировочному файлу с которым ассоциирован разделяемый ресурс.The link system call is called using the function of the same name, passing the path to the temporary file as the first parameter, and the path to the lock file with which the shared resource is associated as the second parameter.
Если функция link возвращает 0, то:If the link function returns 0, then:
- удаляют жесткую ссылку на временный файл, вызывая системный вызов unlink;- remove the hard link to the temporary file, causing the unlink system call;
- обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;- ensure that the current process performs operations with a shared resource;
- удаляют жесткую ссылку на блокировочный файл, для чего вызывают системный вызов unlink, передавая в качестве параметра путь к блокировочному файлу;- remove the hard link to the lock file, for which they call the unlink system call, passing the path to the lock file as a parameter;
- снимают рекомендательную эксклюзивную блокировку с блокировочного файла, для чего вызывают системный вызов fcntl, передавая в качестве первого параметра номер файлового дескриптора открытого блокировочного файла, в качестве второго значения - F_SETLKW, в качестве третьего значения - заполненную структуру flock, для снятия блокировки;- they remove the recommended exclusive lock from the lock file, for which they call the fcntl system call, passing in the number of the file descriptor of the open lock file as the first parameter, F_SETLKW as the second value, and the filled flock structure as the third value to unlock it;
- закрывают открытый блокировочный файл, вызывая системный вызов close, передавая в качестве параметра номер файлового дескриптора открытого блокировочного файла;- close the open lock file, calling the close system call, passing as the parameter the file descriptor number of the open lock file;
Если функция link возвращает - 1, и в errno (error return value) содержится код ошибки, отличный от EEXISTS, тоIf the link function returns -1, and errno (error return value) contains an error code other than EEXISTS, then
- удаляют жесткую ссылку на временный файл, для чего вызывают системный вызов unlink, передавая в качестве параметра путь к временному файлу;- remove the hard link to the temporary file, for which they call the unlink system call, passing the path to the temporary file as a parameter;
- снимают рекомендательную эксклюзивную блокировку с временного файла, для чего вызывают системный вызов fcntl, передавая в качестве первого параметра номер файлового дескриптора открытого временного файла, в качестве второго значения - F_SETLKW, в качестве третьего значения - заполненную структуру flock, для снятия блокировки;- they remove the recommended exclusive lock from the temporary file, for which they call the fcntl system call, passing the file descriptor number of the open temporary file as the first parameter, F_SETLKW as the second value, and the filled flock structure as the third value to unlock it;
- закрывают открытый временный файл, вызывая системный вызов close, передавая в качестве параметра номер файлового дескриптора открытого временного файла;- close the open temporary file, calling the close system call, passing as the parameter the file descriptor number of the open temporary file;
Если функция link возвращает - 1, и в errno содержится код ошибки EEXISTS, тоIf the link function returns -1, and errno contains an EEXISTS error code, then
- удаляют жесткую ссылку на временный файл, для чего вызывают системный вызов unlink, передавая в качестве параметра путь к временному файлу;- remove the hard link to the temporary file, for which they call the unlink system call, passing the path to the temporary file as a parameter;
- снимают рекомендательную эксклюзивную блокировку с временного файла, для чего вызывают системный вызов fcntl, передавая в качестве первого параметра номер файлового дескриптора открытого временного файла, в качестве второго значения - F_SETLKW, в качестве третьего значения - заполненную структуру flock, для снятия блокировки;- they remove the recommended exclusive lock from the temporary file, for which they call the fcntl system call, passing the file descriptor number of the open temporary file as the first parameter, F_SETLKW as the second value, and the filled flock structure as the third value to unlock it;
- закрывают открытый временный файл, вызывая системный вызов close, передавая в качестве параметра номер файлового дескриптора открытого временного файла;- close the open temporary file, calling the close system call, passing as the parameter the file descriptor number of the open temporary file;
- открывают блокировочный файл, для чего выполняют системный вызов open, передавая в качестве первого параметра путь к блокировочному файлу, с которым ассоциирован разделяемый ресурс, а в качестве второго параметра - режим чтения, и запоминают возвращаемый номер файлового дескриптора открытого блокировочного файла;- open the lock file, for which they perform the open system call, passing as the first parameter the path to the lock file with which the shared resource is associated, and as the second parameter - the reading mode, and remember the returned file descriptor number of the open lock file;
- устанавливают файловую блокировку записи, для чего вызывают системный вызов fcntl, передавая в качестве первого параметра номер файлового дескриптора открытого блокировочного файла, в качестве второго значения - F_SETLKW, в качестве третьего значения - заполненную структуру flock, для установки блокировки файла;- set the file lock for the record, for which they call the fcntl system call, passing the file descriptor number of the open lock file as the first parameter, F_SETLKW as the second value, and the filled flock structure as the third value to set the file lock;
- если операция установки файловой блокировки прошла успешно, то считают, что была обнаружена и устранена повисшая блокировка и текущий процесс захватил разделяемый ресурс, после чего- if the operation of setting the file lock was successful, then it is believed that a hanging lock has been detected and eliminated and the current process has captured the shared resource, after which
- обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;- ensure that the current process performs operations with a shared resource;
- удаляют жесткую ссылку на блокировочный файл, для чего вызывают системный вызов unlink, передавая в качестве параметра путь к блокировочному файлу;- remove the hard link to the lock file, for which they call the unlink system call, passing the path to the lock file as a parameter;
- снимают рекомендательную эксклюзивную блокировку с блокировочного файла, для чего вызывают системный вызов fcntl, передавая в качестве первого параметра номер файлового дескриптора открытого блокировочного файла, в качестве второго значения - F_SETLKW, в качестве третьего значения - заполненную структуру flock, для снятия блокировки;- they remove the recommended exclusive lock from the lock file, for which they call the fcntl system call, passing in the number of the file descriptor of the open lock file as the first parameter, F_SETLKW as the second value, and the filled flock structure as the third value to unlock it;
- закрывают открытый блокировочный файл, вызывая системный вызов close, передавая в качестве параметра номер файлового дескриптора открытого блокировочного файла;- close the open lock file, calling the close system call, passing as the parameter the file descriptor number of the open lock file;
- если не удалось установить файловую блокировку, то закрывают открытый блокировочный файл, вызывая системный вызов close, передавая в качестве параметра номер файлового дескриптора открытого блокировочного файла;- if it was not possible to establish a file lock, then close the open lock file, calling the close system call, passing as the parameter the file descriptor number of the open lock file;
Реализовать действия предложенного способа в составе программы или функции может специалист в области программирования (программист).Implement the actions of the proposed method as part of a program or function can be a specialist in programming (programmer).
Источники информацииInformation sources
1. Джонсон М.К., Троан Э.В. Разработка приложений в среде Linux, 2-е изд., Москва, 2007, стр. 231-232.1. Johnson M.K., Troan E.V. Application Development under Linux, 2nd ed., Moscow, 2007, pp. 231-232.
2. Патент РФ №2526282, приоритет от 21.09.2012 г.2. RF patent No. 2526282, priority dated September 21, 2012.
3. Стандарт ISO/IEC/IEEE 9945:2009 Information technology - Portable Operating System Interface (POSIX®) Base Specifications, Issue 7.3. ISO / IEC / IEEE 9945: 2009 Information technology - Portable Operating System Interface (POSIX®) Base Specifications, Issue 7.
Claims (1)
ассоциируют разделяемый ресурс с блокировочным файлом;
вызывают системный вызов атомарного эксклюзивного создания и открытия временного файла с уникальным именем и в той же файловой системе, в которой предполагается создание блокировочного файла, со стороны текущего процесса, пытающегося получить доступ к разделяемому ресурсу;
создают рекомендательную эксклюзивную блокировку на временный файл;
осуществляют системный вызов создания жесткой ссылки с именем блокировочного файла на временный файл;
если системный вызов создания жесткой ссылки выполнен успешно, то
удаляют жесткую ссылку на временный файл;
обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;
удаляют жесткую ссылку на блокировочный файл;
снимают рекомендательную эксклюзивную блокировку с блокировочного файла;
закрывают открытый блокировочный файл;
если системный вызов создания жесткой ссылки выполнен с ошибкой, и ошибка не связана с тем, что файл с именем блокировочного файла уже существует, то
удаляют жесткую ссылку на временный файл;
снимают рекомендательную эксклюзивную блокировку с временного файла;
закрывают открытый временный файл;
если системный вызов создания жесткой ссылки выполнен с ошибкой, и ошибка связана с тем, что файл с именем блокировочного файла уже существует, то
удаляют жесткую ссылку на временный файл;
снимают рекомендательную эксклюзивную блокировку с временного файла;
закрывают открытый временный файл;
открывают блокировочный файл;
устанавливают рекомендательную эксклюзивную блокировку на блокировочный файл;
если рекомендательная эксклюзивная блокировка на блокировочный файл успешно установлена, то
обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;
удаляют жесткую ссылку на блокировочный файл;
снимают рекомендательную эксклюзивную блокировку с блокировочного файла;
закрывают открытый блокировочный файл;
если рекомендательную эксклюзивную блокировку на блокировочный файл установить не удалось, то закрывают открытый блокировочный файл. A method for synchronizing access to shared resources of a computer system running a POSIX-compatible OS and detecting and removing dangling locks using lock files, which consists in
associate a shared resource with a lock file;
cause a system call of atomic exclusive creation and opening of a temporary file with a unique name and in the same file system in which it is supposed to create a lock file from the side of the current process trying to access the shared resource;
create a recommendative exclusive lock on a temporary file;
carry out a system call to create a hard link with the name of the lock file to a temporary file;
if the hard link creation system call is successful, then
delete a hard link to a temporary file;
ensure that the current process performs operations with a shared resource;
remove the hard link to the lock file;
remove the recommended exclusive lock from the lock file;
close the open lock file;
if the system call to create a hard link is completed with an error, and the error is not related to the fact that the file with the name of the lock file already exists, then
delete a hard link to a temporary file;
remove advisory exclusive lock from a temporary file;
close the open temporary file;
if the system call to create a hard link is made with an error, and the error is due to the fact that the file with the name of the lock file already exists, then
delete a hard link to a temporary file;
remove advisory exclusive lock from a temporary file;
close the open temporary file;
open a lock file;
Establish a recommended exclusive lock on the lock file;
if the recommended exclusive lock on the lock file is successfully installed, then
ensure that the current process performs operations with a shared resource;
remove the hard link to the lock file;
remove the recommended exclusive lock from the lock file;
close the open lock file;
if it was not possible to establish a recommended exclusive lock on the lock file, then open the open lock file.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2014143964/08A RU2577200C1 (en) | 2014-10-31 | 2014-10-31 | Method of synchronising access to shared resources of computer system under control of posix-compatible os and detecting and eliminating deadlocks using lock files |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2014143964/08A RU2577200C1 (en) | 2014-10-31 | 2014-10-31 | Method of synchronising access to shared resources of computer system under control of posix-compatible os and detecting and eliminating deadlocks using lock files |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2577200C1 true RU2577200C1 (en) | 2016-03-10 |
Family
ID=55654439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2014143964/08A RU2577200C1 (en) | 2014-10-31 | 2014-10-31 | Method of synchronising access to shared resources of computer system under control of posix-compatible os and detecting and eliminating deadlocks using lock files |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2577200C1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113128142A (en) * | 2021-04-27 | 2021-07-16 | 北京智芯仿真科技有限公司 | Integrated circuit electromagnetic simulation coarse grain parallel method and device based on file lock |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7219348B2 (en) * | 1999-07-28 | 2007-05-15 | International Business Machines Corporation | Detecting and causing latent deadlocks in multi-threaded programs |
US7293033B1 (en) * | 2002-03-27 | 2007-11-06 | Swsoft Holdings, Ltd. | System and method for providing effective file-sharing in a computer system to allow concurrent multi-user access |
RU2344476C2 (en) * | 2003-02-28 | 2009-01-20 | Майкрософт Корпорейшн | Method for delay of server files lockout during editing |
US7509322B2 (en) * | 2001-01-11 | 2009-03-24 | F5 Networks, Inc. | Aggregated lock management for locking aggregated files in a switched file system |
US7617365B2 (en) * | 2004-04-28 | 2009-11-10 | Emc Corporation | Systems and methods to avoid deadlock and guarantee mirror consistency during online mirror synchronization and verification |
US7953932B2 (en) * | 2008-02-13 | 2011-05-31 | International Business Machines Corporation | System and method for avoiding deadlocks when performing storage updates in a multi-processor environment |
RU2526282C2 (en) * | 2012-09-21 | 2014-08-20 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Method for synchronising access to shared resources of computing system and detecting and eliminating deadlocks using lock files |
-
2014
- 2014-10-31 RU RU2014143964/08A patent/RU2577200C1/en active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7219348B2 (en) * | 1999-07-28 | 2007-05-15 | International Business Machines Corporation | Detecting and causing latent deadlocks in multi-threaded programs |
US7509322B2 (en) * | 2001-01-11 | 2009-03-24 | F5 Networks, Inc. | Aggregated lock management for locking aggregated files in a switched file system |
US7293033B1 (en) * | 2002-03-27 | 2007-11-06 | Swsoft Holdings, Ltd. | System and method for providing effective file-sharing in a computer system to allow concurrent multi-user access |
RU2344476C2 (en) * | 2003-02-28 | 2009-01-20 | Майкрософт Корпорейшн | Method for delay of server files lockout during editing |
US7617365B2 (en) * | 2004-04-28 | 2009-11-10 | Emc Corporation | Systems and methods to avoid deadlock and guarantee mirror consistency during online mirror synchronization and verification |
US7953932B2 (en) * | 2008-02-13 | 2011-05-31 | International Business Machines Corporation | System and method for avoiding deadlocks when performing storage updates in a multi-processor environment |
RU2526282C2 (en) * | 2012-09-21 | 2014-08-20 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Method for synchronising access to shared resources of computing system and detecting and eliminating deadlocks using lock files |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113128142A (en) * | 2021-04-27 | 2021-07-16 | 北京智芯仿真科技有限公司 | Integrated circuit electromagnetic simulation coarse grain parallel method and device based on file lock |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11176171B2 (en) | Controlling a multi-database system | |
US10585874B2 (en) | Locking concurrent commands in a database management system | |
CN105511969B (en) | Method for mutual exclusion between cross-process threads | |
US8671076B2 (en) | Database recovery using logs applied to consistent copies | |
CN103795813B (en) | File locking and unlocking method and system | |
US8495638B2 (en) | Component-specific disclaimable locks | |
CN106155839B (en) | A kind of method and apparatus for Backup Data | |
CN103365776A (en) | Parallel system weak consistency verifying method and system based on deterministic replay | |
CN115145697B (en) | Database transaction processing method and device and electronic equipment | |
US20230098963A1 (en) | Object processing method and apparatus, computer device, and storage medium | |
RU2577200C1 (en) | Method of synchronising access to shared resources of computer system under control of posix-compatible os and detecting and eliminating deadlocks using lock files | |
US20120059997A1 (en) | Apparatus and method for detecting data race | |
RU2526282C2 (en) | Method for synchronising access to shared resources of computing system and detecting and eliminating deadlocks using lock files | |
KR102141620B1 (en) | Method and Apparatus for detecting atomicity violation for shared memory used in multi-process/multi-thread | |
CN117708087A (en) | Content data record calling method and system based on user editing | |
CN107766131B (en) | Task scheduling method and device | |
CN116089359A (en) | Database snapshot generation method and device, electronic equipment and medium | |
CN114461409A (en) | Auxiliary analysis method, system and storage medium for abnormal blocking of mutual exclusion semaphore | |
EP1569121B1 (en) | Method and system for detecting potential deadlocks in computer programs | |
CN117076147B (en) | Deadlock detection method, device, equipment and storage medium | |
KR20200086093A (en) | Apparatus and method for analyzing source code of concurrent program and computer readible storage medium therefor | |
CN113590212B (en) | Method, device and equipment for starting database instance | |
CN115329400B (en) | Protection processing method for virtual disk in cluster | |
CN116881919B (en) | Vulnerability discovery method and device, electronic equipment and storage medium | |
US20230069165A1 (en) | Byzantine fault tolerant pre-preprocessing for state machine replication |