KR20120000089A - 비가상화 시스템에서의 메모리 확장을 지원하기 위한 상호 운영 시스템 메모리 핫스왑 - Google Patents

비가상화 시스템에서의 메모리 확장을 지원하기 위한 상호 운영 시스템 메모리 핫스왑 Download PDF

Info

Publication number
KR20120000089A
KR20120000089A KR1020117024680A KR20117024680A KR20120000089A KR 20120000089 A KR20120000089 A KR 20120000089A KR 1020117024680 A KR1020117024680 A KR 1020117024680A KR 20117024680 A KR20117024680 A KR 20117024680A KR 20120000089 A KR20120000089 A KR 20120000089A
Authority
KR
South Korea
Prior art keywords
page
partition
memory
pages
virtual memory
Prior art date
Application number
KR1020117024680A
Other languages
English (en)
Other versions
KR101602991B1 (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 KR20120000089A publication Critical patent/KR20120000089A/ko
Application granted granted Critical
Publication of KR101602991B1 publication Critical patent/KR101602991B1/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/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • 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/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • 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
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

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

Abstract

단일 컴퓨터 및 유사한 것 내의 다수의 OS들 메모리를 관리하기 위한 방법, 시스템, 장치 및 프로그램 제품들이 개시된다. BIOS 지원으로 핫 스와핑된 OS들 사이에서의 메모리 회수와 시스템 상태 관리를 위한 ACPI 기능들을 준수하는 것에 대한 제공이 이루어지고 이는 가상화 없이 사용 가능한 것이다.

Description

비가상화 시스템에서의 메모리 확장을 지원하기 위한 상호 운영 시스템 메모리 핫스왑{INTER OPERATING SYSTEM MEMORY HOTSWAP TO SUPPORT MEMORY GROWTH IN A NON-VIRTUALIZED SYSTEM}
본 발명은 일반적으로 유사한 아키텍처를 공유하는 개인용 컴퓨터 및 장치에 관한 것으로, 더 구체적으로는, 다수의 비가상화 운영 시스템 및/또는 컴퓨팅 장치 내의 또는 단일 컴퓨터 동작 세션 또는 콘텍스트 내의 유사한 것의 환경에서 메모리 리소스들을 관리, 활성화 및 제어하기 위한 접근 방법에 관한 것이다.
현대에는 소위 랩탑과 노트북 컴퓨터들을 포함한 개인용 컴퓨터(PC)의 사용이 점차 일반적이고 컴퓨터 자체는 전력과 복잡성이 증가되었으며 발열 전력은 감소되었다.
PC의 대부분은 제어 소프트웨어, 예를 들면 마이크로소프트® 윈도우® 비스타® 또는 비슷한 상업 제품과 같은 운영 시스템(Operating System;OS)을 구비한다. OS의 많은 변종들은 설계 트레이드오프(design tradeoffs)를 만들기 위한 필요성 때문에 대체로 이용가능하다. 특히, 부수적인 복잡성을 가진 기능 포화(feature richness)와 크기는 증가된 속도(특히 로드 시간 및 동작 속도)를 가진 제한된 능력에 대해 (각각) 트레이드오프된다.
따라서, 컴퓨터 및 다양한 접근 방법 내의 다수의 OS 사용에 대비해야할 필요성이 존재한다. 각각은 그것의 자체 트레이드오프와 함께 사용된다.
2009년 3월 20일 출원된 U.S. 가특허 출원 번호 61/210,578 내의 개시된, 일 접근 방법은, 비가상화 환경 내 OS 상호교환에 대비한다.
그러한 시스템을 구현할 때 OS들 사이에 시스템 메모리의 변경할 수 없는 분할을 피하거나 또는 완화하기 위해 메모리 관리에 대한 필요가 존재한다.
본 발명의 구현예는, 다른 것들 중에서도, 다수의 OS 지원을 추구하여 OS 메모리 복구 지원을 제공하기 위한 접근 방법에 대비한다.
구현예는 데이터 통신을 위해 컴퓨터를 동작시키는 것에 대한 방법을 제공하고 또한 이 방법을 구현한 장치도 제공한다. 추가로, 본 발명을 활용하기 위한 프로그램 제품과 다른 수단들이 제시된다.
본 발명의 양상에 따라, 본 발명의 구현예는 시스템 메모리를 3 페이지로 된 파티션들로 분할하는 것, 페이지 테이블을 생성하는 것, 적어도 2가지 OS들에서 가시적인 각각의 메모리 파티션들을 만드는 것, 하나의 OS와 관련된 일부 페이지들이 다른 OS에 의해 사용가능하다고 마킹하는 것과 페이지 메모리를 스와핑하는 것(swapping out)에 대비하여서 이전 콘텍스트가 재개되었을 때 페이지들이 차용되고 나중에 복구된다.
본 발명을 구현하는 것에 의해 제공되는 또는 이로부터 기인한 이점 및/또는 기능은 가상화 기술의 사용에 내재한 장시간의 리부트 시간 또는 단점들이 필요 없이 메모리가 다수의 OS들 (특히 2가지 OS들 또는 선택적으로 3가지 또는 그 이상) 사이에서 재배치된다. 결과적으로, 그러한 시스템, 예를 들어 하이퍼스페이스™ 펌웨어와 피닉스® 테크놀로지스 리미티드의 소프트웨어 제품은 향상된 메모리 리소스 사용인 것이다.
본 발명의 전술된 관련 이점들과 특징들은 다음 도면들과 함께 취해지는 발명의 구체적인 내용을 검토할 시에 쉽게 이해되어 알 수 있을 것이며, 본원의 일부분에 통합되어 이를 구성하고, 발명의 실시예를 도시하여 숫자와 같은 것들은 구성요소와 같은 것을 나타내는 도면들에 있어서 :
도 1은 본 발명에 따라 보안 기능을 구현하도록 구성된 전자 디바이스의 개략적인 블록도이다.
도 2는 본 발명의 일 특정 실시예에서 조작된 바와 같은 메모리를 예시하는 도해이다.
도 3과 도 4는 합쳐져 더 구체적으로, 본 발명의 실시예를 구현하는 것에 있어서 수행되는 단계들의 일부 개요를 예시하는 약간 더 자세한 플로우차트이다.
도 5는 본 발명의 구현예시가 컴퓨터 매체 또는 매체들 상에 인코딩되는 방법을 나타내는 도해이다.
도 6은 전자파를 사용하여 인코딩, 전송, 수신 및 디코딩되는 본 발명의 구현예시를 나타내는 도해이다.
이 도면에 도시된 다수의 구성요소들은 완전한 본 발명의 개시를 가능하게 하는 당업자에게 제공하기 위하여 제시된다. 본 명세서를 모호하게 하거나 또는 여기에 제공된 본 발명의 신규성 및 주요 이점들을 제거하거나 축소시키지 않도록 공지된 구성요소의 설명은 이 구체적인 내용에 포함되어있지 않다.
이제 본 발명의 예시적 구현예는 도해들과 관련하여 설명될 것이다. 도 1은 본 발명에 따라 보안 기능을 구현하도록 구성된 전자 디바이스의 개략적인 블록 다이어그램이다.
예시적인 구현예에서, 전자 디바이스(10)는 개인용 컴퓨터, 예를 들어 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 PC 또는 다른 적합한 컴퓨팅 디바이스로서 구현된다. 구체적인 내용은 개인용 컴퓨터의 동작의 개요를 서술하지만, 전자 디바이스가, PDA, 무선 통신 디바이스, 예를 들어 셀룰러 전화기, 내장형 컨트롤러들 또는 디바이스들, 예를 들어 셋톱박스들(set top boxes), 프린팅 디바이스들 또는 다른 적합한 디바이스들 또는 그것들의 조합으로 구현되고 본 발명으로 동작시키거나 상호운영에 적합하다는 것은 당업자에 의해 이해될 것이다.
전자 디바이스(10)는 전자 디바이스(10)의 전체적인 동작을 제어하도록 구성된 적어도 하나의 프로세서 또는 중앙 처리 장치(CPU)(12)를 포함한다. 비슷한 컨트롤러들 또는 마이크로프로세서 장치(Microprocessor Unit;MPU)들이 일반적이다. 프로세서(12)는 일반적으로 프론트사이드 버스(Front-Side Bus;FSB)와 같은 버스(13)를 통해 노스브리지 칩(Northbridge chip)과 같은 버스 컨트롤러(14)에 연결된다. 버스 컨트롤러(14)는 일반적으로 랜덤 액세스 메모리(Random Access Memory;RAM)와 같은 판독 기록 시스템 메모리(16)를 위한 인터페이스를 제공한다.
보통 동작 중에, CPU(12)는 시스템 메모리(16)로부터 컴퓨터 명령어(또한 컴퓨터 명령 코드로도 칭해지며 도 1에 도시되어있지 않음)를 인출한다. 그 후, CPU는 인출된 컴퓨터 명령어들을 해석하고, 그렇게 함으로써 전자 디바이스(10)의 동작을 제어하기 위해 명령어들을 해석하도록 동작한다. CPU의 사용과 같이, 시스템 메모리와 컴퓨터 명령어는 일반적으로 운영 시스템(OS) 코드 및 다른 소프트웨어를 구성한다는 것이 컴퓨팅 분야에서 공지되어 있다.
버스 컨트롤러(14)는 또한 시스템 버스(18), 예를 들어 일반 인텔® 방식 구현물 내 직접 매체 인터페이스(Direct Media Interface;DMI)에 연결되어있다. DMI(18)는 인텔® 입/출력 컨트롤러 허브 타입 8(ICH8)(24) 칩과 같은 소위 사우스브리지 칩(Southbridge chip)이다.
사우스브리지 칩(24)은 일반적으로 8포지션, 8접점(8PC8)(31) 방식의 유선 네트워크 커넥터에 연결되는 국제전기전자기술자협회 표준802.3(IEEE 802.3) 인터페이스의 1000베이스-T 방식과 같은 제 1 네트워크 인터페이스 컨트롤러(Network Interface Controller;NIC)(32)를 포함한다. 8PC8 커넥터(31)는 RJ45 포트 그리고 IEEE 802.3은 이더넷(Ethernet)으로 공지되어있다.
일반적인 구현예에서, 사우스브리지 칩(24)은 무선 송신기(71)를 구동하는 제 2 NIC(66)에 번갈아 연결되는 퍼리퍼럴 컴포넌트 인터커넥트(Peripheral Component Interconnect;PCI) 버스(22)에 연결된다. 무선 송신기(71)는 IEEE 802.11 또는 다른 적합한 표준을 준수하여 동작한다. 무선 송신기(71)는 일반적으로 라디오 안테나(72)의 일부 형태에 연결될 것이다. 또한 일반적으로, 사우스 브리지 칩(24)은 비휘발성 메모리(non-volatile random access memory;NVRAM)(33)에도 연결된다.
NIC(32)와 NIC(66) 중 하나 또는 양방 모두는 인터넷 서비스와 같은 논리 네트워크 연결을 형성하는데 사용되는 통신 신호를 전달한다. 실제로, 일반 컴퓨터 또는 비슷한 전자 디바이스(10)는 본 발명의 일반 범위 내에서 통신의 다른 모드를 위한 (예를 들어) 블루투스® 송수신기에 번갈아 연결되는 다른 인터페이스들, 예를 들어 유니버설 시리얼 버스(Universal Serial Bus;USB, 도 1에 도시되지 않음) 인터페이스를 갖는다.
도 2는 본 발명의 일 특정 구현예에서 조작된 바와 같은 메모리를 예시한 다이어그램이다. 도 2를 참조하여, 이제 X86 프로세서 기반 컴퓨터 내 리눅스® 방식 가상 메모리 관리로의 필수적인 변화들의 설명이 이어진다. 일 특정 구현예에 대해 필요한 변화들만이 설명되었는데, 독자가 리눅스® 방식 가상 메모리 관리 소프트웨어의 당업자일 것이라고 가정되었다. 하지만, 페이지 테이블과 같은, 기본 하드웨어 제어 엔티티들의 상기 변화들은 구상 중에 있기 때문에 설명된 도해들의 일부는 플랫폼 펌웨어에서의 구현 및 배포에 특히 적절하다는 것에 주의하여야한다.
본 구현예에서, 제 1 운영 시스템(OS)은 리눅스®와 유사한 종류이고 "윈도우"라고 칭해지는 OS에 대한 참조는 마이크로소프트® 윈도우® 프로그램 제품 중 하나와 같이 임의의 비공개 소스 독점 OS에 대한 총칭이다. "윈도우"는 (가상의 또는 물리적) 메모리 리소스가 재배치되면 그러한 재배치 후에 윈도우를 올바르게 실행하도록하는 유일한 방법이 메모리 콘텐츠를 복원하고/거나 윈도우를 실행하도록하기 이전에 매핑을 의미하는 소프트웨어 블랙박스라는 것을 이해한다. 아니면, 메모리 통합 문제와 비슷한 문제들은 거짓 알람이 발생하는지 여부에 상관없이 감지될 것이다.
그 후, 여기 설명에서는 리눅스®와 하이퍼스페이스™ 사이 메모리 관리에서의 차이점들에 집중한다.
하이퍼스페이스™는 '콜드 부트'(ACPI S5->S0 상태) 시스템 및 하이퍼스페이스 S5 또는 S3 트리거에 기반한 윈도우®OS를 부팅하는 BIOS이다. OSM은 BIOS의 Int 15 - E820 서비스 루틴에 접속하고 "LAST_BOOT_OS" 지시자를 패스하여, 이값이 하이퍼스페이스이면, (하이퍼스페이스 메모리를 제외한) 변경된 메모리 맵이 윈도우®로 복귀하고 하이퍼스페이스 하드웨어/메모리 콘텍스트를 저장한다. 유사한 정보는 윈도우® 콘텍스트를 위해 저장된다. 이는 BIOS가 하이퍼스페이스와 윈도우® OS 모두의 "S3" 콘텍스트를 보유하고 S3가 각 OS에 대한 동작을 재개하는 동안 이를 사용하도록 한다.
하이퍼스페이스 부트는 설명된다 :-하이퍼스페이스는 리눅스®에 기반하고 이의 부팅 프리미티브들(primitives) 전체를 상속받는다. 이 프리미티브들은 초기 "실제 모드" OS 로딩이 어떻게 발생하는지 뿐만 아니라 "안전 모드" OS가 어떻게 메모리 관리, IO 관리, 및 프로세스 관리 양상들로부터 그 자신을 제어 소프트웨어로서 설정하는지를 정의한다. 조기 부트 동안 하이퍼스페이스는 아키텍처에 한정된 메모리 특성들에 관한 정보를 찾기 위해 e820 맵에 대해 질의한다. 복귀한 응답은 메모리를 기록하기 위해 구역 경계 및 사용자/커널 공간 분리에 관하여 조기 부트 구성요소에 의해 배포된다. 커널 변수들 : min_low_pfn, max_low_pfn, max_pfn 은 계산된 값들이다. 차이(max_low_pfn - min_low_pfn)는 고 메모리 구역(ZONE_HIGHMEM)의 시작/끝을 계산하는데 사용되고, max_low_pfn은 보통 구역(ZONE_NORMAL)에 대한 가장 높은 자체 주소를 가진 프레임이고 나머지 메모리는 dma 동작(ZONE_DMA)을 위해 취급된다. 상기 특성들 중 제안된 e820h 변경과 다른 것은 없다. 하지만, 하이퍼스페이스 메모리 관리는 윈도우®에 의해 점유되는 메모리를 알기 위해 변경된다. 이 작동은 이것의 페이지 할당/할당해제 스킴에 영향을 주지만 그것은 메모리 핫 스와핑의 산출물로서, 핫 스와핑 섹션에서 논의된다.
본 발명의 이 구현예에서 윈도우 부트가 설명된다. BIOS e820 및 OSM 변경들은 윈도우® OS에 명백하다. 하이퍼스페이스에 의해 점유된 메모리 구역이 윈도우®에 대해 (BIOS에 의해) "예약된"으로 마크된다. 이는 윈도우가 이 구역을 멤 매핑(mem-mapping)하는 것으로부터 방지한다. 윈도우®는 총 메모리=(총 물리적 메모리 - Gfx UMA - BIOS 예약된 메모리 - 하이퍼스페이스 "예약된" 메모리)로 끝난다. 도 3은 부트 후에 하이퍼스페이스와 윈도우®에 의해 일반적인(비 PAE) 물리적 메모리에서 가상 메모리로의 매핑을 도시한다.
하이퍼스페이스 시스템 상 "OS 콘텍스트 스위치" 구현은 OS ACPI "중단/재개" 및 BIOS 펌웨어와 결부되어 있다. 시스템 BIOS는 '수면트랩' 핸들러 코드에 등록하여 S3 중단이 PM_CNT1 포트에 기록하는 것으로 차단된다. 이 핸들러 코드는 OSM이 윈도우 OS 또는 하이퍼스페이스로부터 수면 요청이 오는 지를 판단하도록 지원하고 이 정보를 윈도우® OS 또는 하이퍼스페이스를 '재개'하는데 사용하는데 사용한다. 중단 시퀀스는 각각 OS ACPI 능력과 결부되어 있다는 것에 유의한다. 도 4는 변형된 부트/중단/재개 동작상의 플로우를 도시한다.
비-하이퍼스페이스 OS는 OS 콘텍스트 스위치를 용이하게 하는 하이퍼스페이스 소프트웨어 구성요소를 구비할 수 있다. 또한, 이는 "키보드 후크 전용 키" 또는 "데스크탑 UI" 소프트웨어 구성요소에 결부될 수 있다.
키보드 기반 "중단"은 ACPI S3 상태를 개시하기 위해 "키"를 사용한다. 윈도우® OS 상에서, 이는 서비스 또는 키보드 필터 드라이버가 될 수 있다. 하이퍼스페이스 OS "중단"은 i8042 드라이버 변경을 통해 제어될 수 있다.
데스크탑 UI 기반 "중단"은 윈도우® 데스크탑 상에 바로가기의 프로그래밍을 포함하는데, 이는 윈도우®를 S3 상태로 놓기 위한 로직을 구비할 것이다. '재개' 시퀀스는 "펌웨어 제어" 또는 "하드웨어 제어"가 될 수 있다. 모든 재개 시퀀스 모드는 OSM 모듈에서 프로그래밍되고 양측 OS 모두가 ACPI S3상태에 있는지에 대한 사실에 의존한다. "펌웨어 제어" 개시는 "교번" 또는 "순차" 적으로 될 수 있다. "교번적 개시" 모드는 마지막 중지된 OS가 아닌 OS를 개시한다. "순차적 개시" 모드는 마지막 중지된 OS를 개시하고 이는 현재 동작 개시가 작동하는 방법이다. 이 모드는 OS 콘텍스트 스위칭을 기반으로 효과적으로 S3을 턴오프(turns-off)한다. 하드웨어 제어된 개시 모드는 범용 입출력(General Purpose Input Output;GPIO) 포트를 하이퍼스페이스 및 윈도우에 대한 트리거 부트 및/또는 개시 시퀀스에 연결한다. 개시 시퀀스에서, 핸들러는 제어권한을 실제 모드에서의 OSM 엔트리 포인트로 전달하고, 이는 OS 개시를 계속한다.
핫 스왑 메모리를 사용하는 하이퍼스페이스 임시 메모리 증가를 위한 기술이 서술된다 :
x86 기반 플랫폼 상에서 하이퍼스페이스는 핫스왑 메모리 기능을 지원하며, 이는 시스템 재부트를 필요로하지 않고 중지된(S3) 윈도우®에서부터 실행 중인 하이퍼스페이스까지 추가된 물리적 메모리의 범위를 허용한다.
하이퍼스페이스는 다음의 변경을 구성하는 "핫 스왑 메모리"를 지원한다. 하이퍼스페이스를 위한 페이지 관리 및 e820 맵 변경 : 하이퍼스페이스로 시스템 부트는 전체 " OS 사용가능 메모리"가 메모리 관리 유닛에 의해 매핑되는 것을 보장한다. 이 메모리 범위는 윈도우® OS에 보고된 물리적 메모리를 포함한다. 윈도우® OS는 중지(S3)되거나 정지(shutdown)(S5) 상태에 있을 것이고, 그 후 중지되어있다면 이 메모리는 디바이스 및 프로세스 메모리를 포함하는 실행 중인 OS 스탭샷을 구비해야할 것이다. 하이퍼스페이스 메모리 관리 유닛은 가장 높은 페이지 프레임에 대한 e820 맵을 전반에 걸쳐 판독한다. 하이퍼스페이스는 전체 머신 물리적 메모리 탭을 참조하지만, 이 메모리 관리는 오직 하이퍼스페이스에 "예약된" 메모리에서만 맵(memmap())으로 변경되며 페이지 매핑된 메모리의 나머지를 남기지만 사용되지 않는다.
이는 페이지 프레임 관리로의 변경을 의미하는데 그러한 것은 "예약된" 윈도우® 메모리(및 관련 페이지 프레임들)가 하이퍼스페이스 페이지 관리 코드에 의해 "초기화되지만 사용되지 않는다". 이는 다음을 포함한다 :
초기 mm 함수 find_max_pfn()는 하이퍼스페이스를 위한 max_pfn = (Top - x - y) - 1M 를 참조한다. OSM/BIOS로부터 "실제 사용가능 물리적 메모리"를 판독하고 새로운 변수 max_real_pfn에 저장한다.
새로운 플래그 값(flag value) 'PG_hsusable'을 (<linux/mm.h>에 정의된) 기존 "page" 구조에 추가한다. 'PG_hsusable' 또는 'PG_skip'으로 간주된 페이지들은 영역 또는 커널 페이지 테이블 초기화 경로에 의해 사용되지 않을 것이다. 특히, 함수 page_init() 와 free_area_init()(mm/page_alloc.c)는 영역 및 페이지 디스크립터(descriptor)를 설정한다. 이 함수를 실행하는 동안 디폴트로 'PG_reserved' 플래그는 모든 페이지들에 대해 설정된다.
(mm/init_32 및 mm/init_64.c에서) mem_init() 함수는 영역 특정 플래그(PG_highmem)로 'PG_reserved'를 재설정할 때 max_real_mfn을 사용하기 위해 변경될 필요가 있다. 이는 모든 (pages > max_real_mfn)가 'PG_hsusable'이라는 것을 보장한다. 우리는 'PG_reserved' 값을 사용하는 것을 고려하지만 기존 로직과 혼용하는 것을 피하기 위해 새로운 플래그 값을 생성하도록 결정해야한다는 것에 주의해야한다.
영역 워터마크들 및 디스크로의 페이지 스와핑 : 리눅스®는 비커널 페이지 테이블 메모리를 관리하기 위한 3개의 메모리 영역들을 구비한다 : ZONE_DMA, ZONE_NORMAL 그리고 ZONE_HIGHMEM이다. 각 영역은 pages_low, pages_min 그리고 pages_high로 칭해지는 3개의 워터마크들을 구비하는데, 이는 OS 실행 동안 얼마나 많은 압력이 영역에 가해지는지 추적하는 것을 돕는다. 메모리 초기화 동안 함수 free_area_init_core() 내의 영역 당 pages_min에 대한 페이지 수가 계산되고 페이지 내의 영역의 크기에 대한 비율에 기초한다. 각 워터파크는 영역마다 상이한 액션을 보증한다. 탠덤 내의 워터마킹은 'kswapd'로 칭해지는 페이지 옮김 데몬(page-out daemon) 과 함께 작동한다. kswapd는 비동기 방식으로 페이지를 디스크로/부터 스와핑하는 역할을 한다. ("직접 회수"로 칭해지는) 영역 페이지 프리잉(zone-page-freeing)마다 동기(synchronous)가 구현되고 페이지 할당자(page allocator)에 의해 사용된다.
메모리 핫 스왑은 영역으로의 다음 변경들과 디스크 스왑 고려사항들을 필요로 한다 :
윈도우® 메모리는 128MiB의 청크들 내의 "디스크 저장된 그리고 스와핑된" 것이며 ZONE_NORMAL, ZONE_HIGHMEM 메모리 및/또는 임의의 사용자 설정가능한 메모리의 청크들을 확장하기 위해 사용된다.
(영역마다 모든 워터마크들에 대한) 영역 워터마크에 "도달된" 감지 로직이 영역 프리 페이지풀(zone free page-pool)로 전환하는 "PG_hsusable" 페이지들을 설명하는 것을 필요로 한다. 이 액션은 영역 당 "고정 및 분산된" 페이지들을 확인하기 위한 페이지 테이블 워크(page-table walk)를 보증한다.
페이지 할당(mm/page_alloc.c 내의 _alloc_pages)은 메모리 부족 상태일 때 _alloc_pages_internal() 또는 kswapd 호출을 사용하는 직접-회수 경로를 사용한다. 이는 영역 특정 "PG_xx"로 전환하는 "PG_hsusable" 페이지들을 구현하고 kswapd를 호출하기 전에 추가 비트마스크"flag=PG_xx|PG_hsinuse"를 설정하거나 kswapd의 작업을 수동으로 실행해야한다. 이는 하이퍼스페이스에 의해 사용되어야하는 이 페이지들을 마킹하기 전에, 윈도우® 페이지를 매긴 메모리가 페이지 인접 방식으로 "윈도우 스왑" 디스크 파일에 기록되는 것을 보장한다.
하이퍼스페이스 중단(S3) 시에, 안전-모드인 동안, 그리고 "일시정지" 프로세서 후에, page_allocator는 "PG_hsinuse" 페이지의 콘텐츠를 하이퍼스페이스 "스왑" 디스크 파일로 스왑해야한다. 하이퍼스페이스 개시 시퀀스 동안 이 파일은 판독되어야하고 페이지들은 "재저장"되어야한다. 동작 중단 이전대로 "메모리"를 재구성하는 것을 보장한다.
도 3 과 도 4는, 하나로 합쳐져 본 발명의 일 특정 구현예를 구현하는데 있어서 수행되는 일부 단계들의 개요를 도시하는 플로우차트이다. 상기 자세한 설명과 대조적으로 플로우차트는 포함된 단계들에 일부 초점을 맞추어 본 발명의 다양한 구현예의 신규성을 도출한다.
단계(300)에서, 시스템 메모리는 분할된다. 제 1 파티션은 HS(하이퍼스페이스™)에 대해 설정되고, 제 2 파티션은 복합적인, 리소스 집약적이고/거나 윈도우® 제품과 같은 블랙박스 비공개 소스 OS에 대해 설정된다. 제 3 파티션은 주로 전체 시스템 메모리를 포함하므로 따라서 하이퍼스페이스 시스템의 저레벨 파트들이 주로 전체 시스템 메모리를 조작 가능하도록한다.
단계(320)에서, 페이지 테이블은 제 1 가상 메모리 파티션으로 제 1 페이지 파티션을 매핑하도록 생성된다. 하이퍼스페이스 OS는 일반적으로 제 1 파티션에 로드된다.
단계(350)에서 페이지 테이블은 제 2 OS(일반적으로 윈도우)를 위한 페이지들을 통합하기 위해 확장되거나 제 2 페이지 테이블이 생성되고 사용된다. 이것은 간소화한 것으로, 페이지 테이블이 복합적이고/거나 연속적일 수가 있지만 이는 본 발명에 중요하지 않은 구현 세부 사항이다.
제 1 OS(일반적으로 HS)는 제 1 파티션에 로드되고 실행하도록 설정된다. 단계(360)에서, BIOS는 제 1 OS(일반적으로 HS)로부터의 E820 메모리 요청을 처리하고 이는 실제로 (예를 들어) HS가 제 1 파티션을 (어플리케이션 및 그 이상에 사용가능한) 이의 주요 메모리로 간주하는 것을 가능하게 하지만, HS는 또한 제 2 파티션을 포함한 전체 제 3 파티션으로 간주할 수 있다.
제 2 파티션은 주로 제 2 OS(일반적으로 윈도우)에 의한 사용을 위해 확보된 메모리이다. 제 2 OS는 제 2 파티션에 로드되고 실행하도록 설정된다. 단계(370)에서, BIOS는 제 2 OS로부터의 E820 메모리 요청을 처리하고 제 2 가상 메모리가 제 2 OS에 분할되도록 한다. 제 2 OS(윈도우)가 제 2 파티션으로 로드된다는 것이 예상될 수 있다.
단계(380)에서, 제 2 파티션 내의 페이지들과 같은 일부는 회수가능하다고 마크된다. 일반적으로 이들은 (회수된 메모리로서 HS에 의해 사용가능한) HS사용가능한 것들이다. 많은 또는 대부분의 것들은 아니지만 윈도우의 일부의 페이지들은 이러한 방식으로 마크된다고 예상될 수 있다.
단계(400)에서, 제 1 OS(HS)는 추가 메모리를 요청할 수 있고 제 1 파티션으로부터의 페이지들이 스와핑된다. 일반적으로 이는 디스크 상에 스토리지 파일에 페이지 콘텍스트 및 제어 정보를 기록하는 것을 포함한다. 하지만 기술은 시간에 걸쳐 변화하고 스와핑에서 파일 및 디스크의 사용은 중요하지 않은 것으로 증명할 것이다. 하지만 윈도우에 의해 "소유된" 메모리는 반드시 스와핑되어서 나중에 복구될 수 있어야한다.
단계(410)에서, 스와핑된 페이지는 페이지에 기록할 것으로 예상되는 제 1 OS로 양도된다(짐작하면, HS가 하나 이상의 회수가능한 메모리 페이지들을 요청한다면 이 요청은 포함된 메모리에 기록하기 위한 의도에서 기인할 것이다).
그 후, 단계(420)에서, 제 2 OS(윈도우)를 재활성화하기 위한 요청이 있다. 이를 수행하기 위해, 단계(430)에서 저장된 하드웨어 콘텍스트 및 스토리지 파일로부터 회수된 페이지 콘텐츠의 복구가 있다.
단계(440)에서, 제어권은 제 2 OS로 넘어간다.
메모리 회수의 더 확장된 형태를 제공하기 위해 상기 과정을 확장하는 방법은 당업자의 프로그래머에게 명백할 것이다.
도 5와 관련하여, 전자 디바이스(10)로 통합되는 컴퓨터 명령어들은 스토리지 기록장치(520)에 의해 사용되는 것과 같이 기록된 명령어들을 구비하는 가능한 매체의 변종을 사용하여 제작된 펌웨어 및/또는 소프트웨어 컴퓨터 제품(510)으로서 배포된다. 보통 본 발명을 도입한 제품만큼 복합적인 제품 내에서, 하나 초과의 매체가 사용되는데, 모두 배포용 및 제작용에 관계된 제품이다. 명료성을 위해 오직 하나의 매체가 도 5에 도시되었지만 하나 초과의 매체가 사용될 것이고 단일 컴퓨터 제품은 다수의 매체 사이에서 분할될 것이다.
도 6은 본 발명의 예시적인 구현예가 전자파를 사용하여 인코딩, 전송, 수신, 디코딩되는 방법을 도시한다.
도 6과 관련하여, 추가적으로, 그리고 특별히 인터넷 사용에서의 증가때문에, 컴퓨터 제품(610)은 그것들을 파장으로 변조된 신호들로 인코딩함으로써 배포될 것이다. 그 후, 결과적인 파형은 전송기(640)에 의해 전송되고, 유형의 변조 전자 반송파(650)로서 전파되며, 수신기(660)에 의해 수신될 것이다. 수신시에 그들은 복조될 것이고 신호는 추가 버전 또는 메모리 또는 다른 스토리지 디바이스 내 컴퓨터 제품(611)의 복사본으로 디코딩될 것이다. 제 2 전자 디바이스(11)의 부분이고 일반적으로 전자 디바이스(10)와 특성적으로 비슷하다.
다른 토폴로지 및/또는 디바이스들은 또한 본 발명의 대체 구현예를 구성하는데 사용될 수 있다. 상술된 구현예들은 청구항으로부터 본 발명의 경계를 제한하는 것 및 결정하는 것이라기보다는 예시적인 것이다. 본 발명의 선호되는 구현예들은 자세하게 상기에 설명되어있지만, 본원에 교시된 기본적인 진보적 개념의 많은 변형 및/또는 수정이 첨부된 청구항에서 정의된 바와 같이, 당업자에게 여전히 본 발명의 사상 및 범주 내 속하는 것으로 보인다는 것을 분명하게 이해해야한다.

Claims (11)

  1. 컴퓨터를 동작시키는 방법에 있어서,
    다수의 시스템 메모리 페이지들을 포함하는 시스템 메모리를 제 1 페이지 파티션, 제 2 페이지 파티션 및 제 3 페이지 파티션으로 분할하는 단계―상기 제 1 페이지 파티션 및 상기 제 2 페이지 파티션은 상호 배타적이고 또한 상기 제 3 페이지 파티션의 부분 집합임―와,
    상기 제 1 페이지 파티션을 제 1 가상 메모리 파티션으로 매핑하기 위한 제 1 페이지 테이블을 생성하는 단계와,
    상기 제 2 페이지 파티션을 제 2 가상 메모리 파티션으로 매핑하기 위해 상기 제 1 페이지 테이블을 업데이트하는 것과, 상기 제 2 페이지 파티션을 제 2 가상 메모리 파티션으로 매핑하기 위한 제 2 페이지 테이블을 생성하는 것으로 구성된 목록으로부터 선택된 액션을 수행하는 단계와,
    상기 제 3 페이지 파티션에 로드된 제 1 운영 시스템(OS)로부터의 제 1 메모리 서비스 요청에 따라 상기 제 1 가상 메모리 파티션을 가시적으로 만드는 단계와,
    상기 제 3 페이지 파티션에 또한 로드된 제 2 OS로부터의 제 2 메모리 서비스 요청에 따라 상기 제 2 가상 메모리 파티션을 가시적으로 만드는 단계와,
    마킹된 페이지들의 집합을 생성하기 위해 상기 제 1 OS에 의해 상기 제 2 가상 메모리 파티션 내의 페이지들의 부분 집합을 회수가능한 것으로 마킹하는 단계와,
    추가 메모리에 대한 상기 제 1 OS에 의한 요청에 응답하여 마킹된 페이지들의 상기 집합으로부터 선택된 적어도 하나의 회수가능한 페이지를 스토리지 파일에 스와핑(swapping out)하고 상기 제 1 OS에 의해 적어도 하나의 회수가능한 페이지들에 기록하는 단계와,
    상기 제 2 OS를 재활성화하기 위한 요청에 응답하여 저장된 하드웨어 콘텍스트를 복구시키고, 상기 스토리지 파일로부터의 적어도 하나의 회수가능한 페이지를 복구시키며, 상기 제 2 OS로 제어권을 넘기는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 제 1 OS는 오픈소스 OS이고 상기 제 2 OS는 오픈소스 OS가 아닌
    방법.
  3. 제 1 항에 있어서,
    상기 제 2 OS를 재활성화시키기 위한 상기 요청은 고급 구성 및 전력 인터페이스(Advanced Configuration and Power Interface;ACPI) 시스템 상태 변경 요청인
    방법.
  4. 제 1 항에 있어서,
    상기 스토리지 파일은 디스크 파일인
    방법.
  5. 제 1 항에 있어서,
    상기 제 1 메모리 서비스 요청 및 상기 제 2 메모리 서비스 요청은 E820 요청들인
    방법.
  6. 제 4 항에 있어서,
    상기 저장된 하드웨어 콘텍스트는 다수의 ACPI 웨이크 벡터(Wake Vector)를 포함하는
    방법.
  7. 컴퓨터 프로그램 제품에 있어서,
    내부에 인코딩된 명령어들을 구비한 적어도 하나의 컴퓨터 판독가능 매체를 포함하되, 상기 명령어들이 적어도 하나의 프로세서에 의해 실행될 때
    다수의 시스템 메모리 페이지를 포함하는 시스템 메모리를 제 1 페이지 파티션, 제 2 페이지 파티션 및 제 3 페이지 파티션으로 분할하는 동작―상기 제 1 페이지 파티션 및 상기 제 2 페이지 파티션은 상호 배타적이고 또한 상기 제 3 페이지 파티션의 부분 집합임―과,
    상기 제 1 페이지 파티션을 제 1 가상 메모리 파티션으로 매핑하기 위한 제 1 페이지 테이블을 생성하는 동작과,
    상기 제 2 페이지 파티션을 제 2 가상 메모리 파티션으로 매핑하기 위해 상기 제 1 페이지 테이블을 업데이트하는 것과, 상기 제 2 페이지 파티션을 제 2 가상 메모리 파티션으로 매핑하기 위한 제 2 페이지 테이블을 생성하는 것으로 구성되는 목록으로부터 선택된 액션을 수행하는 동작과,
    상기 제 3 페이지 파티션에 로드된 제 1 운영 시스템(OS)으로부터의 제 1 메모리 서비스 요청에 따라 상기 제 1 가상 메모리 파티션을 가시적으로 만드는 동작과,
    상기 제 3 페이지 파티션에 로드된 제 2 OS로부터의 제 2 메모리 서비스 요청에 따라 상기 제 2 가상 메모리 파티션을 가시적으로 만드는 동작과,
    마킹된 페이지들의 집합을 생성하기 위해 상기 제 1 OS에 의해 상기 제 2 가상 메모리 파티션 내의 페이지들의 부분 집합을 회수가능한 것으로 마킹하는 동작과,
    추가 메모리에 대한 상기 제 1 OS에 의한 요청에 응답하여 마킹된 페이지들의 상기 집합으로부터 선택된 적어도 하나의 회수가능한 페이지를 스토리지 파일에 스와핑(swapping out)하고 상기 제 1 OS에 의해 적어도 하나의 회수가능한 페이지들에 기록하는 동작과,
    상기 제 2 OS를 재활성화하기 위한 요청에 응답하여, 저장된 하드웨어 콘텍스트를 복구시키고, 상기 스토리지 파일로부터의 적어도 하나의 회수가능한 페이지를 복구시키며, 상기 제 2 OS로 제어권을 넘기는 동작을 포함하는 단계에 의해 상기 적어도 하나의 프로세서가 동작되도록 하는
    컴퓨터 프로그램 제품.
  8. 제 7 항에 있어서,
    상기 제 2 OS를 재활성화시키기 위한 상기 요청은 고급 구성 및 전력 인터페이스(Advanced Configuration and Power Interface;ACPI)시스템 상태 변경 요청인
    컴퓨터 프로그램 제품.
  9. 제 7 항에 있어서,
    상기 스토리지 파일은 디스크 파일이고 상기 제 1 메모리 서비스 요청 및 제 2 메모리 서비스 요청은 E820 요청들인
    컴퓨터 프로그램 제품.
  10. 유형의 매체에 기록된(impressed) 전자 반송파 상에 신호를 변조하거나 전자 반송파로부터의 상기 신호를 복조하는 동작을 포함하되, 상기 신호는 내부에 인코딩된 명령어를 구비하고, 상기 명령어는 적어도 하나의 프로세서에 의해 실행될 때
    다수의 시스템 메모리 페이지들을 포함하는 시스템 메모리를 제 1 페이지 파티션, 제 2 페이지 파티션 및 제 3 페이지 파티션으로 분할하는 동작―상기 제 1 페이지 파티션 및 제 2 페이지 파티션은 상호 배타적이고 또한 상기 제 3 페이지 파티션의 부분 집합임―과,
    상기 제 1 페이지 파티션을 제 1 가상 메모리 파티션으로 매핑하기 위한 제 1 페이지 테이블을 생성하는 동작과,
    상기 제 2 페이지 파티션을 제 2 가상 메모리 파티션으로 매핑하기 위해 상기 제 1 페이지 테이블을 업데이트하는 것과, 상기 제 2 페이지 파티션을 제 2 가상 메모리 파티션으로 매핑하기 위한 제 2 페이지 테이블을 생성하는 것으로 구성된 목록으로부터 선택된 액션을 수행하는 동작과,
    상기 제 3 페이지 파티션에 로드된 제 1 운영 시스템(OS)로부터의 제 1 메모리 서비스 요청에 따라 상기 제 1 가상 메모리 파티션을 가시적으로 만드는 동작과,
    상기 제 3 페이지 파티션에 또한 로드된 제 2 OS로부터의 제 2 메모리 서비스 요청에 따라 상기 제 2 가상 메모리 파티션을 가시적으로 만드는 동작과,
    마킹된 페이지들의 집합을 생성하기 위해 상기 제 1 OS에 의해 상기 제 2 가상 메모리 파티션 내의 페이지들의 부분 집합을 회수가능한 것으로 마킹하는 동작과,
    추가 메모리에 대한 상기 제 1 OS에 의한 요청에 응답하여, 마킹된 페이지들의 상기 집합으로부터 선택된 적어도 하나의 회수가능한 페이지를 스토리지 파일에 스와핑(swapping out)하고 상기 제 1 OS에 의해 적어도 하나의 회수가능한 페이지들에 기록하는 동작과,
    상기 제 2 OS를 재활성화하기 위한 요청에 응답하여, 저장된 하드웨어 콘텍스트를 복구시키고, 상기 스토리지 파일로부터의 적어도 하나의 회수가능한 페이지를 복구시키며, 상기 제 2 OS로 제어권을 넘기는
    동작을 포함하는 단계들에 의해 상기 적어도 하나의 프로세서가 동작되도록 하는
    방법.
  11. 콘트롤러와,
    내부에 인코딩된 명령어들을 구비한 제 1 시스템 메모리를 포함하되, 상기 명령어들은 콘트롤러에 의해 실행될 때
    다수의 시스템 메모리 페이지들을 포함하는 시스템 메모리를 제 1 페이지 파티션, 제 2 페이지 파티션 및 제 3 페이지 파티션으로 분할하는 동작―상기 제 1 페이지 파티션 및 제 2 페이지 파티션은 상호 배타적이고 또한 상기 제 3 페이지 파티션의 부분 집합임―과,
    상기 제 1 페이지 파티션을 제 1 가상 메모리 파티션으로 매핑하기 위한 제 1 페이지 테이블을 생성하는 동작과,
    상기 제 2 페이지 파티션을 제 2 가상 메모리 파티션으로 매핑하기 위해 상기 제 1 페이지 테이블을 업데이트하는 것과, 상기 제 2 페이지 파티션을 제 2 가상 메모리 파티션으로 매핑하기 위한 제 2 페이지 테이블을 생성하는 것으로 구성된 목록으로부터 선택된 액션을 수행하는 동작과,
    상기 제 3 페이지 파티션에 로드된 제 1 운영 시스템(OS)로부터의 제 1 메모리 서비스 요청에 따라 상기 제 1 가상 메모리 파티션을 가시적으로 만드는 동작과,
    상기 제 3 페이지 파티션에 또한 로드된 제 2 OS로부터의 제 2 메모리 서비스 요청에 따라 상기 제 2 가상 메모리 파티션을 가시적으로 만드는 동작과,
    마킹된 페이지들의 집합을 생성하기 위해 상기 제 1 OS에 의해 상기 제 2 가상 메모리 파티션 내의 페이지들의 부분 집합을 회수가능한 것으로 마킹하는 동작과,
    추가 메모리에 대한 상기 제 1 OS에 의한 요청에 응답하여, 마킹된 페이지들의 상기 집합으로부터 선택된 적어도 하나의 회수가능한 페이지를 스토리지 파일에 스와핑(swapping out)하고 상기 제 1 OS에 의해 적어도 하나의 회수가능한 페이지들에 기록하는 동작과,
    상기 제 2 OS를 재활성화하기 위한 요청에 응답하여, 저장된 하드웨어 콘텍스트를 복구시키고, 상기 스토리지 파일로부터의 적어도 하나의 회수가능한 페이지를 복구시키며, 상기 제 2 OS로 제어권을 넘기는
    동작을 포함하는 단계들에 의해 상기 적어도 하나의 프로세서가 동작되도록하는
    전자 디바이스.
KR1020117024680A 2009-03-20 2010-03-16 비가상화 시스템에서의 메모리 확장을 지원하기 위한 상호 운영 시스템 메모리 핫스왑 KR101602991B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US21057809P 2009-03-20 2009-03-20
US61/210,578 2009-03-20
US12/459,963 US8489847B2 (en) 2009-03-20 2009-07-10 Inter operating system memory hotswap to support memory growth in a non-virtualized system
US12/459,963 2009-07-10

Publications (2)

Publication Number Publication Date
KR20120000089A true KR20120000089A (ko) 2012-01-03
KR101602991B1 KR101602991B1 (ko) 2016-03-11

Family

ID=42738621

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020117021841A KR101620655B1 (ko) 2009-03-20 2010-03-16 메모리 세그먼테이션 및 acpi 기반 컨텍스트 전환을 사용하는 운영 시스템 로딩
KR1020117024680A KR101602991B1 (ko) 2009-03-20 2010-03-16 비가상화 시스템에서의 메모리 확장을 지원하기 위한 상호 운영 시스템 메모리 핫스왑

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020117021841A KR101620655B1 (ko) 2009-03-20 2010-03-16 메모리 세그먼테이션 및 acpi 기반 컨텍스트 전환을 사용하는 운영 시스템 로딩

Country Status (6)

Country Link
US (2) US8327174B2 (ko)
EP (2) EP2409234B1 (ko)
KR (2) KR101620655B1 (ko)
CN (2) CN102369510B (ko)
BR (1) BRPI1006211B1 (ko)
WO (2) WO2010107757A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013162531A1 (en) * 2012-04-25 2013-10-31 Hewlett-Packard Development Company L.P. Dynamic memory allocation

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090292931A1 (en) * 2008-05-24 2009-11-26 Via Technology, Inc Apparatus and method for isolating a secure execution mode in a microprocessor
US8327174B2 (en) * 2009-03-20 2012-12-04 Hewlett-Packard Development Company, L.P. Loading operating systems using memory segmentation and ACPI based context switch
US8433889B2 (en) * 2010-04-28 2013-04-30 Acer Cloud Technology, Inc. Operating system context switching
US20120297177A1 (en) * 2010-11-15 2012-11-22 Ghosh Anup K Hardware Assisted Operating System Switch
US8607040B2 (en) 2010-11-16 2013-12-10 Intel Corporation Method of provisioning firmware in an operating system (OS) absent services environment
CN102135910B (zh) * 2011-03-03 2014-05-14 威盛电子股份有限公司 切换操作系统的方法及使用此方法的电子装置
TWI455027B (zh) * 2011-07-29 2014-10-01 Via Tech Inc 多系統平台的切換方法及支援多系統平台的電子裝置
BR112014010182A8 (pt) * 2011-10-28 2017-06-20 Intel Corp comutação entre contextos operacionais
JP2014531099A (ja) * 2011-10-28 2014-11-20 インテル・コーポレーション 動作コンテキストの切り替え
DE112012006333T5 (de) * 2012-07-26 2015-01-22 Hewlett-Packard Development Company, L.P. Periodischer Zugriff auf eine Hardwareressource
CN103116522B (zh) * 2013-01-31 2016-09-07 广州海格通信集团股份有限公司 Dsp芯片的内核程序动态切换方法及控制系统
US9304780B2 (en) 2013-10-18 2016-04-05 Google Inc. User initiated data rollback using operating system partitions
CN103713542A (zh) * 2013-11-11 2014-04-09 青岛中科英泰商用系统有限公司 设急停控制开关和音频接口的多功能触控工业平板计算机
US9934047B2 (en) * 2014-03-20 2018-04-03 Intel Corporation Techniques for switching between operating systems
US9582223B2 (en) * 2014-04-14 2017-02-28 International Business Machines Corporation Efficient reclamation of pre-allocated direct memory access (DMA) memory
EP3062225B1 (en) * 2015-02-24 2019-07-03 Huawei Technologies Co., Ltd. Multi-operating system device, notification device and methods thereof
CN106528453B (zh) * 2015-09-10 2019-10-18 中国航空工业第六一八研究所 基于复合尺度页的页表分区管理装置和方法
KR102650828B1 (ko) 2016-05-20 2024-03-26 삼성전자주식회사 둘 이상의 프로세서에 의해 공유되는 메모리 장치 및 상기 메모리 장치를 포함하는 시스템
US20180074967A1 (en) * 2016-09-09 2018-03-15 Sap Se Paging Mechanism for In-Memory Data Management System
US10838737B1 (en) * 2017-08-31 2020-11-17 American Megatrends International, Llc Restoration of memory content to restore machine state
US11720401B2 (en) * 2020-03-27 2023-08-08 Intel Corporation Reclaiming and reusing pre-boot reserved memory post-boot
KR20210156617A (ko) * 2020-06-18 2021-12-27 삼성전자주식회사 데이터 스와핑 방법 및 이를 지원하는 전자 장치
CN112799521B (zh) * 2021-03-29 2021-08-27 上海捷勃特机器人有限公司 电子设备及操作电子设备的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050235123A1 (en) * 2004-04-19 2005-10-20 Zimmer Vincent J Method to manage memory in a platform with virtual machines
US20070005947A1 (en) * 2005-06-30 2007-01-04 Chartrand Brent D Operating system mode transfer

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049854A (en) * 1997-05-09 2000-04-11 Vlsi Technology, Inc. System and method for sharing physical memory among distinct computer environments
US6772419B1 (en) * 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
EP1037133A1 (en) 1999-03-15 2000-09-20 International Business Machines Corporation Method and apparatus for alternation between instances of operating systems in computer systems
US6763458B1 (en) * 1999-09-27 2004-07-13 Captaris, Inc. System and method for installing and servicing an operating system in a computer or information appliance
JP2001256066A (ja) * 2000-02-29 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置
US6988226B2 (en) * 2002-10-17 2006-01-17 Wind River Systems, Inc. Health monitoring system for a partitioned architecture
CN1658185A (zh) * 2004-02-18 2005-08-24 国际商业机器公司 相互独立地共存多个操作系统的计算机系统与其切换方法
KR100673681B1 (ko) * 2004-03-25 2007-01-24 엘지전자 주식회사 개인용 컴퓨터에서의 인스턴트 온 기능 실행방법
GB2418751A (en) 2004-10-02 2006-04-05 Hewlett Packard Development Co Managing memory across a plurality of partitions
US7882317B2 (en) * 2004-12-06 2011-02-01 Microsoft Corporation Process isolation using protection domains
US7529921B2 (en) * 2004-12-17 2009-05-05 Cardiac Pacemakers, Inc. Fast initialization of medical device system having multiple operating systems
US20060184938A1 (en) 2005-02-17 2006-08-17 Intel Corporation Method, apparatus and system for dynamically reassigning memory from one virtual machine to another
TWI279724B (en) 2005-09-07 2007-04-21 Mitac Technology Corp Method for fast activating execution of computer multimedia playing from standby mode
US7950020B2 (en) * 2006-03-16 2011-05-24 Ntt Docomo, Inc. Secure operating system switching
US8046570B2 (en) 2007-02-06 2011-10-25 Microsoft Corporation Supporting multiple operating systems in media devices
CN101387989A (zh) * 2008-10-29 2009-03-18 北京世纪红山科技有限公司 构建基于分区管理的虚拟存储设备的计算机系统及方法
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
US8327174B2 (en) 2009-03-20 2012-12-04 Hewlett-Packard Development Company, L.P. Loading operating systems using memory segmentation and ACPI based context switch

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050235123A1 (en) * 2004-04-19 2005-10-20 Zimmer Vincent J Method to manage memory in a platform with virtual machines
US20070005947A1 (en) * 2005-06-30 2007-01-04 Chartrand Brent D Operating system mode transfer

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013162531A1 (en) * 2012-04-25 2013-10-31 Hewlett-Packard Development Company L.P. Dynamic memory allocation

Also Published As

Publication number Publication date
EP2409234B1 (en) 2016-09-28
CN102439573A (zh) 2012-05-02
WO2010107757A1 (en) 2010-09-23
EP2409234A1 (en) 2012-01-25
KR101602991B1 (ko) 2016-03-11
BRPI1006211B1 (pt) 2020-07-28
BRPI1006211A2 (pt) 2018-03-13
US20100241839A1 (en) 2010-09-23
US8489847B2 (en) 2013-07-16
CN102439573B (zh) 2014-07-16
CN102369510B (zh) 2016-06-22
US8327174B2 (en) 2012-12-04
EP2409227A1 (en) 2012-01-25
KR20110130435A (ko) 2011-12-05
WO2010107755A1 (en) 2010-09-23
US20100241821A1 (en) 2010-09-23
KR101620655B1 (ko) 2016-05-12
CN102369510A (zh) 2012-03-07

Similar Documents

Publication Publication Date Title
KR101602991B1 (ko) 비가상화 시스템에서의 메모리 확장을 지원하기 위한 상호 운영 시스템 메모리 핫스왑
KR101093124B1 (ko) 메모리를 소거하는 메모리 제어기를 포함하는 신뢰성있는실행 환경을 이용한 컴퓨터 시스템
JP5170782B2 (ja) ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ
JP4665040B2 (ja) 計算機およびアクセス制御方法
US9940291B2 (en) Assigning processors to memory mapped configuration
US8132167B2 (en) Context based virtualization
RU2562372C2 (ru) Активация/деактивация адаптеров вычислительной среды
TWI443508B (zh) 用於超管理器負載之記憶體管理
JP2011100431A (ja) 仮想マシン制御装置及び仮想マシン制御方法
KR101673299B1 (ko) 운영 시스템 복구 방법 및 장치, 그리고 단말기기
US10565141B1 (en) Systems and methods for hiding operating system kernel data in system management mode memory to thwart user mode side-channel attacks
CN107408034B (zh) 执行上下文迁移方法和装置
JP2014508332A (ja) 判定方法、判定装置、判定システム、記憶媒体
WO2017112126A1 (en) Starting application processors of a virtual machine
US9323539B2 (en) Constructing persistent file system from scattered persistent regions
US20170277632A1 (en) Virtual computer system control method and virtual computer system
US8499142B1 (en) UEFI boot loader for loading non-UEFI compliant operating systems
US9910677B2 (en) Operating environment switching between a primary and a secondary operating system
US9904559B2 (en) Information processing apparatus and activation method therefor for processing data of a hibernation image
CN111666036A (zh) 一种迁移数据的方法、装置及系统
CN116685947A (zh) 虚拟功能资源的基于硬件的保护
CN105589659B (zh) 具有多个子系统的数据处理系统及方法
US20190056968A1 (en) Securing user mode process using hypervisor

Legal Events

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