×
20.08.2014
216.012.ec3a

Результат интеллектуальной деятельности: СПОСОБ СИНХРОНИЗАЦИИ ДОСТУПА К РАЗДЕЛЯЕМЫМ РЕСУРСАМ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ И ОБНАРУЖЕНИЯ И УСТРАНЕНИЯ ПОВИСШИХ БЛОКИРОВОК С ИСПОЛЬЗОВАНИЕМ БЛОКИРОВОЧНЫХ ФАЙЛОВ

Вид РИД

Изобретение

№ охранного документа
0002526282
Дата охранного документа
20.08.2014
Аннотация: Изобретение относится к способу обнаружения и устранения повисших блокировок с использованием блокировочных файлов. Технический результат заключается в повышении надежности обнаружения и устранения повисших блокировок. Ассоциируют разделяемый ресурс с блокировочным файлом. Вызывают системный вызов атомарного эксклюзивного создания и открытия временного файла с уникальным именем и в той же файловой системе. Помещают во временный файл информацию о текущем процессе, который пытается обратиться к разделяемому ресурсу. Осуществляют системный вызов создания жесткой ссылки с именем блокировочного файла на временный файл. Если системный вызов создания жесткой ссылки выполнен успешно, то удаляют жесткую ссылку на временный файл и обеспечивают выполнение текущим процессом операций с разделяемым ресурсом. Если текущий процесс в системе не существует, то выполняют устранение повисшей блокировки, осуществляя следующие действия: удаляют из существующего блокировочного файла предыдущие данные несуществующего процесса; заносят в существующий блокировочный файл данные текущего процесса. Снимают файловую блокировку записи с существующего блокировочного файла. Обеспечивают выполнение текущим процессом операций с разделяемым ресурсом. Удаляют существующий блокировочный файл.
Основные результаты: Способ синхронизации доступа к разделяемому ресурсу вычислительной системы и обнаружения и устранения повисших блокировок с использованием блокировочных файлов, заключающийся в том, чтоассоциируют разделяемый ресурс с блокировочным файлом;вызывают системный вызов атомарного эксклюзивного создания и открытия временного файла с уникальным именем и в той же файловой системе, в которой предполагается создание блокировочного файла, со стороны текущего процесса, пытающегося получить доступ к разделяемому ресурсу;помещают во временный файл информацию о текущем процессе, который пытается обратиться к разделяемому ресурсу;осуществляют системный вызов создания жесткой ссылки с именем блокировочного файла на временный файл;если системный вызов создания жесткой ссылки выполнен успешно, то:удаляют жесткую ссылку на временный файл;обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;удаляют блокировочный файл;если системный вызов создания жесткой ссылки выполнен с ошибкой и ошибка не связана с тем, что файл с именем блокировочного файла уже существует, то удаляют временный файл;если системный вызов создания жесткой ссылки выполнен с ошибкой и ошибка связана с тем, что файл с именем блокировочного файла уже существует, то:удаляют временный файл;осуществляют поиск процесса, указанного в существующем блокировочном файле, выполняя следующие действия:устанавливают файловую блокировку записи на существующий блокировочный файл;проверяют наличие в системе процесса, данные которого указаны в существующем блокировочном файле;если текущий процесс в системе существует, то снимают файловую блокировку записи на существующий блокировочный файл;если текущий процесс в системе не существует, то выполняют устранение повисшей блокировки, осуществляя следующие действия:удаляют из существующего блокировочного файла предыдущие данные несуществующего процесса;заносят в существующий блокировочный файл данные текущего процесса;снимают файловую блокировку записи с существующего блокировочного файла;обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;удаляют существующий блокировочный файл.

Область техники, к которой относится изобретение

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

Уровень техники

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

Такое состояние обычно называют повисшей блокировкой (deadlock), а определяют его наличие и затем устраняют с использованием разных механизмов.

