KR20200146006A - 애플리케이션 업그레이드 방법, 장치, 기기 및 저장 매체 - Google Patents

애플리케이션 업그레이드 방법, 장치, 기기 및 저장 매체 Download PDF

Info

Publication number
KR20200146006A
KR20200146006A KR1020200003556A KR20200003556A KR20200146006A KR 20200146006 A KR20200146006 A KR 20200146006A KR 1020200003556 A KR1020200003556 A KR 1020200003556A KR 20200003556 A KR20200003556 A KR 20200003556A KR 20200146006 A KR20200146006 A KR 20200146006A
Authority
KR
South Korea
Prior art keywords
function
application
address
link library
dynamic link
Prior art date
Application number
KR1020200003556A
Other languages
English (en)
Other versions
KR102341388B1 (ko
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 KR20200146006A publication Critical patent/KR20200146006A/ko
Application granted granted Critical
Publication of KR102341388B1 publication Critical patent/KR102341388B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • 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
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

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)

Abstract

본 발명은 클라우드 컴퓨팅 분야에 관한 것으로, 구체적으로는 애플리케이션 업그레이드 방법, 장치, 기기 및 저장 매체에 관한 것이다. 상기 방법에서, 제1 애플리케이션의 제1 프로세스에 의해 실행되는 제1 스레드에 대해, 제1 스레드에 의해 호출되는 제1 함수를 확정하고, 제2 애플리케이션에서 제1 함수에 대응되는 제2 함수를 확정하되, 제1 애플리케이션은 제2 애플리케이션으로 업그레이드되며, 제1 함수는 제2 함수로 업그레이드되고, 제2 함수를 포함하는 제2 애플리케이션의 제2 동적 링크 라이브러리에 기반하여 제1 함수를 포함하는 제1 애플리케이션의 제1 동적 링크 라이브러리를 교체하며, 제2 동적 링크 라이브러리에 기반하여 제1 프로세스를 업데이트함으로써, 업데이트된 제1 프로세스가 제2 애플리케이션의 제2 함수를 실행하도록 한다. 상기 실시형태를 적용하여 제1 애플리케이션의 제1 프로세스를 리부팅할 필요 없이 제1 프로세스를 업데이트함으로써 보다 간단하고 효율적인 방식으로 애플리케이션의 업그레이드를 수행할 수 있으며, 나아가 애플리케이션 업그레이드에 소요되는 시간을 단축하고 제1 애플리케이션의 실행을 가급적 중단시키지 않으면서 업그레이드를 완료한다.

Description

