KR101246360B1 - 메모리 및 임시 메모리를 이용한 패치 방법 및 그를 이용한 패치 서버, 패치 클라이언트 - Google Patents

메모리 및 임시 메모리를 이용한 패치 방법 및 그를 이용한 패치 서버, 패치 클라이언트 Download PDF

Info

Publication number
KR101246360B1
KR101246360B1 KR1020110147740A KR20110147740A KR101246360B1 KR 101246360 B1 KR101246360 B1 KR 101246360B1 KR 1020110147740 A KR1020110147740 A KR 1020110147740A KR 20110147740 A KR20110147740 A KR 20110147740A KR 101246360 B1 KR101246360 B1 KR 101246360B1
Authority
KR
South Korea
Prior art keywords
patch
memory
data
available space
file
Prior art date
Application number
KR1020110147740A
Other languages
English (en)
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 (주)네오위즈게임즈
Priority to KR1020110147740A priority Critical patent/KR101246360B1/ko
Priority to PCT/KR2012/006613 priority patent/WO2013100302A1/en
Priority to CN2012103330377A priority patent/CN102945170A/zh
Priority to TW101134887A priority patent/TW201327168A/zh
Application granted granted Critical
Publication of KR101246360B1 publication Critical patent/KR101246360B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

본 출원은 패치 기술에 관한 것으로서, 본 출원의 일 실시예에 따른 패치 방법은 패치 서버와 연결 가능하고, 저장 장치 및 메모리를 이용할 수 있는 패치 클라이언트에서 수행된다. 상기 패치 방법은 (a) 상기 패치 서버에 접속하여 패치 데이터를 수신하는 단계, (b) 상기 메모리의 가용 공간을 확인하는 단계, (c) 만일 상기 패치 데이터의 크기가 상기 메모리의 가용 공간보다 작거나 같으면, 상기 메모리의 가용 공간을 이용하여 패치를 수행하는 단계 및 (d) 그렇지 않으면, 상기 저장 장치에 상기 패치 데이터의 크기에 상응하는 임시 메모리를 할당하고, 할당된 임시 메모리를 이용하여 패치를 수행하는 단계를 포함한다.

Description