Так, известен способ предотвращения повисших блокировок [1] при выполнении обновлений хранилища данных в многопроцессорном устройстве, имеющем локальную кэш-память для каждого процессора, причем каждый процессор имеет возможность работы в быстром, медленном или расширенном медленном режиме, способ, заключающийся в том, что

- получают инструкцию, которая включает обращение к хранилищу данных;

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

- инициализируют выполнение инструкции в быстром режиме;

- в ответ на обнаружение возможной повисшей блокировки во время выполнения инструкции в быстром режиме:

- прерывают выполнения инструкции в быстром режиме;

- устанавливают процессор в медленный режим, при котором выполняется единственная инструкция в текущий момент времени, а целевая запись кэш-памяти берется из локальной кэш-памяти с состоянием исключительного владения перед выполнением инструкции;

- инициализируют выполнение инструкции в медленном режиме;

- в ответ на обнаружение возможной повисшей блокировки во время выполнения инструкции в медленном режиме:

- прерывают выполнение инструкции в медленном режиме;

- устанавливают процессор в расширенный медленный режим, при котором выполняется единственная инструкция в текущий момент времени, а целевая запись кэш-памяти берется из локальной кэш-памяти с состоянием только чтения перед выполнением инструкции и с состоянием исключительного владения после завершения выполнения инструкции; и

- инициализируют выполнение инструкции в расширенном медленном режиме.

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

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

Этот способ имеет недостатки, среди которых можно отметить, в частности, необходимость перевода процессора в медленный и в расширенный медленный режим работы, что снижает производительность вычислительной системы. Кроме того, обнаружение повисшей блокировки носит вероятностный характер и зависит от предварительно задаваемого порогового числа исключительных отклонений.

Известен также способ синхронизации доступа к разделяемым ресурсам между параллельно выполняемыми процессами [2] с использованием механизма блокировочных файлов, заключающийся в том, что

- ассоциируют разделяемый ресурс с блокировочным файлом;

- создают в ходе попытки доступа процесса (приложения) к разделяемому ресурсу блокировочный файл;

- если такой блокировочный файл уже существует, эта операция будет завершена с ошибкой;

- если такой блокировочный файл не существует, то создается блокировочный файл;

- записывают в только что созданный и открытый блокировочный файл данные процесса, который его создал (идентификатор процесса (process ID, РID) и др.);

- обеспечивают выполнение процессом операций с разделяемым ресурсом;

- снимают блокировку с разделяемого ресурса (файла) путем удаления блокировочного файла.

Описанный способ принят за прототип.

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

Раскрытие изобретения

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

Для этого предлагается способ, заключающийся в том, что

- ассоциируют разделяемый ресурс с блокировочным файлом;

- вызывают системный вызов атомарного эксклюзивного создания и открытия временного файла с уникальным именем и в той же файловой системе, в которой предполагается создание блокировочного файла, со стороны текущего процесса, пытающегося получить доступ к разделяемому ресурсу;

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

- осуществляют системный вызов создания жесткой ссылки с именем блокировочного файла на временный файл;

- если системный вызов создания жесткой ссылки выполнен успешно, то:

- удаляют жесткую ссылку на временный файл;

- обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;

- удаляют блокировочный файл;

- если системный вызов создания жесткой ссылки выполнен с ошибкой и ошибка не связана с тем, что файл с именем блокировочного файла уже существует, то удаляют временный файл;

- если системный вызов создания жесткой ссылки выполнен с ошибкой и ошибка связана с тем, что файл с именем блокировочного файла уже существует, то

- удаляют временный файл;

- осуществляют поиск процесса, указанного в существующем блокировочном файле, выполняя следующие действия:

- устанавливают файловую блокировку записи на существующий блокировочный файл;

- проверяют наличие в системе процесса, данные которого указаны в существующем блокировочном файле;

- если текущий процесс в системе существует, то снимают файловую блокировку записи на существующий блокировочный файл;

