RU2642362C2 - Способ, устройство и носитель информации для динамического внесения изменений в функцию - Google Patents

Способ, устройство и носитель информации для динамического внесения изменений в функцию Download PDF

Info

Publication number
RU2642362C2
RU2642362C2 RU2016109180A RU2016109180A RU2642362C2 RU 2642362 C2 RU2642362 C2 RU 2642362C2 RU 2016109180 A RU2016109180 A RU 2016109180A RU 2016109180 A RU2016109180 A RU 2016109180A RU 2642362 C2 RU2642362 C2 RU 2642362C2
Authority
RU
Russia
Prior art keywords
commands
function
task
initial
corrected
Prior art date
Application number
RU2016109180A
Other languages
English (en)
Other versions
RU2016109180A (ru
Inventor
Фэн ИНЬ
Минсин ЧЖУ
Original Assignee
ЗетТиИ Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ЗетТиИ Корпорейшн filed Critical ЗетТиИ Корпорейшн
Publication of RU2016109180A publication Critical patent/RU2016109180A/ru
Application granted granted Critical
Publication of RU2642362C2 publication Critical patent/RU2642362C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Изобретение относится к области обновления функций. Техническим результатом является реализация динамического обновления функций патчами. Раскрыт способ динамического обновления функции патчами, включающий: анализ всех задач в системе на предмет определения подлежащих изменению задач, при этом подлежащими изменению задачами являются задачи, указатели программного счетчика (ПС) которых указывают на одну из N начальных команд корректируемой функции, а позиции N команд используются для записи команд длинного перехода измененной корректируемой функции, причем значение N определяется согласно числу команд длинного перехода; установку тегов для подлежащих изменению задач для определения типов всех задач, при этом тег используется для идентификации того, что исходные команды корректируемой функции необходимо восстановить вместо начальных команд длинного перехода корректируемой функции, измененной системой программного обеспечения, когда задача, которая должна быть изменена, выполняется, и тег устанавливается в блоке управления задачи, которая должна быть изменена; преобразование N исходных начальных команд корректируемой функции в команды длинного перехода и сохранение исходных команд в резервной памяти, при этом команды длинного перехода осуществляют переход к корректирующей функции для замены корректируемой функции на корректирующую функцию и N - целое, большее или равное 3; восстановление, если установлен тег, указывающий на необходимость выполнения задачи в текущий момент, исходных команд корректируемой функции вместо N начальных команд длинного перехода корректируемой функции, измененной системой программного обеспечения в соответствии с тегом, заранее установленным в блоке управления задачей выполняемой в данный момент задачи системы программного обеспечения; и повторное преобразование первых N исходных начальных команд в команды длинного перехода для динамического обновления функции патчами, когда завершается выполняемая в данный момент задача. 3 н. и 4 з.п. ф-лы, 8 ил.

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение относится к области связи, и, в частности, к способу, устройству и носителю информации для динамического обновления функции патчами.
УРОВЕНЬ ТЕХНИКИ
Программные патчи, как правило, представляют собой независимые единицы программного обеспечения, которые выпускаются с целью изменения некоторых функций существующей системы программного обеспечения или исправления некоторых ошибок существующей системы программного обеспечения. Технология динамического обновления программного обеспечения патчами может полностью восстановить функции системы или устранить ошибки, не оказывая влияния на нормальную работу системы; при этом выполняемая в данный момент в существующей системе функция обычно заменяется корректирующей функцией и, следовательно, изменяются параметры данной функции.
Хотя технология динамического обновления патчами имеет множество решений для реализации, во встроенной системе технология главным образом состоит из следующих ключевых шагов.
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 исходных начальных команд преобразуются в команды длинного перехода для того, чтобы выполнилась замена корректируемой функции, таким образом реализуется динамическое обновление функции патчами и решается проблема возможной неработоспособности измененной системы после замены начальных команд корректируемой функции командами длинного перехода.

Claims (30)

1. Способ динамического обновления функции патчами, включающий:
анализ всех задач в системе на предмет определения подлежащих изменению задач, при этом подлежащими изменению задачами являются задачи, указатели программного счетчика (ПС) которых указывают на одну из N начальных команд корректируемой функции, а позиции N команд используются для записи команд длинного перехода измененной корректируемой функции, причем значение N определяется согласно числу команд длинного перехода;
установку тегов для подлежащих изменению задач для определения типов всех задач, при этом тег используется для идентификации того, что исходные команды корректируемой функции необходимо восстановить вместо начальных команд длинного перехода корректируемой функции, измененной системой программного обеспечения, когда задача, которая должна быть изменена, выполняется, и тег устанавливается в блоке управления задачи, которая должна быть изменена;
преобразование N исходных начальных команд корректируемой функции в команды длинного перехода и сохранение исходных команд в резервной памяти, при этом команды длинного перехода осуществляют переход к корректирующей функции для замены корректируемой функции на корректирующую функцию и N - целое, большее или равное 3;
восстановление (S102), если установлен тег, указывающий на необходимость выполнения задачи в текущий момент, исходных команд корректируемой функции вместо N начальных команд длинного перехода корректируемой функции, измененной системой программного обеспечения в соответствии с тегом, заранее установленным в блоке управления задачей выполняемой в данный момент задачи системы программного обеспечения; и
повторное преобразование первых N исходных начальных команд в команды длинного перехода для динамического обновления функции патчами, когда завершается выполняемая в данный момент задача.
2. Способ по п. 1, отличающийся тем, что после установки тегов для подлежащих изменению задач способ дополнительно включает следующие действия:
принятие решения о том, установлен ли тег, указывающий на необходимость выполнения задачи в текущий момент с учетом того, что любая задача среди всех задач должна запускаться заново; и
восстановление исходных команд корректируемой функции вместо N начальных команд длинного перехода измененной корректируемой функции, если установлен тег, указывающий на необходимость выполнения задачи в текущий момент.
3. Способ по п. 2, дополнительно включающий следующие действия:
принятие решения о том, имеет ли текущая задача тег, когда выполняемая в данный момент задача близка к завершению;
принятие решения о том, указывает ли по-прежнему указатель ПС текущей выполняемой задачи на одну из N начальных команд корректируемой функции, если текущая выполняемая задача имеет тег;
преобразование N исходных начальных команд корректируемой функции в команды длинного перехода измененной корректируемой функции, если указатель ПС указывает на одну из N команд;
удаление тега текущей выполняемой завершающейся задачи и затем преобразование N исходных начальных команд корректируемой функции в команды длинного перехода измененной корректируемой функции, если указатель ПС не указывает на N команд; и
переход к задаче, которая должна быть запущена, если текущая выполняемая задача не имеет тега.
4. Устройство для динамического обновления функции патчами, содержащее:
определяющий модуль, сконфигурированный для анализа, перед преобразованием N исходных начальных команд корректируемой функции в команды длинного перехода, которые осуществляют переход к корректирующей функции для замены корректируемой функции на корректирующую функцию, при этом N - целое, большее или равное 3, и значение N определяется согласно числу команд длинного перехода, всех задач в системе на предмет определения подлежащих изменению задач, при этом подлежащими изменению задачами являются задачи, указатели ПС которых указывают на одну из N начальных команд корректируемой функции, а позиции N команд используются для записи команд длинного перехода корректируемой функции, измененной системой программного обеспечения;
устанавливающий теги модуль, сконфигурированный для установки тегов для подлежащих изменению задач для определения типов всех задач, при этом тег используется для идентификации того, что исходные команды корректируемой функции необходимо восстановить вместо начальных команд длинного перехода корректируемой функции, измененной системой программного обеспечения, когда задача, которая должна быть изменена, выполняется, и тег устанавливается в блоке управления задачи, которая должна быть изменена;
второй преобразующий модуль, сконфигурированный для преобразования, после того как все выполняющиеся задачи в системе будут проанализированы, N исходных начальных команд корректируемой функции в команды длинного перехода и резервирования исходных команд;
восстанавливающий модуль, сконфигурированный для восстановления, если установлен тег, указывающий на необходимость выполнения задачи в текущий момент, исходных команд корректируемой функции вместо N начальных команд длинного перехода корректируемой функции, измененной системой программного обеспечения в соответствии с предустановленным тегом, установленным в блоке управления задачей выполняемой в данный момент задачи; и
первый преобразующий модуль, сконфигурированный для повторного преобразования первых N исходных начальных команд в команды длинного перехода для динамического обновления функции патчами, когда завершается выполняемая в данный момент задача.
5. Устройство по п. 4, отличающееся тем, что оно дополнительно включает:
первый решающий модуль, сконфигурированный для принятия решения о том, установлен ли тег, указывающий на необходимость выполнения задачи в текущий момент с учетом того, что любая задача среди всех задач должна запускаться заново; и
восстанавливающий модуль, дополнительно сконфигурированный для восстановления исходных команд корректируемой функции вместо N начальных команд длинного перехода измененной корректируемой функции, если установлен тег, указывающий на необходимость выполнения задачи в текущий момент.
6. Устройство по п. 5, отличающееся тем, что оно дополнительно включает:
второй решающий модуль, сконфигурированный для принятия решения о том, установлен ли для текущий выполняемой задачи тег, когда выполняемая в данный момент задача должна завершаться, и дополнительно сконфигурированный для принятия решения о том, указывает ли по-прежнему указатель ПС текущей выполняемой задачи на одну из N начальных команд корректируемой функции;
восстанавливающий модуль, дополнительно сконфигурированный для восстановления N исходных начальных команд корректируемой функции вместо команд длинного перехода измененной корректируемой функции, если указатель ПС указывает на одну из N команд;
устанавливающий теги модуль, дополнительно сконфигурированный для удаления тега текущей выполняемой завершающейся задачи, если указатель ПС не указывает на одну из N команд, и затем включения восстанавливающего модуля для восстановления N исходных начальных команд измененной корректируемой функции вместо команд длинного перехода корректируемой функции; и
переходный модуль, сконфигурированный для перехода к задаче, которая должна быть запущена, если текущая выполняемая задача не имеет тега.
7. Носитель информации, хранящий компьютерную программу, сконфигурированную для выполнения способа динамического обновления функции патчами согласно одному из пп. 1-3.
RU2016109180A 2013-08-29 2014-06-16 Способ, устройство и носитель информации для динамического внесения изменений в функцию RU2642362C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310385256.4 2013-08-29
CN201310385256.4A CN104424037B (zh) 2013-08-29 2013-08-29 一种动态补丁函数的方法及装置
PCT/CN2014/080001 WO2015027732A1 (zh) 2013-08-29 2014-06-16 一种动态补丁函数的方法及装置、存储介质

Publications (2)

Publication Number Publication Date
RU2016109180A RU2016109180A (ru) 2017-10-02
RU2642362C2 true RU2642362C2 (ru) 2018-01-24

Family

ID=52585509

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2016109180A RU2642362C2 (ru) 2013-08-29 2014-06-16 Способ, устройство и носитель информации для динамического внесения изменений в функцию

Country Status (5)

Country Link
US (1) US9483254B2 (ru)
EP (1) EP3040854B1 (ru)
CN (1) CN104424037B (ru)
RU (1) RU2642362C2 (ru)
WO (1) WO2015027732A1 (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2695054C1 (ru) * 2018-06-18 2019-07-18 Общество с ограниченной ответственностью "Аби Продакшн" Детектирование баркодов на изображениях

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809018B (zh) * 2015-05-18 2018-01-02 烽火通信科技股份有限公司 一种嵌入式系统软件注入热补丁的方法及系统
CN106874022B (zh) * 2015-12-11 2021-06-25 中兴通讯股份有限公司 一种热补丁注入方法及装置
CN105607937B (zh) * 2015-12-25 2019-01-18 京信通信系统(中国)有限公司 一种热补丁方法及设备
CN109947414A (zh) * 2019-01-31 2019-06-28 苏州德铂思电子科技有限公司 一种基于Vxworks系统的动态钩子函数实现方法
CN110262838A (zh) * 2019-06-14 2019-09-20 深圳乐信软件技术有限公司 一种程序崩溃的处理方法、装置、终端及存储介质
EP4012554B1 (en) * 2020-01-17 2023-10-18 Shenzhen Goodix Technology Co., Ltd. Chip patching method and chip
CN113434233B (zh) * 2021-06-28 2023-10-24 青岛海尔科技有限公司 界面跳转方法、装置、存储介质及电子装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101330A1 (en) * 2001-11-29 2003-05-29 Evelyn Duesterwald System and method for dynamically patching code
CN101004681A (zh) * 2006-12-22 2007-07-25 中兴通讯股份有限公司 嵌入式系统动态补丁长跳转的实现方法
RU2367005C2 (ru) * 2003-12-15 2009-09-10 Майкрософт Корпорейшн Система и способ для обновления файлов с использованием корректирования сжатыми изменениями
CN101794272A (zh) * 2010-03-26 2010-08-04 成都市华为赛门铁克科技有限公司 为共享代码段打补丁的方法及装置
CN102722387A (zh) * 2012-05-29 2012-10-10 华为技术有限公司 动态打补丁的方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US7941653B2 (en) * 2008-12-04 2011-05-10 Analog Devices, Inc. Jump instruction having a reference to a pointer for accessing a branch address table
CN101561764B (zh) * 2009-05-18 2012-05-23 华为技术有限公司 一种多核环境下的补丁方法与补丁装置
CN102156661B (zh) * 2010-02-11 2013-06-12 华为技术有限公司 在线补丁的激活方法、装置及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101330A1 (en) * 2001-11-29 2003-05-29 Evelyn Duesterwald System and method for dynamically patching code
RU2367005C2 (ru) * 2003-12-15 2009-09-10 Майкрософт Корпорейшн Система и способ для обновления файлов с использованием корректирования сжатыми изменениями
CN101004681A (zh) * 2006-12-22 2007-07-25 中兴通讯股份有限公司 嵌入式系统动态补丁长跳转的实现方法
CN101794272A (zh) * 2010-03-26 2010-08-04 成都市华为赛门铁克科技有限公司 为共享代码段打补丁的方法及装置
CN102722387A (zh) * 2012-05-29 2012-10-10 华为技术有限公司 动态打补丁的方法和装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2695054C1 (ru) * 2018-06-18 2019-07-18 Общество с ограниченной ответственностью "Аби Продакшн" Детектирование баркодов на изображениях

Also Published As

Publication number Publication date
EP3040854B1 (en) 2019-05-01
RU2016109180A (ru) 2017-10-02
WO2015027732A1 (zh) 2015-03-05
CN104424037A (zh) 2015-03-18
US9483254B2 (en) 2016-11-01
EP3040854A1 (en) 2016-07-06
EP3040854A4 (en) 2016-08-03
US20160210142A1 (en) 2016-07-21
CN104424037B (zh) 2018-12-14

Similar Documents

Publication Publication Date Title
RU2642362C2 (ru) Способ, устройство и носитель информации для динамического внесения изменений в функцию
US10642596B2 (en) Embedded device and program updating method
US10701084B2 (en) Reliable and secure firmware update with a dynamic validation for internet of things (IoT) devices
KR101761498B1 (ko) 추론을 지원하는 게스트 반환 주소 스택 에뮬레이션을 위한 방법 및 장치
US9081640B2 (en) Apparatus, method and medium for calculating an update order on a service level objective
US20110320794A1 (en) Flash System And Method For Updating The Flash System
RU2602378C9 (ru) Стойка с множеством модулей управления стойкой и способ обновления встроенного программного обеспечения, используемого для стойки
CN109634638B (zh) 一种集群软件升级方法、装置、设备及介质
US10509646B2 (en) Software update rollbacks using file system volume snapshots
US7818622B2 (en) Method for recovering data processing system failures
JP2014071796A (ja) マルウェア検知装置、マルウェア検知システム、マルウェア検知方法、及びプログラム
US20150269029A1 (en) Immediate Recovery of an Application from File Based Backups
CN105335166A (zh) 嵌入式设备的系统及嵌入式设备远程升级的方法
EP2733612B1 (en) Information processing device, method, and program
JP6073710B2 (ja) 情報処理装置、起動障害からの自動復旧方法、及び起動障害からの自動復旧プログラム
KR101529713B1 (ko) 비정상 전원절환에 대한 안드로이드 단말의 안정성 강화 방법 및 이를 위한 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
US11210188B1 (en) Systems and methods for processor monitoring and recovery
JP5157789B2 (ja) プログラム更新方法及びプログラム更新装置
CN113051122B (zh) 性能数据获取方法、装置、电子设备和介质
US12118345B2 (en) Application status reporting via platform binary tables
CN103677941A (zh) 一种实现智能卡操作系统模块升级的方法及装置
CN109542598B (zh) 定时任务管理方法及装置
JP2008108155A (ja) 稼働実績情報に基づくモジュール切替システム
US20200065120A1 (en) Loading new code in the initial program load path to reduce system restarts
US20220129198A1 (en) Data updates for controllers