메모리 및 임시 메모리를 이용한 패치 방법 및 그를 이용한 패치 서버, 패치 클라이언트 {METHOD FOR DATA PATCH USING MEMORY AND TEMPORARY MEMORY AND PATCH SERVER AND CLIENT THEREOF}
본 출원은 패치 기술에 관한 것으로서, 더 상세하게는, 대용량 데이터를 보다 빠르고 안정적으로 패치할 수 있는 메모리 및 임시 메모리를 이용한 패치 방법 및 그를 이용한 패치 서버, 패치 클라이언트에 관한 것이다.
컴퓨팅 환경의 발전에 따라 하드웨어는 고성능화되고 구동되는 소프트웨어도 많은 자원을 이용할 수 있게 되었다. 이에 따라, 소프트웨어의 용량도 점진적으로 대용량화 되어가는 추세에 있다. 더욱이, 네트워크 환경의 발달에 따라, 소프트웨어의 전송 또는 배포는 네트워크를 이용하여 수행되는 것이 보편화되어 있다. 특히, 소프트웨어의 버전 업 등과 같은 이유에서 소프트웨어의 내용상의 변동 또는 확장이 빈번하게 발생하게 되고, 이러한 변동 또는 확장된 내용을 사용자에게 제공하여 소프트웨어를 갱신하는 것을 패치 또는 업데이트라고 한다.
종래의 패치 기술로는 패치 버전 정보를 이용한 패치 방법이 있다. 예를 들어, 패치 클라이언트가 패치 서버에 접속하여 현재 패치 버전과 서버의 패치 버전을 비교하고 패치가 필요하면 해당 내용을 일괄적으로 다운받아 저장하는 방식이 있다. 이러한 종래의 패치 방식은 패치 버전 정보 상에 오류가 발생하거나 일부 패치가 이뤄진 경우, 패치 중복이 발생할 수 있어 서버 및 클라이언트의 자원 활용의 비효율, 서버 병목 등의 문제점이 발생한다.
이러한 문제점을 해결하기 위하여, 패치 대상이 되는 파일에 대하여 변경된 내용에 대한 정보를 제공하며 패치를 수행하는 기술이 개발되었다. 그러나 이러한 변경된 기술의 경우에도, 패치를 수행하는 알고리즘 자체는 패치될 데이터를 하나의 메모리에 일괄 또는 순차로 저장하고 패치를 수행하고 있다. 따라서, 종래의 패치 기술과 비교하면 패치 데이터 자체는 다소 줄었다 하더라도 메모리 할당 및 패치 수행 알고리즘 자체는 개량되지 않았다. 이로 인하여, 패치 대상 파일의 다운로드 상 오류가 발생하면 패치 대상 데이터 전체를 다시 다운로드 해야하고, 대용량 파일의 패치의 경우 패치 프로세스 자체가 더뎌지고 하드웨어 자원의 비효율적 사용이 발생하는 등의 문제가 존재한다. 또한 이러한 패치 클라이언트의 비효율적 동작에 의하여 패치 서버에 과중한 부담이 부가되는 문제점이 있다.
본 출원은 개선된 패치 알고리즘을 적용하여 패치 클라이언트의 자원 활용성을 극대화하여 보다 빠르고 효율적으로 패치를 수행할 수 있도록 한다.
또한, 본 출원은 대용량 패치 파일에 대해서도 빠르고 안정적으로 패치를 수행할 수 있도록 한다.
또한, 본 출원은 패치 대상 데이터의 크기에 따라 최적화된 패치 알고리즘을 사용함으로써 보다 빠르게 패치를 수행할 수 있도록 한다.
또한, 본 출원은 패치 프로세스에서 오류가 발생한 경우, 패치 대상 파일 전체가 아니라 오류가 발생한 부분에 대해서만 수정을 수행함으로써 자원 효율적이며 오류에 보다 안정적으로 패치를 수행할 수 있도록 한다.
실시예들 중에서, 패치 방법은 패치 서버와 연결 가능하고, 저장 장치 및 메모리를 이용할 수 있는 패치 클라이언트에서 수행된다. 상기 패치 방법은 (a) 상기 패치 서버에 접속하여 패치 데이터를 수신하는 단계, (b) 상기 메모리의 가용 공간을 확인하는 단계, (c) 만일 상기 패치 데이터의 크기가 상기 메모리의 가용 공간보다 작거나 같으면, 상기 메모리의 가용 공간을 이용하여 패치를 수행하는 단계 및 (d) 그렇지 않으면, 상기 저장 장치에 상기 패치 데이터의 크기에 상응하는 임시 메모리를 할당하고, 할당된 임시 메모리를 이용하여 패치를 수행하는 단계를 포함한다.
실시예들 중에서, 패치 방법은 패치 서버와 연결 가능하고, 저장 장치 및 메모리를 구비한 패치 클라이언트에서 수행된다. 상기 패치 방법은 (a) 상기 패치 서버에 접속하여 복수의 패치 대상 파일을 포함하는 패치 데이터를 수신하는 단계, (b) 상기 메모리의 가용 공간을 계산하는 단계, (c) 만일 상기 복수의 패치 대상 파일 중 적어도 하나가 상기 메모리의 가용 공간보다 작으면, 해당 패치 대상 파일을 상기 메모리의 가용 공간을 이용하여 패치를 수행하는 단계 및 (d) 상기 메모리의 가용 공간보다 큰, 상기 복수의 패치 대상 파일 중 적어도 하나는 상기 저장 장치에 할당된 임시 메모리를 이용하여 패치를 수행하는 단계를 포함한다.
실시예들 중에서, 패치 서버는 패치 클라이언트와 연결되어 패치 데이터를 제공한다. 상기 패치 서버는 메모리, 해시 생성부 및 제어부를 포함한다. 상기 해시 생성부는 입력된 데이터에 대하여 해시 값을 생성한다. 상기 제어부는 원본 파일과 패치 파일을 각각 메모리에 로드시키고, 상기 로드된 원본 파일과 패치 파일을 비교하여 서로 상이한 부분의 해시값을 생성하도록 상기 해시 생성부를 제어하고, 상기 생성된 해시 값을 포함하는 패치 테이블을 생성하고 이를 포함하여 상기 패치 데이터를 생성한다.
실시예들 중에서, 패치 클라이언트는 메모리 및 저장장치를 이용할 수 있고, 패치 서버에 연결되어 패치 데이터를 수신하여 패치를 수행한다. 상기 패치 클라이언트는 상기 수신된 패치 데이터의 크기와 상기 메모리의 가용 공간을 비교하여, 만일 상기 메모리의 가용공간이 크면 상기 메모리를 이용하여 패치를 수행하고, 그렇지 아니하면 상기 패치 데이터의 크기에 상응하는 임시 메모리를 상기 저장장치에 할당하여 패치를 수행하는 제어부를 포함한다.
개시된 기술은 과제의 해결 수단에 의한 일 구성으로부터 패치 클라이언트의 자원 활용성을 극대화하여 보다 빠르고 효율적으로 패치를 수행할 수 있다.
개시된 기술은 과제의 해결 수단에 의한 일 구성으로부터 대용량 패치 파일에 대해서도 빠르고 안정적으로 패치를 수행할 수 있다.
개시된 기술은 과제의 해결 수단에 의한 일 구성으로부터 패치 대상 데이터의 크기에 따라 최적화된 패치 알고리즘을 사용함으로써 보다 빠르게 패치를 수행할 수 있다.
개시된 기술은 과제의 해결 수단에 의한 일 구성으로부터 패치 프로세스에서 오류가 발생한 경우, 패치 대상 파일 전체가 아니라 오류가 발생한 부분에 대해서만 수정을 수행함으로써 자원 효율적이며 오류에 보다 안정적으로 패치를 수행할 수 있다.
도 1은 개시된 기술이 적용될 수 있는 패치 시스템의 일 실시예를 설명하기 위한 구성도이다.
도 2는 도 1의 패치 서버의 일 실시예를 설명하기 위한 구성도이다.
도 3은 도 2의 제어부에서 수행되는 패치 데이터의 생성 과정을 도식화한 참고도이다.
도 4는 개시된 기술에 따른 패치 클라이언트의 일 실시예를 설명하기 위한 구성도이다.
도 5는 메모리를 이용하여 수행되는 패치의 일 실시예를 설명하기 위한 참고도이다.
도 6은 임시 메모리를 이용하여 수행되는 패치의 일 실시예를 설명하기 위한 참고도이다.
도 7은 도 4의 패치 클라이언트에서 수행되는 패치 방법의 일 실시예를 설명하기 위한 순서도이다.
도 8은 도 4의 패치 클라이언트에서 수행되는 패치 방법의 다른 일 실시예를 설명하기 위한 순서도이다.
도 9는 도 4의 패치 클라이언트에서 수행되는 패치 방법의 또 다른 일 실시예를 설명하기 위한 순서도이다.
도 10은 도 4의 패치 클라이언트에서 수행되는 패치 방법의 또 다른 일 실시예를 설명하기 위한 순서도이다.
개시된 기술에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 개시된 기술의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 개시된 기술의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 개시된 기술이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
이하의 기재에 있어서, 원본 파일은 패치 전 상태의 파일을 의미하고, 패치 파일은 패치가 이루어진 파일을 의미한다. 패치 데이터는 패치를 수행하기 위하여 필요한 데이터로서, 실시예에 따라 패치 파일을 포함하거나, 패치 파일과 원본 파일의 상이한 점에 관한 정보를 포함할 수 있다.
도 1은 개시된 기술이 적용될 수 있는 패치 시스템의 일 실시예를 설명하기 위한 구성도이다.
도 1을 참조하면, 패치 시스템은 패치 서버(100) 및 패치 클라이언트(200)로 구성될 수 있다.
패치 서버(100)는 패치 데이터를 생성하고, 패치 클라이언트(200)가 접속하면 해당 패치 클라이언트(200)에 대하여 패치 데이터를 제공할 수 있다. 여기에서, 패치 서버(100)는 패치 클라이언트(200)와 연동하여 패치를 수행하는 서버 측의 기능을 의미하므로, 특정한 구현 예로서 한정하지 않는다. 예를 들어, 패치 서버(100)는 단일 서버 또는 서버 팜(Farm)으로 구현되거나, 또는 범용 서버의 일 기능으로서 구현될 수도 있다. 패치 서버(100)의 구체적 구성 또는 기능에 대해서는 도 2를 참조하여 후술한다.
패치 클라이언트(200)는 네트워크를 통하여 패치 서버(100)에 접속하고, 후술할 소정의 패치 프로세스를 수행하여 패치 클라이언트(200)가 구동되는 단말에 패치를 수행할 수 있다. 여기에서, 패치 클라이언트(200) 또한 패치 서버(100)와 연동하여 패치를 수행하는 단말 측의 기능을 의미하므로, 특정한 구현 예로서 한정하지 않는다. 예를 들어, 패치 클라이언트(200)는 단말에서 수행되는 소프트웨어로서 구현되거나, 또는 로직 설계된 하드웨어로서 구현될 수도 있다. 패치 클라이언트의 구체적 구성 또는 기능에 대해서는 도 4 내지 도 6를 참조하여 후술한다.
패치 서버(100)와 패치 클라이언트(200)는 네트워크를 통하여 상호 연결될 수 있다. 여기에서, 네트워크는 특정 표준 등으로 한정되지 않는다. 패치 클라이언트(200)는 유선 또는 무선 네트워크, 또는 이들이 결합된 네트워크를 통하여 패치 서버(100)와 상호 연결될 수 있다. 예를 들어, 패치 클라이언트(200)가 PC 등에서 구동되는 경우 유선 또는 WiFi 통신망을 네트워크로서 이용할 수 있고, 또는 패치 클라이언트(200)가 스마트폰이나 타블릿 PC와 같은 경우 이동통신망(3G, 4G)을 경유하여 네트워크를 구성할 수 있다.
도 2는 도 1의 패치 서버의 일 실시예를 설명하기 위한 구성도이다.
도 2를 참조하면, 패치 서버(100)는 통신부(110), 메모리(120), 해시 생성부(130), 패치 데이터 저장부(140) 및 제어부(150)를 포함할 수 있다. 일 실시예에서, 패치 서버(100)는 클라이언트 관리부(160)를 더 포함할 수 있다.
통신부(110)는 제어부(150)의 요청에 따라 패치 클라이언트(200)와의 통신 회선을 생성 또는 유지할 수 있다.
메모리(120)는 패치 데이터를 생성하기 위하여 필요한 저장 공간을 구비할 수 있다. 메모리(120)는 제어부(150)의 제어에 따라 소정의 공간으로 구분되어 각각 상이한 데이터를 저장할 수 있다.
해시 생성부(130)는 입력된 데이터에 대하여 해시 값을 생성할 수 있다. 해시 생성부(130)는 제어부(150)의 제어에 따라 원본 데이터 또는 패치 데이터에 대한 해시 값을 생성하여 제어부(150)에 제공할 수 있다.
패치 데이터 저장부(140)는 패치 데이터를 저장할 수 있다. 전술한 바와 같이, 패치 데이터는 패치를 수행하기 위하여 필요한 데이터로서 실시예에 따라 패치 파일을 포함하거나 패치 파일과 원본 파일의 상이한 점에 관한 정보를 포함할 수 있다. 패치 데이터 저장부(140)는 제어부(150)에서 제공된 패치 데이터 또는 해당 패치 데이터에 관한 정보(예컨대, 패치 버전 정보, 패치 데이터 전체 크기, 복수의 파일을 포함하는 패치 데이터의 경우 각 파일들의 크기)를 저장할 수 있다.
제어부(150)는 패치 서버(100)의 구성요소들을 전체적으로 제어하여 패치 서버(100)가 패치를 수행하도록 할 수 있다. 이하에서는, 제어부(150)의 기능별로 제어부(150)에 대하여 더 상세히 설명한다.
제어부(150)는 원본 파일과 패치 파일을 비교하고, 패치 데이터를 생성할 수 있다.
일 실시예에서, 제어부(150)는 패치 파일과 원본 파일을 메모리(120)에 각각 로드시키고, 패치 파일의 내용과 원본 파일의 내용을 비교하여 서로 상이한 부분에 대한 해시 값을 생성하도록 해시 제어부(150)에 요청할 수 있다. 제어부(150)는 생성된 해시 값과 그에 연관된 인덱스를 포함하는 패치 테이블을 생성하고, 패치 테이블과 패치 파일을 포함하여 패치 데이터를 생성한 후, 이를 패치 데이터 저장부(140)에 저장하도록 할 수 있다.
다른 일 실시예에서, 제어부(150)는 패치 파일에 대한 해시 값을 이용하여 패치 데이터를 생성할 수 있다. 즉, 제어부(150)는 패치 파일 전체에 대한 해시 값과 그에 대한 인덱스를 포함하는 패치 테이블을 생성하고, 패치 테이블과 패치 파일을 포함하여 패치 데이터를 생성할 수 있다.
제어부(150)는 패치 클라이언트(200)에 패치 데이터를 제공할 수 있다.
일 실시예에서, 제어부(150)는 통신부(110)를 제어하여 패치 클라이언트(200)와 통신 회선을 유지하고, 패치 데이터 저장부(140)에 저장된 패치 데이터에 대한 정보를 기초로 패치가 필요한지 판단하고 해당 패치 데이터를 패치 클라이언트(200)에 제공할 수 있다.
다른 일 실시예에서, 제어부(150)는 통신부(110)를 제어하여 패치 클라이언트(200)와 통신 회선을 설정하면, 클라이언트 관리부(160)에 접속한 패치 클라이언트(200)에 대한 정보를 요청하고 해당 요청에 대하여 수신된 정보를 기초로 패치 데이터를 결정하여 패치 클라이언트(200)에 패치 데이터를 제공할 수 있다.
클라이언트 관리부(160)는 패치 클라이언트(200)에 대한 관리를 수행할 수 있다. 일 실시예예서, 클라이언트 관리부(160)는 패치 클라이언트(200)에 대한 인증을 수행할 수 있다. 일 실시예에서, 클라이언트 관리부(160)는 패치 클라이언트에 대하여 수행한 패치에 관한 정보(예컨대, 패치 시각, 패치 버전 정보 등)를 관리할 수 있다.
도 3은 도 2의 제어부에서 수행되는 패치 테이블의 생성 과정의 일 실시예를 도식화한 참고도이다.
도 3을 참조하면, 도시된 원본 파일과 패치 파일은 메모리(120)에 각각 구분되어 적재되어 있다. 원본 파일과 패치 파일은 메모리에 각각 로드되어 있어 제어부(150)는 메모리(120)를 이용함으로써 보다 빠르게 비교를 수행할 수 있다. 예시된 원본 및 패치 파일의 4자리 2진수는 메모리(120)의 주소를 의미한다. 원본 파일과 패치 파일의 내용에 적힌 2자리 2진수는 해당 데이터의 인덱스를 의미한다. 도시된 예에서 원본 파일과 패치 파일은 4개의 데이터로 구성되어 있다. 이는 각각 다른 4개의 파일일 수도 있고, 적어도 하나의 파일의 일부를 의미할 수도 있다.
제어부(150)는 원본 파일과 패치 파일을 상호 비교할 수 있다. 즉, 메모리(120)에 적재된 원본 파일과 패치 파일의 각 데이터의 내용을 각각 비교함으로써 상호 비교를 수행할 수 있다. 제어부(150)는 도시된 바와 같이, 인덱스 01 및 11의 내용이 서로 상이함을 확인하고 패치 테이블(300)을 구성할 수 있다. 패치 테이블(300)은 인덱스(310), 해시 값(320) 및 패치 파일 주소(330)를 포함할 수 있다. 여기에서, 해시 값(320)은 인덱스 01 및 11에 해당하는 패치 파일의 해시 값을 의미할 수 있고, 패치 파일 주소(330)는 패치 파일의 해당 내용이 실제 저장되어 있는 주소를 의미할 수 있다. 예를 들어, 패치 파일 주소는 패치 파일이 저장된 패치 데이터 저장부(140)의 주소 또는 위치를 의미할 수 있다.
도 3에 도시된 실시예는 원본 파일과 패치 파일을 비교하여 서로 상이한 내용에 해당하는 패치 파일의 내용과 그에 대한 해시 값을 기초로 패치 데이터를 생성하는 예를 도시하고 있다. 이러한 예에서, 패치 클라이언트(200)는 패치 파일의 내용을 원본 파일에 덮어 쓰고, 해시 값을 산출하여 패치 데이터의 해시 값과 비교하여 패치를 수행할 수 있다.
도 4는 개시된 기술에 따른 패치 클라이언트의 일 실시예를 설명하기 위한 구성도이고, 도 5 내지 도 6은 패치 클라이언트에 의하여 수행되는 패치 방안의 실시예들을 설명하는 참고도이다.
도 4를 참조하면, 패치 클라이언트(200)는 통신부(210), 메모리(220), 임시 메모리(230) 및 제어부(240)를 포함할 수 있다. 일 실시예에서, 패치 클라이언트(200)는 , 패치 데이터 저장부(250) 또는 해시 생성부(260) 중 적어도 하나를 더 포함할 수 있다.
통신부(110)는 제어부(150)의 요청에 따라 패치 서버(100)와의 통신 회선을 생성 또는 유지할 수 있다.
메모리(220)는 저장 공간을 제공하는 메모리 소자이다.
임시 메모리(220)는 저장 장치(예컨대, HDD, RAID, SSD 등)를 이용하여 할당되는 임시 메모리이다. 임시 메모리(220)는 저장 공간을 제공하는 점에서는 메모리(220)와 동일한 기능을 수행하나, 데이터의 로드 등에 있어서 I/O 처리가 발생하므로 메모리(220)보다 낮은 성능으로 구동된다.
제어부(240)는 패치 클라이언트(200)의 구성요소들을 제어하여 단말에서 패치를 수행한다.
제어부(240)는 메모리(220)를 이용하여 패치를 수행할 수 있다.
일 실시예에서, 제어부(240)는 메모리의 가용 공간을 적어도 두 영역으로 구분하고 구분된 각각의 영역에 원본 파일 및 패치 데이터를 로드하여 패치를 수행할 수 있다. 예를 들어, 제어부(240)는 메모리(220)에 세 영역을 할당하도록 하고, 각 영역에 원본 파일, 패치 파일, 패치 데이터를 로드 또는 생성함으로써 패치를 실시할 수 있다. 도 5는 이러한 일 실시예를 설명하는 참고도로서, 도 5를 참조하여 더 상세히 설명하면, 제어부(240)는 메모리(220)에 세 영역을 할당하고, 각 영역들을 원본 파일을 위한 영역(510), 패치 파일을 위한 영역(520), 패치 데이터를 위한 영역(530)으로 구분할 수 있다. 제어부(240)는 원본 파일 영역(510)에 패치 대상이 되는 원본 파일을 로드시키고, 패치 데이터 영역(530)에 패치 서버(100)로부터 수신한 패치 데이터를 로드시킨 후, 패치 파일 영역(520)에 패치 파일을 생성할 수 있다. 예를 들어, 제어부(240)는 패치 데이터 영역(530)의 패치 테이블을 해석하여 인덱스 01과 11에 해당하는 내용이 패치 대상임을 확인하고 해당 패치 내용이 주소 11001과 11010에 저장되어 있음을 확인한 후, 원본 파일 영역(510)에 로드된 데이터와 패치 데이터 영역(520)에 로드된 데이터를 기초로 패치 파일 영역(530)에 패치 파일을 생성할 수 있다. 즉, 패치 테이블에 불포함된 인덱스에 해당하는 데이터는 원본 파일에서 그대로 읽어서 패치 파일을 생성하고, 패치 테이블에 포함된 인덱스에 해당하는 데이터는 패치 데이터에서 찾아 해당 패치 파일에 써 패치 파일을 생성할 수 있다.
여기에서, 제어부(240)는 원본 파일, 패치 파일 및 패치 데이터는 서로 상이한 방식으로 메모리(220)에 로드 또는 생성할 수 있다. 예를 들어, 원본 파일은 메모리 풀(Memory Pool) 방식으로, 패치 파일은 버퍼 오버랩 풀(Buffer Overlapped Pool) 방식으로, 그리고 패치 데이터는 파일 맵 메모리(File Mapped Memory) 방식으로 메모리(220)에 로드될 수 있다. 이는 서로 동일한 방식으로 메모리(220)에 데이터를 로드하는 경우, 특정 로딩 프로세스에서 발생하는 오류에 의하여 다른 로딩 프로세스가 영향을 받을 수 있기 때문에, 이를 방지하기 위함이다.
또한, 제어부(240)는 도 5에 개시된 실시예에 따라 원본 파일, 패치 파일 및 패치 데이터를 메모리(220)에 읽기 또는 쓰기 프로세스 시, 각각 상이한 방식으로 오프셋(Offset)을 변화시킬 수 있다. 예를 들어, 원본 파일의 읽기 시 랜덤 오프셋(Offset) 이동 방식을 사용하고, 패치 파일의 쓰기 시 순차적 오프셋(Offset) 증가 방식을 사용하고, 패치 데이터의 읽기 시 순차적 오프셋(Offset) 증가 방식을 이용할 수 있다. 이는 오프셋(Offset)의 변경을 서로 상이하게 함으로써, 특정 프로세스에서 발생하는 오류에 의하여 다른 프로세스가 영향을 받지 않도록 하고 프로세서의 운영 효율을 증대시키기 위함이다.
다른 일 실시예에서, 제어부(240)는 임시 메모리(220)를 이용하여 패치를 실시할 수 있다. 도 6은 이러한 일 실시예를 설명하는 참고도로서, 도 6에 도시된 예에서는 원본 파일 데이터의 순서를 변경하는 패치에 대한 예로서, 도 6를 참조하여 이하에서 더 상세히 설명한다. 제어부(240)는 원본 파일과 패치 데이터를 비교하여, 원본 파일의 변경될 부분의 크기를 미리 측정하고, 측정된 크기에 상응하는 임시 메모리(230)를 할당할 수 있다. 도시된 예를 참조하여 더 상세히 설명하면, 제어부(240)는 패치 데이터의 패치 테이블을 분석한 결과 원본 파일의 3 블록에 대해 변경이 필요한 것을 확인하고, 3 블록의 크기에 해당하는 크기를 임시 메모리(220)에 요청하고 할당한다. 제어부(240)는 할당된 임시 메모리(220)를 이용하여 원본 파일의 데이터를 변경하여 패치 파일을 생성할 수 있다. 여기에서, 제어부(240)는 출력버퍼 메모리 풀(OutputBuffer Memory Pool) 방식으로 임시 메모리(220)에 데이터를 로딩할 수 있다. 출력버퍼 메모리 풀(OutputBuffer Memory Pool) 방식은 패치 실패 시 파일에 자동 기록될 수 있어, 패치 오류 복구가 용이하고 빠르기 때문이다. 도 6에 도시된 임시 메모리(220)를 이용한 패치 방식은 패치 할 데이터의 용량이 큰 경우 효율적이다. 즉, 도 5를 참조하여 전술한 패치 방식은 메모리(220)를 이용하므로 보다 빠르게 로딩 등이 수행될 수 있어 전체적인 패치 프로세스가 빨라지나, 실제 사용할 수 있는 메모리(220)의 크기는 한계가 있으므로 패치할 데이터들의 크기가 메모리(220)의 크기를 상회하는 경우 사용하기 어려운 문제점이 있다. 그러나 도 6에 도시된 패치 방식은 저장장치에 임시 메모리(220)를 할당하여 패치를 진행하므로 대용량 데이터 파일(예컨대 1기가 이상의 대용량 패치 파일 등)에 대해서도 패치를 원활하게 수행할 수 있다.
또 다른 일 실시예에서, 제어부(240)는 패치할 데이터의 크기를 판단하여 메모리(220) 또는 임시 메모리(220) 중 적어도 하나를 이용하여 패치를 수행할 수 있다. 즉, 제어부(240)는 도 5 내지 도 6에 도시된 전술한 실시예들을 조합하여 패치를 수행할 수 있다. 더 상세히 설명하면, 제어부(240)는 패치 데이터를 수신하면 패치할 데이터의 크기를 확인하고, 현재 가용한 메모리(220)의 크기를 확인할 수 있다. 제어부(240)는 패치할 데이터의 크기가 현재 가용한 메모리(220)의 크기보다 작거나 같으면 메모리(220)를 이용하여 패치를 수행하고, 패치할 데이터의 크기가 현재 가용한 메모리(220)의 크기보다 크면 임시 메모리(220)를 이용하여 패치를 수행할 수 있다. 이러한 실시예에 대해서는 도 9를 참조하여 이하에서 보다 상세히 설명한다.
패치 데이터 저장부(250)는 패치 서버(100)로부터 수신된 패치 데이터를 임시적으로 저장할 수 있다. 예를 들어, 제어부(240)는 패치 서버(100)로부터 패치 데이터를 다운로딩 하는 경우, 이를 패치 데이터 저장부(250)에 저장할 수 있고, 저장된 패치 데이터를 기초로 메모리(220) 및 임시 메모리(220)를 이용하여 패치를 수행할 수 있다.
일 실시예에서, 패치 데이터 저장부(250)는 수행된 패치에 관한 정보를 저장할 수 있다. 예를 들어, 제어부(240)가 패치를 수행하고 나면, 해당 패치에 대한 정보(예컨대, 패치 버전, 패치 일시, 패치 용량 등에 대한 정보)를 생성하여 패치 데이터 저장부(250)에 제공하면, 패치 데이터 저장부(250)는 이를 저장할 수 있다.
해시 생성부(260)는 입력된 데이터에 대한 해시 값을 생성할 수 있다. 예를 들어, 제어부(240)는 패치가 완료된 후에 패치가 정확하게 이루어졌는지 확인하기 위하여, 패치가 완료된 데이터에 대하여 해시 값을 생성하도록 해시 생성부(260)를 제어할 수 있고 해시 생성부(260)가 생성해낸 해시 값을 테이블에 포함된 해시 값과 비교하여 패치가 올바르게 수행되었는지 확인할 수 있다.
도 7은 도 4의 패치 클라이언트에서 수행되는 패치 방법의 일 실시예를 설명하기 위한 순서도이다. 도 7에 개시된 패치 방법의 일 실시예는 전술한 메모리를 이용하여 패치를 수행하는 일 실시예에 관한 것이다.
제어부(240)는 패치 서버(100)로부터 데이터를 수신하고(단계 S710), 패치를 위하여 메모리(220)를 할당할 수 있다. 여기에서, 제어부(240)는 메모리(220)를 각각 원본 파일, 패치 데이터, 패치 파일을 위한 3 영역으로 구분하여 할당할 수 있다.
제어부(240)는 할당된 메모리(220)의 영역에 원본 파일 및 패치 데이터를 로드할 수 있다(단계 S720). 여기에서, 제어부(240)는 원본 파일과 패치 데이터를 각각 상이한 방식으로 메모리(220)에 로드할 수 있다. 예를 들어, 원본 파일을 메모리 풀(Memory Pool) 방식으로 로드하였다면, 패치 데이터 파일은 파일 맵 메모리(220) 방식으로 로드할 수 있다. 이렇게 서로 상이한 방식으로 데이터를 로드하면, 특정 로드 방식에서 오류가 발생하더라도 로드 프로세스 전체를 다시 로드할 필요가 없으며 오류의 확산을 방지할 수 있다.
제어부(240)는 로드가 성공적으로 이루어졌는지 확인하고(단계 S740), 만일 특정 데이터에 대하여 오류가 발생한 경우 해당 특정 데이터 만을 다시 로드하는 절차를 수행할 수 있다(단계 S740, 아니오). 도시된 순서도에서는 메모리(220)를 재 할당(단계 S720)하고 오류가 발생한 데이터를 재 로드 하는 것으로 도시되어 있으나, 실시예에 따라 메모리의 재 할당 없이 데이터만 재 로드할 수 도 있다(단계 S730).
제어부(240)는 메모리(220)에 로드된 원본 파일과 패치 데이터를 기초로 패치 파일을 생성할 수 있다(단계 S750). 예를 들어, 제어부(240)는 패치 데이터의 패치 테이블을 해석하여 원본 파일의 내용을 그대로 옮길 부분과 패치 데이터에 따라 패치를 수행할 부분으로 구분하고, 이를 기초로 패치 파일에 할당된 메모리 영역에 패치 파일을 생성할 수 있다. 여기에서, 제어부(240)는 순차적으로 패치 파일을 생성할 수도 있고, 일괄적으로 패치 파일을 생성할 수도 있다. 즉, 패치 파일의 시작지점에 할당된 메모리 단위로부터 시작하여 종료 지점에 할당된 메모리 단위까지 순차적으로, 해당 내용을 원본 파일 또는 패치 데이터에서 읽어들여 씀으로서 패치 파일을 생성할 수 있다. 또는 원본 파일의 내용을 그대로 옮길 부분을 확인하고 그에 해당하는 부분을 원본 파일에서 읽어들어 패치 파일의 적어도 일부에 일괄적으로 쓰고, 패치 데이터의 내용을 옮길 부분을 일괄적으로 패치 파일의 적어도 일부에 쓸 수 있다.
제어부(240)는 생성된 패치 파일에 대하여 오류 검사를 수행할 수 있다(단계 S760). 여기에서, 제어부(240)는 패치 데이터에 포함된 패치 테이블을 이용하여 오류 검사를 수행할 수 있다. 예를 들어, 패치 테이블에 패치 데이터에 대한 해시 값이 포함되었다고 할 때, 제어부(240)는 패치 파일에서 패치된 부분 데이터에 대하여 해시 값을 산출하여 이를 패치 테이블의 해시 값과 비교함으로써 오류 검사를 수행할 수 있다.
제어부(240)는 오류가 없는 경우 패치 프로세스를 종료하고(단계 S770, 아니오), 만약 오류가 발생한 경우 오류 처리 프로세스를 수행할 수 있다(단계 S780).예를 들어, 메모리(220)에 전술한 바와 같이 할당된 데이터가 소실되었다면 제어부(240)는 해시 값이 서로 상이한 부분을 재 패치하기 위하여 메모리를 재 할당하고 재로드 하는 일련의 절차(단계 S720 내지 단계 S760)를 반복할 수 있다. 다른 예를 들어, 메모리(220)에 할당된 원본 파일, 패치 데이터 등이 여전히 존재한다면, 제어부(240)는 이미 할당되어 있는 데이터들을 기초로 오류가 발생한 부분만을 다시 쓰도록 하여(단계 S750 내지 S760) 오류 처리를 수행할 수 있다.
도 7을 참조하여 전술한 설명에서는 메모리(220)를 세 영역으로 구분하여 패치를 수행하는 예를 설명하고 있으나, 다른 예로서 메모리(220)를 두 영역으로 구분하여 패치할 수 있다. 즉, 제어부(240)는 메모리(220)를 원본 파일을 위한 영역 및 패치 데이터를 위한 영역으로 구분하고, 원본 파일에서 변경이 필요한 부분에 해당하는 내용을 패치 데이터에서 읽어들이고 겹처 씀으로서 원본 파일을 변경하여 패치 파일을 생성할 수도 있다.
도 8은 도 4의 패치 클라이언트에서 수행되는 패치 방법의 다른 일 실시예를 설명하기 위한 순서도이다. 도 8에 개시된 패치 방법의 일 실시예는 전술한 임시 메모리를 이용하여 패치를 수행하는 일 실시예에 관한 것이다.
제어부(240)는 패치 서버(100)로부터 데이터를 수신하고(단계 S810), 패치 대상이 되는 데이터(원본 파일에서 변경이 요구되는 데이터)의 크기를 측정할 수 있다(단계 S820). 일 실시예에서, 제어부(240)는 패치 데이터의 패치 테이블을 기초로 변경할 데이터의 크기를 측정할 수 있다.
제어부(240)는 변경할 데이터에 상응하는 크기의 임시 메모리를 할당하고(단계 S830), 할당된 임시 메모리에 변경할 데이터를 로드할 수 있다(단계 S840). 일 실시예에서, 제어부(240)는 출력 버퍼 메모리 풀(OutputBuffer Memory Pool) 방식으로 메모리를 할당하고 데이터를 로드할 수 있다. 출력 버퍼 메모리 풀(OutputBuffer Memory Pool) 방식은 실패시 파일에 자동으로 기록이 이루어지므로 오류 처리 프로세스(단계 S870 내지 단계 S890)가 간단하게 이루어질 수 있다.
제어부(240)는 로드가 성공적으로 이루어졌는지 확인하고(단계 S850), 만일 오류가 발생한 경우 해당 데이터를 다시 로드하는 절차를 수행할 수 있다(단계 S850, 아니오). 도시된 순서도에서는 임시 메모리(220)를 재 할당(단계 S830)하고 변경할 데이터를 재 로드 하는 것으로 도시되어 있으나, 실시예에 따라 임시 메모리의 재 할당 없이 변경할 데이터만 재 로드할 수 도 있다(단계 S840).
제어부(240)는 임시 메모리(220)에 로드된 변경할 데이터를 기초로 패치 파일을 생성할 수 있고(단계 S860), 생성된 패치 파일에 대한 오류 검사를 수행한 후 오류가 발생하면 오류 처리 프로세스를 수행할 수 있다(단계 S870 내지 단계 S890).
도 9는 도 4의 패치 클라이언트에서 수행되는 패치 방법의 또 다른 일 실시예를 설명하기 위한 순서도이다. 도 9에 도시된 실시예는 도7 및 도 8의 실시예를 조합하여 수행되는 패치 방식의 일 실시예이다.
도 9를 참조하여 더 상세히 설명하면, 제어부(240)는 패치 서버(100)로부터 패치 데이터를 수신하고, 패치 데이터를 확인할 수 있다(단계 S910). 예를 들어, 제어부(240)는 패치 데이터를 수신한 후, 패치 대상이 되는 데이터의 전체 크기를 확인할 수 있다.
패치 데이터를 확인하면, 제어부(240)는 현재 메모리(220)의 가용 공간을 계산할 수 있다(단계 S920). 이는 메모리(220)의 가용공간과 패치 데이터의 크기를 비교하여, 만약 메모리(220)의 용량이 충분하면 메모리(220)를 이용하여 패치를 수행하고, 그렇지 아니하면 임시 메모리(220)를 이용하여 패치를 수행하기 위함이다.
일 실시예에서, 제어부(240)는 메모리의 가용 공간을 계산함에 있어서, 반환될 메모리 공간을 고려할 수 있다. 이를 수식으로 표현하면 아래의 [수학식 1]과 같다
[수학식 1]
Memory_total = Memory_enable + (Memory_return * t)
수학식 1을 설명하면, 패치에서 사용할 수 있는 메모리 가용 공간(Memory_total)은 현재 가용한 메모리 공간(Memory_enable)과 특정 시간 내에 반환될 메모리 공간(Memory_return * t)을 합산한 것일 수 있다. 여기에서, 특정 시간 내에 반환될 메모리 공간은, 특정 시간 내에 반환이 예정되는 메모리 공간(Memory_return)에 일정한 확률값 t를 승산하여 표현될 수 있다. 예를 들어, 제어부(240)는 패치 데이터를 수신한 후 전체 패치가 수행되는데 요구되는 예상 시간이 약 1분으로 계산되었다고 가정할 때, 1분 이내에 반환이 예상되는 메모리 공간이 확인되면 이를 반환이 예정되는 메모리 공간(Memory_return)으로 설정할 수 있다. 여기에서, 확률 t는 반환 예정 시간에 비례할 수 있다. 예를 들어, 10초 후에 반환이 예상되는 메모리 공간(Memory_return) A는 40초후 반환이 예상되는 메모리 공간(Memory_return) B보다 높은 확률값 t를 가질 수 있다.
제어부(240)는 메모리 가용 공간이 패치 데이터 보다 큰 것으로 확인 되면(단계 S930, 예), 메모리(220)를 이용하여 패치를 수행할 수 있다(단계 S940 내지 단계 S970). 여기에서, 메모리(220)를 이용하여 패치를 수행하는 구체적 단계는 도 7을 참조하여 전술한 바에 상응하므로 상세한 설명은 생략한다.
메모리 가용 공간이 패치 데이터보다 작은 것으로 확인되면(단계 S930, 아니오), 제어부(240)는 임시 메모리(220)를 이용하여 패치를 수행할 수 있다(단계 S941 내지 단계 S971). 여기에서, 임시 메모리(220)를 이용하여 패치를 수행하는 구체적 단계는 도 8을 참조하여 전술한 바에 상응하므로 상세한 설명은 생략한다.
도 9에 도시된 순서도에서는 오류 처리 절차를 생략하였으나, 전술한 실시예들과 마찬가지로 오류 처리 절차가 수행될 수 있음은 당연하다.
도 9에 도시된 실시예는, 메모리를 이용하는 패치 방식(도 7)과 임시 메모리를 이용하는 패치 방식(도 8)을 조합하여 수행되는 것으로서, 메모리를 이용한 패치 방식을 우선적으로 수행하는 것을 보이고 있다. 즉, 전체 패치 데이터가 메모리(220)에 모두 할당 될 수 있다면 메모리(220)를 이용하여 빠르게 패치를 수행하고 메모리(220)의 용량이 전체 패치 데이터의 크기보다 작으면 임시 메모리(230)를 이용하여 패치를 수행함으로써, 대용량 패치 데이터에 대해서도 보다 빠르게 패치를 수행할 수 있다.
도 10은 도 4의 패치 클라이언트에서 수행되는 패치 방법의 또 다른 일 실시예를 설명하기 위한 순서도이다. 도 10에 도시된 실시예는 도7 및 도 8의 실시예를 조합하여 수행되는 패치 방식의 다른 실시예로서, 패치 데이터가 복수 개의 파일(패치 대상 파일)로서 구성되는 경우 각 파일마다 최적화된 방식으로 패치를 수행하는 실시예이다. 즉, 도 9에 도시된 실시예는 패치 데이터 전체를 기준으로 메모리 또는 임시 메모리의 사용을 결정한다면, 도 10의 실시예는 복수의 파일로 구성된 패치 데이터에 대하여 각 파일마다 메모리 또는 임시 메모리 중 어느 하나를 이용하여 패치를 수행하도록 하는 실시예이다.
도 10을 참조하여 더 상세히 설명하면, 제어부(240)는 패치 서버(100)로부터 패치 데이터를 수신하고, 패치 데이터를 확인할 수 있다(단계 S1010). 일 실시예에서, 제어부(240)는 패치 데이터를 수신한 후, 패치 데이터에 포함된 복수의 패치 대상 파일들에 대하여 각각 크기를 확인할 수 있다. 다른 일 실시예에서, 패치 데이터는 패치 데이터에 포함된 복수의 패치 대상 파일의 크기 정보를 포함할 수 있고, 제어부()는 이를 이용하여 크기를 확인할 수 있다.
제어부(240)는 현재 메모리(220)의 가용 공간을 계산할 수 있다(단계 S1020). 이는 메모리(220)의 가용공간과 패치 데이터에 포함된 각 파일의 크기를 비교하여, 메모리(220)의 용량보다 작은 패치 데이터의 파일은 메모리(220)를 이용하여 패치를 수행하고 그러지 않은 패치 데이터의 파일은 임시 메모리(220)를 이용하여 패치를 수행하기 위함이다. 여기에서, 메모리(220)의 가용 공간을 계산하는 것은 도 9를 참조하여 전술한 바와 동일하므로 상세한 설명은 생략한다.
제어부(240)는 메모리(220)의 가용 공간보다 작은 패치 데이터의 일부 파일들이 존재하는 지 확인하고(단계 S1030), 만약 존재하면(단계 S1030, 예) 메모리(220)를 이용하여 해당 패치 데이터의 일부 파일을 패치할 수 있다(단계 S1040 내지 단계 S1070). 여기에서, 메모리(220)를 이용하여 패치 데이터의 일부 파일를 패치하는 구체적 단계는 파일 별로 수행될 수 있으며, 만약 메모리(220)의 가용 공간이 두 개의 일부 파일보다 크면 둘 이상의 파일에 대하여 동시에 패치를 수행할 수 있다. 메모리(220)를 이용하여 패치를 수행하는 구체적인 방법은 도 7을 참조하여 전술한 바에 상응하므로 여기에서 상세한 설명은 생략한다.
제어부(240)는 메모리(220)의 가용 공간보다 큰 패치 데이터의 나머지 파일들에 대해서는 임시 메모리(220)를 이용하여 패치를 수행할 수 있다(단계 S1041 내지 단계 S1071). 예를 들어, 제어부(240)는 패치 데이터의 나머지 파일들의 크기를 합산하고, 합산된 크기에 상응하는 임시 메모리(220)를 할당할 수 있다. 할당된 임시 메모리(220)를 이용하여 패치를 수행하는 구체적인 방법은 도 8을 참조하여 전술한 바에 상응하므로 여기에서 상세한 설명은 생략한다.
도 10에 도시된 실시예는, 복수 개의 파일을 포함하는 패치 데이터에 대하여 메모리(220) 또는 임시 메모리(220) 중 적어도 하나를 이용하여 패치를 수행하므로 보다 빠르게 패치를 수행할 수 있다. 여기에서, 제어부(240)는 연산 성능에 따라 메모리(220) 및 임시 메모리(220)를 병렬적으로 이용하여 패치를 수행할 수 있다. 즉, 메모리(220)의 가용 공간보다 작은 일부 파일은 메모리(220)를 이용하여 패치를 수행함과 동시에, 나머지 파일에 대해서는 임시 메모리(220)를 이용하여 병렬적으로 패치를 수행할 수 있다. 병렬적으로 패치를 수행하는 경우 전체 패치에 소요되는 시간이 매우 단축될 수 있다.
상기에서는 본 출원의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 출원의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 출원을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (23)

  1. 패치 서버와 연결 가능하고, 저장 장치 및 메모리를 구비한 패치 클라이언트에서 수행되는 패치 방법에 있어서,
    (a) 상기 패치 서버에 접속하여 패치 데이터를 수신하는 단계;
    (b) 상기 메모리의 가용 공간을 계산하는 단계;
    (c) 만일 상기 패치 데이터의 크기가 상기 메모리의 가용 공간보다 작거나 같으면, 상기 메모리의 가용 공간을 이용하여 패치를 수행하는 단계; 및
    (d) 상기 패치 데이터의 크기가 상기 메모리의 가용 공간보다 크면, 상기 저장 장치에 상기 패치 데이터의 크기에 상응하는 임시 메모리를 할당하고, 할당된 임시 메모리를 이용하여 패치를 수행하는 단계를 포함하고,
    상기 (b) 단계는
    (b1) 상기 메모리의 현재 가용한 공간을 확인하는 단계;
    (b2) 특정 시간 내에 반환될 메모리 공간을 계산하는 단계; 및
    (b3) 상기 현재 가용한 공간과 상기 반환될 메모리 공간을 합산하여 상기 메모리의 가용 공간을 산출하는 단계를 포함하는 것을 특징으로 하는 패치 방법.
  2. 청구항 2은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서, 상기 패치 데이터는
    적어도 하나의 패치 파일에 대한 해시 값을 포함하는 패치 테이블을 포함하는 것을 특징으로 하는 패치 방법.
  3. 삭제
  4. 청구항 4은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서, 상기 (b2) 단계는
    반환될 메모리 공간의 반환 예정 시간에 비례하는 확률값을 해당 반환될 메모리 공간에 승산하여 상기 특정 시간 내에 반환될 메모리 공간을 계산하는 단계를 포함하는 것을 특징으로 하는 패치 방법.
  5. 패치 서버와 연결 가능하고, 저장 장치 및 메모리를 구비한 패치 클라이언트에서 수행되는 패치 방법에 있어서,
    (a) 상기 패치 서버에 접속하여 패치 데이터를 수신하는 단계;
    (b) 상기 메모리의 가용 공간을 계산하는 단계;
    (c) 만일 상기 패치 데이터의 크기가 상기 메모리의 가용 공간보다 작거나 같으면, 상기 메모리의 가용 공간을 이용하여 패치를 수행하는 단계; 및
    (d) 상기 패치 데이터의 크기가 상기 메모리의 가용 공간보다 크면, 상기 저장 장치에 상기 패치 데이터의 크기에 상응하는 임시 메모리를 할당하고, 할당된 임시 메모리를 이용하여 패치를 수행하는 단계를 포함하고,
    상기 (c) 단계는
    (c-1) 상기 메모리의 가용 공간을 각각 원본 파일, 패치 데이터 및 패치 파일을 위한 제1 내지 제3 영역으로 구분하여 할당하는 단계;
    (c-2) 상기 제1 및 제2 영역에 원본 파일 및 패치 데이터를 로드하는 단계; 및
    (c-3) 상기 제3 영역에 상기 로드된 원본 파일 및 패치 데이터를 이용하여 패치 파일을 생성하는 단계를 포함하는 것을 특징으로 하는 패치 방법.
  6. 청구항 6은(는) 설정등록료 납부시 포기되었습니다.
    제5항에 있어서, 상기 (c-2) 단계는
    서로 상이한 메모리 로드 방식을 이용하여 상기 원본 파일, 패치 데이터를 로드하는 것을 특징으로 하는 패치 방법.
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제5항에 있어서, 상기 (c) 단계는
    상기 (c-2) 단계가 성공적으로 이루어졌는지 확인하고, 만일 특정 데이터에 대하여 오류가 발생하였으면 해당 특정 데이터만을 다시 로드하는 단계를 더 포함하는 것을 특징으로 하는 패치 방법.
  8. 청구항 8은(는) 설정등록료 납부시 포기되었습니다.
    제5항에 있어서, 상기 (c-3) 단계는
    상기 패치 데이터에 포함된 패치 테이블을 해석하는 단계; 및
    상기 원본 파일의 적어도 일부와 패치를 수행할 적어도 일부를 구분하는 단계를 포함하는 것을 특징으로 하는 패치 방법.
  9. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.
    제5항에 있어서, 상기 (c) 단계는
    (c-4) 상기 패치 데이터에 포함된 해시 값을 이용하여 상기 생성된 패치 파일에 대하여 오류 검사를 수행하는 단계를 더 포함하는 것을 특징으로 하는 패치 방법.
  10. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.
    제1항 또는 제5항에 있어서, 상기 (d) 단계는
    출력 버퍼 메모리 풀 방식(OutputBuffer-Memory-Pool)를 기초로 상기 할당된 임시 메모리를 이용하여 패치를 수행하는 것을 특징으로 하는 패치 방법.
  11. 청구항 11은(는) 설정등록료 납부시 포기되었습니다.
    제1항 또는 제5항에 있어서, 상기 (d) 단계는
    (d1) 원본 파일에서 변경이 요구되는 데이터의 크기를 산정하는 단계; 및
    (d2) 상기 산정된 변경이 요구되는 데이터의 크기에 상응하는 임시 메모리를 할당하는 단계를 포함하는 것을 특징으로 하는 패치 방법.
  12. 패치 서버와 연결 가능하고, 저장 장치 및 메모리를 구비한 패치 클라이언트에서 수행되는 패치 방법에 있어서,
    (a) 상기 패치 서버에 접속하여 복수의 패치 대상 파일을 포함하는 패치 데이터를 수신하는 단계;
    (b) 상기 메모리의 가용 공간을 계산하는 단계;
    (c) 만일 상기 복수의 패치 대상 파일 중 적어도 하나가 상기 메모리의 가용 공간보다 작으면, 해당 패치 대상 파일을 상기 메모리의 가용 공간을 이용하여 패치를 수행하는 단계; 및
    (d) 상기 메모리의 가용 공간보다 큰, 상기 복수의 패치 대상 파일 중 적어도 하나는 상기 저장 장치에 할당된 임시 메모리를 이용하여 패치를 수행하는 단계를 포함하고,
    상기 (b) 단계는
    (b1) 상기 메모리의 현재 가용한 공간을 확인하는 단계;
    (b2) 특정 시간 내에 반환될 메모리 공간을 계산하는 단계; 및
    (b3) 상기 현재 가용한 공간과 상기 반환될 메모리 공간을 합산하여 상기 메모리의 가용 공간을 산출하는 단계를 포함하는 것을 특징으로 하는 패치 방법.
  13. 청구항 13은(는) 설정등록료 납부시 포기되었습니다.
    제12항에 있어서, 상기 패치 데이터는
    상기 복수의 패치 대상 파일에 대한 크기 정보를 포함하는 것을 특징으로 하는 패치 방법.
  14. 삭제
  15. 패치 서버와 연결 가능하고, 저장 장치 및 메모리를 구비한 패치 클라이언트에서 수행되는 패치 방법에 있어서,
    (a) 상기 패치 서버에 접속하여 복수의 패치 대상 파일을 포함하는 패치 데이터를 수신하는 단계;
    (b) 상기 메모리의 가용 공간을 계산하는 단계;
    (c) 만일 상기 복수의 패치 대상 파일 중 적어도 하나가 상기 메모리의 가용 공간보다 작으면, 해당 패치 대상 파일을 상기 메모리의 가용 공간을 이용하여 패치를 수행하는 단계; 및
    (d) 상기 메모리의 가용 공간보다 큰, 상기 복수의 패치 대상 파일 중 적어도 하나는 상기 저장 장치에 할당된 임시 메모리를 이용하여 패치를 수행하는 단계를 포함하고,
    상기 (c) 단계는
    (c-1) 상기 메모리의 가용 공간을 각각 원본 파일, 패치 데이터 및 패치 대상 파일을 위한 제1 내지 제3 영역으로 구분하여 할당하는 단계;
    (c-2) 상기 제1 및 제2 영역에 원본 파일 및 패치 데이터를 로드하는 단계; 및
    (c-3) 상기 제3 영역에 상기 로드된 원본 파일 및 패치 데이터를 이용하여 패치 대상 파일을 생성하는 단계를 포함하는 것을 특징으로 하는 패치 방법.
  16. 청구항 16은(는) 설정등록료 납부시 포기되었습니다.
    제15항에 있어서, 상기 (c-2) 단계는
    서로 상이한 메모리 로드 방식을 이용하여 상기 원본 파일, 패치 데이터를 로드하는 것을 특징으로 하는 패치 방법.
  17. 청구항 17은(는) 설정등록료 납부시 포기되었습니다.
    제12항 또는 제15항에 있어서, 상기 (d) 단계는
    (d1) 상기 메모리의 가용 공간보다 큰, 상기 복수의 패치 대상 파일 중 적어도 하나의 크기를 합산하는 단계;
    (d2) 상기 합산된 상기 메모리의 가용 공간보다 큰, 상기 복수의 패치 대상 파일 중 적어도 하나의 크기에 상응하는 임시 메모리를 할당하는 단계를 포함하는 것을 특징으로 하는 패치 방법.
  18. 청구항 18은(는) 설정등록료 납부시 포기되었습니다.
    제1항 또는 제12항에 있어서, 상기 패치 데이터는
    상기 패치 서버에 의해 생성된 패치 테이블을 포함하고, 상기 패치 테이블은 상기 패치 서버가 원본 파일과 패치 파일의 상이한 부분을 비교하여 생성한 해시 값을 포함하는 것을 특징으로 하는 패치 방법.
  19. 삭제
  20. 패치 서버에 연결되어 패치 데이터를 수신하여 패치를 수행하는 패치 클라이언트에 있어서,
    메모리의 현재 가용한 공간을 확인하고 특정 시간 내에 반환될 메모리 공간을 계산하여, 상기 현재 가용한 공간과 상기 반환될 메모리 공간을 합산하여 상기 메모리의 가용 공간을 산출하고,
    상기 수신된 패치 데이터의 크기가 상기 메모리의 가용 공간보다 작거나 같으면 상기 메모리의 가용 공간을 이용하여 패치를 수행하고,
    상기 수신된 패치 데이터의 크기가 상기 메모리의 가용 공간보다 크면 저장 장치에 상기 패치 데이터의 크기에 상응하는 임시 메모리를 할당하여 패치를 수행하는 제어부를 포함하는 패치 클라이언트.
  21. 청구항 21은(는) 설정등록료 납부시 포기되었습니다.
    제20항에 있어서, 상기 제어부는
    상기 수신된 패치 데이터의 크기가 상기 메모리의 가용 공간보다 작거나 같으면,
    상기 메모리의 가용 공간을 적어도 두 영역으로 구분하고 구분된 각각의 영역에 원본 파일 및 패치 데이터를 로드하여 패치를 수행하는 것을 특징으로 하는 패치 클라이언트.
  22. 청구항 22은(는) 설정등록료 납부시 포기되었습니다.
    제21항에 있어서, 상기 제어부는
    상기 로드 된 원본 파일 및 패치 데이터를 읽을 때 서로 상이한 오프셋(Offset) 증가를 이용하는 것을 특징으로 하는 패치 클라이언트.
  23. 청구항 23은(는) 설정등록료 납부시 포기되었습니다.
    제20항에 있어서, 상기 제어부는
    상기 수신된 패치 데이터의 크기가 상기 메모리의 가용 공간보다 크면,
    원본 파일과 상기 패치 데이터를 비교하여 상기 원본 파일의 변경될 부분의 크기를 미리 측정하고, 상기 측정된 크기에 상응하는 임시 메모리를 상기 저장장치에 할당하는 것을 특징으로 하는 패치 클라이언트.