- если текущий процесс в системе не существует, то выполняют устранение повисшей блокировки, осуществляя следующие действия:

- удаляют из существующего блокировочного файла предыдущие данные несуществующего процесса;

- заносят в существующий блокировочный файл данные текущего процесса;

- снимают файловую блокировку записи с существующего блокировочного файла;

- обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;

- удаляют существующий блокировочный файл.

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

Техническим результатом является повышение надежности обнаружения и устранения повисших блокировок.

Осуществление изобретения

Реализация предложенного способа может быть осуществлена в вычислительной системе, работающей под управлением POSIX-совместимой ОС, в частности ОС GNU/Linux, где механизм блокировочных файлов для синхронизации доступа к разделяемому ресурсу получил широкое распространение.

Необходимым условием реализации предложенного способа является наличие в составе ОС вычислительной системы следующих средств, описанных в стандарте ISO/IEC/IEEE 9945-1:2008 [3]:

- системных вызовов для работы с файлами;

- операций атомарного эксклюзивного создания и открытия временного файла с уникальным именем (например, выполняемых с помощью системного вызова mkstemp);

- поддержка жестких ссылок ОС и файловой системой, в которой предполагается создание блокировочного файла;

- поддержка файловых блокировок и наличие системных вызовов для работы с ними.

Все указанные средства присутствуют в ОС GNU/Linux, в частности в доступном для любого пользователя дистрибутиве ОС Debian 6.

Жесткие ссылки поддерживаются большинством файловых систем, такой, в частности, как Ext3 (Extended File System версии 3), поддерживаемая в ОС Debian.

Для реализации способа в создаваемой или модернизируемой программе или программном модуле, предназначенном для работы с разделяемыми ресурсами, предусматривают осуществление следующих действий.

Ассоциируют разделяемый ресурс (например, последовательный порт) с блокировочным файлом. Это можно сделать, к примеру, сформировав константу, содержащую путь к блокировочному файлу.

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

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

Вызывают системный вызов link с помощью одноименной функции, передавая в качестве первого параметра путь к временному файлу, а в качестве второго параметра - путь к блокировочному файлу, с которым ассоциирован разделяемый ресурс.

Если функция link возвращает 0, то

- удаляют жесткую ссылку на временный файл, вызывая системный вызов unlink;

- обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;

- удаляют блокировочный файл, используя системный вызов unlink. Если функция link возвращает - 1 и в errno (error return value) содержится код ошибки, отличный от EEXISTS, то удаляют временный файл.

Если функция link возвращает - 1 и в errno содержится код ошибки EEXISTS, то

- удаляют временный файл, для чего вызывают системный вызов unlink, передавая в качестве параметра путь к временному файлу;

- осуществляют поиск процесса, указанного в существующем блокировочном файле, выполняя следующие действия:

- открывают существующий блокировочный файл для записи, для чего выполняют системный вызов open, передавая в качестве первого параметра путь к блокировочному файлу, с которым ассоциирован разделяемый ресурс, а в качестве второго параметра - режим чтения/записи, и запоминают возвращаемый номер файлового дескриптора открытого блокировочного файла;

- устанавливают файловую блокировку записи, для чего вызывают системный вызов fcntl, передавая в качестве первого параметра номер файлового дескриптора открытого блокировочного файла, в качестве второго значения - F_SETLKW, в качестве третьего значения - заполненную структуру flock, для установки блокировки всего содержимого файла;

- читают содержимое файла с помощью системного вызова файла read;

- проверяют наличие в системе процесса, данные которого указаны в существующем блокировочном файле (для случая, когда в качестве данных о процессе выбран PID процесса, проверка может быть осуществлена путем выполнения системного вызова kill, передав в качестве первого параметра PID прочитанный из существующего блокировочного файла, а в качестве второго параметра - 0);

- если текущий процесс в системе существует (для случая, когда в качестве данных о процессе выбран PID процесса, системный вызов kill вернул 0), то снимают файловую блокировку записи на существующий блокировочный файл;

- если текущий процесс в системе не существует (для случая, когда в качестве данных о процессе выбран PID процесса,, системный вызов kill вернул -1 и errno содержит код ошибки ENOEXIST), то выполняют устранение повисшей блокировки, осуществляя следующие действия:

- удаляют из существующего блокировочного файла предыдущие данные несуществующего процесса, выполняя системный вызов trunc, передав в качестве параметра значения номер файлового дескриптора открытого блокировочного файла;

- определяют информацию о текущем процессе (для случая, когда используется PID - выполняют системный вызов getpid и сохраняют возвращаемое значение);

- заносят в существующий блокировочный файл данные текущего процесса, выполняя системный вызов write;

- снимают файловую блокировку записи с существующего блокировочного файла, для чего вызывают системный вызов fcntl, передавая в качестве первого параметра номер файлового дескриптора открытого блокировочного файла, в качестве второго значения - F_SETLKW, в качестве третьего значения - заполненную структуру flock, для снятия блокировки всего содержимого файла;

- обеспечивают выполнение текущим процессом операций с разделяемым ресурсом;

- удаляют существующий блокировочный файл, для чего вызывают системный вызов unlink, передавая в качестве параметра путь к блокировочному файлу.

Реализовать действия предложенного способа в составе программы или функции может специалист в области программирования (программист).

Источники информации

1. Патент США №7953932, приоритет от 13.02.2008 г.

2. Джонсон М.К., Троан Э.В. Разработка приложений в среде Linux, 2-е изд., Москва, 2007, стр.231-232.

3. Стандарт ISO/IEC/IEEE 9945-1:2008 Information technology - Portable Operating System Interface (POSIX®) Base Specifications.

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

Showing 51-56 of 56 items.
31.12.2020
№219.017.f470

Способ шифрования данных

Изобретение относится к вычислительной технике. Технический результат заключается в повышении производительности процесса шифрования. Способ шифрования s сообщений m, m, …, m, представленных в двоичном виде и имеющих длину, равную 128 бит каждый, где s=t⋅n, причем t, n - натуральные числа,...
Тип: Изобретение
Номер охранного документа: 0002710669
Дата охранного документа: 30.12.2019
09.02.2020
№220.018.013d

Способ обнаружения сетевых атак на основе анализа фрактальных характеристик трафика в информационно-вычислительной сети

Изобретение относится к способу обнаружения сетевых атак на основе анализа фрактальных характеристик трафика в информационно-вычислительной сети, причем на входе сети установлено средство контроля, выполненное с возможностью принимать входящий трафик и обрабатывать данные. Технический результат...
Тип: Изобретение
Номер охранного документа: 0002713759
Дата охранного документа: 07.02.2020
28.02.2020
№220.018.0708

Способ защиты данных в вычислительной системе

Изобретение относится к области защиты данных. Техническим результатом является повышение защищенности от несанкционированного доступа к файлам внутри области защищенного хранения файлов. Cпособ защиты данных в вычислительной системе заключается в том, что формируют ключ для шифрования данных в...
Тип: Изобретение
Номер охранного документа: 0002715293
Дата охранного документа: 26.02.2020
02.04.2020
№220.018.127b

Способ обеспечения передачи зашифрованных данных со сменой ключей шифрования и имитозащиты в цифровой системе передачи данных

Изобретение относится к области вычислительной техники. Техническим результатом является снижение объема служебных данных, которые требуется передавать для обеспечения расшифрования данных и проверки подлинности сообщений. Раскрыт способ обеспечения передачи зашифрованных данных со сменой...
Тип: Изобретение
Номер охранного документа: 0002718217
Дата охранного документа: 31.03.2020
30.05.2020
№220.018.2231

Способ проверки подлинности изделий

