KR20160108492A - 운영 체제들 간에 스위칭하기 위한 기법들 - Google Patents

운영 체제들 간에 스위칭하기 위한 기법들 Download PDF

Info

Publication number
KR20160108492A
KR20160108492A KR1020167022107A KR20167022107A KR20160108492A KR 20160108492 A KR20160108492 A KR 20160108492A KR 1020167022107 A KR1020167022107 A KR 1020167022107A KR 20167022107 A KR20167022107 A KR 20167022107A KR 20160108492 A KR20160108492 A KR 20160108492A
Authority
KR
South Korea
Prior art keywords
operating system
volatile memory
context
location
controller
Prior art date
Application number
KR1020167022107A
Other languages
English (en)
Other versions
KR102026217B1 (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 KR20160108492A publication Critical patent/KR20160108492A/ko
Application granted granted Critical
Publication of KR102026217B1 publication Critical patent/KR102026217B1/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/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/46Multiprogramming arrangements

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)
  • Stored Programmes (AREA)
  • Power Sources (AREA)

Abstract

일반적으로, 다양한 실시예들은, 제1 운영 체제로부터 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하고, 제2 운영 체제에 대한 시스템 컨텍스트를 비휘발성 메모리의 위치로부터 휘발성 메모리에 복사하고 - 이 위치는 제2 운영 체제와 관련됨 -, 제2 운영 체제에 대한 시스템 컨텍스트를 이용하여 제1 운영 체제로부터 제2 운영 체제로 전환하기 위한 장치, 방법 및 다른 기법들에 관한 것이다.

Description

운영 체제들 간에 스위칭하기 위한 기법들{TECHNIQUES FOR SWITCHING BETWEEN OPERATING SYSTEMS}
관련 사건
본 출원은 2014년 3월 20일자로 출원된 미국 특허 출원 제14/220,812호에 대해 우선권을 주장하며, 그 전체 내용은 이로써 참조로 포함된다.
기술분야
본 명세서에 설명된 실시예들은 일반적으로 운영 체제 간에 스위칭하기 위한 기법들에 관한 것이다. 더 구체적으로는, 다양한 실시예들은 일반적으로 운영 체제들 간에 급속하게 스위칭하기 위해 비휘발성 메모리에 저장된 시스템 컨텍스트들을 이용하는 것에 관한 것이다.
오늘날 많은 컴퓨팅 시스템은 시스템에서 실행될 수 있는 하나보다 많은 운영 체제(OS)를 가지고 있다. 그러나, 컴퓨팅 시스템들은 일반적으로 시스템 상에서 한 번에 하나의 운영 체제만을 부팅한다. 제2 OS가 필요한 경우, 컴퓨팅 시스템은 파워 다운되고, 시스템은 새로운 운영 체제에서 부팅된다. 그러나 새로운 운영 체제로 재부팅하는 것은 전형적으로 느리다.
더욱이, 단일 호스트 운영 체제의 상부에 다수의 게스트 운영 체제를 실행하기 위해 가상화를 이용하는 것에 의해 단일 컴퓨팅 디바이스 상에서 다수의 OS를 이용하는 것도 가능하다. 그러나, 가상화는 일반적으로 각각의 OS가 하드웨어 디바이스들로 직접 액세스하는 것을 허용하지 않으며, 이는 특히 게임과 같이 고속 주변 장치들로의 직접 액세스를 요구하는 프로그램들에 대해 성능을 감소시킬 수 있다.
도 1은 제1 시스템의 실시예를 예시한다.
도 2는 운영 체제들 간에 스위칭하기 위한 로직 흐름을 예시한다.
도 3은 운영 체제들을 고속 하이버네이트 상태(fast hibernate state)에 들어가게 하기 위한 로직 흐름을 예시한다.
도 4는 운영 체제들이 고속 하이버네이트 상태에서 나가기 위한 로직 흐름을 예시한다.
도 5는 운영 체제들 간에 스위칭하기 위한 블록 흐름도를 예시한다.
도 6은 운영 체제들을 고속 하이버네이트 상태에 들어가게 하기 위한 블록 흐름도를 예시한다.
도 7a/도 7b는 운영 체제들이 고속 하이버네이트 상태에서 나가기 위한 블록 흐름도들을 예시한다.
도 8은 로직 흐름도의 실시예를 예시한다.
도 9는 컴퓨팅 아키텍처의 실시예를 예시한다.
다양한 실시예들은 일반적으로 http://acpi.info/spec.htm에서 발견되는 2013년 11월 13일에 게시된 고급 구성 및 전력 인터페이스(ACPI) 사양 수정 버전 5.0a에 의해 정의된 대기(standby) 또는 S3 상태에 운영 체제가 들어갈 때 저장된 시스템 컨텍스트들을 이용하여 컴퓨팅 디바이스 상의 운영 체제들 간에 스위칭하는 것과 관련된다. 더 구체적으로, 적어도 일부가 하드웨어로 구현되는 로직을 가진 제어기는 현재 실행 중인 운영 체제에서 다른 운영 체제로 스위칭하기 위한 요청을 수신할 수 있다. 전통적으로, 시스템은 현재 운영 체제를 완전히 종료(shut down)한 다음 새로운 또는 다른 운영 체제를 처음부터 부팅하여, 모든 파일 및 구성 설정을 메모리 및 레지스터들에 로딩할 것이다. 그러나, 이 프로세스는 지나치게 긴 시간이 걸릴 수 있다.
따라서 운영 체제들 간에 스위칭하기 위해 운영 체제들에 대한 시스템 또는 대기 컨텍스트(standby context)가 이용될 수 있다. 대기 컨텍스트는 레지스터 설정, 애플리케이션 설정, 파일 설정, 운영 체제 상태 설정 등을 포함하는 운영 체제에 대한 다양한 구성 설정들을 포함할 수 있다. 운영 체제들을 스위칭하기 위한 요청을 수신하면, 제어기는 현재의 운영 체제에게 대기 상태에 들어가도록 지시하여 운영 체제로 하여금 대기 컨텍스트를 휘발성 메모리에 저장하게 할 수 있다. 그러나, 휘발성 메모리에 저장된 대기 컨텍스트는 메모리로의 전력이 차단될 때 상실될 수 있고 또는 다른 운영 체제에 의해 덮어쓰기(overwrite)될 수 있다. 따라서, 제어기는 대기 컨텍스트를 추가 이용을 위해 저장하기 위해 비휘발성 메모리에 복사할 수 있다.
새로운 운영 체제로 스위칭할 때, 제어기는 비휘발성 메모리에서 해당 운영 체제에 대한 대기 컨텍스트를 찾을 수 있고 그것을 휘발성 메모리에 복사할 수 있다. 새로운 운영 체제에 대한 대기 컨텍스트는 운영 체제들 간의 이전의 스위칭 동안에 또는 운영 체제가 실행 중이던 임의의 다른 시간에 비휘발성 메모리에 저장되었을 수 있다. 대기 컨텍스트가 휘발성 메모리에 있으면, 제어기는 휘발성 메모리 내의 대기 컨텍스트를 이용하여 새로운 운영 체제를 대기 또는 S3 상태로부터 깨울 수 있다. 새로운 운영 체제는 부팅되고 정상 상태에서 동작할 수 있다. 운영 체제들 간에 스위칭하기 위해 비휘발성 메모리에 저장된 대기 컨텍스트들을 이용하는 것은 완전한 종료 및 부팅 프로세스에 비해서 상당한 양의 시간을 절약한다.
운영 체제들 간에 스위칭하는 것 외에, 다양한 실시예들은 다수의 운영 체제를 가진 시스템을 고속 하이버네이트 상태에 들어가게 하고 고속 하이버네이트 상태에서 다수의 운영 체제 중 어느 하나로 나가는 것과도 관련될 수 있다. 이러한 실시예들에서, 제어기는 시스템의 전력을 절약하기 위해 시스템을 대기 또는 S3 상태에 들어가게 하기 위한 요청을 수신할 수 있다. 일반적으로 시스템이 S3 상태에 들어가게 될 때 처리 컴포넌트들, 비휘발성 메모리 등과 같은 다양한 컴포넌트들로의 전력이 차단되지만, 예를 들어, 대기 컨텍스트를 유지하는 휘발성 메모리와 같은 컴포넌트들에 대해서는 전력이 계속 유지된다. 그러나 시스템이 대기 또는 S3 상태에 들어가기를 요청할 때 시스템을 하이버네이션 또는 S4 상태에 들어가게 함으로써 부가적인 전력 절약이 실현될 수 있다.
따라서, 이전에 논의된 바와 같이, 대기 컨텍스트는 제어기에 의해 전력이 있든 없든 지속적인 방식으로 비휘발성 메모리에 저장될 수 있다. 시스템은 운영 체제에 대한 대기 컨텍스트를 상실할 위험 없이 하이버네이션 또는 S4 상태에 들어갈 수 있다. 제어기는 시스템을 대기 또는 S3 상태에 들어가게 하기 위한 정보를 수신할 수 있고 실행 중인 운영 체제에게 이 상태에 들어가도록 지시할 수 있다. 운영 체제는 대기 컨텍스트를 휘발성 메모리에 복사하고 S3 상태에 들어갈 수 있다. 제어기는 대기 컨텍스트를 비휘발성 메모리에 복사하고 시스템을 하이버네이션 또는 S4 상태에 들어가게 하여, S3 상태에 비해서 부가적인 전력을 절약할 수 있다.
다양한 실시예들에서, 제어기는 또한 하이버네이션 또는 S4 상태에서 나가고 시스템을 정상 동작 상태에 들어가게 하기 위한 정보를 수신할 수 있다. 제어기는 시스템을 어느 운영 체제로 부팅할지를 결정하고 그 운영 체제에 대한 대기 컨텍스트를 비휘발성 메모리에서 휘발성 메모리에 복사하고 운영 체제에게 대기 컨텍스트를 이용하여 대기 또는 S3 상태에서 나가도록 지시할 수 있다. 부팅할 운영 체제(operating system to boot into)는 시스템이 하이버네이션 상태에 들어갈 때 시스템에서 실행 중이던 마지막 운영 체제이거나 사용자가 선택한 운영 체제일 수 있다. 사용자는 시스템이 하이버네이션 또는 S4 상태에서 나갈 때 또는 시스템이 S4 또는 하이버네이션 상태에 들어가게 될 때 운영 체제를 선택했을 수 있다. 다음의 설명으로 다양한 세부 사항들이 더 명백해질 것이다.
본 명세서에서 이용되는 표기법 및 명명법을 일반적으로 참조하여, 다음에 오는 상세한 설명은 컴퓨터 또는 컴퓨터들의 네트워크에서 실행되는 프로그램 절차들에 관하여 제시될 수 있다. 이러한 절차적 설명들 및 표현들은 본 기술분야의 통상의 기술자들이 그들의 연구의 실체를 본 기술분야의 다른 통상의 기술자들에게 가장 효과적으로 전달하기 위해 이용된다.
절차는 여기서 그리고 일반적으로 원하는 결과로 이어지는 동작들의 자기 모순이 없는 시퀀스(self-consistent sequence)라고 생각된다. 이러한 동작들은 물리적 양들의 물리적 조작들을 요구하는 것들이다. 반드시 그런 것은 아니지만 일반적으로, 이러한 양들은 저장, 전송, 결합, 비교, 그리고 다르게 조작될 수 있는 전기, 자기, 또는 광학 신호들의 형태를 취한다. 주로 공통된 이용의 이유로, 이러한 신호들을 비트, 값, 요소, 심벌, 문자, 용어, 숫자, 또는 다른 유사한 것으로 언급하는 것이 때로는 편리하다는 것이 입증된다. 그러나, 이러한 그리고 유사한 용어들 모두는 적절한 물리적 양들과 관련되어야 하고 그 양들에 적용되는 편리한 라벨들에 불과하다는 것에 유의해야 한다.
또한, 수행되는 조작들은 종종 가산 또는 비교와 같은 용어들로 언급되며, 이러한 용어들은 인간 조작자에 의해 수행되는 정신적 동작들과 흔히 관련된다. 하나 이상의 실시예의 일부를 형성하는 본 명세서에 설명된 동작들 중 임의의 것에서, 대부분의 경우에 인간 조작자의 그러한 능력이 필요하거나 바람직하지 않다. 오히려, 그 동작들은 머신 동작들이다. 다양한 실시예들의 동작들을 수행하기 위한 유용한 머신들은 범용 디지털 컴퓨터들 또는 유사 디바이스들을 포함한다.
다양한 실시예들은 또한 이러한 동작들을 수행하기 위한 장치들 또는 시스템들과 관련된다. 이 장치는 요구되는 목적을 위해 특수하게 구성될 수 있고 또는 그것은 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 본 명세서에 제시된 절차들은 본질적으로 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 머신들이 본 명세서의 교시 내용들에 따라 작성된 프로그램들과 함께 이용될 수 있고, 또는 요구되는 방법 단계들을 수행하도록 더 전문화된 장치를 구성하는 것이 편리하다는 것이 입증될 수 있다. 각종의 이러한 머신들에 대해 요구되는 구조는 제시된 설명으로부터 명백할 것이다.
이제 도면들이 참조되며, 도면들에서 같은 참조 번호들은 전체에 걸쳐 같은 요소들을 지시하기 위해 이용된다. 다음의 설명에서는, 설명 목적으로, 그것의 철저한 이해를 제공하기 위하여 다수의 특정 세부 사항들이 제시된다. 그러나, 새로운 실시예들은 이러한 특정 세부 사항들 없이 실시될 수 있다는 것이 분명할 수 있다. 다른 경우에, 널리 공지된 구조들 및 디바이스들은 그것의 설명을 용이하게 하기 위하여 블록도 형태로 도시된다. 의도하는 바는 청구된 주제와 일관된 모든 수정, 등가물, 및 대안을 포괄하려는 것이다.
도 1은 본 명세서에 설명된 다양한 실시예들을 구현하기에 적합한 시스템(100)의 실시예를 예시한다. 이 시스템(100)은 운영 체제들 간의 스위칭 및 고속 하이버네이트 상태에 들어가고 나가는 것을 처리하고 가능하게 하기 위한 다양한 컴포넌트들을 가진 컴퓨팅 디바이스(105)를 포함한다. 다양한 실시예들에서, 시스템(100)은 그 위에 임의의 수의 운영 체제를 가질 수 있고 이들은 윈도(Windows®) OS, 애플(Apple®) OS, 리눅스(Linux®) OS, 유닉스(UNIX®) OS 등을 포함하지만, 이들에 제한되지 않는 임의의 유형의 운영 체제일 수 있다.
도 1은 제어기(106)를 포함하는 기본 입출력 시스템(BIOS)(104)과 결합된 프로세서 컴포넌트(102)를 포함하는 컴퓨팅 디바이스(105)를 예시한다. 또한, 컴퓨팅 디바이스(105)는 또한 비휘발성 메모리(110) 및 휘발성 메모리(120)를 포함한다. 프로세서 컴포넌트(102), BIOS(104), 비휘발성 메모리(110) 및 휘발성 메모리(120)는 임의의 유형의 버스, 트레이스 등일 수 있는 인터커넥트들(143)과 같은 하나 이상의 인터커넥트를 통하여 통신할 수 있다.
도 1은 특정한 수의 컴포넌트를 예시하고 있지만, 다양한 실시예들은 이런 식으로 제한되지 않고 컴퓨팅 시스템(105)은 임의의 수의 컴포넌트를 포함할 수 있다. 또한, 도 1은 독립형 컴포넌트들 또는 다른 컴포넌트들의 일부로서 다양한 컴포넌트를 예시한다. 예를 들어, 도 1은 제어기(106)를 포함하는 BIOS(104)를 예시한다. 그러나, 다양한 실시예들은 이런 식으로 제한되지 않을 수 있고 일부 실시예들에서 제어기(106)는 독립형 컴포넌트이거나 BIOS(104) 안에 있지 않을 수 있다. 도 1은 또한 휘발성 메모리(120)를 독립형 컴포넌트로서 예시한다; 그러나, 다양한 실시예들에서 휘발성 메모리(120)는 프로세서 컴포넌트(102)의 일부일 수 있다. 게다가, 프로세서 컴포넌트(102)는 그 자신의 휘발성 메모리 컴포넌트를 가질 수 있다. 다양한 실시예들은 이러한 컨텍스트에서 제한되지 않는다.
다양한 실시예들에서, 컴퓨팅 디바이스(105)는 임의의 유형의 컴퓨팅 디바이스를 포함할 수 있고, 이러한 컴퓨팅 디바이스로는 PDA(personal digital assistant), 모바일 컴퓨팅 디바이스, 스마트폰, 셀룰러폰, 핸드세트, 일방향 무선 호출기(one-way pager), 양방향 무선 호출기(two-way pager), 메시징 디바이스, 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 핸드헬드 컴퓨터, 태블릿 컴퓨터, 네트워크 가전, 웹 가전, 멀티프로세서 시스템, 프로세서 기반 시스템, 또는 이들의 임의의 조합 등이 있다. 실시예들은 이러한 컨텍스트에서 제한되지 않는다.
프로세서 컴포넌트(102)는 임의의 유형의 계산 요소 중 하나 이상일 수 있고, 이러한 계산 요소로는 마이크로프로세서, 프로세서, 중앙 처리 유닛, 디지털 신호 처리 유닛, 듀얼 코어 프로세서, 모바일 디바이스 프로세서, 데스크톱 프로세서, 싱글 코어 프로세서, 시스템-온-칩(SoC) 디바이스, CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 단일 칩 또는 집적 회로 상의 임의의 다른 유형의 프로세서 또는 처리 회로 등이 있지만, 이들로 제한되지 않는다. 프로세서 컴포넌트(102)는 인터커넥트(143)를 통해 컴퓨팅 시스템의 다른 요소들에 연결되어 그와 통신할 수 있다. 또한, 프로세서 컴포넌트(102)는 코어 처리에 필수적이지 않은 정보, 명령어 등을 처리하는 로직을 포함하는 언코어(uncore) 컴포넌트와 같은 다른 컴포넌트들을 포함할 수 있다.
다양한 실시예들에서, 컴퓨팅 디바이스(105)는 컴퓨팅 디바이스(105)를 위한 데이터, 정보, 및 명령어를 저장하기 위한 비휘발성 메모리(110)를 포함할 수 있다. 이 비휘발성 메모리(110)는 메모리에 전력이 인가되거나 전력이 인가되지 않을 때 지속적인 방식으로 데이터, 정보, 명령어 등을 저장할 수 있는 임의의 유형의 비휘발성 메모리일 수 있다. 이 비휘발성 메모리(110)는 플래시 메모리, 고체 상태 드라이브(SSD), 강유전성 랜덤 액세스 메모리(F-RAM), 광학 디스크, 판독 전용 메모리(ROM), 비휘발성 랜덤 액세스 메모리(NVRAM), SONOS, 프로그래머블 금속화 셀(programmable metallization cell), 레이스트랙 메모리(Racetrack memory), 나노-RAM, 밀리페드 메모리(Millipede memory), 상변화 메모리(PCM) 등을 포함할 수 있다.
다양한 실시예들에서, 비휘발성 메모리(110)는 영역들로 분할되고 컴퓨팅 시스템(105)을 위한 하나 이상의 운영 체제를 저장할 수 있다. 더 구체적으로 그리고 아래에 더 상세히 논의되는 바와 같이, 비휘발성 메모리(110)는 다수의 상이한 파티션으로 분할될 수 있고 운영 체제 공간 파티션들 및 컴퓨팅 디바이스(105)에 설치된 또는 인에이블된 운영 체제들 각각에 대한 시스템 컨텍스트들을 저장하는 파티션들을 포함할 수 있다.
컴퓨팅 시스템(105)은 또한 전력이 메모리에 인가되지 않는 동안은 정보를 저장하지 않는 임의의 유형의 메모리일 수 있는 휘발성 메모리(120)를 포함할 수 있다. 휘발성 메모리(120)는 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), T-RAM, Z-RAM 등을 포함할 수 있지만, 이들로 제한되지 않는다.
휘발성 메모리(120)는 정보를 저장할 수 있고 아래 더 상세히 논의되는 바와 같이, 운영 체제는 시스템이 대기 상태에 들어가게 될 때 그의 대기 컨텍스트를 휘발성 메모리에 저장할 수 있다. 대기 컨텍스트는 대기 상태에 들어가는 시점에 이용된 열린 문서들 및 프로그램들(애플리케이션들)을 포함할 수 있다. 일부 칩셋 레지스터들의 콘텐츠도 대기 컨텍스트의 일부로서 휘발성 메모리에 기입될 수 있다. 대기 컨텍스트를 지속적인 방식으로 저장하기 위해 휘발성 메모리(120)로의 전력이 디스에이블되기 전에 대기 컨텍스트는 비휘발성 메모리(110)에 기입되거나 저장될 수 있다. 일부 실시예들에서, 대기 컨텍스트는 또한 운영 체제들 간에 빠르게 전환하는 데에 이용될 수 있다.
다양한 실시예들에서, 컴퓨팅 디바이스는 운영 체제들 간에 스위칭하는 것, 컴퓨팅 디바이스를 고속 하이버네이트 상태에 들어가게 하는 것 및 고속 하이버네이트 상태에서 재개하는 것을 포함하는 컴퓨팅 디바이스(105)의 다양한 양태들을 제어하기 위한 제어기(106)를 가진 BIOS(104)를 포함할 수 있다. BIOS(104)는 시스템 BIOS 명령어를 제공한다. 더 구체적으로, BIOS 소프트웨어는 컴퓨팅 디바이스(105)에 펌웨어로서 빌트인될 수 있고 파워 온될 때 컴퓨팅 디바이스(105)에 의해 실행되는 첫 번째 소프트웨어이다. BIOS(104)는 시스템 컴포넌트들을 초기화 및 테스트할 수 있고, 비휘발성 메모리(110)와 같은 메모리 디바이스로부터 부팅 로더(bootloader) 또는 운영 체제를 로딩할 수 있다.
도 1은 제어기(106)를 BIOS(104)의 일부로서 예시하고 있지만, 다양한 실시예들은 이런 식으로 제한되지 않을 수 있고 제어기(106)는 독립형 컴포넌트일 수 있고 인터커넥트(143)를 통해 다른 컴포넌트들과 통신할 수 있다. 또한, 제어기(106)는 로직을 포함할 수 있고 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다.
일부 실시예들에서, 다른 운영 체제로 스위칭 또는 전환할 때, 제어기(106)는 사용자가 컴퓨팅 디바이스(105)에서 실행 중인 현재 운영 체제로부터 컴퓨팅 디바이스(105)에 설치된 또는 동작가능한 다른 운영 체제로 스위칭하기를 원한다는 것을 나타내는 정보를 수신할 수 있다. 제어기(106)는 현재 실행 중인 운영 체제에게 대기 상태에 들어가도록 지시하고 정보를 송신할 수 있다. 대기 상태에 들어감으로써, 운영 체제는 대기 상태에 들어가는 시점에 이용된 열린 문서들 및 프로그램들(애플리케이션들)에 관한 정보 및 다양한 레지스터들 내의 정보를 포함하는 대기 컨텍스트를 저장할 수 있다. 대기 컨텍스트가 휘발성 메모리에 복사되면 현재 운영 체제의 프로세스들의 일부 또는 전부가 또한 중지될 수 있다.
제어기(106)는 휘발성 메모리(120)에 저장된 대기 컨텍스트를 비휘발성 메모리(110)에 복사 또는 복사 및 제거하여 그 정보를 지속적인 상태로 유지할 수 있다. 대기 컨텍스트는 비휘발성 메모리(110) 내에 스위칭되고 있는 운영 체제(operating system that is being switched from)와 관련된 특정 위치에 저장될 수 있다. 다양한 실시예들에서, 이 특정 위치는 운영 체제를 위한 컨텍스트 파티션일 수 있다.
그 후 제어기(106)는 휘발성 메모리(120)로부터 정보를 제거하거나 다른 운영 체제가 그 정보를 덮어쓰기하는 것을 허용할 수 있다. 운영 체제에 대한 대기 컨텍스트가 비휘발성 메모리(110)에 저장되면, 제어기(106)는 다른 운영 체제로 스위칭할 수 있다. 일부 실시예들에서, 제어기(106)는 다른 운영 체제 또는 스위칭되고 있는 운영 체제(operating system being switch to)에 대한 대기 컨텍스트가 비휘발성 메모리(110)에 존재하는지를 결정할 수 있고 그 대기 컨텍스트를 휘발성 메모리(120)에 복사할 수 있다. 제어기(106)는 다른 운영 체제에게 휘발성 메모리(120)에 복사된 대기 컨텍스트를 이용하여 대기 상태에서 나가도록 지시할 수 있다. 그러나, 스위칭되고 있는 운영 체제에 대한 대기 컨텍스트가 비휘발성 메모리(110)에 존재하지 않는다면, 제어기(106)는 운영 체제의 새로운 인스턴스를 로딩하기 위한 부팅 시퀀스를 개시할 수 있다.
다양한 실시예들에서, 제어기(106)는 하나 이상의 시스템 호출, 함수 호출 또는 다른 유사한 것으로서 운영 체제에 그리고 운영 체제로부터 메시지들을 송신하는 것에 의해 하나 이상의 인터커넥트(143)를 이용하여 프로세서 컴포넌트(102)를 통해 운영 체제들과 통신할 수 있다. 또한, 제어기(106)는 운영 체제가 다양한 슬립 상태(sleep states)에 들어가거나 해당 상태에서 나가게 하기 위해 하나 이상의 레지스터 또는 제어 핀을 인에이블하거나 디스에이블할 수 있다. 다양한 실시예들은 이런 식으로 제한되지 않고 제어기(106)는 임의의 방식으로 운영 체제들과 통신할 수 있다.
다양한 실시예들에서, 제어기(106)는 사용자가 비휘발성 메모리(120)에 저장된 대기 컨텍스트들을 이용하여 임의의 수의 운영 체제들 간에 스위칭하는 것을 가능하게 할 수 있다. 제어기(106)는 스위칭되고 있는 운영 체제들(operating systems being switched out of)에 대한 대기 컨텍스트들을 비휘발성 메모리(110)에 저장할 수 있고 스위칭되고 있는 운영 체제들(operating systems being switched to)에 대한 대기 컨텍스트들을 휘발성 메모리(120)에 로딩할 수 있다. 대기 컨텍스트를 이용함으로써 운영 체제들에 대한 완전한 종료 및 시작 시퀀스가 요구되지 않기 때문에 상당한 양의 시간과 처리 능력(processing power)이 절약될 수 있다. 또한, 대기 컨텍스트들은 사용자가 운영 체제로 다시 스위칭할 때 그것이 동일한 구성에 있도록 사용자에 대한 구성 및 설정들을 저장하는 데 이용될 수 있다.
제어기(106)는 또한 사용자가 컴퓨팅 디바이스(105)를 고속 하이버네이트 상태에 들어가게 하고 저장된 대기 컨텍스트들을 이용함으로써 고속 하이버네이트 상태로부터 하나 이상의 운영 체제 중 어느 하나로 재개하는 것을 가능하게 할 수 있다. 더 구체적으로, 제어기(106)는 운영 체제들에게 대기 상태에 들어가도록 지시하여 운영 체제들로 하여금 대기 컨텍스트들을 휘발성 메모리(120)에 저장하게 할 수 있다. 그러나, 시스템은 그 후 대기 컨텍스트들을 비휘발성 메모리(110)에 복사하고 실제로는 시스템을 하이버네이션 상태에 들어가게 할 수 있다.
예를 들어, 제어기(106)는 현재 실행 중인 운영 체제로부터 사용자가 시스템을 대기 상태에 들어가게 하기를 원한다는 정보를 수신할 수 있다. 이 정보는 그래픽 사용자 인터페이스를 통한 사용자 선택, 컴퓨팅 디바이스의 덮개(도시되지 않음)의 닫힘, 컴퓨팅 디바이스의 버튼(도시되지 않음)의 눌림(pressing) 또는 밀림(depressing) 등에 응답하여 수신될 수 있다. 현재 동작중인 운영 체제는 대기 컨텍스트를 휘발성 메모리(120)에 저장할 수 있고 제어기(106)는 또한 실행 중인 프로세스들을 가진 임의의 다른 운영 체제들에게도 그들의 대기 컨텍스트들을 휘발성 메모리(120)에 저장하도록 지시할 수 있다. 제어기(106)는 컴퓨팅 디바이스(105) 상의 운영 체제들 각각에 대한 대기 컨텍스트들을 비휘발성 메모리(110)에 저장할 수 있다. 일부 실시예들에서, 제어기(106)는 대기 컨텍스트들을 운영 체제들 각각과 관련된 컨텍스트 파티션들에 저장할 수 있다.
모든 대기 컨텍스트가 비휘발성 메모리(110)에 저장되면, 제어기(106)는 레지스터를 설정하거나 하나 이상의 핀을 인에이블하여, 하나 이상의 메시지를 전달하는 것에 의해 컴퓨팅 디바이스(105)를 하이버네이션 상태에 들어가게 할 수 있다. 하이버네이션 상태에 있을 때, 컴퓨팅 시스템(105)은 프로세서 컴포넌트(102), 휘발성 메모리(120), 비휘발성 메모리(110) 및 ACPI 사양에 의해 정의된 임의의 다른 컴포넌트를 포함하는 다양한 컴포넌트들로의 전력을 턴 오프할 수 있다.
컴퓨팅 디바이스(105)는 트리거 이벤트가 발생할 때까지 계속 하이버네이션 상태에 있을 수 있다. 다양한 실시예들에서, 트리거 이벤트는 덮개의 열림, 버튼의 눌림, 버튼의 밀림, 마우스의 움직임, 네트워크 인터페이스를 통해 수신된 통신 등일 수 있다. 제어기(106)는 트리거 이벤트가 발생한 것을 나타내는 정보를 수신할 수 있고 컴퓨팅 디바이스(105)에서 재개 프로세스를 개시할 수 있다. 제어기(106)는 컴퓨팅 디바이스(105) 상에 인에이블된 운영 체제들 중 어느 하나를 정상 동작 상태로 재개할 수 있다. 제어기(106)는 컴퓨팅 디바이스(105)를 디바이스에서 동작하는 마지막 운영 체제로, 또는 디바이스가 고속 하이버네이션 상태에 들어가게 될 때 수신된 사용자 선택에 기초한 운영 체제로 재개할 수 있거나 하이버네이션 상태에서 나올 때 초기 부팅 프로세스 동안에 사용자 선택을 수신할 수 있다. 더 구체적으로, 사용자에게는 컴퓨팅 디바이스(105)를 부팅할 운영 체제를 선택할 선택 목록이 제시될 수 있다.
제어기(106)가 부팅할 운영 체제를 결정하면, 운영 체제에 대한 대기 컨텍스트가 비휘발성 메모리(120)로부터 휘발성 메모리(110)에 복사될 수 있다. 대기 컨텍스트는 비휘발성 메모리(110)의 컨텍스트 파티션에 위치할 수 있고 컨텍스트 파티션은 부팅할 운영 체제와 관련될 수 있다. 제어기(106)는 운영 체제에게 대기 컨텍스트를 이용하여 컴퓨팅 디바이스(105)에서 대기 상태에서 나가고 대기 컨텍스트에 저장된 동일한 구성으로 들어가도록 지시할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스(105)가 로딩하려고 하는 운영 체제에 대한 대기 상태가 저장되지 않을 수 있고 제어기(106)는 운영 체제에 대한 완전한 부팅 프로세스를 개시할 수 있다. 일부 실시예들에서, 운영 체제에 대한 대기 컨텍스트를 이용하여 재개하는 것은 운영 체제의 새로운 인스턴스를 부팅하는 것보다 더 빠르게 발생할 것이다.
도 2는 운영 체제들 간에 스위칭하기 위한 로직 흐름(200)의 예시적인 실시예를 예시한다. 로직 흐름(200)은 예시적인 목적으로 도 1의 컴퓨팅 디바이스(105)를 참조하여 논의된다. 그러나, 다양한 실시예들은 이런 식으로 제한되지 않고 로직 흐름은 임의의 컴퓨팅 시스템 또는 디바이스에서 구현될 수 있다.
블록 202에서, 제어기(106)는 운영 체제들 간에 스위칭하기 위한 정보를 수신할 수 있다. 더 구체적으로, 정보는 사용자가 제1 운영 체제로부터 제2 운영 체제로 스위칭하기를 원한다는 것을 나타낼 수 있다. 이전에 논의된 바와 같이, 제1 운영 체제와 제2 운영 체제는 윈도(Windows) OS®, 애플(Apple) OS®, 리눅스(Linux) OS®, 유닉스(UNIX) OS® 등을 포함하는 임의의 유형의 운영 체제일 수 있다. 정보는 제1 운영 체제 내에서 동작하는 동안 그래픽 사용자 인터페이스를 통한 사용자 선택에 의해 생성될 수 있고 제어기(106)에 의해 수신될 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스(105)는 그것에서 인에이블된 임의의 수의 운영 체제를 가질 수 있고 정보는 또한 사용자가 어느 운영 체제로 스위칭하기를 원하는지를 나타낼 수 있다.
다양한 실시예들에서, 제어기(106)는 블록 204에서 제1 운영 체제에게 ACPI 사양에 의해 정의된 S3 상태와 같은 대기 상태에 들어가도록 지시할 수 있다. 제1 운영 체제는 S3 상태로 들어갈 때 대기 컨텍스트를 휘발성 메모리(120)에 저장할 수 있다. 대기 컨텍스트는 레지스터 설정, 애플리케이션 설정, 파일 설정, 운영 체제 상태 설정 등을 포함하는 제1 운영 체제에 대한 다양한 구성 설정들을 포함할 수 있다.
다양한 실시예들에서, 로직 흐름(200)은 블록 206에서 제1 운영 체제에 대한 대기 컨텍스트를 비휘발성 메모리(110)에 복사 또는 저장하는 것을 포함할 수 있다. 다양한 실시예들에서, 제어기(106)는 제1 운영 체제에 대한 대기 컨텍스트를 휘발성 메모리(120)에서 비휘발성 메모리(110)에 복사할 수 있다. 더 구체적으로, 제어기(106)는 대기 컨텍스트를 제1 운영 체제와 관련된 제1 컨텍스트 파티션에 복사하여 대기 컨텍스트를 지속적인 방식으로 저장할 수 있다. 일부 실시예들에서, 제어기(106)는 대기 컨텍스트가 비휘발성 메모리(110)에 복사되면 그것을 휘발성 메모리(120)에서 제거할 수 있다. 그러나, 동일한 또는 다른 실시예들에서 제어기(106)는 대기 컨텍스트가 휘발성 메모리(120)에 계속 있게 할 수 있다.
판정 블록 208에서, 제어기(106)는 제2 운영 체제에 대한 대기 컨텍스트가 비휘발성 메모리(110)에 존재하는지 존재하지 않는지를 결정할 수 있다. 제2 운영 체제에 대한 대기 컨텍스트가 비휘발성 메모리에 존재한다면, 제어기(106)는 블록 210에서 그 대기 컨텍스트를 비휘발성 메모리(110)에서 휘발성 메모리(120)에 복사할 수 있다. 다양한 실시예들에서, 대기 컨텍스트는 제2 운영 체제와 관련된 제2 컨텍스트 파티션으로부터 휘발성 메모리(120)에 복사될 수 있다.
다양한 실시예들에서, 제어기(106)는 블록 212에서 제2 운영 체제를 개시하거나 제2 운영 체제에게 대기 상태 또는 S3 상태에서 나가도록 지시할 수 있다. 제2 운영 체제는 제어기(106)에 의해 휘발성 메모리(120)에 로딩된 제2 운영 체제에 대한 대기 컨텍스트를 이용하여 대기 상태에서 나갈 수 있다. 일부 실시예들에서, 제2 운영 체제는 제어기(106)가 레지스터를 인에이블하거나 설정하는 것, 핀을 설정하는 것, 시스템 호출 등을 통해 대기에서 나가기 위한 정보를 수신할 수 있다. 제2 운영 체제는 대기 상태에서 나가고 정상 동작 상태에서 동작할 수 있다.
판정 블록 208에서, 제2 운영 체제가 비휘발성 메모리(110)에 저장된 대기 컨텍스트를 가지고 있지 않다면, 제어기(106)는 블록 214에서 제2 운영 체제의 새로운 인스턴스를 개시할 수 있다. 제2 운영 체제는 파워 오프 상태로부터 부팅하는 임의의 운영 체제처럼 로딩할 수 있다.
로직 흐름(200)은 다수의 블록을 특정한 순서로 예시하고 있지만, 다양한 실시예들은 이런 식으로 제한되지 않고 로직 흐름(200)의 블록들은 임의의 순서로 발생할 수 있다. 게다가, 로직 흐름(200)은 임의의 횟수 반복될 수 있고 컴퓨팅 디바이스는 임의의 수의 운영 체제들 간에 스위칭할 수 있다.
도 3은 운영 체제들을 고속 하이버네이트 상태에 들어가게 하기 위한 로직 흐름(300)의 예시적인 실시예를 예시한다. 로직 흐름(300)은 예시적인 목적으로 도 1의 컴퓨팅 디바이스(105) 및 컴포넌트들을 참조하여 논의된다. 그러나, 다양한 실시예들은 이런 식으로 제한되지 않고 로직 흐름은 임의의 컴퓨팅 시스템 또는 디바이스에서 구현될 수 있다.
블록 302에서, 제어기(106)는 컴퓨팅 디바이스(105)를 대기 상태에 들어가게 하기 위한 정보를 수신할 수 있다. 그러나 컴퓨팅 디바이스(105)를 대기 상태에 들어가게 하기 위한 요청을 수신하는 것에 응답하여 제어기(106)는 컴퓨팅 디바이스(105)를 고속 하이버네이트 상태에 들어가게 하고 대기 컨텍스트들을 비휘발성 메모리(110)에 지속적인 방식으로 저장할 수 있다. 또한, 컴퓨팅 디바이스(105)를 대기 상태에 들어가게 하기 위한 정보는 사용자 선택, 컴퓨터 덮개의 닫힘, 버튼의 눌림 등과 같은 트리거 이벤트들에 기초하여 수신될 수 있다.
다양한 실시예들에서, 제어기(106)는 블록 304에서 컴퓨팅 디바이스(105)에서 실행 중인 하나 이상의 프로세스를 가진 모든 운영 체제에게 대기 상태에 들어가도록 지시하거나 정보를 송신할 수 있다. 각각의 운영 체제는 대기 상태에 들어가고 대기 컨텍스트를 대기 상태에서 나갈 때 이용하기 위해 휘발성 메모리(120)에 저장할 수 있다. 이전에 논의된 바와 같이, 각각의 운영 체제에 대한 대기 컨텍스트들은 운영 체제에 대한 구성 정보를 포함할 수 있다. 또한, 제어기(106)는 판정 블록 306에서 컴퓨팅 디바이스(106)에서 실행 중인 하나 이상의 프로세스를 가진 각각의 운영 체제가 대기 상태에 있는지를 결정할 수 있다.
판정 블록 306에서 제어기(106)가 각각의 운영 체제가 대기 상태에 있지 않은 것을 결정하면, 제어기(106)는 블록 308에서 지연 시간 기간(delay time period)을 대기하고 모든 운영 체제가 대기 상태에 있는지를 다시 체크할 수 있다. 이 시간 기간은 초, 밀리초, 마이크로초, 나노초 등의 단위의 임의의 시간 기간일 수 있다. 예를 들어, 제어기(106)는 1밀리초 대기하고 모든 운영 체제가 대기 상태에 있는지 여부를 다시 체크할 수 있다. 다양한 실시예들은 이 예로 제한되지 않고 지연 시간 기간은 임의의 양의 시간일 수 있다. 이 프로세스는 모든 운영 체제가 대기 상태에 있을 때까지 또는 특정 수의 결정이 이루어졌을 때까지 반복될 수 있다.
판정 블록 306에서 제어기(106)가 각각의 운영 체제가 대기 상태에 있는 것을 결정하면, 제어기(106)는 블록 310에서 각각의 대기 컨텍스트를 휘발성 메모리(120)로부터 비휘발성 메모리(110)로 운영 체제들 각자의 컨텍스트 파티션들 각각에 복사할 수 있다. 예를 들어, 제어기는 제1 운영 체제에 대한 대기 컨텍스트를 휘발성 메모리(120)로부터 비휘발성 메모리(110)의 제1 컨텍스트 파티션에 복사하고 제2 운영 체제에 대한 대기 컨텍스트를 비휘발성 메모리(110)의 제2 컨텍스트 파티션에 복사할 수 있다. 제어기(106)는 임의의 수의 운영 체제에 대한 대기 컨텍스트를 복사할 수 있다.
판정 블록 312에서, 제어기(106)는 운영 체제들 각각에 대한 모든 대기 컨텍스트가 비휘발성 메모리(110)에 복사되었는지를 결정할 수 있다. 대기 컨텍스트들이 비휘발성 메모리(110)에 완전히 복사되지 않았다면, 제어기는 블록 314에서 지연 시간 기간을 대기할 수 있다. 제어기(106)는 모든 대기 컨텍스트가 비휘발성 메모리(110)에 복사될 때까지 여러 번 계속해서 지연 시간 기간을 대기할 수 있다. 지연 시간 기간은 임의의 시간 기간일 수 있다.
블록 312에서, 제어기(106)가 모든 대기 컨텍스트가 비휘발성 메모리(110)에 복사되었다고 결정하면, 제어기(106)는 블록 316에서 컴퓨팅 디바이스(105)를 ACPI 사양에 의해 정의된 하이버네이트 또는 S4 상태에 들어가게 할 수 있다. 컴퓨팅 디바이스(105)는, 일부 실시예들에서, 제어기(106) 또는 컴퓨팅 디바이스(105)에 의해 트리거 이벤트가 수신될 때까지 하이버네이트 상태에 계속 있을 수 있다.
도 4는 운영 체제들에 대한 고속 하이버네이트 상태에서 나가기 위한 로직 흐름(400)의 예시적인 실시예를 예시한다. 로직 흐름(400)은 예시적인 목적으로 도 1의 컴퓨팅 디바이스(105) 및 컴포넌트들을 참조하여 논의된다. 그러나, 다양한 실시예들은 이런 식으로 제한되지 않고 로직 흐름은 임의의 컴퓨팅 시스템 또는 디바이스에서 구현될 수 있다.
블록 402에서, 제어기(106)는 시스템 또는 컴퓨팅 디바이스(105)를 고속 하이버네이트 상태로부터 깨우기 위한 정보를 수신할 수 있다. 제어기(106)는 컴퓨터 덮개의 열림, 버튼의 눌림 또는 밀림, 네트워크 연결을 통해 수신된 정보, 마우스의 또는 트랙패드 상의 움직임 등과 같은 트리거 이벤트에 응답하여 정보를 수신할 수 있다. 다양한 실시예들은 이런 식으로 제한되지 않고 제어기(106)는 임의의 수의 트리거 이벤트에 기초하여 정보를 수신할 수 있다. 또한, 제어기(106)는 하나 이상의 신호와 같은 통신, 핀 또는 레지스터의 설정 등을 통해 정보를 수신할 수 있다.
다양한 실시예들에서, 제어기(106)는 컴퓨팅 디바이스(105)에 대해 어느 운영 체제로 부팅할지를 결정할 수 있다. 제어기(106)의 결정은 컴퓨팅 시스템(105)이 고속 하이버네이트 상태에 들어가게 될 때 수신된 정보에 기초할 수 있다. 예를 들어, 제어기(106)는 고속 하이버네이트 상태로부터 재개할 때 어느 운영 체제를 로딩할지를 나타내는 정보를 수신했을 수 있다. 게다가, 제어기(106)는 디바이스가 고속 하이버네이트 상태에 들어가게 될 때 마지막으로 컴퓨팅 디바이스(105)가 있던 운영 체제로 재개할 수 있다. 제어기(106)는 또한 초기 부팅 시퀀스 동안에 어느 운영 체제로 로딩할지를 사용자가 선택하게 하기 위해 사용자 인터페이스 또는 메뉴를 인에이블할 수 있다.
제어기(106)는 판정 블록 406에서 컴퓨팅 디바이스(105)가 부팅하려고 하는 운영 체제에 대한 대기 컨텍스트가 비휘발성 메모리(110)에 존재하는지를 결정할 수 있다. 제어기(106)가 운영 체제에 대한 대기 컨텍스트가 존재하는 것을 결정하면, 제어기(106)는 블록 408에서 그 대기 컨텍스트를 휘발성 메모리(120)에 로딩할 수 있다. 다양한 실시예들에서, 대기 컨텍스트는 운영 체제와 관련된 비휘발성 메모리(110)의 컨텍스트 파티션으로부터 휘발성 메모리(120)로 로딩될 수 있다. 제어기(106)는 블록 410에서 운영 체제를 대기 상태에서 정상 운영 체제로 깨울 수 있다. 제어기(106)는 운영 체제를 깨우기 위해 시스템 호출, 레지스터의 인에이블(enablement), 핀의 설정 등으로서 정보를 송신할 수 있고 운영 체제는 휘발성 메모리에 로딩된 대기 컨텍스트를 이용하여 대기 상태로부터 재개할 수 있다.
블록 406에서, 제어기(106)가 운영 체제에 대한 컨텍스트가 비휘발성 메모리(110)에 존재하지 않는 것을 결정하면, 제어기(106)는 블록 412에서 운영 체제의 새로운 인스턴스를 개시할 수 있다. 운영 체제의 새로운 인스턴스는 부팅될 때 정상적인 또는 완전한 부팅 프로세스를 거칠 수 있고 완전히 부팅되면 정상 상태에서 동작할 수 있다.
도 5는 제1 운영 체제와 제2 운영 체제 간에 스위칭하기 위한 컴포넌트 흐름도(500)를 예시한다. 이 컴포넌트 흐름도(500)는 컴퓨팅 디바이스(105)와 같은, 컴퓨팅 시스템의 다양한 컴포넌트들 간의 통신을 예시한다. 도 5는 제1 운영 체제(502), 제2 운영 체제(504), 제어기(506), 비휘발성 메모리(510) 및 휘발성 메모리(520)를 포함한다. 일부 실시예들에서, 제어기(506), 비휘발성 메모리(510) 및 휘발성 메모리(520)는 도 1의 동일하게 라벨링된 컴포넌트들과 유사하거나 동일할 수 있다. 그러나, 다양한 실시예들은 이런 식으로 제한되지 않는다.
또한, 비휘발성 메모리(510)는 제1 운영 체제(502)를 위한 제1 운영 체제 공간(512), 제2 운영 체제(504)를 위한 제2 운영 체제 공간(514), 제1 컨텍스트 파티션(516) 및 제2 컨텍스트 파티션(518)을 포함하는 임의의 수의 영역들 또는 파티션들로 분할될 수 있다. 운영 체제들을 위한 운영 체제 공간은 대응하는 운영 체제들이 데이터, 정보, 파일, 애플리케이션 등을 저장하기 위한 비휘발성 메모리(510) 내의 전용 공간일 수 있다. 각각의 운영 체제는 정보가 다른 운영 체제에 의해 덮어쓰기되지 않는 것을 보장하기 위해 전용 운영 체제 공간을 가질 수 있다. 일부 실시예들에서, 운영 체제 공간은 비휘발성 메모리(510)의 파티션일 수 있다.
이전에 논의된 바와 같이, 각각의 운영 체제는 비휘발성 메모리(510)에 대기 컨텍스트 파티션을 포함할 수 있다. 도 5에 예시된 바와 같이, 제1 운영 체제(502)는 제1 컨텍스트 파티션(516)과 관련될 수 있고 제2 운영 체제(504)는 제2 컨텍스트 파티션(518)과 관련될 수 있다. 대기 컨텍스트 파티션은 운영 체제들 간의 스위칭, 다수의 운영 체제와 고속 하이버네이트에 들어가는 것 및 다수의 운영 체제와 고속 하이버네이트에서 나가는 것을 가능하게 하기 위해 관련된 운영 체제에 대한 대기 컨텍스트를 저장할 수 있다. 컴퓨팅 디바이스의 각각의 운영 체제는 대응하는 또는 관련된 대기 컨텍스트 파티션을 포함할 수 있다.
도 5는 컴퓨팅 시스템의 컴포넌트들 간의 다양한 통신을 예시한다. 예시된 예시적인 실시예에서, 사용자는 컴퓨팅 디바이스를 제1 운영 체제(502)에서 운영하고 있을 수 있다. 라인 550에서, 제어기(506)는 제1 운영 체제(502)로부터 사용자가 제1 운영 체제(502)에서 제2 운영 체제(504)로 스위칭하기를 원한다는 것을 나타내는 정보를 수신할 수 있다. 정보의 수신에 응답하여, 제어기(506)는 라인 552에서 제1 운영 체제(502)에게 대기 상태에 들어가도록 통신 또는 지시할 수 있다. 이 통신은 시스템 또는 함수 호출, 레지스터 설정 등을 포함하는 임의의 형태로 행해질 수 있다.
다양한 실시예들에서, 제1 운영 체제(502)는 대기 상태에 들어가라는 지시를 수신할 수 있고 라인 554에 의해 나타낸 바와 같이 대기 컨텍스트를 휘발성 메모리(520)에 저장할 수 있다. 대기 컨텍스트는 운영 체제 설정, 레지스터, 애플리케이션 설정, 파일 등을 포함할 수 있다. 도 5는 라인 554가 제1 운영 체제(502)로부터 휘발성 메모리로 가는 것을 예시하고 있지만, 대기 컨텍스트 정보는 디바이스의 다양한 컴포넌트들로부터, 예를 들어 휘발성 메모리 자체 내의 위치들 또는 제1 OS 공간(514)으로부터 올 수 있다. 일부 실시예들에서, 정보는 하나 이상의 프로세서 컴포넌트(도시되지 않음)에 의해 결정되고 휘발성 메모리(520)에 저장될 수 있다.
제어기(506)는 라인들 556 및 558에 의해 나타낸 바와 같이 대기 컨텍스트를 휘발성 메모리(520)로부터 비휘발성 메모리(510)에 복사할 수 있다. 더 구체적으로, 대기 컨텍스트는 제1 운영 체제(502)와 관련된 제1 컨텍스트 파티션(516)에 저장될 수 있다. 제1 운영 체제(502)에 대한 대기 컨텍스트가 비휘발성 메모리(510)에 복사되면, 제어기(506)는 라인 560에서 제2 운영 체제(504)에 대한 대기 컨텍스트가 제2 운영 체제(504)와 관련된 제2 컨텍스트 파티션(518)에 저장되는 것을 결정할 수 있다. 또한, 제2 운영 체제에 대한 대기 컨텍스트는 그 후 라인 562에 의해 나타낸 바와 같이 제2 컨텍스트 파티션(518)으로부터 휘발성 메모리(520)에 복사될 수 있다.
일부 실시예들에서, 제어기(506)는 라인 564에서 함수 또는 시스템 호출과 같은 통신, 레지스터의 설정, 또는 핀의 인에이블/디스에이블을 통해 제2 운영 체제(504)를 대기 상태로부터 깨울 수 있다. 제2 운영 체제(504)는 라인 566에 의해 나타낸 바와 같이 휘발성 메모리(520)에 복사된 대기 컨텍스트를 이용하여 대기 상태로부터 깰 수 있다. 제2 운영 체제(504)는 그 후 정상 동작 상태에서 동작할 수 있다. 또한, 제1 운영 체제(502)에 대한 대기 컨텍스트가 비휘발성 메모리(520)에 저장되고 지속될 수 있다.
도 5는 운영 체제를 스위칭하기 위한 하나의 예시적인 실시예를 예시한다. 그러나, 다양한 실시예들은 이런 식으로 제한되지 않고 임의의 운영 체제가 다른 운영 체제로 스위칭될 수 있다.
도 6은 다수의 운영 체제를 가진 컴퓨팅 디바이스를 고속 하이버네이트 상태로 들어가게 하는 컴포넌트 흐름도(600)를 예시한다. 이 컴포넌트 흐름도(600)는 컴퓨팅 디바이스(105)와 같은, 컴퓨팅 시스템의 다양한 컴포넌트들 간의 통신을 예시한다.
라인 602에서, 제어기 컴포넌트(506)는 제1 운영 체제(502)로부터 사용자가 컴퓨팅 시스템 또는 디바이스를 대기 상태에 들어가게 하기를 원한다는 것을 나타내는 정보를 수신할 수 있다. 제어기 컴포넌트(506)는 프로세서 컴포넌트(도시되지 않음)를 통해 또는 제1 운영 체제(502)가 레지스터를 설정하거나 핀을 인에이블/디스에이블하는 것에 의해 정보를 수신할 수 있다. 도 6은 정보가 제1 운영 체제(502)로부터 오는 것을 예시하고 있지만, 일부 실시예들에서 정보는 제2 운영 체제(504) 또는 사용자가 현재 시스템을 운영하고 있는 임의의 다른 운영 체제로부터 올 수 있다.
다양한 실시예들에서, 제어기(506)는 라인 604에서 운영 체제들에게 대기 상태에 들어가도록 지시할 수 있다. 예시된 예에서는 2개의 운영 체제가 병렬로 실행 중인 프로세스들을 가질 수 있고 제어기(506)는 양쪽 운영 체제들에 정보를 송신한다. 그러나, 다양한 실시예들은 이런 식으로 제한되지 않고 컴퓨팅 디바이스는 그것에서 동시에 실행 중인 임의의 수의 운영 체제를 가질 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스는 그것에서 실행 중인 하나의 운영 체제만을 가질 수 있다. 이전에 논의된 바와 같이, 제어기(506)는 시스템 또는 함수 호출, 레지스터의 설정, 핀의 인에이블/디스에이블 등을 통해 운영 체제들에게 지시할 수 있다.
운영 체제들(502, 504)은 대기 상태에 들어갈 수 있고 라인 606에 의해 나타낸 바와 같이 각각 대기 컨텍스트들을 휘발성 메모리(520)에 저장할 수 있다. 다양한 실시예들에서, 임의의 수의 운영 체제가 휘발성 메모리에 대기 컨텍스트들을 저장할 수 있다. 라인 608에서, 제어기(506)는 휘발성 메모리(520)로부터 비휘발성 메모리(510)로 대기 컨텍스트들의 복사를 개시할 수 있다. 더욱이, 제1 운영 체제(502)에 대한 대기 컨텍스트는 라인 610에 의해 나타낸 바와 같이 제1 컨텍스트 파티션(516)에 복사될 수 있다. 제2 운영 체제(504)에 대한 대기 컨텍스트는 라인 612에 의해 나타낸 바와 같이 제2 컨텍스트 파티션(518)에 복사될 수 있다. 이전에 논의된 바와 같이, 임의의 수의 시스템 컨텍스트가 비휘발성 메모리(510)의 컨텍스트 파티션에 복사될 수 있다.
제어기(506)는 모든 대기 컨텍스트가 비휘발성 메모리(510)에 복사된 것을 결정할 수 있고 라인 614에 의해 나타낸 바와 같이 컴퓨팅 시스템을 하이버네이트 상태에 들어가게 할 수 있다. 더 구체적으로, 프로세서 컴포넌트, 메모리 컴포넌트 등을 포함하는 다양한 컴포넌트들이 ACPI 사양에 의해 정의된 하이버네이트 상태에 들어가게 될 수 있다.
도 7a/도 7b는 다수의 운영 체제를 가진 시스템이 고속 하이버네이트 상태에서 나가기 위한 컴포넌트 블록 흐름도들(700 및 750)을 예시한다. 이 컴포넌트 흐름도들(700/750)은 컴퓨팅 디바이스(105)와 같은, 컴퓨팅 시스템의 다양한 컴포넌트들 간의 통신을 예시한다. 도 7a 및 도 7b는 2개의 운영 체제를 가진 시스템을 예시하고 있지만, 다양한 실시예들은 이런 식으로 제한되지 않고 시스템은 임의의 수의 운영 체제를 가질 수 있다. 도 7a는 시스템이 고속 하이버네이트 상태에서 나가고 제1 운영 체제(502)로 부팅하는 것을 예시하고, 도 7b는 시스템이 고속 하이버네이트 상태에서 나가고 제2 운영 체제(504)로 부팅하는 것을 예시한다.
라인 702에서, 제어기(506)는 트리거 컴포넌트(725)로부터 고속 하이버네이트 상태에서 나가는 것을 개시하기 위한 트리거 이벤트를 수신할 수 있다. 트리거 컴포넌트(725)는 고속 하이버네이트 상태를 포함하는 하나 이상의 상태에서 나가도록 시스템을 트리거할 수 있는 임의의 컴포넌트일 수 있다. 예를 들어, 트리거 컴포넌트(725)는 컴퓨팅 디바이스의 덮개에 있는 걸쇠(latch), 버튼, 네트워크 인터페이스, 마우스, 트랙패드 등일 수 있다. 또한, 트리거 이벤트는 트리거 컴포넌트(725)에 의해 검출될 수 있는 임의의 이벤트일 수 있다. 예를 들어, 트리거 이벤트는 덮개의 열림 또는 닫힘, 버튼의 눌림 또는 밀림, 네트워크 인터페이스를 통하여 수신된 정보, 마우스의 또는 트랙패드 상의 움직임 등일 수 있다. 다양한 실시예들은 위에 언급한 예들로 제한되지 않는다.
다양한 실시예들에서, 제어기(506)는 트리거 이벤트를 수신하고 고속 하이버네이트 상태로부터 재개하는 동안 부팅할 운영 체제를 결정할 수 있다. 운영 체제는 컴퓨팅 디바이스가 있던 마지막 운영 체제 또는 사용자가 선택한 운영 체제일 수 있다. 사용자는 디바이스가 고속 하이버네이트 상태에서 나가고 있던 동안 또는 디바이스가 고속 하이버네이트 상태에 들어가게 될 때 운영 체제를 선택했을 수 있다.
이 예시적인 실시예에서, 시스템은 제1 운영 체제(502)로 부팅할 수 있고 제어기는 라인 704에 의해 나타낸 바와 같이 제1 컨텍스트 파티션(516)으로부터 휘발성 메모리(520)로 제1 운영 체제에 대한 대기 컨텍스트의 복사를 개시할 수 있다. 대기 컨텍스트는 라인 706에 의해 나타낸 바와 같이 휘발성 메모리에 복사될 수 있다. 제1 운영 체제는 그 후 부팅하기 위해 제1 운영 체제에 대한 대기 컨텍스트를 이용할 수 있다.
이전에 논의된 바와 같이, 시스템은 고속 하이버네이트 상태에 있지만, 운영 체제들은 대기 상태로 구성되고 들어가게 되었다. 따라서, 제어기(506)는 라인 708에서 대기 상태에서 나가기 위한 정보를 제1 운영 체제(502)에 송신할 수 있다. 제1 운영 체제(502)는 휘발성 메모리 내의 대기 컨텍스트를 이용하여 대기 상태에서 나가고 정상 동작 상태로 부팅할 수 있다.
도 7b는 도 7a와 유사하지만, 시스템은 제2 운영 체제(504)로 부팅한다. 라인 702에서, 제어기(506)는 고속 하이버네이트에서 나가기 위한 트리거 이벤트를 수신할 수 있다. 제어기(506)는 시스템이 제2 운영 체제(504)로 부팅하려고 하는 것을 결정하고 라인 752에서 제2 컨텍스트 파티션(518)으로부터 휘발성 메모리(520)로 제2 운영 체제(504)에 대한 대기 컨텍스트의 복사를 개시할 수 있다. 또한, 대기 컨텍스트는 라인 754에서 휘발성 메모리(520)에 복사될 수 있다. 마지막으로, 제어기(506)는 라인 756에서 제2 운영 체제(504)에 대한 대기 상태로부터 나가는 것을 개시할 수 있다. 제2 운영 체제(504)는 정상 동작 상태로 부팅하기 위해 휘발성 메모리(520) 내의 대기 컨텍스트를 이용할 수 있다.
도 7a 및 도 7b는 제1 운영 체제(502)와 제2 운영 체제(504)가 비휘발성 메모리에 저장된 대기 컨텍스트들을 이용하여 고속 하이버네이트 상태에서 나가는 것을 예시한다. 그러나, 일부 경우에, 운영 체제들에 대한 대기 컨텍스트가 존재하지 않을 수 있다. 이러한 경우에, 제어기(506)는 시스템에서 운영 체제의 새로운 인스턴스를 개시할 수 있고 부팅 시퀀스는 처음부터 시작될 수 있다.
도 8은 로직 흐름(800)의 예시적인 실시예를 예시한다. 로직 흐름(800)은 본 명세서에 설명된 하나 이상의 실시예에 의해 실행되는 동작들의 일부 또는 전부를 대표할 수 있다. 예를 들어, 로직 흐름(800)은 시스템(100 및 900)에 의해 수행되는 동작들을 예시할 수 있다.
도 8에 도시되어 있는 예시된 실시예에서, 로직 흐름(800)은 블록 802에서 제1 운영 체제로부터 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 것을 포함할 수 있다. 예를 들어, 제어기는 운영 체제로부터 사용자가 현재 이용 중인 운영 체제로부터 상이한 운영 체제로 전환하기를 원한다는 것을 나타내는 정보를 수신할 수 있다. 다양한 실시예들에서, 사용자는 전환을 호출하기 위해 그래픽 사용자 인터페이스(GUI), 키 시퀀스, 마우스 움직임, 트랙패드 움직임 등을 이용하는 것을 포함하는 임의의 수단을 통해 선택을 할 수 있다. 운영 체제는 전환을 호출하기 위한 정보를 수신하고 이 정보를 호출, 레지스터 설정 및 핀을 인에이블하거나 디스에이블하는 것을 포함하는 임의의 통신 또는 시그널링 기법을 이용하여 제어기에 전달할 수 있다.
블록 804에서, 로직 흐름(800)은 제2 운영 체제에 대한 시스템 컨텍스트를 비휘발성 메모리의 제2 위치로부터 휘발성 메모리에 복사하는 것을 포함할 수 있고, 제2 위치는 제2 운영 체제와 관련된 것이다. 예를 들어, 제어기는 제2 운영 체제에 대한 시스템 컨텍스트가 비휘발성 메모리의 파티션과 같은 위치에 존재하는 것을 결정할 수 있다. 제어기는 제2 운영 체제에 대한 파티션 내의 시스템 컨텍스트를 휘발성 메모리에 복사할 수 있다.
다양한 실시예들에서, 로직 흐름(800)은 블록 806에서 제2 운영 체제에 대한 시스템 컨텍스트를 이용하여 제1 운영 체제로부터 제2 운영 체제로 전환하는 것을 포함할 수 있다. 더 구체적으로, 제2 운영 체제는 휘발성 메모리에 로딩된 시스템 컨텍스트를 이용하여 대기 상태에서 나가고 정상 동작 상태에서 동작할 수 있다. 일부 실시예들에서, 제어기는 제1 운영 체제에게 대기 상태에 들어가도록 지시할 수 있고 제1 운영 체제가 제2 운영 체제로 전환할 때 제1 운영 체제에 대한 시스템 컨텍스트를 제1 위치에 저장할 수 있다. 그러나, 다양한 실시예들은 이런 식으로 제한되지 않는다.
도 9는 이전에 설명된 다양한 실시예들을 구현하기에 적합한 예시적인 컴퓨팅 아키텍처(900)의 실시예를 예시한다. 일 실시예에서, 컴퓨팅 아키텍처(900)는 시스템(100) 및 컴퓨팅 디바이스(105)를 포함하거나 이들의 일부로서 구현될 수 있다.
이 출원에서 이용될 때, 용어 "시스템" 및 "컴포넌트"는 하드웨어이든, 하드웨어와 소프트웨어의 조합이든, 소프트웨어이든, 실행 중인 소프트웨어이든, 컴퓨터 관련 엔티티를 언급하기 위해 의도된 것이고, 그의 예들이 예시적인 컴퓨팅 아키텍처(900)에 의해 제공된다. 예를 들어, 컴포넌트는 프로세서에서 실행 중인 프로세스, 프로세서, 하드 디스크 드라이브, (광학 및/또는 자기 저장 매체의) 다수의 스토리지 드라이브, 개체, 실행 파일(executable), 실행 스레드(thread of execution), 프로그램, 및/또는 컴퓨터일 수 있지만, 이들로 제한되지 않는다. 예시로서, 서버에서 실행 중인 애플리케이션 및 서버 양쪽 모두가 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 스레드 내에 상주할 수 있고, 컴포넌트는 하나의 컴퓨터에 국한되고/되거나 둘 이상의 컴퓨터에 분산될 수 있다. 또한, 컴포넌트들은 동작들을 코디네이션하기 위해 다양한 유형의 통신 매체에 의해 서로 통신 결합될 수 있다. 코디네이션은 일방향 또는 양방향 정보 교환을 수반할 수 있다. 예를 들어, 컴포넌트들은 통신 매체를 통하여 전달되는 신호들의 형태로 정보를 전달할 수 있다. 정보는 다양한 신호 라인에 할당된 신호들로서 구현될 수 있다. 이러한 할당들에서, 각각의 메시지가 신호이다. 그러나, 추가 실시예들은 대안적으로 데이터 메시지들을 이용할 수 있다. 이러한 데이터 메시지들은 다양한 연결들을 통하여 송신될 수 있다. 예시적인 연결들은 병렬 인터페이스, 직렬 인터페이스, 및 버스 인터페이스를 포함한다.
컴퓨팅 아키텍처(900)는 다양한 일반적인 컴퓨팅 요소들을 포함하며, 이러한 컴퓨팅 요소들로는 하나 이상의 프로세서, 멀티-코어 프로세서, 코-프로세서, 메모리 유닛, 칩셋, 제어기, 주변 장치, 인터페이스, 발진기, 타이밍 디바이스, 비디오 카드, 오디오 카드, 멀티미디어 입출력(I/O) 컴포넌트, 전원 등이 있다. 그러나, 실시예들은 컴퓨팅 아키텍처(900)에 의한 구현으로 제한되지 않는다.
도 9에 도시된 바와 같이, 컴퓨팅 아키텍처(900)는 처리 유닛(904), 시스템 메모리(906) 및 시스템 버스(908)를 포함한다. 처리 유닛(904)은 도 1에 도시된 프로세서 컴포넌트(102)에 관련하여 설명한 것들과 같은, 다양한 상업적으로 입수가능한 프로세서들 중 임의의 것일 수 있다.
시스템 버스(908)는 시스템 메모리(906)를 포함하지만 이에 제한되지 않는 시스템 컴포넌트들의 처리 유닛(904)에 대한 인터페이스를 제공한다. 시스템 버스(908)는 (메모리 제어기가 있는 또는 없는) 메모리 버스, 주변 장치 버스, 및 각종의 상업적으로 입수가능한 버스 아키텍처 중 임의의 것을 이용한 로컬 버스에 추가로 상호연결될 수 있는 몇몇 유형의 버스 구조 중 임의의 것일 수 있다. 인터페이스 어댑터들은 슬롯 아키텍처를 통해 시스템 버스(908)에 연결될 수 있다. 예시적인 슬롯 아키텍처들로는 AGP(Accelerated Graphics Port), 카드 버스, (E)ISA((Extended) Industry Standard Architecture), MCA(Micro Channel Architecture), NuBus, PCI(X)(Peripheral Component Interconnect (Extended)), PCI 익스프레스, PCMCIA(Personal Computer Memory Card International Association) 등이 포함될 수 있지만, 이들로 제한되지 않는다.
컴퓨팅 아키텍처(900)는 다양한 제조 물품을 포함하거나 구현할 수 있다. 제조 물품은 로직을 저장하는 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 컴퓨터 판독가능 저장 매체의 예로는 휘발성 메모리 또는 비휘발성 메모리, 이동식 또는 비이동식 메모리, 소거 가능 또는 소거 불가능 메모리, 기입 가능 또는 재기입 가능 메모리 등을 포함하여, 전자 데이터를 저장할 수 있는 임의의 유형(tangible) 매체가 포함될 수 있다. 로직의 예로는 임의의 적합한 유형의 코드를 이용하여 구현되는 실행가능한 컴퓨터 프로그램 명령어들이 포함될 수 있으며, 코드로는 소스 코드, 컴파일된 코드, 해석된 코드, 실행가능 코드, 정적 코드, 동적 코드, 개체 지향 코드, 비주얼 코드 등이 있다. 실시예들은 또한 본 명세서에 설명된 동작들의 수행을 가능하게 하기 위해 하나 이상의 프로세서에 의해 판독 및 실행될 수 있는, 비일시적 컴퓨터 판독가능 매체에 포함된 명령어들로서 적어도 부분적으로 구현될 수 있다.
시스템 메모리(906)는 하나 이상의 고속 메모리 유닛 형태의 다양한 유형의 컴퓨터 판독가능 저장 매체를 포함할 수 있고, 이러한 고속 메모리 유닛들로는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), DDRAM(Double-Data-Rate DRAM), SDRAM(synchronous DRAM), 정적 RAM(SRAM), PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 메모리, 강유전성 고분자 메모리와 같은 고분자 메모리(polymer memory), 오보닉 메모리(ovonic memory), 상변화 또는 강유전성 메모리, SONOS(silicon-oxide-nitride-oxide-silicon) 메모리, 자기 또는 광학 카드, RAID(Redundant Array of Independent Disks) 드라이브들과 같은 디바이스들의 어레이, 고체 상태 메모리 디바이스들(예컨대, USB 메모리, 고체 상태 드라이브(SSD)) 및 정보를 저장하기에 적합한 임의의 다른 유형의 저장 매체 등이 있다. 도 9에 도시되어 있는 예시된 실시예에서, 시스템 메모리(906)는 비휘발성 메모리(910) 및/또는 휘발성 메모리(912)를 포함할 수 있다. 기본 입출력 시스템(BIOS)이 비휘발성 메모리(910)에 저장될 수 있다.
컴퓨터(902)는 하나 이상의 저속 메모리 유닛 형태의 다양한 유형의 컴퓨터 판독가능 저장 매체를 포함할 수 있고, 이러한 저속 메모리 유닛들로는 내부(또는 외부) 하드 디스크 드라이브(HDD)(914), 이동식 자기 디스크(918)로부터 판독 또는 이에 기입하기 위한 자기 플로피 디스크 드라이브(FDD)(916), 및 이동식 광학 디스크(922)(예컨대, CD-ROM 또는 DVD)로부터 판독 또는 이에 기입하기 위한 광학 디스크 드라이브(920)가 포함된다. HDD(914), FDD(916) 및 광학 디스크(920)는 각각 HDD 인터페이스(924), FDD 인터페이스(926) 및 광학 드라이브 인터페이스(928)에 의해 시스템 버스(908)에 연결될 수 있다. 외부 드라이브 구현들을 위한 HDD 인터페이스(924)는 USB(Universal Serial Bus) 및 IEEE 1394 인터페이스 기술들 중 적어도 하나 또는 양쪽 모두를 포함할 수 있다.
드라이브들 및 관련된 컴퓨터 판독가능 매체들은 데이터, 데이터 구조, 컴퓨터 실행가능 명령어 등의 휘발성 및/또는 비휘발성 스토리지를 제공한다. 예를 들어, 운영 체제(930), 하나 이상의 애플리케이션 프로그램(932), 기타 프로그램 모듈(934), 및 프로그램 데이터(936)를 포함하는, 다수의 프로그램 모듈이 드라이브들 및 메모리 유닛들(910, 912)에 저장될 수 있다. 일 실시예에서, 하나 이상의 애플리케이션 프로그램(932), 기타 프로그램 모듈(934), 및 프로그램 데이터(936)는, 예를 들어, 시스템(105)의 다양한 애플리케이션들 및/또는 컴포넌트들을 포함할 수 있다.
사용자는 하나 이상의 유선/무선 입력 디바이스, 예를 들어, 키보드(938) 및 마우스(940)와 같은 포인팅 디바이스를 통하여 컴퓨터(902)에 명령들 및 정보를 입력할 수 있다. 다른 입력 디바이스들로는 마이크, 적외선(IR) 리모트 컨트롤, 무선 주파수(RF) 리모트 컨트롤, 게임 패드, 스타일러스 펜, 카드 판독기, 동글, 지문 판독기, 글러브, 그래픽 태블릿, 조이스틱, 키보드, 망막 판독기, 터치 스크린(예를 들어, 용량 방식, 저항 방식 등), 트랙볼, 트랙패드, 센서, 스타일러스 등이 포함될 수 있다. 이들 및 다른 입력 디바이스들은 종종 시스템 버스(908)에 결합되는 입력 디바이스 인터페이스(942)를 통하여 처리 유닛(904)에 연결되지만, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스 등과 같은 다른 인터페이스들에 의해 연결될 수 있다.
모니터(944) 또는 다른 유형의 디스플레이 디바이스가 또한 비디오 어댑터(946)와 같은 인터페이스를 통해 시스템 버스(908)에 연결된다. 모니터(944)는 컴퓨터(902)에 대해 내부 또는 외부일 수 있다. 모니터(944) 외에, 컴퓨터는 전형적으로 스피커, 프린터 등과 같은 다른 주변 출력 디바이스들을 포함한다.
컴퓨터(902)는 원격 컴퓨터(948)와 같은 하나 이상의 원격 컴퓨터와의 유선 및/또는 무선 통신을 통한 논리 연결들을 이용하여 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(948)는 워크스테이션, 서버 컴퓨터, 라우터, 퍼스널 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서 기반 엔터테인먼트 기기, 피어 디바이스 또는 다른 공통 네트워크 노드일 수 있고, 전형적으로 컴퓨터(902)에 관련하여 설명한 요소들 중 다수 또는 전부를 포함하지만, 간결성을 위해, 메모리/스토리지 디바이스(950)만이 예시되어 있다. 도시된 논리 연결들은 근거리 네트워크(LAN)(952) 및/또는 더 큰 네트워크, 예를 들어, 광역 네트워크(WAN)(954)와의 유선/무선 연결을 포함한다. 이러한 LAN 및 WAN 네트워킹 환경들은 사무실들 및 회사들에서 흔한 것이고, 인트라넷들과 같은 전사적 컴퓨터 네트워크들을 가능하게 하고, 이 네트워크들은 모두, 예를 들어, 인터넷과 같은 전세계적 통신 네트워크에 연결될 수 있다.
LAN 네트워킹 환경에서 이용될 때, 컴퓨터(902)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(956)를 통하여 LAN(952)에 연결된다. 어댑터(956)는, 어댑터(956)의 무선 기능성과 통신하기 위해 배치된 무선 액세스 포인트를 또한 포함할 수 있는, LAN(952)과의 유선 및/또는 무선 네트워크들을 가능하게 할 수 있다.
WAN 네트워킹 환경에서 이용될 때, 컴퓨터(902)는 모뎀(958)을 포함할 수 있거나, WAN(954)을 통해 통신 서버에 연결되거나, 예를 들어 인터넷을 경유하여, WAN(954)을 통하여 통신을 설정하기 위한 다른 수단을 갖는다. 내부 또는 외부이고 유선 및/또는 무선 디바이스일 수 있는 모뎀(958)은 입력 디바이스 인터페이스(942)를 통해 시스템 버스(908)에 연결된다. 네트워킹된 환경에서, 컴퓨터(902)에 관련하여 도시된 프로그램 모듈들, 또는 그의 부분들이 원격 메모리/스토리지 디바이스(950)에 저장될 수 있다. 도시된 네트워크 연결들은 예시적인 것이고 컴퓨터들 간에 통신 링크를 설정하는 다른 수단들이 이용될 수 있다는 것을 이해할 것이다.
컴퓨터(902)는 IEEE 802 계열의 표준들을 이용하는 유선 및 무선 디바이스들 또는 엔티티들, 예를 들어 무선 통신에 기능적으로 배치된 무선 디바이스들과 통신하도록 동작가능하다(예를 들어, IEEE 802.11 OTA(over-the-air) 변조 기법들). 이것은 특히, 적어도 와이파이(WiFi)(즉 Wireless Fidelity), 와이맥스(WiMax), 및 블루투스(Bluetooth™) 무선 기술들, 3G, 4G, LTE 무선 기술들을 포함한다. 따라서, 통신은 종래의 네트워크에서와 같이 미리 정의된 구조이거나 단지 적어도 2개의 디바이스 간의 애드혹 통신일 수 있다. 와이파이 네트워크들은 안전하고, 신뢰성 있고, 빠른 무선 연결을 제공하기 위해 IEEE 802.11x(a, b, g, n, 등등)라고 불리는 무선 기술들을 이용한다. 와이파이 네트워크는 컴퓨터들을 서로에, 인터넷에, 그리고 (IEEE 802.3 관련 매체 및 기능들을 이용하는) 유선 네트워크들에 연결하기 위해 이용될 수 있다.
도 1 내지 도 8에 관련하여 이전에 설명된 바와 같은 컴퓨터 시스템(100)의 다양한 요소들은 다양한 하드웨어 요소, 소프트웨어 요소, 또는 이들의 조합을 포함할 수 있다. 하드웨어 요소들의 예로는 디바이스, 로직 디바이스, 컴포넌트, 프로세서, 마이크로프로세서, 회로, 프로세서, 회로 요소(예컨대, 트랜지스터, 저항기, 커패시터, 인덕터 등), 집적 회로, ASIC(application specific integrated circuits), PLD(programmable logic devices), DSP(digital signal processors), FPGA(field programmable gate array), 메모리 유닛, 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등이 포함될 수 있다. 소프트웨어 요소들의 예로는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 소프트웨어 개발 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시저, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심벌, 또는 이들의 임의의 조합이 포함될 수 있다. 그러나, 실시예가 하드웨어 요소 및/또는 소프트웨어 요소를 이용하여 구현되는지를 결정하는 것은 원하는 계산 속도, 전력 레벨, 내열성, 처리 사이클 예산, 입력 데이터 속도, 출력 데이터 속도, 메모리 리소스, 데이터 버스 속도 및 주어진 구현에 대해 원하는 다른 설계 또는 성능 제약과 같은 임의의 수의 인자들에 따라 달라질 수 있다.
이 상세한 개시내용은 이제 추가 실시예들에 관한 예들을 제공하는 것으로 화제를 돌린다. 아래에 제공된 예 1 내지 예 33(1-33)은 예시적이고 비제한적인 것으로 의도되어 있다.
제1 예에서, 시스템 또는 장치는, 적어도 일부가 하드웨어로 되어있는 로직을 포함하고, 상기 로직은, 제1 운영 체제로부터 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하고, 상기 제2 운영 체제에 대한 시스템 컨텍스트를 비휘발성 메모리의 위치로부터 휘발성 메모리에 복사하고, 상기 위치는 상기 제2 운영 체제와 관련된다. 상기 로직은 또한 상기 제2 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제1 운영 체제로부터 상기 제2 운영 체제로 전환할 수 있다.
제2 예에서 그리고 상기 제1 예의 증진에서, 장치는 상기 제1 운영 체제를 상기 제1 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 로직을 포함한다.
제3 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 부팅 프로세스 동안에 또는 상기 제1 운영 체제의 동작 동안에 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 로직을 포함한다.
제4 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위해 상기 제1 운영 체제의 그래픽 사용자 인터페이스에서의 사용자 선택을 가능하게 하는 로직을 포함한다.
제5 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 다른 위치에 저장하는 로직을 포함하고, 상기 다른 위치는 상기 제1 운영 체제와 관련된다.
제6 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제2 운영 체제로부터 상기 제1 운영 체제로의 전환을 호출하기 위한 정보를 수신하고, 상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 다른 위치로부터 상기 휘발성 메모리에 복사하고, 상기 제1 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제2 운영 체제로부터 상기 제1 운영 체제로 전환하는 로직을 포함한다.
제7 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제2 운영 체제로부터의 전환 이전에 상기 제2 운영 체제에 대한 새로운 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 위치에 저장하는 로직을 포함한다.
제8 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제2 운영 체제를 상기 제2 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 로직을 포함한다.
제9 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 상기 위치는 상기 비휘발성 메모리의 파티션을 포함하고, 상기 다른 위치는 상기 비휘발성 메모리의 상이한 파티션을 포함한다.
제10 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 물품은 복수의 명령어를 포함하는 컴퓨터 판독가능 저장 매체를 포함하고, 상기 복수의 명령어는 실행될 때 처리 회로로 하여금 제1 운영 체제로부터 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하고, 상기 제2 운영 체제에 대한 시스템 컨텍스트를 비휘발성 메모리의 위치로부터 휘발성 메모리에 복사하고 - 상기 위치는 상기 제2 운영 체제와 관련됨 -, 상기 제2 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제1 운영 체제로부터 상기 제2 운영 체제로 전환하는 것을 가능하게 한다.
제11 예에서 그리고 상기 이전의 예들 중 어느 하나의 증진에서, 저장 매체는 실행될 때 처리 회로로 하여금 상기 제1 운영 체제를 상기 제1 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 것을 가능하게 하는 명령어들을 포함한다.
제12 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 저장 매체는 실행될 때 처리 회로로 하여금 부팅 프로세스 동안에 또는 상기 제1 운영 체제의 동작 동안에 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 것을 가능하게 하는 명령어들을 포함한다.
제13 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 저장 매체는 실행될 때 처리 회로로 하여금 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위해 상기 제1 운영 체제의 그래픽 사용자 인터페이스에서의 사용자 선택을 가능하게 하는 것을 가능하게 하는 명령어들을 포함한다.
제14 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 저장 매체는 실행될 때 처리 회로로 하여금 상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 다른 위치에 저장하는 것을 가능하게 하는 명령어들을 포함하고, 상기 다른 위치는 상기 제1 운영 체제와 관련된다.
제15 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 저장 매체는 실행될 때 처리 회로로 하여금 상기 제2 운영 체제로부터 상기 제1 운영 체제로의 전환을 호출하기 위한 정보를 수신하고, 상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 다른 위치로부터 상기 휘발성 메모리에 복사하고, 상기 제1 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제2 운영 체제로부터 상기 제1 운영 체제로 전환하는 것을 가능하게 하는 명령어들을 포함한다.
제16 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 저장 매체는 실행될 때 처리 회로로 하여금 상기 제2 운영 체제에 대한 새로운 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 위치에 저장하는 것을 가능하게 하는 명령어들을 포함한다.
제17 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 저장 매체는 실행될 때 처리 회로로 하여금 상기 제2 운영 체제를 상기 제2 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 것을 가능하게 하는 명령어들을 포함한다.
제18 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 위치는 상기 비휘발성 메모리의 파티션을 포함하고, 상기 다른 위치는 상기 비휘발성 메모리의 상이한 파티션을 포함한다.
제19 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 방법은 제1 운영 체제로부터 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 단계, 상기 제2 운영 체제에 대한 시스템 컨텍스트를 비휘발성 메모리의 위치로부터 휘발성 메모리에 복사하는 단계 - 상기 위치는 상기 제2 운영 체제와 관련됨 -, 및 상기 제2 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제1 운영 체제로부터 상기 제2 운영 체제로 전환하는 단계를 포함할 수 있다.
제20 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 방법은 상기 제1 운영 체제를 상기 제1 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 단계를 포함할 수 있다.
제21 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 방법은 부팅 프로세스 동안에 또는 상기 제1 운영 체제의 동작 동안에 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 단계를 포함할 수 있다.
제22 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 방법은 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위해 상기 제1 운영 체제의 그래픽 사용자 인터페이스에서의 사용자 선택을 가능하게 하는 단계를 포함할 수 있다.
제23 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 방법은 상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 다른 위치에 저장하는 단계를 포함할 수 있고, 상기 다른 위치는 상기 제1 운영 체제와 관련된다.
제24 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 방법은 상기 제2 운영 체제로부터 상기 제1 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 단계, 상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 다른 위치로부터 상기 휘발성 메모리에 복사하는 단계, 및 상기 제1 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제2 운영 체제로부터 상기 제1 운영 체제로 전환하는 단계를 포함할 수 있다.
제25 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 위치는 상기 비휘발성 메모리의 파티션을 포함하고, 상기 다른 위치는 상기 비휘발성 메모리의 상이한 파티션을 포함할 수 있다.
제26 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 제1 운영 체제로부터 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 수단, 상기 제2 운영 체제에 대한 시스템 컨텍스트를 비휘발성 메모리의 위치로부터 휘발성 메모리에 복사하는 수단 - 상기 위치는 상기 제2 운영 체제와 관련됨 -, 및 상기 제2 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제1 운영 체제로부터 상기 제2 운영 체제로 전환하는 수단을 포함할 수 있다.
제27 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제1 운영 체제를 상기 제1 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 수단을 포함할 수 있다.
제28 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 부팅 프로세스 동안에 또는 상기 제1 운영 체제의 동작 동안에 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 수단을 포함할 수 있다.
제29 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위해 상기 제1 운영 체제의 그래픽 사용자 인터페이스에서의 사용자 선택을 가능하게 하는 수단을 포함할 수 있다.
제30 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 다른 위치에 저장하는 수단을 포함할 수 있고, 상기 다른 위치는 상기 제1 운영 체제와 관련된다.
제31 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제2 운영 체제로부터 상기 제1 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 수단, 상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 다른 위치로부터 상기 휘발성 메모리에 복사하는 수단, 및 상기 제1 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제2 운영 체제로부터 상기 제1 운영 체제로 전환하는 수단을 포함할 수 있다.
제32 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제2 운영 체제에 대한 새로운 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 위치에 저장하는 수단을 포함할 수 있다.
제33 예에서 그리고 이전의 예들 중 어느 하나의 증진에서, 장치는 상기 제2 운영 체제를 상기 제2 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 수단을 포함할 수 있다.
일부 실시예들은 "일 실시예" 또는 "실시예"라는 표현과 함께 이들의 파생어들을 이용하여 설명될 수 있다. 이 용어들은 실시예와 관련하여 설명된 특정 특징, 구조, 또는 특성이 적어도 하나의 실시예에 포함된다는 것을 의미한다. 명세서의 다양한 곳에서 "일 실시예에서"라는 문구의 출현들은 반드시 모두가 동일한 실시예를 언급하고 있는 것은 아니다. 또한, 일부 실시예들은 "결합된" 및 "연결된"이라는 표현과 함께 이들의 파생어들을 이용하여 설명될 수 있다. 이 용어들은 반드시 서로에 대한 동의어로 의도된 것은 아니다. 예를 들어, 일부 실시예들은 둘 이상의 요소가 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 나타내기 위해 "연결된" 및/또는 "결합된"이라는 용어들을 이용하여 설명될 수 있다. 그러나, "결합된"이라는 용어는 둘 이상의 요소가 서로 직접 접촉하지 않지만, 그럼에도 여전히 서로 협력하거나 상호작용하는 것도 의미할 수 있다.
본 개시내용의 요약서는 독자가 기술적 개시내용의 본질을 빠르게 확인할 수 있게 하기 위해 제공된다는 점을 강조한다. 그것은 청구항들의 범위 또는 의미를 해석하거나 제한하기 위해 이용되지 않을 것이라는 이해와 함께 제출된다. 게다가, 전술한 상세한 설명에서는, 본 개시내용을 간소화할 목적으로 다양한 특징들이 단일 실시예에 함께 모여 있다는 것을 알 수 있다. 이러한 개시내용의 방법은 청구된 실시예들이 각각의 청구항에 명시적으로 기재된 것보다 더 많은 특징들을 요구한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음의 청구항들이 반영하는 바와 같이, 본 발명의 요지는 단일의 개시된 실시예의 모든 특징들보다 적은 특징들에 있다. 따라서, 다음의 청구항들은 이로써 상세한 설명에 포함되며, 각각의 청구항은 개별 실시예로서 독립해 있다. 첨부된 청구항들에서, "including" 및 "in which"라는 용어들은 각각 각자의 용어들 "comprising" 및 "wherein"의 평이한 영어에 상당하는 것들로서 이용된다. 더욱이, "제1", "제2", "제3" 등의 용어들은 단지 라벨들로서 이용되며, 그들의 대상들에 수치적 요건을 부과하기 위해 의도된 것은 아니다.
위에 설명된 것은 개시된 아키텍처의 예들을 포함한다. 물론, 컴포넌트들 및/또는 방법들의 생각할 수 있는 모든 조합을 설명하는 것은 가능하지 않지만, 본 기술분야의 통상의 기술자라면 많은 추가 조합들 및 치환들이 가능하다는 것을 인지할 수 있다. 따라서, 이 새로운 아키텍처는 첨부된 청구항들의 정신 및 범위 안에 속하는 모든 그러한 변경들, 수정들 및 변형들을 포괄하도록 의도된 것이다.

Claims (25)

  1. 장치로서,
    적어도 일부가 하드웨어로 되어있는 로직을 포함하고,
    상기 로직은,
    제1 운영 체제로부터 제2 운영 체제로의 전환(transition)을 호출하기 위한 정보를 수신하고,
    상기 제2 운영 체제에 대한 시스템 컨텍스트(system context)를 비휘발성 메모리의 위치로부터 휘발성 메모리에 복사하고 - 상기 위치는 상기 제2 운영 체제와 관련됨 -,
    상기 제2 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제1 운영 체제로부터 상기 제2 운영 체제로 전환하는 장치.
  2. 제1항에 있어서,
    상기 로직은, 상기 제1 운영 체제를 상기 제1 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태(sleep state)에 들어가게 하는 장치.
  3. 제1항에 있어서,
    상기 로직은, 부팅 프로세스(boot-up process) 동안에 또는 상기 제1 운영 체제의 동작 동안에 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 장치.
  4. 제1항에 있어서,
    상기 로직은, 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위해 상기 제1 운영 체제의 그래픽 사용자 인터페이스에서의 사용자 선택을 가능하게 하는 장치.
  5. 제1항에 있어서,
    상기 로직은, 상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 다른 위치에 저장하고, 상기 다른 위치는 상기 제1 운영 체제와 관련되는 장치.
  6. 제5항에 있어서,
    상기 로직은,
    상기 제2 운영 체제로부터 상기 제1 운영 체제로의 전환을 호출하기 위한 정보를 수신하고,
    상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 다른 위치로부터 상기 휘발성 메모리에 복사하고,
    상기 제1 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제2 운영 체제로부터 상기 제1 운영 체제로 전환하는 장치.
  7. 제6항에 있어서,
    상기 로직은, 상기 제2 운영 체제로부터의 전환 이전에 상기 제2 운영 체제에 대한 새로운 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 위치에 저장하는 장치.
  8. 제6항에 있어서,
    상기 로직은, 상기 제2 운영 체제를 상기 제2 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 장치.
  9. 제5항에 있어서,
    상기 위치는 상기 비휘발성 메모리의 파티션을 포함하고, 상기 다른 위치는 상기 비휘발성 메모리의 상이한 파티션을 포함하는 장치.
  10. 저장된 복수의 명령어를 포함하는 하나 이상의 머신 판독가능 저장 매체로서,
    상기 복수의 명령어는, 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금,
    제1 운영 체제로부터 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하게 하고,
    상기 제2 운영 체제에 대한 시스템 컨텍스트를 비휘발성 메모리의 위치로부터 휘발성 메모리에 복사하게 하고 - 상기 위치는 상기 제2 운영 체제와 관련됨 -,
    상기 제2 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제1 운영 체제로부터 상기 제2 운영 체제로 전환하게 하는 하나 이상의 머신 판독가능 저장 매체.
  11. 제10항에 있어서,
    실행될 때, 상기 컴퓨팅 디바이스로 하여금, 상기 제1 운영 체제를 상기 제1 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 명령어들을 포함하는 하나 이상의 머신 판독가능 저장 매체.
  12. 제10항에 있어서,
    실행될 때, 상기 컴퓨팅 디바이스로 하여금, 부팅 프로세스 동안에 또는 상기 제1 운영 체제의 동작 동안에 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하게 하는 명령어들을 포함하는 하나 이상의 머신 판독가능 저장 매체.
  13. 제10항에 있어서,
    실행될 때, 상기 컴퓨팅 디바이스로 하여금, 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위해 상기 제1 운영 체제의 그래픽 사용자 인터페이스에서의 사용자 선택을 가능하게 하는 명령어들을 포함하는 하나 이상의 머신 판독가능 저장 매체.
  14. 제10항에 있어서,
    실행될 때, 상기 컴퓨팅 디바이스로 하여금, 상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 다른 위치에 저장하게 하는 명령어들을 포함하고, 상기 다른 위치는 상기 제1 운영 체제와 관련되는 하나 이상의 머신 판독가능 저장 매체.
  15. 제14항에 있어서,
    실행될 때, 상기 컴퓨팅 디바이스로 하여금,
    상기 제2 운영 체제로부터 상기 제1 운영 체제로의 전환을 호출하기 위한 정보를 수신하게 하고,
    상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 다른 위치로부터 상기 휘발성 메모리에 복사하게 하고,
    상기 제1 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제2 운영 체제로부터 상기 제1 운영 체제로 전환하게 하는
    명령어들을 포함하는 하나 이상의 머신 판독가능 저장 매체.
  16. 제15항에 있어서,
    실행될 때, 상기 컴퓨팅 디바이스로 하여금, 상기 제2 운영 체제에 대한 새로운 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 위치에 저장하게 하는 명령어들을 포함하는 하나 이상의 머신 판독가능 저장 매체.
  17. 제15항에 있어서,
    실행될 때, 상기 컴퓨팅 디바이스로 하여금, 상기 제2 운영 체제를 상기 제2 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 명령어들을 포함하는 하나 이상의 머신 판독가능 저장 매체.
  18. 제14항에 있어서,
    상기 위치는 상기 비휘발성 메모리의 파티션을 포함하고, 상기 다른 위치는 상기 비휘발성 메모리의 상이한 파티션을 포함하는 하나 이상의 머신 판독가능 저장 매체.
  19. 방법으로서,
    제1 운영 체제로부터 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 단계,
    상기 제2 운영 체제에 대한 시스템 컨텍스트를 비휘발성 메모리의 위치로부터 휘발성 메모리에 복사하는 단계 - 상기 위치는 상기 제2 운영 체제와 관련됨 -, 및
    상기 제2 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제1 운영 체제로부터 상기 제2 운영 체제로 전환하는 단계
    를 포함하는 방법.
  20. 제19항에 있어서,
    상기 제1 운영 체제를 상기 제1 운영 체제에 대해 실행 중인 프로세스들의 중단을 포함하는 슬립 상태에 들어가게 하는 단계를 포함하는 방법.
  21. 제19항에 있어서,
    부팅 프로세스 동안에 또는 상기 제1 운영 체제의 동작 동안에 상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 단계를 포함하는 방법.
  22. 제19항에 있어서,
    상기 제1 운영 체제로부터 상기 제2 운영 체제로의 전환을 호출하기 위해 상기 제1 운영 체제의 그래픽 사용자 인터페이스에서의 사용자 선택을 가능하게 하는 단계를 포함하는 방법.
  23. 제19항에 있어서,
    상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 다른 위치에 저장하는 단계를 포함하고, 상기 다른 위치는 상기 제1 운영 체제와 관련되는 방법.
  24. 제23항에 있어서,
    상기 제2 운영 체제로부터 상기 제1 운영 체제로의 전환을 호출하기 위한 정보를 수신하는 단계,
    상기 제1 운영 체제에 대한 시스템 컨텍스트를 상기 비휘발성 메모리의 상기 다른 위치로부터 상기 휘발성 메모리에 복사하는 단계, 및
    상기 제1 운영 체제에 대한 시스템 컨텍스트를 이용하여 상기 제2 운영 체제로부터 상기 제1 운영 체제로 전환하는 단계
    를 포함하는 방법.
  25. 제23항에 있어서,
    상기 위치는 상기 비휘발성 메모리의 파티션을 포함하고, 상기 다른 위치는 상기 비휘발성 메모리의 상이한 파티션을 포함하는 방법.
KR1020167022107A 2014-03-20 2015-03-10 운영 체제들 간에 스위칭하기 위한 기법들 KR102026217B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/220,812 US9934047B2 (en) 2014-03-20 2014-03-20 Techniques for switching between operating systems
US14/220,812 2014-03-20
PCT/US2015/019612 WO2015142567A1 (en) 2014-03-20 2015-03-10 Techniques for switching between operating systems

Publications (2)

Publication Number Publication Date
KR20160108492A true KR20160108492A (ko) 2016-09-19
KR102026217B1 KR102026217B1 (ko) 2019-09-27

Family

ID=54142194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167022107A KR102026217B1 (ko) 2014-03-20 2015-03-10 운영 체제들 간에 스위칭하기 위한 기법들

Country Status (6)

Country Link
US (2) US9934047B2 (ko)
EP (1) EP3120242A4 (ko)
JP (2) JP6438039B2 (ko)
KR (1) KR102026217B1 (ko)
CN (2) CN107832095A (ko)
WO (1) WO2015142567A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI522924B (zh) * 2014-04-30 2016-02-21 宏碁股份有限公司 電子裝置及其切換作業系統的方法
US9690596B1 (en) * 2014-09-02 2017-06-27 Phoenix Technologies Ltd. Firmware based runtime operating system switch
US20160209973A1 (en) * 2015-01-21 2016-07-21 Microsoft Technology Licensing, Llc. Application user interface reconfiguration based on an experience mode transition
CN105677321A (zh) * 2015-12-28 2016-06-15 宇龙计算机通信科技(深圳)有限公司 切换系统的方法和装置
CN107223236B (zh) * 2016-12-29 2020-05-15 深圳前海达闼云端智能科技有限公司 多虚拟机同时运行的方法、装置及电子设备
FR3107975B1 (fr) 2020-03-05 2022-12-02 Idemia France Procédé mis en œuvre dans un module à circuit intégré, module à circuit intégré correspondant, système comportant un tel module et programme d’ordinateur associé
JP2022097174A (ja) * 2020-12-18 2022-06-30 東芝テック株式会社 制御装置及びその起動方法、ならびに電気機器
CN114840259A (zh) * 2021-02-02 2022-08-02 台湾积体电路制造股份有限公司 操作具有多个操作系统的用户装置的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010018717A1 (en) * 2000-02-29 2001-08-30 International Business Machines Corporation Computer system, operating system switching system, operating system mounting method, operating system switching method, storage medium, and program transmission apparatus
US7356677B1 (en) * 2001-10-19 2008-04-08 Flash Vos, Inc. Computer system capable of fast switching between multiple operating systems and applications
JP2008524730A (ja) * 2004-12-24 2008-07-10 ▲聯▼想(北京)有限公司 コンピュータマルチオペレーティングシステムの切換え方法
KR20110130435A (ko) * 2009-03-20 2011-12-05 휴렛트-팩카드 캄파니 메모리 세그먼테이션 및 acpi 기반 컨텍스트 전환을 사용하는 운영 시스템 로딩

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11288366A (ja) * 1998-04-01 1999-10-19 Canon Inc 情報処理方法及び装置並びに記憶媒体
US7522965B2 (en) * 2000-12-01 2009-04-21 O2Micro International Limited Low power digital audio decoding/playing system for computing devices
US20030037279A1 (en) * 2001-08-14 2003-02-20 Jui-Min Laio HDD data backup and recovery method
US7254744B2 (en) * 2003-08-19 2007-08-07 Intel Corporation BIOS for saving and restoring operational state in the absence of AC power
CN1658185A (zh) * 2004-02-18 2005-08-24 国际商业机器公司 相互独立地共存多个操作系统的计算机系统与其切换方法
KR100714677B1 (ko) * 2004-05-21 2007-05-07 삼성전자주식회사 운영 시스템 전환을 수행하는 컴퓨터 시스템 및 전환 방법
US7886136B2 (en) * 2004-05-21 2011-02-08 Samsung Electronics Co., Ltd. Computer system, method, and medium for switching operating system
US9619279B2 (en) 2004-08-18 2017-04-11 Red Bend Software Sas Operating systems sharing supervisor address space with same virtual to physical mapping for supervisor address space using same translation formula with different translation tree
US7529923B2 (en) * 2005-06-30 2009-05-05 Intel Corporation Operating system mode transfer
TWI279724B (en) * 2005-09-07 2007-04-21 Mitac Technology Corp Method for fast activating execution of computer multimedia playing from standby mode
US7523323B2 (en) * 2005-09-15 2009-04-21 Intel Corporation Method and apparatus for quick resumption
CN1804806A (zh) * 2006-01-16 2006-07-19 浙江大学 Java操作系统中进程的实现和进程状态转换的方法
JP2007221370A (ja) * 2006-02-15 2007-08-30 Matsushita Electric Ind Co Ltd 復号装置、及び集積回路
JP4233585B2 (ja) * 2006-07-25 2009-03-04 株式会社エヌ・ティ・ティ・ドコモ ペリフェラル切替装置及びペリフェラル切替制御装置
US20080162866A1 (en) * 2006-12-28 2008-07-03 Siddiqi Faraz A Apparatus and method for fast and secure memory context switching
JP2009110428A (ja) * 2007-10-31 2009-05-21 Toshiba Corp 情報処理装置および制御方法
US7971081B2 (en) 2007-12-28 2011-06-28 Intel Corporation System and method for fast platform hibernate and resume
CN101689127B (zh) * 2008-04-28 2013-10-09 松下电器产业株式会社 虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序
US8239667B2 (en) * 2008-11-13 2012-08-07 Intel Corporation Switching between multiple operating systems (OSes) using sleep state management and sequestered re-baseable memory
JP5343586B2 (ja) * 2009-01-29 2013-11-13 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US8453118B2 (en) * 2009-02-09 2013-05-28 Ricoh Company, Ltd. Automated multi-operating system testing with virtualization
CN101782861A (zh) * 2009-12-24 2010-07-21 华为终端有限公司 在嵌入式系统中操作系统的管理方法及装置
US8433889B2 (en) 2010-04-28 2013-04-30 Acer Cloud Technology, Inc. Operating system context switching
EP2569698B1 (en) * 2010-05-10 2019-07-10 Citrix Systems, Inc. Redirection of information from secure virtual machines to unsecure virtual machines
JP2012018515A (ja) * 2010-07-07 2012-01-26 Fujitsu Ltd 情報処理装置,制御方法,制御プログラム
EP2609734A4 (en) * 2010-08-27 2015-02-25 Intel Corp RECORDING AND PLAYING OF A MEETING IN A HOME ENTERTAINMENT SYSTEM
KR101727041B1 (ko) * 2010-10-29 2017-04-14 엘지전자 주식회사 이동 단말기 및 그 제어 방법
US8719561B2 (en) * 2010-11-29 2014-05-06 International Business Machines Corporation Automatic configuration sampling for managing configuration parameters of a computer system
US8370667B2 (en) * 2010-12-22 2013-02-05 Intel Corporation System context saving based on compression/decompression time
TWI528162B (zh) * 2011-01-26 2016-04-01 威盛電子股份有限公司 電腦系統及其作業系統切換方法
CN102135910B (zh) * 2011-03-03 2014-05-14 威盛电子股份有限公司 切换操作系统的方法及使用此方法的电子装置
WO2012150608A1 (en) * 2011-04-30 2012-11-08 Ineda Systems Pvt. Ltd Peripheral device sharing in multi host computing systems
US8966236B2 (en) * 2011-05-05 2015-02-24 Microsoft Technology Licensing, Llc Dynamically redirecting boot to another operating system
US8832690B1 (en) * 2011-06-21 2014-09-09 Google Inc. Multi-threaded virtual machine processing on a web page
US20130055254A1 (en) * 2011-08-31 2013-02-28 Nokia Corporation Methods and apparatuses for providing a virtual machine with dynamic assignment of a physical hardware resource
WO2013035141A1 (ja) * 2011-09-05 2013-03-14 Suginaka Junko 情報処理装置、その起動制御方法、その起動制御プログラム及び外部デバイス
WO2013062564A1 (en) * 2011-10-28 2013-05-02 Intel Corporation Switching between operational contexts
JP2013137649A (ja) * 2011-12-28 2013-07-11 Toshiba Corp 情報処理装置および仮想マシンの制御方法
CN103309737A (zh) * 2012-03-07 2013-09-18 联想(北京)有限公司 一种切换操作系统的方法及设备
US9081603B2 (en) * 2012-07-09 2015-07-14 Cisco Technology, Inc. Packet forwarding optimization with virtual machine mobility by comparing device identifiers to determine VM movement
WO2014112981A1 (en) * 2013-01-15 2014-07-24 Empire Technology Development, Llc Function-targeted virtual machine switching
US9971616B2 (en) * 2013-02-26 2018-05-15 Red Hat Israel, Ltd. Virtual machine suspension
US9189248B2 (en) * 2013-04-25 2015-11-17 Insyde Software Corp. Specialized boot path for speeding up resume from sleep state

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010018717A1 (en) * 2000-02-29 2001-08-30 International Business Machines Corporation Computer system, operating system switching system, operating system mounting method, operating system switching method, storage medium, and program transmission apparatus
US7356677B1 (en) * 2001-10-19 2008-04-08 Flash Vos, Inc. Computer system capable of fast switching between multiple operating systems and applications
JP2008524730A (ja) * 2004-12-24 2008-07-10 ▲聯▼想(北京)有限公司 コンピュータマルチオペレーティングシステムの切換え方法
KR20110130435A (ko) * 2009-03-20 2011-12-05 휴렛트-팩카드 캄파니 메모리 세그먼테이션 및 acpi 기반 컨텍스트 전환을 사용하는 운영 시스템 로딩

Also Published As

Publication number Publication date
CN105993001A (zh) 2016-10-05
JP2017508204A (ja) 2017-03-23
EP3120242A1 (en) 2017-01-25
JP2019050023A (ja) 2019-03-28
US11307868B2 (en) 2022-04-19
KR102026217B1 (ko) 2019-09-27
CN105993001B (zh) 2021-02-09
WO2015142567A1 (en) 2015-09-24
US20170300342A1 (en) 2017-10-19
US9934047B2 (en) 2018-04-03
EP3120242A4 (en) 2017-11-15
CN107832095A (zh) 2018-03-23
JP6438039B2 (ja) 2018-12-12
JP6708333B2 (ja) 2020-06-10
US20150268968A1 (en) 2015-09-24

Similar Documents

Publication Publication Date Title
US11307868B2 (en) Techniques for switching between operating systems
US20100211769A1 (en) Concurrent Execution of a Smartphone Operating System and a Desktop Operating System
US8775836B2 (en) Method, apparatus and system to save processor state for efficient transition between processor power states
KR101646425B1 (ko) 동작 콘텍스트들 사이의 스위칭
EP3158452B1 (en) Firmware interface with durable memory storage
US10783252B2 (en) System and method for booting within a heterogeneous memory environment
TWI578154B (zh) 用於電源管理的系統、方法及設備
KR101770530B1 (ko) 통신 포트를 위한 저전력 상태를 인에이블하는 기술들
CN105940375B (zh) 针对多操作系统设备的动态再分配
KR20160108517A (ko) 멀티-운영 체제 디바이스들에 대한 액세스 격리
US20150198999A1 (en) Method for switching operating systems and electronic apparatus
US9910677B2 (en) Operating environment switching between a primary and a secondary operating system
CN103870295A (zh) 切换方法和电子设备
US9207747B2 (en) Method and device for advanced configuration and power interface (ACPI) sleep-state support using CPU-only reset
JP5085611B2 (ja) 実環境と仮想環境を遷移させるコンピュータ・プログラム
US20160253222A1 (en) Techniques for processing custom events

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