KR1020110147740A 2011-12-30 2011-12-30 메모리 및 임시 메모리를 이용한 패치 방법 및 그를 이용한 패치 서버, 패치 클라이언트 KR101246360B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020110147740A KR101246360B1 (ko) 2011-12-30 2011-12-30 메모리 및 임시 메모리를 이용한 패치 방법 및 그를 이용한 패치 서버, 패치 클라이언트
PCT/KR2012/006613 WO2013100302A1 (en) 2011-12-30 2012-08-21 Patch method using memory and temporary memory and patch server and client using the same
CN2012103330377A CN102945170A (zh) 2011-12-30 2012-09-10 使用内存和临时存储器的补丁方法及补丁服务器和客户端
TW101134887A TW201327168A (zh) 2011-12-30 2012-09-24 使用記憶體和暫時記憶體的修補方法及使用其之修補伺服器和客戶端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110147740A KR101246360B1 (ko) 2011-12-30 2011-12-30 메모리 및 임시 메모리를 이용한 패치 방법 및 그를 이용한 패치 서버, 패치 클라이언트

Publications (1)

Publication Number Publication Date
KR101246360B1 true KR101246360B1 (ko) 2013-03-22

Family

ID=47728119

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110147740A KR101246360B1 (ko) 2011-12-30 2011-12-30 메모리 및 임시 메모리를 이용한 패치 방법 및 그를 이용한 패치 서버, 패치 클라이언트

Country Status (4)

Country Link
KR (1) KR101246360B1 (ko)
CN (1) CN102945170A (ko)
TW (1) TW201327168A (ko)
WO (1) WO2013100302A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100592834B1 (ko) * 2000-11-30 2006-06-26 니뽄 도쿠슈 도교 가부시키가이샤 절삭 공구 및 절삭 공구용 스로어웨이 삽입체

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9780938B2 (en) * 2015-06-25 2017-10-03 Intel IP Corporation Patch download with improved acknowledge mechanism
CN107113307B (zh) 2015-11-18 2019-10-01 深圳市大疆创新科技有限公司 外接设备的管理方法、装置、系统以及存储器、无人机
CN107944021B (zh) * 2017-12-11 2021-06-18 北京奇虎科技有限公司 文件替换方法、装置及终端设备
CN110109695B (zh) * 2019-04-17 2021-08-27 华为技术有限公司 补丁方法、相关装置及系统
CN111179913B (zh) * 2019-12-31 2022-10-21 深圳市瑞讯云技术有限公司 一种语音处理方法及装置
CN112788384A (zh) * 2021-02-07 2021-05-11 深圳市大鑫浪电子科技有限公司 无线数字电视投屏方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003150396A (ja) * 2001-11-12 2003-05-23 Casio Comput Co Ltd 情報処理装置及びパッチ処理方法
KR20060050967A (ko) * 2004-09-06 2006-05-19 이르데토 액세스 비.브이. 소프트웨어를 위한 패치들을 제공하는 방법
KR100670797B1 (ko) * 2004-12-17 2007-01-17 한국전자통신연구원 보조 저장장치가 없는 환경에서 실시간 패치 장치 및 그방법
JP2008198060A (ja) 2007-02-15 2008-08-28 Seiko Epson Corp 情報処理装置、パッチコード実装システム、電子機器及びパッチコードの実装方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US20100131698A1 (en) * 2008-11-24 2010-05-27 Tsai Chien-Liang Memory sharing method for flash driver
CN102215479B (zh) * 2011-06-22 2018-03-13 中兴通讯股份有限公司 升级包下载及安装的方法、服务器及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003150396A (ja) * 2001-11-12 2003-05-23 Casio Comput Co Ltd 情報処理装置及びパッチ処理方法
KR20060050967A (ko) * 2004-09-06 2006-05-19 이르데토 액세스 비.브이. 소프트웨어를 위한 패치들을 제공하는 방법
KR100670797B1 (ko) * 2004-12-17 2007-01-17 한국전자통신연구원 보조 저장장치가 없는 환경에서 실시간 패치 장치 및 그방법
JP2008198060A (ja) 2007-02-15 2008-08-28 Seiko Epson Corp 情報処理装置、パッチコード実装システム、電子機器及びパッチコードの実装方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100592834B1 (ko) * 2000-11-30 2006-06-26 니뽄 도쿠슈 도교 가부시키가이샤 절삭 공구 및 절삭 공구용 스로어웨이 삽입체

