KR101689450B1 - 사용자 공간 동기화를 사용하여 최대 절전 모드 및 재시작 프로세스를 향상시키는 방법 및 장치 - Google Patents

사용자 공간 동기화를 사용하여 최대 절전 모드 및 재시작 프로세스를 향상시키는 방법 및 장치 Download PDF

Info

Publication number
KR101689450B1
KR101689450B1 KR1020147027391A KR20147027391A KR101689450B1 KR 101689450 B1 KR101689450 B1 KR 101689450B1 KR 1020147027391 A KR1020147027391 A KR 1020147027391A KR 20147027391 A KR20147027391 A KR 20147027391A KR 101689450 B1 KR101689450 B1 KR 101689450B1
Authority
KR
South Korea
Prior art keywords
system software
restart
software components
state
hibernation
Prior art date
Application number
KR1020147027391A
Other languages
English (en)
Other versions
KR20140131981A (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 KR20140131981A publication Critical patent/KR20140131981A/ko
Application granted granted Critical
Publication of KR101689450B1 publication Critical patent/KR101689450B1/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
    • G06F9/4403Processor initialisation
    • 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/4418Suspend and resume; Hibernate and awake
    • 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/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Power Sources (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)

Abstract

컴퓨팅 디바이스(102)를 최대 절전 모드로 전환하기 전에, 시스템 소프트웨어 구성요소들(116)은 다가오는 최대 절전 모드 프로세스를 통지받는다. 통지들은 API(application program interface)(114)를 통해 전달된다. 시스템 소프트웨어 구성요소들(116) 중 적어도 일부분은 그 시스템 소프트웨어 구성요소(116)를 재시작 준비 완료 상태에 두기 위해 하나 이상의 최대 절전 모드전 활동들을 수행할 수 있다. 각각의 시스템 소프트웨어 구성요소는 최대 절전 모드에 대한 준비가 완료되었을 때를 표시한다. 시스템 소프트웨어 구성요소들(116) 각각으로부터 표시를 수신한 것에 응답하여, 최대 절전 모드 프로세스가 완료될 수 있다. 최대 절전 모드 프로세스의 완료는 비휘발성 메모리에 스냅샷(122)을 생성한다. 스냅샷(122)은 시스템 소프트웨어 구성요소들(116) 각각에 대한 상태 정보(124)를 저장한다. 상태 정보(124)는 시스템 소프트웨어 구성요소들(116)의 재시작 준비 완료 상태에 대한 것이다. 컴퓨팅 디바이스(102)는, 최대 절전 모드 후에, 스냅샷(122)으로부터 상태 정보(124)를 판독하는 재시작 프로세스(130)를 사용하여 복원될 수 있다.

Description

사용자 공간 동기화를 사용하여 최대 절전 모드 및 재시작 프로세스를 향상시키는 방법 및 장치{METHOD AND APPARATUS FOR ENHANCING A HIBERNATE AND RESUME PROCESS USING USER SPACE SYNCHRONIZATION}
본 개시 내용은 일반적으로 통신 디바이스의 전원 켜기 프로세스를 관리하는 것에 관한 것으로서, 보다 상세하게는 사용자 공간 동기화를 사용하여 최대 절전 모드 및 재시작 프로세스를 향상시키는 것에 관한 것이다.
컴퓨팅 디바이스들에 대한 최대 절전 모드 및 재시작 프로세스는 빠른 부트 시간을 달성하여 사용자 기다림을 최소화하기 위해 점점 더 이용되고 있다. 최대 절전 모드 프로세스는 컴퓨팅 디바이스의 상태가 저장될 수 있게 하고 컴퓨팅 디바이스가 이어서 전원이 꺼질 수 있게 한다. 즉, 컴퓨팅 디바이스의 운영 체제 내에서 실행 중인 소프트웨어 프로세스들이 "동결"되거나 스냅샷에 저장될 수 있고, 여기서 스냅샷은 비휘발성 메모리에 저장된다.
임의의 수의 사건들은 재시작 프로세스로 하여금 하나 이상의 시스템 파라미터들 또는 값들이 부적절한 상태에서 컴퓨팅 디바이스를 개시하게 할 수 있다. 예를 들어, 많은 디바이스들은 기계적 컨트롤들, 노브들, 다이얼들 등을 포함하고 있다. 이 기계적 컨트롤들은 최대 절전 모드 프로세스가 실행될 때 한 위치에 있을 수 있고, 재시작 프로세스가 실행될 때 다른 위치에 있을 수 있다. 각각의 기계적 컨트롤 설정은 운영 체제의 데이터 구조체에 의해 휘발성 메모리에 유지되는 대응하는 값을 가질 수 있다. 디바이스의 현재 상태에 대해 하나 이상의 내부 값들이 부적절할 때, 임의의 수의 부정적 결과들이 발생할 수 있다.
예를 들어, 디바이스는 부적절한 값을 검출할 수 있고 그에 맞춰 조절될 수 있으며, 이는 재시작 프로세스의 처리 시간을 길어지게 하고 그리고/또는 사용자 경험 지연 시간을 부가하여, 컴퓨팅 디바이스에 대한 사용자 경험을 떨어뜨린다. 다른 예에서, 재시작 프로세스 동안 설정된 부적절한 값들로 인해 장치 거동이 비정상적으로 될 수 있다(즉, 기계적 컨트롤이 볼륨에 대한 것일 때 부적절한 볼륨, 기계적 컨트롤이 통신 상태에 대한 것일 때 부적절한 상태 등). 또 다른 예에서, 재시작 프로세스로부터의 부적절한 값들은 소프트웨어 충돌들 및 다른 예상치 못한 오류들을 야기할 수 있다.
스냅샷으로부터 재시작할 때 파라미터 값들이 부적절한 경우의 문제점들을 최소화하거나 방지하는 최대 절전 모드 및 재시작 프로세스에 대한 개선이 필요하다.
유사한 참조 번호들이 개별 도면들에 걸쳐 동일하거나 기능적으로 유사한 요소들을 가리키고 있는 첨부 도면들은, 이하의 상세한 설명과 함께, 명세서에 포함되어 그 일부를 형성하고, 또한 청구된 발명을 포함하는 개념들의 실시예들을 추가로 예시하고 그 실시예들의 다양한 원리들 및 장점들을 설명하는 역할을 한다.
도 1은 본 개시 내용의 실시예들에 따른, 최대 절전 모드 및 재시작 프로세스를 향상시키는 블록도.
도 2는 본 명세서에 개시되어 있는 발명 구성들의 일 실시예에 따른, 최대 절전 모드 및 재시작 프로세스를 향상시키는 방법의 플로우차트.
도 3은 본 명세서에 개시되어 있는 발명 구성들의 일 실시예에 따른, 동결/최대 절전 모드 프로세스의 메시지 시퀀스 차트를 나타낸 도면.
도 4는 본 명세서에 개시되어 있는 발명 구성들의 일 실시예에 따른, 동결 해제/재시작 프로세스의 메시지 시퀀스 차트를 나타낸 도면.
도 5는 본 개시 내용의 실시예들에 따른, 최대 절전 모드 및 재시작 프로세스를 구현하는 시스템을 나타낸 개략도.
당업자라면 도면들에서의 요소들이 간단함 및 명료함을 위해 예시되어 있고 꼭 축척대로 그려져 있지는 않다는 것을 잘 알 것이다. 예를 들어, 본 발명의 실시예들에 대한 이해를 증진시키는 데 도움을 주기 위해, 도면들에서의 요소들 중 몇몇 요소들의 크기가 다른 요소들에 대해 과장되어 있을 수 있다.
따라서, 장치 및 방법 구성요소들이, 적절한 경우, 도면들에서 전통적인 심볼들로 표현되어 있고, 이 도면들은, 본 명세서에서의 설명의 이득을 보는 기술 분야의 당업자에게 즉각 명백하게 될 상세들로 본 개시 내용을 불명료하게 하지 않기 위해, 본 발명의 실시예들을 이해하는 데 관련있는 그 구체적인 상세들만을 도시하고 있다.
컴퓨팅 디바이스에 대한 최대 절전 모드 및 재시작 프로세스에 대한 방법, 장치, 시스템, 및/또는 컴퓨터 프로그램 제품. 본 개시 내용에서, 컴퓨팅 디바이스를 최대 절전 모드로 전환하기 전에, 시스템 소프트웨어 구성요소들은 다가오는 최대 절전 모드 프로세스를 통지받을 수 있다. 하나의 실시예에서, 통지들은 API(application program interface)(114)를 통해 전달된다. 시스템 소프트웨어 구성요소들 중 적어도 일부분은 그 시스템 소프트웨어 구성요소를 재시작 준비 완료 상태에 두기 위해 하나 이상의 최대 절전 모드전 활동들(pre-hibernation activities)을 수행할 수 있다. 각각의 시스템 소프트웨어 구성요소는 최대 절전 모드에 대한 준비가 완료되었을 때를 나타낼 수 있다. 시스템 소프트웨어 구성요소들 각각으로부터, 시스템 소프트웨어 구성요소들 각각이 최대 절전 모드에 대한 준비가 완료되었다는 것을 나타내는 표시를 수신한 것에 응답하여, 최대 절전 모드 프로세스가 완료될 수 있다. 최대 절전 모드 프로세스의 완료는 비휘발성 메모리에 스냅샷을 생성한다. 스냅샷은 시스템 소프트웨어 구성요소들 각각에 대한 상태 정보를 저장한다. 상태 정보는 시스템 소프트웨어 구성요소들의 재시작 준비 완료 상태에 대한 것이다.
본 개시 내용은 본 명세서에서의 저장된 스냅샷이 의미있고 의도적인 실행 시점에서(즉, 재시작 준비 완료 상태에서) 시스템 소프트웨어 구성요소들을 시작한다는 사실을 이용한다. 환언하면, 최대 절전 모드/재시작 프로세스에 사용되는 스냅샷에 대한 종래 기술의 해결책들은 임의의 시점에서 시스템 상태를 기록하려고 시도하고, 그 결과 시스템 소프트웨어 구성요소들이 최대 절전 모드를 준비할 기회를 제공받지 않는다(즉, 시스템 소프트웨어에 대한 최대 절전 모드전 활동들이 행해지지 않음). 본 개시 내용에서, 시스템 소프트웨어 구성요소들을 재시작 준비 완료 상태에 두는 것은 시스템 소프트웨어 구성요소들 각각에 대한 프로세스들이 시스템 소프트웨어 구성요소의 초기화 코드가 실행되는 실행 시점에서 바로 또는 그 근방에서와 같은 특정의 실행 시점에서 시작되도록 보장해준다.
많은 실시예들에서, 소프트웨어 응용 프로그램들의 재시작 준비 완료 상태는 의도적으로 저장되고 마음대로 재사용될 수 있다. 예를 들어, 심지어 기계가 출하 및 판매되기 전에(또는 기계의 운영 체제가 로드될 때) 하나 이상의 스냅샷 이미지들의 세트가 공장에서 생성될 수 있다. 그에 부가하여, 기계의 시스템 소프트웨어 구성요소들, 운영 체제, 및/또는 하드웨어가 업그레이드될 때 새로운 "기준" 또는 "참조" 스냅샷이 생성될 수 있다. 신뢰성 있는 스냅샷을 가지는 것은 기계가 더 빨리 부팅하게 할 수 있는데, 그 이유는 시스템 소프트웨어 구성요소들이 "콜드" 상태("cold" state)로부터 시작할 필요가 없고 웜 상태(warm state)(예컨대, 재시작 준비 완료 상태)에서 (비휘발성 메모리로부터 휘발성 메모리로) 직접 로드될 수 있으며, 이는 기계의 전체적인 전원 켜기 시간을 감소시키기 때문이다. 하나의 실시예에서, 컴퓨팅 디바이스에 원하는 핵심 기능을 제공하는 시스템 소프트웨어 구성요소들의 서브셋의 전원을 켜고 이어서 나머지 시스템 소프트웨어 구성요소들의 전원을 켜는 것에 의해 전원 켜기 시간이 추가적으로 개선될 수 있다. 즉, 재시작 프로세스가 생각되는 실시예들에서 기능이 각각의 스테이지에서 최종 사용자들에게 제공되는 단계적 방식으로 일어나도록 최적화될 수 있다. 하나의 실시예에서, 기계는, 단순히 전력을 순환시켜 스냅샷 이미지로부터 재시작하는 것에 의해 오류 조건들로부터 신속히 복구하기 위해, "재시작 준비 완료" 시스템 소프트웨어 구성요소들을 가지는 스냅샷을 이용할 수 있다.
도 1은 본 개시 내용의 실시예들에 따른, 최대 절전 모드(120) 및 재시작(130) 프로세스를 향상시키는 블록도이다. 본 개시 내용은 또한, 많은 상황들에 대해, 재시작 준비 완료 상태에 놓여 있는 시스템 소프트웨어 구성요소들의 스냅샷들을 이용한다. 스냅샷은, 본 명세서에서 사용되는 바와 같이, 사용자 개시 최대 절전 모드 프로세스로부터 생성된 것으로 제한되지 않고, 공장에서 생성된 것, 시스템 업그레이드에 응답하여 생성된 것, 및/또는 시스템이 어떤 "참조" 또는 "기준" 스냅샷도 존재하지 않는다는 것을 검출할 시에 생성된 것도 포함한다. 종래 기술의 이전의 최대 절전 모드 프로세스와 달리, 최대 절전 모드 프로세스(120)에서, 운영 체제(110)의 시스템 소프트웨어 구성요소들(116)은 스냅샷(122)이 생성되기 전에 최대 절전 모드 동작이 개시되었다는 것을 통지받는다(또는 스냅샷(122)이 공장에서 또는 시스템 소프트웨어 구성요소들(116)이 재시작 준비 완료 상태에 있는 다른 때에 생성된다).
시스템 소프트웨어 구성요소들(116)은 휘발성 메모리(예컨대, RAM(random access memory)) 내에 상태 정보를 유지하는 응용 프로그램들, 프로세스들, 및 드라이버들을 포함할 수 있다. 이것은 각각의 시스템 소프트웨어 구성요소(116)가 그 시스템 소프트웨어를 재시작 준비 완료 상태에 두는 0개 이상의 최대 절전 모드전 활동들을 수행함으로써 최대 절전 모드를 위한 준비를 하는 것을 가능하게 한다. 모든 시스템 소프트웨어 구성요소들(116)이 모든 동작 상태에 대해 최대 절전 모드전 활동을 반드시 수행할 필요는 없다. 최대 절전 모드전 활동들을 선택적으로 수행한 후에, 각각의 통지받는 시스템 소프트웨어 구성요소(116)는 최대 절전 모드로 전환할 준비가 되었다고 보고할 수 있다. 통지받은 구성요소들 모두가 최대 절전 모드를 위한 준비가 되었다고 보고하면, 스냅샷(122)을 생성하는 스냅샷 생성 동작(119)이 트리거될 수 있다. 하나의 실시예에서, 최대 절전 모드전 동작들은 사용자 공간(113)에서 일어날 수 있는 반면, 최대 절전 모드 프로세스(110)는 커널 공간(111)으로부터 개시되고 스냅샷(122)은 커널 공간(111)에서 실행 중인 프로세스에 의해 생성된다.
본 개시 내용의 다양한 생각되는 실시예들에 따르면, 많은 상이한 이벤트들에 응답하여 스냅샷(122)이 생성된다. 예를 들어, 최대 절전 모드 동작이 최대 절전 모드로 전환시키는 사용자 동작으로부터 개시된다. 다른 예에서, 최대 절전 모드 동작이 최대 절전 모드와 연관된 타임아웃 기간으로부터 개시된다. 또 다른 예에서, 최대 절전 모드 동작이 기존의 참조가 없는 시스템 부트업 시간 검출로부터 개시된다(이 후자의 경우에, 최대 절전 모드 프로세스와 종종 연관되어 있는 전원 끄기 동작이 일어날 필요가 없음). 이 예들은 비제한적이고 다른 예들이 생각되고 있다.
하나의 실시예에서, 최대 절전 모드 동작의 통지들은 최대 절전 모드/재시작 프로세스들(120, 130)을 위해 설정되는 API(application program interface)(114)로부터 개시된다. 이 목적을 위해, "get_ready()"와 같은 통지 함수가 사용될 수 있다. 통지들이 API(114)로부터 송신될 때, 시스템 소프트웨어 구성요소들(116) 각각으로부터의 메시지들이 다시 API(114)로 전달될 수 있다. 예를 들어, 이 목적을 위해, 도시된 "report_ready()" 함수와 같은 함수 또는 등가물이 사용될 수 있다. 시스템 소프트웨어 구성요소들(116)과의 통신을 위해 API(114)를 사용하는 것은 유용한 표준화된 접근 방법일 수 있으며, 운영 체제(110)의 커널 공간(111) 내에 구현된 최대 절전 모드/재시작 프로세스들(120, 130)에 대해 그리고/또는 컴퓨팅 디바이스(102)의 BIOS 레벨에서 구현되는 것들에 대해 특히 그렇다.
본 개시 내용의 다양한 생각되는 실시예들에 따르면, 재시작 프로세스(130)가 많은 다른 이벤트들에 의해 그리고 다른 상황들 또는 목적들에 대해 개시될 수 있다. 예를 들어, "고속 부팅(fast boot)"을 가능하게 하기 위해 재시작 프로세스(130)가 시스템 기동 시에 일어난다. 다른 예에서, 재시작 프로세스(130)가 컴퓨팅 디바이스(102)의 최대 절전 모드, 슬립(sleep), 또는 다른 절전 상태로부터 일어난다. 또 다른 예에서, 재시작 프로세스(130)가 (전력 순환후 재시작(power-cycle then resume)을 트리거하는 또는 시스템 리셋/복원후 재시작(system reset/restore then resume)을 트리거하는) 시스템 오류에 의해 트리거된다. 이와 유사하게, 재시작 프로세스(130)가 미지의 상태로부터, 오류있는 거동으로부터, 기타로부터의 복구 프로세스의 일부로서 임의의 예외에 의해 트리거될 수 있다(즉, 기지의 스냅샷으로부터의 재시작 프로세스(130)가 예외 처리 프로세스의 일부로서 일어날 수 있다). 하나의 실시예에서, 상이한 스냅샷들(122)(예컨대, 참조 스냅샷, 복구 스냅샷 등)이 컴퓨팅 디바이스(102)에 의해 저장될 수 있고, 상이한 재시작 프로세스 상황들에 연계될 수 있다.
그에 관계없이, 재시작 프로세스(130)가 개시되면, 시스템 구성요소들에 대한 전력을 복원하기 위해 (필요한 경우) 전원 켜기 대책들이 취해진다. 비휘발성 메모리에 저장되었던 스냅샷(122)이 액세스되고 판독되며, 이는 이전에 저장된 상태(124) 정보를 휘발성 메모리에 로드한다. 종래 기술의 구현예들과 달리, 저장된 상태(124)는 이전에 실행 중인 소프트웨어 시스템 구성요소들(116)이 최대 절전 모드전 동작들의 세트를 실행하는 동작을 하고 그로써 시스템 소프트웨어 구성요소들(116) 각각의 저장된 스냅샷(122) 버전을 재시작 준비 완료 상태에 두는 것에 의해 준비되어 있을 수 있었던 상태이다. 이와 같이, 시스템 소프트웨어 구성요소(116)는 종래의 최대 절전 모드 프로세스들과 비교하여 최대 절전 모드로부터 재시작할 시에 동기화 문제들을 경험할 가능성이 더 적다. 예를 들어, 시스템 소프트웨어 구성요소들(116)에 대한 재시작 준비 완료 상태는 최대 절전 모드의 전원 끄기 기간 동안 변경되는 변수들(예를 들어, 디바이스(112)의 기계적 컨트롤에 연계된 값들이 재시작 준비 완료 상태로부터 개시될 수 있음)이 획득되기 직전에 존재하는 상태일 수 있다. 이와 유사하게, 재시작 준비 완료 상태는 운영 체제(110)가 분리가능 주변 장치들(예컨대, USB(Universal Serial Bus) 또는 다른 플러그 앤 플레이 디바이스들)에 대한 변경들이 있는지, 이 디바이스들에 의존하는 동작들이 시도되기 전에, 검사하는 실행 시점에 있을 수 있다.
하나의 실시예에서, 운영 체제(110) 및/또는 시스템 소프트웨어 구성요소들(116)의 변수들 간의 타이밍 시퀀스들 및 의존 관계들이 고려될 수 있다. 이와 같이, 재시작 프로세스(130) 동안 시스템 소프트웨어 구성요소들(116)과 운영 체제(110) 사이에서 변수들, 값들, 및 다른 통신이 일어날 수 있다. 예를 들어, 시스템 소프트웨어 구성요소들(116) 중의 상이한 것들은 다수의 프로세스들 및/또는 심지어 서브프로세스들의 세트를 포함할 수 있다. 예를 들어, 소프트웨어 구성요소들(116) 중 하나는, 도시된 바와 같이, 프로세스들(A, B 및 C) 그리고 서브프로세스들(A1 및 B1)을 포함할 수 있다. 이 프로세스들 및 서브프로세스들은 서로에 대해 또는 운영 체제(110)의 다른 실행 중인 프로세스들 또는 서브프로세스들에 대해 시퀀싱될 수 있다. 저장된 상태 변수들(124)은 이 타이밍 시퀀스들이 서로에 대해 적절히 시퀀싱되고 그리고/또는 동기화되는 것을 필요로 할 수 있고, 이는 스냅샷(122)이 얻어지기 전에 소프트웨어 구성요소들(116) 각각을 재시작 준비 완료 상태 또는 실행 위치에 두기 위해 소프트웨어 구성요소들(116)이 최대 절전 모드전 활동들을 취할 수 있는 것으로 인해 본 개시 내용에서 가능하다. 적절한 시퀀싱은, 스냅샷(122)에 명시된 바와 같이, 단순히 적절한 상태(124)에 도달되도록 보장하는 것이다. 게다가, 최대 절전 모드전 활동들은 재시작 프로세스(130)의 실행 시에 컴퓨팅 디바이스(102)를 그의 이전의 상태로(또는 기본, 참조 또는 기준 상태로) 신속히 복원하도록 설계되어 있는 최적화들을 포함할 수 있다.
최대 절전 모드 프로세스(120)에서, 최대 절전 모드를 준비하라는 메시지가 수신될 때 시스템 소프트웨어 구성요소들(116) 각각은 임의의 상태에 있다. 최대 절전 모드전 활동들은 소프트웨어 구성요소들(116) 각각을 이 임의의 상태로부터 재시작 준비 완료 상태로 천이시킨다. 하나의 경우에서, 재시작 준비 완료 상태는 소프트웨어 구성요소들(116)이 재시작(예컨대, 재시작 프로세스(130)) 시에 초기화 동작들을 실행할 준비가 되어 있는 상태일 수 있다. 예를 들어, 소프트웨어 구성요소(116)는 재시작 시에 초기화 동작을 실행하기 위해 실행 포인터를 이동시킴으로써 재시작 준비 완료 상태로 천이될 수 있다. 최대 절전 모드 프로세스(120)가 보호 모드(protected mode) 및 수퍼바이저 모드(supervisor mode)를 비롯한 하나 이상의 동작 모드들을 포함할 수 있고, 상이한 모드들이 소프트웨어 구성요소들(116)에 의해 수행되는 최대 절전 모드전 활동들에 영향을 미칠 수 있다는 것을 잘 알 것이다.
일반적으로, 최대 절전 모드 프로세스(120)는 컴퓨팅 디바이스(102)가 그의 상태 정보(예컨대, 상태(124))를 유지하면서 전원이 꺼질 수 있는 프로세스이다. 하나의 실시예에서, 전원 끄기 프로세스는 선택적이지만, 상태 정보를 스냅샷(122)에 저장하는 것이 필요하다. 즉, 최대 절전 모드 시에, 컴퓨팅 디바이스(102)는 그의 휘발성 메모리(예컨대, RAM(random access memory))의 내용을 비휘발성 메모리에 스냅샷(122)으로서 저장한다. 컴퓨팅 디바이스(102)는 이어서, 하나의 실시예에서, 완전히 전원이 꺼질 수 있고, 이는 전력을 절감한다. 재시작 프로세스(130)는 컴퓨팅 디바이스(102)의 전원이 켜지게 하고 이어서 저장된 상태(124) 정보를 스냅샷(122)으로부터 검색한다.
본 명세서에서 사용되는 바와 같이, 최대 절전 모드 프로세스(120)는, 저장된 상태 정보가 유지되도록 슬립 프로세스가 비휘발성 메모리에 전력을 제공하고 그로써 상태(124) 정보를 스냅샷(122)에(즉, 비휘발성 메모리에) 저장할 필요가 없다는 점에서, 슬립 프로세스와 구별될 수 있다. 본 명세서에 상세히 기술되어 있는 바와 같이, 시스템 소프트웨어 구성요소들에 통지하는 기법들이 슬립 프로세스에는 물론, 최대 절전 모드 프로세스(120)에 적용될 수 있다. 그에 부가하여, 본 개시 내용의 최대 절전 모드 프로세스(120)는 하이브리드 최대 절전 모드/슬립 프로세스일 수 있고, 여기서 컴퓨팅 디바이스(102)가 슬립 모드에 들어갈 때 휘발성 메모리의 내용은 비휘발성 저장 장치에 스냅샷으로서 복사되며; 그로써 디바이스(102)에 대한 전력이 상실되는 경우에도 상태가 복원될 수 있게 한다. 하나의 실시예에서, 최대 절전 모드 프로세스(120) 및 재시작 프로세스(130)는 ACPI(Advanced Configuration and Power Interface) 규격과 실질적으로 호환하도록 설계되어 있다. 다른 생각되는 실시예들에서, ACPI 규격 자체가 본 명세서에 상세히 기술된 혁신들을 포함하도록 확장될 수 있다. 다른 대안으로서, 최대 절전 모드 프로세스(120) 및 재시작 프로세스(130)가 ACPI 규격과 호환되지 않는 독점적 방식으로 구현될 수 있다. 주목할 점은, 재시작 프로세스(130)가 최대 절전 모드 프로세스(120)가 일어나는 것은 필요로 하지 않지만 적당한 스냅샷(120)이 존재하는 것은 필요로 하는 (이전에 저장된 스냅샷(122)을 사용한 장애 복구와 같은) 상황들이 생각되고 있다는 것이다.
운영 체제(110)는 컴퓨터 하드웨어 자원들을 관리할 수 있고 공통 서비스들을 제공할 수 있는 실행가능 코드의 세트를 말하는 것일 수 있다. 운영 체제(110)는 저레벨 하드웨어 디바이스 드라이버들을 포함할 수 있다.
하나의 실시예에서, 운영 체제(110)는 운영 체제를 커널 공간(111) 및 사용자 공간(113)으로 분리시키는 물리 메모리(예컨대, RAM)의 가상 메모리 표현으로서 예시되어 있을 수 있다. 커널 공간(111)은 커널(112), 커널(112) 확장들(예컨대, 모듈들), 디바이스 드라이버들 등을 실행하기 위해 예비되어 있는 가상 메모리를 포함할 수 있다. 예를 들어, 커널(112) 동작들을 실행하기 위해 커널 공간(111)이 이용될 수 있다. 커널(112)은 모놀리딕 커널(monolithic kernel), 마이크로커널(microkernel), 하이브리드 커널(hybrid kernel), 모듈식 커널(modular kernel), 나노커널(nanokernel), 엑소커널(exokernel) 등을 포함할 수 있지만, 이들로 제한되지 않는다.
사용자 공간(113)은 최대 절전 모드 API(Application Programming Interface)(114), 시스템 소프트웨어 구성요소들(116), 드라이버들, 유틸리티 소프트웨어(이들로 제한되지 않음) 등을 비롯한 시스템 소프트웨어 구성요소를 실행하기 위해 이용되는 가상 메모리를 포함할 수 있다. 사용자 공간(113)은 시스템 서비스들(예컨대, 네트워킹, 인덱싱 등)과 연관되어 있는 다수의 프로세스들(예컨대, 프로세스 A, 프로세스 B) 및 서브프로세스들(에컨대, 서브프로세서 A1 및 서브프로세스 B1)을 포함할 수 있다.
API(114)는 본 명세서에 기술되어 있는 개선된 최대 절전 모드 및 재시작 프로세스들(120, 130)을 가능하게 할 수 있는 기능의 집합체를 나타낸다. API(114)는, 최대 절전 모드가 일어나기 전에, 사용자 공간 시스템 소프트웨어 구성요소들(116)이 재시작 준비 완료 상태에 들어갈 수 있게 한다. API(114)는 라이브러리, 프레임워크 등을 포함할 수 있지만, 이들로 제한되지 않는다. API(114)는 C, C++, JAVA(이들로 제한되지 않음) 등을 비롯한 전통적인 및/또는 독점적인 언어들에 부합할 수 있다.
시스템 소프트웨어 구성요소들(116) 각각은 사용자 공간(113) 내에서 실행될 수 있는 구성요소들일 수 있다. 각각의 구성요소(116)는 컴퓨팅 디바이스(102)의 하드웨어 및/또는 소프트웨어 자원들을 조작하고 그리고/또는 소비한다. 시스템 소프트웨어 구성요소들(116)은 스레드, 데몬(daemon) 등을 포함할 수 있지만, 이들로 제한되지 않는다. 즉, 시스템 소프트웨어 구성요소들(116)은 하나 이상의 프로세스들(예컨대, 프로세스 A, 프로세스 B), 서브프로세스들(예컨대, 서브프로세서 A1 및 서브프로세스 B1) 등의 세트를 포함할 수 있다. 하나의 경우에서, 시스템 소프트웨어 구성요소들(116)은 실행 상태 동안 실행을 수행하기 위해 하드웨어 및/또는 소프트웨어 구성체들을 다른 시스템 소프트웨어 구성요소들(116)과 공유한다. 예를 들어, 하나 이상의 소프트웨어 구성요소들(116)과 연관되어 있는 프로세스 A 및 프로세스 B는 서로 통신하기 위해 세마포어(semaphore)를 이용할 수 있다. 하나의 실시예에서, API(114)는 프로세스 예외를 검출하고 처리하는 기능을 제공한다. 이 실시예에서, API(114)는 무반응 프로세스(예컨대, 좀비 프로세스), 메모리 누수, 일시 중지된 프로세스 등을 검출하고 그에 적절히 응답한다.
스냅샷(122)은 시스템 소프트웨어 구성요소들(116)의 재시작 준비 완료 상태를 반영하는 프로세스 이미지일 수 있다. 하나의 경우에서, 스냅샷(122)의 상태(124) 정보는, 대략 스냅샷(122)이 얻어진 때, 시스템 소프트웨어 구성요소들(116)과 연관되어 있는 프로세스 제어 블록의 정확한 복제본을 포함한다. 상태 정보(124)는 프로세스 상태들, 서브프로세스 상태들, 객체 정보(예컨대, 객체 상태), 어드레싱 정보(예컨대, 실행 포인터들, 데이터 포인터), 프로세스 식별자(예컨대, PID) 번호, 레지스터 내용, 플래그 상태, 스위치 상태, 주소 공간 정보(예컨대, 상부 및 하부 메모리 경계들), 열린 파일들, 프로세스 우선순위, I/O 디바이스 상태 등을 포함할 수 있지만, 이들로 제한되지 않는다.
하나의 실시예에서, 이전의 상태에 관계없이 시스템 소프트웨어 구성요소(116) 상태를 복원하기 위해 스냅샷(122)이 이용된다. 즉, 소프트웨어 구성요소들(116) 중 하나 이상을 명시된 상태로 신속하게 복원하기 위해 이용될 수 있는 재사용가능 이미지를 가능하게 하기 위해 스냅샷(122)이 이용된다. 하나의 경우에서, 스냅샷(122)이 제조 공장에서 생성되고, 디바이스를 공장 상태로 복원하기 위해 각각의 재시작 시에 이용될 수 있다. 컴퓨팅 디바이스(102)의 하드웨어 구성 및/또는 소프트웨어 구성요소들(116)에 대해 변경들이 행해질 때, 이 변경들을 반영하기 위해 스냅샷(122)의 "공장" 또는 참조 상태가 갱신된다.
참조 스냅샷(122)을 사용하는 것은 최대 절전 모드 프로세스(120)에 필요한 시간을 크게 감소시킬 수 있다. 게다가, "참조" 최대 절전 모드 상태가, 하나의 실시예에서, 시스템 소프트웨어 구성요소들(116)의 운영 체제에 대한 변수 값들에 의해 향상될 수 있다. 이 값들은 명시적으로 결정되고 시스템 소프트웨어 구성요소들(116) 각각을 최대 절전 모드를 위해 준비시키는 것의 일부로서 스냅샷(122)에 대해 이용가능하게 될 수 있다.
도 2는 본 명세서에 개시되어 있는 발명 구성들의 일 실시예에 따른, 최대 절전 모드 및 재시작 프로세스를 향상시키는 방법들(201, 250)의 플로우차트이다. 방법(201)은 운영 체제 및/또는 시스템 소프트웨어의 일시 중지와 연관되어 있는 단계들의 시퀀스에 대한 최대 절전 모드 프로세스이다. 앞서 살펴본 바와 같이, 공장에서 생성되어 기계와 함께 출하되는 "제조시 준비된(born ready)" 스냅샷들과 같은, 최대 절전 모드 프로세스(201) 이외의 프로세스들에 의해 생성된 스냅샷들이 존재할 수 있다. 방법(250)은 비휘발성 메모리에 저장되어 있는 스냅샷으로부터 운영 체제 및/또는 시스템 소프트웨어를 재시작하는 것과 연관되어 있는 단계들의 시퀀스에 대한 재시작 프로세스이다.
최대 절전 모드 프로세스(201)는 최대 절전 모드 프로세스가 개시되었다는 것을 실행 중인 소프트웨어 구성요소들에 알려주는 시스템 메시지 또는 통지가 이 구성요소들로 송신될 때 시작한다. 이 통지 또는 메시지를 수신한 것에 응답하여, 각각의 소프트웨어 구성요소는 그 자신을 재시작 준비 완료 상태에 두기 위해 최대 절전 모드전 동작들의 세트를 수행할 수 있다. 예를 들어 그리고 단계(205)에 도시된 바와 같이, 시스템 구성요소는 최대 절전 모드 이벤트 및/또는 통지를 검출한다. 이 통지는 다양한 방식들로 행해질 수 있다. 하나의 실시예에서, 최대 절전 모드 준비 절차를 개시하기 위해 TIF_FREEZE 플래그가 존재할 수 있다.
대안의 실시예에서, 스냅샷의 생성을 트리거하지만 컴퓨팅 디바이스를 전원 끄기 또는 절전 모드에 반드시 들어가게 하지는 않는 비최대 절전 모드 이벤트(non-hibernate event)로 치환될 수 있다. 예를 들어, 본 개시 내용의 하나의 실시예에서 로드 시에 컴퓨팅 디바이스에 대한 기준 스냅샷이 검출되지 않는 경우, 스냅샷 생성 이벤트가 자동으로 트리거될 수 있다.
단계(210)에서, 최대 절전 모드 이벤트와 연관되어 있는 준비 또는 최대 절전 모드전(또는 스냅샷 생성전) 활동이 소프트웨어 내용에 의해 개시된다. 준비 동작은 스레드 생성을 중지하는 것, 메모리 사용을 통합하는 것, 캐시를 플러시하는 것, 큐/버퍼를 비우는 것 등을 포함할 수 있다. 단계(215)에서, 보류 중인 최대 절전 모드 동작의 통지가 종속 프로세스들로 선택적으로 전달된다. 단계(220)에서, 소프트웨어 구성요소의 하나 이상의 프로세스들, 서브프로세스들은 사용 중인 하나 이상의 자원들을 해제시킬 수 있다. 예를 들어, 소프트웨어 구성요소는 최대 절전 모드 이전에 최대 절전 모드 준비 절차의 일부로서 상호 배타적인 자원들을 해제시킬 수 있다. 단계(225)에서, 소프트웨어 구성요소가 최대 절전 모드를 위한 준비가 되어 있는 경우(예컨대, 모든 최대 절전 모드전 활동들이 수행된 경우), 이 방법은 단계(230)로 계속된다. 그렇지 않은 경우, 방법이 단계(225)로부터 단계(210)로 진행하는 것으로 표현된 바와 같이, 그 소프트웨어 구성요소에 대한 부가의 최대 절전 모드전 활동들이 수행된다.
단계(230)에서, 소프트웨어 구성요소는 재시작 준비 완료 상태에 도달하였다. 이것은 소프트웨어 구성요소가 - 하나의 실시예에서, 재시작 요청 이외의 - 요청들에 더 이상 응답하지 않는 "특수 상태"일 수 있다. 단계(240)에서, 소프트웨어 구성요소는 최대 절전 모드를 위한 준비가 되어 있다는 통지를 송신한다. 단계(205) 내지 단계(240)가 각각의 실행 중인 소프트웨어 구성요소에 의해 수행될 수 있다.
결정 블록(242)의 지연 루프로 나타낸 바와 같이, 모든 소프트웨어 구성요소들이 최대 절전 모드를 위한 준비가 되었다고 보고할 때까지, 최대 절전 모드 프로세스가 지연될 수 있다. 하나의 실시예에서 이전에 설정된 지속기간이 경과된 후에 최대 절전 모드 활동이 성공하지 못한 것으로서 중단되도록 보장하기 위해 타임아웃 검사들이 부과된다. 다른 실시예에서, 응답할 타임아웃 기간 후에는, 비록 모든 소프트웨어 구성요소들이 최대 절전 모드를 위한 준비가 되어 있다고 보고하지 않았더라도 최대 절전 모드 활동이 일어난다. 모든 시스템 소프트웨어 구성요소들이 최대 절전 모드를 위한 준비가 되면(또는 타임아웃 기간이 지나갔으면), 단계(244)로 나타낸 바와 같이, 스냅샷이 생성된 경우 최대 절전 모드가 개시된다.
재시작 프로세스(250)는 운영 체제로부터의 재시작 통지가 수신되는 단계(255)에서 시작한다. 단계(260)에서, 적절한 스냅샷이 통지에 기초하여 선택된다. 하나의 경우에서, 통지는 다수의 모드들 또는 사용자들을 지원하는 운영 체제 내에서 실행 중일 때 시스템 소프트웨어가 올바르게 재시작할 수 있게 하고, 여기서 적절한 스냅샷은 구체적으로는 현재 모드 또는 사용자에 대한 것이다. 다른 경우에서, 선택된 스냅샷은 참조/기준 스냅샷, 부트 스냅샷, 복구 스냅샷 등과 같은 특정의 스냅샷일 수 있다. 단계(265)에서, 소프트웨어 실행을 재시작하기 위해 스냅샷이 이용된다. 단계(270)로 나타낸 바와 같이, 각각의 시스템 소프트웨어 구성요소를 그의 재시작 준비 완료 상태로 복귀시키기 위해 스냅샷이 이용될 수 있다.
재시작 준비 완료 상태는 소프트웨어 구성요소가 재시작될 준비가 된 상태이고, 이 경우 소프트웨어 구성요소는 최대 절전 모드 동안 변경된 미지의 조건들이 있는지 검사한다. 예를 들어, 소프트웨어 구성요소의 재시작 준비 완료 상태는 그 소프트웨어 구성요소가 먼저 기계적 컨트롤 또는 스위치의 상태를 판독하고 이 판독된 위치에 기초하여 대응하는 값들을 조절하는 상태이다. 재시작 준비 완료 상태는 또한 운영 체제 모드 및 (디스에이블되거나 USB 주변 장치들과 같은 컴퓨팅 디바이스로부터 연결 해제/그에 재연결될 수 있는) 필요한 컴퓨팅 구성요소들이 예상된 상태에 있는지 여부를 검사한다. 그렇지 않은 경우, 그 소프트웨어 구성요소의 값들은, (신규의 재시작 준비 완료 상태와 달리) 임의의 실행 상태에서 동결되거나 최대 절전 모드로 전환된 소프트웨어 구성요소들에 대해 통상적인 상황인 소프트웨어 구성요소가 자원에 의존적인 동작을 시도하는 것과 달리, 적절한 방식으로 신속하게 조절될 수 있다.
상이한 시스템 소프트웨어 구성요소들을 최대 절전 모드로 전환하고 그리고/또는 재시작하기 위해 상이한 타이밍 시퀀스들이 설정될 수 있다는 것을 잘 알 것이다. 즉, 하나의 실시예에서, 시스템 소프트웨어 구성요소들 중 다른 시스템 소프트웨어 구성요소들이, 그 구성요소가 단계별 최대 절전 모드/재시작 프로세스에 따라 "동결" 또는 "동결 해제"되기 전에, 실행 상태를 달성할 때까지 시스템 소프트웨어 구성요소들 중 상이한 시스템 소프트웨어 구성요소들이 기다려야만 할지도 모르는 다중 스테이지 최대 절전 모드/재시작 프로세스가 생각되고 있다. 이와 같이, 시스템 소프트웨어 구성요소들 중 하나가 시스템 소프트웨어 구성요소들 중 다른 것에 대한 스냅샷으로부터 아주 신속하게 재인에이블될 수 있다. 하나의 실시예에서, 최대 절전 모드 프로세스(201) 또는 재시작 프로세스(250) 동안 타이밍 및 시퀀싱을 제어하기 위해, 소프트웨어 구성요소 관련 "THAW" 및/또는 "FREEZE" 또는 "RESUME" 메시지들이 사용될 수 있다.
그에 부가하여, 하나의 생각되는 실시예에서, 다중 스테이지 최대 절전 모드/재시작 프로세스는 각각의 스테이지가 최종 사용자 기능을 제공하는 데 필요한 시스템 소프트웨어 구성요소들의 서브셋들을 그룹화하도록 보장해준다. 이것은, 재시작 프로세스(250)가 개시된 것에 응답하여, 컴퓨팅 디바이스의 "핵심 기능"이 가능한 한 빨리 최종 사용자 사용을 위해 복원될 수 있게 할 수 있다. 예를 들어, 스마트폰 컴퓨팅 디바이스에서, 하나의 스테이지는 핵심 전화 기능을 제공할 수 있고, 나중의 스테이지는 기본적인 사용자 인터페이스 기능을 제공할 수 있으며, 마지막 스테이지는 디바이스 상에 설치된 브라우저 및/또는 비필수적인 응용 프로그램들을 통해 웹에 액세스하는 기능을 제공할 수 있다. 게다가, 다중 스테이지 재시작 프로세스(250)는 하나의 생각되는 실시예에서 상황에 따라 조정될 수 있다. 예를 들어, 재시작 프로세스(250)가 치명적 오류에 기초하여 트리거되는 경우(즉, 재시작 프로세스(250)가 오류로부터 복구하는 데 사용되는 경우), 오류(알려져 있는 경우) 시에 사용자가 이용하는 기능이 오류 시에 사용자가 이용하지 않는 기능보다 먼저 우선적으로 복원될 수 있다. 이와 같이, 최종 사용자는 가능한 한 신속하게 원하는 기능을 이용할 수 있고, 이는 인지된 또는 유효 재시작 시간이 다중 스테이지 재시작 기법을 통해 최소화된다는 것을 의미한다.
도 3은 본 명세서에 개시되어 있는 발명 구성들의 일 실시예에 따른, 동결/최대 절전 모드 프로세스의 메시지 시퀀스 차트(300)를 나타낸 것이다. 메시지 시퀀스 차트(300)는 컴퓨팅 디바이스에 대한 어떤 기존의 스냅샷도 저장되어 있지 않을 때 자동으로 일어날 수 있는 것과 같은 부트 업 시퀀스 동안의 스냅샷 생성 프로세스를 나타내고 있다. 메시지 시퀀스 차트(300)는, 부트 프로세스 동안, 동결 데몬(316)이 시작되는 것을 나타내고 있다. 동결 데몬(316)은 시스템의 다른 구성요소들(318 내지 326)로부터 동결될 준비가 되어 있다는 것을 나타내는 메시지들을 기다릴 수 있다. 모든 구성요소들(318 내지 326)이 준비가 되어 있다는 것을 보고하면, 동결 데몬(316)은 동결 프로세스를 시작하라는 메시지를 커널(312)로 송신할 수 있다.
차트(300)를 상세히 설명하면, 시작 메시지가 부트 로더(310)로부터 커널(312)로 송신된다. 커널(312)에서, 초기화 프로세스(340), 드라이버 시작 프로세스(342), 파일 시스템 마운트 프로세스(344), 및 초기화 프로그램 로드 프로세스(346)가 실행될 수 있다. 초기화 프로세스(314)는 안드로이드®(또는 다른 운영 체제)를 가져올 수 있다. 초기화 프로세스(314)의 일부로서, 일련의 시작 메시지들에 의해 차트(300)에 나타낸 바와 같이, 동결 데몬(316), 오디오 시스템(318), PTT(push to talk) 핸들러(320), 오디오 디스패치 핸들러(dispatch audio handler)(322), 응용 프로그램 디스패치(dispatch application)(324), 및 DTAPI(DekTec Application Programming Interface)(326)가 시작될 수 있다. 동결 데몬(316), 오디오 시스템(318), PTT(push to talk) 핸들러(320), 오디오 디스패치 핸들러(322), 응용 프로그램 디스패치(324), 및 DTAPI(DekTec Application Programming Interface)(326)는 양 및 성질이 컴퓨팅 디바이스마다 달라질 예시적인 시스템 소프트웨어 구성요소들이고, 다른 것들이 생각되고 있다.
시작 시에, 동결 데몬(316)은 다른 구성요소들(318 내지 326)로부터의 동결 메시지들을 기다린다. 각각의 구성요소들(318 내지 326)은 최대 절전 모드전 활동들 또는 스냅샷전 활동들의 세트를 선택적으로 수행하고, 이어서 "FREEZE ME" 메시지를 동결 데몬(316)으로 송신한다. "FREEZE ME" 메시지를 송신하는 것에 의해, 각각의 구성요소(318 내지 326)는 자신이 재시작 준비 완료 상태에 놓여 있다는 것을 나타내고 있다. 이 재시작 준비 완료 상태에 있는 동안, 각각의 구성요소(318 내지 326)는, 각각, 대기 프로세스들(352, 354, 356, 358, 및 360)에 의해 나타낸 바와 같이, THAW 메시지를 기다릴 수 있다.
동결 데몬(316)은 "FREEZE SYSTEM" 메시지를 커널(312)로 송신하고, 커널(312)은 이어서 시스템 동결(362)을 실행한다.
도 4는 본 명세서에 개시되어 있는 발명 구성들의 일 실시예에 따른, 동결 해제/재시작 프로세스의 메시지 시퀀스 차트(400)를 나타낸 것이다. 메시지 시퀀스 차트(400)는, 전원 켜기 프로세스 동안, 커널(312)이 이미지 또는 스냅샷을 검출하고 이어서 이를 로드하는 것을 나타내고 있다. 이미지가 로드된 후에, 시스템은 이전에 동결되었던 상태에서 재시작한다. 동결 데몬은 대기 중인 구성요소들(320 내지 326) 모두에게 동결 해제될 수 있다는 것을 알려줄 수 있다.
차트(400)를 상세히 설명하면, 시작 메시지가 부트 로더(310)로부터 커널(312)로 송신된다. 커널(312)에서, 초기화 프로세스(340) 및 드라이버 시작 프로세스(342)가 실행될 수 있다. 이어서, 이미지 또는 스냅샷이 커널(312)에서 실행 중인 프로세스(410)에 의해 검출될 수 있다. 이미지가 프로세스(412)에 의해 로드될 수 있다. 재시작 프로세스가 프로세스(412)에 의해 개시될 수 있다. 이를 위해, 절전 해제 메시지(wake message)가 커널(312)로부터 동결 데몬으로 송신될 수 있다. 동결 해제 메시지(thaw message)가, 도시된 바와 같이, 동결 해제 메시지(들) 이전에 대기 상태(352 내지 360)에 있었던 시스템 소프트웨어 구성요소들(320 내지 326) 각각으로 송신될 수 있다. 동결 데몬(316)은 일정 기간(예컨대, 3초) 동안 기다릴 수 있고, 그 후에 동결 해제후 스크립트(post thaw script)가 실행된다(420).
도 5는 본 개시 내용의 실시예들에 따른, 최대 절전 모드 및 재시작 프로세스를 구현하는 시스템(500)을 나타낸 개략도이다.
본 명세서에서 사용되는 바와 같이, 최대 절전 모드는 휘발성 메모리(524)에 존재하는 시스템 소프트웨어 구성요소 상태 정보를 비휘발성 메모리(526)에, 구체적으로는 스냅샷(560)에 존속시키는 것을 포함할 수 있다. 재시작은 시스템 소프트웨어 상태 정보를 저장된 스냅샷(560)으로부터 휘발성 메모리(524)로 로드하는 것을 포함할 수 있다. 하나의 실시예에서, 스냅샷(560)은 소프트웨어 구성요소 상태 정보를 존속시킬 수 있는 디지털적으로 인코딩된 데이터 구조체이다. 본 개시 내용의 다양한 실시예들에서, 각각의 스냅샷(560)이 최대 절전 모드 프로세스에 의해 생성될 필요가 없고(즉, 어떤 스냅샷들(560)이 "제조시 준비된" 것일 수 있음), 각각의 재시작 프로세스가 최대 절전 모드 상태로부터 행해질 필요가 없다(즉, 재시작 프로세스가 슬립 상태로부터, 장애 상태로부터, 기타로부터 행해질 수 있음).
컴퓨팅 디바이스(510)는 운영 체제(530)의 실행을 가능하게 하는 하드웨어/소프트웨어 엔터티일 수 있다. 디바이스(510)는 하드웨어(512), 소프트웨어(514), 펌웨어 등을 포함할 수 있다. 다양한 실시예들에서, 컴퓨팅 디바이스(510)는 모바일 컴퓨팅 디바이스, 휴대폰, 양방향 무선기, 랩톱, 데스크톱 컴퓨터, 태블릿, PDA(personal digital assistant) 등일 수 있지만, 이들로 제한되지 않는다.
하드웨어(512)는 프로세서(520), 버스(522), 휘발성 메모리(524), 비휘발성 메모리(526) 등을 포함할 수 있지만, 이들로 제한되지 않는다. 입출력 주변 장치, 네트워크 송수신기, 오디오 트랜스듀서 등과 같은 부가의 하드웨어(512) 구성요소들(도시 생략)이 또한 컴퓨팅 디바이스(510)를 위해 존재할 수 있다.
소프트웨어(514)는 운영 체제(530), 시스템 소프트웨어(536), 스냅샷(560) 등을 포함할 수 있지만, 이들로 제한되지 않는다.
운영 체제(OS)(530)는 커널(532), 실행가능 코드(534) 등을 포함할 수 있지만, 이들로 제한되지 않는다. 운영 체제(530)는 그래픽 관리자를 포함할 수 있거나 그렇지 않을 수 있다. 하나의 실시예에서, 운영 체제(530)는 최대 절전 모드/재시작 프로세스를 구현하는 GNU LINUX, UNIX, WINDOWS®, 및 다른 운영 체제들을 포함할 수 있지만, 이들로 제한되지 않는다.
실행가능 코드(534)는 최대 절전 모드 및 재시작의 사용자 공간 초기화를 설정하는 하나 이상의 명령어 세트들을 나타낸다. 실행가능 코드(534)는 프로세스 관리자(542), 스냅샷 핸들러(544), 설정(546) 등을 포함할 수 있지만, 이들로 제한되지 않는다. 코드(534) 기능은 디바이스(510)의 전력 제어, 상태 천이 기능 등을 포함할 수 있지만, 이들로 제한되지 않는다. 예를 들어, 코드(534)는 시스템 소프트웨어(536)와 연관되어 있는 최대 절전 모드 준비 동작들을 개시할 수 있는 사용자 공간 서비스일 수 있다.
프로세스 관리자(542)는 사용자 공간 내에서 최대 절전 모드 및 재시작 기능을 수행할 수 있는 실행가능 코드의 일부분일 수 있다. 관리자(542) 기능은 프로세스 통신, 프로세스 등록, 프로세스 등록 해제 등을 포함할 수 있지만, 이들로 제한되지 않는다. 하나의 경우에서, 관리자(542)는 프로세스 상태를 추적하는 데 사용될 수 있다. 이 경우에서, 관리자(542)는 최대 절전 모드 준비 완료를 결정하기 위해 소프트웨어(536)를 폴링할 수 있다. 하나의 실시예에서, 관리자(542)는 소프트웨어(536) 오류들에 응답하도록 구성될 수 있다. 이 실시예의 한 구성에서, 소프트웨어(536)가 응답이 없을(hang) 때, 관리자(542)는 적절한 과거 스냅샷을 결정하고 프로세스를 자동으로 종료할 수 있다. 이 구성에서, 재시작 시에 프로세스를 재기동하기 위해 과거 스냅샷이 이용될 수 있다. 이 실시예의 다른 구성에서, 소프트웨어(536)가 응답이 없을 때, 관리자(542)는 통지를 사용자 인터페이스로 전달할 수 있다. 하나의 실시예에서, 관리자(542)는 최대 절전 모드 및/또는 재시작을 제어하기 위해 설정(550)을 이용할 수 있다. 설정(550)은 최대 절전 모드 프로세스에 응답하여 소프트웨어 구성요소들에 대해 저장된 상태 데이터를 제공할 수 있다.
스냅샷 핸들러(544)는 스냅샷(560)을 관리하는 소프트웨어 엔터티일 수 있다. 핸들러(544) 기능은 스냅샷(560) 생성, 스냅샷(560) 삭제, 스냅샷(560) 조작, 스냅샷(560) 검색 등을 포함할 수 있지만, 이들로 제한되지 않는다. 핸들러(544)는 스냅샷(560)을 생성 및/또는 관리하기 위해 전통적인 및/또는 독점적인 메커니즘들을 이용할 수 있다. 하나의 경우에서, 핸들러(544)는 소프트웨어로 스냅샷을 일의적으로 식별하기 위해 프로세스 식별자를 이용할 수 있다. 하나의 실시예에서, 핸들러(544)는 감소된 스냅샷 크기를 가능하게 하기 위해 전통적인 및/또는 독점적인 압축 메커니즘들을 이용할 수 있다. 이 실시예에서, 핸들러(544)는 스냅샷(560)을 압축 및/또는 최적화하기 위해 이용될 수 있다.
설정(546)은 디바이스(510), 시스템(530), 실행가능 코드(534) 및/또는 시스템 소프트웨어(536)의 거동을 설정하는 하나 이상의 규칙 세트들을 포함할 수 있다. 설정(546)은 프로세스 관리자(542), 스냅샷 핸들러(544) 등을 포함할 수 있지만, 이들로 제한되지 않는다. 설정(546)은 수동으로 그리고/또는 자동으로 결정될 수 있다. 하나의 경우에서, 설정(546)은 사용자 인터페이스(562)를 통해 구성될 수 있다.
이상의 개시 내용은 실행 중인 소프트웨어 구성요소들(프로세스들, 응용 프로그램들, 드라이버들 등)이 보류 중인 최대 절전 모드 프로세스(또는 소프트웨어 구성요소들이 재시작 준비 완료 상태에 들어갈 수 있도록 스냅샷을 생성하는 임의의 프로세스)를 인식할 수 있게 한다. 이 부가된 인식은 소프트웨어 구성요소들이 재기동(re-launch)을 위한 적절한 지점(재시작 준비 완료 상태라고 함)에 들어갈 수 있게 한다. 이 인식은 응용 프로그램들이 임의의 상태에서 동결되어 있는 경우 문제들을 극복한다. 이 인식(그리고 그에 응답하여 최대 절전 모드전 활동들이 행해짐)은 본 개시 내용이 최대 절전 모드 상태에 있는 동안 디바이스에 대해 하드웨어 및/또는 기계적 컨트롤 변경들이 일어나는 경우 문제들을 극복할 수 있게 한다.
출원인은, 전형적인 최대 절전 모드 프로세스에서, 드라이버들이 정지 상태(quiescent state)에 들어가라고 지시받는 것을 강조하고 있다. 본 개시 내용은 반대 방향으로부터 최대 절전 모드에 접근하고, 모든 동결전 초기화 동작들(최대 절전 모드전 활동들)이 수행된 후에 시스템 소프트웨어 구성요소들이 동결될 준비가 되어 있다는 것을 커널에 알려줄 수 있게 한다. 하나의 실시예에서, 컴퓨팅 디바이스에 대해 어떤 스냅샷도 존재하지 않는 것으로 가정하면, 시스템 전원 켜기 또는 부팅 시에, 스냅샷이 자동으로 생성될 수 있다. 하나의 실시예에서, 전력을 순환시키고 저장된 스냅샷으로부터 재시작하는 것에 의해, 오류 조건으로부터 신속하게 복구하기 위해, 저장된 스냅샷이 사용될 수 있다.
그에 부가하여, 하나의 실시예에서, 동결된 시스템 소프트웨어 구성요소들이 정의된 순서로 동결 해제될 수 있게 하는 특징들이 구현될 수 있고, 이는 최종 사용자 관점으로부터의 인지된 재시작 시간을 감소시킬 수 있고 병렬 처리를 위한 최적화를 가능하게 할 수 있다. 따라서, 본 개시 내용의 실시예들은 시스템 소프트웨어 구성요소들이 절전 모드 해제되는 순서에 관한 상세들을 포착하고 있다. 게다가, 조절 동작들(전원 끄기 프로세스들이 행해질 수 있지만, 그럴 필요는 없음) 동안 스냅샷이 얻어질 수 있고, 따라서 컴퓨팅 디바이스가 나중에 재시작될 때, 이 순서를 따를 수 있게 된다. 이것은 웨이크업 시간(wake-up time)을 최소화하기 위해 최대한의 병렬 동작들을 제공한다. 하나의 실시예에서, 특정의 디바이스 구성에 대해 공장에서(또는 그 후에) "제조시 준비된" 스냅샷들이 생성될 수 있다. 제조시 준비된 스냅샷들은 다양한 생각되는 실시예들에서 고도로 최적화되도록 보장하기 위해 수동으로, 반수동으로, 또는 자동으로 생성될 수 있다.
이상의 명세서에, 구체적인 실시예들이 기술되어 있다. 그렇지만, 당업자라면 이하의 청구항들에 기재되어 있는 본 발명의 범주를 벗어나지 않고 다양한 수정들 및 변경들이 행해질 수 있다는 것을 잘 알 것이다. 그에 따라, 본 명세서 및 도면들이 제한적인 의미가 아니라 예시적인 의미로 간주되어야 하며, 모든 이러한 수정들이 본 개시 내용의 범주 내에 포함되는 것으로 보아야 한다.
이점들, 장점들, 문제점들에 대한 해결책들, 및 임의의 이점, 장점 또는 해결책이 얻어지게 하거나 보다 두드러지게 할 수 있는 임의의 요소(들)이 임의의 또는 모든 청구항들의 중요한, 요구된 또는 필수적인 특징들 또는 요소들인 것으로 해석되어서는 안된다. 본 발명은 이 출원의 계류 중에 행해진 임의의 보정들을 포함한 첨부된 청구항들 및 발행된 그 청구항들의 모든 등가물들에 의해서만 한정된다.
더욱이, 본 문서에서, 단지 하나의 엔터티 또는 동작을 다른 엔터티 또는 동작과 구분하기 위해 제1 및 제2, 상부 및 하부, 기타와 같은 관계적 용어들이, 이러한 엔터티들 또는 동작들 간의 임의의 실제의 이러한 관계 또는 순서를 꼭 요구하거나 암시하는 일 없이, 사용될 수 있다. 용어 "구비한다", "구비하는" "갖는다", "갖는", "포함한다", "포함하는", "내포한다", "내포하는" 또는 이들의 임의의 다른 변형은 비배타적인 포함을 의미하기 위한 것이며, 따라서 일련의 요소들을 구비하는, 갖는, 포함하는, 내포하는 프로세스, 방법, 물품 또는 장치는 이들 요소 뿐만 아니라 명시적으로 열거되지 않거나 이러한 프로세스, 방법, 물품 또는 장치가 본래 가지고 있는 다른 요소들을 포함할 수 있다. "구비한다", "갖는다", "포함한다", "내포한다" 이전에 오는 요소는, 추가의 제약조건 없이, 그 요소를 구비하는, 갖는, 포함하는, 내포하는 프로세스, 방법, 물품 또는 장치에 부가의 동일한 요소들이 존재하는 것을 배제하지 않는다. 단수로 표현된 용어는, 본 명세서에서 명시적으로 달리 언급하지 않는 한, 하나 이상인 것으로 정의된다. 용어 "실질적으로", "본질적으로", "대략', "약" 또는 이들 용어의 임의의 다른 형태는 당업자가 이해하는 바와 같이 그에 가까운 것으로 정의되며, 하나의 비제한적인 실시예에서, 이 용어는 10% 이내, 다른 실시예에서 5% 이내, 다른 실시예에서 1% 이내, 다른 실시예에서 0.5% 이내인 것으로 정의된다. 용어 "결합된"은, 본 명세서에서 사용되는 바와 같이, 연결된으로서 정의되지만, 꼭 직접 연결되어 있을 필요는 없고 또한 꼭 기계적으로 연결되어 있을 필요도 없다. 어떤 방식으로 "구성"되어 있는 디바이스 또는 구조물은 적어도 그 방식으로 구성되어 있지만, 또한 열거되어 있지 않은 방식들로 구성되어 있을 수도 있다.
어떤 실시예들이 마이크로프로세서, 디지털 신호 처리기, 커스터마이즈된 프로세서 및 FPGA(field programmable gate arrays)와 같은 하나 이상의 범용 또는 전용 프로세서들(또는 "처리 디바이스들") 및, 어떤 비프로세서 회로와 함께, 본 명세서에 기술된 방법 및/또는 장치의 기능들 중 일부, 대부분 또는 그 전부를 구현하도록 하나 이상의 프로세서들을 제어하는 고유의 저장된 프로그램 명령어들(소프트웨어 및 펌웨어 둘 다를 포함함)로 이루어져 있을 수 있다는 것을 잘 알 것이다. 다른 대안으로서, 어떤 또는 모든 기능들이 저장된 프로그램 명령어들을 갖지 않는 상태 기계에 의해, 또는 각각의 기능 또는 기능들 중 일부 기능들의 어떤 조합들이 커스텀 로직(custom logic)으로서 구현되어 있는 1개 이상의 ASIC들(application specific integrated circuits)에 구현될 수 있을 것이다. 물론, 이 2가지 방식들의 조합이 사용될 수 있을 것이다.
게다가, 일 실시예가 본 명세서에 기술되고 청구된 방법을 수행하도록 컴퓨터(예컨대, 프로세서를 포함함)를 프로그램하는 컴퓨터 판독가능 코드가 저장되어 있는 컴퓨터 판독가능 저장 매체로서 구현될 수 있다. 이러한 컴퓨터 판독가능 저장 매체의 예들로는 하드 디스크, CD-ROM, 광 저장 장치, 자기 저장 장치, ROM(Read Only Memory), PROM(Programmable Read Only Memory), EPROM(Erasable Programmable Read Only Memory), EEPROM(Electrically Erasable Programmable Read Only Memory) 및 플래시 메모리가 있지만, 이들로 제한되지 않는다. 게다가, 당업자가, 예를 들어, 이용가능한 시간, 현재의 기술, 및 경제적 고려사항들에 기인한 어쩌면 상당한 노력 및 많은 설계 선택사항들에도 불구하고, 본 명세서에 개시된 개념들 및 원리들에 의해 안내될 때, 최소한의 실험으로 이러한 소프트웨어 명령어들 및 프로그램들 및 IC들을 용이하게 생성할 수 있게 될 것으로 예상된다.
읽는 사람이 기술적 개시 내용의 본질을 신속하게 확인할 수 있도록 본 개시 내용의 요약이 제공되어 있다. 이 요약이 청구항들의 범주 또는 의미를 해석하거나 제한하는 데 사용되지 않는다는 이해 하에 제공된 것이다. 그에 부가하여, 이상의 상세한 설명에서, 본 개시 내용을 간소화하기 위해 다양한 특징들이 다양한 실시예들에 함께 그룹화되어 있다는 것을 잘 알 것이다. 본 개시 내용의 이 방법은 청구된 실시예들이 각각의 청구항에 명확하게 인용되어 있는 것보다 더 많은 특징들을 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 이하의 청구항들이 반영하고 있는 바와 같이, 본 발명의 발명 요지가 단일의 개시된 실시예의 특징들 전부가 아닌 일부에 있다. 따라서, 이하의 청구항들은 이에 따라 상세한 설명에 포함되며, 각각의 청구항은 그 자체로서 개별적으로 청구된 발명 요지이다.

Claims (22)

  1. 컴퓨팅 디바이스(102)에서 최대 절전 모드 및 재시작 시스템 소프트웨어를 위한 방법으로서,
    컴퓨팅 디바이스를 최대 절전 모드로 하기 전에, 상기 컴퓨팅 디바이스의 프로세서를 통해, 다가오는 최대 절전 모드 프로세스(hibernation process)를 시스템 소프트웨어 구성요소들(116)에 통지하는 단계;
    상기 시스템 소프트웨어 구성요소들의 적어도 일부가 상기 프로세서를 통해 시스템 소프트웨어 구성요소를 재시작 준비 완료 상태(ready-to-resume state)에 두기 위해 최대 절전 모드전 활동(pre-hibernation activity)을 수행하는 단계;
    각각의 시스템 소프트웨어 구성요소가 상기 프로세서를 통해 상기 시스템 소프트웨어 구성요소가 최대 절전 모드에 대한 준비가 완료되었다는 것을 나타내는 단계; 및
    상기 프로세서를 통해, 상기 재시작 준비 완료 상태에 있는 상기 시스템 소프트웨어 구성요소들의 스냅샷(122)을 생성하는 단계
    를 포함하고,
    상기 재시작 준비 완료 상태는, 상기 컴퓨팅 디바이스의 외부 기계적 입력 구성요소와 관련된 재시작에 따라 초기화 동작이 실행되는 상태이고,
    상기 시스템 소프트웨어 구성요소들 중 적어도 하나에 대해, 상기 재시작 준비 완료 상태는 상기 외부 기계적 입력 구성요소에 연계된 변수가 결정되기 직전에 존재하는 상태이고, 상기 적어도 하나의 시스템 소프트웨어 구성요소는, 상기 변수가 그 시스템 소프트웨어 구성요소에 의해 이용되기 전에 또는 이용되려고 시도되기 전에, 그리고 재시작 시에 상기 외부 기계적 입력 구성요소의 현재 상태에 기초하여 상기 변수의 값을 결정하기 위해 상기 외부 기계적 입력 구성요소를 검사하는 방법.
  2. 제1항에 있어서, 상기 시스템 소프트웨어 구성요소들(116) 각각으로부터, 상기 시스템 소프트웨어 구성요소들 각각이 최대 절전 모드에 대한 준비가 완료되었다는 것을 나타내는 표시를 수신한 것에 응답하여, 상기 최대 절전 모드 프로세스를 완료하여 비휘발성 메모리에 상기 스냅샷(122)을 생성하는 단계 - 상기 스냅샷은 상기 시스템 소프트웨어 구성요소들 각각에 대한 상태 정보를 저장함 - 를 더 포함하는 방법.
  3. 제2항에 있어서, 상기 스냅샷(122)을 상기 비휘발성 메모리에 저장한 것에 응답하여, 상기 컴퓨팅 디바이스(102)의 전원을 끄는 단계를 더 포함하는 방법.
  4. 제2항에 있어서, 최대 절전 모드로 전환된(hibernated) 상기 컴퓨팅 디바이스(102)를 재시작하라는 요청을 수신하는 단계; 및
    상기 시스템 소프트웨어 구성요소들(116)을 상기 재시작 준비 완료 상태에 두는, 재시작 프로세스 동안 상기 상태 정보를 상기 스냅샷(122)으로부터 휘발성 메모리에 로드하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서, 상기 시스템 소프트웨어 구성요소들(116)에 통지하는 단계는 API(application program interface)(114)를 통해 행해지고, 상기 나타내는 단계는 상기 API(application program interface)를 통해 행해지는 것인 방법.
  6. 제1항에 있어서, 상기 시스템 소프트웨어 구성요소들(116)은 운영 체제의 사용자 공간(113)에서 실행되고, 상기 최대 절전 모드 프로세스가 상기 운영 체제의 커널 공간(111) 내에서 개시되고 완료되는 것인 방법.
  7. 제6항에 있어서, 상기 커널 공간(111)과 상기 사용자 공간(113) 사이의 최대 절전 모드(hibernate) 및 재시작 관련 통신이 상기 운영 체제의 API(application program interface)(114)를 통해 행해지는 것인 방법.
  8. 삭제
  9. 제1항에 있어서, 상기 시스템 소프트웨어 구성요소들(116) 중 적어도 하나에 대해, 상기 재시작 준비 완료 상태는 그 시스템 소프트웨어 구성요소의 동작들이 의존하는 하드웨어 자원의 존재 또는 비존재에 대해 연결들이 검사되거나 초기화되는 상태이고, 상기 하드웨어 자원은 연결되어 있다가 상기 컴퓨팅 디바이스가 상기 최대 절전 모드 프로세스로 인한 전원 꺼짐 상태에 있는 기간 동안 상기 컴퓨팅 디바이스(102)로부터 연결 해제될 수 있는 것인 방법.
  10. 제1항에 있어서, 상기 시스템 소프트웨어 구성요소들은 오류 상태(erroneous state)에 있는 동안 상기 다가오는 최대 절전 모드 프로세스의 상기 통지를 수신하고, 상기 스냅샷(122)이 상기 오류 상태에 있는 상기 시스템 소프트웨어 구성요소들의 상태 정보를 저장하면, 재시작 시에 적어도 하나의 잘못된 동작이 일어날 것이고, 상기 컴퓨팅 디바이스(102)가 상기 생성된 스냅샷으로부터 재시작될 때, 상기 시스템 소프트웨어 구성요소들(116)의 재시작 준비 완료 이전 오류 상태(pre-error ready-to-resume state) 정보가 재시작시에 상기 오류 상태 대신에 사용되는 방법.
  11. 제1항에 있어서, 상기 컴퓨팅 디바이스(102)의 부트 프로세스 동안 상기 생성된 스냅샷(122)의 결여를 검출하는 단계; 및
    상기 컴퓨팅 디바이스의 전원을 끄거나 상기 컴퓨팅 디바이스를 절전 상태에 두는 것을 억제하면서 각각의 시스템 소프트웨어 구성요소가 재시작 준비 완료 상태 정보를 새로운 스냅샷내의 저장소에 자동으로 제공하도록 하는 단계를 더 포함하는 방법.
  12. 제1항에 있어서, 상기 컴퓨팅 디바이스(102)의 실행 중인 소프트웨어에서 장애(fault) 또는 문제가 있는 조건을 자동으로 검출하는 단계; 및
    상기 실행 중인 소프트웨어의 상기 장애 또는 문제가 있는 조건을 검출한 것에 응답하여, 상기 새로운 스냅샷으로부터 상기 컴퓨팅 디바이스 및 시스템 소프트웨어 구성요소들을 재초기화하고, 그로써 상기 컴퓨팅 디바이스가 복원을 위해 상기 새로운 스냅샷을 사용하여 비교적 신속히 상기 장애 또는 문제가 있는 조건으로부터 복원하는 단계를 더 포함하는 방법.
  13. 제1항에 있어서, 상기 시스템 소프트웨어 구성요소들(116)에 대한 상기 재시작 준비 완료 상태는 상기 시스템 소프트웨어 구성요소들 각각이 재시작 이전에 동결 해제 메시지(thaw message)를 기다리고 있는 상태이고, 상기 동결 해제 메시지는 상기 생성된 스냅샷(122)으로부터 재시작하는 재시작 프로세스 동안 전달되는 것인 방법.
  14. 삭제
  15. 삭제
  16. 비휘발성 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 판독가능 매체에 저장되어 있는 프로그램 명령어들을 포함하고,
    상기 프로그램 명령어들은 컴퓨팅 디바이스의 프로세서에 의해 실행될 때,
    상기 컴퓨팅 디바이스(102)를 최대 절전 모드로 전환하기 전에, 상기 컴퓨팅 디바이스의 시스템 소프트웨어 구성요소들에 다가오는 최대 절전 모드 프로세스를 통지하고,
    상기 시스템 소프트웨어 구성요소들(116) 중 적어도 일부가 상기 시스템 소프트웨어 구성요소를 재시작 준비 완료 상태에 두기 위해 최대 절전 모드전 활동을 수행하게 하고,
    각각의 시스템 소프트웨어 구성요소로 하여금 최대 절전 모드를 위한 준비가 되어 있다는 것을 나타내게 하고,
    상기 재시작 준비 완료 상태에 있는 상기 시스템 소프트웨어 구성요소들의 스냅샷을 상기 컴퓨팅 디바이스의 비휘발성 메모리에 생성하는 것을 포함하는 기능들의 세트를 수행하고,
    상기 재시작 준비 완료 상태는, 상기 컴퓨팅 디바이스의 외부 기계적 입력 구성요소와 관련된 재시작에 따라 초기화 동작이 실행되는 상태이고,
    상기 시스템 소프트웨어 구성요소들 중 적어도 하나에 대해, 상기 재시작 준비 완료 상태는 상기 외부 기계적 입력 구성요소에 연계된 변수가 결정되기 직전에 존재하는 상태이고, 상기 적어도 하나의 시스템 소프트웨어 구성요소는, 상기 변수가 그 시스템 소프트웨어 구성요소에 의해 이용되기 전에 또는 이용되려고 시도되기 전에, 그리고 재시작 시에 상기 외부 기계적 입력 구성요소의 현재 상태에 기초하여 상기 변수의 값을 결정하기 위해 상기 외부 기계적 입력 구성요소를 검사하는 비휘발성 컴퓨터 판독가능 매체.
  17. 제16항에 있어서, 상기 기능들의 세트는 상기 시스템 소프트웨어 구성요소들(116) 각각으로부터, 상기 시스템 소프트웨어 구성요소들(116) 각각이 최대 절전 모드에 대한 준비가 완료되었다는 것을 나타내는 표시를 수신한 것에 응답하여, 상기 최대 절전 모드 프로세스를 완료하여 비휘발성 메모리에 스냅샷(122)을 생성하는 것을 더 포함하고, 상기 스냅샷(122)은 상기 시스템 소프트웨어 구성요소들(116) 각각에 대한 상태 정보를 저장하고, 상기 상태 정보는 상기 시스템 소프트웨어 구성요소들(116)의 상기 재시작 준비 완료 상태에 대한 것이고, 상기 시스템 소프트웨어 구성요소들(116)은 운영 체제의 사용자 공간(113)에서 실행되고, 상기 최대 절전 모드 프로세스는 상기 운영 체제의 커널 공간(111) 내에서 개시되고 완료되며, 상기 커널 공간(111)과 상기 사용자 공간(113) 사이의 최대 절전 모드 및 재시작 관련 통신이 상기 운영 체제의 API(application program interface)(114)를 통해 행해지는 것인 비휘발성 컴퓨터 판독가능 매체.
  18. 시스템 소프트웨어를 최대 절전 모드로 전환하고 재시작하는 컴퓨팅 시스템으로서,
    하나 이상의 프로세서들, 하나 이상의 컴퓨터 판독가능 메모리들, 및 하나 이상의 컴퓨터 판독가능 비휘발성 저장 디바이스들과,
    상기 하나 이상의 컴퓨터 판독가능 메모리들 중 적어도 하나에 저장된 프로그램 명령어들을 포함하고,
    상기 프로그램 명령어들은 상기 하나 이상의 프로세서들에 의해 실행될 때,
    상기 컴퓨팅 시스템을 최대 절전 모드로 전환하기 전에, 시스템 소프트웨어 구성요소들(116)에 다가오는 최대 절전 모드 프로세스를 통지하고,
    상기 시스템 소프트웨어 구성요소들 중 적어도 일부가 상기 시스템 소프트웨어 구성요소를 재시작 준비 완료 상태에 두기 위해 최대 절전 모드전 활동을 수행하게 하고,
    각각의 시스템 소프트웨어 구성요소로 하여금 최대 절전 모드를 위한 준비가 되어 있다는 것을 나타내게 하고,
    상기 재시작 준비 완료 상태에 있는 상기 시스템 소프트웨어 구성요소들의 스냅샷(122)을 생성하고, 상기 스냅샷을 상기 하나 이상의 비휘발성 저장 디바이스들에 저장하는 것을 포함하는 기능들의 세트를 수행하고,
    상기 재시작 준비 완료 상태는, 상기 컴퓨팅 시스템의 외부 기계적 입력 구성요소와 관련된 재시작에 따라 초기화 동작이 실행되는 상태이고,
    상기 시스템 소프트웨어 구성요소들 중 적어도 하나에 대해, 상기 재시작 준비 완료 상태는 상기 외부 기계적 입력 구성요소에 연계된 변수가 결정되기 직전에 존재하는 상태이고, 상기 적어도 하나의 시스템 소프트웨어 구성요소는, 상기 변수가 그 시스템 소프트웨어 구성요소에 의해 이용되기 전에 또는 이용되려고 시도되기 전에, 그리고 재시작 시에 상기 외부 기계적 입력 구성요소의 현재 상태에 기초하여 상기 변수의 값을 결정하기 위해 상기 외부 기계적 입력 구성요소를 검사하는 컴퓨팅 시스템.
  19. 삭제
  20. 제18항에 있어서, 상기 시스템 소프트웨어 구성요소들은 오류 상태에 있는 동안 상기 다가오는 최대 절전 모드 프로세스의 상기 통지를 수신하고, 상기 스냅샷(122)이 상기 오류 상태에 있는 상기 시스템 소프트웨어 구성요소들(116)의 상태 정보를 저장하면, 재시작 시에 적어도 하나의 잘못된 동작이 일어날 것이고, 상기 컴퓨팅 디바이스(102)가 상기 생성된 스냅샷으로부터 재시작될 때, 상기 시스템 소프트웨어 구성요소들의 재시작 준비 완료 이전 오류 상태(pre-error ready-to-resume state) 정보가 재시작시에 상기 오류 상태 대신에 사용되는 컴퓨팅 시스템.
  21. 제1항에 있어서,
    상기 외부 기계적 입력은 다이얼 및 노브(knob) 중 하나인 방법.
  22. 제18항에 있어서,
    상기 외부 기계적 입력은 다이얼 및 노브(knob) 중 하나인 컴퓨팅 시스템.
KR1020147027391A 2012-03-30 2013-03-04 사용자 공간 동기화를 사용하여 최대 절전 모드 및 재시작 프로세스를 향상시키는 방법 및 장치 KR101689450B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/435,991 US8977879B2 (en) 2012-03-30 2012-03-30 Method and apparatus for enhancing a multi-stage hibernate and resume process
US13/435,991 2012-03-30
PCT/US2013/028895 WO2013148074A1 (en) 2012-03-30 2013-03-04 Method and apparatus for enhancing a hibernate and resume process using user space synchronization

Publications (2)

Publication Number Publication Date
KR20140131981A KR20140131981A (ko) 2014-11-14
KR101689450B1 true KR101689450B1 (ko) 2016-12-23

Family

ID=47913578

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147027391A KR101689450B1 (ko) 2012-03-30 2013-03-04 사용자 공간 동기화를 사용하여 최대 절전 모드 및 재시작 프로세스를 향상시키는 방법 및 장치

Country Status (8)

Country Link
US (2) US8977879B2 (ko)
KR (1) KR101689450B1 (ko)
CN (1) CN104220985B (ko)
AU (1) AU2013240458B2 (ko)
CA (1) CA2868322C (ko)
DE (1) DE112013001805T5 (ko)
GB (1) GB2516180B (ko)
WO (1) WO2013148074A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110126186A1 (en) * 2009-11-23 2011-05-26 Srinivasan Kattiganehalli Y Appliance maintenance in computing system environment
JP5681689B2 (ja) * 2012-11-16 2015-03-11 レノボ・シンガポール・プライベート・リミテッド 省電力状態からの復帰時間を短縮する方法およびコンピュータ
US9223388B2 (en) * 2013-01-29 2015-12-29 Hewlett Packard Enterprise Development Lp Power state transition saving session information
JP6087662B2 (ja) * 2013-02-28 2017-03-01 株式会社東芝 制御装置、制御プログラム及び情報処理システム
US20160196145A1 (en) * 2013-08-08 2016-07-07 Hewlett-Packard Development Company, L.P. Boot from modified factory image
CN103678040A (zh) * 2013-12-06 2014-03-26 北京明朝万达科技有限公司 一种基于计算机系统的快照和回退方法及系统
JP6399916B2 (ja) * 2014-01-20 2018-10-03 キヤノン株式会社 情報処理装置およびその制御方法
CN108259159B (zh) * 2014-02-05 2021-02-05 苹果公司 用于在控制器和附件之间进行配对的方法和系统
US9430407B2 (en) 2014-10-31 2016-08-30 Qualcomm Incorporated Method and system for secure storage and retrieval of machine state
CN104615465B (zh) * 2015-01-30 2019-04-23 深圳市金立通信设备有限公司 一种终端
CN105589711B (zh) * 2015-07-07 2019-02-22 新华三技术有限公司 一种设备升级方法和装置
CN106775609A (zh) * 2015-11-19 2017-05-31 飞思卡尔半导体公司 用于减少休眠及恢复时间的系统及方法
JP6665520B2 (ja) * 2015-12-17 2020-03-13 コニカミノルタ株式会社 画像形成装置およびプログラム
US10512053B2 (en) * 2016-05-10 2019-12-17 Servicenow, Inc. System and method for selectively hibernating and restarting a node of an application instance
JP6747283B2 (ja) * 2016-12-27 2020-08-26 コニカミノルタ株式会社 画像処理装置、起動方法および起動プログラム
JP6931184B2 (ja) * 2017-05-16 2021-09-01 コニカミノルタ株式会社 画像形成装置およびプログラム
US10649515B2 (en) 2018-02-12 2020-05-12 Saudi Arabian Oil Company Power management of computing and communications systems during power fluctuation and sudden power failure events
US10671407B2 (en) * 2018-06-07 2020-06-02 Oracle International Corporation Suspending and resuming a card computing device
US10705927B2 (en) * 2018-07-19 2020-07-07 Hewlett Packard Enterprise Development Lp Freeze a volume of a replication set and unfreeze the volume based on at least one of a snapshot permit message, a snapshot abort message, and expiration of a timeout
US10896093B2 (en) 2019-01-15 2021-01-19 International Business Machines Corporation System reboot maintenance
US11366681B2 (en) * 2019-03-27 2022-06-21 Amazon Technologies, Inc. Chaining virtual machines
US11467858B2 (en) 2019-03-27 2022-10-11 Amazon Technologies, Inc. Techniques for performing continuation workflows
US11163602B2 (en) * 2019-10-18 2021-11-02 EMC IP Holding Company LLC Migration from an asynchronous execution model to a synchronous execution model
KR20220017331A (ko) * 2020-08-04 2022-02-11 삼성전자주식회사 재부팅을 하는 방법 및 이를 지원하는 전자 장치
CN112026788A (zh) * 2020-09-07 2020-12-04 湖南行必达网联科技有限公司 车机电源管理方法及装置、电子设备、存储介质
US11467850B2 (en) * 2020-11-11 2022-10-11 Micron Technology, Inc. Computing device reboot
CN113360257B (zh) * 2021-04-16 2022-12-20 山东英信计算机技术有限公司 一种基于bios的信息操作方法、装置、存储介质及设备
CN114253617A (zh) * 2021-12-20 2022-03-29 先临三维科技股份有限公司 一种系统组件休眠方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090217072A1 (en) * 2008-02-26 2009-08-27 Alexander Gebhart Automated electrical power savings in virtualization environments

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688574A (en) * 1985-06-17 1987-08-25 Minnesota Mining And Manufacturing Company Electrical stimulator for biological tissue having mode control
US5784628A (en) * 1996-03-12 1998-07-21 Microsoft Corporation Method and system for controlling power consumption in a computer system
US5974473A (en) * 1996-06-14 1999-10-26 Texas Instruments Incorporated System for controlling insertion, locking, and removal of modules by removing plurality of device drivers for module to be removed from BIOS and informing BIOS of module removal
SG83684A1 (en) 1998-07-07 2001-10-16 Compaq Computer Corp Computer system performing machine specific tasks before going to a low power state
US6636963B1 (en) 1999-12-30 2003-10-21 Cardiac Pacemakers, Inc. Quick starting for microprocessor-based system by retrieving a target state memory image and a target state data structure from an image storage medium
US7000102B2 (en) 2001-06-29 2006-02-14 Intel Corporation Platform and method for supporting hibernate operations
US20030101312A1 (en) 2001-11-26 2003-05-29 Doan Trung T. Machine state storage apparatus and method
JP4743479B2 (ja) * 2004-12-03 2011-08-10 株式会社ソニー・コンピュータエンタテインメント 電子装置および電子装置の制御方法
US20070033356A1 (en) 2005-08-03 2007-02-08 Boris Erlikhman System for Enabling Secure and Automatic Data Backup and Instant Recovery
US20070038850A1 (en) 2005-08-10 2007-02-15 Matthews Jeanna N System boot and resume time reduction method
JP4622770B2 (ja) * 2005-09-20 2011-02-02 ブラザー工業株式会社 通信システム、情報処理装置、周辺装置、及び通信方法
US7533277B2 (en) * 2006-04-04 2009-05-12 Microsoft Corporation Operating system shut down
US7519808B2 (en) * 2006-04-25 2009-04-14 Apple Inc. Method and apparatus for quickly reanimating devices from hibernation
JP5365051B2 (ja) * 2008-03-31 2013-12-11 富士通株式会社 管理プログラム、管理装置及び管理方法
US20100318746A1 (en) * 2009-06-12 2010-12-16 Seakr Engineering, Incorporated Memory change track logging
US8464038B2 (en) * 2009-10-13 2013-06-11 Google Inc. Computing device with developer mode
KR20120041582A (ko) * 2010-10-21 2012-05-02 삼성전자주식회사 스냅샷 이미지 분할 처리 장치 및 스냅샷 이미지 분할 처리 방법
TWI437395B (zh) * 2010-10-22 2014-05-11 Chan Li Machinery Co Ltd Optimized PID Control Method for Process Equipment System
US9032194B2 (en) 2010-12-06 2015-05-12 Microsoft Technology Licensing, Llc Fast computer startup
US8996194B2 (en) * 2011-01-03 2015-03-31 Ems Technologies, Inc. Vehicle mount computer with configurable ignition switch behavior
EP2737386A1 (en) 2011-07-26 2014-06-04 Marvell World Trade Ltd. Zero power hibernation mode with instant on
CN104158531A (zh) * 2013-05-13 2014-11-19 鸿富锦精密工业(深圳)有限公司 电子装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090217072A1 (en) * 2008-02-26 2009-08-27 Alexander Gebhart Automated electrical power savings in virtualization environments

Also Published As

Publication number Publication date
GB2516180A (en) 2015-01-14
DE112013001805T5 (de) 2014-12-11
CA2868322A1 (en) 2013-10-02
GB2516180B (en) 2020-01-29
WO2013148074A4 (en) 2013-11-07
CN104220985B (zh) 2017-11-17
US20150143099A1 (en) 2015-05-21
WO2013148074A1 (en) 2013-10-03
KR20140131981A (ko) 2014-11-14
AU2013240458B2 (en) 2016-07-21
US9411608B2 (en) 2016-08-09
GB201417238D0 (en) 2014-11-12
CA2868322C (en) 2017-05-30
US20130262898A1 (en) 2013-10-03
CN104220985A (zh) 2014-12-17
US8977879B2 (en) 2015-03-10
AU2013240458A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
KR101689450B1 (ko) 사용자 공간 동기화를 사용하여 최대 절전 모드 및 재시작 프로세스를 향상시키는 방법 및 장치
EP2641168B1 (en) Method of provisioning firmware in an operating system (os) absent services environment
US10592254B2 (en) Technologies for fast low-power startup of a computing device
US9489029B2 (en) Operating system independent network event handling
JP6132009B2 (ja) システム変更後におけるコンピューティング装置の適切な動作を確認するための方法及びシステム
US8874889B2 (en) Method of switching between multiple operating systems of computer system
CN109918145B (zh) 一种应用程序冷启动的加速方法、装置、电子设备
TWI764454B (zh) 韌體損壞恢復技術
WO2017219482A1 (zh) 启动方法和装置
TWI461905B (zh) 可遠端當機復原的運算裝置、用於運算裝置之遠端當機復原之方法及電腦可讀取媒體
CN112698870A (zh) 开关机管理方法、计算设备及存储介质

Legal Events

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

Payment date: 20191202

Year of fee payment: 4