KR20080052625A - 오프 상태로부터의 운영 체제의 고속 부팅 - Google Patents

오프 상태로부터의 운영 체제의 고속 부팅 Download PDF

Info

Publication number
KR20080052625A
KR20080052625A KR1020087007752A KR20087007752A KR20080052625A KR 20080052625 A KR20080052625 A KR 20080052625A KR 1020087007752 A KR1020087007752 A KR 1020087007752A KR 20087007752 A KR20087007752 A KR 20087007752A KR 20080052625 A KR20080052625 A KR 20080052625A
Authority
KR
South Korea
Prior art keywords
static data
system component
code
providing
boot
Prior art date
Application number
KR1020087007752A
Other languages
English (en)
Other versions
KR101292429B1 (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 KR20080052625A publication Critical patent/KR20080052625A/ko
Application granted granted Critical
Publication of KR101292429B1 publication Critical patent/KR101292429B1/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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control

Abstract

일반적으로 시스템 컴포넌트를 위한 정적 데이터 및/또는 코드를 지속시키고, 나아가 후속 장치 부팅시 정적 데이터 및/또는 코드에 대한 액세스를 시스템 컴포넌트에 제공함으로써 동작하는 고속 부팅 메커니즘이 설명된다. 예컨대, 하나 이상의 컴포넌트의 정적 데이터 및/또는 코드는 비휘발성 메모리로부터 휘발성 메모리로 복원될 수 있고, 그에 따라 후속 재부팅에서는 컴포넌트가 지속된 정적 데이터를 재계산할 필요가 없으므로, 후속 재부팅이 좀더 빨라진다. 고속 부팅 하부 구조는 인터페이스 집합을 포함할 수 있고, 시스템 컴포넌트를 위한 정적 데이터 및/또는 코드를 지속시키는 제1 메커니즘, 그리고 정적 데이터 및/또는 코드에 대한 액세스를 시스템 컴포넌트에 제공하는 제2 메커니즘을 제공한다. 고속 부팅 하부 구조는 또한 시스템 컴포넌트로부터 정적 데이터 및/또는 코드를 수집하는 백그라운드 메커니즘과 함께, 정적 데이터 및/또는 코드를 무효화하기 위한 수단을 컴포넌트에 제공할 수 있다.
Figure P1020087007752
부팅, 고속 부팅, 운영 체제 재개, ACPI, 최대 절전, 대기 절전

Description

오프 상태로부터의 운영 체제의 고속 부팅{FAST BOOTING AN OPERATING SYSTEM FROM AN OFF STATE}
본 발명은 운영 체제의 부팅 속도를 빠르게 하는 방법에 관한 것이며, 좀더 구체적으로는 오프 상태로부터의 운영 체제의 고속 부팅을 가능하게 하는 방법에 관한 것이다.
모바일 장치가 대중화됨에 따라, 좀더 긴 배터리 수명 및 즉각적인 액세스 가능성에 대한 요구가 늘어나고 있다. 마이크로소프트 윈도우즈® 기반의 운영 체제와 같은 전면적인 운영 체제(full operating system)의 복잡성으로 인하여, 이러한 요구를 충족시키는 것은 상당히 어려운 일이다. 예컨대, 일반적인 모바일 퍼스널 컴퓨터는 (ACPI 표준에 따른 S5 상태에 대응하는 것과 같은) 오프 상태로부터 대략 20초 내지 40초 내에 부팅되므로, 이것은 분명히 즉시 액세스 가능한 장치라고 여겨지지 않는다.
컴퓨터 시스템을 좀더 신속하게 동작 상태로 되돌리기 위하여 각종 메커니즘들이 시도되어 왔다. 예컨대, 시스템 상태를 시스템 메모리에 필수적으로 대기시키는 ACPI S3/대기 절전 상태(ACPI S3/Stanby sleep state)가 정의되었고, 그에 따르면 적당한 인스턴트-온 성능이 달성된다. 그러나, S3 상태는 배터리 전원을 소 비하는데, 이는 다수의 사용자들 및 장치 제조업자들의 걱정하는 문제로서, 적어도 그러한 이유에 있어서는 S3 상태의 이용이 다수의 사용자들에게 불충분한 해결책이 된다. 또한, 중요 재개 코드 경로(critical resume code path)의 일부일 수 있고, 각종 개발원들로부터 제공되는 각종 드라이버들 및 서비스들로 인하여, S3 상태가 시간이 경과함에 따라 열화될 수 있다는 것도 일부 사용자들 및 제조업자들이 걱정하는 문제이다.
또한, S4/최대 절전 상태(S4/hibernate sleep state)가 정의되는데, 이는 일반적으로 시스템 메모리에서 하드 디스크 파일로 전송하여 시스템이 조금 더 신속하게 절전 해제(wake)될 수 있게 하고, 나아가 정전에 대비해 데이터를 보존한다. S4 절전 상태는 전력을 전혀 소비하지 않는다는 이점을 가지지만, S3 상태에 대해 제기되는 것과 동일한 안정성 문제 및 잠재적인 데이터 손실 문제를 공통으로 갖는다. 나아가, S4 재개에는 여전히 평균 15초 정도가 소요되므로, 역시 "인스턴스-온" 해결책으로 생각되기에는 불충분하다.
배터리로 전원을 공급받지 않는 데스크톱 컴퓨터 시스템에서조차, 신속한 파워-온 경험은 매우 인기 있는 요구사항이 되어 가고 있다. 예컨대, 다수의 컴퓨터 시스템, 특히 홈 컴퓨터 시스템이 엔터테인먼트를 제공하는 것으로 진화해 감에 따라, 경쟁적인 컴퓨터 및 가전제품 시장에서 컴퓨팅 제품을 판매하기 위해서는 컴퓨팅 장치를 좀더 가전제품처럼 동작시킬 필요가 커졌다. 예컨대, 일반적인 가전제품은, 전술한 것처럼 지루한 부팅 시퀀스를 위해 24초가 소요되는 것이 아니라, 몇 초 내에 작동되어 기능을 하게 된다.
일반적으로, 컴퓨터 시스템에 있어서 완전한 오프 상태로부터의 좀더 빠른 부팅은 바람직하다. 이들 절전 상태들은 사용자가 겪는 일부 상황들에서 중요한 시스템 상태들을 보존하기 때문에, 이러한 고속 부팅은 (예컨대, S3 및 S4와 같은) 기타 유형의 재개 동작들로부터 독립적이면서, 그것들을 보충하는 것이어야 한다.
간단히 말하면, 본 발명의 다양한 특징은, 통상 시스템 컴포넌트에 대한 정적 데이터를 지속시키고, 나아가 후속 장치 부팅시 정적 데이터에 대한 액세스를 시스템 컴포넌트에 제공함으로써 동작하는 고속 부팅 메커니즘(fast boot mechanism)으로 이어진다. 예컨대, 설정 또는 설치 후에, 하나 이상의 컴포넌트의 정적 데이터를 포함하고, 그것의 코드도 포함할 수 있는 고속 부팅 이미지가 비휘발성 메모리로부터 (예컨대, RAM과 같은) 휘발성 메모리로 복원될 수 있다. 예컨대, 부팅 코드 경로를 비휘발성 메모리로 설정하는 것은 회전식 매체의 상대적으로 느린 스핀-업 시간을 회피하는 이점이 있는데, 예컨대, 일반적인 하드 디스크의 스핀-업 시간(spin-up time)은 대략 5초 정도일 수 있다. 후속 재부팅시, 정적 데이터를 지속시켰던 각 시스템 컴포넌트에 그것의 해당 정적 데이터에 대한 액세스가 제공되며, 그에 따라 다수의 데이터가 각 부팅 중에 재계산될 필요가 없으므로 후속 재부팅이 좀더 빨라진다.
제1 시점에 시스템 컴포넌트에 대한 정적 데이터 및/또는 코드를 지속시키는 제1 메커니즘, 그리고 시스템 장치의 부팅 중이며 제1 시점 이후인 제2 시점에 정적 데이터에 대한 액세스를 시스템 컴포넌트에 제공하는 제2 메커니즘을 포함하는 고속 부팅 하부 구조(fast boot infrastructure)가 예시된다. 고속 부팅 하부 구조는 시스템 컴포넌트(클라이언트)가 정적 데이터 및/또는 코드를 지속시키고, 정적 데이터에 대한 액세스를 획득하며, (예컨대, 변경시) 정적 데이터를 무효화하도록 하기 위한 인터페이스 집합을 포함한다. 또한, 고속 부팅 하부 구조는, 시스템 부팅을 뒤따르는 것과 같은, 시스템 컴포넌트로부터 정적 데이터 및/또는 코드를 수집하는 백그라운드 메커니즘을 채용할 수 있다.
다른 이점들은 도면을 함께 참조할 때 이하의 상세한 설명으로부터 명백해질 것이다.
본 발명은 예시를 위하여 도시된 것이고, 첨부된 도면으로 한정되지 않으며, 첨부된 도면에서는 동일한 요소는 동일한 참조 번호로 지칭된다.
도 1은 본 발명의 다양한 특징이 구체화될 수 있는 범용 컴퓨팅 환경의 설명적인 예를 도시하는 도면.
도 2는, 예컨대, 시스템 컴포넌트 설정 중에, 정적 데이터를 지속시키기 위한 예시적인 아키텍처를 도시하는 블록도.
도 3은, 예컨대, 부팅 동작 중에, 시스템 컴포넌트에 그것의 정적 데이터에 대한 액세스를 제공하기 위한 예시적인 아키텍처를 도시하는 블록도.
도 4a 및 4b는 변경시 컴포넌트의 정적 데이터를 무효화하기 위한 예시적인 아키텍처, 및 변경에 따라 정적 데이터를 변경하기 위한 예시적인 아키텍처를 각각 도시하는 블록도.
도 5는 백그라운드 동작 중에 시스템 컴포넌트의 정적 데이터를 획득하기 위한 예시적인 아키텍처를 도시하는 블록도.
도 6은 하드 디스크 또는 NVRAM으로부터의 예시적인 고속 부팅 프로세스를 도시하는 블록도.
예시적인 운영 환경
도 1은 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 일례를 도시한다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 용도 또는 기능성의 범위에 대한 어떤 제한을 제안하는 것으로 의도된 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성이나 요구사항을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 본 발명에서 사용하는 데 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로서, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 태블릿 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
본 발명은 일반적으로 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 연결되는 원격 처리 장치들에 의해 작업이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 비롯한 로컬 및/또는 원격 컴퓨터 저장 매체에 위치할 수 있다.
도 1과 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함할 수 있지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standard Association) 로컬 버스, 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(Peripheral Component Interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함하지만, 이에 제한되는 것은 아니다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 범위 내에 포함되는 것으로 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에, 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)가 즉시 액세스 할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장매체를 포함한다. 단지 예로서, 도 1은 비이동식·비휘발성 자기 매체에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(141), 이동식·비휘발성 자기 디스크(152)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(151), CD-ROM 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(156)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태(solid state) RAM, 고체 상태 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 1에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터(110)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터를 저장한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 이들 컴포넌트가 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일하거나 그와 다를 수 있다는 것을 유의하여야 한다. 이에 관해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 부여되어 있다는 것은 적어도 이들이 다른 사본(copy)이라는 것을 나타내기 위한 것이다. 사용자는 태블릿 또는 전자 디지타이저(electronic digitizer)(164), 키보드(162), 마이크(163), 일반적으로 마우스, 트랙볼(trackball) 또는 터치 패드로 지칭되는 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 도 1에 도시되지 않은 다른 입력 장치로서, 조이스틱, 게임 패드, 위성 접시, 스캐너 등이 포함될 수 있다. 이들 및 기타 입력 장치는 주로 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 또한, 모니터(191) 또는 다른 유형의 디스플레이 장치가 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터(191)는 또한 터치 스크린 패널 등과 통합될 수도 있다. 모니터 및/또는 터치 스크린 패널이 컴퓨팅 장치(110)가 내장되는 하우징에 물리적으로 결합될 수 있다는 것을 유의하여야 한다. 그 외에도, 컴퓨팅 장치(110)와 같은 컴퓨터는 스피커(195) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(194)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 도 1에는 메모리 저장 장치(181)만이 도시되었지만, 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 1에 도시된 논리적 접속은 로컬 영역 네트워크(LAN)(171) 및 광대역 네트워크(WAN)(173)를 포함하지만, 기타 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173)을 통하여 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속된다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 1은 원격 애플리케이션 프로그램(185)이 메모리 장치(181)에 상주하는 것으로 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것이 인정될 것이다.
고속 부팅
본 명세서에 설명된 본 기술의 다양한 특징들은 컴퓨팅 장치를 신속하게 재부팅시키는 것을 비롯하여, 컴퓨팅 장치를 오프 상태로부터 신속하게 부팅시키는 기술로 이어진다. 예시적인 일 실시예에서, 본 기술의 일부는 고체 상태 비휘발성 RAM 저장 장치로부터 데이터를 판독하는 것으로서, 특히 디스크가 오프 상태로부터 스핀 업되어야 하는 경우, 디스크로부터 데이터를 추출하는 것보다 빠르다. 그러나, 이해하게 될 것처럼, 본 명세서에 설명되는 고속 부팅 기술은 또한 하드 디스크로부터의 (현재 부팅 시간에 비하여) 훨씬 더 신속한 부팅 경험도 일반적으로 제공할 것이다. 본 명세서에 언급된 모든 예들은 본 발명을 제한하는 것이 아니며, 본 발명은 일반적으로 컴퓨팅에 이득 및 이점을 제공하는 다양한 방식으로 사용될 수 있다.
통상적으로, 컴퓨팅 머신은 전면적인 운영 체제의 부팅시마다 다수의 동일한 초기화들을 계속 반복하여 수행한다. 반복되는 이러한 초기화들 중 일부는 상대적으로 시간을 낭비하는 것일 수 있다. 본 명세서에 설명되는 고속 부팅 메커니즘은, 예컨대, 컴퓨팅 머신의 초기 설정 중에 초기화 중 적어도 일부를 행하고 나서 도출된 초기화된 상태를 비휘발성 형태로 지속시킴으로써 시간을 낭비하는 이러한 초기화 개수를 감소시키려는 것이다. 후속 부팅시 매번 다시 연산하는 대신 지속된 상태를 신속하게 복원함으로써 부팅 시간 중 많은 부분이 제거된다.
부팅 중에 사용되는 컴포넌트는 동적 데이터 및 정적 데이터 모두를 구비하는데, 본 명세서에서 사용되는 "정적"은 데이터가 보통은 부팅시마다 변경되지 않지만, 때때로 변경될 수도 있음을 의미하는 것임을 유의하여야 한다. 용이하게 이해할 수 있는 바와 같이, 동적인 상태 데이터를 포착하여(capture) 복원시키게 되면 시스템에 오류를 일으킬 수 있다. 예컨대, 파일 시스템은 클러스터 비트맵과 같은 메타데이터를 포함한다. 시스템이 부팅되어 사용됨에 따라, 신규 파일이 생성되고 구 파일은 삭제되므로, 미리 포착된 클러스터 비트맵은 현재 상태로서는 부정확한 것이다.
일반적으로, 본 명세서에서 설명되는 고속 부팅 기술은 부팅시 컴포넌트가 그것의 정적 데이터를 보존하여 복원하도록 하면서, 그것의 동적 데이터는 종래와 같이 계산하도록 한다. 개별 컴포넌트는 그것의 정적 및 동적 상태가 무엇인지 알고 있기 때문에, 컴포넌트는 고속 부팅 절차 중에 그것의 정적 상태를 식별하여 그 정적 상태 데이터만을 복원하면서, 동적 상태 데이터에 대한 동적 초기화 / 계산을 수행할 수 있다. 이러한 방식으로, 저속 부팅 시퀀스 중에 나타나는 반복적인 초기화 중의 다수가 제거된다.
일부 컴포넌트는 정적 데이터를 식별 및/또는 보존하도록 작성되지 않은 레거시 컴포넌트이거나, 다른 이유로 주어진 고속 부팅 방안에 참여하지 않기로 결정한 것일 수 있다. 참여 및 비참여 컴포넌트들이 혼재될 수 있게 하기 위하여, 고 속 부팅을 인지하는 컴포넌트만 API를 호출하여 참여하고, 비참여 레거시 컴포넌트 등은 제공된 기능성을 무시하게 하는 API 메커니즘이 제공된다.
또한, 컴포넌트들이 상호의존성을 가질 수 있으므로, 다수의 통로로 초기화가 일어날 수 있고, 이러한 다중 페이즈식(multi-phase) 초기화는 윈도우즈® 기반 운영 체제에 이미 구성되어 있다. 예컨대, NT 커널에서 (객체, 보안, 프로세스, PnP, 실행, 커널, 메모리 관리, 레지스트리 등의) 각종 커널 컴포넌트는 상이한 초기화 페이즈에서 호출되는 초기화 진입 지점들을 가진다. 각 초기화 페이즈에서, 컴포넌트는 이전 페이즈에서의 다른 컴포넌트의 초기화에 대한 의존성에 따라 무엇을 초기화할지 결정한다.
고속 부팅에 참여하기 위하여, 각각의 초기화 페이즈에서, 컴포넌트는 그것의 초기화들 중 어느 것이 시간이 걸릴지, 및/또는 그 초기화 작업이 한번에 행해질 수 있는지를 결정하여 그 결과를 저장한다. 신규 컴포넌트 설치시, 또는 컴퓨터 운영 체제와 그 컴포넌트의 최초 설정시와 같은 다양한 시점에 이러한 정보가 고속 부팅 하부 구조에 제공될 수 있다. 그 때문에, 장치 설치자 등은 고속 부팅 상태 정보를 위하여 커널 컴포넌트를 계산하고, 메모리 관리자/파일 시스템 컴포넌트를 호출하여 비휘발성 형태로 상태 정보를 저장한다.
예컨대, 도 2에 일반적으로 도시된 바처럼, 각 커널 컴포넌트(예컨대, 2021)는 운영 체제 설정이 끝날 때 고속 부팅 하부 구조(206)의 (장치 설치자를 포함하거나, 그것과 연관된) 설정 컴포넌트(204)에 의해 호출된다. 일 구현에서, 호출은 진입 지점(또는 지점들)을 식별하는 데이터(208)를 갖는 컴포넌트(2021)를, 예컨대 애플리케이션 프로그램 인터페이스(API)와 같은 API 라이브러리(210)에 제공한다. 진입 지점을 통하여, 컴포넌트(2021)는 저장될 수 있는 코드 및 정적 상태를 포함하는 메모리 위치를 지정할 수 있고, 그에 따라 후속 부팅 세션에 그 메모리 위치가 복원될 수 있다. 또는, 컴포넌트(2021)가 그러한 호출에 응답하여 (예컨대, 컴포넌트(2021)가 이해하는 데이터 구조의) 데이터를 직접 제공할 수 있다. 메모리 위치 및/또는 코드 또는 데이터 그 자체는 (전송시) 2121, 그리고 (지속시) 2141로 이름 붙여진 "정적 데이터" 블록으로 도 2에 도시되어 있다. 고속 부팅 이미지를 포함하는 정적 코드 및/또는 데이터(2141)는 NVRAM과 같은 일부 비휘발성 저장 장치(216)에 유지되거나, 또는 하드 디스크와 같은 또 다른 유형의 저장 매체에 전체적 또는 부분적으로 유지될 수도 있다.
이러한 데이터가 지속되고 나면, 후속 부팅시 각 커널 컴포넌트가 초기화를 위하여 호출될 때, 예컨대 상이한 페이즈에서, 컴포넌트가 (데이터 그 자체 또는) 메모리 위치를 사용할 수 있게 된다. 그 결과, 시간을 낭비하는 각각의 참여 컴포넌트의 초기화 중의 적어도 일정 부분을 건너뛸 수 있다. 비참여 컴포넌트의 경우, 종래의 초기화를 건너뛸 수 없어서 그 컴포넌트에 대해 일반 저속 부팅에서와 마찬가지로 많은 시간이 걸릴 것임을 유의하여야 한다.
일 구현에서, 커널 컴포넌트를 위한 신규 인터페이스 및 각종 컴포넌트의 일 부 신규 지원 하부 구조가 제공된다. 한 커널 컴포넌트 인터페이스가 제공되어, 각 커널 컴포넌트가 코드 및/또는 데이터를 포함하는 메모리 블록의 목록을 (또는 코드/데이터 그 자체를) 반환할 수 있도록 호출될 수 있게 한다. 이 메모리 블록은 비휘발성 저장 장치(216)에 저장될 것이고, 현대 컴퓨팅 장치의 하드디스크 또는 또는 향후의 컴퓨팅 장치의 NVRAM 저장 장치 등에 고속 부팅 상태 이미지 파일을 포함할 수 있다.
고속 부팅 상태 이미지를 생성하기 위하여, 정적 데이터를 지속시키기 위한 이러한 인터페이스가 운영 체제 설정 프로그램에 의해 개시되는 것과 같은 장치 설치자에 의하여 호출될 수 있다. 인터페이스는 또한 신규 컴포넌트가 설치될 때마다 호출될 수 있다. 후속 고속 부팅의 부팅 시간을 향상시키기 위하여 어떤 데이터가 저장되어야 할지를 결정하는 것은 각각의 참여 컴포넌트의 책임이다. 예컨대, 개발 중에, 각 참여 컴포넌트는 그것의 초기화 코드 경로에 대해 코드 프로파일링을 수행하여 부팅의 병목 지점을 식별할 수 있다.
또 다른 인터페이스가 제공되어, 예컨대 페이즈별로, 그 컴포넌트가 지속시킬 것을 요청한 메모리 블록의 목록을 컴포넌트가 수신하게 하도록 제공된다. 예컨대, 이 인터페이스는 윈도우즈® 기반 운영 체제에 이미 공개된 현존하는 페이즈 초기화 인터페이스의 수정판에 대응하는 것일 수 있다. 정적 상태 데이터를 추출하는 기능은 컴포넌트가 시간을 낭비하는 그것의 초기화의 일부분을 건너뛸 수 있게 한다. 또한, 지원 인터페이스가 제공되므로, 컴포넌트가 고속 부팅이 진행 중인지 여부를 알아낼 수 있다. 이 인터페이스는 저장된 고속 부팅 상태 정보로부터 캐싱된(cached) 정보를 사용해야 할 때와 사용하지 말아야 할 때를 컴포넌트가 알 수 있도록 제공된다. 나아가, 메모리 관리자 컴포넌트와 같은 커널 컴포넌트는 고속 부팅 상태 메모리 블록의 식별 및/또는 저장을 가능하게 하는 신규 유틸리티 API를 내보낼 수 있고, 기타 컴포넌트도 그것이 가능할 수 있다. 예컨대, 현존하는 메모리 할당 API는 고속 부팅 상태 정보를 포함하는 메모리 할당에 태그를 붙일 수 있도록 확장될 수 있다.
도 3은 비휘발성 저장 장치의 지속된 데이터가 후속 고속 부팅 동작에 사용되는 일례를 도시한다. 일반적으로, 참여 컴포넌트가 고속 부팅 중에 호출되면, 컴포넌트는 (예컨대, 하드 디스크 부팅을 위한 로더 컴포넌트(319) 또는 NVRAM 부팅을 위한 BIOS에 의하여 메모리에 설정되는) 고속 부팅 플래그(318)를 인식한다. 나아가, 컴포넌트(예컨대, 2021)는 고속 부팅 하부 구조(206)의 API 라이브러리를 호출하여 현재 부팅 페이즈를 위해 미리 캐싱된 그것의 상태 데이터를 수신한다. 컴포넌트가 실제로는 압축 해제된 정적 데이터에 대한 포인터, 그렇지 않으면 비휘발성 저장 장치(216)로부터 RAM(132)으로 전송된 정적 데이터에 대한 포인터를 수신할 수 있음을 유의하여야 한다. 예컨대, 컴포넌트의 각종 정적 데이터의 일부 또는 전부가 고속 부팅 이미지로서 저장될 수 있고, 압축 해제되거나, 그렇지 않으면 시동시 RAM(132)으로 전송되어, API 호출을 통한 그것에 대한 액세스가 각 컴포넌트에 제공된다.
각 컴포넌트(예컨대 2021 내지 202n)가, 예컨대 페이즈마다 한 번씩, 차례로 호출되고, 참여하는 컴포넌트는 그것의 정적 데이터에 대한 액세스를 추출하고, 그것의 동적 데이터를 계산할 수 있다. 비휘발성 저장 장치(216)로부터의 추출시 컴포넌트(2021)에 의하여 RAM(132)에서 액세스되고 있는 컴포넌트(2021)의 제1 페이즈를 위한 데이터(3141)를 통하여, 이것이 도 3에 일반적으로 도시되어 있다. 고속 부팅 하부 구조 코드(320)는 API 라이브러리(210)의 호출시 추출을 처리할 것이다. 고속 부팅-인지 컴포넌트는 "이 페이즈에는 데이터 불필요"등의 반응을 반환할 수 있지만, 고속 부팅 방안에 참여하지 않는 컴포넌트(예컨대, 레거시)는 콜백되지 않을 것이고 특정 페이즈를 위해 데이터를 캐싱하지 않는 컴포넌트일 것이다.
도 4a를 참조하면, API 라이브러리(210)의 또 다른 예시적인 인터페이스가 제공되어, 그에 의해 컴포넌트(예컨대, 2021)가 그것의 (통상적으로) 정적인 상태가 변경되었기 때문에 그것의 저장된 상태 이미지의 일부 또는 전부가 무효화되었음을 고속 부팅 하부 구조 코드(206)에 알릴 수 있다. 예컨대, 사용자는 제어판 및/또는 레지스트리 상호작용을 통하여 컴포넌트의 일반적으로 정적인 데이터를 변경할 수 있다. 컴포넌트(2021)는 그것의 데이터에 대한 변경을 감지하는 것을 책임진다. 일 구현에서, 무효화된 데이터(430)는 반환되지 않을 것이며, 그에 따라 컴포넌트(2021)는 후속 부팅시 저속 부팅 동작과 마찬가지로 동적 데이터뿐만 아니라 정적 데이터도 계산하여 유효한 데이터를 다시 캐싱하여야 할 것이다.
또는, 도 4b에 전송 중인 신규 정적 데이터(4461) 및 지속 중인 신규 정적 데이터(4481)에 의해 도시된 바처럼, 캐싱된 고속 부팅 데이터의 무효화는 사일런트/백그라운드 쓰레드(560)를 통한 것과 같은 상태 재포착 동작을 개시할 수 있고, 예컨대, 이것은 상기 기술된 것과 같은 운영 체제 설정 프로세스에 의해 수행되는 상태 포착과 유사하게 동작할 수 있다. 어떤 대안에서도, 통상 정적인 데이터에 대한 변경이 발생하면 미리 캐싱된 상태 데이터 중 적어도 변경된 부분은 더 이상 사용되지 않을 것이다.
도 5에 일반적으로 도시된 이러한 백그라운드 동작은 컴포넌트가 변경을 감지한 때만 실행되어야 하는 것은 아니며, 다른 시점에도 실행될 수 있다. 예컨대, 현재 부팅 시간 중 일부는 사용자에 의하여 추가되었을 수 있는 장치를 검색하기 위한 시간 지연으로 인한 것이고, 쿼리시 (2개의 IDE 채널을 갖는 컴퓨터라면 1개 내지 4개가 설치될 수 있을) 각각의 이러한 장치의 응답에 대해 1초 정도가 부여된다. 그러나, 내장식 드라이브는 통상 추가되거나 제거되지 않고, 따라서 부팅 중에 각 드라이브에 응답할 기회를 부여하는 대신에, 모든 변경을 후속 백그라운드 동작(560)에 의하여 감지할 수 있다.
또한, 컴포넌트가 적절하게 작성되지 않아 그것의 정적 데이터의 변경을 정확하게 감지하지 못할 가능성이 있다. 각 컴포넌트가 그것의 정적 데이터를 재계산할 것을 (예컨대, 무작위로 또는 순환 순서 방식(round-robin basis)으로) 종종 요청하는 백그라운드 쓰레드 / 프로세스(560)(도 5)가 사용되어 간과된 변경으로 인한 데이터 오류를 제거할 수 있다. 나아가, 컴포넌트들 모두 또는 그것들 중 임 의의 것이 고속-부팅 대신 전면적인 저속-부팅 계산을 종종 필요로 할 수 있으며, 예컨대, 변경된 데이터에 대한 컴포넌트의 무효화 실패로 인한 정적 데이터 오류가 의심된다면, 사용자 또는 (유틸리티와 같은) 기타 메커니즘은 저속 부팅을 요청할 수 있다.
상기 기술된 바와 같이, 고속-부팅 상태 정보는 NVRAM과 같은 어떤 형태의 고체 상태 비휘발성 저장 장치에 저장될 수도 있다. 이러한 장치를 위하여, 새롭게 표준화된 BIOS 인터페이스가 확립되어, 예컨대 운영 체제가 제어하기 전에, BIOS가 요구되는 임의의 고속-부팅 상태 정보를 NVRAM으로부터 주 메모리로 어떻게 추출할 것인지를 특정할 수 있다.
도 6은 고속 부팅 상태 이미지를 하드 드라이브 상의 파일로 저장시키는 시스템, 및 고속 부팅 상태 이미지를 NVRAM에 저장시키는 신규 시스템 사이의 예시적인 코드 경로의 차이점을 도시한다. 컴퓨팅 장치(예컨대, 그것의 BIOS)가 NVRAM 또는 디스크 중 어느 것으로부터 부팅될 것인지를 인지하고 있을 것임을 유의하여야 한다.
단계(602)는, 예컨대 NTLDR과 같은 로더 프로세스를 로딩하고 실행함으로서 시작되는 하드 디스크 부팅을 나타낸다. 로더는 단계(604)에서 유효한 최대 절전 파일(hibernation file)을 확인하고, 존재하는 경우 최대 절전(ACPI S4 절전 상태)으로부터 재개된다. 존재하지 않는 경우, 로더는 단계(608)로 진행하여 지속된 고속 부팅 이미지의 존재를 확인한다.
단계(608)에서 발견되지 않은 경우, 시스템은 (통상의 장기) 저속 부팅을 수 행할 것이다. 상기 기술된 바처럼, 백그라운드 동작에서 참여 컴포넌트로부터 고속 부팅 정보를 획득함으로써 차회에는 고속 부팅하는 것도 가능함을 유의하여야 한다. 예컨대, 고속 부팅 이미지가 어떤 이유로 삭제되었다면 이러한 일이 발생할 수 있다.
이와 달리, 단계(608)에서 부트 로더 프로세스가 고속 부팅 이미지를 검색하여 발견한 경우, 예컨대, BIOS 호출을 사용하여 이미지를 메모리로 로드함으로써 고속 부팅 상태 정보를 복원한다.
단계(614)는 이미지를 RAM(132)에서의 최종 위치로 압축 해제하는 단계(그렇지 않으면 전송하는 단계)를 나타낸다. 단계(612 및 614)에서, 지속성 저장 장치의 적어도 일부로서 NVRAM을 가질 미래의 머신을 위하여, BIOS가 단계들(602 내지 610)을 거치지 않고 로딩을 수행하도록 동작함을 유의하여야 한다. 나아가, 단계(616)에서, 도 3을 참조하여 일반적으로 상기 기술된 바처럼, 고속 부팅 코드(예컨대, 디스패처)가 각 시스템 컴포넌트를 호출하여 초기화한다.
이론적으로, 고속 부팅 상태 이미지가 NVRAM에 저장되고, 커널 컴포넌트 대부분 또는 모두가 참여하는 경우, 오프 상태로부터의 고속 부팅 시간은 S3 재개 시간(통상적으로 NVRAM으로부터 이미지를 복원하는 시간, S3 재개 시간, 및 부가적인 동적 상태 초기화 시간을 더한 시간)에 근접할 수 있다. 현존하는 기술로, (전체 내용을 RAM으로 추출하는데 1초 이하가 소요되는, PCI 버스 상에 직접 연결된 64MB의 NVRAM을 가정할 경우) 이것은 5초 정도가 될 수 있다.
본 발명은 각종 수정 및 대안적인 구성을 수용할 수 있지만, 본 발명의 도시 된 특정 실시예를 도면에 도시하고 지금까지 상세하게 설명하였다. 그러나, 개시된 특정 형태로 본 발명을 제한할 의도는 없으며, 오히려 반대로, 본 발명의 사상 및 범위 내에 속하는 모든 수정, 대안적인 구성, 및 균등물을 포함하는 것을 의도한 것임을 이해하여야 한다.

