KR20030052767A - 실행 파일의 압축 및 복원 방법 - Google Patents

실행 파일의 압축 및 복원 방법 Download PDF

Info

Publication number
KR20030052767A
KR20030052767A KR1020010082801A KR20010082801A KR20030052767A KR 20030052767 A KR20030052767 A KR 20030052767A KR 1020010082801 A KR1020010082801 A KR 1020010082801A KR 20010082801 A KR20010082801 A KR 20010082801A KR 20030052767 A KR20030052767 A KR 20030052767A
Authority
KR
South Korea
Prior art keywords
file
size
compressed
binary
binary file
Prior art date
Application number
KR1020010082801A
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 KR1020010082801A priority Critical patent/KR20030052767A/ko
Publication of KR20030052767A publication Critical patent/KR20030052767A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 서버로부터 실행 파일을 전송 받아 수행 또는 저장하는 시스템에서 실행 파일의 크기를 줄임으로써, 메모리 공간 및 네트워크 점유 시간을 최소화할 수 있도록 하는 실행 파일의 압축 및 복원 방법에 관한 것으로, ELF 포맷 파일을 2진(Binary) 파일로 컴파일하고, 상기 컴파일 된 파일에서 최종 번지로부터 초기화 데이터(0)가 연속 할당되어 있는 영역을 검출하는 제1단계와; 상기 검출된 연속 초기화 데이터가 할당된 영역을 삭제하는 제2단계와; 상기 삭제된 영역에 대한 정보를 파일 상단의 헤더 영역에 기록하는 제3단계로 이루어져 실행 파일을 압축하고, 상기 압축된 2진 파일을 로딩하여 그 헤더부로부터 해당 파일에 관한 기본 정보를 읽어내는 제1단계와; 상기 헤더부에 저장되어 있는 정보 중 시작 번지(Start_add)로부터 유효(payload) 데이터(TEXT, DATA, BSS)를 저장하는 제2단계와; 상기 유효 데이터가 저장된 이후 번지에 원래 2진 파일 크기에서 압축된 2진 파일의 크기를 뺀 값(binary_size - mbin_size) 만큼을 '0'을 초기값으로 하는 영역을 할당하는 제3단계로 이루어져 압축된 실행 파일을 복원할 수 있다.

Description

