СПОСОБ СЕЛЕКТИВНОЙ ЗАГРУЗКИ НАБОРА МОДУЛЕЙ, ЭЛЕКТРОННОЕ УСТРОЙСТВО И НОСИТЕЛЬ ДАННЫХ
METHOD FOR SELECTIVE LOADING OF A SET OF MODULES, ELECTRONIC DEVICE AND DATA MEDIUM

Перекрестные ссылки
Отсутствуют.
Область техники
Настоящая технология относится к системам и способам селективной загрузки набора модулей, номинально требуемого для первого модуля.
Уровень техники
Современные вычислительные устройства, в общем, содержат более одного типа памяти. Средства памяти можно примерно разделить на два типа: (1) память с малым временем задержки выполнения операций, такая как оперативное запоминающее устройство (ОЗУ), при использовании которой программные команды могут непосредственно и эффективно выполняться процессором; и (2) память с большим временем задержки выполнения операций, такая как жесткий диск (ЖД), при использовании которой программные команды не могут эффективно выполняться процессором, но в которой они могут храниться и из которой могут быть загружены в память с малым временем задержки для последующего эффективного выполнения.
Такое разделение используемых ресурсов памяти на различные типы связано с тем, что каждый тип памяти имеет соответствующие преимущества и недостатки, что обуславливает их пригодность для выполнения различных задач. В частности, память с низким временем задержки обычно имеет значительно более высокую стоимость единицы хранения данных, чем память с большим временем задержки.
Вследствие большого влияния факторов стоимости на изготовление современных вычислительных устройств желательно насколько возможно минимизировать потребности в памяти с малым временем задержки. В связи с этим, в общем, современные вычислительные устройства осуществляют хранение программных команд в памяти с большим временем задержки и проводят их копирование (загрузку) в память с малым временем задержки перед предполагаемым выполнением команд процессором, а затем выгружают их посредством освобождения занятого пространства памяти с малым временем задержки после завершения выполнения команд или при отсутствии необходимости их выполнения. Вычислительные устройства, осуществляющие, таким образом, загрузку и разгрузку программных команд, требуют меньшего объема сравнительно дорогостоящей памяти с малым временем задержки, в результате чего снижаются общие затраты производства.
Одним из способов повышения эффективности использования памяти является обеспечение функционирования компьютерных программ в модульной форме, таким образом, что программные команды, реализующие общие для определенного набора компьютерных программ функции, хранятся в виде набора, включающего один или большее число модулей или библиотек, с которыми может быть связана каждая программа, так что указанные программные команды требуется записать только один раз (в наборе модулей), а не осуществлять избыточное включение их в каждую программу.
Обычно модули, используемые компьютерной программой, загружаются из памяти с большой задержкой в память с малой задержкой в статическом или динамическом режиме. Статическая загрузка означает автоматическую загрузку во время первоначальной загрузки самой программы всех модулей, которые номинально используются программой, то есть, всех модулей, которые могут потребоваться какому-либо экземпляру программы для эффективного функционирования в любом потенциальном состоянии или условиях выполнения указанной программы. С другой стороны, динамическая загрузка предусматривает загрузку одного или большего числа модулей во время выполнения на основе конкретной команды компьютерной программы. Например, компьютерная игра, которая предоставляет пользователю возможность играть шашками или шахматами для обеспечения требуемых действий пользователя номинально требует наличия как модуля игры в шашки, так и модуля игры в шахматы, хотя, в конечном счете, пользователь может принять решение играть только шашками. В соответствии с принципом статической загрузки при первоначальной загрузке компьютерной игры в память с малой задержкой загружаются как модуль игры в шашки, так и модуль игры в шахматы. В альтернативном варианте, в соответствии с принципом динамической загрузки компьютерная игра может быть запрограммирована таким образом, что загрузка модуля игры в шашки и модуля игры в шахматы первоначально не выполняется, а в процессе выполнения программы после принятия пользователем решения играть в шашки осуществляется загрузка модуля игры в шашки.
Методы статической и динамической загрузки имеют как преимущества, так и недостатки. В случае статической загрузки основное преимущество состоит в том, что все модули, которые могут потребоваться, гарантированно предусмотрены в памяти с малым временем задержки, обеспечивая, таким образом, функционирование компьютерной программы. Однако данное преимущество достигается за счет использования чрезмерно большого объема памяти с малым временем задержки, поскольку автоматически загружаются все модули, так что, возможно, выполняется загрузка некоторых (или большого числа) модулей, соответствующие которым программные команды, фактически, никогда не будут выполняться. С другой стороны, динамическая загрузка обладает преимуществом, поскольку требует меньшего объема памяти, но также имеет недостаток, связанный с замедленным функционированием при первоначальном использовании каждого модуля в результате существенной задержки, связанной с загрузкой модуля из памяти с большим временем задержки.
Известны различные методы реализации промежуточного варианта между полностью статической и полностью динамической загрузкой, в соответствии с которыми модули обычно сохраняются в памяти с большим временем задержки, а затем «предварительно загружаются» в память с малым временем задержки в соответствии с предполагаемой потребностью выполнения функций программными командами. Например, способ предварительной динамической загрузки модулей описан в международной публикации №WO 2009/083732 А1 под названием «Предварительная загрузка библиотек динамической компоновки» (далее «публикация Роу»). Как указано в этой публикации, компьютерная программа может иметь «гибкую зависимость» от одной или большего числа библиотек динамической компоновки (DLL), заключающуюся в том, что компьютерной программе только в некоторых случаях требуется осуществить выполнение программных команд, содержащихся в библиотеках DLL. Такая гибкая зависимость отличается от «жесткой» зависимости компьютерной программы от указанных модулей, которая предполагает, что модули требуются для каждого экземпляра программы, независимо от конкретных условий, возникших во время выполнения. В публикации Роу описан способ динамической загрузки одного или большего числа модулей, соответствующий гибкой зависимости, полученной на основе выявленного возникновения конкретных «событий», которые, предположительно, указывают на потребность в конкретных функциях, реализуемых указанными модулями. В публикации описаны различные типы событий, в том числе события, связанные с приемопередатчиком (например, прием данных с использованием сети), события, связанные с интерфейсом пользователя (например, щелчок мышью), и события, связанные со временем (например, наступление субботнего вечера).
В общем, способ и система предварительной загрузки ресурсов, когда они требуются для компьютерной программы, описаны в заявке на патент США №US 2003/0220984 A1 под названием «Способ и система предварительной загрузки ресурсов» (далее «заявка Джонса»). Предварительная загрузка ресурсов выполняется на основании указания состояния программы, называемого «практическим указанием», которое подается на модель прогнозирования, используемую для прогнозирования требуемых ресурсов на основании информации состояния программы. Термин «ресурсы» в широком смысле определяется в заявке Джонса как «любые данные, которые приложение использует в процессе выполнения», а представленные примеры охватывают файл или часть файла, такую как библиотека динамической компоновки, исполняемый файл или компонент программы.
Раскрытие изобретения
Известные системы и способы условной загрузки модулей, такие как системы и способы, описанные в публикации Роу и заявке Джонса, функционируют на основе анализа информации состояния, такой как «события» в публикации Роу или «практические указания» в заявке Джонса.
Технический результат заключается в повышении эффективности использования памяти. Предлагаемая технология предусматривает использование другого принципа, на основе которого могут быть селективно загружены модули, номинально требуемые для первого модуля компьютерной программы. Вместо информации состояния в примерах осуществления настоящей технологии используется идентификация подмножества модулей, которые требуется загрузить, на основе анализа фактических данных, подлежащих обработке.
Таким образом, в соответствии с одним аспектом настоящей технологии различные примеры осуществления предложенной технологии предусматривают реализацию компьютерного способа селективной загрузки набора модулей, номинально требуемого первому модулю для обработки возможного набора объектов, причем указанный способ включает этапы:
(а) приема данных, указывающих фактический набор объектов, которые требуется обработать с использованием первого модуля, причем фактический набор объектов представляет собой строгое подмножество возможного набора объектов;
(b) проведения анализа элементов фактического набора объектов; (с) идентификации требуемого набора модулей, фактически необходимого первому модулю для обработки фактического набора объектов, наосновании результатов анализа, причем требуемый набор модулей представляет собой строгое подмножество набора модулей; и
(d) загрузки из первой памяти во вторую память только элементов набора модулей, которые являются также элементами требуемого набора модулей.
В соответствии с другим аспектом настоящей технологии различные примеры осуществления предложенной технологии предусматривают создание электронного устройства, предназначенного для селективной загрузки набора модулей, номинально требуемых первому модулю для обработки возможного набора объектов и содержащего: процессор, первую память и вторую память, каждая из которых функционально связана с процессором, причем в первой памяти хранится первый модуль, набор модулей и программные команды, выполняемые процессором с целью:
(a) приема данных, указывающих фактический набор объектов, которые требуется обработать с использованием первого модуля, причем фактический набор объектов представляет собой строгое подмножество возможного набора объектов;
(b) проведения анализа элементов фактического набора объектов;
(c) идентификации требуемого набора модулей, фактически необходимого первому модулю для обработки фактического набора объектов, на основании результатов анализа, причем требуемый набор модулей представляет собой строгое подмножество набора модулей; и
(d) загрузки из первой памяти во вторую память только элементов набора модулей, которые являются также элементами требуемого набора модулей.
В соответствии со следующим аспектом настоящей технологии различные примеры осуществления предложенной технологии предусматривают постоянный машиночитаемый носитель данных, содержащий программные команды, обеспечивающие селективную загрузку набора модулей, номинально требуемых первому модулю для обработки возможного набора объектов, причем программные команды выполняются процессором электронного устройства с целью:
(a) приема данных, указывающих фактический набор объектов, которые требуется обработать с использованием первого модуля, причем фактический набор объектов представляет собой строгое подмножество возможного набора объектов;
(b) проведения анализа элементов фактического набора объектов;
(c) идентификации требуемого набора модулей, фактически необходимого первому модулю для обработки фактического набора объектов, на основании результатов анализа, причем требуемый набор модулей представляет собой строгое подмножество набора модулей; и
(d) загрузки из первой памяти во вторую память только элементов набора модулей, которые являются также элементами требуемого набора модулей.
В некоторых примерах реализации указанных выше аспектов прием данных, указывающих фактический набор объектов, которые требуется обработать с использованием первого модуля, включает прием команды загрузки первого модуля, причем команда содержит данные, указывающие фактический набор объектов, которые требуется обработать с использованием первого модуля.
В некоторых примерах реализации указанных выше аспектов, по меньшей мере, один объект каждого типа из множества типов объектов является элементом возможного набора объектов, причем из фактического набора объектов исключены все элементы возможного набора объектов, по меньшей мере, одного типа, выполнение анализа элементов фактического набора объектов включает определение типа каждого объекта, который является элементом фактического набора объектов, и идентификация требуемого набора модулей включает идентификацию как требуемого набора модулей элементов набора модулей, содержащих программные команды, требуемые для обработки объектов каждого типа, отличающегося от, по меньшей мере, одного типа.
В некоторых примерах осуществления технологии идентификация элементов набора модулей, которые содержат программные команды, требуемые для обработки объектов каждого типа, отличающегося от, по меньшей мере, одного типа, включает анализ заданного соответствия между каждым типом и соответствующим набором модулей, требуемых для обработки объектов данного типа.
В некоторых примерах осуществления технологии, по меньшей мере, один объект содержит, по меньшей мере, один файл, множество типов объектов содержит множество форматов файлов, возможный набор объектов содержит возможный набор файлов, фактический набор объектов содержит фактический набор файлов, за исключением всех элементов возможного набора файлов, имеющих, по меньшей мере, один из форматов файлов, выполнение анализа элементов фактического набора объектов включает определение формата каждого файла, входящего в состав фактического набора файлов, и идентификация требуемого набора модулей включает идентификацию как требуемого набора модулей элементов набора модулей, содержащих программные команды, требуемые для обработки файлов каждого формата, отличающегося от, по меньшей мере, одного формата файлов.
В некоторых примерах осуществления технологии, по меньшей мере, один объект содержит, по меньшей мере, один геометрический объект, множество типов содержит множество геометрических форм, возможный набор объектов содержит возможный набор геометрических объектов, фактический набор объектов содержит фактический набор геометрических объектов, за исключением всех элементов возможного набора геометрических объектов, соответствующих, по меньшей мере, одной геометрической форме, выполнение анализа элементов фактического набора объектов включает определение геометрической формы каждого геометрического объекта, входящего в состав фактического набора геометрических объектов, и идентификация требуемого набора модулей включает идентификацию как требуемого набора модулей элементов набора модулей, содержащих программные команды, требуемые для обработки геометрических объектов каждой геометрической формы, отличающейся от, по меньшей мере, одной геометрической формы.
В некоторых примерах осуществления технологии, по меньшей мере, один объект содержит, по меньшей мере, один объект, полученный в результате автоматизированного проектирования, множество типов содержит множество типов объектов, полученных в результате автоматизированного проектирования, возможный набор объектов содержит возможный набор объектов, полученных в результате автоматизированного проектирования, фактический набор объектов содержит фактический набор объектов, полученных в результате автоматизированного проектирования, за исключением всех элементов возможного набора объектов, полученных в результате автоматизированного проектирования, которые соответствуют, по меньшей мере, одному типу объектов, полученных в результате автоматизированного проектирования, выполнение анализа элементов фактического набора объектов включает определение типа каждого объекта, полученного в результате автоматизированного проектирования, который входит в состав фактического набора объектов, полученных в результате автоматизированного проектирования, и идентификация требуемого набора модулей включает идентификацию как требуемого набора модулей элементов набора модулей, содержащих программные команды, требуемые для обработки каждого типа объектов, полученных в результате автоматизированного проектирования, отличающихся от, по меньшей мере, одного типа объектов, полученных в результате автоматизированного проектирования.
В некоторых примерах осуществления технологии, по меньшей мере, один объект содержит, по меньшей мере, один графический объект, множество типов содержит множество типов графических объектов, возможный набор объектов содержит возможный набор графических объектов, фактический набор объектов содержит фактический набор графических объектов, за исключением всех элементов возможного набора графических объектов, соответствующих, по меньшей мере, одному типу графических объектов, выполнение анализа элементов фактического набора объектов включает определение типа каждого графического объекта, входящего в состав фактического набора графических объектов, и идентификация требуемого набора модулей включает идентификацию как требуемого набора модулей элементов набора модулей, содержащих программные команды, требуемые для обработки графических объектов каждого типа, отличающихся от, по меньшей мере, одного типа графических объектов.
В некоторых примерах осуществления технологии, по меньшей мере, один объект содержит, по меньшей мере, одну математическую формулу, множество типов содержит множество типов математических формул, возможный набор объектов содержит возможный набор математических формул, фактический набор объектов содержит фактический набор математических формул, за исключением всех элементов возможного набора математических формул, соответствующих, по меньшей мере, одному типу математических формул, выполнение анализа элементов фактического набора объектов включает определение типа каждой математической формулы, входящей в состав фактического набора математических формул, и идентификация требуемого набора модулей включает идентификацию как требуемого набора модулей элементов набора модулей, содержащих программные команды, требуемые для обработки математических формул каждого типа, отличающихся от, по меньшей мере, одного типа математических формул.
В некоторых примерах осуществления технологии, по меньшей мере, один объект содержит, по меньшей мере, один запрос к базе данных, множество типов содержит множество типов запросов к базе данных, возможный набор объектов содержит возможный набор запросов к базе данных, фактический набор объектов содержит фактический набор запросов к базе данных, за исключением всех элементов возможного набора запросов к базе данных, соответствующих, по меньшей мере, одному типу запросов к базе данных, выполнение анализа элементов фактического набора объектов включает определение типа каждого запроса к базе данных, входящего в состав фактического набора запросов к базе данных, и идентификация требуемого набора модулей включает идентификацию как требуемого набора модулей элементов набора модулей, содержащих программные команды, требуемые для обработки запросов к базе данных каждого типа, отличающихся от, по меньшей мере, одного типа запросов к базе данных.
В контексте настоящего описания технологии, если явно не указано иное, «электронное устройство» означает любое аппаратное и (или) программное обеспечение, пригодное для выполнения поставленной задачи. Таким образом, некоторые примеры электронных устройств, не ограничивающие объем технологии, охватывают компьютеры (серверы, настольные компьютеры, переносные компьютеры, нетбуки и т.д.), смартфоны и планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы.
В контексте настоящего описания технологии, если явно не указано иное, выражение «машиночитаемый носитель данных» охватывает носители данных любого типа и исполнения, примеры которых, не ограничивающие объем технологии, охватывают оперативные запоминающие устройства, постоянные запоминающие устройства, диски (компакт-диски, DVD-диски, гибкие диски, жесткие диски и т.д.), USB-ключи, карты флэш-памяти, твердотельные накопители и накопители на магнитных лентах.
В контексте настоящего описания технологии, если явно не указано иное, выражение «указание на» элемент информации может представлять собой сам элемент информации, указатель, ссылку, гиперссылку или другой механизм косвенного указания получателю местоположения сети, запоминающего устройства, базы данных или другого машиночитаемого носителя данных, из которого может быть получен элемент информации. Например, указание файла может содержать сам файл (то есть, его содержимое) или может представлять собой уникальный дескриптор файла в конкретной файловой системе или какое-либо другое средство указания получателю местоположения сети, адреса памяти, таблицы базы данных или другого местоположения, в котором может быть осуществлен доступ к файлу. Для специалиста в данной области техники очевидно, что требуемая точность указания зависит от предварительно предоставленной интерпретации информации, обмен которой осуществляется между отправителем и получателем указания. Например, если перед выполнением обмена данными между отправителем и получателем согласовано, что указание элемента информации будет представлено в виде ключа базы данных, соответствующего элементу конкретной таблицы базы данных, содержащей элемент информации, то для фактической передачи элемента информации получателю требуется передать только ключ базы данных, а сам элемент информации не передается между отправителем и получателем указания.
В контексте настоящего описания технологии, если явно не указано иное, слова «первый», «второй», «третий» и т.д. используются в форме прилагательных только для того, чтобы отличать существительные, к которым они относятся, друг от друга, а не для целей указания какой-либо конкретной связи между этими существительными. Таким образом, например, следует учитывать, что использование выражений «первый сервер» и «третий сервер» не подразумевает какого-либо конкретного порядка, категории, хронологии, иерархии или независимого либо сравнительного ранжирования (например) серверов, а эти выражения (сами по себе) не предполагают обязательного наличия в данном случае какого-либо «второго сервера». Кроме того, как указано в настоящем описании, упоминание «первого» элемента и «второго» элемента не исключает возможности того, что эти два элемента фактически представляют собой один элемент. Таким образом, например, в некоторых случаях «первый» сервер и «второй» сервер могут быть одним компонентом программного и (или) аппаратного обеспечения, а в других случаях они могут представлять собой различные компоненты программного и (или) аппаратного обеспечения.
В контексте настоящего описания технологии, если явно не указано иное, определенные элементы, представленные в пунктах формулы изобретения, обозначены буквами (а), (b), (с) и т.д. Эти обозначения используются только для упрощения ссылки на элементы пунктов формулы изобретения, которым они соответствуют, а не для целей описания конкретного соотношения между указанными элементами. Алфавитный порядок обозначения не обязательно подразумевает и его не следует использовать, как указывающий на какой-либо конкретный порядок, хронологию, иерархию или ранжирование элементов. Таким образом, например, в зависимости от конкретного варианта осуществления элемент способа, указанный в пункте формулы изобретения обозначением (d) может выполняться перед, после или одновременно с элементом способа, обозначенным буквой (b).
Примеры осуществления настоящей технологии предусматривают, по меньшей мере, реализацию одной из указанных выше целей и (или) одного из аспектов, но не обязательно содержат все указанные цели и аспекты. Следует учитывать, что некоторые аспекты настоящей технологии, реализованные в результате попыток достижения указанной выше цели, могут не удовлетворять критериям данной цели и (или) могут удовлетворять критериям других целей, которые конкретно не указаны в настоящем документе.
Дополнительные и (или) альтернативные признаки, аспекты и преимущества примеров осуществления настоящей технологии будут очевидными из последующего описания, приложенных чертежей и формулы изобретения.
Краткое описание чертежей
Для углубления понимания предложенной технологии, а также других аспектов и дополнительных признаков указанной технологии представлено нижеследующее описание, которое следует рассматривать совместно с прилагаемыми чертежами.
Фиг. 1 иллюстрирует схему компьютерной системы, пригодной для реализации предлагаемой технологии и (или) используемой совместно с примерами осуществления данной технологии.
Фиг. 2 иллюстрирует концептуальную структурную схему, содержащую возможный набор объектов и фактический набор объектов в соответствии с примерами осуществления предложенной технологии.
Фиг. 3 иллюстрирует концептуальную структурную схему, содержащую набор модулей, номинально необходимых для первого модуля, и требуемый набор модулей, фактически необходимых для первого модуля в соответствии с фактическим набором объектов, указанных на фиг. 2, согласно примеру осуществления предложенной технологии.
Фиг. 4 иллюстрирует структурную схему способа, реализованного компьютерной системой, представленной на фиг. 1, в соответствии с примером осуществления настоящей технологии, не ограничивающим объем технологии.
Осуществление изобретения
Следует отметить, что все примеры осуществления настоящей технологии и указанные в настоящем документе условные конструкции, в общем, предназначены для содействия читателю в понимании принципов предложенной технологии, но не ограничивают объем технологии конкретными указанными примерами или условиями. Для специалистов в данной области техники очевидно, что могут быть реализованы различные структуры, которые явно не описаны и не представлены в настоящем документе, однако обеспечивают реализацию принципов предложенной технологии и находятся в пределах сущности и объема настоящей технологии.
Далее, с целью упрощения понимания в представленном ниже описании рассмотрены сравнительно простые примеры осуществления предложенной технологии. Для специалистов в данной области техники очевидно, что возможны значительно более сложные примеры осуществления данной технологии.
В некоторых случаях далее описаны полезные примеры внесения изменений в предложенную технологию. Эти примеры указаны только для углубления понимания, а не для определения объема или ограничения настоящей технологии. Указанные изменения не являются исчерпывающими, и для специалистов в данной области техники очевидно, что в пределах объема настоящей технологии возможна реализация других изменений. Далее, отсутствие примеров реализации изменений не следует интерпретировать как отсутствие возможности внесения изменений и (или) представлять рассмотренный пример осуществления как единственный вариант реализации данного элемента предложенной технологии.
Кроме того, все представленные в настоящем документе утверждения, касающиеся принципов, аспектов и вариантов осуществления предложенной технологии, а также конкретных примеров реализации охватывают как структурные, так и функциональные эквиваленты указанных примеров реализации, которые известны в настоящее время или будут разработаны в будущем. Таким образом, например, для специалистов в данной области техники очевидно, что представленные в настоящем документе структурные схемы являются концептуальным представлением иллюстративных примеров реализации принципов предложенной технологии. Аналогичным образом, очевидно, что функциональные схемы, структурные схемы, диаграммы состояний, псевдокоды и аналогичные компоненты представляют различные процессы, которые могут быть, по существу, сохранены на машиночитаемом носителе данных и, соответственно, выполнены компьютером или процессором независимо от наличия или отсутствия явного указания на наличие в компоненте компьютера или процессора.
Функции различных элементов, указанных на фигурах, в том числе функциональных элементов, обозначенных термином «процессор», могут быть осуществлены посредством использования специализированного аппаратного обеспечения, предоставляющего возможность выполнения соответствующего программного обеспечения. При использовании процессора соответствующие функции могут быть реализованы одним выделенным процессором, одним коллективно используемым процессором или множеством отдельных процессоров, часть которых может быть компонентами коллективного использования. Кроме того, применение терминов «процессор» или «контроллер» не касается исключительно аппаратного обеспечения, предоставляющего возможность выполнения программного обеспечения, а может подразумевать, среди прочего, аппаратное обеспечение процессора цифровых сигналов (DSP), сетевой процессор, специализированную интегральную схему (ASIC) программируемую матрицу логических элементов (FPGA), постоянное запоминающее устройство (ПЗУ) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ) и энергонезависимую память. Может также использоваться другое стандартное и (или) специализированное аппаратное обеспечение. Программные модули или просто модули, которые представляют собой программное обеспечение, могут быть указаны в настоящем документе в виде любой комбинации элементов структурной схемы или других элементов, соответствующих этапам процесса и (или) текстовому описанию. Эти модули могут быть реализованы на основе аппаратного обеспечения, которое явно указано или использование которого подразумевается.
Наконец, следует также отметить, что, если не указано иное, чертежи выполнены на масштабе.
С учетом указанных выше принципов для иллюстрации различных вариантов реализации аспектов настоящей технологии рассмотрим далее некоторые примеры, не ограничивающие объем технологии.
Фиг. 1 иллюстрирует пример осуществления предложенной технологии в виде компьютерной системы 100, содержащей различные компоненты аппаратного обеспечения: один или большее число одноядерных или многоядерных процессоров, совместно представленных процессором 110, твердотельный накопитель 120 и оперативное запоминающее устройство 130. Обмен данными между различными компонентами компьютерной системы 100 обеспечивается одной или большим числом внутренних и (или) внешних шин 140 (например, шина PCI, универсальная последовательная шина, шина «FireWire» согласно стандарту IEEE 1394, шина SCSI, шина Serial ATA и т.д.), которые связаны с компонентами системы электронными средствами.
В соответствии с примерами осуществления предложенной технологии твердотельный накопитель 120 содержит первый модуль 122, набор модулей 124, номинально требуемый первому модулю 122 для обработки возможного набора объектов (пример которого представлен на фиг. 2), и программные команды 126, выполняемые процессором 110 для селективной загрузки элементов набора модулей 124 на основе анализа выполнения фактического набора объектов (пример которого представлен на фиг. 2), подлежащих обработке первым модулем 122. Следует учитывать, что, хотя первый модуль 122 и программные команды 126 представлены на фиг. 1 как отдельные компоненты, в других примерах осуществления настоящей технологии первый модуль 122 может содержать программные команды 126. Кроме того, в некоторых примерах осуществления настоящей технологии первый модуль 122 может храниться совместно с набором модулей 124 и (или) входить в состав данного набора модулей 124.
На фиг. 2 указан возможный набор объектов 200 и фактический набор объектов 210 в соответствии с примером осуществления предлагаемой технологии. В представленном примере осуществления возможный набор объектов 200 представляет собой набор файлов 201 - 208. Файлы, входящие в состав набора файлов 201 - 208, представляют собой файлы следующих типов или форматов: текстовый (ТХТ), изображение в формате JPEG (JPG), изображение в формате PNG (PNG) и звуковой формата WAV (WAV). Фактический набор объектов 210 представляет собой строгое подмножество набора файлов 201 - 208, включающее только файл 201 (FILE1.TXT) и файл 204 (FILE4.JPG). Таким образом, из фактического набора объектов 210 исключены все объекты возможного набора объектов 200, имеющие формат файлов PNG и WAV (то есть, из фактического набора объектов 210 исключены элементы набора файлов, указанные позициями 206, 207 и 208).
Очевидно, что в других примерах осуществления технологии могут использоваться форматы файлов, отличающиеся от форматов, указанных на фиг. 2. Кроме того, формат файлов не обязательно требуется указывать трехбуквенным расширением имени файла. В некоторых примерах осуществления технологии формат файла может быть указан явным тегом, содержащимся в файле. В некоторых примерах осуществления технологии формат файла может не быть явно указан и определяется только посредством контроля и анализа содержимого файла. Далее, следует учитывать, что как возможный набор объектов 200, так и фактический набор объектов 210 не ограничиваются числом объектов, указанным на фиг.2.
На фиг. 3 указан набор модулей 300 и требуемый набор модулей 310, используемый в примере осуществления предложенной технологии. Например, набор модулей 300 может содержать модули, которые номинально требуются для обработки возможного набора объектов 200, указанного на фиг.2, а требуемый набор модулей 310 может содержать модули, фактически необходимые для обработки фактического набора объектов 210, указанного на фиг. 2. Другими словами, требуемый набор модулей 310 представляет собой подмножество набора модулей 300, причем требуемый набор модулей 310 является фактически необходимым для обработки фактического набора объектов 210, который является подмножеством возможного набора объектов 200.
Как казано на фигуре, набор модулей 300 содержит модуль 301 синтаксического анализа текста, предназначенный для обработки текстовых файлов (например, файлов 201, 202, 203), модуль 302 отображения данных изображения, предназначенный для отображения на дисплее (не показан) изображений, содержащихся в файлах изображений (например, файлах 204, 205, 206), модуль 303 декодирования файлов формата JPEG, предназначенный для декодирования файлов изображений, кодированных в соответствии со стандартом «Объединенной группы экспертов в области фотографии» (например, файлов 204, 205), модуль 304 файлов формата PNG, предназначенный для анализа файлов в формате переносимой сетевой графики, таких как файл 206 и извлечения содержащихся в них изображений, и модуль 305 аудиофайлов ЛИКМ, предназначенный для обработки звуковых данных, модулированных с использованием линейной импульсно-кодовой модуляции (ЛИКМ), которые содержатся в файлах формата WAV (например, файлах 207, 208).
На фиг. 4 указана структурная схема примера реализации способа в соответствии с предложенной технологией. Более конкретно, на фиг.4 представлен реализованный на компьютере способ 400 селективной загрузки набора модулей, номинально требуемых первому модулю 122 для обработки возможного набора объектов 210. Способ 400 может быть реализован, например, в компьютерной системе 100, указанной на фиг. 1, посредством выполнения процессором 110 программных команд 126 с целью селективной загрузки элементов набора модулей 124, номинально требуемых первому модулю 122. Программные команды 126 могут содержаться в компьютерной программе (не показана), загруженной с твердотельного накопителя 120 в оперативное запоминающее устройство 130, и выполняться процессором 110.
При возникновении определенного состояния компьютерная программа выполняет обработку набора объектов (например, файлов), причем программные команды, обеспечивающие реализацию функций, требуемых для обработки указанных объектов, содержатся в первом модуле 122. Соответственно, компьютерная программа осуществляет динамическую загрузку первого модуля 122 из твердотельного накопителя 120 в оперативное запоминающее устройство 130 с целью использования требуемых функций. Например, компьютерная программа может представлять собой приложение для индексирования файлов, которое используется с целью выполнения анализа различных файлов, а первый модуль 122 может представлять собой модуль анализа файлов, выполняемый процессором 110 для осуществления операций анализа файлов различных форматов.
Поскольку первый модуль 122 может быть предназначен для обработки различных объектов (например, анализа файлов различных форматов), первый модуль 122 предусматривает использование набора модулей 124, каждый из которых реализует конкретные функции относительно одного или большего числа объектов конкретного типа (например, файлов одного или большего числа форматов). Для обеспечения возможности обработки первым модулем 122 объектов всех типов следует, прежде всего, выполнить загрузку всех элементов набора модулей 124. Таким образом, для обработки всего возможного набора объектов 200 первому модулю 122 номинально потребуется набор модулей 124. Однако поскольку фактический набор объектов 210, который фактически потребуется обработать с использованием первого модуля 122, может не охватывать объекты всех типов, входящие в возможный набор объектов 200, то загрузка всех элементов набора модулей 124 может не требоваться, и выполнение загрузки всех элементов будет означать неэффективное использование ограниченных ресурсов памяти. В таком случае целесообразно воспользоваться способом 400 для селективной загрузки только некоторых модулей набора модулей 124, как указано далее.
На этапе 410 осуществляется прием данных, указывающих фактический набор объектов 210, который требуется обработать с использованием первого модуля 122, причем фактический набор объектов 210 представляет собой строгое подмножество возможного набора объектов 200, по меньшей мере, один объект из каждого множества типов является элементом возможного набора объектов 200 и из фактического набора объектов 210 исключены все элементы возможного набора объектов 200, соответствующие, по меньшей мере, одному типу.
Например, возможный набор объектов 200 может содержать файлы различных форматов, в том числе файлы 201-208 четырех форматов (TXT, JPG, PNG, WAV), а фактический набор объектов 210, указанный на фиг. 2, содержит файлы 201 и 204 только двух типов (TXT, JPG). Следовательно, из фактического набора объектов 210 исключены элементы, имеющие тип файла PNG и WAV. Для указания фактического набора объектов 210, который требуется обработать, может использоваться, например, структура данных (массив, связанный список, хеш-таблица, объектно-ориентированный объект и т.д.), содержащая объекты, указатель или ссылку на структуру данных либо другое приемлемое указание.
В некоторых примерах осуществления технологии этап 410 включает этап 412, на котором осуществляется прием команды загрузки первого модуля 122, причем команда содержит указание фактического набора объектов, которые необходимо обработать с использованием первого модуля 122. Например, первый модуль 122 может представлять собой библиотеку динамической компоновки (DLL), предназначенную для анализа содержания файлов различных форматов, а команда может представлять собой команду динамической загрузки DLL. Однако в отличие от типовой команды загрузки DLL, данная команда содержит указание набора объектов, которые требуется обработать с использованием DLL, такого как фактический набор объектов 210, представленный на фиг.2, который содержит файлы 201 и 204.
На этапе 420 выполняется анализ элементов фактического набора объектов 210. В некоторых примерах осуществления технологии этап 420 включает этап 422, на котором выполняется определение типа каждого объекта, входящего в состав фактического набора объектов 210. Например, в рассматриваемом примере фактического набора объектов 210 тип каждого объекта может представлять собой формат каждого файла, входящего в состав фактического набора объектов 210, а именно файлов 201 и 204.
На этапе 430 на основе результатов анализа, проведенного на этапе 420, определяется требуемый набор модулей 310, фактически необходимый первому модулю 122 для обработки фактического набора объектов 210, причем требуемый набор модулей 310 представляет собой строгое подмножество набора модулей 300. Например, требуемый набор модулей для обработки фактического набора модулей 210, указанного на фиг. 2, может быть определен как требуемый набор модулей 310, представленный на фиг. 3, который представляет собой строгое подмножество набора модулей 300, номинально требуемых первому модулю 122 для обработки всех элементов возможного набора объектов 200.
В некоторых примерах осуществления технологии этап 430 включает этап 432, на котором выполняется идентификация элементов требуемого набора модулей 310, как элементов набора модулей 310, содержащих программные команды, требуемые для обработки объектов каждого типа, отличающегося от, по меньшей мере, одного типа объектов, содержащегося в наборе модулей 300, который не включен в требуемый набор модулей 310. Другими словами, требуемые модули определяются как модули, связанные с обработкой объектов, соответствующих типам, фактически включенным в набор объектов 210 для обработки с использованием первого модуля 122, за исключением всех модулей, требуемых только для обработки объектов, типы которых не представлены в фактическом наборе объектов 210.
В некоторых примерах осуществления технологии этап 432 включает этап 434, на котором проводится анализ заданного соответствия между каждым типом и соответствующим набором модулей, требуемых для обработки объектов данного типа. Примеры установления указанного заданного соответствия, не ограничивающие объем технологии, охватывают жесткое программирование соответствия в программных командах 126, жесткое программирование соответствия в программных командах первого модуля 122 и включение данных соответствия в файл конфигурации, сопровождающий программные команды 126 или первый модуль 122.
На этапе 440 из первой памяти (например, твердотельного накопителя 120) во вторую память (например, оперативное запоминающее устройство 130) загружаются только элементы набора модулей 124, которые также являются элементами требуемого набора модулей. Другими словами, из числа элементов набора модулей 124, номинально требуемых первому модулю 122, фактически загружаются только элементы, определенные на этапе 430 как требуемые первому модулю 122 для обработки фактического набора объектов. Например, для фактического набора объектов 210, указанного на фиг. 2 и содержащего только текстовый файл 201 и файл 204 изображения в формате JPEG, может быть загружен требуемый набор модулей 310, представленный на фиг. 3, который содержит только модуль 301 синтаксического анализа текста, модуль 302 отображения данных изображения и модуль декодирования файлов формата JPEG, поскольку нет необходимости выполнять загрузку модуля 304 файлов формата PNG или модуля 305 аудиофайлов ЛИКМ, учитывая, что файл 206 формата PNG и оба файла 207 и 208 формата WAV не входят в состав фактического набора объектов 210, который требуется обработать с использованием первого модуля 122.
Для специалистов в данной области техники очевидно, что в других примерах осуществления технологии объекты, обработку которых требуется выполнить с использованием конкретного модуля, могут не представлять собой файлы, а типы объектов могут отличаться от типов файлов. Далее представлен ряд примеров, не ограничивающих объем технологии.
В некоторых примерах осуществления настоящей технологии объекты могут представлять собой геометрические объекты, каждый и которых имеет определенную геометрическую форму. Например, геометрические объекты могут быть определены файлом формата GeoJSON. Объекты могут иметь различную геометрическую форму, каждая из которых возможно требует использования функций специализированных модулей, предназначенных для обработки геометрических объектов, имеющих данную геометрическую форму. Таким образом, при загрузке модуля, предназначенного для обработки геометрических объектов, может быть также предусмотрен фактический набор геометрических объектов, обработку которых осуществляет модуль, а при отсутствии в фактическом наборе геометрических объектов какой либо геометрической формы потребуется загрузка специализированных модулей, обеспечивающих обработку указанной геометрической формы.
Аналогичным образом, в некоторых примерах осуществления технологии объекты могут представлять собой объекты, полученные в результаты автоматизированного проектирования (CAD), каждый из которых имеет соответствующий тип объекта CAD. В некоторых проектах, которые выполняются на основе автоматизированного проектирования, используются только некоторые типы объектов CAD. При загрузке модуля, предназначенного для обработки объектов CAD, может быть предусмотрен конкретный проект, выполняемый на основе автоматизированного проектирования, с целью оценки фактического набора объектов CAD проекта и исключения, таким образом, загрузки специализированных модулей, номинально требуемых указанному модулю, которые предназначены для обработки объектов CAD, не используемых в конкретном проекте, выполняемом на основе автоматизированного проектирования.
В некоторых примерах осуществления технологии объекты могут представлять собой графические объекты, каждый и которых является графическим объектом определенного типа. Различные файлы данных изображений могут содержать графические объекты различных типов. Модуль, предназначенный для обработки файлов данных изображений, в общем, номинально может требовать нескольких модулей для обработки графических объектов всех типов, которые могут содержаться в файле данных изображения. Определение отсутствия одного или большего числа типов графических объектов в результате проведения анализа файла данных изображения во время выполнения программы исключает необходимость загрузки всех модулей, за исключением модулей, требуемых для обработки имеющихся типов графических объектов.
В некоторых примерах осуществления технологии объекты могут представлять собой математические формулы, каждая из которых является математической формулой определенного типа. Например, в электронной таблице гипотетически могут содержаться разнообразные математические формулы различных типов, однако в большинстве электронных таблиц используются только несколько формул. Вместо загрузки модулей, предназначенных для обработки математических формул всех типов, которые, возможно, присутствуют в электронной таблице, можно загрузить только модули, требуемые для обработки математических формул, фактически используемых в данной электронной таблице.
В некоторых примерах осуществления технологии объекты могут представлять собой запросы к базе данных, каждый из которых является запросом к базе данных определенного типа. Запросы к базе данных, предназначенные для взаимодействия с базой данных, потенциально могут требовать большого числа функций, из которых многие функции могут быть реализованы на основе специализированных модулей. В то же время некоторые запросы к базе данных могут требовать только небольшого подмножества полного возможного набора функций, обеспечивающих взаимодействие с базой данных. В результате проведения анализа запроса к базе данных во время выполнения может быть выявлено, что для модуля базы данных требуются только некоторые модули из общего числа модулей, номинально обеспечивающих обработку запросов к базе данных.
Для специалистов в данной области техники очевидно, что в описанные выше примеры осуществления настоящей технологии могут быть внесены изменения и усовершенствования. Представленное описание является иллюстративным и не имеет ограничительного характера. Соответственно, объем настоящей технологии определяется исключительно прилагаемой формулой изобретения.