Claims (20)

  1. 컴퓨터 실행가능 명령어를 구비하는 적어도 하나의 유체적인(tangible) 컴퓨터 판독가능 매체로서, 상기 컴퓨터 실행가능 명령어는 컴퓨팅 장치 상에서 실행될 때,
    시스템 컴포넌트를 위한 정적 데이터 및/또는 코드를 유지하는 단계; 및
    장치 부팅 중에 상기 정적 데이터 및/또는 코드에 대한 액세스를 상기 시스템 컴포넌트에 제공하는 단계
    를 포함하는 단계들을 수행하는, 컴퓨터 판독가능 매체.
  2. 제1항에 있어서,
    상기 정적 데이터 및/또는 코드에 대한 액세스를 상기 시스템 컴포넌트에 제공하는 단계는 고속 부팅 하부 구조(fast boot infrastructure)의 애플리케이션 프로그램 인터페이스 집합에 대한 진입 지점을 상기 시스템 컴포넌트에 제공하는 단계를 포함하는, 컴퓨터 판독가능 매체.
  3. 제1항에 있어서,
    상기 정적 데이터 및/또는 코드는 고체 상태 메모리(solid-state memory)의 이미지 내에 유지되는, 컴퓨터 판독가능 매체.
  4. 제1항에 있어서,
    상기 정적 데이터 및/또는 코드는 하드 디스크 드라이브 상의 이미지 내에 유지되는, 컴퓨터 판독가능 매체.
  5. 제1항에 있어서,
    상기 정적 데이터 및/또는 코드에 대한 액세스를 상기 시스템 컴포넌트에 제공하는 단계는 상기 장치 부팅 중에 초기화를 위하여 상기 시스템 컴포넌트를 호출하는 단계를 포함하는, 컴퓨터 판독가능 매체.
  6. 제5항에 있어서,
    상기 정적 데이터 및/또는 코드에 대한 액세스를 상기 시스템 컴포넌트에 제공하는 단계는 복수의 부팅 페이즈(boot phase) 중의 적어도 2개의 페이즈 동안 상기 시스템 컴포넌트를 호출하는 단계를 포함하는, 컴퓨터 판독가능 매체.
  7. 제1항에 있어서,
    고속 부팅 하부 구조에서 상기 시스템 컴포넌트로부터의 호출을 수신하는 단계를 수행하기 위한 컴퓨터 실행가능 명령어를 더 구비하고, 상기 호출은 후속 부팅에서 지속적으로 사용할 수 있도록 상기 정적 데이터 및/또는 코드에 대한 액세스를 상기 고속 부팅 하부 구조에 제공하는, 컴퓨터 판독가능 매체.
  8. 제1항에 있어서,
    고속 부팅 하부 구조에서 상기 시스템 컴포넌트로부터의 호출을 수신하는 단계를 포함하는 컴퓨터 실행가능 명령어를 더 구비하고, 상기 호출은 현재 상태의 상기 정적 데이터가 후속 부팅에서 사용되지 않도록 상기 정적 데이터를 무효화시키는 것에 대응하는, 컴퓨터 판독가능 매체.
  9. 제1항에 있어서,
    후속 부팅에서 지속적으로 사용할 수 있도록 상기 정적 데이터 및/또는 코드에 대한 액세스를 상기 고속 부팅 하부 구조에 제공하기 위해 백그라운드 동작에서 상기 시스템 컴포넌트와 통신하는 단계를 수행하기 위한 컴퓨터 실행가능 명령어를 더 구비하는 컴퓨터 판독가능 매체.
  10. 컴퓨터 시스템 상에 구현되는 방법으로서,
    시스템 컴포넌트의 초기화를 포함하여, 오프 상태로부터 컴퓨팅 장치를 부팅시키는 단계; 및
    상기 시스템 컴포넌트의 초기화의 일부로서, 상기 시스템 컴포넌트를 위하여 이전부터 지속되어 온 정적 데이터 및/또는 코드에 대한 액세스를 상기 시스템 컴포넌트에 제공하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 시스템 컴포넌트를 위하여 이전부터 지속되어 온 상기 정적 데이터 및/또는 코드는 설치 동작 동안 지속되어 온 것인, 방법.
  12. 제10항에 있어서,
    상기 시스템 컴포넌트의 초기화의 일부로서, 상기 시스템 컴포넌트의 동적 데이터를 계산하는 단계를 더 포함하는, 방법.
  13. 제10항에 있어서,
    상기 정적 데이터 및/또는 코드에 대한 액세스를 상기 시스템 컴포넌트에 제공하는 단계는 비휘발성 저장 장치로부터 휘발성 메모리로 상기 정적 데이터 및/또는 코드를 전송하는 단계를 포함하는, 방법.
  14. 제10항에 있어서,
    상기 정적 데이터 및/또는 코드에 대한 액세스를 상기 시스템 컴포넌트에 제공하는 단계는 고속 부팅 하부 구조의 애플리케이션 프로그램 인터페이스 집합에 대한 진입 지점을 상기 시스템 컴포넌트에 제공하는 단계, 및 고속 부팅 동작을 나타내는 플래그를 설정하는 단계를 포함하는, 방법.
  15. 제10항에 있어서,
    상기 정적 데이터 및/또는 코드에 대한 액세스를 상기 시스템 컴포넌트에 제공하는 단계는 복수의 부팅 페이즈 중의 적어도 2개의 페이즈 동안 상기 시스템 컴포넌트를 호출하는 단계를 포함하는, 방법.
  16. 컴퓨팅 장치 내의 시스템으로서,
    제1 시점에서의 시스템 컴포넌트에 대한 정적 데이터 및/또는 코드를 지속시키는 제1 메커니즘; 및
    상기 시스템 장치의 부팅 동안 및 상기 제1 시점 이후인 제2 시점에서 상기 정적 데이터 및/또는 코드에 대한 액세스를 상기 시스템 컴포넌트에 제공하는 제2 메커니즘
    을 구비하는 고속 부팅 하부 구조를 포함하는 시스템.
  17. 제16항에 있어서,
    상기 제1 메커니즘은 상기 정적 데이터 및/또는 코드를 지속시키기 위한 인터페이스 집합을 상기 시스템 컴포넌트에 제공하는 단계를 포함하여 상기 시스템 컴포넌트를 등록하는 설정 컴포넌트를 포함하는, 시스템.
  18. 제17항에 있어서,
    상기 제2 메커니즘은 상기 인터페이스 집합 중의 하나의 인터페이스를 통하여 상기 시스템 컴포넌트와 통신하는 코드를 포함하는, 시스템.
  19. 제17항에 있어서,
    상기 고속 부팅 하부 구조는 상기 정적 데이터를 무효화하기 위한 제3 메커니즘을 포함하는, 시스템.
  20. 제17항에 있어서,
    상기 고속 부팅 하부 구조는 상기 시스템 컴포넌트로부터의 정적 데이터 및/또는 코드를 수집하기 위한 백그라운드 메커니즘을 포함하는, 시스템.
