СПОСОБ ПЕРЕДАЧИ ДАННЫХ МЕЖДУ ИНТЕРФЕЙСАМИ МОДУЛЕЙ ОБРАБОТКИ ДАННЫХ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ
METHOD OF TRANSMITTING DATA BETWEEN INTERFACES OF DATA PROCESSING MODULES OF A COMPUTER SYSTEM

Изобретение относится к механизмам передачи данных между интерфейсами блоков обработки данных, работающих под управлением операционной системы Windows, и предназначено для повышения надежности передачи данных с одновременным снижением количества сбоев в работе вычислительной системы.
Использование разделяемой памяти или памяти совместно используемой несколькими процессами или блоками обработки данных, является самым быстрым и простым механизмом межпроцессного взаимодействия. Однако за кажущейся простотой скрываются большие проблемы, присущие системам этого типа, решение которых требует значительных затрат. Наиболее сложным звеном в таких системах является синхронизация обращений процессов (клиентов разделяемой памяти) к блокам памяти, используемым совместно несколькими процессами. В некоторых программных продуктах, в том числе, в Plesk Panel (Плеск Пэнел) компании Parallels (Параллелз) роль синхронизатора обращений клиентов к ресурсам памяти отведена модулю блокировок (Lock Manager), в работе которого используется логика библиотеки Boost (Буст) в части межпроцессного взаимодействия. Фактически Lock Manager представляет собой расширение интерпретатора РНР (ПХП или скриптового языка общего назначения), интенсивно применяемого для разработки веб-приложений, который применяется, в том числе, в Plesk Panel.
После выпуска Plesk Panel версии 12, где впервые был применен модуль Lock Manager, повысилось число сбоев в работе с Plesk Panel, возникающих из-за незавершенности (далее - зависания) какого-либо процесса. Проведенный анализ сбоев выявил фундаментальный недостаток в логике работы синхронизирующих объектов библиотеки Boost. Несмотря на то, что этот недостаток в наибольшей степени проявил себя в продукте Plesk Panel, подобного рода зависания могут иметь место всюду, где применяется логика синхронизации процессов Boost, основной недостаток которой заключается в том, что разделяемая память может быть заблокирована одним из процессов, и, после останова этого процесса, разделяемая память становится недоступна для других процессов. Указанное обстоятельство порождает сбои в работе всех процессов, использующих разделяемую память.
Предложенное техническое решение позволяет максимально устранить указанный недостаток. Техническим результатом, достигаемым при использовании предложенного технического решения, является повышение надежности работы вычислительной с максимально возможным сохранением функциональности и скорости работы системы организации разделяемой памяти.
Указанный технический результат достигается за счет того, что в способе передачи данных между интерфейсами модулей обработки данных вычислительной системы:
- каждому модулю обработки данных присваивают уникальный идентификатор;
- задают диапазон адресов выделенной области физической памяти;
- обеспечивают считывание и запись данных выделенной области физической памяти интерфейсами модулей обработки данных;
- задают диапазон адресов внутри выделенной области физической памяти, предназначенный для записи и считывания уникального идентификатора;
- задают диапазон адресов внутри выделенной области физической памяти для записи признака состояния выделенной области физической памяти, при этом признак состояния выделенной области физической памяти отражает свободное и заблокированное состояние выделенной области памяти таким образом, что
при наличии признака, отражающего свободное состояние выделенной области памяти, обеспечивают возможность записи процессом признака, отражающий заблокированное состояние выделенной области памяти в первую область с одновременной записью уникального идентификатора указанного процесса,
а при наличии признака, отражающего заблокированное состояние выделенной области памяти, обеспечивают возможность модификации содержимого выделенной области физической памяти только процессом, идентификатор которого записан в соответствующую область памяти,
причем регистрируют сбои в работе в работе вычислительной системы, обусловленные отказом процессам доступа к выделенной области памяти, и при превышении частоты сбоев, вызванных отказом доступа, первой заранее заданной величины, например, от 1 до 15 сбоев в секунду переадресуют запросы к первой и второй области памяти таким образом, что дополнительно обеспечивается возможность модификации операционной системой, а операционная система выполняет сброс признака до свободного, при превышении частоты сбоев второй заранее заданной величины, например, от 2 до 5 сбоев в секунду.
В частном случае реализации изобретения операционная система может быть выполнена обеспечивающей сброс флага при выгрузке процесса, занявшего память из списка исполняемых задач. Также операционная система может быть выполнена обеспечивающей сброс флага при превышении периодом неактивности процесса, занявшего память, заранее заданной величины.
Сущность изобретения поясняется приведенными ниже чертежами.
На фиг. 1 показана структурная схема варианта компьютерной системы, которая может использоваться для реализации настоящего изобретения;
На фиг. 2 отображено взаимодействие между элементами вычислительной системы при использовании разделяемой памяти.
Система, показанная на фиг. 1 является вычислительным устройством общего назначения в виде персональной электронно-вычислительной машины (ПЭВМ) или сервера 20 или подобного вычислителя, содержащего вычислительный блок 21, системное запоминающее устройство 22 или оперативную память, часть которой используется в качестве разделяемой памяти и системную шину 23, которая объединяет различные компоненты системы, в том числе, системное запоминающее устройство 22 и вычислительный блок 21.
Системная шина 23 может быть шиной любого типа, в том числе, шиной запоминающего устройства или контроллером запоминающего устройства, периферийной шиной, локальной шиной, и быть построена по любой архитектуре шин. В состав системного запоминающего устройства сходят постоянное запоминающее устройство (ПЗУ) 24 и оперативное запоминающее устройство (ОЗУ) 25. В ПЗУ 24 хранится базовая система ввода-вывода 26, которая содержит базовые процедуры, способствующие передаче информации между составными частями ПЭВМ 20, в частности, во время начальной загрузки. ПЭВМ 20 может также содержать: накопитель 27 на жестких дисках для чтения и записи информации на жесткие диски; привод 28 магнитных дисков для чтения и записи информации на сменные магнитные диски 29; привод 30 оптических дисков для чтения и записи информации на сменные оптические диски 31, такие, как CD-ROM (от английского Compact disk read-only memory - компакт-диск - постоянное запоминающее устройство), DVD-ROM (от английского Digital video disc read-only memory - цифровой видеодиск - постоянное запоминающее устройство) или оптические машиночитаемые среды другого типа. Накопитель 27 на жестких дисках, привод 28 магнитных дисков и привод 30 оптических дисков подключены к системной шине 23 с помощью интерфейса 32 накопителя на жестких дисках, интерфейса 33 привода магнитных дисков и интерфейса 34 привода оптических дисков соответственно.
Приводы и соответствующие машиночитаемые среды обеспечивают ПЭВМ 20 энергонезависимое хранение машиночитаемых инструкций, структур данных, программных модулей и подпрограмм, которые могут использоваться для реализации этапов описанного в настоящей заявке способа, а также хранения прочих данных.
Несмотря на то, что в описываемом варианте осуществления используется жесткий диск, магнитный диск 29 и сменный оптический диск 31, специалистам в данной области должно быть понятно, что для хранения данных, доступных ПЭВМ, могут использоваться машиночитаемые среды других типов, в частности, магнитные кассеты, карты флэш-памяти, цифровые видеодиски, картриджи для накопителей Бернулли, накопители на ОЗУ и ПЗУ и т.п.
Некоторое число программных модулей может храниться на жестком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25, в том числе, операционная система 35 (например, "Windows (Виндоуз) 2000"). ПЭВМ 20 содержит: файловую систему 36, связанную или входящую в состав операционной системы 35, такую, как Windows NTFS (от английского New technology file system - файловая система новой технологии); одну или более прикладных программ 37; другие программные модули 38; данные 39 программ. Пользователь может вводить команды и информацию в ПЭВМ 20 через устройства ввода, такие, как клавиатура 40 и указывающее устройство 42.
В состав прочих устройств ввода могут входить: микрофон; джойстик; игровой пульт управления; спутниковая антенна; сканер; другие подобные устройства. Перечисленные и прочие устройства ввода обычно соединяются с процессорным устройством 21 через интерфейс 46 последовательного порта, который подключается к системной шине. Однако указанные устройства ввода могут подключаться и через другие интерфейсы, такие, как параллельный порт, игровой порт, порт USB (от английского Universal serial bus -универсальная последовательная шина). Также к системной шине 23 через интерфейс, такой, как видеоадаптер 48, подключается монитор 47 или устройство другого типа для отображения видеоинформации. Помимо монитора 47 персональные ЭВМ обычно содержат другие периферийные устройства вывода, такие, как громкоговорители и принтеры.
ПЭВМ 20 может действовать в сетевом окружении с использованием логических подключений к одному или более удаленных компьютеров 49. Удаленным компьютером (компьютерами) 49 могут быть: другая ПЭВМ; сервер; роутер; сетевая ПЭВМ; сетевое устройство, напрямую взаимодействующее с другими устройствами в сетевом окружении; другой узел той же сети. Кроме того, удаленный компьютер 49 обычно содержит многие или все функциональные узлы, описанные выше применительно к ПЭВМ 20, хотя для него показано только запоминающее устройство 50. В число логических подключений входят локальная вычислительная сеть (ЛВС) 51 и глобальная вычислительная сеть 52. Описанное сетевое окружение распространено в офисах, вычислительных сетях предприятий, сетях интранет и/или Интернет.
При использовании в сетевом окружении ЛВС ПЭВМ 20 подключена к ЛВС 51 через сетевой интерфейс (сетевой адаптер) 53. При использовании в сетевом окружении глобальной вычислительной сети ПЭВМ 20 обычно содержит модем 54 или иное средство установления соединения через глобальную вычислительную сеть 52, такую, как интернет. Модем 54, который может быть внутренним или внешним, подключается к системной шине 23 через интерфейс 46 последовательного порта.
В сетевом окружении программные модули, изображенные относительно ПЭВМ 20 или его частей, могут храниться во внешнем по отношению к ПЭВМ 20 (удаленном) запоминающем устройстве. Следует учитывать, что показанные сетевые подключения служат в качестве примера, и могут использоваться другие средства установления коммуникационного соединения между компьютерами.
Компьютеры, подобные описанным выше, могут применяться к обычных вычислительных сетях, например, интернет, ЛВС, региональных сетях, глобальных сетях и т.д. Перечисленные сети могут объединять различные ресурсы, в число которых входят компьютеры пользователей, серверы, поставщики интернет-услуг, телефонные аппараты, соединенные с сетью и т.д.
Как показано на фиг. 2, несколько модулей обработки данных или процессов, в частности, процесс 220 и процесс 230 совместно используют разделяемую область 100 памяти, предназначенную для хранения данных 105 и метаданных 110, к которым относится флаг 115, или признак, указывающий на то, что память 100 используется одним из процессов 230 и идентификатор 120 процесса, имеющего приоритетный доступ к разделяемым данным.
Организация разделяемой памяти предусматривает размещение механизма синхронизации непосредственно в самой памяти. То есть, по стандартному алгоритму выделения памяти в ней создается заголовок (структура) и внутрь этого заголовка неявно помещается объект синхронизации. При этом на платформе Windows используется стандартный механизм синхронизации spin-mutex (спин-мьютекс), принцип работы которого построен на атомарном доступе к специальной числовой переменной, находящейся внутри выделенной области 110 памяти. По сути, такая логика работы создает рекурсию управления доступом к метаинформации, что снижает надежность механизма синхронизации.
В примере, показанном на фиг. 2 показан при обращении к разделяемой памяти двух выполняемых процессов, первым из клиентов, установившим 170 значение флага 115 в 1 (на фиг. 2 - «X»), является клиент 230. Одновременно с установкой значения флага в 1, атомарно происходит запись 160 идентификатора 120 процесса 230 в выделенную область 110 разделяемой памяти. При этом клиент 230 получает возможность считывать и модифицировать 300 данные в области памяти 105. Клиенту 220 доступ 210 и 200 к разделяемым данным заблокирован и будет открыт только тогда, когда клиент 230 переустановит 170 значение флага в «0». Если по какой-то причине клиент 230 самостоятельно не сможет обнулить значение флага, доступ к разделяемым данным 105 будет находиться в закрытом состоянии. Управление разделяемой памятью при этом не сможет открыть доступ к разделяемым данным, пока функционирует хотя бы один из клиентов. В том случае, если лимит времени, выделенный на ожидание отклика клиентом 220 со своим уникальным идентификатором 121 исчерпывается, формируется сообщение 190 об ошибке, содержащее адрес блока памяти, при обращении к которому произошел сбой. Сообщение об ошибке анализируется операционной системой 130, которая определяет частоту сбоев при обращении к памяти и, в частности, частоту сбоев при обращении к блокам памяти, имеющим определенный адрес.
В том случае, если частота сбоев при обращении к одному и тому же блоку памяти превышает заранее заданное значение, например, от 1 до 15 сбоев в секунду, операционная система выводит блок памяти 110 из защищенной области памяти и создает копию 140 блока в области памяти, доступной для модификации другими процессами, помимо процесса, установившего флаг 115 в значение 1. Процессами, которым доступно управление указанной областью памяти, могут быть процессы операционной системы 130.
При этом, все обращения 160 и 200 пользователей к блоку данных 110 перенаправляются 250 и 240, соответственно, к дополнительно выделенному блоку 140 данных, который имеет специальную область 145 для установки флага, отображающего состояние памяти с общим доступом, а также блока памяти, отображающего идентификатор 120 процесса, получившего исключительный доступ к памяти 105 с общим доступом.
При этом, случаи ошибок, аналогичных указанным выше продолжают регистрироваться операционной системой, и, если частота ошибок превышает первый или второй заранее заданный уровень, например, составляет от 2 до 5 сбоев в секунду, операционная система разблокирует 135 доступ к разделяемой памяти. Доступ разблокируется для предотвращения, так называемого, зависания процессов и обеспечения работоспособности вычислительной системы, в целом.
В частном случае реализации изобретения, возможность блокировки вычислительной системы определяется не только при выгрузке процесса, занявшего разделяемую память, то есть получившего исключительный доступ к памяти, из списка исполняемых задач либо при превышении периодом неактивности процесса, занявшего память, заранее заданной величины.