KR20120055352A - 스냅샷 이미지를 이용한 부팅 장치 및 방법 - Google Patents

스냅샷 이미지를 이용한 부팅 장치 및 방법 Download PDF

Info

Publication number
KR20120055352A
KR20120055352A KR1020100117049A KR20100117049A KR20120055352A KR 20120055352 A KR20120055352 A KR 20120055352A KR 1020100117049 A KR1020100117049 A KR 1020100117049A KR 20100117049 A KR20100117049 A KR 20100117049A KR 20120055352 A KR20120055352 A KR 20120055352A
Authority
KR
South Korea
Prior art keywords
block
time
snapshot
image
snapshot image
Prior art date
Application number
KR1020100117049A
Other languages
English (en)
Other versions
KR101467515B1 (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 삼성전자주식회사
Priority to KR1020100117049A priority Critical patent/KR101467515B1/ko
Priority to CN201110156764.6A priority patent/CN102479098B/zh
Priority to US13/187,732 priority patent/US8732446B2/en
Priority to EP11190212.8A priority patent/EP2487583B1/en
Publication of KR20120055352A publication Critical patent/KR20120055352A/ko
Application granted granted Critical
Publication of KR101467515B1 publication Critical patent/KR101467515B1/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/4401Bootstrapping
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

스냅샷 이미지를 이용한 부팅 장치 및 방법이 제공된다. 본 발명의 일 양상에 따르면, 스냅샷 이미지는 다수의 블록으로 분할된다. 각각의 블록은 압축된 후 비휘발성 메모리에 저장되거나 압축이 되지 아니한 상태로 비휘발성 메모리에 저장될 수 있다. 부팅시에 스냅샷 이미지는 블록 단위로 점진적으로 로딩된다. 그리고 블록의 로딩과 압축해제는 병렬적으로 동시에 처리된다. 따라서 스냅샷 이미지의 크기를 줄이고 부팅 시간을 단축시킬 수 있다.

Description

스냅샷 이미지를 이용한 부팅 장치 및 방법{Apparatus and method for booting based on a snapshot image}
시스템의 부팅 시간을 단축시키기 위한 기술과 관련된다.
임베디드 기기의 성능이 높아짐에 따라, 최근에는 다양간 기능을 지원하는 이른바 Rich OS(Windows Phone OS, IPhone OS, Android/Linux)가 임베디드 기기에 사용되고 있다.
Rich OS가 지원하는 기능은 점점 늘어나고 있는 추세이고, 이에 따라 OS의 커널 사이즈 및 소프트웨어 플랫폼의 크기 역시 커지고 있는 실정이다. 큰 커널 사이즈 및 소프트웨어 플랫폼은 느린 시스템 부팅을 야기할 수 있다. 커널 사이즈 및 소프트웨어 플랫폼의 크기가 커질수록 초기화 루틴과 파일 로딩이 많아지기 때문이다.
느린 시스템 부팅을 해결하기 위한 대표적인 방법으로는 Hibernation 및 Suspend-To-Disk 등이 있다. Hibernation 및 Suspend-To-Disk 방법에 의하면, 현재 RAM의 상태 및 CPU/Device의 상태 정보를 디스크(Disk)나 플래시 메모리(Flash memory) 등의 저장장치(Non-volatile storage)에 저장하고 종료한다. 그리고 다음 부팅 때에는 저장된 상태 정보를 메모리의 원래의 위치로 복구함으로써 빠른 부팅이 이루어지도록 한다. 이때 저장되는 상태 정보는 스냅샷 이미지(snopshot image)로 불리기도 한다.
스냅샷 이미지의 크기 및 스냅샷 이미지를 이용한 부팅 시간을 줄일 수 있는 장치 및 방법이 제공된다.
본 발명의 일 양상에 따른 장치는 스냅샷 부트(snapshot boot)를 위한 스냅샷 이미지(snapshot image)를 생성하는 이미지 생성부, 생성된 스냅샷 이미지를 다수의 블록(block)들로 분할하고, 각 블록의 압축해제시간, 각 블록의 로딩시간, 각 블록의 데드라인시간, 및 각 블록의 압축률 중 적어도 하나에 기초하여 각 블록의 압축 여부를 결정하고, 각 블록을 선택적으로 압축하는 이미지 압축부, 및 스냅샷 이미지에 기초한 스냅샷 부트가 실행될 때, 제 1 블록을 로딩하고, 로딩된 제 1 블록의 압축을 해제함과 동시에 제 2 블록을 로딩하는 부팅부를 포함할 수 있다.
본 발명의 다른 양상에 따른 장치는 다수의 프로세싱 코어, 휘발성의 제 1 메모리, 및 비휘발성의 제 2 메모리; 를 포함하며, 다수의 프로세싱 코어 중 어느 하나의 프로세싱 코어가, 제 1 메모리 및/또는 각각의 프로세싱 코어의 상태 정보를 포함하는 스냅샷 이미지를 생성하고, 생성된 스냅샷 이미지를 다수의 블록으로 분할하고, 분할된 각각의 블록을 각 블록의 압축해제시간, 각 블록의 로딩시간, 각 블록의 데드라인시간, 및 각 블록의 압축률 중 적어도 하나에 따라 선택적으로 압축하여 상기 제 2 메모리에 저장하고, 제 1 프로세싱 코어가, 제 2 메모리에 저장된 각각의 블록을 상기 제 1 메모리에 로딩하고, 제 2 프로세싱 코어가, 제 1 프로세싱 코어의 로딩 동작과 병렬적으로, 제 1 메모리로 로딩된 각각의 블록의 압축해제를 실행하는 것이 가능하다.
본 발명의 일 양상에 따른 방법은 스냅샷 부트(snapshot boot)를 위한 스냅샷 이미지(snapshot image)를 생성하는 단계, 생성된 스냅샷 이미지를 다수의 블록(block)들로 분할하는 단계, 각 블록의 압축해제시간, 각 블록의 로딩시간, 각 블록의 데드라인시간, 및 각 블록의 압축률 중 적어도 하나에 기초하여 각 블록의 압축 여부를 결정하는 단계, 상기 결정 결과에 따라, 각 블록을 선택적으로 압축하는 단계, 및 스냅샷 이미지에 기초한 스냅샷 부트가 실행될 때, 제 1 블록을 로딩하고, 로딩된 제 1 블록의 압축을 해제함과 동시에 제 2 블록을 로딩하는 단계를 포함할 수 있다.
개시된 내용에 따르면, 스냅샷 부트에 있어서 블록 단위로 선택적 압축을 한 후 스냅샷 이미지를 저장하기 때문에 스냅샷 이미지의 크기를 줄일 수 있다.
또한 스냅샷 이미지를 점진적으로 로딩할 때 그 로딩과 압축해제가 동시에 수행될 수 있기 때문에 부팅 시간을 더욱 단축시킬 수가 있다.
도 1은 본 발명의 일 실시예에 따른 스냅샷 이미지(snapshot image)를 이용한 부팅 장치를 도시한다.
도 2는 본 발명의 일 실시예에 따른 이미지 압축 장치를 도시한다
도 3a 내지 도 3d는 본 발명의 일 실시예에 따른 부팅 장치의 동작을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 컴퓨팅 장치를 도시한다.
도 5는 본 발명의 일 실시예에 따른 스냅샷 이미지를 이용한 부팅 방법을 도시한다.
도 6은 본 발명의 다른 실시예에 따른 스냅샷 이미지를 이용한 부팅 방법을 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 스냅샷 이미지(snapshot image)를 이용한 부팅 장치를 도시한다.
도 1을 참조하면, 부팅 장치(100)는 운영 체제(OS, operating system)를 필요로 하는 각종 단말에 적용될 수 있다. 예를 들어, 단말은 전원을 켰을 때 운영 체제의 커널 및 초기화 루틴의 로딩을 필요로 하는 컴퓨터, 스마트 폰, 디지털 TV, mp3 플레이어 등이 될 수 있다.
부팅 장치(100)는 스냅샷 이미지를 이용하여 부팅을 실행할 수 있다. 스냅샷 이미지는 초기 부팅이 완료되었을 때의 시스템의 상태 정보가 될 수 있다. 시스템의 상태 정보는 단말에 포함된 프로세서, 메모리 및 입/출력 장치 등의 상태 정보가 될 수 있다. 예를 들어, 단말의 부팅이 완료된 직후에, 부팅 장치(100)는 스냅샷 이미지를 생성한다. 생성된 스냅샷 이미지는 메모리(110)의 특정 영역에 존재할 수 있다. 부팅 장치(100)는 생성된 스냅샷 이미지를 디스크(120)에 저장한다. 디스크(120)는 메모리(110)와 달리 전원 공급이 중단되어도 정보를 저장할 수 있다. 단말이 재기동될 때, 부팅 장치(100)는 디스크(120)에 저장된 스냅샷 이미지를 메모리(110)에 로딩함으로써 빠른 부팅이 수행되도록 하는 것이 가능하다.
부팅 장치(100)는 점진적으로(incrementally) 스냅샷 이미지를 로딩할 수 있다. 스냅샷 이미지는 필수 데이터와 비필수 데이터로 구분될 수 있다. 필수 데이터는 부팅시에 반드시 로딩되어야 하는 데이터를 말하고, 비필수 데이터는 부팅시에 반드시 로딩되지 않아도 되는 데이터를 말한다. 예를 들어, 비필수 데이터는 로딩되지 않아도 사용자가 단말을 사용하는데는 큰 지장이 없고 사용자는 단말이 부팅된 것으로 인식할 수 있다. 스냅샷 이미지를 통해 부팅이 실행될 때, 부팅 장치(100)는 스냅샷 이미지 중 필수 데이터들을 먼저 로딩하고 비필수 데이터들은 이후에 백그라운드 형식으로 로딩하는 것이 가능하다.
부팅 장치(100)는 이미지 생성부(101), 이미지 압축부(102), 및 부팅부(103)를 포함할 수 있다.
이미지 생성부(101)는 스냅샷 이미지를 생성한다. 스냅샷 이미지란 전술한 바와 같이 빠른 부팅을 위해 생성된 부팅 직후의 시스템 상태 정보가 될 수 있다. 본 실시예에 따라, 스냅샷 이미지를 통한 부팅을 스냅샷 부트 또는 스냅샷 부팅이라고 지칭하기로 한다.
이미지 압축부(102)는 생성된 스냅샷 이미지를 다수의 블록(block)들로 분할한다. 생성된 스냅샷 이미지는 메모리(110)에 존재할 수 있다. 스냅샷 이미지는 메모리(110)의 저장 단위인 페이지(page)로 구분될 수 있다. 블록은 몇 개의 페이지로 이루어질 수 있다. 예를 들어, 도 3a를 참조하면, 생성된 스냅샷 이미지(300)가 block #0 내지 block #n과 같은 다수의 블록들로 분할되는 것이 가능하다.
또한 이미지 압축부(102)는 각각의 블록에 대해 압축 여부를 결정한다. 압축(compression)이란 데이터의 저장 공간 또는 데이터의 전송 시간을 줄이기 위해 데이터의 크기를 줄이는 것을 말한다. 압축 여부의 결정 기준은 각 블록의 압축해제시간, 각 블록의 로딩시간, 각 블록의 데드라인시간 및 각 블록의 압축률 등이 될 수 있다. 블록의 압축해제시간은 어떤 블록을 압축했다고 가정했을 때 그 압축을 해제하는데 소요되는 시간을 의미한다. 블록의 로딩시간은 스냅샷 부팅시에 그 블록이 디스크(120)에서 메모리(110)로 로딩되는데 소요되는 시간을 의미한다. 전술하였듯이, 부팅 장치(100)는 스냅샷 이미지를 블록 단위로 점진적 로딩을 수행할 수 있다. 블록의 데드라인시간은 블록의 로딩을 완료해야만 하는 시간을 의미한다. 다시 말해, 각 블록은 단말의 정상 동작을 위해 데드라인시간전까지 로딩이 완료되어야 한다. 블록의 압축률은 데이터의 크기를 줄일 수 있는 정도를 의미한다.
또한 이미지 압축부(102)는 각각의 블록을 선택적으로 압축한다. 예를 들어, 이미지 압축부(102)는 각 블록에 대해 압축 여부를 결정한 후, 압축하기로 결정된 블록은 압축을 하고, 압축을 하지 않기로 결정된 블록은 압축을 하지 아니할 수 있다.
또한 이미지 압축부(102)는 선택적으로 압축된 블록들을 포함하는 스냅샷 이미지를 단말의 전원이 오프되기 전에 디스크(120)에 저장한다.
부팅부(103)는 디스크(120)에 저장된 스냅샷 이미지를 이용하여 부팅을 실행한다. 예를 들어, 부팅부(103)는 디스크(120)에 저장된 스냅샷 이미지를 메모리(110)로 로딩할 수 있다. 이때, 부팅부(103)는 블록 단위로 스냅샷 이미지를 로딩할 수 있다.
또한, 부팅부(103)는 어느 하나의 블록을 로딩함과 동시에 다른 하나의 블록의 압축을 해제할 수 있다. 예를 들어, 도 3d를 참조하면, 블록 단위로 분할된 스냅샷 이미지(300)가 디스크(120)에 저장되어 있는 경우, 부팅부(103)는 첫 번째 사이클에서 block #0을 메모리(110)로 로딩할 수 있다. 그리고 부팅부(103)는 두 번째 사이클에서 block #1을 로딩하고 로딩과 동시에 먼저 로딩되었던 block #0의 압축을 (만약, block #0가 압축된 블록이라면) 해제할 수 있다. 단말이 여러 개의 프로세싱 코어를 갖는 경우, 부팅부(103)는 여러 개의 프로세싱 코어를 모두 활성화시켜서 부팅이 이루어지도록 하는 것이 가능하다.
도 2는 본 발명의 일 실시예에 따른 이미지 압축 장치를 도시한다. 이것은 도 1의 이미지 압축부(102)에 관한 일 예가 될 수 있다.
도 2를 참조하면, 이미지 압축 장치(200)는 분할부(201), 결정부(202), 및 선택적 압축부(203)를 포함할 수 있다.
분할부(201)는 생성된 스냅샷 이미지를 다수의 블록으로 분할한다. 블록은 여러 개의 페이지로 이루어질 수 있다. 스냅샷 이미지의 압축 및 압축해제는 블록 단위로 이루어질 수 있다. 스냅샷 이미지의 저장 및 로딩 역시 블록 단위로 이루어질 수 있다. 분할부(201)는, 예컨대, 도 3a과 같이, 생성된 스냅샷 이미지(300)를 block #0 내지 block #n으로 분할하는 것이 가능하다.
결정부(202)는 각 블록의 압축 여부를 결정한다.
결정부(202)가 압축 여부를 결정하는 방법의 일 예는 도 3b와 같다. 도 3b를 참조하면, 결정부(202)는 블록이 필수 블록인지 여부를 판단한다. 블록이 필수 블록인 경우, 결정부(202)는 블록의 압축해제시간과 마지막으로 로딩될 블록의 로딩시간을 비교해서 압축 여부를 결정한다.
예컨대, 도 3b에서, 결정부(202)는 block #0의 압축 여부를 결정한다. 결정부(202)는 block #0가 필수 블록인지 여부를 판단한다. 필수 블록이란 점진적 스냅샷 부트에서 초기에 반드시 로딩이 완료되어야만 하는 데이터 페이지를 포함하는 블록이 될 수 있다. block #0가 필수 블록인 경우, 결정부(202)는 block #0의 압축해제시간과 마지막으로 로딩될 블록인 block #n의 로딩시간을 비교한다. 만약, block #0의 압축해제시간이 마지막으로 로딩될 블록인 block #n의 로딩시간보다 짧은 경우, 결정부(202)는 block #0의 압축을 결정한다. 또한 추가적으로, block #0의 압축해제시간이 마지막으로 로딩될 블록인 block #n의 로딩시간보다 짧은 경우, 결정부(202)는 block #0의 압축률이 정해진 임계값 이상이 될 수 있는지 판단할 수 있다. 판단 결과 정해진 임계값 이상으로 압축이 가능하다면 block #0의 압축을 결정할 수 있다.
결정부(202)가 압축 여부를 결정하는 방법의 다른 예는 도 3c와 같다. 도 3c를 참조하면, 결정부(202)는 블록이 필수 블록인지 여부를 판단한다. 블록이 비필수 블록인 경우, 결정부(202)는 블록의 압축해제시간 및 로딩시간의 합과 그 블록의 데드라인시간을 비교해서 압축 여부를 결정한다.
예컨대, 도 3c에서, 결정부(202)는 block #1의 압축 여부를 결정한다. 결정부(202)는 block #1가 비필수 블록인지 여부를 판단한다. 비필수 블록이란 점진적 스냅샷 부트에서 초기에 반드시 로딩이 완료되지 않아도 되는 데이터 페이지를 포함하는 블록이 될 수 있다. 이러한 블록은 초기 부팅 이후에 백그라운드 형식으로 로딩될 수 있다. block #1가 비필수 블록인 경우, 결정부(202)는 block #1의 압축해제시간과 block #1의 로딩시간을 더한다. 그리고 더해진 시간과 block #1의 데드라인시간을 비교한다. 만약, 더해진 시간이 데드라인시간보다 짧은 경우, 결정부(202)는 block #1의 압축을 결정한다. 또한 추가적으로, 더해진 시간이 데드라인시간보다 짧은 경우, 결정부(202)는 block #1의 압축률이 정해진 임계값 이상이 될 수 있는지 판단할 수 있다. 판단 결과 정해진 임계값 이상으로 압축이 가능하다면 block #1의 압축을 결정할 수 있다.
다시 도 2에서, 선택적 압축부(203)는 결정부(202)의 결정에 따라 각각의 블록을 압축하거나 압축을 하지 아니한다. 본 실시예에 따라 선택적 압축이란 이와 같이 어떤 기준에 따라 압축을 하거나 하지 않는 것을 의미할 수 있다.
또한 선택적 압축부(203)는 각각의 블록을 비휘발성 메모리인 디스크(120, 도 1 참조)에 저장한다.
도 3a 내지 도 3d는 본 발명의 일 실시예에 따른 부팅 장치의 동작을 설명하기 위한 도면이다.
도 3a를 참조하면, 생성된 스냅샷 이미지(300)는 다수의 블록으로 분할될 수 있다. 예컨대, 생성된 스냅샷 이미지(300)는 block #0 내지 block #n을 포함할 수 있다.
도 3b를 참조하면, 점진적 스냅샷 부트에서 초기에 반드시 로딩이 완료되어야만 하는 필수 블록은 블록의 압축해제시간, 마지막 블록의 로딩시간에 따라 압축 여부가 결정될 수 있다. 예컨대, block #0가 필수 블록인 경우, block #0의 압축해제시간이 마지막으로 로딩될 블록인 block #n의 로딩시간보다 짧은지 여부가 판단될 수 있다. 만약 block #0의 압축해제시간이 마지막으로 로딩될 블록인 block #n의 로딩시간보다 짧은 경우, block #0는 압축될 블록으로 결정될 수 있다.
도 3c를 참조하면, 점진적 스냅샷 부트에서 백그라운드 형식으로 로딩이 되어도 무방한 비필수 블록은 블록의 압축해제시간 및 로딩시간의 합과 블록의 데드라인시간에 따라 압축 여부가 결정될 수 있다. 예컨대, block #1가 비필수 블록인 경우, block #1의 압축해제시간과 block #1의 로딩시간의 합이 block #1의 데드라인시간보다 짧은지 여부가 판단될 수 있다. 만약, block #1의 압축해제시간과 block #1의 로딩시간의 합이 block #1의 데드라인시간보다 짧은 경우, block #1은 압축될 블록으로 결정될 수 있다.
도 3d를 참조하면, 각 블록의 로딩과 압축해제는 병렬적으로 이루어질 수 있다. 시간 t에서 block #0이 로딩된다. 시간 t+1에서 block #1이 로딩된다. 그리고 block #1의 로딩과 동시에 block #0의 압축이 해제될 수 있다. 만약 block #0가 압축된 블록이 아니라면 압축 해제 동작은 생략될 수도 있음은 물론이다. 마찬가지로 시간 t+2에서 block #2가 로딩됨과 동시에 block #1의 압축이 해제될 수 있다. 이러한 병렬 처리는 다수의 프로세싱 코어를 갖는 단말에서 이루어질 수 있다. 예컨대, 독립적으로 구동되는 두 개의 프로세싱 코어 중 하나의 프로세싱 코어는 블록의 로딩을 처리하고 다른 프로세싱 코어는 블록의 압축 해제를 처리하는 것이 가능하다. 본 실시예에 따른 부팅 장치(100, 도 1 참조)는 스냅샷 부트가 실행될 때 시스템에 포함된 프로세싱 코어를 적어도 2개 이상 활성화시키는 것이 가능하다.
도 4는 본 발명의 일 실시예에 따른 컴퓨팅 장치를 도시한다. 이것은 본 실시예에 따른 부팅 장치가 적용된 단말의 일 예가 될 수 있다.
도 4를 참조하면, 컴퓨팅 장치(400)는 코어부(401), 메인 메모리(402), 및 디스크(403)를 포함할 수 있다.
코어부(401)는 다수의 프로세싱 코어를 포함한다. 각각의 프로세싱 코어는 어떠한 작업을 병렬적으로 처리할 수 있다.
컴퓨팅 장치(400)에 전원이 인가되면 컴퓨팅 장치(400)가 부팅된다. 처음의 부팅은 스냅샷 이미지에 기초하지 아니한 일반적 부팅이 될 수 있다.
처음 부팅이 완료되면 core #0은 스냅샷 이미지를 생성한다. 예를 들어, core #0가 부팅이 완료된 직후에 코어부(401) 및 메인 메모리(402)의 상태 정보를 생성하는 것이 가능하다. 생성된 스냅샷 이미지는 휘발성의 메인 메모리(402)의 특정 영역에 임시로 저장된다.
또한 core #0은 생성된 스냅샷 이미지를 다수의 블록으로 나누고 각 블록의 압축 여부를 결정한다. 그리고 결정 결과에 따라 각 블록을 선택적으로 압축한 후 비휘발성의 디스크(403)에 저장한다.
컴퓨팅 장치(400)의 전원 공급이 중단된 후, 다시 전원이 인가되면 컴퓨팅 장치(400)는 디스크(403)에 저장된 스냅샷 이미지에 따라 부팅된다.
스냅샷 부팅이 실행되면, 본 실시예에 따른 부트 로더에 의해 적어도 core #0과 core #1이 활성화된다. 부트 로더의 예는 도 1의 부팅부(103)가 될 수 있다.
활성화된 core #0과 core #1은 스냅샷 이미지의 각 블록의 로딩과 압축 해제를 병렬적으로 처리한다. 예컨대, 첫 번째 사이클에서 core #0가 디스크(403)에서 첫 번째 블록을 메인 메모리(402)로 로딩한다. 그리고 두 번째 사이클에서 core #0은 디스크(403)에서 두 번째 블록을 메인 메모리(402)로 로딩하고 core #1은 메인 메모리(402)에 로딩된 첫 번째 블록이 압축된 블록인지 살펴보고 압축된 블록이면 그 압축을 해제하는 것이 가능하다.
도 5는 본 발명의 일 실시예에 따른 스냅샷 이미지를 이용한 부팅 방법을 도시한다. 이것은 본 실시예에 따라 스냅샷 이미지를 선택적으로 압축한 후 저장하는 방법에 관한 일 예가 될 수 있다.
도 1 내지 도 5를 참조하면, 먼저, 부팅 장치(100)가 스냅샷 이미지를 생성한다(501). 예컨대, 도 1의 이미지 생성부(101)가 도 4의 컴퓨팅 장치(400)의 부팅 직후 상태 정보를 포함하는 스냅샷 이미지를 생성하는 것이 가능하다.
그리고 부팅 장치(100)가 생성된 스냅샷 이미지를 다수의 블록으로 분할한다(502). 예컨대, 도 2의 분할부(201)가, 도 3a와 같이, 스냅샷 이미지를 다수의 블록으로 분할하는 것이 가능하다.
그리고 부팅 장치(100)가 각 블록을 압축할 것인지 여부를 결정한다(503). 예컨대, 도 2의 결정부(202)가, 도 3b 및 도 3c와 같이, k 번째 블록을 압축할 것인지 말것인지를 결정하는 것이 가능하다.
만약, k 번째 블록을 압축할 것으로 결정한 경우, 부팅 장치(100)가 k 번째 블록을 압축하고(504), 그렇지 아니한 경우 k를 증가시켜 다음 블록에 대해 위 과정을 반복한다.
그리고 부팅 장치(100)가 k 번째 블록이 마지막 블록인지 여부를 판단한다(505). 만약 마지막 블록이면, 부팅 장치(100)는 블록 단위로 선택적 압축된 스냅샷 이미지를 도 4의 디스크(403)에 저장하고(506), 그렇지 아니한 경우 k를 증가시켜 다음 블록에 대해 위 과정을 반복한다.
도 6은 본 발명의 다른 실시예에 따른 스냅샷 이미지를 이용한 부팅 방법을 도시한다. 이것은 본 실시예에 따라 스냅샷 이미지를 점진적으로 로딩하되 로딩과 압축해제를 동시에 수행하는 방법에 관한 일 예가 될 수 있다.
도 1 내지 도 4 및 도 6을 참조하면, 먼저 부팅 장치(100)가 스냅샷 부트에 따라 k 번째 블록을 로딩한다(601). 예컨대, 도 1의 부팅부(103)가 도 4의 코어부(401)의 모든 코어를 활성화시켜서 core #0에 의해 디스크(403)에 있는 k 번째 블록이 메모리(402)로 로딩되는 것이 가능하다.
그리고 부팅 장치(100)가 로딩된 블록이 압축된 블록인지 여부를 판단한다(602). 압축된 블록이 아니면 k를 증가시켜서 다음 블록을 로딩하고, 압축된 블록인 경우 k 번째 블록의 압축을 해제함과 동시에 k+1 번째 블록을 로딩한다(603). 예컨대, 도 1의 부팅부(103)가 도 4의 코어부(401)의 모든 코어를 활성화시켜서, 도 3d와 같이, core #0에 의해 k 번째 블록의 압축이 해제되고 core #1에 의해 k+1번째 블록이 로딩되는 것이 가능하다.
그리고 부팅 장치(100)가 로딩된 블록이 마지막 블록인지 여부를 판단하고(604), 마지막 블록이 아닌 경우 k를 증가시켜서 다음 블록에 대해 위 과정을 수행한다.
이상에서 살펴본 바와 같이, 개시된 장치 및 방법에 따르면, 스냅샷 부트에 있어서 블록 단위로 선택적 압축을 한 후 스냅샷 이미지를 저장하기 때문에 스냅샷 이미지의 크기를 줄일 수 있다. 또한 스냅샷 이미지를 점진적으로 로딩할 때 그 로딩과 압축해제가 동시에 수행될 수 있기 때문에 부팅 시간을 더욱 단축시킬 수가 있다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.

Claims (15)

  1. 스냅샷 부트(snapshot boot)를 위한 스냅샷 이미지(snapshot image)를 생성하는 이미지 생성부; 및
    생성된 스냅샷 이미지를 다수의 블록(block)들로 분할하고, 각 블록의 압축해제시간, 각 블록의 로딩시간, 각 블록의 데드라인시간, 및 각 블록의 압축률 중 적어도 하나에 기초하여 각 블록의 압축 여부를 결정하고, 각 블록을 선택적으로 압축하는 이미지 압축부; 및
    상기 스냅샷 이미지에 기초한 스냅샷 부트가 실행될 때, 제 1 블록을 로딩하고, 로딩된 제 1 블록의 압축을 해제함과 동시에 제 2 블록을 로딩하는 부팅부; 를 포함하는 스냅샷 이미지를 이용한 부팅 장치.
  2. 제 1 항에 있어서, 상기 이미지 압축부는
    상기 블록이 부팅 초기에 반드시 로딩되어야 하는 필수 블록인지 여부를 판단하는 스냅샷 이미지를 이용한 부팅 장치.
  3. 제 2 항에 있어서, 상기 이미지 압축부는
    상기 블록이 상기 필수 블록인 경우,
    상기 블록의 압축해제시간 및 마지막으로 로딩될 블록의 로딩시간을 비교해서 상기 압축 여부를 결정하는 스냅샷 이미지를 이용한 부팅 장치.
  4. 제 2 항에 있어서, 상기 이미지 압축부는
    상기 블록이 상기 필수 블록인 경우,
    상기 블록의 압축해제시간 및 마지막으로 로딩될 블록의 로딩시간을 비교하고, 상기 블록의 압축률 및 설정된 임계값을 비교해서 상기 압축 여부를 결정하는 스냅샷 이미지를 이용한 부팅 장치.
  5. 제 2 항에 있어서, 상기 이미지 압축부는
    상기 블록이 상기 필수 블록이 아닌 경우,
    상기 블록의 압축해제시간과 상기 블록의 로딩시간의 합 및 상기 블록의 데드라인시간을 비교해서 상기 압축 여부를 결정하는 스냅샷 이미지를 이용한 부팅 장치.
  6. 제 2 항에 있어서, 상기 이미지 압축부는
    상기 블록이 상기 필수 블록이 아닌 경우,
    상기 블록의 압축해제시간과 상기 블록의 로딩시간의 합 및 상기 블록의 데드라인시간을 비교하고, 상기 블록의 압축률 및 설정된 임계값을 비교해서 상기 압축 여부를 결정하는 스냅샷 이미지를 이용한 부팅 장치.
  7. 스냅샷 이미지(snapshot image)에 기초한 스냅샷 부트(snapshot boot)가 가능한 컴퓨팅 장치에 있어서,
    다수의 프로세싱 코어;
    휘발성의 제 1 메모리; 및
    비휘발성의 제 2 메모리; 를 포함하며,
    상기 다수의 프로세싱 코어 중 어느 하나의 프로세싱 코어가, 상기 제 1 메모리 및/또는 상기 각각의 프로세싱 코어의 상태 정보를 포함하는 스냅샷 이미지를 생성하고, 생성된 스냅샷 이미지를 다수의 블록으로 분할하고, 분할된 각각의 블록을 각 블록의 압축해제시간, 각 블록의 로딩시간, 각 블록의 데드라인시간, 및 각 블록의 압축률 중 적어도 하나에 따라 선택적으로 압축하여 상기 제 2 메모리에 저장하고,
    제 1 프로세싱 코어가, 상기 제 2 메모리에 저장된 각각의 블록을 상기 제 1 메모리에 로딩하고,
    제 2 프로세싱 코어가, 상기 제 1 프로세싱 코어의 로딩 동작과 병렬적으로, 상기 제 1 메모리로 로딩된 각각의 블록의 압축해제를 실행하는 컴퓨팅 장치.
  8. 제 7 항에 있어서, 상기 다수의 프로세싱 코어 중 어느 하나의 프로세싱 코어는
    상기 블록이 부팅 초기에 반드시 로딩되어야 하는 필수 블록인지 여부를 판단하는 컴퓨팅 장치.
  9. 제 8 항에 있어서, 상기 다수의 프로세싱 코어 중 어느 하나의 프로세싱 코어는
    상기 블록이 상기 필수 블록인 경우,
    상기 블록의 압축해제시간 및 마지막으로 로딩될 블록의 로딩시간을 비교해서 상기 압축 여부를 결정하는 컴퓨팅 장치.
  10. 제 8 항에 있어서, 상기 다수의 프로세싱 코어 중 어느 하나의 프로세싱 코어는
    상기 블록이 상기 필수 블록인 경우,
    상기 블록의 압축해제시간 및 마지막으로 로딩될 블록의 로딩시간을 비교하고, 상기 블록의 압축률 및 설정된 임계값을 비교해서 상기 압축 여부를 결정하는 컴퓨팅 장치.
  11. 제 8 항에 있어서, 상기 다수의 프로세싱 코어 중 어느 하나의 프로세싱 코어는
    상기 블록이 상기 필수 블록이 아닌 경우,
    상기 블록의 압축해제시간과 상기 블록의 로딩시간의 합 및 상기 블록의 데드라인시간을 비교해서 상기 압축 여부를 결정하는 컴퓨팅 장치.
  12. 제 8 항에 있어서, 상기 다수의 프로세싱 코어 중 어느 하나의 프로세싱 코어는
    상기 블록이 상기 필수 블록이 아닌 경우,
    상기 블록의 압축해제시간과 상기 블록의 로딩시간의 합 및 상기 블록의 데드라인시간을 비교하고, 상기 블록의 압축률 및 설정된 임계값을 비교해서 상기 압축 여부를 결정하는 컴퓨팅 장치.
  13. 스냅샷 부트(snapshot boot)를 위한 스냅샷 이미지(snapshot image)를 생성하는 단계;
    생성된 스냅샷 이미지를 다수의 블록(block)들로 분할하는 단계;
    각 블록의 압축해제시간, 각 블록의 로딩시간, 각 블록의 데드라인시간, 및 각 블록의 압축률 중 적어도 하나에 기초하여 각 블록의 압축 여부를 결정하는 단계;
    상기 결정 결과에 따라, 각 블록을 선택적으로 압축하는 단계; 및
    상기 스냅샷 이미지에 기초한 스냅샷 부트가 실행될 때, 제 1 블록을 로딩하고, 로딩된 제 1 블록의 압축을 해제함과 동시에 제 2 블록을 로딩하는 단계; 를 포함하는 스냅샷 이미지를 이용한 부팅 방법.
  14. 제 13 항에 있어서, 상기 압축 여부를 결정하는 단계는
    상기 블록이 부팅 초기에 반드시 로딩되어야 하는 필수 블록인지 여부를 판단하는 단계;
    상기 블록이 상기 필수 블록인 경우, 상기 블록의 압축해제시간이 마지막으로 로딩될 블록의 로딩시간 이하인지 여부를 판단하는 단계;
    상기 블록의 압축해제시간이 마지막으로 로딩될 블록의 로딩시간 이하인 경우, 상기 블록의 압축률이 설정된 임계값 이상인지 여부를 판단하는 단계; 및
    상기 블록의 압축률이 설정된 임계값 이상인 경우, 상기 블록을 압축하는 단계; 를 포함하는 스냅샷 이미지를 이용한 부팅 방법.
  15. 제 13 항에 있어서, 상기 압축 여부를 결정하는 단계는
    상기 블록이 부팅 초기에 반드시 로딩되어야 하는 필수 블록인지 여부를 판단하는 단계;
    상기 블록이 상기 필수 블록이 아닌 경우, 상기 블록의 압축해제시간과 상기 블록의 로딩시간의 합이 상기 블록의 데드라인시간 이하인지 여부를 판단하는 단계;
    상기 합이 상기 블록의 데드라인시간 이하인 경우, 상기 블록의 압축률이 설정된 임계값 이상인지 여부를 판단하는 단계; 및
    상기 블록의 압축률이 설정된 임계값 이상인 경우, 상기 블록을 압축하는 단계; 를 포함하는 스냅샷 이미지를 이용한 부팅 방법.
KR1020100117049A 2010-11-23 2010-11-23 스냅샷 이미지를 이용한 부팅 장치 및 방법 KR101467515B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020100117049A KR101467515B1 (ko) 2010-11-23 2010-11-23 스냅샷 이미지를 이용한 부팅 장치 및 방법
CN201110156764.6A CN102479098B (zh) 2010-11-23 2011-06-03 使用快照图像的引导设备和方法
US13/187,732 US8732446B2 (en) 2010-11-23 2011-07-21 Selectively compressing blocks of a bootable snapshot image during booting
EP11190212.8A EP2487583B1 (en) 2010-11-23 2011-11-23 Booting apparatus and method using snapshot image

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100117049A KR101467515B1 (ko) 2010-11-23 2010-11-23 스냅샷 이미지를 이용한 부팅 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120055352A true KR20120055352A (ko) 2012-05-31
KR101467515B1 KR101467515B1 (ko) 2014-12-01

Family

ID=45093423

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100117049A KR101467515B1 (ko) 2010-11-23 2010-11-23 스냅샷 이미지를 이용한 부팅 장치 및 방법

Country Status (4)

Country Link
US (1) US8732446B2 (ko)
EP (1) EP2487583B1 (ko)
KR (1) KR101467515B1 (ko)
CN (1) CN102479098B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101469182B1 (ko) * 2012-12-14 2014-12-10 주식회사 텔레칩스 이미지 부팅 장치 및 그 방법
US9594569B2 (en) 2013-01-11 2017-03-14 Samsung Electronics Co., Ltd. Apparatus and method for booting

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5959841B2 (ja) * 2011-12-12 2016-08-02 キヤノン株式会社 画像処理装置及びその制御方法、並びにプログラム
US9495173B2 (en) * 2011-12-19 2016-11-15 Sandisk Technologies Llc Systems and methods for managing data in a device for hibernation states
CN103197934A (zh) * 2012-01-09 2013-07-10 联咏科技股份有限公司 多媒体装置的启动方法及多媒体装置
US9904559B2 (en) * 2012-10-25 2018-02-27 Canon Kabushiki Kaisha Information processing apparatus and activation method therefor for processing data of a hibernation image
US9632803B2 (en) * 2013-12-05 2017-04-25 Red Hat, Inc. Managing configuration states in an application server
US9652152B2 (en) * 2014-10-29 2017-05-16 Qualcomm Incorporated Efficient decompression locality system for demand paging
US9600420B2 (en) * 2014-10-29 2017-03-21 Qualcomm Incorporated Reducing decompression time without impacting compression ratio
US10108820B2 (en) * 2015-01-20 2018-10-23 Mediatek Inc. Snapshot data and hibernation data processing methods and devices
US10313256B2 (en) * 2015-05-21 2019-06-04 Intel Corporation Apparatus and methods for adaptive data compression
US20160378452A1 (en) * 2015-06-29 2016-12-29 Mediatek Inc. Policy-Based Compression of Machine Code Generated by a Virtual Machine
US10289549B1 (en) * 2016-06-28 2019-05-14 EMC IP Holding Company LLC Checkpointing cache status information
JP6720776B2 (ja) * 2016-08-26 2020-07-08 コニカミノルタ株式会社 画像処理装置、起動制御方法および起動制御プログラム
CN107977233B (zh) * 2016-10-19 2021-06-01 华为技术有限公司 内核镜像文件快速加载方法和装置
CN107229536A (zh) * 2017-05-27 2017-10-03 郑州云海信息技术有限公司 一种用于终端设备的启动方法和系统
US10579363B2 (en) * 2017-11-29 2020-03-03 Citrix Systems, Inc. Cloud service automation of common image management
JP7053979B2 (ja) * 2018-06-29 2022-04-13 株式会社Pfu 情報処理装置、情報処理方法、及びプログラム
US10817190B1 (en) * 2019-07-15 2020-10-27 Amazon Technologies, Inc. System and method for managing memory compression security
CN110837343B (zh) * 2019-09-27 2021-06-22 华为技术有限公司 处理快照的方法、装置及终端
TWI777664B (zh) * 2021-07-12 2022-09-11 神雲科技股份有限公司 嵌入式系統的開機方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100429903B1 (ko) * 2001-12-27 2004-05-03 한국전자통신연구원 홈 게이트웨이 시스템의 이미지 업데이트 방법
TWI251771B (en) * 2001-12-28 2006-03-21 Asustek Comp Inc Module and method for automatic restoring BIOS device, and the computer-readable recording media of storing the program codes thereof
KR100747901B1 (ko) 2005-07-18 2007-08-08 주식회사 팬택앤큐리텔 이동통신단말기의 실행 파일 압축 방법
US20070043890A1 (en) * 2005-08-19 2007-02-22 Miller Casey L Data block transfer and decompression
US7640440B2 (en) 2006-04-25 2009-12-29 Apple Inc. Method and apparatus for facilitating device hibernation
KR100849305B1 (ko) * 2006-11-24 2008-07-29 삼성전자주식회사 데이터를 압축하여 관리하는 메모리 및 그 방법
US7747814B2 (en) * 2007-06-26 2010-06-29 Microsoft Corporation Virtual machine state snapshots
US7844853B2 (en) * 2007-08-07 2010-11-30 International Business Machines Corporation Methods and apparatus for restoring a node state
US8489554B2 (en) * 2007-10-05 2013-07-16 Ge Intelligent Platforms, Inc. Methods and systems for operating a sequence of events recorder
US7975071B2 (en) * 2008-01-18 2011-07-05 Microsoft Corporation Content compression in networks
US8108442B2 (en) * 2008-07-22 2012-01-31 Computer Associates Think, Inc. System for compression and storage of data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101469182B1 (ko) * 2012-12-14 2014-12-10 주식회사 텔레칩스 이미지 부팅 장치 및 그 방법
US9594569B2 (en) 2013-01-11 2017-03-14 Samsung Electronics Co., Ltd. Apparatus and method for booting

Also Published As

Publication number Publication date
CN102479098A (zh) 2012-05-30
US20120131320A1 (en) 2012-05-24
CN102479098B (zh) 2016-09-28
EP2487583B1 (en) 2017-03-22
KR101467515B1 (ko) 2014-12-01
EP2487583A1 (en) 2012-08-15
US8732446B2 (en) 2014-05-20

Similar Documents

Publication Publication Date Title
KR101467515B1 (ko) 스냅샷 이미지를 이용한 부팅 장치 및 방법
CN107977233B (zh) 内核镜像文件快速加载方法和装置
CN103810020A (zh) 虚拟机弹性伸缩方法及装置
JP2014506708A (ja) ハイバネイトからの多段レジューム
CN109905770B (zh) 终端开机启动方法、装置及终端
US20130179670A1 (en) Booting method of multimedia device and multimedia device
US20140281464A1 (en) Method of implementing magnetic random access memory (mram) for mobile system-on chip boot
CN104778066A (zh) 一种嵌入式操作系统的快速启动方法及其装置
KR20150087177A (ko) 운영 시스템 복구 방법 및 장치, 그리고 단말기기
CN104750492A (zh) 基于嵌入式操作系统的移动设备的开机控制方法及装置
CN103927196A (zh) 用于引导的装置和方法
US7900197B2 (en) Program initiation methods and embedded systems utilizing the same
CN111708548A (zh) 软件安装方法、装置、设备及存储介质
CN109298891B (zh) 系统启动方法和装置、系统编译方法和装置
US9158550B2 (en) Caching based operating system installation
CN104598278A (zh) 一种数据处理方法及电子设备
KR20070108646A (ko) 압축 바이너리 파일을 관리하는 단말기 및 그 방법
JP6080492B2 (ja) 情報処理装置、起動方法およびプログラム
Kim et al. Selective segment initialization: Exploiting nvram to reduce device startup latency
KR101691656B1 (ko) 연산 수단과 그를 이용한 부팅 방법
CN110018852B (zh) 一种系统二级引导方法、设备及存储介质
CN117472455A (zh) 基于嵌入式设备的开机方法及装置
CN113626092A (zh) 嵌入式系统启动方法与soc芯片
RU2390823C2 (ru) Компактное хранение программного кода на мобильных терминалах
US20160266960A1 (en) Information processing apparatus and kernel dump method

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
FPAY Annual fee payment

Payment date: 20171030

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181030

Year of fee payment: 5