실행 파일의 압축 및 복원 방법{COMPRESSION AND RESTORE METHOD FOR BINARY FILE}
본 발명은 프로세스의 실행 파일 형태 변경 방법에 관한 것으로, 특히 서버로부터 실행 파일을 전송 받아 수행 또는 저장하는 시스템에서 실행 파일의 크기를 줄임으로써, 메모리 공간 및 네트워크 점유 시간을 최소화할 수 있도록 하는 실행 파일의 압축 및 복원 방법에 관한 것이다.
일반적으로, 컴퓨터 시스템에서는 실행 파일(2진(Binary) 기계어 파일)를 메모리에 저장한 후 사용하도록 되어 있다.
다시 말해, 컴퓨터 시스템에서 원하는 동작을 수행시키기 위해서는, 프로세서의 종류에 따라서 어셈블러 또는 그 상위 레벨 언어인 C 언어를 이용해서 프로그램을 한 후, 그 프로그램을 목적 파일(Object File), 또는 시스템의 메모리에 직접 탑재할 수 있는 실행 파일 형태로 컴파일 하여 메모리에 탑재시키게 된다.
그런데, 상기 실행 파일은 프로세서나 프로그램 언어의 종류에 관계없이 일반적으로, ELF(Executable and Linkable Format) 또는 모토롤라의 S-Format 중에 하나의 포맷을 사용하고 있다.
도1은 상기 실행 파일 포맷 중 보다 대중화되어 있는 ELF 포맷에 대한 구성을 보인 예시도로서, 그 개략적인 구성을 살펴보면 ELF 포맷임을 나타내는 ELF 헤더(Header)(10)와, 실행 파일에 포함된 내용에 대한 구체적인 정보를 나타내는 프로그램 헤더(20)와, 동작 수행에 필요한 실제의 명령어 및 데이터 등이 기록되는세그먼트(Segment)(30, 40)와, 새로운 정보의 추가나 변경을 위한 옵션 설정부(Section Header table optional)(50)로 구성되어 있음을 알 수 있다.
이때, 상기 세그먼트(30, 40)는 컴파일러 또는 링크에 따라 구성이 달라질 수 있으며, 기본적으로 도2에 도시된 바와 같이 TEXT, DATA, BSS 영역 등으로 구성되어 있다.
도2는 실행 파일을 실제 메모리에 저장하기 위해 2진 파일로 변환했을 때의 구성을 보인 예시도이다.
여기서, TEXT는 명령어(OP 파일) 등이 저장되는 영역이며, DATA는 상기 명령어 동작을 위해 사용하는 값(상수 값 및 광역변수의 초기값 등)에 관한 파일이 저장되는 영역이며, BSS는 소정 동작을 위해 할당된 메모리 영역을 위한 공간으로서, 프로세스 초기화 시 이러한 초기값들을 BSS의 해당 영역에 초기화된다.
이때, 상기 BSS 영역은 사용자가 특정 값으로 지정하지 않은 광역 변수의 경우 '0'으로 모두 채워지게 되고, 특히 사용자가 광역 배열을 선언할 경우 배열의 개수만큼 '0'이 자동 저장되도록 되어 있으며, 할당을 많이 할수록 의미 없는 데이터(0)로 인해 실행 파일의 크기가 늘어나게 된다.
그런데, 서버로부터 실행 파일을 전송 받아 수행 또는 저장하는 시스템에서는, 충분한 메모리를 포함하고 있지 않을 뿐만 아니라 서버로부터 실행 파일을 전송 받아야 하기 때문에, 실행 파일의 크기가 클수록 전송 속도가 느리고 네트워크 점유 시간이 증가하게 되는 문제점이 있다.
따라서, 본 발명은 상기와 같은 종래의 문제점을 해결하기 위하여 창출한 것으로, 서버로부터 실행 파일을 전송 받아 수행 또는 저장하는 시스템에서 실행 파일의 크기를 줄임으로써, 메모리 공간 및 네트워크 점유 시간을 최소화할 수 있도록 하는 실행 파일의 압축 및 복원 방법을 제공함에 그 목적이 있다.
이와 같은 목적을 달성하기 위한 본 발명은, 실행 파일을 압축함에 있어서, ELF 포맷 파일을 2진(Binary) 파일로 컴파일하고, 상기 컴파일 된 파일에서 최종 번지로부터 초기화 데이터(0)가 연속 할당되어 있는 영역을 검출하는 제1단계와; 상기 검출된 연속 초기화 데이터가 할당된 영역을 삭제하는 제2단계와; 상기 삭제된 영역에 대한 정보를 파일 상단의 헤더 영역에 기록하는 제3단계로 이루어진 것을 특징으로 한다.
또한, 상기 목적을 달성하기 위한 본 발명은, 압축된 실행 파일을 복원함에 있어서, 압축된 2진 파일을 로딩하여 그 헤더부로부터 해당 파일에 관한 기본 정보를 읽어내는 제1단계와; 상기 헤더부에 저장되어 있는 정보 중 시작 번지(Start_add)로부터 유효(payload) 데이터(TEXT, DATA, BSS)를 저장하는 제2단계와; 상기 유효 데이터가 저장된 이후 번지에 원래 2진 파일 크기에서 압축된 2진 파일의 크기를 뺀 값(binary_size - mbin_size) 만큼을 '0'을 초기값으로 하는 영역을 할당하는 제3단계로 이루어진 것을 특징으로 한다.
도 1은 일반적인 실행 파일 포맷 중 ELF 포맷에 대한 구성을 보인 예시도.
도 2는 종래 실행 파일을 실제 메모리에 저장하기 위해 2진 파일로 변환했을 때의 구성을 보인 예시도.
도 3은 본 발명에 의한 방법으로 압축된 2진 파일의 구성을 보인 예시도.
도 4는 본 발명에 따른 2진 파일(MBIN) 생성을 위한 파일 압축 과정을 보인 순서도.
도 5는 본 발명에 의해 압축된 파일을 원래의 2진 파일로 복원하여 실행하기 위한 과정을 보인 순서도.
이동통신 시스템의 구성에는 각각의 기능을 담당하는 여러 종류의 프로세스 보드들이 존재하고 있고, 이러한 프로세스 보드들은 상위로부터 실행 파일을 로딩받아 동작하고, 또한 자기 자신보다 하위에 있는 프로세스들에게 전송하기 위해 실행 파일들을 보드 내에 구비되어 있는 메모리에 저장하게 된다.
따라서, 상위로부터 로딩 받는 실행 파일의 크기는 전송 경로 및 저장 매체의 사용량에 밀접한 관련이 있고, 같은 기능을 할 수 있다면 파일의 크기가 작을수록 효율적이다.
따라서, 본 발명은 상기와 같은 목적을 달성하기 위해서, 실행 파일에서 삭제 가능한 데이터에 대해서는 삭제하는 방식으로 파일의 크기를 압축하여 저장 또는 전송하고, 그 파일을 전송 받아 실행하고자 할 때는 다시 원래의 형태로 복원할 수 있도록 함으로써, 전송 시간 및 저장 매체를 효율적으로 사용할 수 있도록 하는 특징이 있다.
도3은 본 발명에 의한 방법으로 압축된 2진 파일의 구성을 보인 예시도로서, BSS 영역에서 초기값으로 '0'이 할당되어 있는 부분을 모두 삭제하고, 그에 대한 정보를 헤더부에 기록해 둠으로써, 복원시 정상적으로 동작 수행이 이루어질 수 있도록 구성되어 있다.
설명의 편의를 위하여 본 발명에 의해 새롭게 구성된 2진 파일을 MBIN(Modified Binary)이라고 한다.
상기 도3과 같은 2진 파일이 생성되기 위해서는, 도1과 같은 ELF 파일을 도2와 같은 2진 파일로 변환한 후, 그로부터 BSS 영역의 초기값으로 초기화 데이터인 '0'이 할당되어 있는 부분을 잘라내야 한다.
대신 상기 잘라낸 공간은 헤더부에 표시해 줌으로써 복원시에 이용할 수 있도록 하는데, 상기 헤더부의 구성을 살펴보면 스트링 형태(MBIN)로 수정된 2진 파일임을 나타내는 영역과, 메모리에 저장할 때 기준이 되는 시작 번지(Start_Add)를 기록하는 영역과, MBIN 파일로 압축되기 이전 2진 파일의 크기(BIN size)를 기록하는 영역과, MBIN 파일로 압축된 후의 파일 크기(MBIN size)를 기록하는 영역으로 구성된다.
이때, 상기 각 영역의 길이는 본 실시예에서는 4바이트로 균일하게 설정되어 있으나, N바이트로 각기 다르게 설정할 수 있음은 당연하다.
그럼, 도4를 참조하여 본 발명에 따른 2진 파일(MBIN) 생성을 위한 파일 압축 과정을 설명하기로 한다.
먼저, ELF 파일 포맷의 프로그램을 2진(Binary) 파일로 컴파일하고(S101), 상기 2진 파일에서 마지막 번지(address)를 포인터(ptr)에 저장하고, 그 2진 파일의 크기(binary_size)를 본 발명에 의해 압축할 파일의 크기를 나타내는 변수(mbin_size)에 저장한다(S103).
다음, 상기 포인터(ptr)가 가리키는 번지의 값(*ptr) 즉, 여기에서는 상기 포인터가 최종 번지를 가리키고 있으므로, 마지막 번지의 값이 '0'인지를 판단하여(S104), '0'이면 압축할 파일의 크기와 마지막 번지를 가리키는 포인터를 하나씩 감소시키고(S105), 그 과정을 '0'이 아닌 값이 저장되어 있는 번지가 나타날 때 까지 반복 수행한다.
이에 따라, 압축할 파일의 크기(mbin_size)는 상기 과정에 의해, 원래의 2진 파일의 크기에서 '0'이 저장되어 있던 공간을 제거한 나머지가 된다.
상기와 같은 과정을 거치게 되면 파일의 크기가 줄어든 새로운 파일이 생성되고(S106), 헤더부의 첫 번째 영역(Pre-fix)에 압축된 2진 파일임을 나타내는 스트링(MBIN)을 삽입하고(S107), 메모리에 저장할 때 기준이 되는 시작 번지(Start_Add)를 삽입하고(S108), 압축되기 이전의 원래 2진 파일의 크기값을 삽입하고(S109), 압축되어 새롭게 생성된 2진 파일의 크기(mbin_size)를 삽입한다(S110).
그리고, 마지막으로 도3에 도시된 바와 같이 실제의 유효(payload) 데이터(TEXT, DATA, BSS)를 삽입하여(S111) 압축된 2진 파일을 생성하는 것이다.
그럼, 상기와 같이 압축된 파일을 원래의 2진 파일로 복원하여 실행하기 위한 과정을 도5의 순서도를 참조하여 설명한다.
일단, 상기 압축된 2진 파일(MBIN File)을 로딩하면(S201), 헤더부를 열어 해당 파일에 관한 기본 정보를 읽어낸다.
먼저, 헤더부의 첫 번째 영역(Pre-fix)에 저장되어 있는 정보가 압축된 2진 파일(MBIN File)임을 나타내는 스트링(MBIN)이면, 복원 과정을 계속 진행하고 아니면 다른 형식의 파일이므로 그에 해당하는 복원 과정을 실행한다(S203).
상기 판단에 의해 압축된 2진 파일인 경우, 헤더부에 저장되어 있는 시작 번지(Start_add)로부터 유효(payload) 데이터(TEXT, DATA, BSS)를 저장하고(S204), 그 이후 번지에 원래 2진 파일 크기에서 압축된 2진 파일의 크기를 뺀 값(binary_size - mbin_size) 만큼을 '0'으로 채운다(S205).
다음, 시작 번지로 점프하여 프로그램을 수행하면 된다.
다시 말해, 본 발명에서는 메모리의 최하위 영역에서, 초기화 데이터 '0'이 연속적으로 있는 영역을 삭제하여 파일의 크기를 압축하였기 때문에, 복원시에는 삭제했던 크기만큼 '0'을 복사하면 되므로, 헤더부에 있는 정보 중 시작 번지(Start_add)를 시작으로 유효 데이터를 복사하고, 이어서 원래 2진 파일의 크기와 압축된 2진 파일의 차이에 해당하는 만큼을 '0'으로 채우면, 원래의 파일 이미지를 복원 완료하는 것이다.
따라서, 상기와 같이 실행 파일을 압축 복원하는 방법은 ELF 파일을 로딩 받아 사용하는 것보다 더욱 간단하게 사용할 수 있고, 파일의 크기도 ELF에 비하여 약 20% 정도의 크기 감소 효과가 있어 로딩 속도 및 네트워크의 부하를 줄일 수 있고, 저장매체의 사용도 효율적으로 사용할 수 있다.
이상에서 설명한 바와 같이 본 발명 실행 파일의 압축 및 복원 방법은, 서버로부터 실행 파일을 전송 받아 수행 또는 저장하는 시스템에서 실행 파일의 크기를 줄임으로써, 메모리 공간 및 네트워크 점유 시간을 최소화할 수 있도록 하는 효과가 있다.

Claims (5)

  1. 실행 파일을 압축함에 있어서,
    ELF 포맷 파일을 2진(Binary) 파일로 컴파일하고, 상기 컴파일 된 파일에서 최종 번지로부터 초기화 데이터(0)가 연속 할당되어 있는 영역을 검출하는 제1단계와;
    상기 검출된 연속 초기화 데이터가 할당된 영역을 삭제하는 제2단계와;
    상기 삭제된 영역에 대한 정보를 파일 상단의 헤더 영역에 기록하는 제3단계로 이루어진 것을 특징으로 하는 실행 파일의 압축 방법.
  2. 제1항에 있어서, 상기 제1단계의 2진 파일에서 초기화 데이터(0)가 연속 할당되어 있는 영역을 검출하기 위해서는,
    상기 2진 파일에서 마지막 번지(address)를 포인터(ptr)에 저장하고, 그 2진 파일의 크기(binary_size)를 압축할 파일의 크기를 나타내는 변수(mbin_size)에 저장하는 제1과정과;
    상기 포인터(ptr)가 가리키는 번지의 값(*ptr)이 초기화 데이터(0)인지를 판단하는 제2과정과;
    초기화 데이터(0)일 경우, 변수(mbin_size)에 저장되어 있는 크기 값과, 최종 번지를 가리키는 포인터를 하나씩 감소시키는 제3과정과;
    상기 제1 내지 제3과정을 초기화 데이터(0)가 저장되어 있지 않은 번지가 나타날 때까지 반복 수행하는 제4과정으로 이루어진 것을 특징으로 하는 실행 파일의 압축 방법.
  3. 제1항에 있어서, 상기 제3단계의 헤더 영역에 기록되는 정보는, 파일 복원시에 삭제된 영역을 그대로 생성할 수 있도록 하기 위한 것으로, 압축된 파일임을 나타내는 정보(MBIN)와, 메모리에 저장할 때 기준이 되는 시작 번지 정보(Start_Add)와, 압축되기 이전의 원래 2진 파일의 크기 값을 나타내는 정보(binary_size)와, 압축되어 생성된 2진 파일의 크기 값을 나타내는 정보(mbin_size)가 포함되는 것을 특징으로 하는 실행 파일의 압축 방법.
  4. 압축된 실행 파일을 복원함에 있어서,
    압축된 2진 파일을 로딩하여 그 헤더부로부터 해당 파일에 관한 기본 정보를 읽어내는 제1단계와;
    상기 헤더부에 저장되어 있는 정보 중 시작 번지(Start_add)로부터 유효(payload) 데이터(TEXT, DATA, BSS)를 저장하는 제2단계와;
    상기 유효 데이터가 저장된 이후 번지에 원래 2진 파일 크기에서 압축된 2진 파일의 크기를 뺀 값(binary_size - mbin_size) 만큼 '0'을 초기값으로 하는 영역을 할당하는 제3단계로 이루어진 것을 특징으로 하는 실행 파일의 복원 방법.
  5. 제4항에 있어서, 상기 제1단계에서 읽어낸 헤더 정보에서 압축된 파일임을나타내는 정보(MBIN)가 포함되어 있는지 여부에 의해 상기 복원 과정을 계속 진행하거나, 다른 형식의 파일 복원 과정을 수행하도록 하는 과정이 더 포함되어 이루어진 것을 특징으로 하는 실행 파일의 복원 방법.
KR1020010082801A 2001-12-21 2001-12-21 실행 파일의 압축 및 복원 방법 KR20030052767A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020010082801A KR20030052767A (ko) 2001-12-21 2001-12-21 실행 파일의 압축 및 복원 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020010082801A KR20030052767A (ko) 2001-12-21 2001-12-21 실행 파일의 압축 및 복원 방법

Publications (1)

Publication Number Publication Date
KR20030052767A true KR20030052767A (ko) 2003-06-27

Family

ID=29577512

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010082801A KR20030052767A (ko) 2001-12-21 2001-12-21 실행 파일의 압축 및 복원 방법

Country Status (1)

Country Link
KR (1) KR20030052767A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101426425B1 (ko) * 2012-11-15 2014-08-05 경북대학교 산학협력단 기상 레이더 관측 자료 저장 방법 및 이를 이용한 기상 관측 시스템
WO2022031181A1 (en) * 2020-08-03 2022-02-10 Huawei Technologies Co., Ltd Application service metadata encoding and initialization

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101426425B1 (ko) * 2012-11-15 2014-08-05 경북대학교 산학협력단 기상 레이더 관측 자료 저장 방법 및 이를 이용한 기상 관측 시스템
WO2022031181A1 (en) * 2020-08-03 2022-02-10 Huawei Technologies Co., Ltd Application service metadata encoding and initialization

Similar Documents

Publication Publication Date Title
US5734822A (en) Apparatus and method for preprocessing computer programs prior to transmission across a network
EP1905044B1 (en) Apparatus, system and method for accessing persistent files in non-execute-in-place flash memory
EP2273361B1 (en) Method and system for updating versions of content stored in a storage device
US7610479B2 (en) Computing device method that presents as a single file system operating system components in both executable and non-executable memory
US5794049A (en) Computer system and method for executing architecture specific code with reduced run-time memory space requirements
JP3683814B2 (ja) 削除されたアプリケーションのメモリの再利用
JP2007510211A (ja) コンピュータ装置におけるダイナミック・リンク・ライブラリのマッピング
CN106909398B (zh) 一种可执行文件的压缩方法及装置
KR20030052767A (ko) 실행 파일의 압축 및 복원 방법
JP5100500B2 (ja) データ書き換えシステム及び新版データ作成装置及び差分データ作成装置及び新版データ作成プログラム及び差分データ作成プログラム
CN113641643A (zh) 文件写入方法及装置
KR100544171B1 (ko) 임베디드 시스템 및 그 운용방법
KR19990011346A (ko) 압축된 부팅 롬 생성 방법
KR20010053875A (ko) 내장형 자바가상머신을 위한 바이트코드 압축 방법
KR100623190B1 (ko) 데이터 저장 관리 방법 및 그 시스템
KR20000003162A (ko) 효율적인 플래시 메모리 운용 방법
JP2002268903A (ja) プログラム管理方式
JPH11327932A (ja) メモリ管理装置及び当該装置を備えたコンピュータ
KR20020010056A (ko) 플래쉬 메모리 관리방법
JP2003189225A (ja) データ処理方法及び装置
JPH08328826A (ja) メモリ内レコード格納方法および装置

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Withdrawal due to no request for examination