Изобретение относится к проверке подлинности изделий. Технический результат заключается в расширении арсенала средств. Способ реализуется с использованием системы, содержащей базу данных (БД) типа публичный блокчейн, связанную с сетью Интернет и выполненную с возможностью назначать...
Тип: Изобретение
Номер охранного документа: 0002722285
Дата охранного документа: 28.05.2020
12.07.2020
№220.018.323b

Способ работы регистра сдвига с линейной обратной связью

Изобретение относится к области вычислительной техники. Технический результат заключается в повышении производительности работы РСЛОС типа Фибоначчи при использовании вычислительной системы, позволяющей параллельно вычислять k одинаковых линейных функций от разных аргументов. Технический...
Тип: Изобретение
Номер охранного документа: 0002726266
Дата охранного документа: 10.07.2020
Showing 21-26 of 26 items.
19.01.2018
№218.016.03c5

Способ обнаружения аномальной работы сетевого сервера (варианты)

Изобретение относится к области мониторинга и защиты информационных систем. Технический результат заключается в повышении безопасности передачи данных. Способ заключается в том, что запускают сервер в режиме контролируемой нормальной работы; формируют нейронную сеть в средстве обнаружения...
Тип: Изобретение
Номер охранного документа: 0002630415
Дата охранного документа: 07.09.2017
19.01.2018
№218.016.0475

Способ управления конфигурацией прикладного программного обеспечения в компьютере пользователя

Изобретение относится к управлению конфигурацией прикладного программного обеспечения (ПО) в компьютере пользователя. Технический результат заключается в снижении количества ошибок пользователя, сокращении трудозатрат пользователя в ходе проведения конфигурации ПО; упрощении процесса...
Тип: Изобретение
Номер охранного документа: 0002630591
Дата охранного документа: 11.09.2017
20.01.2018
№218.016.1611

Способ маршрутизации ip-пакетов при использовании vpls совместно с dhcp в сети с коммутацией пакетов

Изобретение относится к области цифровых сетей передачи данных с коммутацией пакетов (IP). Техническим результатом является упрощение настройки маршрутизации, снижение нагрузки на сервис DPLS и в целом на сеть, устранение ограничений на расположение и реализацию DHCP сервера. Способ...
Тип: Изобретение
Номер охранного документа: 0002635216
Дата охранного документа: 09.11.2017
20.01.2018
№218.016.1646

Способ подключения компьютера пользователя к виртуальной частной сети через локальную сеть провайдера

Изобретение относится к способам обеспечения безопасности в сетях передачи данных и, в частности, к способам организации защищенного канала взаимодействия с сервером. Техническим результатом является повышение безопасности компьютера пользователя. Раскрыт способ подключения компьютера...
Тип: Изобретение
Номер охранного документа: 0002635215
Дата охранного документа: 09.11.2017
20.01.2018
№218.016.1bed

Способ выбора маршрутов, получаемых по протоколу dhcp, в сети с коммутацией пакетов

Изобретение относится к технологиям сетевой связи. Технический результат заключается в повышении скорости передачи данных в сети. В способе запрашивают и получают сетевые адреса и сетевые маршруты от удаленных DHCP серверов по протоколу DHCP; обрабатывают полученные таблицы маршрутов в средстве...
Тип: Изобретение
Номер охранного документа: 0002636403
Дата охранного документа: 27.11.2017
13.02.2018
№218.016.2527

Способ выбора шумовых диодов с использованием измерительного устройства для генератора случайных чисел

Изобретение относится к генераторам случайных чисел (ГСЧ) и может быть использовано для генерации случайных цифровых последовательностей в различной радиоизмерительной аппаратуре и системах тестирования каналов обмена информацией, датчиков случайных чисел, средств криптографической защиты...
Тип: Изобретение
Номер охранного документа: 0002642351
Дата охранного документа: 24.01.2018
+ добавить свой РИД