KR1020087007752A 2005-10-06 2006-10-03 오프 상태로부터의 운영 체제의 고속 부팅 KR101292429B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/245,629 2005-10-06
US11/245,629 US7409537B2 (en) 2005-10-06 2005-10-06 Fast booting an operating system from an off state
PCT/US2006/039127 WO2007044516A1 (en) 2005-10-06 2006-10-03 Fast booting an operating system from an off state

Publications (2)

Publication Number Publication Date
KR20080052625A true KR20080052625A (ko) 2008-06-11
KR101292429B1 KR101292429B1 (ko) 2013-08-07

Family

ID=37912167

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087007752A KR101292429B1 (ko) 2005-10-06 2006-10-03 오프 상태로부터의 운영 체제의 고속 부팅

Country Status (8)

Country Link
US (1) US7409537B2 (ko)
EP (1) EP1934714A4 (ko)
JP (1) JP4459290B2 (ko)
KR (1) KR101292429B1 (ko)
CN (1) CN101283330B (ko)
BR (1) BRPI0616858B1 (ko)
RU (1) RU2435200C2 (ko)
WO (1) WO2007044516A1 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7624260B2 (en) * 2006-05-04 2009-11-24 Qnx Software Systems Gmbh & Co. Kg System executing a fast boot wake-up
TW200842569A (en) * 2007-04-24 2008-11-01 Inventec Corp Method for initiating system
DE102007044199A1 (de) * 2007-09-17 2009-04-02 Fujitsu Siemens Computers Gmbh Steuergerät für einen Massenspeicher und Verfahren zum Bereitstellen von Daten für einen Startvorgang eines Computers
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
EP2250609B1 (en) * 2008-01-30 2018-07-18 Panasonic Intellectual Property Management Co., Ltd. Secure boot with optional components method
US7900037B1 (en) 2008-02-12 2011-03-01 Western Digital Technologies, Inc. Disk drive maintaining multiple logs to expedite boot operation for a host computer
US8082433B1 (en) 2008-02-12 2011-12-20 Western Digital Technologies, Inc. Disk drive employing boot disk space to expedite the boot operation for a host computer
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US8230208B2 (en) * 2009-04-20 2012-07-24 Intel Corporation Booting an operating system of a system using a read ahead technique
TWI421769B (zh) * 2009-12-28 2014-01-01 Apacer Technology Inc 增加電子裝置開機速度之方法
US10394570B2 (en) * 2010-02-26 2019-08-27 Hp Printing Korea Co., Ltd. Method of generating boot image for fast booting and image forming apparatus for performing the method, and method of performing fast booting and image forming apparatus for performing the method
US8656149B2 (en) 2010-06-07 2014-02-18 International Business Machies Corporation Rapid activation of service management processor subsystem for server device
WO2012036665A1 (en) * 2010-09-13 2012-03-22 Hewlett-Packard Development Company, L.P. Operating speed of a component
US8719559B2 (en) 2010-10-13 2014-05-06 International Business Machines Corporation Memory tagging and preservation during a hot upgrade
US9405668B1 (en) 2011-02-15 2016-08-02 Western Digital Technologies, Inc. Data storage device initialization information accessed by searching for pointer information
CN102693137A (zh) * 2011-03-24 2012-09-26 昆达电脑科技(昆山)有限公司 用于缩短开机时间的驱动程序加载与初始化方法
US20120311312A1 (en) * 2011-05-31 2012-12-06 Broadcom Corporation Fast Boot Via State Recreation
US9286079B1 (en) 2011-06-30 2016-03-15 Western Digital Technologies, Inc. Cache optimization of a data storage device based on progress of boot commands
US9952879B2 (en) * 2012-08-30 2018-04-24 Microsoft Technology Licensing, Llc Application pre-layout in byte-addressable persistent random access memory
US9740500B2 (en) 2012-08-30 2017-08-22 Microsoft Technology Licensing, Llc Layout system for operating systems using BPRAM
US20140075174A1 (en) * 2012-09-10 2014-03-13 Texas Instruments Incorporated Boot State Restore from Nonvolatile Bitcell Array
US9250922B2 (en) 2013-02-28 2016-02-02 Qualcomm Incorporated Method and apparatus for prefetching peripheral device drivers for smart phones and other connected devices prior to HLOS boot
US9477484B2 (en) * 2013-07-23 2016-10-25 Samsung Electronics Co., Ltd. System and method for boot acceleration of a data processing system wherein a nonvolatile memory is pre-configured before boot time
US9588774B2 (en) * 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US10114661B2 (en) * 2014-11-07 2018-10-30 Roku, Inc. System and method for fast starting an application
US10037071B2 (en) 2015-02-25 2018-07-31 Texas Instruments Incorporated Compute through power loss approach for processing device having nonvolatile logic memory
CN105117246A (zh) * 2015-08-04 2015-12-02 晶晨半导体(上海)有限公司 电子设备快速启动的方法
US10452594B2 (en) 2015-10-20 2019-10-22 Texas Instruments Incorporated Nonvolatile logic memory for computing module reconfiguration
TWI569129B (zh) 2015-12-01 2017-02-01 財團法人工業技術研究院 系統暫停方法、系統回復方法及應用其之電腦系統
US10331203B2 (en) 2015-12-29 2019-06-25 Texas Instruments Incorporated Compute through power loss hardware approach for processing device having nonvolatile logic memory
KR20170091436A (ko) * 2016-02-01 2017-08-09 삼성전자주식회사 영상 표시 장치 및 그 동작방법
US10452561B2 (en) 2016-08-08 2019-10-22 Raytheon Company Central processing unit architecture and methods for high availability systems
US10289421B2 (en) * 2017-02-17 2019-05-14 Dell Products, L.P. Booting of IHS from SSD using PCIe
US11204715B1 (en) * 2018-09-25 2021-12-21 Amazon Technologies, Inc. Derived data generation and storage
US11194589B2 (en) 2019-01-08 2021-12-07 Dell Products L.P. Information handling system adaptive component reset
US11010249B2 (en) 2019-01-08 2021-05-18 Dell Products L.P. Kernel reset to recover from operating system errors
US11126420B2 (en) 2019-01-08 2021-09-21 Dell Products L.P. Component firmware update from baseboard management controller
US11550593B2 (en) 2019-01-08 2023-01-10 Dell Products L.P. Information handling system quick boot
US11003483B1 (en) 2019-06-28 2021-05-11 Amazon Technologies, Inc. Parameterized launch acceleration for compute instances
CN110457899B (zh) * 2019-08-12 2021-06-01 北京无线电测量研究所 一种操作系统保护系统及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098158A (en) 1997-12-18 2000-08-01 International Business Machines Corporation Software-enabled fast boot
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US7134133B1 (en) * 1999-11-08 2006-11-07 Gateway Inc. Method, system, and software for creating and utilizing broadcast electronic program guide templates
US20030233534A1 (en) * 2002-06-12 2003-12-18 Adrian Bernhard Enhanced computer start-up methods
US7017037B2 (en) 2002-06-27 2006-03-21 Microsoft Corporation Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time
US7036040B2 (en) 2002-11-26 2006-04-25 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
CN1282059C (zh) * 2003-03-12 2006-10-25 联想(北京)有限公司 一种加快操作系统的引导方法
US7430661B2 (en) * 2004-09-09 2008-09-30 Hewlett-Packard Development Company, L.P. System and method of storing user data in a partition file or using a partition file containing user data