애플리케이션 업그레이드 방법, 장치, 기기 및 저장 매체{METHOD, APPARATUS, DEVICE AND STORAGE MEDIUM FOR UPGRADING APPLICATION}
본 발명의 실시형태는 요약하면 애플리케이션의 버전 관리에 관한 것으로, 구체적으로는 애플리케이션 버전 업그레이드를 관리하기 위한 방법, 장치, 기기 및 컴퓨터 저장 매체에 관한 것이다.
소프트웨어 개발 기술의 발달로 현재에는 이미 다양한 기능을 제공하는 애플리케이션이 출시되어 있다. 애플리케이션을 실행하는 동안 흔히 버그 보정, 새로운 기능의 제공 또는 기타 목적으로 애플리케이션의 버전을 업그레이드하게 되는데, 이 경우 애플리케이션의 버전 업그레이드는 애플리케이션의 정상적인 실행을 중단시킨다. 웹 서버 관리 애플리케이션, 가상 컴퓨터 관리 애플리케이션 등과 같이 수시로 대량의 사용자가 액세스하는 애플리케이션에 있어서, 버전 업그레이드를 수행하기 위해 애플리케이션의 실행을 중단하게 될 경우 사용자의 정상적인 조작에 심각한 영향을 미치게 되는데, 이때 보다 효율적인 방식으로 애플리케이션의 버전 업그레이드를 관리하는 것은 기술적 난제로 되고 있다.
본 발명의 실시형태는 애플리케이션 업그레이드에 관한 방안을 제공한다.
본 발명의 제1 양태에 있어서, 애플리케이션 업그레이드 방법을 제공하되, 상기 방법은, 제1 애플리케이션의 제1 프로세스에 의해 실행되는 제1 스레드에 대해, 상기 제1 스레드에 의해 호출되는 제1 함수를 확정하는 단계; 제2 애플리케이션에서 상기 제1 함수에 대응되는 제2 함수를 확정하는 단계 - 상기 제1 애플리케이션은 상기 제2 애플리케이션으로 업그레이드되며, 상기 제1 함수는 상기 제2 함수로 업그레이드됨 - ; 상기 제2 함수를 포함하는 상기 제2 애플리케이션의 제2 동적 링크 라이브러리에 기반하여, 상기 제1 함수를 포함하는 상기 제1 애플리케이션의 제1 동적 링크 라이브러리를 교체하는 단계; 및 상기 제2 동적 링크 라이브러리에 기반하여 상기 제1 프로세스를 업데이트함으로써, 업데이트된 상기 제1 프로세스가 상기 제2 애플리케이션의 제2 함수를 실행하도록 하는 단계를 포함한다.
본 발명의 제2 양태에 있어서, 애플리케이션 업그레이드 장치를 제공하되, 상기 장치는, 제1 애플리케이션의 제1 프로세스에 의해 실행되는 제1 스레드에 대해, 상기 제1 스레드에 의해 호출되는 제1 함수를 확정하는 제1 확정 모듈; 제2 애플리케이션에서 상기 제1 함수에 대응되는 제2 함수를 확정하는 제2 확정 모듈 - 상기 제1 애플리케이션은 상기 제2 애플리케이션으로 업그레이드되며, 상기 제1 함수는 상기 제2 함수로 업그레이드됨 - ; 상기 제2 함수를 포함하는 상기 제2 애플리케이션의 제2 동적 링크 라이브러리에 기반하여 상기 제1 함수를 포함하는 상기 제1 애플리케이션의 제1 동적 링크 라이브러리를 교체하는 교체 모듈; 및 상기 제2 동적 링크 라이브러리에 기반하여 상기 제1 프로세스를 업데이트함으로써, 업데이트된 상기 제1 프로세스가 상기 제2 애플리케이션의 제2 함수를 실행하도록 하는 업데이트 모듈을 포함한다.
본 발명의 제3 양태에 있어서, 하나 또는 복수의 프로세서; 및 하나 또는 복수의 프로그램을 저장하기 위한 저장 장치를 포함하는 애플리케이션 업그레이드 기기를 제공하되, 상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제1 양태에 따른 애플리케이션 업그레이드 방법을 구현하도록 한다.
본 발명의 제4 양태에 있어서, 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체에 있어서, 상기 프로그램이 프로세서에 의해 실행될 경우 제1 양태에 따른 애플리케이션 업그레이드 방법을 구현한다.
발명의 내용 부분에 설명된 내용은 본 개시의 내용의 구현의 관건적인 특징 또는 중요한 특징을 한정하기 위한 것이 아니며, 본 개시의 내용의 범위를 한정하기 위한 것이 아님을 이해하여야 한다. 아래의 설명을 통해, 본 개시의 내용의 기타의 특징은 용이하게 이해할 수 있을 것이다.
첨부된 도면을 결부하고 이하 상세한 설명을 참조하여, 본 발명의 다양한 실시형태의 상술한 설명 및 다른 특징, 이점 및 양태는 보다 명백해질 것이다. 도면에서, 동일하거나 유사한 도면 표기는 동일하거나 유사한 요소를 나타낸다.
도 1은 본 발명에 따른 예시적 실시형태를 구현 가능한 애플리케이션 환경의 블록도를 예시적으로 도시한다.
도 2a는 본 발명에 따른 예시적 실시형태의 업그레이드 수행 이전의 제1 애플리케이션의 블록도를 예시적으로 도시한다.
도 2b는 본 발명에 따른 예시적 실시형태의 업그레이드 수행 이후의 제2 애플리케이션의 블록도를 예시적으로 도시한다.
도 3은 본 발명에 따른 예시적 실시형태의 애플리케이션 업그레이드 방법의 흐름도를 예시적으로 도시한다.
도 4는 본 발명에 따른 예시적 실시형태의 제1 애플리케이션과 관련된 주소 매핑의 블록도를 예시적으로 도시한다.
도 5는 본 발명에 따른 예시적 실시형태의 제1 애플리케이션과 관련된 실행 가능 파일의 블록도를 예시적으로 도시한다.
도 6은 본 발명에 따른 예시적 실시형태의 실행 가능 파일 내의 복수의 섹션(section) 중의 데이터에 기반하여 함수 주소와 함수 명칭 간의 관련 관계를 확정하는 블록도를 예시적으로 도시한다.
도 7은 본 발명에 따른 예시적 실시형태의 등록 파일에 기반하여 제1 애플리케이션과 제2 애플리케이션의 변수 사이에서 데이터를 동기화하는 블록도를 예시적으로 도시한다.
도 8은 본 발명에 따른 예시적 실시형태의 애플리케이션 업그레이드 장치의 블록도를 예시적으로 도시한다.
도 9는 본 발명의 여러 실시형태를 구현 가능한 컴퓨팅 기기의 블록도를 도시한다.
아래에 첨부된 도면을 참조하여 본 발명의 실시형태를 보다 상세하게 설명한다. 비록 도면에는 본 발명의 일부 실시형태가 도시되어 있으나 본 발명은 다양한 형태로 구현될 수 있음을 이해해야 하고, 여기서 설명된 실시형태에 한정되는 것으로 해석되어서는 안되며, 반대로 이러한 실시형태는 본 발명을 보다 분명하고 완전하게 이해시키기 위해 제공된다. 본 발명의 도면 및 실시형태는 단지 예시로서 작용되며, 본 발명의 보호 범위를 한정하려는 것이 아님을 이해해야 한다.
본 발명의 실시형태의 설명 과정에서, 용어 "포함하다” 및 이와 유사한 용어는 "포함하나 한정되지 않음”과 같은 개방적인 포함으로 이해되어야 한다. 용어 "기반”은 "적어도 부분적으로 기반”으로 이해되어야 한다. 용어 "일 실시형태” 또는 "상기 실시형태”는 "적어도 일 실시형태”로 이해되어야 한다. 용어 "제1", "제2" 등은 상이하거나 동일한 객체를 지칭할 수 있다. 아래 설명은 다른 명시적 및 암시적 정의를 더 포함할 수 있다.
이하, 우선 도 1을 참조하여 본 발명의 애플리케이션 환경을 설명한다. 도 1은 본 발명에 따른 예시적 실시형태를 구현 가능한 애플리케이션 환경(100)의 블록도를 예시적으로 도시한다. 도 1에 도시된 바와 같이, 애플리케이션(120)은 컴퓨팅 기기(110)에서 실행될 수 있고, 여기서 애플리케이션(120)은 다양한 기능을 수행하기 위한 애플리케이션 프로그램일 수 있다. 예를 들어, 상기 애플리케이션(120)은 가상화 시나리오에서 네트워크 가상화 관리를 제공하기 위한 관리 애플리케이션, Web 서버를 관리하기 위한 서버 관리 애플리케이션, 또는 컴퓨팅 기기(110)의 작동 상태를 모니터링하기 위한 애플리케이션 등일 수 있다. 애플리케이션(120)이 실행되는 동안, 애플리케이션(120)은 프로세스(122)를 가동할 수 있고 또한 프로세스(122)에 리소스(124)를 할당할 수 있다.
요약하면, 프로세스(122)는 실행 중인 애플리케이션(120)의 인스턴스이고, 프로세스(122)는 자신의 리소스(124)(예를 들어, 텍스트 영역, 데이터 영역 및 스택 등)를 가질 수 있다. 애플리케이션(120)이 실행되는 동안, 프로세스(122)는 애플리케이션(120)의 기능을 구현하기 위해 리소스(124) 내의 다양한 콘텐츠에 액세스할 수 있다. 리소스(124)는 프로세스(122)의 실행에 따라 존재하므로 프로세스(122)가 종료되면 리소스(124)는 해제됨을 이해할 수 있을 것이다.
새로운 기능의 추가, 기존 애플리케이션(120)의 버그 복원, 실행 효율 개선 등 방면의 이유로 애플리케이션(120)은 자주 업그레이드된다. 이 경우, 애플리케이션(120)의 중단 시간을 최대한 감소시키는 것이 관건인데 특히 24시간 무중단 실행이 요구되는 애플리케이션에 있어서는 더욱이 그러하다. 설명의 편의를 위해, 본 발명의 명세서에서는 네트워크 가상화 관리 애플리케이션을 예시로서 본 발명의 예시적인 실시형태를 설명한다. 예를 들어, openvswitch는 가상화 시나리오에서 네트워크 가상화 지원을 제공할 수 있으나 실제 배치시에는 ovs-kernel에서 운영 체제에 의해 완성되고, ovs-dpdk 모드에서 커널 형태에서 사용자 형태로 전환되어 처리되는 두가지 모드가 존재한다.
네트워크 가상화 애플리케이션에 있어서, 현재에는 이미 다양한 업그레이드 수단이 제안되었다. 하나의 기술적 해결수단에서, 새로운 버전의 어셈블리를 미리 배포하고 ovs-vswitchd 프로세스를 리부팅하여 업그레이드를 구현하는 수단은 ovs-kernel 및 ovs-dpdk 모드 모두에 적용될 수 있다. 그러나 상기 업그레이드 수단은 애플리케이션 중단 시간이 길고 네트워크 연결이 끊기는 시간이 분 수준에 도달할 수 있으며 업그레이드 조작 결과를 예측할 수 없다.
다른 기술적 해결수단에서, ovs-vswitchd 프로세스를 메인 데몬과 보조 데몬으로 분할하여, 메인 데몬이 정적 리소스를 관리하고 보조 데몬이 데이터 처리를 담당하며 메인 데몬과 보조 데몬 간에는 저장 리소스를 공유하고 업그레이드시 보조 데몬만 리부팅한다. 가동 과정에서 더 이상 메모리를 요청할 필요가 없으므로 프로세스의 리부팅 시간을 단축시키며 나아가 업그레이드 조작으로 인한 애플리케이션 중단 시간을 감소시킨다. 그러나 상기 기술적 해결수단은 ovs-dpdk 모드에만 적용 가능할뿐더러 애플리케이션의 중단 시간도 여전히 이상적이지 못하다.
또 다른 기술적 해결수단에서, 업그레이드시 새로운 ovs-vswitchd 프로세스를 가동시키면 새로운 프로세스는 원래 프로세스와 동일한 양의 리소스를 차지한다. 상기 기술적 해결수단은 비록 중단 시간을 더욱 줄일 수 있으나 상기 수단이 대량의 리소스를 차지해야 하며 또한 ovs-dpdk 방식에만 적용 가능하여 통용되는 업그레이드 기술적 해결수단을 제공하지 못한다.
상기 기술적 해결수단의 결함을 적어도 부분적으로 해결하기 위해, 본 발명의 예시적인 구현에 따라 컴퓨팅 기기에서 애플리케이션을 업그레이드하기 위한 기술적 해결수단이 제공된다. 상기 기술적 해결수단에서는 애플리케이션의 프로세스를 리부팅할 필요 없이 애플리케이션 프로그램의 스레드만 리부팅한다. 스레드는 컴퓨팅 기기가 스케줄링할 수 있는 최소 단위이고 하나의 프로세스는 하나 또는 복수의 스레드를 포함할 수 있으며, 하나 또는 복수의 스레드는 상기 프로세스 중의 전체 리소스를 공유할 수 있다. 스레드만 리부팅해서는 이미 프로세스에 할당된 리소스가 해제되지 않으므로 리소스 복구 과정에서 발생되는 시간 오버헤드를 방지할 수 있음을 이해할 수 있을 것이다. 나아가, 애플리케이션의 동적 링크 라이브러리를 교체할 수 있고, 동적 링크 라이브러리 중의 함수의 주소를 호출할 수 있다, 이러한 방식을 통해 업그레이드 과정으로 인한 애플리케이션 중단 시간을 크게 단축시킬 수 있다. 이하에서 각각 도 2a 및 도 2b를 참조하여 본 발명의 예시적인 실시형태의 더 자세한 내용을 설명한다.
도 2a는 본 발명에 따른 예시적 실시형태의 업그레이드 수행 이전의 제1 애플리케이션의 블록도(200A)를 예시적으로 도시한다. 제1 애플리케이션(210)은 하나 또는 복수의 동적 링크 라이브러리를 호출할 수 있다. 비록 도 2a에는 제1 동적 링크 라이브러리(216)만 예시적으로 도시되었으나, 상기 제1 애플리케이션(210)는 더 많은 동적 링크 라이브러리를 호출할 수 있다. 나아가, 비록 제1 동적 링크 라이브러리(216)는 제1 함수(220)를 포함하는 것으로 도시되었으나, 상기 제1 동적 링크 라이브러리(216)는 다른 하나 또는 복수의 함수를 포함할 수 있다. 제1 애플리케이션(210) 실행시, 제1 애플리케이션(210)은 제1 프로세스(212)를 가동할 수 있다. 상기 제1 프로세스(212)는 제1 리소스(214)가 할당될 수 있고, 상기 제1 프로세스(212)는 하나 또는 복수의 스레드(예를 들어, 제1 스레드(218) 등)을 실행할 수 있다. 여기서, 제1 스레드(218)는 제1 리소스(214)에 기록된 제1 함수(220)의 주소를 통해 제1 함수(220)를 호출할 수 있다.
도 2a에 도시된 바와 같이, 여기서 제1 애플리케이션(210)은 이전 버전의 애플리케이션일 수 있고, 상기 제1 애플리케이션(210)을 도 2b에 도시된 새로운 버전의 제2 애플리케이션(230)으로 업그레이드할 것을 희망한다. 도 2b는 본 발명에 따른 예시적 실시형태의 업그레이드 수행 이후의 제2 애플리케이션의 블록도(200B)를 예시적으로 도시한다. 제2 애플리케이션(230)은 제2 함수(240)를 포함하는 제2 동적 링크 라이브러리(236)를 호출할 수 있고, 여기서 제2 함수(240)는 제1 함수(220)에 대응되는 업그레이드된 함수이며, 제2 동적 링크 라이브러리(236)는 제1 동적 링크 라이브러리(216)에 대응되는 업그레이드된 동적 링크 라이브러리이다. 업그레이드 과정을 수행하기 위해서는 제1 프로세스(212)를 리부팅할 필요 없이 제1 스레드(218)만 리부팅하면 되고, 제2 동적 링크 라이브러리(236)를 이용하여 제1 동적 링크 라이브러리(216)를 교체하며 제1 리소스(214) 중의 원래 제1 함수(220)를 가리키던 제1 주소를 제2 함수(240)를 가리키는 제2 주소로 보정한다. 이 경우, 리부팅된 제1 스레드(238)는 새로운 버전의 제2 함수(240)를 호출하고 나아가 보다 간편하고 효율적인 방식으로 업그레이드 과정을 수행한다. 이하, 도 3을 참조하여 본 발명의 예시적 구현의 보다 상세한 내용을 설명한다.
도 3은 본 발명에 따른 예시적 실시형태의 애플리케이션 업그레이드 방법(300)의 흐름도를 예시적으로 도시한다. 도 3에 도시된 바와 같이, 블록 310에서, 제1 애플리케이션(210)의 제1 프로세스(212)에 의해 실행된 제1 스레드(218)에 대해, 제1 스레드(218)에 의해 호출된 제1 함수(220)를 확정한다. 비록 블록 310에서 제1 함수(220)에 대한 처리만 언급하였으나 제1 애플리케이션(210)의 제1 프로세스(212)는 복수의 스레드를 수행할 수 있고, 복수의 스레드 중의 각 스레드는 하나 또는 복수의 함수를 호출할 수 있다. 이 경우, 각 함수에 대해 각각 방법(300)을 수행할 수 있다.
다양한 방식으로 제1 함수(220)를 확정할 수 있다. 예를 들어, 제1 애플리케이션(210)의 실행 가능 파일을 분석하여 제1 함수(220)를 확정할 수 있고, 또한 예를 들어, 제1 애플리케이션(210)의 소스 코드를 분석함으로써 제1 함수(220)를 확정할 수도 있다. 여기서 제1 함수(220)는 제1 애플리케이션(210)의 제1 동적 링크 라이브러리(216)에 저장될 수 있다. 확정된 제1 함수(220)의 함수 명칭이 “A"라고 가정하면, 후속적인 조작에서 상기 함수 “A"에 대해 처리할 수 있다.
블록 320에서, 제2 애플리케이션(230) 중 제1 함수(220)에 대응되는 제2 함수(240)를 확정한다. 여기서 제1 애플리케이션(210)은 이전 버전의 애플리케이션을 지칭하고, 제2 애플리케이션(230)은 새로운 버전의 애플리케이션을 지칭한다. 이 경우, 제1 함수(220)는 제2 함수(240)로 업그레이드된다. 제1 함수(220)의 함수 명칭이 “A"인 경우, 여기서 확정된 제2 함수(240)의 함수 명칭은 예를 들어 “A'"일 수 있고, 여기서 새로운 버전의 함수(A')는 제2 애플리케이션(230)의 제2 동적 링크 라이브러리(236)에 저장될 수 있다.
블록 330에서, 제2 함수(240)를 포함하는 제2 애플리케이션(230)의 제2 동적 링크 라이브러리(236)에 기반하여 제1 함수(220)를 포함하는 제1 애플리케이션(210)의 제1 동적 링크 라이브러리(216)를 교체할 수 있다. 제2 애플리케이션(230)에 의해 호출된 하나 또는 복수의 동적 링크 라이브러리를 편리하게 획득하고 새로운 버전의 동적 링크 라이브러리를 이용하여 각 이전 버전의 동적 링크 라이브러리를 일일이 교체할 수 있으므로 보다 편리하고 효율적인 방식으로 애플리케이션 업그레이드를 구현할 수 있다.
블록 340에서, 제2 동적 링크 라이브러리(236)에 기반하여 제1 프로세스(212)를 업데이트함으로써, 업데이트된 제1 프로세스가 제2 애플리케이션(230) 중의 제2 함수(240)를 실행하도록 한다. 구체적으로 업데이트는, (1) 제1 리소스(214) 중의 호출된 함수를 가리키는 주소를 업데이트하고, (2) 제1 애플리케이션(210)이 컴파일링 단계에 공간의 변수를 할당하는 경우, 이러한 변수의 값을 제2 애플리케이션(230) 중의 대응되는 변수와 동기화해야 한다. 이하, 도 4를 참조하여 우선 주소 매핑의 업데이트를 설명한다.
도 4는 본 발명에 따른 예시적 실시형태의 제1 애플리케이션(210)과 관련된 주소 매핑(410)의 블록도(400)를 예시적으로 도시한다. 제1 애플리케이션(210)을 실행하는 동안, 제1 애플리케이션(210)의 제1 프로세스(212)에 제1 리소스(214)를 할당할 수 있고, 상기 제1 리소스(214)는 도 4에 도시된 주소 매핑(410)을 포함하며, 주소 매핑(410)은 제1 프로세스(212)에 의해 실행되는 하나 또는 복수의 스레드가 호출한 함수의 주소를 포함할 수 있다. 도 4에 도시된 바와 같이, 주소 매핑(410)은 주소(420)를 포함할 수 있다. 업그레이드를 수행하기 이전에 주소(420)는 제1 동적 링크 라이브러리(216) 중의 제1 함수(220)를 가리키고, 업그레이드를 수행한 후, 주소(420)를 제2 동적 링크 라이브러리(236) 중의 제2 함수(240)를 가리키도록 보정해야 한다.
본 발명의 예시적인 실시형태에 따르면, 제1 프로세스(212)를 리부팅할 필요가 없으므로 제1 리소스(214)는 업그레이드 동안에 항상 존재한다. 우선 제1 리소스(214)에서 제1 프로세스(212)의 주소 매핑(410)을 획득하되, 주소 매핑(410)은 제1 프로세스(212)의 주소 공간에서의 제1 함수(220)의 제1 주소이다. 여기서 주소 공간은 제1 프로세스(212)에 의해 액세스되는 주소 범위를 지칭함을 이해할 수 있을 것이다. 제1 애플리케이션(210) 실행시, 제1 함수(220)은 상기 주소 공간에 로딩되고 주소 공간에서의 제1 함수(220)의 제1 주소를 인용하여 제1 함수(220)를 호출할 수 있다.
주소 매핑(410) 중의 주소(420)를 업데이트하기 위해, 제2 함수(240)의 제2 주소를 이용하여 주소 매핑(410) 중의 제1 함수(220)의 제1 주소를 교체할 수 있다. 다시 말하면, 주소(420)는 제1 함수(220)를 가리키던 것으로부터 제2 함수(240)를 가리키도록 보정될 수 있다. 계속하여, 제1 스레드(218)를 리부팅함으로써, 리부팅된 제1 스레드(238)가 업데이트된 주소 매핑에 기반하여 제2 동적 링크 라이브러리(236) 중의 제2 함수(240)를 호출하도록 할 수 있다. 이 경우, 리부팅된 제1 스레드(238)는 업데이트된 주소(420)에 기반하여 제2 함수(240)를 호출할 수 있다. 스레드를 리부팅하는 다양한 오버헤드가 프로세스를 리부팅하는 오버헤드보다 훨씬 낮으므로 더 짧은 시간 간격 내(예를 들어, 밀리 초보다 낮은 수량 레벨)에 스레드 리부팅을 완료할 수 있음을 이해할 수 있을 것이다. 이 경우, 주소(420)의 포인터가 이미 제2 함수(240)를 가리키도록 보정되었으므로 리부팅된 제1 스레드(238)는 제2 함수(240)를 바로 호출하여 새로운 버전의 함수(A')에 정의된 기능을 수행할 수 있다.
본 발명의 예시적인 실시형태에 따르면, 제1 애플리케이션(210)의 실행 가능 파일에 기반하여 제1 함수(220)의 제1 명칭 및 제1 주소를 각각 획득할 수 있다. 이하, 도 5를 참조하여 실행 가능 파일의 관련 구조를 설명한다. 구체적으로, 도 5는 본 발명에 따른 예시적 실시형태의 제1 애플리케이션(210)과 관련된 실행 가능 파일의 블록도(500)를 예시적으로 도시한다. 도 5의 왼쪽에는 실행 가능 파일 구조의 링크 뷰가 도시되어 있는데, 상기 링크 뷰는 실행 가능 파일이 링크 상태에서의 데이터 구조를 나타낸다. 실행 가능 파일은 예를 들어 ELF(실행 가능하고 포맷에 링크 가능)에 의해 저장될 수 있다. 도 5에 도시된 바와 같이, 상기 링크 뷰는 ELF 헤더부(510), 프로그램 헤더부 테이블(선택 가능)(512), 복수의 섹션 및 섹션 헤더부 테이블(518)을 포함할 수 있다. 도 5에서, 복수의 섹션은 예를 들어 섹션 1(514), ????, 섹션 N(516)등을 포함할 수 있다. 구체적으로, 각 섹션은 실행 가능 파일의 상이한 기능에 대응되는 데이터를 저장할 수 있다.
도 5의 오른쪽에는 실행 가능 파일의 실행 뷰의 데이터 구조가 도시되었는데, 이는 실행 가능 파일이 실행되고 또한 컴퓨팅 기기에 로딩되어 실행될 경우의 데이터 구조를 도시한다. 실행 뷰는 ELF 헤더부(520), 프로그램 헤더부 테이블(522), 복수의 세그먼트(예를 들어, 세그먼트 1(524), 세그먼트 2(526) 등), 및 섹션 헤더부 테이블(선택 가능)(528)을 포함할 수 있다. 도 5에 도시된 바와 같이, 링크 뷰의 각 섹션은 실행 뷰의 각 세그먼트에 대응될 수 있다. 본 발명의 예시적인 실시형태에 따르면, 링크 뷰의 각 섹션 중의 데이터를 조회함으로써 제1 함수(220)의 함수 명칭 및 대응되는 제1 주소를 확정할 수 있다.
본 발명의 예시적인 실시형태에 따르면, 실행 가능 파일의 섹션 “.rel.plt"에는 리타겟팅 정보가 저장되고, 아래 표 1에 도시된 데이터 구조를 사용하여 각 리타겟팅 아이템을 표시할 수 있다.
리타겟팅 아이템 정보
typedef struct {
ELF64_Addr r_offset;
ELF64_Word r_info;
} ELF64_Rel;
표 1에 도시된 바와 같이, 변수 “r_offset”는 기본 주소에 대한 리타겟팅 아이템의 오프셋량을 나타낸다. 변수 “r_info”은 섹션 “.dynsym” 중의 상기 리타겟팅 아이템의 인덱스 및 상기 리타겟팅 아이템의 타입을 포함한다. 예를 들어, 매크로 ELF64_R_SYM를 사용하여 섹션 “.dynsym” 중의 상기 리타겟팅 아이템의 인덱스를 획득하고, 매크로 ELF64_R_TYPE를 사용하여 상기 리타겟팅 아이템의 타입을 획득할 수 있다. 나아가, 실행 가능 파일의 섹션 “.dynsym”은 모든 타겟팅 또는 리타겟팅 아이템이 저장된 정의 및 인용시 필요한 정보를 포함할 수 있고, 하나의 리타겟팅 아이템은 아래 표 2에 도시된 데이터 구조에 대응될 수 있다.
리타겟팅 정보
typedef struct ELF64_sym{
ELF64_Word st_name;
ELF64_Addr st_value;
ELF64_Word st_size;
unsigned char st_info;
unsigned char st_other;
ELF64_Half st_shndx;
} ELF64_Sym;
표 2에서, "st_name"은 심볼 테이블 스트링 테이블(즉, 섹션“.dynstr")을 가리키는 인덱스를 포함하고, 상기 인덱스를 통해 심볼 네임을 획득하며, 나아가 오프셋 주소 “offset"에 대응되는 함수 명칭을 획득할 수 있다. 본 발명의 명세서에서는 64 비트 운영 체제 중의 ELF64 데이터 구조를 예시로서 본 발명에 따른 방법(300)의 구체적인 구현을 설명하였으나 상기 방법(300)은 예를 들어 32 비트 시스템에서 구현될 수도 있음을 이해할 수 있다. 이 경우, ELF32 포맷의 데이터 구조를 적용하여 데이터를 저장할 수 있다. 이하, 도 6을 참조하여 함수의 오프셋 주소 및 함수 명칭 간의 관련 관계를 설명한다.
도 6은 본 발명에 따른 예시적 실시형태의 실행 가능 파일 내의 복수의 섹션 중의 데이터에 기반하여 함수 주소와 함수 명칭 간의 관련 관계를 확정하는 블록도(600)를 예시적으로 도시한다. 도 6에 도시된 바와 같이, 제1 애플리케이션(210)의 섹션(610)(즉, 섹션 “.rel.plt")에서 각각 오프셋 주소(612) 및 관련 리타겟팅 아이템 정보(614)를 획득할 수 있고, 매크로 ELF64_R_SYM를 사용하여 상기 리타겟팅 아이템의 섹션 “.dynsym"에서의 인덱스(620)를 획득한다. 계속하여, 인덱스(620)을 통해 주소 오프셋(612)에 대응되는 심볼 네임 정의(622)를 획득할 수 있고, 나아가 대응되는 심볼 테이블(630)을 검색하여 그로부터 대응되는 심볼 네임(632)을 획득할 수 있다.
본 발명의 예시적인 실시형태에 따르면, 섹션 “.rel.plt" 중의 모든 리타겟팅 아이템을 트래버싱하고, 상기 도 6에서 설명된 방식에 따라 각 판독 리타겟팅 아이템에 대응되는 ELF64_Rel 데이터 구조를 확정할 수 있다. 계속하여, 매크로 ELF64_R_SYM를 이용하여 ELF64_Rel 중의 “r_info" 필드에서 대응되는 인덱스를 판독하고, 상기 인덱스를 사용하여 섹션“.dynsym"에서 대응되는 심볼 정보를 검색하며 나아가 필드 “st_name"에 의해 정의된 스트링을 검색할 수 있다.
본 발명의 예시적인 실시형태에 따르면, 제1 애플리케이션(210)의 제1 실행 가능 파일에 포함된 한 그룹의 주소 중 지정된 주소에 대해, 지정된 주소와 관련된 함수 명칭을 획득하고; 및 함수 명칭과 제1 함수가 매칭되는 것으로 확정된 것에 응답하여, 지정된 주소를 제1 주소로 식별한다. 이러한 방식으로, 하나의 리타겟팅 아이템에 대응되는 함수 명칭을 획득할 수 있다. 구체적으로, 하나의 리타겟팅 아이템의 주소 오프셋이 0x000…00이고, 상기 리타겟팅 아이템에 의해 검색된 함수 명칭이 “A"리고 가정하면, 함수 명칭이 “A"인 제1 함수(220)의 제1 주소가 0x000…00임을 확정할 수 있다. 유사하게, 제1 스레드에 의해 호출된 다른 함수의 명칭 및 주소 간의 관련 관계를 획득할 수 있다. 이러한 방식으로, 제1 애플리케이션(210)의 제1 실행 가능 파일에 의해 호출된 전체 함수 및 대응되는 주소를 확정할 수 있다.
상기에는 이미 제1 함수(220)의 제1 주소를 획득하는 방법이 설명되었다. 유사하게, 제1 함수(220)에 대응되는 제2 함수(240)의 제2 주소를 획득하기 위해, 우선 제2 동적 링크 라이브러리(236)를 주소 공간 내로 로딩하고, 제2 애플리케이션(230)의 실행 가능 파일에 대해 상기 도 6에서 설명된 과정을 수행할 수 있음을 이해할 수 있을 것이다. 이러한 방식으로, 로딩된 제2 동적 링크 라이브러리(236)에 기반하여 제2 함수(240)의 주소 공간에서의 제2 주소를 획득할 수 있다. 구체적으로, 제2 애플리케이션(230)의 실행 가능 파일에 기반하여, 하나의 리타겟팅 아이템의 주소 오프셋이 0x010…00이고, 상기 리타겟팅 아이템에 의해 검색된 함수 명칭이 “A’”라고 가정하면, 함수 명칭이 “A’”인 제2 함수의 제2 주소가 0x010…000임을 확정할 수 있고, 계속하여, 제2 주소 0x010…000를 이용하여 주소 매핑(410) 중의 주소(420)에 저장된 제1 주소를 교체할 수 있다.
상기에는 이미 버전 업그레이드 목적을 달성하기 위해 제1 스레드(218)에 의해 호출된 제1 함수(220)의 주소를 업데이트하는 방법이 설명되었다. 제1 애플리케이션(210)의 하나 또는 복수의 동적 링크 라이브러리에는 내부 함수가 존재할 수도 있다. 여기서 내부 함수란 제1 애플리케이션(210)에 의해 직접 호출되지 않은 함수를 지칭한다. 내부 함수는 제1 애플리케이션(210)에 의해 간접적으로 호출될 수 있으므로 이러한 내부 함수에 대해서도 업그레이드해야 한다. 본 발명의 예시적인 실시형태에 따르면, 각각의 내부 함수에 대해 방법(300)과 유사하게 처리하기 위해, 제1 동적 링크 라이브러리(216) 중의 복수의 함수를 트래버싱할 수 있다.
본 발명의 예시적인 실시형태에 따르면, 제1 동적 링크 라이브러리(216)에서 제1 함수(220) 이외의 제3 함수(예를 들어, 함수 명칭은 “B"임)를 획득할 수 있고 계속하여, 제3 함수의 주소 공간에서의 제3 주소를 획득할 수 있다. 유사하게, 제2 동적 링크 라이브러리(236) 중 제3 함수 “B"에 대응되는 제4 함수(예를 들어, 함수 “B'")의 주소 공간에서의 제4 주소를 획득하고 제4 주소를 이용하여 주소 매핑 중의 제3 주소를 업데이트할 수 있다. 이 경우, 리부팅된 제1 스레드(238)는 제4 주소에 기반하여 새로운 버전의 함수(B')를 호출하고 나아가 업그레이드 목적을 달성한다.
이전 버전의 제1 애플리케이션(210)이 제1 함수(A)를 직접 호출하고, 상기 제1 함수(A)가 제3 함수(B)를 호출한다고 가정하면, 새로운 버전의 제2 애플리케이션(230)은 제2 함수(A')를 직접 호출하고, 상기 제2 함수(A')는 제4 함수(B')를 호출한다. 상기에서 설명된 방법에 따르면, 제2 동적 링크 라이브러리(236)를 이용하여 제1 동적 링크 라이브러리(216)를 교체할 수 있다. 나아가, 주소 매핑(410)에서, 제2 함수(A')의 제2 주소를 이용하여 제1 함수(A)의 제1 주소를 교체하고 제4 함수(B')의 제4 주소를 이용하여 제3 함수(B)의 제3 주소를 교체할 수 있다. 이 경우, 리부팅된 제1 스레드(238)는 새로운 버전의 함수(A')를 호출하고, 상기 새로운 버전의 함수(A')는 새로운 버전의 함수(B')를 호출하게 된다.
상기에서는 단지 제1 함수(220)를 제1 애플리케이션(210)에 의해 직접 호출되는 함수의 예시로 하고, 제3 함수를 제1 애플리케이션(210)에 의해 간접적으로 호출되는 함수의 예시로 하여 제1 애플리케이션(210) 중의 각 함수를 업그레이드하는 구체적인 조작을 설명하였으나, 상기 제1 애플리케이션(210)은 직접 또는 간접적으로 호출되는 보다 많은 함수를 더 포함할 수 있음을 이해할 수 있을 것이다. 이 경우, 업그레이드 과정에 관한 각 함수의 함수 명칭에 대응되는 주소 정보를 검색하기 위해, 제1 애플리케이션(210)의 실행 가능 파일의 섹션 ".rel.plt" 및 제1 애플리케이션(210)의 각각의 동적 링크 라이브러리의 섹션 “.rel.plt" 중의 리타겟팅 아이템을 각각 트래버싱할 수 있다. 동적 링크 라이브러리 및 업데이트 주소 매핑(410) 중의 주소 정보를 교체함으로써, 리부팅된 제1 스레드(238)가 새로운 버전의 각 함수를 호출하도록 할 수 있다.
상기에는 이미 동적 링크 라이브러리 및 주소 매핑의 업데이트에 기반하여, 리부팅된 제1 스레드(238)가 제2 애플리케이션(230) 중의 제2 함수(240)를 실행시키는 구체적인 실시형태가 설명되었다. 제1 동적 링크 라이브러리에는 예를 들어 전역 변수 및 정적 변수가 존재할 수 있는데, 이러한 변수의 저장 공간은 컴파일링 동안에 할당된 것이고, 또한 이러한 변수의 값은 제1 애플리케이션(210)이 실행되는 동안에 보정됨을 이해할 수 있을 것이다. 따라서 이러한 보정된 변수를 저장해야 하고 또한 보정된 변수의 값을 제2 동적 링크 라이브러리(236) 중의 대응되는 변수와 동기화하여야 한다. 이러한 방식을 통해서만 리부팅된 제1 스레드(238) 중의 각각의 전역 변수 및 정적 변수의 값과 리부팅 전의 값이 일치하도록 보장할 수 있다.
본 발명의 예시적인 실시형태에 따르면, 제2 동적 링크 라이브러리(236)에 기반하여 제1 프로세스(212)를 업데이트하는 단계는 변수 처리 과정을 더 포함할 수 있다. 구체적으로, 제1 동적 링크 라이브러리(216)와 관련된 제1 변수를 확정하되, 제1 변수의 주소는 제1 애플리케이션을 컴파일링하는 동안에 할당된 것이다. 이하, 도 7을 참조하여 변수 동기화와 관련된 과정의 더욱 상세한 내용을 설명한다. 도 7은 본 발명에 따른 예시적 실시형태의 등록 파일에 기반하여 제1 애플리케이션(210)과 제2 애플리케이션(230) 중의 변수 사이에서 동기화를 수행하는 블록도(700)를 예시적으로 도시한다. 도 7에 도시된 바와 같이, 제1 동적 링크 라이브러리(216)의 소스 코드(710) 중의 코드 라인(712)은 정적 변수(xyz)를 정의한다. 이 경우, 상기 정적 변수(xyz)를 위한 저장 공간은 컴파일링 단계에서 할당된다. 상기 정적 변수(xyz)는 카운터 역할을 하며, 함수goo()가 호출될 때마다 누적 조작을 수행할 수 있다.
제1 애플리케이션(210)이 실행되는 동안에 함수goo()는 여러번 호출될 수 있으므로 업데이트 조작 수행시 상기 정적 변수(xyz)의 값은 이미 보정(예를 들어, xyz=100)되었음을 이해할 수 있을 것이다. xyz=100의 값이 제2 애플리케이션(230)에 동기화되도록, 제2 애플리케이션(230)에서 제1 변수에 대응되는 제2 변수를 확정하고, 제1 변수의 값에 기반하여 제2 변수를 설정할 수 있다. 본 발명의 예시적인 실시형태를 이용하여 제1 애플리케이션(210) 중의 각 변수의 값이 제2 애플리케이션(230) 중의 대응되는 변수와 동기화되도록 보장할 수 있다.
구체적으로, 제1 애플리케이션(210)과 제2 애플리케이션(230) 간의 변수 동기화가 용이하도록, 제1 동적 링크 라이브러리(216)에 제1 등록 파일(720)을 추가하고, 제2 동적 링크 라이브러리(236)에 제2 등록 파일(722)을 추가할 수 있다. 여기서, 제1 등록 파일720에 포함된 제1 변수의 값은 제1 스레드(218)가 실행되는 동안에 동적으로 업데이트된다. 상기에서 xyz=100인 경우, 제1 등록 파일(720)에는 “xyz=100"인 정보가 포함될 수 있다. 계속하여, 제1 변수의 값에 기반하여 제2 변수의 값을 업데이트할 수 있는데, 이 경우 제2 등록 파일(722)에도 “xyz=100"인 정보가 포함될 수 있다.
본 발명의 예시적인 실시형태에 따르면, 변수 동기화 목적을 달성하기 위해 리부팅된 제1 스레드(238)는 제2 등록 파일(722)에서 제2 변수를 판독할 수 있다. 이 경우, 리부팅된 제1 스레드(238)는 우선 제2 등록 파일(722)에서 "xyz=100"을 판독하고, 제2 동적 링크 라이브러리(236)에서 정의된 대응되는 정적 변수(xyz)의 값을 100으로 설정한다. 이러한 방식으로, 제2 애플리케이션(230)은 제1 스레드가 리부팅되기 전의 상태로 복구될 수 있다.
비록 상기에서는 정적 변수(xyz)를 동기화할 변수의 예시로서 변수 동기화 과정를 설명하였으나 본 발명의 예시적인 실시형태에 따르면, 제1 동적 링크 라이브러리(216)는 하나 또는 복수의 전역 변수 및/또는 정적 변수를 포함할 수 있으며 유사한 방식에 따라 각 변수에 대해 일일이 조작 가능함을 이해할 수 있을 것이다. 예를 들어, 동기화 조작을 구현하기 위해 제1 등록 파일(720) 및 제2 등록 파일(722)에 각각의 동기화할 변수에 대응되는 엔트리에 삽입할 수 있다. 본 발명의 예시적인 실시형태를 이용하여 제1 등록 파일(720) 및 제2 등록 파일(722)을 통해 간단하고 효율적인 방식으로 이전 버전의 제1 애플리케이션(210) 중의 각 정적 변수/전역 변수의 값을 새로운 버전의 제2 애플리케이션(230) 중의 각 에 대응되는 정적 변수/전역 변수에 복사할 수 있다.
상기에서는 이미 업그레이드를 수행하기 위한 구체적인 실시형태를 설명하였는 바, 업그레이드 조작이 이미 완료된 후 이전 단계에서 컴퓨팅 기기의 메모리 내로 로딩한 더 이상 사용하지 않는 데이터를 삭제할 수 있다. 본 발명의 예시적인 실시형태에 따르면, 제1 스레드가 이미 리부팅된 것으로 확정된 것에 응답하여, 제1 애플리케이션(210)을 실행하는 컴퓨팅 기기의 메모리에서 상기 제1 주소를 확정하기 위해 메모리에 로딩된 제1 실행 가능 파일 내의 해당 부분을 삭제한다.
예를 들어, 함수 명칭과 함수 주소 간의 관련 관계를 확정하기 위해, 컴퓨팅 기기의 메모리에 도 6에 도시된 각각의 데이터 구조를 로딩할 수 있다. 관련 관계가 이미 확정된 후, 주소 매핑에서 이전 버전 함수의 주소는 이미 새로운 버전 함수의 주소로 교체되고, 또한 리부팅된 제1 스레드(238)는 이미 업데이트된 주소 매핑에 기반하여 새로운 버전 함수를 호출하였다. 이 경우, 컴퓨팅 기기의 메모리에 로딩된 제1 동적 링크 라이브러리(216)의 각 섹션에 관련된 정보는 더 이상 사용되지 않으며 따라서 이러한 정보가 위치하는 저장 공간을 해제할 수 있다.
본 발명의 예시적인 실시형태에 따르면, 새로운 버전의 동적 링크 라이브러리를 이용하여 이전 버전의 동적 링크 라이브러리를 교체하는 방식을 적용하여 핫 업그레이드를 구현하므로, 제1 애플리케이션 및 제2 애플리케이션은 각각 동적 컴파일링 방식으로 생성되어야 한다. 나아가, 동적 링크 라이브러리에서 애플리케이션의 핵심 서비스 로직을 구현할 수 있고, 애플리케이션의 메인 프로그램에는 동적 링크 라이브러리의 함수를 호출하기 위한 인터페이스 함수가 포함될 수 있다. 이 경우, 제1 동적 링크 라이브러리(216) 및 제2 동적 링크 라이브러리(236)는 각각 제1 애플리케이션(210) 및 제2 애플리케이션(230)의 핵심 서비스 로직을 포함하고, 나아가 동적 링크 라이브러리를 교체하는 방식으로 애플리케이션 업그레이드 목적을 구현할 수 있다.
상기에서는 이미 제1 애플리케이션(210)으로부터 제2 애플리케이션(230)으로 업그레이드되는 구체적인 과정이 설명되었다. 본 발명의 예시적인 실시형태에 따르면, 상기 제2 애플리케이션(230)은 또한 업데이트 버전의 제3 애플리케이션으로 업그레이드될 수 있다. 이 경우, 상기에서 설명된 방법에 따라 업그레이드 단계를 수행하고, 제3 애플리케이션의 제3 동적 링크 라이브러리를 이용하여 제2 동적 링크 라이브러리를 교체하며, 제3 애플리케이션 중의 각 함수의 주소를 이용하여 제2 애플리케이션 중의 대응되는 함수의 주소를 업데이트할 수 있다.
상기에서는 이미 애플리케이션 업그레이드를 수행하는 방법(300)의 복수의 실시형태가 상세하게 설명되었다. 본 발명의 예시적인 실시형태에 따르면, 또한 애플리케이션 업그레이드를 수행하는 장치를 제공한다. 이하, 도 8을 참조하여 상세하게 설명한다. 도 8은 본 발명에 따른 예시적 실시형태의 애플리케이션 업그레이드 장치(800)의 블록도를 예시적으로 도시한다. 도 8에 도시된 바와 같이, 상기 장치(800)는, 제1 애플리케이션의 제1 프로세스에 의해 실행되는 제1 스레드에 대해, 제1 스레드에 의해 호출되는 제1 함수를 확정하는 제1 확정 모듈(810); 제2 애플리케이션에서 제1 함수에 대응되는 제2 함수를 확정하는 제2 확정 모듈(820) - 제1 애플리케이션은 제2 애플리케이션으로 업그레이드되며, 제1 함수는 제2 함수로 업그레이드됨 -; 제2 함수를 포함하는 제2 애플리케이션의 제2 동적 링크 라이브러리에 기반하여 제1 함수를 포함하는 제1 애플리케이션의 제1 동적 링크 라이브러리를 교체하는 교체 모듈(830); 및 제2 동적 링크 라이브러리에 기반하여 제1 프로세스를 업데이트함으로써, 업데이트된 제1 프로세스가 제2 애플리케이션의 제2 함수를 실행하도록 하는 업데이트 모듈(840)을 포함한다.
본 발명의 예시적인 실시형태에 따르면, 업데이트 모듈(840)은, 제1 프로세스의 주소 매핑을 획득하는 주소 매핑 획득 모듈 - 주소 매핑은 제1 프로세스의 주소 공간에서의 제1 함수의 제1 주소를 포함함 - ; 주소 공간에서의 제2 함수의 제2 주소를 이용하여 주소 매핑 중의 제1 함수의 제1 주소를 업데이트하는 주소 업데이트 모듈; 및 제1 스레드를 리부팅함으로써, 리부팅된 제1 스레드가 업데이트된 주소 매핑에 기반하여 제2 동적 링크 라이브러리 중의 제2 함수를 호출하도록 하는 리부팅 모듈을 포함한다.
본 발명의 예시적인 실시형태에 따르면, 주소 공간에서의 제1 함수의 제1 주소를 획득하는 주소 획득 모듈를 더 포함한다.
본 발명의 예시적인 실시형태에 따르면, 주소 획득 모듈은, 제1 애플리케이션의 제1 실행 가능 파일에 포함된 한 그룹의 주소 중 지정된 주소에 대해, 지정된 주소와 관련된 함수 명칭을 획득하는 함수 명칭 획득 모듈; 및 함수 명칭과 제1 함수가 매칭되는 것으로 확정된 것에 응답하여, 지정된 주소를 제1 주소로 식별하는 식별 모듈을 더 포함한다.
본 발명의 예시적인 실시형태에 따르면, 제1 스레드가 이미 리부팅된 것으로 확정된 것에 응답하여, 제1 애플리케이션을 실행하는 컴퓨팅 기기의 메모리에서 제1 주소를 확정하기 위해 메모리에 로딩된 제1 실행 가능 파일 내의 해당 부분을 삭제하는 삭제 모듈을 더 포함한다.
본 발명의 예시적인 실시형태에 따르면, 주소 업데이트 모듈은, 제2 동적 링크 라이브러리를 주소 공간으로 로딩하는 로딩 모듈; 및 로딩된 제2 동적 링크 라이브러리에 기반하여 주소 공간에서의 제2 함수의 제2 주소를 획득하는 주소 획득 모듈을 더 포함한다.
본 발명의 예시적인 실시형태에 따르면, 제1 동적 링크 라이브러리 중의 제1 함수 이외의 제3 함수에 대해, 주소 공간에서의 제3 함수의 제3 주소를 획득하는 제1 링크 라이브러리 처리 모듈; 및 제2 동적 링크 라이브러리 중 제3 함수에 대응되는 주소 공간에서의 제4 함수의 제4 주소를 획득하는 제2 링크 라이브러리 처리 모듈을 더 포함한다.
본 발명의 예시적인 실시형태에 따르면, 업데이트 모듈(840)은 또한 상기 제4 주소를 이용하여 상기 주소 매핑 중의 상기 제3 주소를 업데이트한다.
본 발명의 예시적인 실시형태에 따르면, 업데이트 모듈(840)은, 제1 동적 링크 라이브러리와 관련된 제1 변수를 확정하는 제1 변수 확정 모듈 - 제1 변수의 주소는 제1 애플리케이션을 컴파일링하는 동안에 할당된 것임 - ; 제2 애플리케이션에서 제1 변수에 대응되는 제2 변수를 확정하는 제2 변수 확정 모듈 - ; 및 제1 변수의 값에 기반하여 제2 변수를 설정하는 변수 설정 모듈을 더 포함한다.
본 발명의 예시적인 실시형태에 따르면, 변수 설정 모듈은, 제1 동적 링크 라이브러리 및 제2 동적 링크 라이브러리에 각각 제1 등록 파일 및 제2 등록 파일을 추가하는 등록 모듈 - 제1 등록 파일에 포함된 제1 변수의 값은 제1 스레드가 실행되는 동안 동적으로 업데이트됨 - ; 제1 등록 파일에 기반하여 제2 등록 파일을 동기화하는 동기화 모듈; 및 제2 등록 파일에 기반하여 제2 변수의 값을 업데이트하는 변수 업데이트 모듈을 포함한다.
본 발명의 예시적인 실시형태에 따르면, 변수 업데이트 모듈은, 리부팅된 제1 스레드가 제2 등록 파일에서 제2 변수의 값을 판독하도록 하는 판독 모듈을 포함한다.
본 발명의 예시적인 실시형태에 따르면, 제1 애플리케이션 및 제2 애플리케이션은 각각 동적 컴파일링 방식을 통해 생성된 것이다.
본 발명의 예시적인 실시형태에 따르면, 제1 동적 링크 라이브러리 및 제2 동적 링크 라이브러리는 각각 제1 애플리케이션 및 제2 애플리케이션의 핵심 서비스 로직을 포함한다.
도 9는 본 발명의 실시형태를 실행 가능한 예시적 기기(900)의 예시적인 블록도를 도시한다. 기기(900)는 도 3에 의해 설명된 방법을 구현할 수 있다. 도면에 도시된 바와 같이, 기기(900)는 판독 전용 메모리(ROM)(902)에 저장된 컴퓨터 프로그램 명령 또는 저장 유닛(908)으로부터 랜덤 액세스 메모리(RAM)(903)에 로딩된 컴퓨터 프로그램 명령에 따라, 다양한 적절한 동작 및 처리를 수행할 수 있는 중앙 처리 장치(CPU)(901)를 포함한다. RAM(903)에, 기기(900) 작동에 필요한 다양한 프로그램과 데이터가 더 저장될 수 있다. CPU(901), ROM(902) 및 RAM(903)은 버스(904)를 통해 서로 연결된다. 입력/출력(I/O) 인터페이스(905)도 버스(904)에 연결된다.
예를 들어 키보드, 마우스 등을 포함하는 입력 유닛(906); 예를 들어 다양한 타입의 디스플레이, 스피커 등을 포함하는 출력 유닛(907); 예를 들어 자기 디스크, 광 디스크 등을 포함하는 저장 유닛(908); 및 예를 들어 LAN 카드, 모뎀, 무선 통신 트랜시버 등을 포함하는 통신 유닛(909)을 포함하는 기기(900) 중의 복수의 부재는 I/O 인터페이스(905)에 연결된다. 통신 유닛(909)은 기기(900)가 인터넷과 같은 컴퓨터 네트워크 및/또는 다양한 전기 통신망에 의해 다른 기기와 정보/데이터를 교환할 수 있도록 허용한다.
처리 유닛(901)은 상술한 각각의 방법, 예를 들어 방법(200) 및/또는 방법(300) 및 처리를 수행한다. 예를 들어, 일부 실시형태에서, 방법(200) 및/또는 방법(300)은 저장 유닛(908)과 같은 기계 판독 가능 매체에 유형으로 포함되는 컴퓨터 소프트웨어 프로그램에 의해 구현될 수 있다. 일부 실시형태에서, 컴퓨터 프로그램의 일부 또는 전부는 ROM(902) 및/또는 통신 유닛(909)에 의해 기기(900)에 로딩 및/또는 실장될 수 있다. 컴퓨터 프로그램이 RAM(903)에 로딩되고 CPU(901)에 의해 실행될 경우, 상술한 방법(200) 및/또는 방법(300)의 하나 또는 복수의 단계를 수행할 수 있다. 대체 가능하게, 다른 실시형태에서, CPU(901)는 다른 임의의 적절한 방식(예를 들어, 펌웨어에 의해)에 의해 방법(200) 및/또는 방법(300)을 수행하도록 구성될 수 있다.
본 발명의 예시적인 실시형태에 따르면, 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체로서, 프로그램이 프로세서에 의해 실행될 경우 본 발명에서 설명된 방법을 구현하는 컴퓨터 판독 가능 저장 매체를 제공한다.
본문에서 이상 설명된 기능은 적어도 일부가 하나 또는 복수의 하드웨어 논리 부재에 의해 실행될 수 있다. 예를 들어, 비제한적으로, 사용 가능한 시범 유형의 하드웨어 논리 부재는 필드 프로그램 가능 게이트 어레이(FPGA), 전용 집적 회로(ASIC), 전용 표준 제품(ASSP), 시스템 온 칩의 시스템(SOC), 복합 프로그램 가능 논리 소자(CPLD) 등을 포함한다.
본 발명의 방법을 구현하는 프로그램 코드는 하나 또는 복수의 프로그래밍 언어의 임의의 조합으로 편집할 수 있다. 이러한 프로그램 코드는 범용 컴퓨터, 전용 컴퓨터 또는 다른 프로그램 가능 데이터 처리 장치의 프로세서 또는 제어기에 제공될 수 있으며, 프로그램 코드는 프로세서 또는 제어기에 의해 실행될 경우, 흐름도 및/또는 블록도에 지정된 기능/작동이 구현되도록 할 수 있다. 프로그램 코드는 완전히 기계에서 실행되거나, 부분적으로 기계에서 실행되거나, 독립형 소프트웨어 패키지로서 기계에서 실행되며, 일부는 원격 기계에서 실행되거나 완전히 원격 기계 또는 서버에서 실행될 수 있다.
본 발명의 컨텍스트에서, 기계 판독 가능 매체는 명령 실행 시스템, 장치 또는 기기에 의해 또는 명령 실행 시스템, 장치 또는 기기와 결합하여 사용하기 위한 프로그램을 포함하거나 저장할 수있는 유형 매체일 수 있다. 기계 판독 가능 매체는 기계 판독 가능 신호 매체 또는 기계 판독 가능 저장 매체일 수 있다. 기계 판독 가능 매체는 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 기기, 또는 상기 내용의 임의의 적절한 조합을 포함할 수 있지만 이에 한정되지 않는다. 기계 판독 가능 저장 매체의 보다 구체적인 예는 하나 또는 복수의 와이어에 기반한 전기 연결, 휴대용 컴퓨터 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 가능 프로그램 가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, CD-ROM, 광학 저장 기기, 자기 저장 기기 또는 상술한 내용의 임의의 적절한 조합을 포함한다.
이 밖에, 특정 순서로 각 동작을 설명하였지만, 이는 이러한 동작들이 도시된 특정 순서 또는 순차적 순서로 수행되도록 요구되거나 모든 도시된 동작들이 예기한 결과에 달성하기 위해 수행되어야 함을 이해해야 한다. 일정한 환경에서, 다수의 미션 및 합병 처리는 유리할 수 있다. 마찬가지로, 상술한 설명에서 여러 개의 구체적인 구현 세부사항이 포함되어 있지만 이것이 본 발명의 범위를 한정하는 것으로 해석되어서는 안된다. 독립적인 실시형태의 컨텍스트에서 설명된 특정된 특징은 단일 구현으로 조합되어 구현될 수 있다. 반대로, 단일 구현의 컨텍스트에서 설명된 다양한 특징은 또한 다수의 구현에서 독립적으로 또는 임의의 적절한 하위 조합으로 구현될 수도 있다.
구조 특징 및/또는 방법 논리적 동작에 특정된 언어로 본 부제를 설명하였지만, 첨부된 청구범위에서 한정된 주제는 상술한 특정된 특징 또는 동작에 반드시 한정되는 것은 아님을 이해해야 한다. 반대로, 상술한 특정된 특징 및 동작은 단지 청구범위의 예시적 형태를 구현하기 위한 것이다.

Claims (22)

  1. 애플리케이션 업그레이드 방법에 있어서,
    제1 애플리케이션의 제1 프로세스에 의해 실행되는 제1 스레드에 대해, 상기 제1 스레드에 의해 호출되는 제1 함수를 확정하는 단계;
    제2 애플리케이션에서 상기 제1 함수에 대응되는 제2 함수를 확정하는 단계 - 상기 제1 애플리케이션은 상기 제2 애플리케이션으로 업그레이드되며, 상기 제1 함수는 상기 제2 함수로 업그레이드됨 - ;
    상기 제2 함수를 포함하는 상기 제2 애플리케이션의 제2 동적 링크 라이브러리에 기반하여, 상기 제1 함수를 포함하는 상기 제1 애플리케이션의 제1 동적 링크 라이브러리를 교체하는 단계; 및
    상기 제2 동적 링크 라이브러리에 기반하여 상기 제1 프로세스를 업데이트함으로써, 업데이트된 상기 제1 프로세스가 상기 제2 애플리케이션의 제2 함수를 실행하도록 하는 단계를 포함하는 애플리케이션 업그레이드 방법.
  2. 제1항에 있어서,
    상기 제2 동적 링크 라이브러리에 기반하여 상기 제1 프로세스를 업데이트하는 단계는,
    상기 제1 프로세스의 주소 매핑을 획득하는 단계 - 상기 주소 매핑은 상기 제1 프로세스의 주소 공간에서의 상기 제1 함수의 제1 주소를 포함함 - ;
    상기 주소 공간에서의 상기 제2 함수의 제2 주소를 이용하여 상기 주소 매핑 중의 상기 제1 함수의 제1 주소를 업데이트하는 단계; 및
    상기 제1 스레드를 리부팅함으로써, 리부팅된 제1 스레드가 업데이트된 상기 주소 매핑에 기반하여 상기 제2 동적 링크 라이브러리 중의 상기 제2 함수를 호출하도록 하는 단계를 포함하는 애플리케이션 업그레이드 방법.
  3. 제2항에 있어서,
    상기 주소 공간에서의 상기 제1 함수의 상기 제1 주소를 획득하는 단계를 더 포함하고,
    상기 주소 공간에서의 상기 제1 함수의 상기 제1 주소를 획득하는 단계는,
    상기 제1 애플리케이션의 제1 실행 가능 파일에 포함된 한 그룹의 주소 중 지정된 주소에 대해, 상기 지정된 주소와 관련된 함수 명칭을 획득하는 단계; 및
    상기 함수 명칭과 상기 제1 함수가 매칭되는 것으로 확정된 것에 응답하여, 상기 지정된 주소를 상기 제1 주소로 식별하는 단계를 포함하는 애플리케이션 업그레이드 방법.
  4. 제3항에 있어서,
    상기 제1 스레드가 이미 리부팅된 것으로 확정된 것에 응답하여, 상기 제1 애플리케이션을 실행하는 컴퓨팅 기기의 메모리에서 상기 제1 주소를 확정하기 위해 상기 메모리에 로딩된 상기 제1 실행 가능 파일 내의 해당 부분을 삭제하는 단계를 더 포함하는 애플리케이션 업그레이드 방법.
  5. 제2항에 있어서,
    상기 제2 동적 링크 라이브러리를 상기 주소 공간으로 로딩하는 단계; 및
    로딩된 상기 제2 동적 링크 라이브러리에 기반하여 상기 주소 공간에서의 상기 제2 함수의 상기 제2 주소를 획득하는 단계를 더 포함하는 애플리케이션 업그레이드 방법.
  6. 제2항에 있어서,
    상기 제1 동적 링크 라이브러리 중의 상기 제1 함수 이외의 제3 함수에 대해, 상기 주소 공간에서의 상기 제3 함수의 제3 주소를 획득하는 단계;
    상기 제2 동적 링크 라이브러리 중 상기 제3 함수에 대응되는 상기 주소 공간에서의 제4 함수의 제4 주소를 획득하는 단계; 및
    상기 제4 주소를 이용하여 상기 주소 매핑 중의 상기 제3 주소를 업데이트하는 단계를 더 포함하는 애플리케이션 업그레이드 방법.
  7. 제2항에 있어서,
    상기 제2 동적 링크 라이브러리에 기반하여 상기 제1 프로세스를 업데이트하는 단계는,
    상기 제1 동적 링크 라이브러리와 관련된 제1 변수를 확정하는 단계 - 상기 제1 변수의 주소는 상기 제1 애플리케이션을 컴파일링하는 동안에 할당된 것임 - ;
    상기 제2 애플리케이션에서 상기 제1 변수에 대응되는 제2 변수를 확정하는 단계; 및
    상기 제1 변수의 값에 기반하여 상기 제2 변수를 설정하는 단계를 포함하는 애플리케이션 업그레이드 방법.
  8. 제7항에 있어서,
    상기 제1 변수의 값에 기반하여 상기 제2 변수를 설정하는 단계는,
    상기 제1 동적 링크 라이브러리 및 상기 제2 동적 링크 라이브러리에 각각 제1 등록 파일 및 제2 등록 파일을 추가하는 단계 - 상기 제1 등록 파일에 포함된 상기 제1 변수의 값은 상기 제1 스레드가 실행되는 동안 동적으로 업데이트됨 - ;
    상기 제1 등록 파일에 기반하여 상기 제2 등록 파일을 동기화하는 단계; 및
    상기 제2 등록 파일에 기반하여 상기 제2 변수의 값을 업데이트하는 단계를 포함하는 애플리케이션 업그레이드 방법.
  9. 제8항에 있어서,
    상기 제2 등록 파일에 기반하여 상기 제2 변수의 값을 업데이트하는 단계는,
    리부팅된 제1 스레드가 상기 제2 등록 파일에서 상기 제2 변수의 값을 판독하도록 하는 단계를 포함하는 애플리케이션 업그레이드 방법.
  10. 제1항에 있어서,
    상기 제1 애플리케이션 및 상기 제2 애플리케이션은 각각 동적 컴파일링 방식을 통해 생성된 것이고;
    상기 제1 동적 링크 라이브러리 및 상기 제2 동적 링크 라이브러리는 각각 제1 애플리케이션 및 상기 제2 애플리케이션의 핵심 서비스 로직을 포함하는 애플리케이션 업그레이드 방법.
  11. 애플리케이션 업그레이드 장치에 있어서,
    제1 애플리케이션의 제1 프로세스에 의해 실행되는 제1 스레드에 대해, 상기 제1 스레드에 의해 호출되는 제1 함수를 확정하는 제1 확정 모듈;
    제2 애플리케이션에서 상기 제1 함수에 대응되는 제2 함수를 확정하는 제2 확정 모듈 - 상기 제1 애플리케이션은 상기 제2 애플리케이션으로 업그레이드되며, 상기 제1 함수는 상기 제2 함수로 업그레이드됨 - ;
    상기 제2 함수를 포함하는 상기 제2 애플리케이션의 제2 동적 링크 라이브러리에 기반하여 상기 제1 함수를 포함하는 상기 제1 애플리케이션의 제1 동적 링크 라이브러리를 교체하는 교체 모듈; 및
    상기 제2 동적 링크 라이브러리에 기반하여 상기 제1 프로세스를 업데이트함으로써, 업데이트된 상기 제1 프로세스가 상기 제2 애플리케이션의 제2 함수를 실행하도록 하는 업데이트 모듈을 포함하는 애플리케이션 업그레이드 장치.
  12. 제11항에 있어서,
    상기 업데이트 모듈은,
    상기 제1 프로세스의 주소 매핑을 획득하는 주소 매핑 획득 모듈 - 상기 주소 매핑은 상기 제1 프로세스의 주소 공간에서의 상기 제1 함수의 제1 주소를 포함함 - ;
    상기 주소 공간에서의 상기 제2 함수의 제2 주소를 이용하여 상기 주소 매핑 중의 상기 제1 함수의 제1 주소를 업데이트하는 주소 업데이트 모듈; 및
    상기 제1 스레드를 리부팅함으로써, 리부팅된 제1 스레드가 업데이트된 상기 주소 매핑에 기반하여 상기 제2 동적 링크 라이브러리 중의 상기 제2 함수를 호출하도록 하는 리부팅 모듈을 포함하는 애플리케이션 업그레이드 장치.
  13. 제12항에 있어서,
    상기 주소 공간에서의 상기 제1 함수의 상기 제1 주소를 획득하는 주소 획득 모듈를 더 포함하고,
    상기 주소 획득 모듈은,
    상기 제1 애플리케이션의 제1 실행 가능 파일에 포함된 한 그룹의 주소 중 지정된 주소에 대해, 상기 지정된 주소와 관련된 함수 명칭을 획득하는 함수 명칭 획득 모듈; 및
    상기 함수 명칭과 상기 제1 함수가 매칭되는 것으로 확정된 것에 응답하여, 상기 지정된 주소를 상기 제1 주소로 식별하는 식별 모듈을 더 포함하는 애플리케이션 업그레이드 장치.
  14. 제13항에 있어서,
    상기 제1 스레드가 이미 리부팅된 것으로 확정된 것에 응답하여, 상기 제1 애플리케이션을 실행하는 컴퓨팅 기기의 메모리에서 상기 제1 주소를 확정하기 위해 상기 메모리에 로딩된 상기 제1 실행 가능 파일 내의 해당 부분을 삭제하는 삭제 모듈을 더 포함하는 애플리케이션 업그레이드 장치.
  15. 제12항에 있어서,
    상기 주소 업데이트 모듈은,
    상기 제2 동적 링크 라이브러리를 상기 주소 공간으로 로딩하는 로딩 모듈; 및
    로딩된 상기 제2 동적 링크 라이브러리에 기반하여 상기 주소 공간에서의 상기 제2 함수의 상기 제2 주소를 획득하는 주소 획득 모듈을 더 포함하는 애플리케이션 업그레이드 장치.
  16. 제12항에 있어서,
    상기 제1 동적 링크 라이브러리 중의 상기 제1 함수 이외의 제3 함수에 대해, 상기 주소 공간에서의 상기 제3 함수의 제3 주소를 획득하는 제1 링크 라이브러리 처리 모듈; 및
    상기 제2 동적 링크 라이브러리 중 상기 제3 함수에 대응되는 상기 주소 공간에서의 제4 함수의 제4 주소를 획득하는 제2 링크 라이브러리 처리 모듈을 더 포함하고,
    상기 업데이트 모듈은 또한 상기 제4 주소를 이용하여 상기 주소 매핑 중의 상기 제3 주소를 업데이트하는 애플리케이션 업그레이드 장치.
  17. 제12항에 있어서,
    상기 업데이트 모듈은,
    상기 제1 동적 링크 라이브러리와 관련된 제1 변수를 확정하는 제1 변수 확정 모듈 - 상기 제1 변수의 주소는 상기 제1 애플리케이션을 컴파일링하는 동안에 할당된 것임 - ;
    상기 제2 애플리케이션에서 상기 제1 변수에 대응되는 제2 변수를 확정하는 제2 변수 확정 모듈 - ; 및
    상기 제1 변수의 값에 기반하여 상기 제2 변수를 설정하는변수 설정 모듈을 더 포함하는 애플리케이션 업그레이드 장치.
  18. 제17항에 있어서,
    상기 변수 설정 모듈은,
    상기 제1 동적 링크 라이브러리 및 상기 제2 동적 링크 라이브러리에 각각 제1 등록 파일 및 제2 등록 파일을 추가하는 등록 모듈 - 상기 제1 등록 파일에 포함된 상기 제1 변수의 값은 상기 제1 스레드가 실행되는 동안 동적으로 업데이트됨 - ;
    상기 제1 등록 파일에 기반하여 상기 제2 등록 파일을 동기화하는 동기화 모듈; 및
    상기 제2 등록 파일에 기반하여 상기 제2 변수의 값을 업데이트하는 변수 업데이트 모듈을 포함하는 애플리케이션 업그레이드 장치.
  19. 제18항에 있어서,
    상기 변수 업데이트 모듈은,
    리부팅된 제1 스레드가 상기 제2 등록 파일에서 상기 제2 변수의 값을 판독하도록 하는 판독 모듈을 포함하는 애플리케이션 업그레이드 장치.
  20. 제11항에 있어서,
    상기 제1 애플리케이션 및 상기 제2 애플리케이션은 각각 동적 컴파일링 방식을 통해 생성된 것이고; 및
    상기 제1 동적 링크 라이브러리 및 상기 제2 동적 링크 라이브러리는 각각 제1 애플리케이션 및 상기 제2 애플리케이션의 핵심 서비스 로직을 포함하는 애플리케이션 업그레이드 장치.
  21. 하나 또는 복수의 프로세서; 및
    하나 또는 복수의 프로그램을 저장하기 위한 저장 장치를 포함하는 애플리케이션 업그레이드 기기에 있어서,
    상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제1항 내지 제10 중 어느 한 항에 따른 애플리케이션 업그레이드 방법을 구현하도록 하는 애플리케이션 업그레이드 기기.
  22. 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 프로그램이 프로세서에 의해 실행될 경우 제1항 내지제10항 중 어느 한 항에 따른 애플리케이션 업그레이드 방법을 구현하는 컴퓨터 판독 가능 저장 매체.
KR1020200003556A 2019-06-21 2020-01-10 애플리케이션 업그레이드 방법, 장치, 기기 및 저장 매체 KR102341388B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910544728.3A CN110275722B (zh) 2019-06-21 2019-06-21 用于升级应用的方法、装置、设备和存储介质
CN201910544728.3 2019-06-21

Publications (2)

Publication Number Publication Date
KR20200146006A true KR20200146006A (ko) 2020-12-31
KR102341388B1 KR102341388B1 (ko) 2021-12-21

Family

ID=67961594

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200003556A KR102341388B1 (ko) 2019-06-21 2020-01-10 애플리케이션 업그레이드 방법, 장치, 기기 및 저장 매체

Country Status (4)

Country Link
US (1) US11281445B2 (ko)
JP (1) JP7090657B2 (ko)
KR (1) KR102341388B1 (ko)
CN (1) CN110275722B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112199110B (zh) * 2020-10-16 2022-05-31 上海睿成软件有限公司 一种免重启运维升级方法、系统、装置和介质
CN112685063B (zh) * 2020-12-30 2023-11-28 北京天融信网络安全技术有限公司 特征库更新方法、装置、网络设备及可读存储介质
CN112667272A (zh) * 2020-12-31 2021-04-16 威胜集团有限公司 电表升级方法、系统、智能电表及存储介质
CN112650520B (zh) * 2020-12-31 2023-08-01 威胜集团有限公司 电表升级方法、系统、智能电表及存储介质
CN112988570B (zh) * 2021-02-08 2023-03-10 芯华章科技股份有限公司 一种调试程序的方法、电子设备及存储介质
CN113296786B (zh) * 2021-05-31 2024-05-14 上海米哈游璃月科技有限公司 数据处理方法、装置、电子设备及存储介质
CN113660123B (zh) * 2021-08-16 2024-02-13 杭州网易数之帆科技有限公司 虚拟交换机升级方法、装置、电子设备以及存储介质
CN114020618B (zh) * 2021-10-30 2023-10-03 江苏信而泰智能装备有限公司 一种基于fpga和dpdk的高可用测试方法及系统
CN114296754A (zh) * 2021-11-30 2022-04-08 深圳市广和通无线股份有限公司 芯片平台升级方法及相关装置
CN114237676B (zh) * 2021-12-28 2023-12-08 湖南云箭智能科技有限公司 一种fpga逻辑更新方法、装置、设备及可读存储介质
CN115640037B (zh) * 2022-09-09 2023-08-11 北京畅游创想软件技术有限公司 程序更新方法和装置
CN117806686A (zh) * 2022-09-26 2024-04-02 华为技术有限公司 应用程序的更新方法、装置、设备及计算机可读存储介质
CN115408031B (zh) * 2022-09-29 2023-09-05 北京亚控科技发展有限公司 应用的更新方法及相关设备
CN116400945B (zh) * 2023-06-08 2023-10-27 中航信移动科技有限公司 一种动态链接库升级方法、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190035686A (ko) * 2016-06-16 2019-04-03 버섹 시스템즈, 인코포레이션 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5341968B2 (ko) 1973-07-24 1978-11-08
JPH05341968A (ja) * 1992-06-05 1993-12-24 Nec Corp ライブラリ更新方式
JPH06110678A (ja) 1992-09-30 1994-04-22 Toshiba Corp プログラム実行方式及び実行プログラムの動的変更方法
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
GB0504570D0 (en) 2005-03-04 2005-04-13 Falanx Microsystems As Method of and apparatus for encoding data
JP2006268172A (ja) 2005-03-22 2006-10-05 Nec Corp サーバシステムおよびオンラインソフトウェア更新方法
CN101964725B (zh) * 2010-09-01 2014-12-10 中兴通讯股份有限公司 业务不中断升级的方法和系统
JP5906609B2 (ja) 2011-08-19 2016-04-20 富士通株式会社 デバッグ支援プログラム、デバッグ支援方法及びデバッグ支援システム
ES2439804B1 (es) * 2012-04-19 2014-10-29 Universitat Politècnica De Catalunya Procedimiento, sistema y pieza de código ejecutable para virtualizar un recurso de hardware asociado a un sistema informático
US9087191B2 (en) * 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
JP2015041273A (ja) 2013-08-22 2015-03-02 沖電気工業株式会社 プログラム更新システム、プログラム更新方法及びプログラム更新プログラム、並びに、通信装置
CN106371940B (zh) * 2015-07-21 2020-02-11 腾讯科技(深圳)有限公司 一种程序崩溃解决方法及装置
CN105630557B (zh) * 2015-12-24 2018-12-28 迈普通信技术股份有限公司 热补丁方法和装置
CN105955762A (zh) * 2016-04-19 2016-09-21 北京金山安全软件有限公司 一种注入动态链接库文件的方法、装置及电子设备
CN107870777A (zh) * 2016-09-23 2018-04-03 中兴通讯股份有限公司 一种热补丁实现方法及装置、终端
CN108268266A (zh) * 2016-12-29 2018-07-10 中移(苏州)软件技术有限公司 一种升级方法和装置
JP6751197B2 (ja) 2017-02-28 2020-09-02 日本電信電話株式会社 通信処理装置、情報処理装置、及び、通信処理装置の制御方法
CN107158705B (zh) * 2017-05-18 2018-09-18 腾讯科技(深圳)有限公司 服务的更新方法和装置
CN107357586B (zh) * 2017-07-14 2018-06-05 腾讯科技(深圳)有限公司 应用程序的控制方法、装置及设备
CN108427571A (zh) * 2018-02-07 2018-08-21 深圳市雁联计算系统有限公司 一种动态链接库更新方法及服务器
CN108845813A (zh) * 2018-06-14 2018-11-20 郑州云海信息技术有限公司 一种应用程序热更新方法
CN109857432B (zh) * 2019-01-14 2022-05-20 珠海金山网络游戏科技有限公司 一种游戏应用的热更新方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190035686A (ko) * 2016-06-16 2019-04-03 버섹 시스템즈, 인코포레이션 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법

Also Published As

Publication number Publication date
CN110275722A (zh) 2019-09-24
JP2021002317A (ja) 2021-01-07
US20200401392A1 (en) 2020-12-24
KR102341388B1 (ko) 2021-12-21
JP7090657B2 (ja) 2022-06-24
US11281445B2 (en) 2022-03-22
CN110275722B (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
KR102341388B1 (ko) 애플리케이션 업그레이드 방법, 장치, 기기 및 저장 매체
US10331425B2 (en) Automated source code adaption to inject features between platform versions
US10585655B2 (en) Systems and methods for automated retrofitting of customized code objects
US10684846B2 (en) Using semantic annotations to control compatibility behaviors
CN109032631B (zh) 应用程序补丁包获取方法、装置、计算机设备及存储介质
JP7212793B2 (ja) 関数ジャンプを実現するための方法、装置及びコンピュータ記憶媒体
US20210064351A1 (en) Packaging support system and packaging support method
WO2020063252A1 (zh) 一种实现多版本依赖隔离的方法和装置
CN113220669B (zh) 业务数据的处理方法、装置及电子设备
CN104407890A (zh) 一种从OTG设备启动Android系统的方法
US9588884B2 (en) Systems and methods for in-place reorganization of device storage
JP5895616B2 (ja) 情報処理装置およびプログラム実行方法
US7770152B1 (en) Method and apparatus for coordinating state and execution context of interpreted languages
CN104317660A (zh) 一种银行参数管理系统
CN115481103A (zh) 一种数据库扩缩容方法、装置及计算机可读存储介质
CN112612530B (zh) 类查询方法及装置
CN109947407B (zh) 一种数据获取方法及装置
US20150046414A1 (en) Computer product, managing apparatus, and managing method
US9720660B2 (en) Binary interface instrumentation
KR102456017B1 (ko) 응용 프로그램간 파일 공유 장치 및 방법
CN112612503A (zh) 一种软件的国际化资源扩展方法和装置
CN112650713A (zh) 文件系统的运行方法、装置、设备和存储介质
US20240103853A1 (en) Code maintenance system
US20230385075A1 (en) Networked Universal Code Package Provider
US20230244542A1 (en) System and method for automatically identifying application groups in container deployment environments

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant