KR101955145B1 - 애플리케이션 로딩 방법 및 장치 - Google Patents

애플리케이션 로딩 방법 및 장치 Download PDF

Info

Publication number
KR101955145B1
KR101955145B1 KR1020177027992A KR20177027992A KR101955145B1 KR 101955145 B1 KR101955145 B1 KR 101955145B1 KR 1020177027992 A KR1020177027992 A KR 1020177027992A KR 20177027992 A KR20177027992 A KR 20177027992A KR 101955145 B1 KR101955145 B1 KR 101955145B1
Authority
KR
South Korea
Prior art keywords
data section
address
memory
read
loading
Prior art date
Application number
KR1020177027992A
Other languages
English (en)
Other versions
KR20170123337A (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 KR20170123337A publication Critical patent/KR20170123337A/ko
Application granted granted Critical
Publication of KR101955145B1 publication Critical patent/KR101955145B1/ko

Links

Images

Classifications

    • 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/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • 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/44557Code layout in executable memory
    • 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/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

애플리케이션 로딩 방법 및 장치. 해당 방법은, 프로그램 가능한 판독 전용 메모리에서, 애플리케이션의 실행 가능한 파일 중의 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택하는 단계(201); 기설정된 데이터 섹션을 메모리에 카피하고, 저장 공간의 시작 주소를 기반으로 기설정된 데이터 섹션에 대하여 재배치를 진행하는 단계(202); 및 재배치한 기설정된 데이터 섹션을 저장 공간에 카피하는 단계(203);를 포함한다. 메모리 중에서 실행 가능한 파일의 코드 부분에 대한 재배치를 실시하였고, 다음, 재배치한 코드 부분을 프로그램 가능한 판독 전용 메모리 중에 기록함으로써 메모리 블록에 대한 지우기 작업을 한 번만 진행하면 바로 코드 부분의 재배치를 완료할 수 있고, 따라서 애플리케이션 로딩 과정 중 시스템 오버헤드를 감소시키고 프로그램 가능한 판독 전용 메모리에 대한 소모를 경감시키게 된다.

Description

애플리케이션 로딩 방법 및 장치
본 특허 출원은 2015년 12월 25일에 제출한 출원번호가 201510994261.4인 중국 특허 출원의 우선권을 주장하는 바, 상기 출원의 모든 내용은 통합되어 본원에 원용된다.
기술 분야
본 출원은 컴퓨터 기술 분야에 관한 것으로, 구체적으로 애플리케이션 분야에 관한 것이며, 특히 애플리케이션 로딩 방법 및 장치에 관한 것이다.
임베디드 시스템 중에서, 애플리케이션 로딩을 진행할 경우, 통상적으로 플래시 메모리 중에 실행 가능한 파일의 이진코드를 저장하고, 플래시 메모리 상에서 명령어를 직접 실행하는 방식을 사용한다. 애플리케이션 로딩 과정 중, 부호가 절대 주소를 구비하도록 애플리케이션의 어셈블리 코드 중의 부호에 대하여 재배치를 진행하는 것이 필요하여 애플리케이션 로딩을 진행한다.
그러나, 상기 방식을 사용하여 애플리케이션 로딩을 진행할 경우, 매번 부호에 대한 재배치는 해당 부호가 위치하는 메모리중 전체 메모리 블록에 대하여 한번 지우기하는 작업에 대응되고, 따라서 시스템 오버헤드 및 플래시 메모리 소모는 많이 증가하게 된다.
본 출원은 상기 배경기술 부분에서 존재한 기술적 문제를 해결하기 위하여, 애플리케이션 로딩 방법 및 장치를 제공한다.
제1 방면에 있어서, 본 출원은 애플리케이션 로딩 방법을 제공하며, 해당 방법은, 프로그램 가능한 판독 전용 메모리에서 애플리케이션의 실행 가능한 파일 중 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택하되, 기설정된 데이터 섹션은 애플리케이션 로딩 시 프로그램 가능한 판독 전용 메모리 중에 로딩되어 실행되는 데이터 섹션인 단계; 기설정된 데이터 섹션을 메모리에 카피하고, 저장 공간의 시작 주소를 기반으로 기설정된 데이터 섹션에 대하여 재배치를 진행하는 단계; 및 재배치한 기설정된 데이터 섹션을 저장 공간에 카피하여 애플리케이션 로딩을 진행하는 단계;를 포함한다.
제2 방면에 있어서, 본 출원은 애플리케이션 로딩 장치를 제공하며, 해당 장치는, 프로그램 가능한 판독 전용 메모리에서, 애플리케이션의 실행 가능한 파일 중 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택하도록 구성되되, 기설정된 데이터 섹션은 애플리케이션 로딩시 프로그램 가능한 판독 전용 메모리 중에 로딩되어 실행되는 데이터 섹션인 선택 유닛; 기설정된 데이터 섹션을 메모리에 카피하고, 저장 공간의 시작 주소를 기반으로 기설정된 데이터 섹션에 대하여 재배치를 진행하도록 구성된 재배치 유닛; 및 재배치한 기설정된 데이터 섹션을 저장 공간에 카피하여 애플리케이션 로딩을 진행하도록 구성된 로딩 유닛;을 포함한다.
본 출원에 따른 애플리케이션 로딩 방법 및 장치에 있어서, 프로그램 가능한 판독 전용 메모리에서 애플리케이션의 실행 가능한 파일 중 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택하여; 기설정된 데이터 섹션을 메모리에 카피하고, 저장 공간의 시작 주소를 기반으로 기설정된 데이터 섹션에 대하여 재배치를 진행하며; 재배치한 기설정된 데이터 섹션을 저장 공간에 카피한다. 따라서, 메모리 중 실행 가능한 파일의 코드 부분에 대한 재배치를 실시하였고, 다음, 재배치한 코드 부분을 프로그램 가능한 판독 전용 메모리 중에 기록함으로써 메모리 블록에 대한 지우기 작업을 한 번만 진행하면 바로 코드 부분의 재배치를 완료할 수 있고, 따라서 애플리케이션 로딩 과정 중 시스템 오버헤드를 감소시키고 프로그램 가능한 판독 전용 메모리에 대한 소모를 경감시키게 된다.
이하 첨부된 도면들을 참조하여 진행한 비 한정적인 실시예에 대한 상세한 설명으로부터, 본 출원의 기타 특징, 목적 및 장점들은 더욱 명확해 질 것이다.
도1은 본 출원이 적용 가능한 예시적 시스템의 구조도이다.
도2는 본 출원에 따른 애플리케이션 로딩 방법의 일 실시예의 흐름도이다.
도3은 본 실시예에 따른 애플리케이션을 로딩하는 일 예시적 개략도이다.
도4는 본 출원에 따른 애플리케이션 로딩 방법의 일 예시적 흐름도이다.
도5는 본 출원에 따른 애플리케이션 로딩 장치의 일 실시예의 구조적 개략도이다.
도6은 본 출원의 실시예에 따른 단말기 장치 또는 서버를 실현하기에 적합한 컴퓨터 시스템의 구조적 개략도이다.
이하, 첨부된 도면 및 실시예들을 결부하여 본 출원을 상세히 설명하기로 한다. 본 명세서에서 설명된 구체적인 실시예들은 오직 해당 발명을 설명하기 위한 것일 뿐, 해당 발명을 한정하기 위한 것이 아님을 이해할 것이다. 또한, 설명의 편의를 위하여, 도면에는 오직 본 발명에 관련된 부분만 도시되어 있다.
본 출원의 실시예 및 실시예의 특징들은 서로 모순되지 않는 한 상호 조합할 수 있다. 이하, 첨부된 도면을 참조하고 실시예들을 결부하여 본 출원을 상세히 설명하기로 한다.
도1은 본 출원의 애플리케이션 로딩 방법 또는 애플리케이션 로딩 장치의 실시예를 적용할 수 있는 예시적 시스템 아키텍(100)를 나타낸다.
도1에 도시된 바와 같이, 시스템 아키텍(100)는 단말기 장치(101, 102 및 103), 네트워크(104) 및 서버(105)를 포함할 수 있다. 네트워크(104)는 단말기 장치(101, 102 및 103)와 서버(105) 사이에 전송 링크를 제공하는 매체이다. 네트워크(104)는 유선, 무선 전송 링크 또는 광섬유 케이블 등과 같은 여려가지 연결 유형을 포함할 수 있다.
사용자는 단말기 장치(101, 102 및 103)를 이용하여 네트워크(104)를 통해 서버(105)와 인터랙션을 진행하여 메세지를 수신 또는 발송할 수 있다. 단말기 장치(101, 102 및 103)에는 네트워크 보안 애플리케이션 및 인스턴트 메시징 툴 등과 같은 각종 통신 애플리케이션들이 설치될 수 있다.
단말기 장치(101, 102 및 103)는 디스플레이 스크린을 구비하고 네트워크 통신을 지원하는 각종 전자기기일 수 있으며, 스마트폰, 태블릿 PC, 전자책 단말기, MP3 플레이어(Moving Picture Experts Group Audio Layer III), MP4(Moving Picture Experts Group Audio Layer IV) 플레이어, 랩탑형 컴퓨터 및 데스크톱 컴퓨터 등을 포함하며, 이에 한정되는 것은 아니다.
서버(105)는 다양한 서비스를 제공하는 서버일 수 있고, 예를 들어, 단말기 장치(101, 102 및 103) 상의 애플리케이션에 데이터 지지를 제공하는 서버일 수 있다. 서버(105)는 단말기 장치(101, 102 및 103)가 발송한 조회 요청을 수신하고 조회 요청에 대하여 처리를 진행할 수 있다. 그리고 처리 결과(애플리케이션의 실행 가능한 파일의 재배치 정보)를 단말기 장치에 피드백한다.
도1 중의 단말기 장치, 네트워크 및 서버의 수량은 단지 예시적인 것으로 이해할 것이다. 실제 수요에 따라, 임의 수량의 단말기 장치, 네트워크 및 서버를 구비할 수 있다.
도2를 참조하면, 본 출원에 따른 애플리케이션 로딩 방법의 일 실시예의 프로세스(200)를 도시한다. 본 실시예에서 제공하는 애플리케이션 로딩 방법은 도1 중의 단말기 장치(101, 102 및 103)에 의해 수행될 수 있다. 해당 방법은 아래와 같은 단계들을 포함한다.
단계(201), 프로그램 가능한 판독 전용 메모리에서 애플리케이션의 실행 가능한 파일 중의 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택한다.
본 실시예에 있어서, 애플리케이션의 실행 가능한 파일은 프로그램 가능한 판독 전용 메모리 중에 저장될 수 있다. 실행 가능한 파일은 다수의 데이터 섹션을 포함하며, 애플리케이션이 로딩될 경우, 즉 애플리케이션의 실행 가능한 파일이 로딩될 경우, 기설정된 데이터 섹션은 프로그램 가능한 판독 전용 메모리 중에 로딩되어 실행되는 데이터 섹션이다. 본 실시예에 있어서, 프로그램 가능한 판독 전용 메모리 중에서, 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택할 수 있고, 해당 저장 공간은 재배치한 기설정된 데이터 섹션을 저장한다.
본 실시예의 일부 선택적인 구현 방식에 있어서, 프로그램 가능한 판독 전용 메모리는 플래시 메모리이다. 본 실시예에 있어서, 애플리케이션의 실행 가능한 파일은 플래시 메모리 중에 저장할 수 있고; 플래시 메모리 중에서, 재배치한 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 미리 선택할 수 있다.
단계(202), 기설정된 데이터 섹션을 메모리에 카피하고, 저장 공간의 시작 주소를 기반으로 기설정된 데이터 섹션에 대하여 재배치를 진행한다.
본 실시예에 있어서, 애플리케이션이 로딩될 경우 먼저 기설정된 데이터 섹션을 메모리에 카피할 수 있고, 다음 프로그램 가능한 판독 전용 메모리 중에서 미리 선택한 저장 공간의 시작 주소를 기반으로 해당 기설정된 데이터 섹션에 대하여 재배치를 진행할 수 있다(즉, 기설정된 데이터 섹션 중의 부호의 로딩 주소를 확정할 수 있다).
이하, 먼저 어셈블리 명령어 jmp exp 및 exp:push를 예로 들어 재배치의 원리를 설명하기로 한다. 어셈블리 명령어 exp:push는 부호 exp에 대응되는 주소 상에 푸시(즉, push) 명령어가 저장되어 있는 것을 의미한다. 어셈블리 명령어 jmp exp는 부호 exp에 대응되는 주소로 점프하여 해당 주소 상의 푸시 명령어를 실행하는 역할을 한다. 만일, 컴파일 시 부호 exp의 컴파일 주소가 1000h이면, 어셈블리 명령어에 대하여 컴파일을 진행한 후, jmp exp는 jmp 1000h로 변환된다. 애플리케이션이 로딩될 경우, 어셈블리 명령어는 컴파일 시 통일적으로 주소 0을 시작 주소로 사용하여 컴파일을 진행하고, 또한 로딩 시 임의의 위치에 로딩되어 실행될 수 있으므로, 부호에 대하여 재배치를 진행하여야 하고, 즉 어셈블리 명령어 중의 부호에 대응되는 로딩 주소(절대 주소로 칭할 수도 있음)를 다시 확정하여야 하고, 어셈블리 명령어 중의 부호, 즉 exp 부호에 대응되는 주소를 확정한 로딩 주소로 수정하여 해당 명령어를 실행한다.
본 실시예의 일부 선택 가능적인 구현 방식에 있어서, 실행 가능한 파일은 ELF 파일이고, 기설정된 데이터 섹션은 기계 명령어 데이터 섹션과 판독 전용 데이터 섹션을 포함한다. 저장 공간의 시작 주소를 기반으로 기설정된 데이터 섹션에 대하여 재배치를 진행하는 단계는, ELF 파일의 기계 명령어 주소 오프셋 데이터 섹션(an address offset data section of machine instructions) 중에서, 기계 명령어 데이터 섹션 중의 기계 명령어의 피연산수에 대응되는 주소 오프셋을 검색하는 단계; 시작 주소와 주소 오프셋에 따라, 피연산수에 대응되는 로딩 주소를 계산하여 기계 명령어 데이터 섹션에 대하여 재배치를 진행하는 단계; ELF 파일의 판독 전용 데이터 주소 오프셋 데이터 섹션(an address offset data section of read-only data) 중에서, 판독 전용 데이터 섹션 중의 판독 전용 데이터에 대응되는 주소 오프셋을 검색하는 단계; 및 시작 주소와 주소 오프셋에 따라, 판독 전용 데이터에 대응되는 로딩 주소를 계산하여 판독 전용 데이터 섹션에 대하여 재배치를 진행하는 단계를 포함한다.
본 실시예에 있어서, 애플리케이션이 임베디드 기기(예를 들어, 사물인터넷 기기) 상에 로딩되도록 지원하기 위하여, 실행 가능한 파일은 재배치 가능한 파일 형식인 ELF 형식의 파일(ELF 파일로 약칭될 수 있음)일 수 있다. 먼저 ELF 파일의 구성을 설명하기로 한다. ELF 파일에서, 데이터 섹션(section)을 이용하여 파일의 콘텐츠를 묘사한다. ELF 파일은, 기계 명령어 데이터 섹션(.text), 판독 전용 데이터 섹션(.rodata), 초기화된 전역 변수 데이터 섹션(.data) 및 초기화되지 않은 전역 변수 데이터 섹션(.bss)을 포함한다. 여기서, 기계 명령어 데이터 섹션 중의 데이터는 컴파일된 애플리케이션의 기계 코드이고, 판독 전용 데이터 섹션 중의 데이터는 판독 전용 데이터이고, 초기화된 전역 변수 데이터 섹션 중의 데이터는 초기화된 전역 변수이다. 애플리케이션의 실행 가능한 파일이 ELF 파일일 경우, 애플리케이션 로딩이 진행될 경우, 즉 애플리케이션의 ELF 파일에 대하여 로딩이 진행될 경우, ELF 파일 중의 기계 명령어 데이터 섹션(.text)과 판독 전용 데이터 섹션(.rodata)은 플래시 메모리 중에 로딩될 수 있고, ELF 파일 중의 초기화된 전역 변수 데이터 섹션(.data)과 초기화되지 않은 전역 변수 데이터 섹션(.bss)은 메모리 중에 로딩될 수 있다.
본 실시예에 있어서, 기계 명령어 데이터 섹션(.text)과 판독 전용 데이터 섹션(.rodata)은 코드 부분(code)으로 총칭될 수 있다. 초기화된 전역 변수 데이터 섹션(.data)과 초기화되지 않은 전역 변수 데이터 섹션(.bss)은 데이터 부분(data)으로 총칭될 수 있다. ELF 파일에 대하여 로딩을 진행할 경우, 코드 부분(code)과 데이터 부분(data)에 대하여 재배치를 진행하여야 하고, 즉 ELF 파일 중의 코드 부분(code)과 데이터 부분(data) 중의 부호의 로딩 주소를 계산하야여 한다. 코드 부분(code)과 데이터 부분(data)의 재배치 과정 중에서, ELF 파일 중의 기계 명령어 주소 오프셋 데이터 섹션(.rel.text), 판독 전용 데이터 주소 오프셋 데이터 섹션(.rel.rodata) 및 초기화된 전역 변수 주소 오프셋 데이터 섹션(an address offset data section of initialized global variables)(.rel.data)을 이용하여 코드 부분과 데이터 부분에 대하여 재배치를 진행할 수 있다.
본 실시예의 일부 선택 가능적인 구현 방식에 있어서, ELF 파일 중의 초기화되지 않은 전역 변수 데이터 섹션과 초기화된 전역 변수 데이터 섹션을 메모리에 카피하는 단계; 초기화되지 않은 전역 변수 데이터 섹션에 대응되는 저장 공간 중의 저장값을 0으로 설정하는 단계; ELF 파일의 초기화된 전역 변수 주소 오프셋 데이터 섹션 중에서, 초기화된 전역 변수 데이터 섹션 중의 초기화된 전역 변수에 대응되는 주소 오프셋을 검색하는 단계; 및 메모리 중 초기화된 전역 변수의 시작 주소 및 주소 오프셋에 따라, 초기화된 전역 변수의 로딩 주소를 계산하여 초기화된 전역 변수 데이터 섹션에 대하여 재배치를 진행하는 단계를 더 포함한다.
이하, 프로그램 가능한 판독 전용 메모리가 플래시 메모리인 것을 예로 들어, ELF 파일 중의 코드 부분(code)과 데이터 부분(data)의 재배치 과정을 각각 설명하기로 한다. 본 실시예에 있어서, 아래와 같은 방식을 이용하여 ELF 파일 중의 코드 부분(code)에 대하여 재배치를 진행할 수 있다. 먼저, 미리 플래시 메모리 중에서 코드 부분(code), 즉 기계 명령어 데이터 섹션(.text)과 판독 전용 데이터 섹션(.rodata)을 위하여 코드 부분(code)이 점용할 저장 공간의 크기의 저장 공간을 할당하고, 해당 저장 공간의 시작 주소를 기록한다. 다음, 메모리 중에서 상기 저장 공간의 크기와 같은 저장 공간을 할당하여, 기계 명령어 데이터 섹션(.text)과 판독 전용 데이터 섹션(.rodata)을 메모리 중에 카피한다. 메모리 중에서 기계 명령어 데이터 섹션(.text)에 대하여 재배치를 진행할 경우, 기계 명령어 주소 오프셋 데이터 섹션(.rel.text) 중에서, 기계 명령어 데이터 섹션 중의 기계 명령어의 피연산수, 즉 명령어 중에 인용된 부호에 대응되는 주소 오프셋을 검색하고, 상기 시작 주소와 주소 오프셋에 따라, 피연산수에 대응되는 로딩 주소를 계산함으로써 명령어 중의 피연산수의 로딩 주소, 즉 명령어 중에 인용된 부호에 대응되는 로딩 주소를 산출한다. 기계 명령어 중의 모든 부호에 대응되는 로딩 주소를 산출한 후, 기계 명령어 데이터 섹션에 대한 재배치는 완료된다. 메모리 중에서 판독 전용 데이터 섹션(.rodata)에 대하여 재배치를 진행할 경우, 판독 전용 데이터 주소 오프셋 데이터 섹션(.rel.rodata) 중에서 판독 전용 데이터 섹션의 판독 전용 데이터에 대응되는 주소 오프셋을 검색할 수 있으며, 시작 주소와 주소 오프셋에 따라, 판독 전용 데이터에 대응되는 로딩 주소를 계한함으로써 판독 전용 데이터 섹션에 대하여 재배치를 진행한다.
본 실시예에 있어서, 아래와 같은 방식을 이용하여 ELF 파일 중의 데이터 부분(data)에 대하여 재배치를 진행할 수 있다. 메모리 중에서, 두 데이터 섹션, 즉 초기화된 전역 변수 데이터 섹션(.data)과 초기화되지 않은 전역 변수 데이터 섹션(.bss)이 차지할 저장 공간의 크기의 저장 공간을 할당하고, 초기화된 전역 변수 데이터 섹션(.data)과 초기화되지 않은 전역 변수 데이터 섹션(.bss)을 할당한 메모리 중에 카피한다. 초기화되지 않은 전역 변수 데이터 섹션(.bss)이 차지한 메모리 중의 저장 공간 중의 수치를 전부 0으로 초기화한다. 다음, 초기화된 전역 변수 주소 오프셋 데이터 섹션(.rel.data) 중에서, 초기화된 전역 변수 데이터 섹션 중의 초기화된 전역 변수에 대응되는 주소 오프셋을 검색할 수 있으며, 메모리 중 초기화된 전역 변수 데이터 섹션의 시작 주소 및 주소 오프셋에 따라, 초기화된 전역 변수의 로딩 주소를 계산함으로써, 초기화된 전역 변수 데이터 섹션(.data)에 대하여 재배치를 진행한다.
단계(203), 재배치한 기설정된 데이터 섹션을 저장 공간에 카피하여 애플리케이션 로딩을 진행한다.
본 실시예에 있어서, 메모리 중에서 기설정된 데이터 섹션(예를 들어, 기계 명령어 데이터 섹션 및 판독 전용 데이터 섹션)에 대한 재배치를 완료한 후, 재배치한 기설정된 데이터 섹션을, 프로그램 가능한 판독 전용 메모리(예를 들어, 플래시 메모리) 중에서 미리 선택한, 재배치한 기설정된 데이터 섹션을 저장하기 위한 저장 공간 중에 카피할 수 있으므로, 재배치한 기설정된 데이터 섹션이 프로그램 가능한 판독 전용 메모리 상에 로딩되도록 하며, 동시에, 메모리 중의 초기화된 전역 변수 데이터 섹션(.data)과 초기화되지 않은 전역 변수 데이터 섹션(.bss)에 대하여 재배치를 진행한 후 로딩을 진행할 수 있으므로, 애플리케이션에 대한 로딩을 완료한다.
본 실시예의 일부 선택 가능적인 구현 방식에 있어서, 재배치한 기설정된 데이터 섹션을 저장 공간에 카피 한 후, 프로그램 가능한 판독 전용 메모리 중에 저장 공간의 시작 주소를 저장하여, 애플리케이션 로딩을 다시 한 번 진행할 경우, 시작 주소를 이용하여 프로그램 가능한 판독 전용 메모리 중에 저장한, 재배치한 기설정된 데이터 섹션을 검색하고 기설정된 데이터 섹션에 대하여 로딩을 진행하는 단계를 더 포함한다.
본 실시예에 있어서, 재배치 과정 중에서 ELF 파일 중 각 데이터 섹션의 오프셋과 크기를 동시에 기록할 수도 있고, 다음, ELF 파일 중 각 데이터 섹션의 오프셋과 크기 및 플래시 메모리 중 재배치한 ELF의 코드 부분(code)의 시작 주소 및 ELF 파일의 명칭을 함께 파일 형식으로 플래시 메모리 중에 저장할 수 있고, 해당 파일을 재배치 정보 파일로 칭할 수 있다. 따라서, 애플리케이션 로딩을 다시 한 번 진행할 경우, 애플리케이션의 ELF 파일의 명칭을 통해 재배치 정보 파일을 검색한다. 다음, ELF 파일 중 재배치 정보 파일 중에 기록한 데이터 부분(data), 즉 초기화된 전역 변수 데이터 섹션(.data)과 초기화되지 않은 전역 변수 데이터 섹션(.bss)의 오프셋과 크기를 기반으로, ELF 파일 중 데이터 부분(data) 중의 데이터를 직접 판독하여 데이터 부분(data)에 대하여 재배치를 진행한 후 로딩을 진행할 수 있다.
도3을 참조하면, 본 실시예 중의 애플리케이션 로딩을 진행하는 일 예시적 개략도를 도시한다. 도3에서, 플래시 메모리 중에 저장된 ELF 파일 중의 기계 명령어 데이터 섹션(.text), 기계 명령어 주소 오프셋 데이터 섹션(.rel.text), 판독 전용 데이터 섹션(.rodata), 초기화된 전역 변수 데이터 섹션(.data), 초기화된 전역 변수 주소 오프셋 데이터 섹션(.rel.data) 및 초기화되지 않은 전역 변수 데이터 섹션(.bss)을 도시한다. 기계 명령어 데이터 섹션(.text), 판독 전용 데이터 섹션(.rodata), 초기화된 전역 변수 데이터 섹션(.data), 초기화되지 않은 전역 변수 데이터 섹션(.bss)은 먼저 메모리에 카피되고, 동시에, 플래시 메모리 중에서 재배치한 기계 명령어 데이터 섹션(.text) 및 판독 전용 데이터 섹션(.rodata)을 저장하기 위한 저장 공간을 선택한다. 해당 저장 공간은 당하의 기설정된 데이터 섹션을 저장하는 플래시 메모리 중의 저장 공간과 다르고, 해당 저장 공간은 재배치한 기설정된 데이터 섹션을 저장하는 역할을 한다. 다음, 메모리 중에서, 해당 저장 공간의 시작 주소를 기반으로, 기계 명령어 주소 오프셋 데이터 섹션(.rel.text)과 판독 전용 데이터 주소 오프셋 데이터 섹션(.rel.rodata)을 결부하여 기계 명령어 데이터 섹션(.text)과 판독 전용 데이터 섹션(.rodata)에 대하여 재배치를 진행하고, 마지막으로, 한 번 카피하여 플래시 메모리 중에서 선택한, 재배치한 기계 명령어 데이터 섹션(.text)과 판독 전용 데이터 섹션(.rodata)을 저장하기 위한 저장 공간 중에 기록한다. 동시에, 초기화되지 않은 전역 변수 데이터 섹션(.bss)을 0으로 초기화하고, 초기화된 전역 변수 주소 오프셋 데이터 섹션(.rel.data)을 결부하여 초기화된 전역 변수 데이터 섹션(.data)에 대하여 재배치를 진행한다.
도4를 참조하면, 본 출원 중의 애플리케이션 로딩 방법의 일 예시적 흐름도를 도시한다. 아래와 같은 단계들을 포함한다.
단계(401), 시스템을 작동하여 애플리케이션을 로딩한다.
단계(402), 플래시 메모리 상에서 코드 부분이 차지할 저장 공간의 크기의 저장 공간을 미리 할당한다.
단계(403), 메모리 중에서 코드 부분을 위하여 동일한 크기의 메모리를 할당한다.
단계(404), 메모리 중에서, 재배치 섹션과 코드 섹션이 플래시 메모리 중에서 미리 할당받은 저장 공간의 시작 주소를 이용하여 코드 부분에 대하여 재배치를 진행한다. 재배치 섹션은, 기계 명령어 주소 오프셋 데이터 섹션과 판독 전용 데이터 주소 오프셋 데이터 섹션을 포함한다.
단계(405), 재배치한 코드 부분을 플래시 메모리 중의 미리 할당한 저장 공간 중에 카피한다.
단계(406), 메모리 중에서 데이터 부분을 위하여 필요한 크기의 메모리를 할당한다.
단계(407), 플래시 메모리 상의 재배치 정보, 애플리케이션 명칭, 재배치 코드 섹션의 주소를 플래시 메모리 중에 저장하고, 재배치 정보 파일로 명명한다. 재배치 정보는, 플래시 메모리 중에서 미리 할당한 저장 공간의 시작 주소를 포함한다.
이하, 프로그램 가능한 판독 전용 메모리가 플래시 메모리인 것을 예로 들어, 본 실시예 중의 애플리케이션의 로딩 방식과 기존 기술의 차이점을 설명하기로 한다. 기존 기술에 있어서, 애플리케이션의 코드 부분(code) 에 대한 재배치 과정 중에서, 매번 부호에 대한 재배치는 부호가 위치하는 플래시 메모리 중의 메모리 블록에 대한 지우기 작업을하는 것이 한 번 필요하므로, 시스템 오버헤드의 증가 및 플래시(flash) 소모의 증가를 초래하게 된다. 그러나, 본 실시예에 있어서, 애플리케이션의 코드 부분(code)은, 처음 로딩 시 한 번만 로딩되면 된다. 애플리케이션 로딩을 다시 한 번 진행할 경우, 예를 들어, 시스템을 재작동할 경우, 플래시 메모리 중에, 처음 로딩 시 플래시 메모리 중에 저장한 재배치한 ELF 파일의 코드 부분(code)의 시작 주소를 미리 저장하였으므로, 해당 시작 주소에 따라 바로 재배치한 ELF 파일의 코드 부분(code)을 직접 실행하여, ELF의 코드 부분(code)의 로딩을 완료할 수 있고, ELF 파일의 코드 부분(code)에 대한 재배치를 재차 진행할 필요가 없다. 아울러, ELF 파일의 데이터 부분(data)에 대하여 재배치를 진행한 후 로딩만 진행하면, 바로 애플리케이션에 대한 로딩을 완료할 수 있으므로, 애플리케이션의 로딩 과정 중 플래시 메모리의 소모를 줄이고 애플리케이션의 로딩 속도를 향상시키게 된다. 그리고, ELF 파일 중 재배치 정보 파일 중에 기록한 데이터 부분(data)의 오프셋과 크기에 따라 ELF 파일 중 데이터 부분(data) 중의 데이터를 직접 판독할 수 있으므로, 보조 재배치 정보를 다시 획득할 필요가 없고 애플리케이션의 로딩 속도를 진일보 향상시킨다.
도5를 참조하면, 본 출원에 따른 애플리케이션 로딩 장치의 일 실시예의 구조적 개략도를 도시한다. 장치(500)는, 선택 유닛(501), 재배치 유닛(502), 로닝 유닛(503)을 포함한다. 선택 유닛(501)은, 프로그램 가능한 판독 전용 메모리에서 애플리케이션의 실행 가능한 파일 중의 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택하도록 구성되되, 기설정된 데이터 섹션이 애플리케이션 로딩 시 프로그램 가능한 판독 전용 메모리 중에 로딩되어 실행되는 데이터 섹션이며, 재배치 유닛(502)은, 기설정된 데이터 섹션을 메모리에 카피하고, 저장 공간의 시작 주소를 기반으로 기설정된 데이터 섹션에 대하여 재배치를 진행하도록 구성되며, 로딩 유닛(503)은, 재배치한 기설정된 데이터 섹션을 저장 공간에 카피하여 애플리케이션 로딩을 진행하도록 구성된다.
본 실시예에 있어서, 선택 유닛(501)은 프로그램 가능한 판독 전용 메모리 중에서 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택할 수 있고, 해당 저장 공간의 주소는 당하 기설정된 데이터 섹션이 위치하는 프로그램 가능한 판독 전용 메모리 중의 저장 공간의 주소와 다르고, 해당 저장 공간은 재배치한 기설정된 데이터 섹션을 저장하는 역할을 한다.
본 실시예에 있어서, 재배치 유닛(502)은 프로그램 가능한 판독 전용 메모리 중에 저장한 기설정된 데이터 섹션을 메모리에 카피할 수 있고, 다음, 프로그램 가능한 판독 전용 메모리 중에서 미리 선택한 저장 공간의 시작 주소를 기반으로, 해당 기설정된 데이터 섹션에 대하여 재배치를 진행할 수 있고, 즉 기설정된 데이터 섹션 중 명령어 중의 부호의 로딩 주소 및 기설정된 데이터 섹션 중의 데이터의 로딩 주소를 확정할 수 있다.
본 실시예에 있어서, 로닝 유닛(503)은 재배치한 기설정된 데이터 섹션을 프로그램 가능한 판독 전용 메모리 중에서 미리 선택한, 재배치한 기설정된 데이터 섹션을 저장하기 위한 저장 공간 중에 카피할 수 있으므로, 재배치한 기설정된 데이터 섹션이 프로그램 가능한 판독 전용 메모리 상에서 로딩되도록 하고, 동시에, 메모리 중의 초기화된 전역 변수 데이터 섹션과 초기화되지 않은 전역 변수 데이터 섹션에 대하여 재배치를 진행한 후 로딩을 진행할 수 있으므로, 애플리케이션의 로딩을 완료하게 된다.
본 실시예의 일부 선택 가능적인 구현 방식에 있어서, 프로그램 가능한 판독 전용 메모리는 플래시 메모리이다.
본 실시예의 일부 선택 가능적인 구현 방식에 있어서, 재배치 유닛(502)은, 실행 가능한 파일이 ELF 파일이고, 기설정된 데이터 섹션이 기계 명령어 데이터 섹션과 판독 전용 데이터 섹션을 포함할 경우, ELF 파일의 기계 명령어 주소 오프셋 데이터 섹션 중에서, 기계 명령어 데이터 섹션 중의 기계 명령어의 피연산수에 대응되는 주소 오프셋을 검색하도록 구성된 제1 검색 서브 유닛(미도시); 시작 주소와 주소 오프셋에 따라, 피연산수에 대응되는 로딩 주소를 계산하여 기계 명령어 데이터 섹션에 대하여 재배치를 진행하도록 구성된 제1 계산 서브 유닛(미도시); ELF 파일의 판독 전용 데이터 주소 오프셋 데이터 섹션 중에서, 판독 전용 데이터 섹션 중의 판독 전용 데이터에 대응되는 주소 오프셋을 검색하도록 구성된 제2 검색 서브 유닛(미도시); 및 시작 주소와 주소 오프셋에 따라, 판독 전용 데이터에 대응되는 로딩 주소를 계산하여 판독 전용 데이터 섹션에 대하여 재배치를 진행하도록 구성된 제2 계산 서브 유닛(미도시);을 포함한다.
본 실시예의 일부 선택 가능적인 구현 방식에 있어서, 장치(500)는, ELF 파일 중의 초기화되지 않은 전역 변수 데이터 섹션과 초기화된 전역 변수 데이터 섹션을 메모리에 카피하도록 구성된 카피 유닛(미도시); 초기화되지 않은 전역 변수 데이터 섹션에 대응되는 저장 공간 중의 저장값을 0으로 설정하도록 구성된 설정 유닛(미도시); ELF 파일의 초기화된 전역 변수 주소 오프셋 데이터 섹션 중에서 초기화된 전역 변수 데이터 섹션 중의 초기화된 전역 변수에 대응되는 주소 오프셋을 검색하도록 구성된 오프셋 검색 유닛(미도시); 및 메모리 중 초기화된 전역 변수 데이터 섹션의 시작 주소 및 주소 오프셋에 따라, 초기화된 전역 변수의 로딩 주소를 계산하여 초기화된 전역 변수 데이터 섹션에 대하여 재배치를 진행하도록 구성된 로딩 주소 계산 유닛(미도시)을 더 포함한다.
본 실시예의 일부 선택 가능적인 구현 방식에 있어서, 장치(500)는, 재배치한 기설정된 데이터 섹션을 저장 공간에 카피한 후, 프로그램 가능한 판독 전용 메모리 중에서 저장 공간의 시작 주소를 보존하여, 애플리케이션 로딩을 다시 한 번 진행할 경우, 시작 주소를 이용하여 프로그램 가능한 판독 전용 메모리 중에 저장한, 재배치한 기설정된 데이터 섹션을 검색하고 기설정된 데이터 섹션에 대하여 로딩을 진행하도록 구성된 저장 유닛(미도시)을 더 포함한다.
도6은 본 출원의 실시예에서의 단말기 장치 또는 서버를 실현하기에 적합한 컴퓨터 시스템의 예시적 구성도이다.
도6에 도시된 바와 같이, 컴퓨터 시스템(600)은 중앙 처리 장치(CPU; 601)을 포함하고, 이는 판독 전용 메모리 장치(ROM; 602)에 저장된 프로그램 또는 저장 부분(608)으로부터 랜덤 액세스 메모리 장치(RAM; 603)에 로딩되는 프로그램에 의하여 각종 적당한 동작 및 처리를 실행할 수 있다. RAM(603)에는 시스템(600) 조작에 필요한 각종 프로그램 및 데이터들이 더 포함되어 있다. CPU(601), ROM(602) 및 RAM(603)은 버스(604)를 통하여 서로 연결된다. 입력/출력(I/O) 인터페이스(605)도 버스(604)에 연결된다.
키보드, 마우스 등을 포함하는 입력 부분(606); 음극선관(CRT), 액정 표시 장치(LCD) 등 및 스피커 등을 포함하는 출력 부분(607); 하드 디스크 등을 포함하는 저장 부분(608); 및 LAN 카드, 모뎀 장치 등과 같은 네트워크 에세스 카드를 포함하는 통신 부분(609)을 포함하는 구성요소는 I/O 인터페이스(605)에 연결된다. 통신 부분(609)은 인터넷과 같은 네트워크를 통하여 통신 처리를 실행한다. 드라이버(610)는 수요에 따라 I/O 인터페이스(605)에도 연결된다. 드라이버(610)에서 판독된 컴퓨터 프로그램이 수요에 따라 저장 부분(608)에 설치되도록 드라이버(610)에는 수요에 따라 디스크, 콤팩트디스크, 광자기 디스크, 반도체 메모리 장치 등과 같은 분리 가능한 매체(611)가 설치된다.
특히, 본 개시의 실시예에 의하면, 상기에 흐름도를 참조하여 설명한 프로세스는 컴퓨터 소프트웨어 프로그램으로 구현할 수 있다. 예를 들면, 본 개시의 실시예는 일 컴퓨터 프로그램 제품을 포함한다. 상기 컴퓨터 프로그램 제품은 유형적으로 컴퓨터 판독 가능한 매체에 포함되는 컴퓨터 프로그램을 포함하되, 컴퓨터 프로그램은 흐름도에 도시된 방법을 수행하기 위한 프로그램 코드를 포함한다. 이러한 실시예에서, 상기 컴퓨터 프로그램은 통신 부분(609)을 통하여 네트워크로부터 다운로드되어 설치되고, 및/또는 분리 가능한 매체(611)로부터 설치될 수 있다.
첨부한 도면중의 흐름도 및 블록도는 본 발명의 여러 실시예에 따른 시스템, 방법, 컴퓨터 프로그램 제품의 실시 가능한 체계구조, 기능 및 동작을 도시하였다. 이러한 방면에 있어서, 흐름도 또는 블록도 중의 각 블록은 하나의 모듈, 프로그램 세그먼트, 또는 코드의 일부분을 나타내고, 상기 모듈, 프로그램 세그먼트, 또는 코드의 일부분은 소정의 로직 기능을 실현하기 위한 하나 이상의 실행 가능한 명령어를 포함한다. 일부 대체 실시예에서, 블록에 표기된 기능은 도면에 표기된 순서와 다른 순서로 진행될 수 있음을 이해하여야 한다. 예를 들면, 순차적으로 표시된 두개의 블록은 사실상 관련된 기능에 따라 대체로 병행으로 진행될 수 있으며, 반대된 순서로 진행될 수도 있다. 블록도 및/또는 흐름도의 각 블록 및 블록도 및/또는 흐름도의 블록의 조합은 소정의 기능 또는 동작을 진행하는 하드웨어를 기반으로 하는 전용의 시스템으로 구현되거나, 전용 하드웨어 및 컴퓨터 명령어의 조합으로 구현될 수 있다.
다른 한 편으로, 본 출원은 비휘발성 컴퓨터 저장 매체를 제공하며, 해당 비휘발성 컴퓨터 저장 매체는 상기 실시예 중 상기 장치에 포함되는 비휘발성 컴퓨터 저장 매체이거나, 장치에 설치되지 않은 독립적으로 존재하는 비휘발성 컴퓨터 저장 매체일 수 있다. 상기 비휘발성 컴퓨터 저장 매체에는 하나 또는 다수의 프로그램이 저장되어 있을 수 있고, 상기 하나 또는 다수의 프로그램이 하나의 기기에 의해 실행될 경우, 상기 기기로 하여금, 프로그램 가능한 판독 전용 메모리에서, 애플리케이션의 실행 가능한 파일 중의 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택하되, 기설정된 데이터 섹션이 애플리케이션이 로딩될 경우, 상기 프로그램 가능한 판독 전용 메모리 중에 로딩되어 실행되는 데이터 섹션인 단계; 상기 기설정된 데이터 섹션을 메모리에 카피하고, 상기 저장 공간의 시작 주소를 기반으로 상기 기설정된 데이터 섹션에 대하여 재배치를 진행하는 단계; 및 재배치한 상기 기설정된 데이터 섹션을 상기 저장 공간에 카피하여 애플리케이션 로딩을 진행하는 단계;를 실행하도록 한다.
이상의 설명은 오직 본 출원의 바람직한 실시예 및 이용한 기술 원리에 대한 설명일 뿐이다. 본 발명의 청구 범위는 상기 기술적 특징의 특정 조합으로 이루어진 기술적 방안에 한정되는 것이 아니라, 본 발명의 사상을 벗어나지 않는 한 상기 기술적 특징 또는 그의 균등한 특징들의 임의 조합으로 이루어진 기타 기술적 방안도 포함한다는 것을 해당 분야의 당업자라면 자명할 것이다. 상기 특징과 본 출원에 개시된 유사한 기능을 구비한 기술적 특징을 서로 교체하여 형성된 기술적 방안을 예로 들수 있으나, 이에 한정되는 것은 아니다.

Claims (12)

  1. 애플리케이션 로딩 장치에 의해 실행되는 애플리케이션 로딩 방법에 있어서,
    프로그램 가능한 판독 전용 메모리에서 애플리케이션의 실행 가능한 파일 중 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택하되, 기설정된 데이터 섹션은 애플리케이션 로딩 시 상기 프로그램 가능한 판독 전용 메모리 중에 로딩되어 실행되는 데이터 섹션인 단계;
    상기 기설정된 데이터 섹션을 메모리에 카피하고, 상기 저장 공간의 시작 주소를 기반으로 상기 기설정된 데이터 섹션에 대하여 재배치를 진행하는 단계; 및
    재배치한 상기 기설정된 데이터 섹션을 상기 저장 공간에 카피하여 애플리케이션 로딩을 진행하는 단계를 포함하되,
    여기서, 상기 실행 가능한 파일은 ELF 파일이고, 상기 기설정된 데이터 섹션은 기계 명령어 데이터 섹션과 판독 전용 데이터 섹션을 포함하며,
    상기 저장 공간의 시작 주소를 기반으로 상기 기설정된 데이터 섹션에 대하여 재배치를 진행하는 단계는,
    상기 ELF 파일의 기계 명령어 주소 오프셋 데이터 섹션에서 기계 명령어 데이터 섹션 중 기계 명령어의 피연산수에 대응되는 주소 오프셋을 검색하는 단계;
    상기 시작 주소와 상기 주소 오프셋에 따라, 상기 피연산수에 대응되는 로딩 주소를 계산하여 기계 명령어 데이터 섹션에 대하여 재배치를 진행하는 단계;
    상기 ELF 파일의 판독 전용 데이터 주소 오프셋 데이터 섹션에서 판독 전용 데이터 섹션 중 판독 전용 데이터에 대응되는 주소 오프셋을 검색하는 단계; 및
    상기 시작 주소와 상기 주소 오프셋에 따라, 상기 판독 전용 데이터에 대응되는 로딩 주소를 계산하여 판독 전용 데이터 섹션에 대하여 재배치를 진행하는 단계를 포함하는 것을 특징으로 하는 애플리케이션 로딩 방법.
  2. 제1항에 있어서,
    상기 프로그램 가능한 판독 전용 메모리는 플래시 메모리인 것을 특징으로 하는 애플리케이션 로딩 방법.
  3. 삭제
  4. 제1항에 있어서,
    상기 ELF 파일 중 초기화되지 않은 전역 변수 데이터 섹션과 초기화된 전역 변수 데이터 섹션을 메모리에 카피하는 단계;
    초기화되지 않은 전역 변수 데이터 섹션에 대응되는 저장 공간의 저장값을 0으로 설정하는 단계;
    상기 ELF 파일의 초기화된 전역 변수 주소 오프셋 데이터 섹션에서 초기화된 전역 변수 데이터 섹션 중 초기화된 전역 변수에 대응되는 주소 오프셋을 검색하는 단계; 및
    메모리 중 초기화된 전역 변수 데이터 섹션의 시작 주소 및 상기 주소 오프셋에 따라 초기화된 전역 변수의 로딩 주소를 계산하여 초기화된 전역 변수 데이터 섹션에 대하여 재배치를 진행하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션 로딩 방법.
  5. 제4항에 있어서,
    재배치한 상기 기설정된 데이터 섹션을 상기 저장 공간에 카피한 후,
    프로그램 가능한 판독 전용 메모리에 상기 저장 공간의 시작 주소를 저장하여, 애플리케이션 로딩을 재차 진행할 경우, 상기 시작 주소를 이용하여 프로그램 가능한 판독 전용 메모리에 저장한 재배치한 기설정된 데이터 섹션을 검색하고, 기설정된 데이터 섹션에 대하여 로딩을 진행하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션 로딩 방법.
  6. 프로그램 가능한 판독 전용 메모리에서 애플리케이션의 실행 가능한 파일 중 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택하도록 구성되되, 기설정된 데이터 섹션은 애플리케이션 로딩 시 상기 프로그램 가능한 판독 전용 메모리에 로딩되어 실행되는 데이터 섹션인 선택 유닛;
    상기 기설정된 데이터 섹션을 메모리에 카피하고, 상기 저장 공간의 시작 주소를 기반으로 상기 기설정된 데이터 섹션에 대하여 재배치를 진행하도록 구성된 재배치 유닛; 및
    재배치한 상기 기설정된 데이터 섹션을 상기 저장 공간에 카피하여 애플리케이션 로딩을 진행하도록 구성된 로딩 유닛을 포함하되,
    여기서, 상기 재배치 유닛은,
    상기 실행 가능한 파일이 ELF 파일이고, 상기 기설정된 데이터 섹션이 기계 명령어 데이터 섹션과 판독 전용 데이터 섹션을 포함할 경우, 상기 ELF 파일의 기계 명령어 주소 오프셋 데이터 섹션에서 기계 명령어 데이터 섹션 중 기계 명령어의 피연산수에 대응되는 주소 오프셋을 검색하도록 구성된 제1 검색 서브 유닛;
    상기 시작 주소와 상기 주소 오프셋에 따라, 상기 피연산수에 대응되는 로딩 주소를 계산하여 기계 명령어 데이터 섹션에 대하여 재배치를 진행하도록 구성된 제1 계산 서브 유닛;
    상기 ELF 파일의 판독 전용 데이터 주소 오프셋 데이터 섹션에서 판독 전용 데이터 섹션 중 판독 전용 데이터에 대응되는 주소 오프셋을 검색하도록 구성된 제2 검색 서브 유닛; 및
    상기 시작 주소와 상기 주소 오프셋에 따라, 상기 판독 전용 데이터에 대응되는 로딩 주소를 계산하여 판독 전용 데이터 섹션에 대하여 재배치를 진행하도록 구성된 제2 계산 서브 유닛을 포함하는 것을 특징으로 하는 애플리케이션 로딩 장치.
  7. 제6항에 있어서,
    상기 프로그램 가능한 판독 전용 메모리는 플래시 메모리인 것을 특징으로 하는 애플리케이션 로딩 장치.
  8. 삭제
  9. 제6항에 있어서,
    상기 ELF 파일 중 초기화되지 않은 전역 변수 데이터 섹션과 초기화된 전역 변수 데이터 섹션을 메모리에 카피하도록 구성된 카피 유닛;
    초기화되지 않은 전역 변수 데이터 섹션에 대응되는 저장 공간의 저장값을 0으로 설정하도록 구성된 설정 유닛;
    상기 ELF 파일의 초기화된 전역 변수 주소 오프셋 데이터 섹션에서 초기화된 전역 변수 데이터 섹션 중 초기화된 전역 변수에 대응되는 주소 오프셋을 검색하도록 구성된 오프셋 검색 유닛; 및
    메모리 중 초기화된 전역 변수 데이터 섹션의 시작 주소 및 상기 주소 오프셋에 따라 초기화된 전역 변수의 로딩 주소를 계산하여 초기화된 전역 변수 데이터 섹션에 대하여 재배치를 진행하도록 구성된 로딩 주소 계산 유닛을 더 포함하는 것을 특징으로 하는 애플리케이션 로딩 장치.
  10. 제9항에 있어서,
    재배치한 상기 기설정된 데이터 섹션을 상기 저장 공간에 카피한 후, 프로그램 가능한 판독 전용 메모리에 상기 저장 공간의 시작 주소를 저장하여 애플리케이션 로딩을 재차 진행할 경우, 상기 시작 주소를 이용하여 프로그램 가능한 판독 전용 메모리에 저장한 재배치한 기설정된 데이터 섹션을 검색하고, 기설정된 데이터 섹션에 대하여 로딩을 진행하도록 구성된 저장 유닛을 더 포함하는 것을 특징으로 하는 애플리케이션 로딩 장치.
  11. 프로세서; 및
    메모리를 포함하되,
    상기 프로세서에 의해 실행될 수 있는 컴퓨터 판독 가능한 명령어가 상기 메모리에 저장되어 있고, 상기 컴퓨터 판독 가능한 명령어가 실행될 경우, 상기 프로세서는 애플리케이션 로딩 방법을 수행하며, 상기 방법은,
    프로그램 가능한 판독 전용 메모리에서 애플리케이션의 실행 가능한 파일 중 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택하되, 기설정된 데이터 섹션은 애플리케이션 로딩 시 상기 프로그램 가능한 판독 전용 메모리 중에 로딩되어 실행되는 데이터 섹션인 단계;
    상기 기설정된 데이터 섹션을 메모리에 카피하고, 상기 저장 공간의 시작 주소를 기반으로 상기 기설정된 데이터 섹션에 대하여 재배치를 진행하는 단계; 및
    재배치한 상기 기설정된 데이터 섹션을 상기 저장 공간에 카피하여 애플리케이션 로딩을 진행하는 단계를 포함하되
    여기서, 상기 실행 가능한 파일은 ELF 파일이고, 상기 기설정된 데이터 섹션은 기계 명령어 데이터 섹션과 판독 전용 데이터 섹션을 포함하며,
    상기 저장 공간의 시작 주소를 기반으로 상기 기설정된 데이터 섹션에 대하여 재배치를 진행하는 단계는,
    상기 ELF 파일의 기계 명령어 주소 오프셋 데이터 섹션에서 기계 명령어 데이터 섹션 중 기계 명령어의 피연산수에 대응되는 주소 오프셋을 검색하는 단계;
    상기 시작 주소와 상기 주소 오프셋에 따라, 상기 피연산수에 대응되는 로딩 주소를 계산하여 기계 명령어 데이터 섹션에 대하여 재배치를 진행하는 단계;
    상기 ELF 파일의 판독 전용 데이터 주소 오프셋 데이터 섹션에서 판독 전용 데이터 섹션 중 판독 전용 데이터에 대응되는 주소 오프셋을 검색하는 단계; 및
    상기 시작 주소와 상기 주소 오프셋에 따라, 상기 판독 전용 데이터에 대응되는 로딩 주소를 계산하여 판독 전용 데이터 섹션에 대하여 재배치를 진행하는 단계를 포함하는 것을 특징으로 하는 기기.
  12. 프로세서에 의해 실행될 수 있는 컴퓨터 판독 가능한 명령어가 저장되어 있는 비휘발성 컴퓨터 저장 매체에 있어서, 상기 컴퓨터 판독 가능한 명령어가 프로세서에 의해 수행될 경우, 상기 프로세서는 애플리케이션 로딩 방법을 수행하며, 상기 방법은,
    프로그램 가능한 판독 전용 메모리에서, 애플리케이션의 실행 가능한 파일 중 기설정된 데이터 섹션을 저장하기 위한 저장 공간을 선택하되, 기설정된 데이터 섹션은 애플리케이션 로딩 시, 상기 프로그램 가능한 판독 전용 메모리 중에 로딩되어 실행되는 데이터 섹션인 단계;
    상기 기설정된 데이터 섹션을 메모리에 카피하고, 상기 저장 공간의 시작 주소를 기반으로 상기 기설정된 데이터 섹션에 대하여 재배치를 진행하는 단계; 및
    재배치한 상기 기설정된 데이터 섹션을 상기 저장 공간에 카피하여 애플리케이션 로딩을 진행하는 단계를 포함하되,
    여기서, 상기 실행 가능한 파일은 ELF 파일이고, 상기 기설정된 데이터 섹션은 기계 명령어 데이터 섹션과 판독 전용 데이터 섹션을 포함하며,
    상기 저장 공간의 시작 주소를 기반으로 상기 기설정된 데이터 섹션에 대하여 재배치를 진행하는 단계는,
    상기 ELF 파일의 기계 명령어 주소 오프셋 데이터 섹션에서 기계 명령어 데이터 섹션 중 기계 명령어의 피연산수에 대응되는 주소 오프셋을 검색하는 단계;
    상기 시작 주소와 상기 주소 오프셋에 따라, 상기 피연산수에 대응되는 로딩 주소를 계산하여 기계 명령어 데이터 섹션에 대하여 재배치를 진행하는 단계;
    상기 ELF 파일의 판독 전용 데이터 주소 오프셋 데이터 섹션에서 판독 전용 데이터 섹션 중 판독 전용 데이터에 대응되는 주소 오프셋을 검색하는 단계; 및
    상기 시작 주소와 상기 주소 오프셋에 따라, 상기 판독 전용 데이터에 대응되는 로딩 주소를 계산하여 판독 전용 데이터 섹션에 대하여 재배치를 진행하는 단계를 포함하는 것을 특징으로 하는 비휘발성 컴퓨터 저장 매체.
KR1020177027992A 2015-12-25 2016-06-17 애플리케이션 로딩 방법 및 장치 KR101955145B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510994261.4 2015-12-25
CN201510994261.4A CN105426223B (zh) 2015-12-25 2015-12-25 应用加载方法和装置
PCT/CN2016/086217 WO2017107415A1 (zh) 2015-12-25 2016-06-17 应用加载方法和装置

Publications (2)

Publication Number Publication Date
KR20170123337A KR20170123337A (ko) 2017-11-07
KR101955145B1 true KR101955145B1 (ko) 2019-03-06

Family

ID=55504451

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177027992A KR101955145B1 (ko) 2015-12-25 2016-06-17 애플리케이션 로딩 방법 및 장치

Country Status (6)

Country Link
US (1) US11086638B2 (ko)
EP (1) EP3267308B1 (ko)
JP (1) JP6506412B2 (ko)
KR (1) KR101955145B1 (ko)
CN (1) CN105426223B (ko)
WO (1) WO2017107415A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105426223B (zh) 2015-12-25 2019-01-04 百度在线网络技术(北京)有限公司 应用加载方法和装置
CN106598674A (zh) * 2016-12-16 2017-04-26 中南大学 一种基于可重定位elf文件的软件快速加载方法
CN107450960A (zh) * 2017-09-18 2017-12-08 珠海亿智电子科技有限公司 一种对可执行elf文件重新链接和加载的方法
CN108241516B (zh) * 2018-02-09 2021-06-18 深圳科立讯通信有限公司 嵌入式系统程序加载方法、装置、计算机设备和存储介质
CN108874468B (zh) * 2018-06-20 2021-03-26 深圳市腾讯网络信息技术有限公司 应用程序的加载方法、装置、计算机设备及存储介质
CN109901891B (zh) * 2019-03-19 2022-06-14 北京智游网安科技有限公司 一种elf程序里添加数据的方法、存储介质及智能终端
CN110765027B (zh) * 2019-12-27 2020-04-10 中国人民解放军国防科技大学 一种pe文件地址定位系统
CN113032737B (zh) * 2021-03-15 2021-11-30 清华大学 软件的保护方法、装置、电子设备及存储介质
CN113821458B (zh) * 2021-09-18 2023-09-05 日立楼宇技术(广州)有限公司 一种数据操作方法、装置、计算机设备和存储介质
CN113849245B (zh) * 2021-09-23 2023-09-12 武汉深之度科技有限公司 一种应用程序运行方法、计算设备及存储介质
CN117435257B (zh) * 2023-12-18 2024-02-27 美智纵横科技有限责任公司 系统加载方法及装置、存储介质、计算机程序产品和芯片

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2643070B2 (ja) * 1992-04-20 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション データのバックアップ・コピー中の同時アクセスの方法及びシステム
KR100570138B1 (ko) 2003-09-25 2006-04-12 인터내셔널 비지네스 머신즈 코포레이션 복수의 프로세서들에 소프트웨어를 로딩하는 시스템 및 방법
JP4796398B2 (ja) * 2005-02-09 2011-10-19 インターナショナル・ビジネス・マシーンズ・コーポレーション メタデータの複製および復元のための方法、システム、および製品

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581768A (en) * 1995-02-27 1996-12-03 Intel Corporation Method and apparatus for executing applications in place from write once/seldom memories
JPH103385A (ja) * 1996-06-18 1998-01-06 Dainippon Printing Co Ltd Icカード及びアプリケーション・プログラム導入方法
US5923878A (en) * 1996-11-13 1999-07-13 Sun Microsystems, Inc. System, method and apparatus of directly executing an architecture-independent binary program
US6505297B1 (en) * 1998-09-09 2003-01-07 Hitachi, Ltd. IC card terminal device and installation of application program into IC card terminal device
JP3976106B2 (ja) * 1998-09-09 2007-09-12 株式会社日立製作所 アプリケーション登録端末システムおよび登録方法
TWI240864B (en) * 2001-06-13 2005-10-01 Hitachi Ltd Memory device
KR100518584B1 (ko) * 2003-07-12 2005-10-04 삼성전자주식회사 공유 라이브러리 시스템 및 상기 시스템 구축 방법
JP2005284963A (ja) * 2004-03-30 2005-10-13 Toshiba Corp プログラムローディング装置およびプログラムローディング方法
JP2006048431A (ja) * 2004-08-05 2006-02-16 Matsushita Electric Ind Co Ltd 動的リンクライブラリ処理装置
US20060277541A1 (en) * 2005-06-07 2006-12-07 Sony Computer Entertainment America Inc. Relocatable component file format
WO2008014635A1 (en) * 2006-07-18 2008-02-07 Intel Corporation A method to use global variables for pre-efi initialization modules in efi-based firmware
CN100555222C (zh) 2007-02-15 2009-10-28 凌阳科技股份有限公司 应用程序可重定位加载的方法及地址重定位装置
CN101470619A (zh) * 2007-12-29 2009-07-01 安凯(广州)软件技术有限公司 一种基于微核操作系统的应用程序动态加载方法
US8082385B2 (en) * 2008-05-02 2011-12-20 Sony Corporation Systematic memory shift for pre-segmented memory
CN101277265B (zh) * 2008-05-07 2011-05-04 浙江大学 一种无线传感网络中加速加载elf文件的方法
CN101661397B (zh) * 2008-08-29 2012-09-12 宇龙计算机通信科技(深圳)有限公司 实现程序动态加载的方法和生成映射文件的方法及设备
CN101697131B (zh) * 2009-11-04 2013-07-03 中兴通讯股份有限公司 一种可重定位文件动态加载的方法及装置
CN101706725B (zh) * 2009-11-20 2014-03-19 中兴通讯股份有限公司 一种可重定位程序的加载及调试方法及系统
CN103377131A (zh) * 2012-04-13 2013-10-30 索尼公司 数据处理装置和方法
US20150332043A1 (en) * 2014-05-15 2015-11-19 Auckland Uniservices Limited Application analysis system for electronic devices
US9974492B1 (en) * 2015-06-05 2018-05-22 Life365, Inc. Health monitoring and communications device
TWI588742B (zh) * 2015-07-27 2017-06-21 晨星半導體股份有限公司 應用程式的程式碼載入方法及應用其方法的電腦系統
CN105426223B (zh) * 2015-12-25 2019-01-04 百度在线网络技术(北京)有限公司 应用加载方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2643070B2 (ja) * 1992-04-20 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション データのバックアップ・コピー中の同時アクセスの方法及びシステム
KR100570138B1 (ko) 2003-09-25 2006-04-12 인터내셔널 비지네스 머신즈 코포레이션 복수의 프로세서들에 소프트웨어를 로딩하는 시스템 및 방법
JP4796398B2 (ja) * 2005-02-09 2011-10-19 インターナショナル・ビジネス・マシーンズ・コーポレーション メタデータの複製および復元のための方法、システム、および製品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Wei Dong 외 4명. 'Enabling efficient reprogramming through reduction of executable modules in networked embedded systems'. Ad Hoc Networks, 2013, pp.473-489.

Also Published As

Publication number Publication date
US20180329725A1 (en) 2018-11-15
CN105426223B (zh) 2019-01-04
EP3267308A1 (en) 2018-01-10
JP6506412B2 (ja) 2019-04-24
EP3267308B1 (en) 2022-07-27
CN105426223A (zh) 2016-03-23
EP3267308A4 (en) 2018-07-25
WO2017107415A1 (zh) 2017-06-29
KR20170123337A (ko) 2017-11-07
JP2018511132A (ja) 2018-04-19
US11086638B2 (en) 2021-08-10

Similar Documents

Publication Publication Date Title
KR101955145B1 (ko) 애플리케이션 로딩 방법 및 장치
KR101994021B1 (ko) 파일 조작 방법 및 장치
US20140324873A1 (en) Method, device and recording medium for managing application icon
US9563446B2 (en) Binary file generation
CN105867947A (zh) 预置应用程序升级后的数据处理方法及装置
CN105573734B (zh) 一种用于提供sdk文件的方法与设备
WO2018040270A1 (zh) 在Windows系统中加载Linux系统ELF文件的方法及装置
CN109710286B (zh) 系统升级方法、装置、设备和存储介质
US11675479B2 (en) List display method and apparatus, computer device and computer-readable medium
KR101036675B1 (ko) Efi 기반 펌웨어에서의 프리 efi 초기화 모듈의 전역변수 사용법
CN108694049B (zh) 一种更新软件的方法和设备
CN114840214A (zh) 程序编译和启动方法、设备及存储介质
KR101512296B1 (ko) 어플리케이션 연관 파일 처리 단말 및 단말의 어플리케이션 연관 파일 처리 방법
CN114942863A (zh) 一种级联快照处理方法、装置、设备及存储介质
CN111596997B (zh) Ui信息的请求方法、装置、终端和存储介质
CN106897588B (zh) 一种标签函数的处理方法及装置
CN105930530A (zh) 一种移动终端页面缓存及系统
CN108121667B (zh) 数据擦除方法、装置及计算机存储介质
JP2016062311A (ja) 更新装置及び情報処理方法
CN104360793A (zh) 一种终端桌面编辑的方法及系统
CN107239395B (zh) 一种源代码中无效函数的查找方法和设备
CN110955813A (zh) 一种数据爬取方法及装置
US20040254986A1 (en) Information processing apparatus and program
CN110019034A (zh) 表单文件加载方法和装置
KR20170055392A (ko) 그래픽스 명령을 처리하는 방법 및 장치

Legal Events

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