Also Published As

Publication number Publication date
US7409537B2 (en) 2008-08-05
RU2435200C2 (ru) 2011-11-27
JP4459290B2 (ja) 2010-04-28
KR101292429B1 (ko) 2013-08-07
JP2009512020A (ja) 2009-03-19
BRPI0616858A2 (pt) 2011-07-05
US20070083743A1 (en) 2007-04-12
CN101283330B (zh) 2012-06-06
CN101283330A (zh) 2008-10-08
EP1934714A1 (en) 2008-06-25
BRPI0616858B1 (pt) 2018-09-25
EP1934714A4 (en) 2009-01-14
WO2007044516A1 (en) 2007-04-19
RU2008113217A (ru) 2009-10-10

Similar Documents

Publication Publication Date Title
KR101292429B1 (ko) 오프 상태로부터의 운영 체제의 고속 부팅
US7934209B2 (en) Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan
TWI524205B (zh) 用以在無作業系統服務環境中供應韌體之方法
US7237102B2 (en) Methods and apparatus for configuring hardware resources in a pre-boot environment without requiring a system reset
US7457928B2 (en) Mirroring system memory in non-volatile random access memory (NVRAM) for fast power on/off cycling
RU2568280C2 (ru) Быстрый запуск компьютера
US9563439B2 (en) Caching unified extensible firmware interface (UEFI) and/or other firmware instructions in a non-volatile memory of an information handling system (IHS)
US7962734B2 (en) Method of restarting a computer platform
US20210240488A1 (en) Bios boot and update failover process
US8539214B1 (en) Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware
US7600111B2 (en) Method of restarting a computer platform
US20130097441A1 (en) Multi-core processor system, power control method, and computer product
US8578368B2 (en) Injecting a file from the bios into an operating system
US7849300B2 (en) Method for changing booting sources of a computer system and a related backup/restore method thereof
US11416614B2 (en) Statistical detection of firmware-level compromises
US7493627B2 (en) System and method for configuring computer for operation
KR100605031B1 (ko) Usb 메모리 장치를 이용한 임베디드 시스템의 장애복구 및 업그레이드 방법
US20110125996A1 (en) System And Method For Supporting Multiple Hardware Platforms With A Single Disk Image
US10853085B2 (en) Adjustable performance boot system
US20230350755A1 (en) Coordinated operating system rollback
US20240037694A1 (en) Seamless video in heterogeneous core information handling system
US20230152979A1 (en) Systems and methods for resetting a degraded storage resource
US20240020103A1 (en) Parallelizing data processing unit provisioning
US8065737B1 (en) Virus scanning for block-level distributed application management

Legal Events

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

Payment date: 20160630

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 6