Also Published As

Publication number Publication date
TW201327168A (zh) 2013-07-01
WO2013100302A1 (en) 2013-07-04
CN102945170A (zh) 2013-02-27

Similar Documents

Publication Publication Date Title
KR101246360B1 (ko) 메모리 및 임시 메모리를 이용한 패치 방법 및 그를 이용한 패치 서버, 패치 클라이언트
CN107506221B (zh) 应用程序升级方法、装置及设备
US20180329700A1 (en) Application migration system
US20130191528A1 (en) Automatically selecting appropriate platform to run application in cloud computing environment
CN107273148B (zh) 数据的更新驱动迁移
US11025623B2 (en) Updating database drivers for client applications through a database server push
US9383978B2 (en) Apparatus and method for on-demand optimization of applications
US8635425B1 (en) Upgrading computing devices
CN103593485B (zh) 实现数据库实时操作的方法和设备
US10303388B1 (en) Storage filtering using container images
CN105320558A (zh) 一种移动终端及其启动的方法
CN116028163A (zh) 一种容器组的动态链接库调度方法、装置及存储介质
US9588884B2 (en) Systems and methods for in-place reorganization of device storage
CN110442601A (zh) 一种Openstack镜像数据并行加速的方法和装置
CN113127438B (zh) 用于存储数据的方法、装置、服务器和介质
CN113010195B (zh) 一种系统升级方法、存储介质及终端设备
CN107861739A (zh) ReactNative应用调整方法、客户端及系统
US20130179653A1 (en) Apparatus and method for partitioning memory area for application preloading in a wireless terminal
KR102448453B1 (ko) 전자 디바이스 및 펌웨어 업데이트 방법
JP6294475B2 (ja) プログラムをダウンロードする方法
CN111984299A (zh) 一种数据加载的方法和设备
TWI630551B (zh) 下載程式的方法
CN117785216A (zh) 基于Electron的前端打包方法、装置、电子设备及存储介质
CN115904459A (zh) 一种差分升级方法、嵌入式设备和可读存储介质
CN114443040A (zh) 电子装置及其对象共享方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160229

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170308

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180205

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190131

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200106

Year of fee payment: 8