СИСТЕМА И СПОСОБ ВЫБОРА СИНХРОННОГО ИЛИ АСИНХРОННОГО МЕЖПРОЦЕССНОГО ВЗАИМОДЕЙСТВИЯ
SYSTEM AND METHOD OF SELECTING SYNCHRONOUS OR ASYNCHRONOUS INTERPROCESS INTERACTION

Область техники
Изобретение относится к системам и способам увеличения эффективности межпроцессного взаимодействия за счет выбора между синхронными и асинхронными операциями.
Уровень техники
Определим ряд основных терминов, используемых в описании.
Межпроцессное взаимодействие (IPC) - набор способов обмена данными между множеством потоков в одном или более процессах. Процессы могут быть запущены на одном или более компьютерах, связанных между собой сетью. IPC-способы делятся на методы обмена сообщениями, синхронизации, разделяемой памяти и удаленных вызовов.
Асинхронный процесс - процесс, в котором операция не требует отклика для продолжения выполнения.
Синхронный процесс - процесс, в котором операция требует отклика для продолжения выполнения.
Операция - элементарное действие, выполняемое в рамках рассматриваемого процесса (в качестве операции может выступать, например, API функция).
Современные операционные системы при обмене данными между двумя процессами методами межпроцессного взаимодействия используют как синхронные, так и асинхронные операции.
Каждый из указанных типов операций используется для своих целей и обладает как преимуществами, так и недостатками. Асинхронные операции позволяют процессу не останавливать свою работу для ожидания ответа и продолжать работу дальше, но при этом являются более медленными, требуют больше ресурсов операционной системы и сложнопредсказуемы. С другой стороны, синхронные операции более быстрые, требуют меньше ресурсов операционной системы и легко предсказуемы, но при этом до прихода ответа не позволяют процессу продолжать работу.
Тем не менее, при взаимодействии между процессами возникают ситуации, когда выполнять задачу через асинхронные вызовы становится нерационально: когда ресурсы, с которыми работает процесс в текущий момент, свободны, требуемые данные были ранее сохранены в кэше и т.п., становится выгоднее выполнить требуемую операцию через синхронный вызов, поскольку он будет выполнен быстро. Аналогично бывают ситуации, когда асинхронный вызов может оказаться предпочтительнее синхронного.
Выходом из сложившейся ситуации может стать выбор между синхронным и асинхронным типом межпроцессного взаимодействия в зависимости от текущего состояния системы. Такой подход позволит более рационально использовать ресурсы системы, уменьшая время их простоя, увеличить скорость работы операционной системы, повысить ее стабильность и предсказуемость.
Теоретическое обоснование для выражения синхронных вызовов через асинхронные было дано Чарльзом Энтони Ричардом Хоаром. Более подробно об этом можно прочитать в статье Стефана Готца "Asynchronous communication using synchronous IPC".
В заявке US 20130152096 A1 рассматривается схема выбора между синхронными и асинхронными системными вызовами в зависимости от выбранного режима и приоритетов исполнения задач. Тем не менее, в заявке, во-первых, не указано, с какими именно элементами работает система выбора между асинхронными и синхронными типами межпроцессного взаимодействия, во-вторых, не указаны критерии, по которым определяется, что с ресурсами можно работать синхронно.
В патенте US 6938251 B1 описана технология получения однопоточным приложением асинхронных сообщений. Тем не менее, данная технология никак не описывает работу многопоточных систем и не содержит функционала выбора между синхронными и асинхронными способами передачи и получения данных.
Из всего вышесказанного можно сделать выводы, что для ускорения работы, например, микроядра операционной системы важно исследование ресурсов, с которыми работают процессы, и осуществление выбора типов межпроцессных взаимодействий. Данную работу могут выполнять специализированные модули ядра операционной системы, отвечающие за логику работы межпроцессных взаимодействий.
Настоящее изобретение позволяет эффективно решить задачу повышения эффективности работы операционной системы за счет выбора между синхронным и асинхронным типом межпроцессного взаимодействия.
Раскрытие изобретения
Изобретение относится к системам и способам увеличения эффективности межпроцессного взаимодействия, заключающегося по меньшей мере в увеличении скорости передачи данных от процесса к процессу во время межпроцессного взаимодействия или увеличении использования требуемых для межпроцессного взаимодействия ресурсов, уменьшающем время их простоя. Технический результат настоящего изобретения заключается в увеличении эффективности межпроцессного взаимодействия за счет выбора между синхронными и асинхронными методами межпроцессного взаимодействия, где выбор обеспечивает по меньшей мере увеличение скорости передачи данных от процесса к процессу во время межпроцессного взаимодействия или увеличение использования требуемых для межпроцессного взаимодействия ресурсов, уменьшающее время их простоя.
Система выбора синхронного или асинхронного межпроцессного взаимодействия содержит: первый процесс, предназначенный для выполнения действий в операционной системе и передающий данные второму процессу с использованием методов межпроцессного взаимодействия, второй процесс, предназначенный для выполнения действий в операционной системе и принимающий данные от первого процесса с использованием методов межпроцессного взаимодействия, тип которого будет выбран динамически на основании решения, вынесенного средством анализа, средство обеспечения межпроцессного взаимодействия, предназначенное для обеспечения синхронного или асинхронного взаимодействия между процессами, а также для выбора асинхронного или синхронного метода межпроцессного взаимодействия, средство анализа, предназначенное для получения от средства обеспечения межпроцессного взаимодействия запроса на проведение исследования оптимального выбора между асинхронным и синхронным типом межпроцессного взаимодействия, запроса средству получения данных от используемого ресурса на получение от последнего свойств используемых процессами ресурсов и выбора оптимального для текущей задачи типа межпроцессного взаимодействия на основе полученных данных от средства получения данных от используемого ресурса, средство получения данных от используемого ресурса, предназначенное для выдачи средству анализа по его запросу по крайней мере одного из свойств ресурса.
В другом частном случае реализации системы в качестве метода межпроцессного взаимодействия выступает по крайней мере один из методов с использованием: файла, сигнала, сокета, канала, именованного канала, семафора, разделяемой памяти, обмена сообщениями, проецируемого в память файла, очереди сообщений.
Еще в одном частном случае реализации системы в качестве собираемых данных о состоянии ресурса выступает по меньшей мере одна из следующих характеристик: идентификаторы первого и второго процессов, тип и объем передаваемых данных, идентификаторы ресурсов, с которым будут работать процессы, наличие информации в кэше ресурса, состояние очереди доступа к ресурсу.
В другом частном случае реализации системы в качестве ресурса, используемого процессами, выступает по крайней мере один из следующих: оперативная память, процессорное время, сетевая пропускная способность, файлы, носители информации.
Еще в одном частном случае реализации системы в качестве свойства ресурса, используемого процессами, выступает по крайней мере один из следующих: наличие требуемой информации, сохраненной ранее в хэше, объем свободной оперативной памяти, объем свободного места на жестком диске.
Способ выбора синхронного или асинхронного межпроцессного взаимодействия, в котором: первый процесс пытается передать данные второму процессу одним из методов межпроцессного взаимодействия, собирают данные о состоянии ресурсов, используемых процессами в межпроцессном взаимодействии, проводят анализ собранных по процессам и ресурсам данных, заключающийся в определении, при каком типе передачи данных от первого процесса второму будет достигнут по меньшей мере один из следующих результатов: передача будет выполнена за минимальное время, передача будет выполнена с максимальным использованием требуемых ресурсов, сводящим к минимуму их простой, передача приведет к оказанию минимального влияния на остальные процессы операционной системы, на основании анализа принимают решение о синхронном или асинхронном типе межпроцессного взаимодействия, который будет использован для передачи данных от первого процесса второму.
В другом частном случае реализации способа в качестве метода межпроцессного взаимодействия выступает по крайней мере один из методов с использованием: файла, сигнала, сокета, канала, именованного канала, семафора, разделяемой памяти, обмена сообщениями, проецируемого в память файла, очереди сообщений.
Еще в одном частном случае реализации способа в качестве собираемых данных о состоянии ресурса выступает по меньшей мере одна из следующих характеристик: идентификаторы первого и второго процессов, тип и объем передаваемых данных, идентификаторы ресурсов, с которым будут работать процессы, наличие информации в кэше ресурса, состояние очереди доступа к ресурсу.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:
Фиг. 1 - структурная схема алгоритма выбора синхронного или асинхронного межпроцессного взаимодействия.
Фиг. 2 - структурная схема алгоритма работы средства анализа.
Фиг. 3 - пример компьютерной системы общего назначения, персональный компьютер или сервер.
Хотя изобретение может иметь различные модификации и альтернативные формы, характерные признаки, показанные в качестве примера на чертежах, будут описаны подробно. Следует понимать, однако, что цель описания заключается не в ограничении изобретения конкретным его воплощением. Наоборот, целью описания является охват всех изменений, модификаций, входящих в рамки данного изобретения, как это определено в приложенной формуле.
Описание вариантов осуществления изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ни чем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.
Фиг. 1 показывает структурную схему системы выбора синхронного или асинхронного межпроцессного взаимодействия.
Система выбора синхронного или асинхронного типа метода межпроцессного взаимодействия (такого как файл, сигнал, сокет, канал, именованный канал, семафор, разделяемая память, обмен сообщениями, проецируемый в память файл, очередь сообщений и т.д.) состоит из первого процесса 110, средства обеспечения межпроцессного взаимодействия 120, средства анализа 130, средства получения данных от используемого ресурса 140 и второго процесса 150. Первый процесс 110 предназначен для выполнения действий в операционной системе по передаче данных второму процессу одним из методов межпроцессного взаимодействия. Второй процесс 150 предназначен для выполнения действий в операционной системе по получению данных от первого процесса одним из методов межпроцессного взаимодействия. Средство обеспечения межпроцессного взаимодействия 120 предназначено для осуществления взаимодействия между процессами с помощью набора способов обмена данными, таких как обмен сообщениями, синхронизация, разделяемая память или удаленные вызовы.
Необходимость передачи информации между процессами обусловлена тем, что реализация всей логики работы в рамках одного процесса, во-первых, зачастую невозможна (в случае, когда с общими данными работают несколько приложений на одном или даже разных компьютерах), во-вторых, такая монолитная организация работы сложна при реализации и отладке, что, в свою очередь, может привести к ошибкам в исполнении, а также стать причиной появления уязвимостей, которые могут быть использованы вредоносными программами.
Одним из примеров межпроцессного взаимодействия является передача изображения из программы по сканированию документов программе по обработке графики. Первый процесс, принадлежащий программе по сканированию, сохраняет отсканированное изображение во временном файле, а второй процесс, принадлежащий программе по обработке графики, обнаруживает факт появления файла в файловой системе, считывает его и отображает изображение в окне программы.
Другим примером обмена данными между процессами является отображение актуальной биржевой информации, загружаемой с сайта биржи в браузер пользователя. В данном случае первый процесс, запущенный на сервере биржи, отсылает данные подписчикам по мере ее обновления. Второй процесс, работающий на компьютере пользователя, постоянно ожидает передачи данных от процесса, работающего на сервера биржи, и как только от первого процесса такие данные приходят, например информация о котировках на ценные бумаги, тут же отображает ее в браузере пользователя. В качестве методов межпроцессного взаимодействия между описанными выше процессами используются сокеты и каналы.
Средство обеспечения межпроцессного взаимодействия 120 принимает запрос от первого процесса 110 на передачу данных второму процессу 150. После чего передает данные, характеризующие запрос (такие как идентификаторы первого и второго процесса, тип и объем передаваемых данных, идентификаторы ресурсов, с которым будут работать процессы, и т.д.) средству анализа 130 для принятия решения, какой из типов межпроцессного взаимодействия, синхронный или асинхронный, использовать для передачи данных от первого процесса 110 второму 150. Далее, после завершения работы средства анализа 130, получает от последнего информацию о типе межпроцессного взаимодействия, который необходимо использовать при передаче данных от первого процесса 110 второму 150. После чего в соответствии с полученным результатом осуществляет передачу данных второму процессу 150 средствами межпроцессного взаимодействия выбранного типа.
Средство анализа 130 предназначено для получения от средства обеспечения межпроцессного взаимодействия 120 запроса на определение для текущей задачи наиболее оптимального типа межпроцессного взаимодействия, проведения анализа по определению синхронного или асинхронного типа, при котором задача передачи данных от первого процесса 110 второму 150 была бы выполнена с наилучшей эффективностью, под которой подразумевается минимальное время исполнение запроса, минимальное время простоя ресурсов (например, таких как оперативная память, процессорное время, сетевая пропускная способность, файлы, носители информации и т.д.), а также минимальное увеличение этих характеристик для остальных процессов операционной системы, и предоставления результата анализа средству обеспечения межпроцессного взаимодействия 120.
Средство анализа 130 принимает от средства обеспечения межпроцессного взаимодействия 120 запрос на проведение анализа по определению типа межпроцессного взаимодействия, с помощью которого первый процесс 110 будет передавать данные второму процессу 150, и вынесения решения о том, какой из типов, синхронный или асинхронный, будет более эффективным для передачи данных, где под эффективностью понимается минимальное время исполнение запроса, минимальное время простоя ресурсов (например, таких как жесткий диск, оперативная память и т.д.), а также минимальное увеличение этих характеристик для остальных процессов операционной системы. После чего средство анализа 130, на основе полученных в запросе от средства обеспечения межпроцессного взаимодействия 120 данных (таких как идентификаторы первого 110 и второго 150 процесса, тип и объем передаваемых данных, идентификаторы ресурсов, с которым будут работать процессы, и т.д.), получает у средства получения данных от используемого ресурса 140 данные о состоянии ресурсов, используемые процессами 110 и 150, которые в зависимости от типа ресурсов включают такие параметры как наличие информации, сохраненной ранее в кэше (для разгрузки ресурсов и ускорения работы с ними результаты последних или часто вызываемых операций с ресурсами, например результаты выполненного SQL запроса или содержимое запрошенного файла, сохраняются в оперативной памяти или на жестком диске и при следующем обращении к ресурсу за такими же данными сразу выдаются клиенту), состояние очереди доступа к ресурсу, т.е. занят ли он или свободен и т.д. На основе анализа полученных данных средство анализа 130 выносит решение о том, какой тип межпроцессного взаимодействия, синхронный или асинхронный, предпочтительнее. После чего передает результат анализа средству обеспечения межпроцессного взаимодействия 120 для дальнейшей работы.
Средство получения данных от используемого ресурса 140 предназначено для выдачи по запросу и на основании переданных средством анализа 130 данных (таких как идентификаторы первого 110 и второго 150 процессов, тип и объем передаваемых данных, идентификаторы ресурсов, с которым будут работать процессы, и т.д.) состояния и свойств ресурса (таких как размер очереди процессов, использующих ресурс, наличие требуемой информации, ранее сохраненной в кэше, объем свободной оперативной памяти, объем свободного места на жестком диске и т.д.), полученных от ресурса или модулей операционной системы, обслуживающих ресурс (например, драйвер жесткого диска).
В качестве примера работы системы выбора межпроцессного взаимодействия можно привести ситуацию, когда один процесс хочет считать файл с жесткого диска. При этом заранее неизвестно, сколько на данную операцию будет затрачено времени, поскольку диск может быть загружен обращениями от других процессов, поиск файла на диске также может занять время и т.д. Поэтому разработчик при реализации своих алгоритмов воспользовался асинхронным вариантом функции считывания данных с диска. Когда средство анализа 130 получает от средства обеспечения межпроцессного взаимодействия 120 запрос на проведение исследования, какой из синхронного и асинхронного типов межпроцессного взаимодействия предпочтительнее использовать, оно запрашивает у средства получения данных от используемого ресурса 140 (в данном случае жесткого диска) информацию о его загруженности (размер очереди процессов, работающих с ним) и том, есть ли требуемые данные в кэше (т.е. были ли требуемые данные уже когда-то зачитаны и сохранены в память). Если требуемая информация уже есть в памяти или жесткий диск свободен, то средство анализа 130 сообщает средству обеспечения межпроцессного взаимодействия 120, что операцию считывания файла с жесткого диска можно выполнить синхронно (поскольку она пройдет быстрее, чем если бы использовалась асинхронная операция считывания), в противном случае операция должна быть выполнена асинхронно.
В качестве еще одного примера выбора между синхронным и асинхронным межпроцессным взаимодействием можно привести исполнение SQL запросов в базах данных. Процесс посылает в базу данных SQL запрос на предоставление данных по некоторым критериям. Поскольку время данной операции может быть довольно большим, то разработчик использует асинхронный тип запроса. Средство анализа 130 запрашивает у средства получения данных от используемого ресурса 140 (в данном случае базы данных) информацию о кэшировании (т.е. был ли ранее выполнен подобный SQL запрос и были ли сохранены по нему данные). Если кэширование было произведено, т.е. данные можно получить быстро, то SQL запрос можно выполнить синхронно.
Фиг. 2 показывает структурную схему алгоритма работы средства анализа.
На этапе 210 на вход средства анализа 230 от первого процесса приходит запрос на передачу данных одним из методов межпроцессного взаимодействия. Затем, на этапе 220 происходит определение способа передачи данных - синхронного или асинхронного. В случае если способ межпроцессного взаимодействия запроса синхронный, то второй процесс на этапе 250 получает данные от первого процесса методом синхронного межпроцессного взаимодействия. В случае если способ межпроцессного взаимодействия запроса асинхронный, то на этапе 230 происходит определение, есть ли реализация данного запроса через синхронный тип межпроцессного взаимодействия. В случае если у асинхронного запроса межпроцессного взаимодействия не существует синхронной версии, то второй процесс на этапе 260 получает данные от первого процесса методом асинхронного межпроцессного взаимодействия. В случае если у асинхронного запроса межпроцессного взаимодействия существует синхронная версия, то на этапе 240 на основе результатов опроса используемого ресурса происходит вычисление возможности использования синхронной версии межпроцессного взаимодействия. В случае если использование синхронной версии запроса межпроцессного взаимодействия признано целесообразным, то второй процесс на этапе 250 получает данные от первого процесса методом синхронного межпроцессного взаимодействия, в противном случае второй процесс на этапе 260 получает данные от первого процесса методом асинхронного межпроцессного взаимодействия.
Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована как любая известная из уровня техники шинная структура, содержащая, в свою очередь, память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26 содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.
Персональный компьютер 20, в свою очередь, содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш-карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода, по своему обычаю, подключают к компьютерной системе 20 через последовательный порт 46, который, в свою очередь, подсоединен к системной шине, но могут быть подключены иным способом, например при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47 персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 является таким же персональным компьютером или сервером, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 3. В вычислительной сети могут присутствовать также и другие устройства, например маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.