Способ, устройство и носитель информации для динамического внесения изменений в функцию
METHOD, DEVICE AND MEDIA OF INFORMATION FOR DYNAMIC CHANGE IN FUNCTION

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение относится к области связи, и, в частности, к способу, устройству и носителю информации для динамического обновления функции патчами.
УРОВЕНЬ ТЕХНИКИ
Программные патчи, как правило, представляют собой независимые единицы программного обеспечения, которые выпускаются с целью изменения некоторых функций существующей системы программного обеспечения или исправления некоторых ошибок существующей системы программного обеспечения. Технология динамического обновления программного обеспечения патчами может полностью восстановить функции системы или устранить ошибки, не оказывая влияния на нормальную работу системы; при этом выполняемая в данный момент в существующей системе функция обычно заменяется корректирующей функцией и, следовательно, изменяются параметры данной функции.
Хотя технология динамического обновления патчами имеет множество решений для реализации, во встроенной системе технология главным образом состоит из следующих ключевых шагов.
1) корректирующая функция funcA перезаписывается и компилируется на резервном сервере (как правило, персональный компьютер), при этом создается патч-файл fileB;
2) патч-файл fileB загружается в рабочий целевой компьютер;
3) модуль службы обновления в рабочем целевом компьютере анализирует патч-файл и получает адреса корректирующей функции funcA и корректируемой функции funcC в памяти; и
4) начальные команды корректируемой функции funcC заменяются на команды перехода, по которым осуществляется переход к корректирующей функции funcA.
Таким образом, при вызове функции funcC начальная команда функции funcC, являясь командой перехода, обеспечивает непосредственный переход к выполнению функции funcA, а затем осуществляется непосредственный возврат к следующей команде функции funcC, благодаря чему достигается цель замены функции funcC функцией funcA.
Если относительное адресное расстояние между корректирующей функцией funcA и корректируемой функцией funcC в памяти мало и не превышает диапазон адресов короткого перехода, динамическое обновление патчами может быть реализовано с помощью короткого перехода. Однако, когда по мере постепенного увеличения объема программного обеспечения размеры кодового сегмента и сегмента данных файла соответствия версии выходят за границы адресного диапазона короткого перехода и когда относительное расстояние между корректирующей функцией и корректируемой функцией в памяти также превышает адресный диапазон короткого перехода, динамическое обновление патчами не может быть реализовано с помощью короткого перехода.
При традиционном подходе команды длинного перехода могут выполняться с помощью, по меньшей мере, трех команд; если начальные команды корректируемой функции заменяются командами длинного перехода, то заменяются, по меньше мере, три первые начальные команды корректируемой функции, и ситуация может выглядеть следующим образом:
1) если указатель программного счетчика (далее ПС) задачи А указывает на вторую или третью начальную команду корректируемой функции, то при следующем запуске задачи А может возникнуть непредсказуемый результат; 2) если указатель ПС задачи В указывает на первую начальную команду корректируемой функции, то при следующем запуске задачи В может быть нормально выполнена корректирующая функция; и 3) если указатель ПС задачи С указывает на неизмененную команду корректируемой функции, то при следующем запуске задачи С может быть нормально выполнена корректируемая функция.
С учетом вышесказанного можно утверждать, что в рамках существующей технологии отсутствует способ, позволяющий обеспечить нормальную работу измененной системы после замены начальных команд корректируемой функции командами длинного перехода.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Варианты осуществления настоящего изобретения обеспечивают способ и устройство для динамического обновления функции патчами, используемые для решения проблемы возможной неработоспособности измененной системы после замены начальных команд корректируемой функции командами длинного перехода.
Для решения данной технической задачи вариантом осуществления настоящего изобретения обеспечивается, с одной стороны, способ динамического обновления функции патчами, предусматривающий следующие действия: вместо N начальных команд длинного перехода измененной корректируемой функции восстанавливаются исходные команды корректируемой функции в соответствии с предустановленным тегом выполняемой в настоящее время задачи, при этом N - целое, большее или равное 3; когда выполняемая в настоящее время задача завершается, N исходных начальных команд преобразуются в команды длинного перехода для динамического обновления функции патчами.
Предпочтительно, чтобы перед тем, как вместо N начальных команд длинного перехода измененной корректируемой функции восстанавливаются исходные команды корректируемой функции в соответствии с предустановленным тегом выполняемой в настоящее время задачи, способ мог дополнительно предусматривать следующие действия: все задачи в системе анализируются на предмет определения подлежащих изменению задач, при этом подлежащими изменению задачами могут быть задачи, указатели ПС которых указывают на одну из N начальных команд корректируемой функции, а позиции N команд могут использоваться для записи команд длинного перехода измененной корректируемой функции; подлежащие изменению задачи снабжаются тегами для определения типов всех текущих задач.
Предпочтительно, чтобы после установки тегов для подлежащих изменению задач способ мог дополнительно предусматривать следующие действия: с учетом того что любая задача среди всех задач должна запускаться заново, принимается решение о том, установлен ли тег, указывающий на необходимость выполнения задачи в текущий момент; и при условии что установлен тег, указывающий на необходимость выполнения задачи в текущий момент, вместо N начальных команд длинного перехода корректируемой функции восстанавливаются исходные команды корректируемой функции.
Предпочтительно, чтобы способ мог дополнительно предусматривать следующие действия: когда выполняемая в данный момент задача близка к завершению, принимается решение о том, установлен ли для текущий задачи тег; если для текущей задачи тег установлен, принимается решение о том, указывает ли по-прежнему указатель ПС задачи на одну из N начальных команд корректируемой функции; если указатель ПС указывает на одну из N команд, N исходных начальных команд корректируемой функции восстанавливаются вместо команд длинного перехода корректируемой функции; если указатель ПС не указывает на одну из N команд, тег завершающейся текущей задачи удаляется, а затем N исходных начальных команд корректируемой функции восстанавливаются вместо команд длинного перехода корректируемой функции; если для текущей задачи тег не установлен, происходит переход к задаче, которая должна выполняться следующей.
Предпочтительно, чтобы после того, как все выполняющиеся задачи в системе будут проанализированы с целью определения подлежащих изменению задач, способ мог дополнительно предусматривать следующие действия: N исходных начальных команд корректируемой функции преобразовываются в команды длинного перехода, а исходные команды сохраняются в резервной памяти.
С другой стороны, вариантом осуществления настоящего изобретения обеспечивается устройство для динамического обновления функции патчами, состоящее из следующих компонентов: восстанавливающий модуль, сконфигурированный для восстановления исходных команд корректируемой функции вместо N начальных команд длинного перехода измененной корректируемой функции в соответствии с предустановленным тегом выполняемой в настоящее время задачи, при этом N - целое, большее или равное 3; и первый преобразующий модуль, сконфигурированный для преобразования N исходных начальных команд в команды длинного перехода для динамического обновления функции патчами, когда выполняемая в настоящее время задача завершается.
Предпочтительно, чтобы устройство могло дополнительно содержать следующие компоненты: определяющий модуль, сконфигурированный для анализа всех задач в системе на предмет определения подлежащих изменению задач, при этом подлежащими изменению задачами могут быть задачи, указатели ПС которых указывают на одну из N начальных команд корректируемой функции, а позиции N команд могут использоваться для записи команд длинного перехода измененной корректируемой функции; и устанавливающий теги модуль, сконфигурированный для установки тегов на подлежащие изменению задачи для определения типов всех задач.
Предпочтительно, чтобы устройство могло дополнительно содержать следующие компоненты: первый решающий модуль, сконфигурированный для принятия решения о том, установлен ли тег, указывающий на необходимость выполнения задачи в текущий момент, с учетом того, что любая задача среди всех задач должна запускаться заново; и восстанавливающий модуль, сконфигурированный дополнительно для восстановления исходных команд корректируемой функции вместо N начальных команд длинного перехода корректируемой функции, при условии что установлен тег, указывающий на необходимость выполнения задачи в текущий момент.
Предпочтительно, чтобы устройство могло дополнительно содержать следующие компоненты: второй решающий модуль, сконфигурированный для принятия решения о том, установлен ли для текущий задачи тег, когда выполняемая в данный момент задача должна завершаться, и дополнительно сконфигурированный для определения того, указывает ли по-прежнему указатель ПС задачи на одну из N начальных команд корректируемой функции, если для текущей задачи тег установлен; восстанавливающий модуль, дополнительно сконфигурированный для восстановления N исходных начальных команд корректируемой функции вместо команд длинного перехода корректируемой функции, если указатель ПС указывает на одну из N команд; устанавливающий теги модуль, дополнительно сконфигурированный для удаления тега завершающейся текущей задачи, если указатель ПС не указывает на одну из N команд, а затем включения восстанавливающего модуля для восстановления N исходных начальных команд корректируемой функции вместо команд длинного перехода корректируемой функции; и переходный модуль, сконфигурированный для перехода к задаче, которая должна выполняться следующей, если для текущей задачи тег не установлен.
Предпочтительно, чтобы устройство могло дополнительно содержать следующие компоненты: второй преобразующий модуль, сконфигурированный для преобразования N исходных начальных команд корректируемой функции в команды длинного перехода и резервирования исходных команд.
Вариант осуществления настоящего изобретения дополнительно обеспечивает носитель информации. На носителе информации может храниться компьютерная программа, которая может быть сконфигурирована для выполнения способа динамического обновления функции патчами.
Согласно вариантам осуществления настоящего изобретения вместо N начальных команд длинного перехода измененной корректируемой функции восстанавливаются исходные команды корректируемой функции, после чего, когда выполнение текущей задачи завершается, первые N исходных начальных команд преобразуются в команды длинного перехода для того, чтобы выполнилась замена корректируемой функции, таким образом реализуется динамическое обновление функции патчами и решается проблема возможной неработоспособности измененной системы после замены начальных команд корректируемой функции командами длинного перехода.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
На фиг. 1 показана блок-схема способа динамического обновления функции патчами в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 2 показана первая схема устройства для динамического обновления функции патчами в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 3 показана вторая схема устройства для динамического обновления функции патчами в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 4 показана третья схема устройства для динамического обновления функции патчами в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 5 показана четвертая схема устройства для динамического обновления функции патчами в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 6 показана пятая схема устройства для динамического обновления функции патчами в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 7 показана блок-схема инициализации динамического обновления функции патчами в соответствии с вариантом осуществления настоящего изобретения; и
На фиг. 8 показана блок-схема работы функции перехвата для переключения от задачи А к задаче В в соответствии с вариантом осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Для решения проблемы современной технологии, когда возможна неработоспособность измененной системы после замены начальных команд корректируемой функции командами длинного перехода, настоящее изобретение обеспечивают способ и устройство для динамического обновления функции патчами. Далее приводится подробное описание настоящего изобретения со ссылками на прилагаемые чертежи и варианты осуществления. Следует иметь в виду, что представленные здесь варианты осуществления используются только для иллюстрации настоящего изобретения и не ограничивают настоящее изобретение.
Вариант осуществления настоящего изобретения обеспечивает способ динамического обновления функции патчами. На фиг. 1 показана блок-схема способа, содержащего шаги с S102 по S104.
Шаг S102: вместо N начальных команд длинного перехода измененной корректируемой функции восстанавливаются исходные команды корректируемой функции в соответствии с предустановленным тегом выполняемой в данный момент задачи, где N - целое, большее или равное 3.
При реализации значение N определяется в зависимости от фактического числа команд длинного перехода, и когда вызывается текущая задача, вместо N начальных команд длинного перехода корректируемой функции восстанавливаются исходные команды корректируемой функции для того, чтобы исходная программа могла выполняться обычным образом.
Шаг S104: когда завершается выполняемая в данный момент задача, первые N исходных начальных команд преобразуются в команды длинного перехода для динамического обновления функции патчами.
После того как первые N исходных начальных команд вновь преобразуются в команды длинного перехода, замена для корректируемой функции выполнена, динамическое обновление функции патчами реализовано и проблема возможной неработоспособности измененной системы после замены начальных команд корректируемой функции командами длинного перехода решена.
Перед тем как вместо N начальных команд длинного перехода измененной корректируемой функции восстанавливаются исходные команды корректируемой функции в соответствии с предустановленным тегом выполняемой в данный момент задачи, все задачи в системе могут анализироваться для того, чтобы определить, какие задачи являются подлежащими изменению задачами, при этом подлежащими изменению задачами являются задачи, в которых указатели ПС указывают на одну из N начальных команд корректируемой функции; после того как подлежащие изменению задачи определены, для них устанавливаются теги с целью облегчения идентификации этих задач в последующей процедуре. Например, подлежащие изменению задачи имеют тег 1, поэтому в последующей процедуре реализации подлежащие изменению задачи могут быть определены при обнаружении задач с тегом 1.
После того как все работающие в системе задачи проанализированы на предмет определения подлежащих изменению задач, N исходных начальных команд корректируемой функции могут быть непосредственно преобразованы в команды длинного перехода, а исходные команды сохранены в резервной памяти для того, чтобы завершить изменение корректируемой функции; затем регистрируется функция перехвата задач, сгенерированная функция перехвата задач может вызываться операционной системой при переключении задач, исходные команды корректируемой функции временно сохраняются, что необходимо при вызове функции перехвата задач, функция перехвата задач здесь подробно не описывается, специалисты в данной области могут самостоятельно разработать данную функцию в соответствии с описанным здесь вариантом осуществления.
В процессе реализации принимается решение о том, установлен ли тег, указывающий на необходимость выполнения задачи в текущий момент с учетом того, что любая задача среди всех задач должна запускаться заново. Если установлен тег, указывающий на необходимость выполнения задачи в текущий момент, вместо N начальных команд длинного перехода корректируемой функции восстанавливаются исходные команды корректируемой функции. Если тег, указывающий на необходимость выполнения задачи в текущий момент, не установлен, программа работает в обычном режиме.
Когда выполняемая в данный момент задача должна завершаться, принимается решение о том, установлен ли для текущий задачи тег; если для текущей задачи тег установлен, принимается решение о том, указывает ли по-прежнему указатель ПС задачи на одну из N начальных команд корректируемой функции; если указатель ПС указывает на одну из N команд, что говорит о возможности возникновения проблемы при новом запуске задачи, N исходных начальных команд корректируемой функции восстанавливаются вместо команд длинного перехода корректируемой функции; если указатель ПС не указывает на одну из N команд, что говорит об отсутствии проблемы при новом запуске задачи, тег завершающейся текущей задачи удаляется, а затем N исходных начальных команд корректируемой функции восстанавливаются вместо команд длинного перехода корректируемой функции; если для текущей задачи тег не установлен, происходит переход к задаче, которая должна выполняться следующей.
Вариантом осуществления настоящего изобретения обеспечивается устройство для динамического обновления функции патчами. На фиг. 2 показана схема устройства, состоящего из следующих компонентов: восстанавливающий модуль 10, сконфигурированный для восстановления исходных команд корректируемой функции вместо N начальных команд длинного перехода измененной корректируемой функции в соответствии с предустановленным тегом выполняемой в настоящее время задачи, при этом N - целое, большее или равное 3; и первый преобразующий модуль 12, связанный с восстанавливающим модулем 10 и сконфигурированный для преобразования первых N исходных начальных команд в команды длинного перехода для динамического обновления функции патчами, когда выполняемая в настоящее время задача завершается.
На фиг. 3 показана предпочтительная структура устройства. С учетом схемы на фиг. 2 устройство содержит следующие дополнительные компоненты: определяющий модуль 14, сконфигурированный для анализа всех задач в системе на предмет определения подлежащих изменению задач, при этом подлежащими изменению задачами являются задачи, указатели ПС которых указывают на одну из N начальных команд корректируемой функции, а позиции N команд сконфигурированы для записи команд длинного перехода измененной корректируемой функции; и устанавливающий теги модуль 16, связанный с определяющим модулем 14 и восстанавливающим модулем 10 и сконфигурированный для установки тегов на подлежащие изменению задачи для определения типов всех текущих задач.
На фиг. 4 показана другая предпочтительная структура устройства. С учетом схемы на фиг. 3 устройство содержит следующие дополнительные компоненты: первый решающий модуль 20, сконфигурированный для принятия решения о том, установлен ли тег, указывающий на необходимость выполнения задачи в текущий момент, с учетом того, что любая задача среди всех задач должна запускаться заново; и восстанавливающий модуль 10, связанный с первым решающим модулем 20 и сконфигурированный дополнительно для восстановления исходных команд корректируемой функции вместо N начальных команд длинного перехода корректируемой функции при условии, что установлен тег, указывающий на необходимость выполнения задачи в текущий момент.
На фиг. 5 показана другая предпочтительная структура устройства. С учетом схемы на фиг. 4 устройство содержит следующие дополнительные компоненты: второй решающий модуль 22, связанный с устанавливающим теги модулем 16 и восстанавливающим модулем 10 и сконфигурированный для принятия решения о том, установлен ли для текущий задачи тег, когда выполняемая в данный момент задача должна завершаться, и дополнительно сконфигурированный для принятия решение о том, указывает ли по-прежнему указатель ПС задачи на одну из N начальных команд корректируемой функции, если для текущей задачи тег установлен; восстанавливающий модуль 10, дополнительно сконфигурированный для восстановления N исходных начальных команд корректируемой функции вместо команд длинного перехода корректируемой функции, если указатель ПС указывает на одну из N команд; устанавливающий теги модуль 16, дополнительно сконфигурированный для удаления тега завершающейся текущей задачи, если указатель ПС не указывает на одну из N команд, а затем для включения восстанавливающего модуля для восстановления N исходных начальных команд корректируемой функции вместо команд длинного перехода корректируемой функции; и переходный модуль 24, связанный с вторым решающим модулем 22 и сконфигурированный для перехода к задаче, которая должна выполняться следующей, если для текущей задачи тег не установлен.
На фиг. 6 показана другая предпочтительная структура устройства. С учетом схемы на фиг. 3 устройство содержит следующие дополнительные компоненты: второй преобразующий модуль 30, связанный с устанавливающим теги модулем 16 и восстанавливающим модулем 10 и сконфигурированный для преобразования N исходных начальных команд корректируемой функции в команды длинного перехода и резервирования исходных команд.
Специалисты в данной области должны понимать, что все обрабатывающие модули могут быть реализованы на базе процессора приложений (АР), центрального процессорного модуля (CPU), цифрового сигнального процессора (DSP) или программируемой логической матрицы (FPGA) и других аналогичных модулей.
Предпочтительные варианты осуществления
Из традиционной технологии следует, что при использовании команд длинных переходов необходимо избегать ситуации, когда указатели ПС указывают на одну из N начальных команд корректируемой функции. Вариант осуществления настоящего изобретения обеспечивает способ динамического обновления функции патчами, в котором используются три команды длинного перехода. Согласно данному способу, когда должна быть заново запущена задача А при первом условии, вместо трех начальных команд длинного перехода измененной корректируемой функции временно восстанавливаются исходные команды корректируемой функции, а когда выполнение задачи А завершается, три первые начальные команды корректируемой функции преобразуются в команды длинного перехода. Способ может применяться к динамическому обновлению патчами во встроенной системе, в частности, в ситуации, когда относительное адресное расстояние между корректирующей функцией и корректируемой функцией превышает диапазон адресов короткого перехода.
На фиг. 7 показана блок-схема инициализации при динамическом обновлении патчами, которая состоит из следующих специальных шагов (шаги с S702 по S712).
Шаг S702: прерывание заблокировано, переключение задач запрещено.
Шаг S704: анализируются все выполняющиеся задачи в системе, и принимается решение о том, указывает ли указатель ПС задачи на одну из первых трех команд корректируемой функции. Если указатель ПС указывает на одну из первых трех команд корректируемой функции, выполняется шаг S706, а если указатель ПС не указывает на одну из первых трех команд корректируемой функции, выполняется шаг S708.
Шаг S706: в блоке управления задачи устанавливается тег 1 для задачи, в которой указатель ПС указывает на одну из трех начальных команд корректируемой функции. Тег 1 используется для идентификации того, что во время выполнения после запуска задачи вместо начальных команд длинного перехода корректируемой функции должны быть восстановлены исходные команды.
Шаг S708: первые три начальные команды корректируемой функции преобразовываются в команды длинного перехода, а исходные команды сохраняются в резервной памяти.
Шаг S710: регистрируется функция перехвата задач таким образом, что во время переключения задач система готова вызвать функцию перехвата.
Шаг S712: прерывание разблокировано, переключение задач разрешено.
В ходе описанной выше процедуры выполняемой в текущий момент задачи устанавливается тег, благодаря чему становится более просто идентифицировать задачи, в которых вместо команд длинного перехода должны быть восстановлены исходные команды.
Если возникает переключение задач, например переключение от выполняемой в текущий момент задачи А к задаче В, которая должна быть запущена, то используется функция перехвата задач, блок-схема специальной реализации которой показана на фиг. 8, при этом она состоит из следующих шагов (шаги с S802 по S816).
Шаг S802: прерывание заблокировано, переключение задач запрещено.
Шаг S804: принимается решение о том, имеется ли тег 1 в блоке управления задачи А. Если тег 1 имеется, это означает, что при начале выполнения задачи А вместо трех начальных команд корректируемой функции должны быть восстановлены исходные команды, после чего выполняется шаг S806. Если тег 1 отсутствует, это означает, что начальные команды корректируемой функции являются командами длинного перехода, после чего выполняется шаг S812.
Шаг S806: принимается решение о том, указывает ли по-прежнему указатель ПС задачи А на одну из трех начальных команд корректируемой функции. Если указатель ПС указывает на одну из трех начальных команд, это означает, что при следующем запуске задачи А вместо начальных команд корректируемой функции должны быть восстановлены исходные команды корректируемой функции, после чего выполняется шаг S810. Если указатель ПС не указывает на одну из трех начальных команд, это означает, что при следующем запуске задачи А вместо начальных команд корректируемой функции не должны восстанавливаться исходные команды корректируемой функции, после чего выполняется шаг S808.
Шаг S808: тег 1 удаляется из блока управления задачи А.
Шаг S810: три начальных команды корректируемой функции преобразовываются в команды длинного перехода, а исходные команды сохраняются в резервной памяти. Таким образом, завершается процедура, обеспечивающая окончание выполнения задачи А, после чего запускается задача В.
Шаг S812: принимается решение о том, имеется ли тег 1 в блоке управления задачи В. Если тег 1 имеется, это означает, что задача В является подлежащей изменению задачей, после чего выполняется шаг S814. Если тег 1 отсутствует, выполняется шаг S816.
Шаг S814: вместо начальных команд длинного перехода корректируемой функции восстанавливаются исходные команды.
Шаг S816: прерывание разблокировано, переключение задач разрешено.
Вариант осуществления настоящего изобретения дополнительно обеспечивает носитель информации. На носителе информации хранится компьютерная программа, сконфигурированная для выполнения способа динамического обновления функции патчами согласно рассмотренному выше варианту осуществления.
Предпочтительные варианты осуществления настоящего изобретения описаны только для примера. Специалисты в данной области могут реализовывать различные возможные модификации, дополнения и замены. При этом объем настоящего изобретения не ограничивается рассмотренными выше вариантами осуществления.
ПРОМЫШЛЕННАЯ ПРИМЕНИМОСТЬ
Согласно настоящему изобретению вместо N начальных команд длинного перехода измененной корректируемой функции восстанавливаются исходные команды корректируемой функции, после чего, когда выполнение текущей задачи завершается, первые N исходных начальных команд преобразуются в команды длинного перехода для того, чтобы выполнилась замена корректируемой функции, таким образом реализуется динамическое обновление функции патчами и решается проблема возможной неработоспособности измененной системы после замены начальных команд корректируемой функции командами длинного перехода.