СПОСОБ АДМИНИСТРИРОВАНИЯ КОМПОНЕНТОВ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ИНТЕГРИРОВАННЫХ В МОБИЛЬНУЮ СИСТЕМУ
METHOD OF MANAGING SOFTWARE COMPONENTS INTEGRATED INTO PORTABLE SYSTEM

Область техники, к которой относится изобретение
Настоящее изобретение относится к области программных компонентов мобильных систем, в частности мобильных телефонов.
В частности, настоящее изобретение относится к способу администрирования компонентов, включая обращения и межкомпонентные диалоги.
Уровень техники
Сложность резидентного программного обеспечения в мобильных системах, таких как портативные телефоны, фотоаппараты или навигационные системы для автомобилей, невероятно выросла за последнее десятилетие, достигнув уровня, сравнимого с уровнем сложности приборов типа персонального компьютера. Промышленность, в частности, в области производства мобильных телефонов вынуждена быстро внедрять новые устройства, обеспечивающие очень большое число функциональных возможностей на множестве самых разных объединительных платформ. В связи с таким повышением сложности мобильные системы должны сегодня отвечать техническим требованиям, объединяющим одновременно требования гибкости, открытия (через дистанционную загрузку или путем добавления вспомогательных устройств или разрядных матриц памяти), стоимости, быстроты разработки и внедрения, надежности и даже безопасности. Обеспечение выполнения этих требований реализуется, в частности, на уровне программного обеспечения таких систем.
В связи с этими требованиями совершенно очевидно, что задачи, с которыми сталкивается промышленность в области создания программного обеспечения, уже не связаны в основном с проблематикой разработки (поскольку та или иная программа обеспечивает более или менее сложные используемые заданные функции), а скорее с проблематикой интеграции и подтверждения надежности (программных компонентов различного происхождения), как это было при производстве аппаратных средств в течение последнего десятилетия. Задачей настоящего изобретения является облегчение проблемы интеграции и обеспечения надежности сложных мобильных систем за счет внедрения технологии, позволяющей изолировать программные части путем их трансформации в независимые компоненты, сохраняя при этом на уровне системы характеристики, эквивалентные характеристикам, обеспечиваемым использовавшимися до сих пор технологиями. При этом ставится также задача обеспечения возможности внесения в созданную таким образом систему дополнений или корректировок уже после выпуска в продажу приборов.
Согласно предшествующему уровню техники программное обеспечение в мобильных системах обычно представляет собой программные уровни, которые в случае наиболее продвинутых систем имеют приоритет доступа к процессору или к специфическим ресурсам системы. Внутриуровневая или межуровневая связь осуществляется процедурно (обращение к функции). Что же касается окончательного вида программного обеспечения, то его получают после фазы пошаговой компиляции и редактирования связей во всем комплексе, как показано на фиг.1, где три кода обозначены позициями 1, 2 и 3 и где окончательную структуру получают в результате редактирования связей кодов 1, 2 и 3 сразу после введения в память в готовом для исполнения процессором виде.
Преимуществом такого типа разработки является создание очень эффективных систем с точки зрения использования ресурсов и скорости. Тем не менее, они объединяют определенное число задач, администрирование которыми становится все более трудным с возрастанием сложности системы. В частности, можно указать задачи тестирования и развертывания по отдельным частям, переноса на другие объединительные платформы, актуализации, стабильности, гибкости и т.д.
Согласно предшествующему уровню техники для решения этих задач большинство разработчиков мобильных систем взяли на вооружение подход, называемый «компонентным» и используемый для гораздо более крупных и сложных систем (в частности, на уровне серверов) с намного более старыми объединительными платформами. Там, где это было возможно, процедурные обращения заменили обменом сообщений через операционную систему (в дальнейшем называемую ОС), как показано на фиг.2, где три кода обозначены позициями 1, 2 и 3 и где почтовые ящики 7 получают сообщения 5, посылаемые различными кодами с использованием маршрутизатора 6, и управляются ОС. Это позволяет лучше разделять контролируемым способом обмены между программными объектами. Тем не менее, учитывая громоздкость такого механизма (с точки зрения развертывания и потребности в ресурсах), его используют только частично, при этом процедурные обращения остаются наиболее распространенными в таких системах, ограничивая, таким образом, возможность подхода, так как по-прежнему сохраняются ранее указанные недостатки.
В области мобильных компонентов из патентной заявки РСТ WO 03/009137 известен способ интеграции программных компонентов для мобильных систем. В нем независимым образом создают модули при помощи «администратора», удостоверяющегося, что модуль содержит все другие необходимые для него модули, перед тем, как подать команду на исполнение.
Однако в этой заявке не упоминается об обеспечении эффективной связи между компонентами для лучшего использования ресурсов.
Сущность изобретения
Задачей настоящего изобретения является устранение недостатков известных решений путем разработки связи между программными объектами, столь же эффективной, как и процедурные обращения, позволяя при этом данным программным объектам действовать как полностью независимые программные компоненты.
В связи с этим настоящее изобретение касается вышеописанного способа, и в более широком понимании задачи его объектом является способ администрирования мобильной системы, содержащей:
- по меньшей мере, один оригинальный код, ассоциированный с компьютерным устройством;
- по меньшей мере, один мобильный код, ассоциированный с указанной мобильной системой;
- по меньшей мере, один процессор, ассоциированный с указанной мобильной системой,
отличающегося тем, что содержит следующие этапы:
- создание, по меньшей мере, одного автономного компонента программного обеспечения, во время которого:
- указанный оригинальный код анализируют для идентификации целевых функций, вызываемых указанным оригинальным кодом и не введенных в указанный оригинальный код;
- для каждой из указанных не введенных функций определяют соответствующий идентификатор функции;
- заменяют обращения к указанным не введенным функциям обращением, по меньшей мере, к одной введенной функции коммутации PLUG, вызываемой указанным мобильным кодом;
- выполнение указанного компонента на мобильной системе, при этом указанная функция коммутации PLUG управляет переключением процессора на адрес не введенной целевой функции, соответствующий указанному идентификатору функции.
Предпочтительно способ содержит следующие дополнительные этапы:
- при создании автономного программного компонента:
- анализируют указанный оригинальный код для идентификации вызываемых целевых функций, параметром которого является адрес оригинальной функции, определенной в компоненте;
- так называемый параметр обратного вызова заменяют обращением к специфической функции;
- осуществляют автоматическое генерирование указанной ассоциированной специфической функции, предоставляющей идентификатор указанной оригинальной функции и вызывающей, по меньшей мере, одну введенную функцию коммутации PLUG при помощи мобильного кода.
Предпочтительно способ содержит следующие дополнительные этапы:
- при создании автономного программного компонента:
- анализируют указанный оригинальный код для идентификации любых данных, не определенных в оригинальном коде и необходимых для выполнения компонента;
- список этих недостающих данных добавляют в указанный компонент во время его генерирования;
- при выполнении указанного компонента код указанного компонента изменяют, как только система может предоставить первоначально отсутствующие данные, чтобы указанный компонент можно было выполнить на указанной мобильной системе.
Предпочтительно указанный компонент выполняют резидентным на указанной мобильной системе.
Предпочтительно указанный компонент загружают дистанционно при помощи указанного мобильного кода.
Предпочтительно в момент создания указанный компонент имеет зашифрованный вид.
В этом случае способ дополнительно содержит этап расшифровки указанного компонента.
Предпочтительно указанный компонент заменяют другим компонентом, выполняющим ту же функцию.
Предпочтительно при выполнении указанный компонент размещают в области памяти мобильной системы, отличающейся от области памяти, в которой он находился первоначально до введения в указанную исполнительную область памяти.
Предпочтительно указанная исполнительная область памяти является доступной для указанного процессора и обладает специфическими свойствами с точки зрения скорости исполнения, потребления и доступности применительно к правам доступа.
Предпочтительно указанная функция коммутации PLUG включает в себя функцию визуализации различных вызовов, обрабатываемых вместе с соответствующими параметрами.
Кроме того, указанная функция коммутации PLUG включает в себя функцию регистрационной записи различных обрабатываемых вызовов вместе с соответствующими параметрами.
В этом случае указанные записи вызовов включают в себя, по меньшей мере, одну дополнительную информацию для каждого из указанных вызовов (информация о времени, о контексте исполнения, об использовании памяти).
Предпочтительно указанные записи вызовов, связанных с компонентом, используют для автономного моделирования указанного компонента.
Предпочтительно указанные записи вызовов, связанных с компонентом, используют для обнаружения ошибок в мобильном коде.
В этом случае указанные записи обнаружения ошибок передают на другой информативный ресурс, осуществляющий анализ ошибок, сразу же после обнаружения ошибки.
Предпочтительно идентификаторы невведенных целевых функций являются параметрами функции коммутации PLUG.
Предпочтительно способ не содержит никаких операций копирования параметров невведенных целевых функций.
Предпочтительно идентификатор невведенной функции вводят в стек процессора до обращения к функции коммутации PLUG, при этом введенный таким образом идентификатор затем используется указанной функцией коммутации для исполнения команды переключения на функцию, соответствующую указанному идентификатору.
Предпочтительно идентификатор невведенной функции вводят в регистр процессора до обращения к функции коммутации PLUG, при этом введенный таким образом идентификатор затем используется указанной функцией коммутации для переключения на функцию, соответствующую указанному идентификатору.
Согласно варианту осуществления целевые функции вводят на другой процессор мобильного устройства.
Согласно другому варианту осуществления целевые функции вводят на другой информативный ресурс, отличный от указанной мобильной системы.
Предпочтительно указанная функция коммутации PLUG реализует набор специфических операций, связанных с вызываемой целевой функцией, при этом набор операций по каждой целевой функции определяют заранее и вводят в запоминающее устройство мобильной системы.
Например, указанный набор специфических операций содержит переход от одного контекста процессора к другому, установку и выполнение другого компонента, извещение одного или нескольких компонентов об обращении к целевой функции, извещение пользователя мобильной системы или извещение другого информативного ресурса.
Предпочтительно указанный набор операций является динамически изменяемым.
Предпочтительно указанная функция коммутации PLUG дополнительно реализует этап генерирования специфической операции в случае, когда целевая функция соответствует идентификатору недоступной функции.
В этом случае указанную специфическую операцию определяют по атрибуту идентификатора недоступной функции.
Предпочтительно указанная функция коммутации PLUG дополнительно реализует этап проверки прав компонента на обращение к целевой функции.
В этом случае указанную проверку осуществляют при помощи таблицы прав доступа, показывающей, какой из компонентов может вызвать соответствующую функцию.
Предпочтительно указанная таблица прав доступа может изменяться конечным пользователем.
Предпочтительно указанную таблицу можно изменять дистанционно при помощи другого информативного ресурса.
Предпочтительно в случае, когда указанная целевая функция, соответствующая идентификатору оригинальной функции, не доступна, указанная функция коммутации PLUG подает команду на операцию поиска эквивалентной функции, реализующей те же функциональные возможности, но в формате, отличном от формата целевой функции, и на операцию исполнения указанной эквивалентной функции.
Предпочтительно в случае, когда указанная целевая функция, соответствующая идентификатору функции, на доступна, указанная функция коммутации PLUG подает команду на операцию локализации информативного ресурса, соответствующего указанной отсутствующей функции, и на исполнение функции, найденной в результате указанного поиска.
Кроме того, указанные идентификаторы целевой функции содержат первую информацию, соответствующую программному компоненту, обеспечивающему указанную целевую функцию, и вторую информацию, соответствующую номеру целевой функции в указанном компоненте.
Предпочтительно функцию коммутации PLUG реализуют при помощи, по меньшей мере, одной таблицы соответствия между идентификатором целевой функции и адресом целевой функции.
Кроме того, указанная таблица соответствия подразделена на первую таблицу соответствия между указанной информацией, соответствующей программному компоненту, и компонентом, обеспечивающим указанную целевую функцию, и, для каждого из указанных компонентов, вторую таблицу соответствия между указанным номером функции и адресом указанной целевой функции в соответствующем компоненте.
Предпочтительно указанные вторые таблицы генерируют во время создания компонента.
Предпочтительно указанную первую таблицу записывают в постоянную память.
Предпочтительно, и это является отличительным признаком, указанные вторые таблицы записывают в оперативную память.
Предпочтительно инсталляция указанного компонента требует наличия предварительного разрешения.
Предпочтительно выполнение указанного компонента требует наличия предварительного разрешения.
Кроме того, предварительное разрешение требует установления соответствия между ключом мобильной системы (системный ключ) и ключом предназначенного к выполнению компонента (компонентный ключ), при этом системный ключ может быть вычислен на основании информации, определяющей исключительно указанную мобильную систему.
Кроме того, когда мобильная система должна выполнить компонент, на другой информативный ресурс направляется извещение, и в результате этого извещения этот другой информативный ресурс передает на мобильную систему разрешение или запрет на выполнение указанного компонента.
Предпочтительно в ответ на указанное извещение указанный другой информативный ресурс передает на мобильную систему разрешение или запрет на выполнение указанного компонента.
Кроме того, разрешение, передаваемое другим информативным ресурсом, включает в себя ключ (внешний ключ), который образует комбинацию с компонентным ключом и системным ключом для разрешения выполнения указанного компонента на мобильной системе.
Предпочтительно разрешение, передаваемое другим информативным ресурсом, связано с нормальным завершением финансовой транзакции на уровне другого информативного ресурса.
Предпочтительно указанные внешние ключи хранятся под защитой в мобильной системе до ее выпуска в коммерческую сеть, возможно, после завершения финансовой транзакции.
Предпочтительно указанные внешние ключи находятся под защитой в мобильной системе в результате финансовой транзакции.
Кроме того, указанный компонент включает в себя, по меньшей мере, одну качественно-сервисную информацию.
Предпочтительно указанная качественно-сервисная информация используется мобильной системой для выделения ресурсов перед выполнением указанного компонента.
Предпочтительно указанная качественно-сервисная информация представляет собой потребность компонента в оперативной памяти для его нормального функционирования, включая информацию о минимальной потребности, информацию о средней потребности и информацию об оптимальной потребности для его функционирования, список других компонентов (ассоциированные компоненты), необходимых указанному компоненту для его функционирования, информацию о номере версии, необходимую для ассоциированного компонента.
Предпочтительно мобильная система не запускает выполнение компонента, если ассоциированные компоненты не отвечают на номер версии, предъявленный указанным компонентом.
Согласно другом варианту осуществления мобильная система не запускает выполнение компонента, если ассоциированные компоненты не отвечают на номер версии, более высокий, чем номер, предъявленный указанным компонентом.
Предпочтительно указанная качественно-сервисная информация представляет собой потребность указанного компонента в процессорной мощности.
Кроме того, мобильная система изменяет частоту процессора мобильной системы в зависимости от указанной потребности в процессорной мощности.
Кроме того, указанная мобильная система принимает решение, на каком информативном ресурсе осуществлять выполнение указанного компонента, в зависимости от ресурсов, имеющихся в наличии на разных информативных ресурсах.
Предпочтительно указанная мобильная система принимает решение о выполнении компонента на том или другом из своих информативных ресурсов в зависимости от доступности процессора каждого информативного ресурса.
Предпочтительно указанная мобильная система принимает решение о выполнении компонента на том или другом из своих информативных ресурсов для минимизации потребительской мощности мобильной системы.
Согласно варианту осуществления, если мобильная система не может гарантировать потребности, выражаемые компонентом, по меньшей мере, в одной качественно-сервисной информации, то мобильная система не разрешает выполнение указанного компонента.
Предпочтительно указанный компонент включает в себя, по меньшей мере, одну информацию, позволяющую специфицировать функциональные возможности, реализуемые указанным компонентом (название компонента, версия, списки обеспечиваемых компонентом функций и т.д.).
Кроме того, мобильная система выполнена с возможностью предоставления списка компонентов, доступных на указанной мобильной системе, а также данных о компонентах, ассоциированных с другим информативным ресурсом, при условии введения предварительного запроса.
Предпочтительно полный код, предназначенный для выполнения указанной мобильной системой, разлагается на компоненты для минимизации целевых функций, не введенных указанным компонентом.
Кроме того, разложение первоначальной системы на компоненты осуществляют, соотнося размер компонентов с возможностью их последующего изменения.
Объектом настоящего изобретения является также мобильная система, содержащая, по меньшей мере, один процессор, отличающаяся тем, что указанный процессор реализует этапы заявленного способа.
Объектом настоящего изобретения является также мобильная система, содержащая, по меньшей мере, один процессор, отличающаяся тем, что компоненты, включенные в запоминающие устройства, получают при помощи заявленного способа.
Краткое описание чертежей
Настоящее изобретение будет более очевидно из нижеследующего описания варианта его осуществления, представленного исключительно в качестве информации, со ссылками на прилагаемые фигуры:
Фиг.1 иллюстрирует вариант администрирования различных кодов согласно предшествующему уровню техники и принцип редактирования связей.
Фиг.2 иллюстрирует вариант администрирования различных кодов согласно предшествующему уровню техники и систему сообщений.
Фиг.3 иллюстрирует вариант администрирования компонентов в соответствии с настоящим изобретением.
Фиг.4 - общий вид структуры компонента в соответствии с настоящим изобретением.
Фиг.5 иллюстрирует основные состояния компонентов в соответствии с настоящим изобретением.
Фиг.6 - архитектура процессора в соответствии с настоящим изобретением.
Фиг.7 иллюстрирует принцип переключения при помощи PROXY или PLUG.
Подробное описание изобретения
В соответствии с настоящим изобретением, как показано на фиг.3, администрирование трех кодов 1, 2 и 3 может осуществляться новым способом при помощи элементов, обозначенных на фигуре:
34: Объект, обеспечивающий коммутацию и управление различными связями (PLUG) между компонентами.
35: База данных, содержащая информацию о различных компонентах.
36: Программа-администратор, обеспечивающая активацию и дезактивацию различных компонентов.
37: Процедурное обращение, переадресуемое на PLUG программного процессора.
Исходя из этой фигуры основной принцип настоящего изобретения можно представить следующим образом:
- стандартный исходный код (компилируемый автономно) автоматически обрабатывается (предобработка), чтобы заменить все варианты использования ресурсов, внешних по отношению к этому первичному коду, на:
- переключение процессора на единственный для каждого компонента вход кода, называемый PROXY или PLUG. Значение этого единственного входа впоследствии может быть изменено во время активации компонента на мобильной системе.
- введение перед этим переключением в контекст процессора информации, позволяющей определить запрашиваемый внешний ресурс (например, номер запрашиваемого компонента и соответствующую услугу).
Компиляция и редактирование связей генерируемого таким образом кода может происходить автономно. Во время этой фазы предварительной обработки к коду добавляют определенное количество дополнительных данных, которые с ним соединяются, образуя то, что называют компонентом, в частности, данных по прототипам услуг, поставляемых компонентом. Таким образом, компонент может поддерживать связь с остальной частью системы только через PLUG.
Мобильная система содержит процессор, который позволяет активировать компоненты, сохраняя информацию об обеспечиваемых ими услугах, и, самое главное, позволяет поддерживать между ними связь через PLUG. PLUG является программной частью, которая в стандартном режиме при помощи нескольких команд процессора получает информацию о целевой функции, запрашиваемой компонентом, и «переводит» процессор непосредственно на местоположение кода, где находится эта функция (услуга).
Благодаря этому механизму программные объекты оказываются полностью изолированными от остальной части системы через PLUG. В зависимости от конфигурации системы и соответствующих требований PLUG может добавлять функциональные возможности по управлению потоками связи, переключениями (между разными процессорами или между компонентами разного назначения или разных приоритетов), заменой компонентов, переводом с одного языка на другой, по переходу к другому исполнительному объекту (к другой задаче процессора, к другой области памяти, к другому процессору, микросхеме, сети, вспомогательным устройствам).
Таким образом, данная технология позволяет получить все преимущества, связанные с применением компонентной концепции (легкость переноса, тестирования, обслуживания, стабильность, безопасность, гибкость конфигурации программного обеспечения, гибкость на уровне архитектуры аппаратных средств и т.д.), без каких-либо потерь с точки зрения эффективности и без какого-либо компромисса на уровне разработки. С другой стороны, поскольку генерирование программных компонентов осуществляется независимым образом, то их можно заменять, модифицировать, усовершенствовать или дополнять без какого-либо ущерба для остальной части системы. При данном подходе разложение на такие компоненты можно, например, оптимизировать путем сведения к минимуму числа невведенных целевых функций или установления соответствия между размером компонента и возможностью его модифицирования.
В результате такая технология позволяет, например, заменять один компонент другим выполняющим такую же функцию компонентом или присваивать права компонентам, непосредственно управляемым функцией PLUG, чтобы знать, какой из компонентов может вызывать соответствующий другой компонент.
PLUG может также выполняться таким образом, чтобы позволять определять и, в случае необходимости, регистрировать обрабатываемые ею обращения вместе с различными соответствующими параметрами. Такая система регистрации позволяет в этом случае моделировать компонент, ассимилируя его с реализованными обращениями к функциям, например, чтобы выявлять возможные ошибки в мобильном коде. Сразу же после обнаружения ошибки, зарегистрированные данные об обнаружении ошибки передаются на другой информативный ресурс, отвечающий за анализ ошибок.
Зарегистрированные данные об обращениях могут также содержать дополнительную информацию по каждому из этих обращений. Эта информация может быть информацией о времени, о контексте выполнения, об использовании памяти или любой другой информацией, необходимой для маршрутизации и администрирования компонентов.
Показанный на фиг.4 программный компонент в соответствии с настоящим изобретением является частью программного обеспечения, генерированной таким образом, чтобы быть при выполнении полностью изолированной от остальной части системы, если только речь не идет об обменах запросами и ответами по услугам с другими компонентами.
Например, в случае компонента, кодированного на языке С (компонент B-Plug), не разрешен никакой обмен, будь то явный (например, через обращение к функции) или неявный (например, с использованием глобальной переменной и т.д.). Этот компонент является независимым и представляет собой однородный блок, включающий информацию и процессорные команды, даже при выполнении.
Средство доступа к услуге компонента называют интерфейсом. Интерфейс может быть, в частности, описан через язык IDL, специально предназначенный для этой цели. В зависимости от типа различных компонентов этот интерфейс вводят при помощи определенного числа функций, методик и т.д.
Например, интерфейс услуг, поставляемых компонентом B-Plug, вводится в виде набора функций С, которые могут быть вызваны (через PLUG) другими компонентами (при условии наделения их соответствующими правами доступа).
Сам механизм обеспечения услуг находится в теле компонента. Тело компонента может использовать услуги других компонентов.
Пример: услуга «аварийный сигнал», генерируемая специальной операцией в определенный, заранее запрограммированный момент. Интерфейс компонента «Аварийный сигнал» позволяет клиенту:
- определить, какую операцию запустить при аварийном сигнале;
- определить, в какой момент необходимо запустить эту операцию. Дополнительно к интерфейсу и к телу компонента во время генерирования компонента в него вводят определенное количество данных. Эти данные впоследствии
используются процессором, работающим в системе.
Так, компонент может содержать, например, следующие данные:
- тип компонента (двоичный (закодированный в С), JAVA, …);
- описание поставляемой услуги;
- список услуг и ресурсов, необходимых для выполнения компонента;
- приоритет, права доступа;
- способ доступа к компоненту (в контексте вызывающего устройства, в контексте компонента и т.д.).
В частности, компонент содержит определенное количество так называемой качественно-сервисной информации, используемой мобильной системой для выделения компоненту ресурсов перед его выполнением. Эта качественно-сервисная информация может представлять собой:
- потребность компонента в оперативной памяти для его функционирования в виде минимальной потребности, средней потребности и оптимальной потребности;
- списки других компонентов (ассоциированных компонентов), необходимых компоненту для его функционирования, а также номера версий этих ассоциированных компонентов. Необходимо отметить, что мобильная система не запускает выполнение компонента, если ассоциированные компоненты не отвечают на номер версии, превышающий или равный номеру, указанному компонентом;
- потребность компонента в процессорной мощности. Необходимо отметить, что, в случае необходимости, мобильная система изменяет частоту процессора мобильной системы в зависимости от потребностей, в частности, в мощности, компонента или ассоциированных компонентов. Она может также принимать решение на выполнение компонента на том или ином информативном ресурсе в зависимости от оперативной доступности ресурсов. Как правило, мобильная система может принимать решение по использованию исполнительных ресурсов, чтобы минимизировать для себя потребление мощности.
Вся эта качественно-сервисная информация и администрирование, осуществляемое мобильной системой, позволяют ей отменять выполнение компонента, если она не может гарантировать потребности, отраженные в качественно-сервисной информации.
Кроме того, компонент включает в себя определенное количество информации (компонентная информация), позволяющей специфицировать функциональные возможности, реализуемые компонентом, (имя компонента, версия, списки функций, обеспечиваемых компонентом и т.д.). Эта компонентная информация, а также список доступных компонентов могут поставляться мобильной системой на другой информативный ресурс при условии наличия предварительного запроса.
Основные состояния компонентов в соответствии с настоящим изобретением показаны на фиг.5.
Этап 51 является этапом дистанционной загрузки, на котором в систему дистанционно загружается компонент.
В этом момент система может генерировать метку для указания определенного числа признаков (в частности, признаков защиты), связанных с компонентом. На этом этапе можно использовать любой тип дистанционной загрузки.
Необходимо отметить, что этот этап дистанционной загрузки не является абсолютно необходимым, так как, естественно, компонент может быть резидентным на мобильной системе.
Во время этапа 52 происходит инсталляция компонента. Осуществляется определенное число операций, обеспечивающих более легкую активацию компонента в дальнейшем. В случае необходимости, во время этой инсталляции компонента или в момент его дистанционной загрузки он может быть в зашифрованном виде в целях обеспечения безопасности. В этом случае этапы выполнения компонента будут включать дополнительно этап дешифрирования.
В частности, инсталляция или выполнение компонента может потребовать предварительного разрешения. В этом случае разрешение предоставляется путем установления соответствия между ключом, содержащимся в мобильной системе (системный ключ), и ключом, содержащимся в выполняемом компоненте (компонентный ключ). Системный ключ может быть, например, вычислен на основании информации, специфицирующей именно данную мобильную систему.
В момент выполнения компонента мобильной системой на другой информативный ресурс направляется извещение. В ответ на это извещение ресурс передает на мобильную систему разрешение или отказ на выполнение компонента.
Разрешения могут, например, быть в виде внешнего ключа, комбинируемого с системным ключом и компонентным ключом. Они могут выдаваться бесплатно или связаны с финансовой транзакцией до или после выпуска мобильной системы в торговую сеть.
На этапе 53, когда часть системы делает запрос на поставляемую компонентом услугу или когда пользователь хочет активировать определенную услугу, происходит активация соответствующего компонента. Выполнение компонента происходит в контейнере, форма которого зависит от типа компонента. PLUG обеспечивает коммутацию различных сервисных обменов между компонентами. PLUG может также соединяться с остаточным кодом, не компилируемым в виде компонента в соответствии с настоящим изобретением.
База данных 54 регистрирует состояния различных компонентов (инсталлируемый, инсталлированный, активированный и т.д.), а также определенное количество другой информации (описание услуг, ассоциированные версии, защитные параметры, локализация услуги и т.д.). Сразу после инсталляции компонент также регистрируется в базе данных своего процессора.
Необходимо отметить, что таблица прав доступа может быть изменена конечным пользователем или дистанционно другим информативным ресурсом.
Во время этапа 55 можно осуществить деинсталляцию компонента или его замену. Эту замену можно производить статично (то есть когда компонент не активирован) или динамично (во время активации).
Кроме того, следует отметить, что во время создания компонента на основе оригинального кода, если параметром целевых функций является адрес функции, определенный в самом компоненте, этот параметр заменяют на обращение к специальной функции, называемой функцией обратного вызова. Эта функция выдает идентификатор первоначальной функции и, как и в предыдущем случае, вызывает функцию коммутации PLUG.
Точно так же, при создании программного компонента идентифицируют любую информацию, не определенную в оригинальном коде и необходимую компоненту для его выполнения. В этом случае такую информацию вводят в компонент во время его генерирования. Как только система может выдавать отсутствовавшую информацию, код компонента может быть изменен, чтобы обеспечить возможность его выполнения.
С программным компонентом могут быть связаны другие компоненты. В частности:
контейнер отвечает за выполнение компонента, причем в одном контейнере могут находиться все компоненты одного и того же типа;
программа копирования является специальным компонентом, позволяющим осуществлять пересылку (копирование) компонента из одного места в другое (например: копирование из одного запоминающего устройства в другое);
программа инициализации отвечает за проверку определенного числа параметров компонента с целью его последующей дистанционной загрузки в систему;
программа-верификатор проверяет целостность компонента, его права и т.д.
Как показано на фиг.6, процессор в соответствии с настоящим изобретением архитектурно состоит из четырех отдельных частей.
Программа дистанционной загрузки отвечает за дистанционную загрузку программного компонента в систему. Она взаимодействует с:
- с любыми транспортными уровнями системы;
- программой инициализации, которая разрешает или запрещает дистанционную загрузку;
- накопителем или накопителями, имеющимися в наличии в системе. Администратор включает в себя программы:
- программу инсталляции: отвечает за инсталляцию или деинсталляцию программных компонентов;
- программу-активатор: отвечает за активацию или дезактивацию компонентов.
База данных предназначена для сбора информации о компонентах, инсталлированных и активированных в системе.
Наконец, PLUG отвечает за связь между различными компонентами. Эта функция будет подробнее описана ниже.
Принцип переадресации при помощи PLUG показан на фиг.7.
Прежде всего, производят инсталляцию компонента в запоминающем устройстве. Часть памяти системы зарезервирована за процессором. Администратор процессора отвечает за инсталляцию компонентов в этой зарезервированной области.
Кроме того, во время своего выполнения компонент размещается в области памяти мобильной системы, отличающейся от области памяти, в которой он находился первоначально, и называющейся исполнительной областью памяти. Эта исполнительная область памяти отличается специфическими признаками с точки зрения скорости выполнения, потребления и доступности, специально адаптированными к компоненту.
Можно также осуществить деинсталляцию компонентов. Таким образом, администратор может осуществлять операции дефрагментации зарезервированной области памяти.
После этого компоненты подключаются к PLUG. Во время генерирования компонента все внешние доступы этого компонента переводятся на единый незначимый адрес (например, 0×FFFFFFF). При инсталляции компоненту присваивается адрес входа в PLUG, который заменит незначимый адрес. Таким образом, любой внешний вызов компонента по сути преобразуется в обращение к адресу входа в PLUG, присвоенному компоненту.
При активации администратор процессора предоставляет таблицу коммутации на PLUG, указывающую, где находятся компоненты и где находятся их данные (в частности, различные услуги, обеспечиваемые каждым компонентом). Когда компонентом запрашивается внешняя услуга, процессор переключается на адрес входа PLUG, связанного с компонентом, при этом два идентификатора или данных были введены за счет генерирования компонента в соответствии с настоящим изобретением: номер требуемого компонента, а также номер требуемой услуги или целевой функции.
Благодаря этим двум данным и данным, предоставляемым администратором, PLUG переключает (через команду типа JUMP, а не CALL, то есть без какого-либо нового обращения к функции и без копирования информации, связанной с запрашиваемой услугой) процессор на место, где находится требуемая услуга. Таким образом, в качестве параметра функция коммутации использует, по меньшей мере, два вышеупомянутых идентификатора, соответствующих невведенным целевым функциям или функциям обратного вызова в исходном компоненте. Эти идентификаторы хранятся в стеке или в регистре процессора, используемом функцией коммутации PLUG для переадресации на соответствующие функции.
Эта функция коммутации PLUG реализуется на основании таблицы соответствия Root Table между идентификатором целевых функций и адресами целевых функций. Реализация осуществляется в виде двух подтаблиц, первая из которых устанавливает соответствие между информацией, связанной с программным компонентом, и компонентом, вводящим целевую функцию, а вторая устанавливает соответствие между номером функции и ее адресом в соответствующем компоненте.
Эти подтаблицы генерируются во время создания компонента и заносятся в постоянную память вместе с кодом компонента, тогда как главная таблица Root Table записывается в оперативную память.
Итак, предположим, что компонент А должен вызвать функцию DrawLine графического компонента 2D.
Во время генерирования компонента обращение к функции DrawLine первоначального кода компонента заменяется вызовом PLUG, с теми же параметрами, что и при вызове DrawLine. Кроме того, вводятся данные требуемого компонента (графический компонент 2D), а также номер требуемой услуги (услуга DrawLine). При выполнении обращение к функции DrawLine по сути заменяется переключением, прежде всего на PLUG, которая, при помощи номера компонента и услуги, сможет переадресовать процессор на функцию DrawLine.
Кроме того, функция коммутации PLUG реализует определенное число операций, зависящих от вызываемой целевой функции. Список операций по каждой целевой функции определяется заранее и хранится в мобильной системе. Этими операциями могут быть, например, переход от одного контекста процессора к другому, инсталляция и выполнение другого компонента, извещение одного или нескольких компонентов об обращении к целевой функции или извещение другого информативного ресурса.
При помощи PLUG, причем как в статичном, так и динамичном режиме, можно:
- перевести поток связи от одного компонента на другой;
- заменить один компонент другим (отлаженным, обновленным или соответствующим другому назначению);
- перевести запрос на услугу с одного языка на другой (в предыдущем примере, PLUG может перевести обращение к функции DrawLine на другой язык и направить этот переведенный запрос на соответствующий компонент);
- переадресовать запрос на другой процессор (например, функция DrawLine может быть обеспечена графическим процессором. В этом случае PLUG соединяют при помощи какого-либо транспортного средства с PLUG на графическом процессоре, и между двумя PLUG могут кодонезависимо передаваться запросы на услуги и ответы) в мобильной системе или за пределами мобильной системы.
Отметим, что в случае динамичного администрирования изменения могут быть связаны, например, с указанием другого информативного ресурса или пользователя мобильной системы в виде конфигурации.
Кроме того, если вызываемый при помощи PLUG компонент не доступен, то PLUG генерирует специфическую операцию, определяемую идентификатором недоступного компонента. Этими операциями может быть создание сигнала тревоги или поиск компонента, реализующего такую же функцию, в таком же формате или в формате, отличающемся от формата первоначальной целевой функции.
Следует отметить, что связь между компонентами может осуществляться по любому транспортному уровню (transport layer). Транспортным уровнем может быть радиосвязь в случае мобильного телефона (в этом случае один компонент может находиться в сети на уровне оператора, а другой - в мобильном телефоне) или связь типа Bluetooth, позволяющая:
- управлять зоной Personal Area Network (например, дисплей находится на другом приборе, связанном с телефоном через радиосвязь типа Bluetooth);
- управлять правами доступа между различными компонентами;
- вводить фактор видимости, отслеживая все связи, установленные через PLUG, с целью облегчения развертывания;
- переадресовать часть связей для эмуляции соответствующих услуг на эмулятор типа PC;
- или реализовать любое другое действие с учетом того, что всем потоком связи, проходящим между компонентом и остальной частью системы, можно легко манипулировать на уровне PLUG.
Отметим, наконец, что разложение на компоненты в соответствии с настоящим изобретением можно также применять в немобильной системе, если она моделирует мобильную систему.
Описание настоящего изобретения представлено в качестве примера. Само собой разумеется, что специалист может осуществлять различные варианты изобретения, не выходя при этом за рамки патента.