KR100708356B1 - 가상 기기 아키텍처에서의 게스트 소프트웨어의 연산과연관된 장애의 취급 - Google Patents

가상 기기 아키텍처에서의 게스트 소프트웨어의 연산과연관된 장애의 취급 Download PDF

Info

Publication number
KR100708356B1
KR100708356B1 KR1020047021382A KR20047021382A KR100708356B1 KR 100708356 B1 KR100708356 B1 KR 100708356B1 KR 1020047021382 A KR1020047021382 A KR 1020047021382A KR 20047021382 A KR20047021382 A KR 20047021382A KR 100708356 B1 KR100708356 B1 KR 100708356B1
Authority
KR
South Korea
Prior art keywords
fault
failure
guest software
determining whether
page
Prior art date
Application number
KR1020047021382A
Other languages
English (en)
Other versions
KR20050016917A (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 KR20050016917A publication Critical patent/KR20050016917A/ko
Application granted granted Critical
Publication of KR100708356B1 publication Critical patent/KR100708356B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

일 실시예에서, 게스트 소프트웨어의 연산과 연관된 장애에 관한 장애 정보가 수신된다. 나아가, 그 장애 정보가 하나 이상의 장애 필터링 기준을 만족하는지 여부에 대한 결정이 행해진다. 그 결정이 긍정(positive)인 경우에, 게스트 소프트웨어는 장애를 무시하도록 허용된다.
가상 기기, 게스트 소프트웨어, 장애, 장애 취급, 장애 필터링

Description

가상 기기 아키텍처에서의 게스트 소프트웨어의 연산과 연관된 장애의 취급{HANDLING FAULTS ASSOCIATED WITH OPERATION OF GUEST SOFTWARE IN THE VIRTUAL-MACHINE ARCHITECTURE}
본 발명은 일반적으로 가상 기기들에 관한 것으로, 보다 구체적으로는 가상 기기 아키텍처에서의 게스트 소프트웨어의 연산(operation)과 연관된 장애(faults)의 취급에 관한 것이다.
종래의 가상 기기 모니터(virtual-machine monitor; VMM)는 통상적으로 컴퓨터 상에서 실행되어 다른 소프트웨어에게 하나 이상의 가상 기기들의 추상화(abstraction)를 제공한다. 각각의 가상 기기는 그 자체의 "게스트 운영 체계"(즉, VMM에 의해 호스팅(host)되는 운영 체계(OS)) 및 그 밖의 다른 소프트웨어를 실행하는, 자체 완비된(self-contained) 플랫폼으로서 기능할 수 있다. 이러한 게스트 운영 체계 및 그 밖의 다른 소프트웨어는 집합적으로 게스트 소프트웨어로 지칭된다. 게스트 소프트웨어는 가상 기기가 아니라 마치 전용 컴퓨터 상에서 실행되는 것처럼 동작하도록 기대한다. 즉, 게스트 소프트웨어는 각종 이벤트를 제어하고 하드웨어 자원들에 액세스를 갖는 것을 기대한다. 하드웨어 자원들은 프로세서 상주 자원(processor-resident resources)(예를 들면, 제어 레지스터들), 메모 리에 상주하는 자원(예를 들면, 설명어 테이블(descriptor tables)) 및 하위(underlying) 하드웨어 플랫폼 상에 상주하는 자원(예를 들면, 입출력 장치들)을 포함할 수 있다. 이벤트들은 인터럽트, 예외(exceptions), 플랫폼 이벤트(예를 들면, 초기화(INIT) 또는 시스템 관리 인터럽트들(system management interrupts; SMIs)) 등을 포함할 수 있다.
가상 기기 환경에서, VMM은 가상 기기들 상에서 실행되는 게스트 소프트웨어의 적절한 연산을 제공하기 위해, 그리고 가상 기기들 상에서 실행되는 게스트 소프트웨어로부터의 보호 및 그것과의 사이에서의 보호를 위해 이들 이벤트들 및 하드웨어 자원들의 궁극적인 제어권(control)을 가질 수 있어야 한다. 이를 달성하기 위하여, VMM은 통상적으로 게스트 소프트웨어가 보호되는 자원에 액세스할 때 또는 (예컨대 인터럽트 또는 예외와 같은) 다른 이벤트들이 발생할 때 제어권을 받는다.
예를 들면, 게스트 소프트웨어의 연산 중에 페이지 장애(즉, 어드레스 변환 연산(address-translation operation)과 연관된 예외)가 발생할 경우, 제어권은 VMM에 전송되고, 제어권을 받은 VMM은 이어서 페이지 장애를 게스트 소프트웨어가 취급해야 하는지 아니면 VMM 자신이 취급해야 하는지를 결정한다. 만일 페이지 장애가 게스트 소프트웨어에 의해 취급될 필요가 있다면, 제어권은 도로 게스트 소프트웨어에 전송된다. VMM에 의해 취급될 필요가 없는 페이지 장애들(예외 및 인터럽트도 포함)이 오히려 빈번히 발생하기 때문에, VMM과 게스트 소프트웨어간의 그러한 제어권의 이전(transitioning)과 연관된 수행 비용이 상당히 많이 든다.
본 발명은 첨부 도면들에서 한정으로서가 아니라 예로서 도시되어 있다. 첨부 도면들에서 동일한 도면 부호는 동일한 구성 요소들을 나타낸다.
도 1은 본 발명이 동작할 수 있는 가상 기기 환경의 일 실시예를 도시하는 도면.
도 2는 제어 전송 필터링 기준을 이용하여 장애로 인한 VM 엑시트들(exits)을 필터링하기 위한 프로세스의 일 실시예의 흐름도.
도 3 내지 도 5는 제어 전송 필터링 기준을 이용하여 장애로 인한 VM 엑시트들을 필터링하기 위한 프로세스의 예시적인 실시예들을 도시하는 도면.
도 6은 장애 필터링 기준 및 제어 전송 필터링 기준을 이용하여 장애 및 장애로 인한 VM 엑시트들을 필터링하기 위한 프로세스의 일 실시예의 흐름도.
도 7 및 도 8은 장애 필터링 기준을 이용하여 장애를 필터링하기 위한 프로세스의 예시적인 실시예들을 도시하는 도면.
도 9는 장애 필터링 기준 및 제어 전송 필터링 기준을 정의하기 위한 프로세스의 일 실시예의 흐름도.
가상 기기 아키텍처에서의 게스트 소프트웨어의 연산과 연관된 장애들을 취급하기 위한 방법 및 장치에 대하여 기술한다. 이하의 기술에서는, 설명을 목적으로, 본 발명의 철저한 이해를 제공하기 위하여 다수의 특정한 세부 사항들이 제시된다. 그러나, 당업자에게는 본 발명이 이러한 특정한 세부 사항들이 없이도 실시 될 수 있다는 점이 명백할 것이다.
이하의 상세한 설명의 몇몇 부분들은 컴퓨터 시스템의 레지스터 또는 메모리 내의 데이터 비트들에 대한 연산들의 알고리즘 및 기호적 표현(symbolic representation)에 의하여 제시된다. 이들 알고리즘 기술 및 표현은 데이터 처리 분야의 당업자들이 그들의 연구의 요지를 해당 분야의 다른 당업자들에게 가장 효과적으로 전달하기 위해 사용하는 수단이다. 알고리즘은 본 명세서에서, 그리고 일반적으로, 원하는 결과에 이르게 하는 연산들 자체의 일관된 시퀀스(consistent sequence)인 것으로 생각된다. 연산들(operations)은 물리적 양들의 물리적 조작(physical manipulation)을 필요로 하는 것들이다. 반드시 그러한 것은 아니지만, 통상적으로, 이들 양들은 저장되고, 전송되고, 결합되고, 비교되고, 다른 방법으로 조작될 수 있는 전기적 또는 자기적 신호들의 형태를 취한다. 때때로, 주로 관용(common usage)상의 이유로, 이들 신호를 비트, 값, 엘리먼트(element), 기호, 문자, 항(term), 숫자(number) 등으로 나타내는 것이 편리하다는 것이 입증되었다.
그러나, 이들 용어 및 유사 용어들이 적절한 물리적 양들과 연관될 것이고, 단지 이러한 양들에 적용된 편리한 라벨들에 불과하다는 점에 유념해야 할 것이다. 이하의 논의로부터 명백해질 바와 같이, 달리 명시되지 않는 한, 본 발명에 걸쳐서, "처리(processing)" 또는 "컴퓨팅" 또는 "계산(calculating)" 또는 "결정(determining)" 등과 같은 용어들을 사용한 논의들은, 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(전자적) 양들로서 표현되는 데이터를 조작하여, 컴퓨터 시스템의 메모리들 또는 레지스터들 또는 다른 그러한 정보 기억, 전송 또는 디스 플레이 장치들 내의 물리적 양들로서 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템, 또는 유사한 전자적 컴퓨팅 시스템의 동작(action)이나 프로세스들을 나타낼 수 있다.
실시예들에 대한 이하의 상세한 설명에서는, 본 발명이 실시될 수 있는 특정한 실시예들을 예시로서 보여주는 첨부 도면들을 참조한다. 도면들에서, 동일한 번호들은 몇몇 도면에 걸쳐서 동일한 컴포넌트들을 기술한다. 이들 실시예들은 당업자가 본 발명을 실시할 수 있도록 충분히 상세하게 설명된다. 그 밖의 다른 실시예들이 이용될 수도 있고 본 발명의 범위를 벗어나지 않고 구조적, 논리적, 및 전기적 변경이 행해질 수도 있다. 나아가, 본 발명의 여러 가지 실시예들이 상이하더라도, 반드시 상호 배타적이지는 않다는 것을 이해해야 할 것이다. 예를 들면, 일 실시예에서 설명되는 특정한 특징, 구조, 또는 특성이 다른 실시예들 내에 포함될 수도 있다. 그러므로, 이하의 상세한 설명은 한정적인 의미로 받아들여져서는 안 되고, 본 발명의 범위는 첨부된 청구항들과 더불어 그러한 청구항들과 동등한 자격이 있는 균등물들의 전체 범위에 의해서만 한정된다.
도 1은 본 발명이 동작할 수 있는 가상 기기 환경(100)의 일 실시예를 도시한다. 이 실시예에서, 베어 플랫폼 하드웨어(bare platform hardware)(116)는, 예를 들면, 표준 운영 체계(OS) 또는 VMM(112)과 같은 가상 기기 모니터(VMM)를 실행할 수 있는 컴퓨팅 플랫폼을 포함한다. VMM(112)은, 통상적으로 소프트웨어로 구현되기는 하지만, 베어 기기 인터페이스를 에뮬레이트하고 그것을 상위 레벨의 소프트웨어에 보낼(export) 수 있다. 그러한 상위 레벨의 소프트웨어는 표준 또는 실시간 OS를 포함할 수 있고, 제한된 운영 체계 기능을 갖는 고도로 스트립 다운된(highly stripped down) 운영 환경일 수 있고, 전통적인 OS 설비 등을 포함하지 않을 수 있다. 대안적으로, 예를 들면, VMM(112)은 다른 VMM 내에서, 또는 그 위에서 실행될 수 있다. VMM 및 그것의 통상적 특징들 및 기능은 당업자들에게 잘 알려져 있고, 예를 들면, 소프트웨어, 펌웨어 또는 각종 기술들의 조합에 의해 구현될 수 있다.
플랫폼 하드웨어(116)는 퍼스널 컴퓨터(PC), 메인프레임, 핸드헬드 장치, 휴대용 컴퓨터, 셋톱 박스, 또는 임의의 다른 컴퓨팅 시스템의 것일 수 있다. 플랫폼 하드웨어(116)는 프로세서(118), 메모리(120)를 포함하고, 도시되지 않은 다른 플랫폼 하드웨어(예를 들어, 입출력 장치들)를 포함할 수 있다.
프로세서(118)는 마이크로프로세서, 디지털 신호 프로세서, 마이크로컨트롤러 등과 같이, 소프트웨어를 실행할 수 있는 임의의 유형의 프로세서일 수 있다. 프로세서(118)는 본 발명의 방법 실시예들의 실행을 수행하기 위한 마이크로코드, 프로그래머블 로직 또는 하드코딩된(hardcoded) 로직을 포함할 수 있다.
메모리(120)는 하드 디스크, 플로피 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시 메모리, 상기 장치들의 임의의 조합, 또는 프로세서(118)에 의해 판독 가능한 임의의 다른 타입의 기기 매체일 수 있다. 메모리(120)는 본 발명의 방법 실시예들의 실행을 수행하기 위한 명령들 또는 데이터를 저장할 수 있다.
VMM(112)은 다른 소프트웨어(즉, "게스트" 소프트웨어)에게 하나 이상의 가 상 기기들(VM들)의 추상화(abstraction)를 제공한다. VMM(112)은 동일하거나 상이한 추상화들을 각종 게스트들에게 제공할 수 있다. 도 1은 2개의 그러한 VM들(102 및 114)을 보여주지만, 3개 이상 또는 2개 미만의 VM들이 VMM(112)에 의해 지원될 수도 있다. 각각의 VM 상에서 실행되는 게스트 소프트웨어는 게스트 OS(104 또는 106)와 같은 게스트 OS 및 각종 게스트 소프트웨어 애플리케이션들(108 및 110)을 포함할 수 있다. 집합적으로, 게스트 OS 및 소프트웨어 애플리케이션들은 본 명세서에서 게스트 소프트웨어(103 및 105)로 지칭된다. 게스트 소프트웨어(103 및 115)는 그 게스트 소프트웨어가 실행되고 있는 VM들(102 및 114) 내의 물리적 자원들(예를 들면, 프로세서 레지스터들, 메모리 및 I/O 장치들)에 액세스하는 것을 기대한다. VMM(112)은 플랫폼 하드웨어(116) 내의 자원들에 대한 근본적인 제어권을 계속 유지하면서 게스트 소프트웨어가 원하는 자원들에의 액세스를 용이하게 한다.
또한, 게스트 소프트웨어(103 및 115)는 예외(exceptions), 인터럽트 및 플랫폼 이벤트(예를 들면, 초기화(INIT) 및 시스템 관리 인터럽트(SMI들))와 같은 각종 이벤트들을 취급하기를 기대한다. 이들 이벤트들 중 몇몇은 VM들(102 및 114) 및 게스트 소프트웨어(103 및 115)의 적절한 연산을 보증하고 게스트 소프트웨어(103 및 115)로부터 및 이들 사이에서 보호하기 위하여 VMM(112)에 의해 취급되어야 하기 때문에 "특권"이 부여된다. 특권 이벤트들(privileged events)에 대하여, VMM(112)은 이들 특권 이벤트들에 대한 근본적인 제어권을 유지하면서 게스트 소프트웨어가 바라는 기능을 용이하게 한다. 게스트 소프트웨어를 위해 기능을 용이하게 하는 동작(act)은 VMM(112) 측의 다양한 동작들(activities)을 포함할 수 있다. VMM(112)의 동작들뿐만 아니라 그것의 특징들은 본 발명의 범위를 제한하지 않아야 한다.
특권 이벤트들 이외에, 게스트 소프트웨어의 연산 중에 발생하지만 VMM(112)에 의해 취급될 필요가 없고, 따라서 VMM(112)에의 제어권의 전송을 필요로 하지 않는 다수의 "비특권 이벤트들"(non-privileged events)이 있다. 일 실시예에서, 특권 이벤트들과 비특권 이벤트들을 구별하기 위한 필터링 메커니즘이 제공된다. 이 필터링 메커니즘에 의하면, 현재의 이벤트(예를 들면, 예외)와 연관된 정보가 하나 이상의 필터링 기준을 이용하여 평가됨으로써 현재의 이벤트에 대한 제어권이 게스트 소프트웨어에게 남겨지는지 아니면 VMM(112)에 전송되는지를 결정하게 된다. 이들 필터링 기준은 본 명세서에서 제어 전송 필터링 기준(control transfer filtering criteria)으로 지칭된다. 현재의 이벤트와 연관된 정보는 본 명세서에서 장애 정보(fault information)로 지칭된다.
다른 실시예에서는, 현재의 이벤트가 행해지는 때에 존재하는 다른 요소들이, 게스트 소프트웨어가 VMM(112) 또는 다른 VM들의 보안 및 적절한 연산을 훼손시키지 않고 원하는 연산을 완료할 수 있음을 나타내기 때문에 무시될 수 있는 특정한 비특권 이벤트들을 식별하기 위한 필터링 메커니즘이 제공된다. 이 실시예에서는, 현재의 이벤트와 연관된 장애 정보가 하나 이상의 필터링 기준을 이용하여 평가됨으로써 현재의 이벤트가 무시될 수 있는지 여부(즉, 게스트 소프트웨어가 원하는 연산을 완료하도록 허용되는지 여부)를 결정하게 된다. 이들 필터링 기준은 본 명세서에서 장애 필터링 기준(fault filtering criteria)으로 지칭된다.
일 실시예에서, 필터링 기준(제어 전송 필터링 기준 및/또는 장애 필터링 기준)은 가상 기기 제어 구조(VMCS)(122) 내의 하나 이상의 지정된 필드들에 저장된 데이터를 이용하여 정의된다. 도 1에는 그러한 VMCS가 하나만 도시되어 있지만, 서로 다른 VM들은 서로 다른 VMCS 메모리 이미지들로부터의 데이터를 이용할 수 있다. VMCS(122)는 메모리(120)에 상주할 수 있고 프로세서(118)에 의해 유지된다. 임의의 다른 데이터 구조(예를 들면, 온칩 캐시(on-chip cache), 파일, 룩업 테이블(lookup table) 등)가 보편성(generality)의 손실 없이 VMCS(122) 또는 필터링 메커니즘과 연관된 필드들을 저장하기 위해 사용될 수 있다는 것에 주의해야 할 것이다. 필터링 메커니즘의 각종 실시예들에 대해서는 아래에서 더욱 상세히 설명하겠다.
일 실시예에서, 만일 필터링 메커니즘이 현재의 이벤트가 VMM(112)에 의해 취급되어야 한다고 결정하면, 제어권은 VMM(112)에 전송된다. 그 후 VMM(112)은 이벤트를 취급하고 제어권을 다시 게스트 소프트웨어에 전송할 수 있다. 일 실시예에서, VMM(112)으로부터 게스트 소프트웨어로의 제어권의 전송은 특별 명령을 실행함으로써 달성된다. VMM(112)으로부터 게스트 소프트웨어로의 제어권의 전송은 본 명세서에서 VM 엔트리(entry)로 지칭되고 게스트 소프트웨어로부터 VMM으로의 제어권의 전송은 본 명세서에서 VM 엑시트(exit)로 지칭되고, VM 엑시트의 잠재적 원인들(예를 들면, 특권 예외 및 인터럽트 및 특권 플랫폼 이벤트)은 본 명세서에서 가상화 이벤트(virtualization events)로 지칭된다.
일 실시예에서, VM 엑시트가 발생할 때, 제어권은 VMCS(122) 내에 식별된 특 정 엔트리 포인트(예를 들면, 명령 포인터 값)에서 VMM(112)에 전달된다. 다른 실시예에서, 제어권은 리다이렉션(redirection) 구조(예를 들면, 인텔 펜티엄 Ⅳ의 프로세서 명령 설정 아키텍처(ISA)(본 명세서에서 IA-32 ISA로 지칭됨)에서의 인터럽트 설명어 테이블(interrupt descriptor table))를 통하여 벡터링한 후에 VMM(112)에 전달된다. 대안적으로, 당 기술 분야에 알려진 임의의 다른 메커니즘이 게스트 소프트웨어로부터 VMM(112)으로 제어권을 전송하기 위해 사용될 수 있다.
예외, 인터럽트 및 플랫폼을 포함하는 특권 및 비특권 이벤트들은 본 명세서에서 장애로 지칭된다. 장애는 프로세서 상에서의 명령의 실행에 의해 발생될 수 있다. 예를 들면, 메모리에 액세스하는 연산은 페이징 및 분할(segmentation) 보호 메커니즘에 기인하여 각종 장애들을 유발할 수 있다. 각각의 장애는 장애 정보와 연관된다. 장애 정보는 동적, 정적 또는 반동적(semi-dynamic) 장애 정보로서 특징화될 수 있다. 동적 장애 정보는 장애 유발 시에 또는 그 근처에서 생성된다. 동적 장애 정보의 예로는, 예외에 의해 생성되고 장애 유발 연산(faulting operation)의 특징들에 직접 의존하는 에러 코드 또는 페이지 장애를 유발하는 메모리 기록 연산에 의해 메모리에 기록될 예정이었던 데이터 값이 포함된다.
정적 또는 반정적(semi-static) 장애 정보는 장애의 타이밍에 상관없이 동일 값을 갖기 십상이다. 반정적 장애 정보의 예는, 예를 들면, IA-32 ISA에서의 CR0 레지스터 내의 캐시 디스에이블(CD) 또는 기록 방지(WP) 비트들과 같은 좀처럼 변하지 않는 각종 제어 레지스터들 내의 비트들의 세팅들이다. 정적 장애 정보의 예 는, (예를 들면, IA-32 ISA에서의 CPUID 명령을 통하여 보고되는 바와 같은) 프로세서 구현의 한 버전(version)이다.
대체로, 장애 정보는 장애 식별자, 연관된 장애 에러 코드, 장애와 연관된 부가적인 데이터 값들, 또는 이들 데이터 항목들의 임의의 조합을 포함할 수 있다. 장애 식별자는 이 특정 장애를 다른 장애들과 구별하기 위해 사용되는 값일 수 있다. 에러 코드는 다수의 값들로 이루어질 수 있고, 각각의 값은 특정 조건의 발생을 나타낸다. 부가적인 데이터 값들은 장애 유발 명령(faulting instruction) 또는 장애 유발 조건(fault triggering condition)에 연결된 임의의 다른 데이터를 나타낼 수 있다. 또한, 부가적인 데이터 값들은 장애의 발생 중에 계산되는 데이터를 나타낼 수 있다. 부가적인 데이터 값들의 몇몇 예로는, 장애 발생 시에 특정 로케이션에 기록되도록 요구된 데이터, 장애 발생 시에 액세스되는 어드레스, 장애를 유발하는 명령의 어드레스, 장애 발생 시의 메모리의 상태 등이 포함된다.
장애 정보의 일례는 IA-32 ISA에서의 페이지 장애와 관련하여 예시될 수 있다. IA-32 ISA에서, 페이지 장애는 14와 등가인 장애 식별자에 의해 식별된다. 따라서, 페이지 장애가 발생할 때, 제어권은, 엔트리 14에 있는 인터럽트 설명어 테이블(IDT)을 통하여 장애 핸들러로 벡터링함으로써 장애 핸들러에 전달된다. 액세스되는(페이지 장애를 발생시키는) 어드레스는 제어 레지스터(CR2)에 저장된다. 또한, 제어권을 장애 핸들러에 전달하기 전에, 페이지 장애는 장애 핸들러에 의해 사용되는 스택 상에 푸시(push)되는 에러 코드를 발생시킨다. 이 에러 코드는 어떤 조건들이 페이지 장애를 유발했는지를 장애 핸들러에게 통지하는 4개의 비트를 포함한다. 구체적으로, 에러 코드 내의 비트 0은 어드레스 변환(address translation)을 위해 사용되는 페이지 테이블에 존재하지 않는 페이지에 의해 장애가 유발되었는지를 나타내고, 에러 코드 내의 비트 1은 장애 유발 액세스(faulting access)가 기록이었는지를 나타내고, 에러 코드 내의 비트 2는 프로세서가 사용자 모드에 있을 때 액세스가 시작되었는지를 나타내고, 에러 코드 내의 비트 3은 페이지 디렉토리 내의 1로 설정된 예약 비트(reserved bit)에 의해 장애가 유발되었는지를 나타낸다.
부가적인 데이터 값들이 페이지 장애와 연관될 수 있다. 이 부가적인 데이터 값들의 예로는, 페이지 장애(CR2)를 유발한 액세스되는 어드레스, 장애 유발 명령의 어드레스, 페이지 장애가 발생할 때 게스트 소프트웨어가 페이지 테이블 계층 구조(page table hierarchy) 내의 기록 불가능 페이지에 기록하려고 시도하고 있던 데이터 값, 물리적 및 게스트 선형 메모리 내의 페이지 테이블들의 어드레스 등이 포함된다.
제어 전송 필터링 기준을 사용하는 필터링 메커니즘의 몇몇 실시예에 대하여 이하에 설명한다. 제어 전송 필터링 기준은 수동으로 또는 프로그램적으로 정의될 수 있다. 제어 전송 필터링 기준은 특정 장애, 에러 코드의 형태, ISA, 부가적인 데이터 값들의 존재, VMM의 특성들 및 다른 요소들에 따라서 달라진다. 제어 전송 필터링 기준의 복잡도 및 그 기준을 표현하기 위해 필요한 엘리먼트들의 수는 에러 코드에 포함된 값들의 수, 부가적인 데이터 값들의 수, 및 VMM으로의 이전(transition)를 유발할 필요가 있는(및 필요가 없는) 상기 에러 코드 값들 및/또는 상기 부가적인 데이터 값들의 가능한 조합의 수에 좌우된다. 예를 들면, 다수의 그러한 조합이 고려될 필요가 있을 때, 제어 전송 필터링 기준은 에러 코드 및/또는 다른 장애 정보 및 미리 정의된 데이터의 설정에 대해 몇몇 연산(예를 들면, 산술 및/또는 불(Boolean) 논리 연산)을 수행할 필요가 있을 수 있다.
몇몇 실시예들에서, 상기 미리 정의된 데이터는, 상술한 바와 같이, VMCS의 지정된 필드들에 저장된다. 다른 실시예들에서, 상기 미리 정의된 데이터는, (예를 들면, 컴퓨터 프로그램, 프로그래머블 로직, 마이크로코드 또는 프로세서의 하드코드 로직에서) 하드코딩된(hard-coded) 것일 수 있다.
도 2는 제어 전송 필터링 기준을 이용하여 장애로 인한 VM 엑시트들을 필터링하기 위한 처리(200)의 일 실시예에 대한 흐름도이다. 이 처리는 하드웨어(예를 들면, 회로, 전용 로직, 프로그래머블 로직, 마이크로코드 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 기기 상에서 실행되는 것과 같은), 또는 이들 양자의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다.
도 2를 참조하면, 처리(200)는 처리 로직이 장애 정보를 수신하는 것(처리 블록(202))으로 시작한다. 장애 정보는 이미 발생하였거나 또는 연산이 완료로 진행하도록 허용될 경우 발생할 장애와 연관될 수 있다. 장애 정보는 장애를 식별하는 장애 식별자를 포함한다. 몇몇 실시예에서, 장애 정보는 또한 에러 코드 및/또는 장애와 연관된 부가적인 데이터 값들을 포함한다.
판정 박스(204)에서는, 장애 정보가 하나 이상의 제어 전송 필터링 기준을 만족하는지에 대한 결정이 행해진다. 만일 판정 박스(204)에서 행해진 결정이 부 정이면, 즉, 장애 정보가 제어 전송 필터링 기준을 만족하지 않으면, 제어권은 VMM(처리 블록(206))에 전송되고, VMM은 장애를 취급하고 그 후 제어권을 다시 게스트 OS에 전송할 수 있다. 그와 달리, 만일 판정 박스(204)에서 행해진 결정이 긍정이면, 즉, 장애 정보가 제어 전송 필터링 기준을 만족하면, 제어권은 게스트 소프트웨어에게 남겨진다. 그 후 게스트 소프트웨어는 장애를 취급하도록 허용될 수 있다.
대체 실시예들에서, 만일 장애 정보가 제어 전송 필터링 기준을 만족하지 않으면 제어권은 VMM에 전송된다(그리고 장애 정보가 제어 전송 필터링 기준을 만족하면 제어권은 게스트 소프트웨어에게 남겨진다).
상술한 바와 같이, 제어 전송 필터링 기준의 복잡도는 각종 요소에 좌우된다. 일 실시예에서, 제어 전송 필터링 기준은 자애 정보가 특정 값과 비교되는 것만을 요구할 수 있다(예를 들면, 에러 코드가 10보다 크면 VM 엑시트가 발생되거나 또는 에러 코드가 0x4이면 VM 엑시트가 발생되거나 하는 등등). 다른 실시예에서, 제어 전송 필터링 기준은 장애 정보가 수 개의 값들과 비교되는 것을 요구할 수 있다. 예를 들면, VMM으로의 이전을 유발할 필요가 있는 에러 코드 값들을 미리 결정할 수 있고, 현재의 에러 코드를 이들 미리 결정된 값들과 비교하여 일치(match)를 확인할 수 있다. 미리 결정된 값(들)은 지정된 필드(들)에(예를 들면, 도 1의 VMCS(122)에) 저장되거나 또는 컴퓨터 프로그램, 프로그래머블 로직, 마이크로코드 또는 프로세서의 하드코드 로직에서 하드코딩된다. 또 다른 실시예들에서, 필터링 메커니즘은 장애 정보 및 미리 결정된 값들의 설정에 대하여 하나 이상의 불 논리 및/또는 산술 연산을 수행하도록 요구될 수 있다.
도 3 내지 도 5는 제어 전송 필터링 기준을 이용하여 장애로 인한 VM 엑시트들을 필터링하기 위한 프로세스의 예시적인 실시예들을 도시한다. 이 프로세스들은 하드웨어(예를 들면, 회로, 전용 로직, 프로그래머블 로직, 마이크로코드 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 기기 상에서 실행되는 것과 같은), 또는 이들 양자의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다.
도 3을 참조하면, 처리(300)는 처리 로직이 게스트 소프트웨어의 연산 중에 장애의 발생을 검출하는 것(처리 블록(301))으로 시작한다. 처리 블록(302)에서, 처리 로직은 장애를 식별하고 장애에 관한 다른 정보를 포함할 수 있는 장애 정보를 수신한다. 판정 박스(303)에서, 처리 로직은 장애 정보가 장애와 연관된 에러 코드를 포함하는지를 결정한다. 만일 그 결정이 긍정이면, (처리 블록(304)에서)처리 로직은 다음 식의 값(참 또는 거짓)을 결정한다.
EC AND MASK == MATCH
여기서, EC는 에러 코드이고, AND는 비트 단위(bitwise) 불 논리 연산자(Boolean logic operator)이고, "=="는 비트 단위 비교 연산자이고, MASK는 본 명세서에서 마스크 필드로 지칭되는 제1 필드에 저장된 미리 정의된 데이터이고, MATCH는 본 명세서에서 매치 필드로 지칭되는 제2 필드에 저장된 미리 정의된 데이터이다.
마스크 및 매치 필드들 각각의 사이즈는 대응하는 에러 코드의 사이즈에 좌우된다. 몇몇 실시예에서는, 마스크 및 매치 필드들의 폭이 에러 코드의 사이즈와 동일하다. 다른 실시예들에서는, 마스크 및 매치 필드들의 폭이 에러 코드의 사이즈와 동일하지 않다. 예를 들면, 마스크 및 매치 필드들은 에러 코드보다 작을 수 있고 몇몇 비트들만 식 1에 매핑할 수 있다.
또한, 도 3에 도시된 일 실시예에서, 처리 로직은 또한 리다이렉션 맵(redirection map) 내의 대응하는 제어 비트를 이용하여 VM 엑시트를 발생시킬지의 여부에 대한 추가 결정을 행한다. 리다이렉션 맵은 어느 가상화 이벤트들이 VM 엑시트를 유발할지를 구성하기 위해 VMM에 의해 유지되는 제어 비트들의 설정을 나타낸다. 조회(consult)되는 제어 비트는 현재의 장애를 유발하는 가상화 이벤트에 대응한다. 예를 들면, 그 가상화 이벤트는 페이지 장애, 외부 인터럽트, 또는 게스트 소프트웨어에 의한 디버그 레지스터에의 액세스일 수 있고, 그것들 각각은 리다이렉션 맵 내에 연관된 비트를 갖는다. 일 실시예에서, 리다이렉션 맵은 도 1의 VMCS(122)에 포함된다. 일 실시예에서, 리다이렉션 맵은 VMCS(122) 내의 단일 필드이다. 다른 실시예들에서는, 리다이렉션 맵을 상술(detail)하기 위해 VMCS 내에 다수의 필드들이 요구된다.
만일 판정 박스(303)에서 행해진 결정이 부정이거나(즉, 장애 정보가 이 장애와 연관된 에러 코드를 포함하지 않음), 처리 로직이 판정 박스(303)에서 식 1에서 등식이 성립한다(즉, 비트 단위 AND 연산자를 통하여 마스크 필드에 저장된 데이터와 결합된 에러 코드가 매치 필드에 저장된 데이터와 일치한다)고 결정하면, 일 실시예에서, 리다이렉션 맵 내의 대응하는 제어 비트의 값은 VM 엑시트를 발생시킬지 여부를 결정하기 위해 사용된다(처리 블록(306)). 예를 들어, 제어 비트가 설정되어 있으면, 처리 로직은 VM 엑시트를 발생시킬 것이고(처리 블록(313)), 그렇지 않으면, 처리 로직은 게스트 소프트웨어에게 장애를 전달할 것이다(처리 블록(312)).
만일 수학식 1에서의 등식이 성립하지 않으면, 처리 로직은 리다이렉션 비트맵 내의 제어 비트의 값을 반전시키고(처리 블록(308)) 이 반전된 값을 이용하여 VM 엑시트를 발생시킬지 여부를 결정한다(처리 블록(310)). 만일 반전된 비트가 설정되어 있으면, 처리 로직은 VM 엑시트를 발생시키고(처리 블록(314)), 그렇지 않으면, 게스트 소프트웨어에게 장애가 벡터링된다(처리 블록(312)). 다른 실시예에서, 만일 판정 박스(303)에서 결정되는 바와 같이, 등식이 성립하지 않을 경우 처리 로직은 제어 비트의 실제 값을 사용하고, 등식이 성립할 경우에는 제어 비트의 반전된 값을 사용할 수 있다.
도 3의 처리(300)에서 마스크 및 매치 필드들과 제어 비트를 함께 사용하는 것은 일례로서 IA-32 ISA 페이지 장애와 연관된 에러 코드(본 명세서에서 페이지 장애 에러 또는 PFEC로 지칭됨)의 다양한 값들을 사용하여 예시될 수 있다. 이하의 예들은 (도 3에 도시된 바와 같이) 식 1에서의 등식이 성립하지 않는 경우 제어 비트의 반전의 존재를 가정한다.
상술한 바와 같이, PFEC는 4개의 비트를 포함한다. PFEC 값들의 모든 가능한 조합들에 대해 원하는 결과를 성취하기 위하여, 마스크 필드, 매치 필드 및 제어 비트의 각각은 특정 세팅을 가져야 한다. 예를 들면, 모든 페이지 장애 시에 VM 엑시트를 유발하기 위하여, 제어 비트는 1로 설정될 수 있고, 마스크 필드 비트 들의 값은 0x0으로 설정될 것이고, 매치 필드의 값은 0x0으로 설정될 것이다. 대안적으로, 동일한 동작(behavior)을 얻기 위하여, 제어 비트는 0으로 설정되고, 마스크 필드는 0x0으로 설정되고 매치 필드는 0xF로 설정될 수 있다(동일한 기능을 제공하는 매치, 마스크 및 제어 비트 값들의 세팅들은 많이 있다는 것에 주의한다). 다른 예에서, 현재 페이지들에의 감독자(supervisor) 기록들로부터 생기는 페이지 장애 시에 VM 엑시트를 유발하기 위하여, 제어 비트는 1로 설정될 것이고, 마스크 필드의 값은 0xF로 설정될 것이고, 매치 필드의 값은 0x3으로 설정될 것이다. 이들 값들은 0x3과 등가인 에러 코드를 발생시키는 페이지 장애 시에만 VM 엑시트가 발생할 것임을 보증한다. 또 다른 예에서, 존재하지 않는 페이지들 또는 예약 비트 위반(reserved-bit violations)으로부터 생기는 페이지 장애 시에 VM 엑시트를 유발하기 위하여, 제어 비트는 0으로 설정될 것이고, 마스크 필드의 값은 0x9로 설정될 것이고(즉, 비트 0과 3만이 1로 설정됨), 매치 필드의 값은 0x1로 설정될 것이다. 이것은 존재하는 페이지(즉, 비트 0이 1로 설정됨) 및 예약 비트 위반이 아님(즉, 비트 3이 0으로 클리어됨)을 나타내는 페이지 장애들을 제외한 모든 페이지 장애 시에 VM 엑시트를 유발할 것이다.
(도시되지 않은) 또 다른 예에서는, 제어 비트가 사용되지 않는다. 즉, 처리 로직은 식 1의 결과에 기초하여 VMM의 제어권을 이전시킬지(즉, VM 엑시트를 발생시킬지)의 여부를 결정한다. 만일 식 1에서 평가된 등식이 성립하면(즉, 비트 단위 AND 연산자를 통하여 마스크 필드에 저장된 데이터와 결합된 에러 코드가 매치 필드에 저장된 데이터와 일치하면), 제어 전송 필터링 기준이 만족되고, 그 에 러 코드와 연관된 장애는 게스트 운영 체계에 의해 취급될 것이다. 그렇지 않으면(즉, 비트 단위 AND 연산자를 통하여 마스크 필드에 저장된 데이터와 결합된 에러 코드가 매치 필드에 저장된 데이터와 일치하지 않으면), 제어 전송 필터링 기준은 만족되지 않고, VM 엑시트가 발생되어 제어권이 VMM으로 이전될 것이다.
도 3에 예시된 실시예에서 사용되는 제어 비트의 반전은 에러 코드 값들의 다양한 조합들에 대하여 원하는 결과(즉, VM 엑시트 결과 또는 VM 엑시트가 아닌(no-VM exit) 결과)를 성취하는 데 있어서 유연성을 더한다. 예를 들면, 이하의 표는 2개의 비트를 포함하는 에러 코드의 값들의 다양한 조합들에 대하여 2개의 가능한 원하는 결과들을 예시한다.
에러 코드 비트 원하는 결과 1 원하는 결과 2
0 0 엑시트 엑시트 없음
0 1 엑시트 없음 엑시트
1 0 엑시트 엑시트 없음
1 1 엑시트 엑시트 없음

도 3에 예시된 처리(300)의 실시예는, 마스크 필드 비트들의 값들이 (1 1)과 등가이고, 매치 필드의 값들이 (0 1)과 등가이고, 제어 비트가 0과 등가이면 원하는 결과 1을 성취할 수 있다. 원하는 결과 2는 마스크 필드 비트들의 값들이 (1 1)과 등가이고 매치 필드의 값들이 (0 1)과 등가이고, 제어 비트가 1로 설정되어 있는 경우에 성취될 수 있다.
원하는 결과 2는 제어 비트의 사용을 필요로 하지 않는다(즉, 원하는 결과 2는 마스크 = (1 1)이고 매치 = (0 1)일 것만을 요구한다)는 것에 주의해야 할 것이다. 그러나, 원하는 결과 1은 VM 엑시트를 발생시킬지 여부를 결정하는 과정에서 제어 비트의 반전이 사용되지 않거나 보다 많은 필드들이 수반되지 않으면 성취될 수 없다.
VM 엑시트를 발생시킬지 여부를 결정하기 위해 4개의 지정된 필드를 사용하는 제어 전송 필터링 프로세스의 실시예가 도 4에 예시되어 있다. 도 4를 참조하면, 처리(400)는 하드웨어(예를 들면, 회로, 전용 로직, 프로그래머블 로직, 마이크로코드 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 기기 상에서 실행되는 것과 같은), 또는 이들 양자의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다.
처리(400)는 처리 로직이 게스트 소프트웨어의 연산 중에 장애의 발생을 검출하는 것(처리 블록(401))으로 시작한다. 도 4에 예시된 실시예에서는, 모든 장애들이 처리 로직이 처리 블록(402)에서 수신하는 에러 코드들을 발생시킨다고 가정한다. 다음으로, 처리 로직은 비트 단위 AND 연산자를 사용하여 에러 코드를 제1 마스크 필드에 저장된 데이터와 결합시키고(처리 블록(404)) 제2 마스크 필드에 저장된 데이터와 결합시킨다(처리 블록(406)). 즉, 제1 결합의 결과는 INT1 = EC AND MASK1이고 제2 결합의 결과는 INT2 = EC AND MASK2이다.
또한, 판정 박스(408)에서, 처리 로직은 제1 결합 INT1이 제1 매치 필드(MATCH1)에 저장된 데이터와 일치하는지 또는 제2 결합 INT2가 제2 매치 필드(MATCH2)에 저장된 데이터와 일치하는지 여부를 결정한다. 만일 어떠한 일치든지 발견되면, 처리 로직은 VM 엑시트를 발생시킨다(처리 블록(410)). 대안적으로, 아무런 일치도 발견되지 않으면, 장애는 게스트 운영 체계에게 삽입(inject)된다(처 리 블록(409)).
제어 전송 필터링 기준은, 도 5에 예시된 바와 같이, 더욱 복잡한 산술 또는 불 논리 및/또는 부가적인 필드들을 사용하여 원하는 결과에 대한 더 많은 유연성을 제공할 수 있다. 도 5를 참조하면, 처리(500)는 하드웨어(예를 들면, 회로, 전용 로직, 프로그래머블 로직, 마이크로코드 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 기기 상에서 실행되는 것과 같은), 또는 이들 양자의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다.
처리(500)는 처리 로직이 게스트 소프트웨어의 연산 중에 장애의 발생을 검출하는 것(처리 블록(501))으로 시작한다. 처리 블록(502)에서, 처리 로직은 장애 정보를 수신한다. 만일, 처리 블록(503)에 의해 결정되는 바와 같이, 장애 정보가 에러 코드를 포함할 경우, 처리 로직은 비트 단위 AND 연산자를 사용하여 에러 코드를 제1 마스크 필드에 저장된 데이터와 결합시키고(처리 블록(504)) 제2 마스크 필드에 저장된 데이터와 결합시킨다(처리 블록(506)). 즉, 제1 결합의 결과는 INT1 = EC AND MASK1이고 제2 결합의 결과는 INT2 = EC AND MASK2이다.
또한, 판정 박스(508)에서, 처리 로직은 제1 결합 INT1 내에 임의의 비트가 설정되어 있는지 여부 또는 제2 결합 INT1이 매치 필드(MATCH)에 저장된 데이터와 일치하는지 여부를 결정한다. (도 5에 도시되지 않은) 일 실시예에서, 만일 어느 한쪽의 결정이 긍정이면, 처리 로직은 VM 엑시트를 발생시킨다. 그렇지 않으면, 장애는 게스트 OS에게 삽입된다.
(도 5에 도시된) 다른 실시예에서, VM 엑시트에 관한 결정은 또한 리다이렉 션 맵 내의 대응하는 제어 비트에 좌우된다. 구체적으로, 판정 박스(508)에서 행해진 결정이 긍정이면(또는 판정 박스(503)에서 행해진 결정이 부정이면, 즉, 장애 정보가 에러 코드를 포함하지 않으면), 처리 로직은 또한 판정 박스(510)에서 제어 비트가 VM 엑시트를 특정하는지(예를 들어, 제어 비트가 1로 설정되어 있는지) 여부를 결정한다. 만일 제어 비트가 VM 엑시트를 특정하면, 처리 로직은 VM 엑시트를 발생시킨다(처리 블록(512)). 만일 제어 비트가 VM 엑시트를 특정하지 않으면(예를 들어, 제어 비트가 클리어되어 있으면), 장애는 게스트 OS에게 삽입된다(처리 블록(518)).
그와 달리, 만일 판정 박스(508)에서 행해진 결정이 부정이면, 처리 로직은 제어 비트의 값을 반전시킨다(처리 블록(514)). 만일 반전된 값이 VM 엑시트를 특정하면(판정 박스(516)), 처리 로직은 VM 엑시트를 발생시킨다(처리 블록(512)). 만일 반전된 값이 VM 엑시트를 특정하지 않으면, 장애는 게스트 OS에게 삽입된다(처리 블록(518)).
도 3 내지 도 5에 도시된 실시예들은 특정한 연산자들(즉, 비트 단위 AND, 비교 등)을 사용하지만, 다양한 다른 연산자들이 보편성(generality)의 손실 없이 필터링 기준과 함께 사용될 수 있다. 게다가, 도 3 내지 도 5와 관련하여 상술한 것들 이외의 다양한 필터링 기준이 게스트 소프트웨어의 연산 중에 발생한 장애들을 처리하기 위해 사용될 수 있다. 또한, 필터링 처리 중에 장애와 연관된 에러 코드 대신에, 또는 그것과 함께 상술한 부가적인 값들이 사용될 수 있다.
몇몇 실시예들에서, 제어 전송 필터링 기준에 앞서서 (본 명세서에서 장애 필터링 기준으로 지칭되는) 부가적인 필터링 기준이 장애 정보에 적용된다. 다른 실시예들에서, 장애 필터링 기준은 제어 전송 필터링 기준 후에 장애 정보에 적용된다. 또 다른 실시예들에서, 장애 정보에 제어 전송 필터링 기준은 적용되지 않고 장애 필터링 기준이 적용된다. 장애 필터링 기준은 게스트 소프트웨어의 연산 중에 발생하는 장애 유발 조건(faulting condition)이 무시될 수 있는지 여부를 결정하기 위해 사용된다. 장애 유발 조건은 연산이 완료하도록 허용될 경우 통상적으로 장애를 유발하게 되는 이벤트를 나타낸다. 그러한 장애 유발 조건의 일례는 페이지 테이블 계층 구조 내의 기록 불가능 페이지에 기록하려는 게스트 소프트웨어에 의한 시도이다. 몇몇 상황에서, 장애 유발 조건은, 그 장애 유발 조건의 발생 시에 존재하는 다른 요소들이 그 장애 유발 조건이, 예를 들면, VMM 또는 다른 가상 기기들의 성능, 보안 또는 적절한 연산을 훼손시키지 않을 것임을 나타내기 때문에 무시될 수 있다. 그러한 상황의 예들에 대해서는 도 7 및 도 8과 관련하여 아래에서 더욱 상세히 설명하겠다.
도 6은 장애 필터링 기준 및 제어 전송 필터링 기준을 이용하여 장애 및 장애로 인한 VM 엑시트를 필터링하기 위한 프로세스의 일 실시예에 대한 흐름도이다. 이 처리는 하드웨어(예를 들면, 회로, 전용 로직, 프로그래머블 로직, 마이크로코드 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 기기 상에서 실행되는 것과 같은), 또는 이들 양자의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다.
처리(600)는 처리 로직이 게스트 소프트웨어의 연산 중에 장애 조건의 발생을 검출하고(처리 블록(602)) 이 장애 조건에 관련된 장애 정보를 분석하는 것(처 리 블록(604))으로 시작한다. 그러한 장애 정보는 장애 식별자, 에러 코드, 장애 유발 어드레스, 기록될 데이터, 페이지 테이블 어드레스 등을 포함할 수 있다.
다음으로, 처리 로직은 장애 정보가 장애 필터링 기준을 만족하는지 여부를 결정한다(판정 박스(604)). 장애 필터링 기준은, 게스트 소프트웨어의 연산에 관한 규칙들을 이용하여 프로세서 상태, 메모리 상태 및/또는 장애 정보 중 하나 이상의 엘리먼트에 대한 평가를 필요로 한다. 예를 들면, 장애 필터링 기준은 게스트 소프트웨어가 어느 하나의 메모리 로케이션에 기록하려고 하는 데이터를 이 메모리 로케이션에 현재 저장되어 있는 데이터와 비교하는 것을 필요로 할 수 있다. 장애 필터링 기준은 프로세서 상태, 메모리 상태 및/또는 장애 정보 중 하나의 엘리먼트에 대한 단일 체크 또는 각종 엘리먼트들에 대한 다중 체크를 필요로 할 수 있다. 장애 필터링 기준의 복잡도는 특정 장애 조건, 이 장애 조건에 관련된 연산 규칙들, ISA, VMM의 특징들, 애플리케이션, 및 다른 요소들에 따라서 달라진다. 예시적인 필터링 기준에 대해서는 도 7 및 도 8과 관련하여 아래에서 더욱 상세히 설명한다.
만일 장애 필터링 기준이 만족되면, 처리 로직은 장애 유발 조건을 무시하고 그 장애 유발 조건이 검출되지 않은 것처럼 게스트 소프트웨어가 진행하도록 허용한다(처리 블록(608)). 그 결과, 게스트 소프트웨어에 의해 개시된 연산의 동작은, 장애 유발 조건의 검출에도 불구하고, 그것의 완료를 허용하도록 변경된다.
만일 장애 필터링 기준이 만족되지 않으면, 처리 로직은 제어 전송 필터링 기준을 이용하여 장애를 취급하기 위한 적당한 엔티티를 결정한다(판정 박스 (610)). 만일 장애 정보가 제어 전송 필터링 기준을 만족하면, 처리 로직은 장애를 게스트 소프트웨어에 전달하고 게스트 소프트웨어가 그 장애를 취급하도록 허용한다(처리 블록(612)). 만일 장애 정보가 제어 전송 필터링 기준을 만족하지 않으면, 처리 로직은 제어권을 VMM에게 이전시킨다(처리 블록(614)).
다른 실시예들에서는, 만일 장애 필터링 기준이 만족되지 않으면, 처리 로직은 제어 전송 필터링 기준을 이용하지 않고 항상 제어권을 VMM에게 이전시킨다.
또 다른 실시예들에서는, 처리 로직은 우선 제어 전송 필터링 기준을 이용하여 장애를 취급하기 위한 적당한 엔티티를 결정한다. 그 후, 그 적당한 엔티티가 게스트 소프트웨어이면, 처리 로직은 또한 장애 필터링 기준이 만족되는지 여부를 결정한다. 만일 장애 필터링 기준이 만족되면, 게스트는 장애 조건을 무시하도록 허용되고, 만일 장애 필터링 기준이 만족되지 않으면, 장애는 상기와 같이 게스트에 전달된다.
이하의 논의는 IA-32 ISA에서와 같은 페이지 테이블 구조를 가정한다. 그러나, 각종 ISA들에서 유사한 페이지 테이블 구조들이 존재하고 본 발명은 IA-32 ISA의 이용에 의해 한정되지 않는다는 것에 주의해야 할 것이다. 또한, 이하의 논의를 용이하게 하기 위해 다양한 단순화가 행해진다. 예를 들면, 물리 주소 확장(PAE) 및 페이지 사이즈 확장(PSE) 플래그들의 효과가 포함되지 않고, 링 기반 보호 메커니즘(ring based protection mechanisms)이 설명되지 않고, 메모리 액세스들의 정렬에 대한 요건들이 테스트되지 않는 등등이다.
당 기술 분야에 잘 알려진 바와 같이, IA-32 ISA에서의 페이지 테이블들은 페이지 디렉토리 엔트리들(PDE들) 및 페이지 테이블 엔트리들(PTE들)로 구성된다. 각각의 PDE 및 PTE는 메모리 페이지들의 액세스 가능성(accessibility)을 제어하는 각종 비트 필드들을 포함한다. 예를 들면, "P" 비트는 페이지들이 존재하는 것으로(1) 또는 존재하지 않는 것으로(0) 표시하고, "R/W" 비트는 페이지들이 판독 전용(0)인지 또는 기록 가능하고 판독 가능(1)인지를 지시하고, "U/S" 비트는 페이지들이 감독자 특권을 필요로 하는지 여부를 지시하고, 페이지 프레임 번호(PFN)는 논리 페이지가 위치하는 물리 어드레스의 부분을 포함하는 등등이다. CR3은 페이지 디렉토리의 베이스의 물리 어드레스(및 부가적인 플래그들)를 포함하는 ISA에서의 제어 레지스터이다. 페이지 디렉토리 베이스 물리 어드레스는 CR3[31:12]<<12와 등가이다(즉, 페이지 디렉토리 베이스 어드레스의 하위 12 비트는 0이고 상위 20 비트는 CR3의 상위 20 비트에 위치한다).
하나의 가상 기기에서의 오류 또는 악성 코드가 VMM 또는 다른 가상 기기에서의 코드 실행을 훼손시키는 것을 방지하기 위해서는, 하위 기반(underlying) 물리적 기기의 물리적 메모리 자원들에의 게스트 소프트웨어의 액세스를 제한할 필요가 있다. 게스트 OS들 및 VMM에 의해 각각 관리되는 개별적인 페이지 테이블 계층 구조들이 제공되는 몇몇 아키텍처에서, 물리적 메모리 어드레스에의 게스트 소프트웨어의 액세스를 제한하기 위한 하나의 방법은 보호된 페이지들(예를 들면, VMM 또는 다른 VM들에 속하는 페이지들)에 대한 게스트 소프트웨어에 의한 판독 또는 기록 연산들을 방지하기 위한 게스트 페이지 테이블 계층 구조들에 대한 VMM 변경 허가들(modifying permissions)을 포함한다. 또한, 게스트 페이지 테이블들은 그 게 스트 페이지 테이블들을 저장하는 VM에 속하는 몇몇 페이지들에의 기록 연산들을 방지하기 위하여 변경된다. 일단 이들 허가 변경들이 행해지면, 페이지 테이블을 변경하려는 게스트 소프트웨어에 의한 시도는 VMM이 VM 엑시트를 통하여 관찰할 수 있는 페이지 장애 이벤트들을 유발할 것이다. VMM은 시도된 액세스를 검사하고 취해야 할 적절한 조치들을 결정할 수 있다. 이를테면, 그것은 시도된 액세스를 허용하거나, 불허하거나 또는 변경할 수 있다. 예를 들면, 게스트 소프트웨어는 VMM 또는 다른 VM에 속하는 물리적 페이지를 매핑하도록 허용되지 않을 수 있다. 게스트 소프트웨어에 의한 페이지 테이블들에 대한 변경들이 빈번히 발생할 때, 각각의 시도된 게스트 페이지 테이블 변경을 차단(screen)하기 위해 VMM으로 엑시트하는 것과 연관된 부하(overhead)는 상당한 성능 부담을 지울 것이다.
페이지 테이블들의 관리를 간단하게 하기 위하여, 예를 들면 마이크로소프트 Windows XP와 같은 몇몇 운영 체계들은 재귀적(recursive) 페이지 디렉토리를 채용한다. 바꾸어 말하면, 페이지 디렉토리 페이지를 페이지 테이블 페이지로서 참조하도록 페이지 디렉토리 엔트리(PDE)가 설정될 것이다. 이렇게 동일 페이지를 페이지 디렉토리와 페이지 테이블 양쪽 모두로서 사용함으로써 자체 참조 PDE를 통하여 액세스되는 선형 어드레스 공간의 4MB 영역에서 모든 페이지 테이블 페이지들이 액세스 가능하게 된다. 자체 참조(self-referential) PDE를 사용하는 경우에는, 임의의 특정 선형 어드레스를 매핑하기 위해 사용되는 PTE 또는 PDE의 선형 어드레스가 계산될 수 있다. 자체 참조 PDE를 채용하는 운영 체계들에서, 통상적인 페이지 테이블 편집은 이 자체 매핑된(self-mapped) 영역을 통하여 행해진다(즉, 페이 지 테이블에 대한 편집은 자체 매핑 PDE를 사용하여 4MB 영역에 속하는 선형 어드레스들을 사용하는 메모리에의 기록들을 통하여 행해진다). 이 자체 매핑된 PDE를 사용하지 않는 페이지 테이블들의 편집들은 그 수가 매우 적다.
페이지 디렉토리 페이지와 페이지 테이블 페이지 양쪽 모두로서 공통의 페이지가 사용되는 페이지 테이블은 본 명세서에서 자체 매핑된 페이지 테이블로 지칭된다. 본 발명은 페이지 테이블 엔트리들이 조직된 방식(organized fashion)으로 선형 어드레스들에 매핑되는(그러한 매핑이 페이지 테이블 계층 구조 내의 다수의 레벨들에서의 구조들을 재사용한 결과이든 OS 규약(conventions)에 의한 것이든) 다른 방법들에도 적용된다는 것을 당업자라면 분명히 알 것이다.
본 발명의 일 실시예에서는, VMM으로의 엑시트를 필요로 하지 않는 페이지 맵 편집들을 식별하기 위한 필터링 메커니즘이 채용된다. 이 실시예에서는, 필터링 기준을 위한 부가적인 필드들이 VMCS에 부가된다.
일 실시예에서, 게스트 운영 체계에 의해 사용되는 페이지 테이블들은 자체 매핑된다. 즉, 페이지 테이블 계층 구조 내의 페이지 디렉토리 엔트리들(PDE들) 중 하나는 다시 페이지 디렉토리(PD) 페이지의 베이스를 가리킨다. 상술한 바와 같이, 자체 매핑된 페이지 테이블들의 개념은 당 기술 분야에서 잘 이해되고 예를 들면 마이크로소프트의 Windows XP와 같은 운영 체계들에 의해 사용된다. 일 실시예에서, 자체 매핑(self-mapping)은 (본 명세서에서 PTBASE로 지칭되는) 페이지 디렉토리들의 베이스의 선형 어드레스가 일단의 조건들(a set of conditions)을 만족하는 것을 보증함으로써 지원된다. 이 일단의 조건들은, PTBASE 값은 4-MB 정렬된 것이고, 즉 PTBASE[21:0] == 0이고, 페이지 테이블은 적절한 자체 매핑 엔트리를 포함하고, 즉 로케이션 ((CR3[31:12]<<12)+(PTBASE[31:22]<<2))에 있는 엔트리 내의 PFN이 CR3[31:12]와 등가인 것을 입증할 수 있다. 일 실시예에서, PTBASE 값은 후술하는 바와 같이 필터링 메커니즘들에 의해 사용하기 위해 VMCS에 저장된다.
자체 매핑 페이지 테이블이 사용되고 있는 경우에는, 임의의 주어진 어드레스가 페이지 테이블 내에 속하는지 여부(즉, ADDR[31:22] == PTBASE[31:22]인지 여부, 여기서 ADDR은 액세스되는 어드레스)가 결정될 수 있다. 또한, 그 어드레스가 PDE 내에 있는지 여부(즉, 그 어드레스가 페이지 테이블 내에 있고 ADDR[21:12] == PTBASE[31:22]인지 여부) 또는 PTE 내에 있는지 여부(즉, 그 어드레스가 페이지 테이블 내에 있고 그것이 PDE 내에 있지 않는지 여부)가 결정될 수 있다.
도 7 및 도 8은 장애 필터링 기준을 이용하여 페이지 장애를 필터링하기 위한 프로세스의 2개의 예시적인 실시예들을 도시한다. 이 처리는 하드웨어(예를 들면, 회로, 전용 로직, 프로그래머블 로직, 마이크로코드 등), 소프트웨어(범용 컴퓨터 시스템 또는 전용 기기 상에서 실행되는 것과 같은), 또는 이들 양자의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 도 7 및 도 8에 도시된 실시예들에서, VMM은 페이지 테이블 자신을 매핑하는 게스트 페이지 테이블 엔트리들(게스트 PTE들)이 판독 전용 액세스를 갖는 것을 보증함으로써 물리적 메모리를 보호한다. 그 결과, 게스트 소프트웨어가 페이지 테이블 엔트리들을 변경하려고 할 때, 페이지 장애 조건이 발생한다. 이들 실시예는 상술한 바와 같이 자체 매핑된 페이지 테이블들을 사용하는 게스트 OS와 함께 사용될 수도 있고 또는 이런 페이지 테이블 구조를 사용하지 않는 게스트 OS와 함께 사용될 수도 있다(비록 자체 매핑된 페이지 테이블들을 사용하는 게스트 OS의 사용이 보다 큰 성능 향상을 제공하지만).
도 7에 도시된 실시예에서는, 게스트 운영 체계가 "P" 비트를 1로 설정하려고 시도하지 않으면 장애를 전달하거나 또는 VM 엑시트를 유발하지 않고 PTE에의 기록이 완료하도록 허용하면서도, 물리적 메모리 공간을 보호하고 게스트 소프트웨어에게 페이지 테이블에 대한 완전한 제어권을 부여하는 것을 억제하는 장애 필터링 기준의 설정이 예시되어 있다. 이 규칙에 대한 이론적 근거는, 존재하지 않는 것으로 표시된(즉, "P" 비트가 0과 등가인) PTE는 물리적 메모리 페이지를 매핑할 수 없다는 사실이다. 그러므로, 게스트 소프트웨어에 의해 변경되는 PTE는 물리적 메모리 페이지를 매핑할 수 없고 따라서 VMM 또는 다른 VM에서 실행되는 소프트웨어의 연산을 방해할 수 없다. 그러므로 VMM에게는 페이지 테이블 변경을 통지할 필요가 없고, 페이지 테이블 기록은 페이지 장애 또는 VM 엑시트를 유발하지 않고 진행하도록 허용될 것이다.
도 7을 참조하면, 처리 로직은 게스트 소프트웨어의 연산 중에 페이지 장애 조건을 검출하고(처리 블록(702)) 그 페이지 장애 조건과 관련된 페이지 장애 정보를 수신하는 것(처리 블록(704))으로 시작한다.
다음으로, 일단의 장애 필터링 기준이 페이지 장애 정보에 적용된다. 구체적으로, 처리 로직은 장애 유발 액세스가 기록 연산인지 여부를 결정하고(판정 박스(706)) 그것도 PTE에의 기록 연산인지 여부를 결정하고(판정 박스(708)) 또한 "P" 비트를 1로 설정하고자 하는 시도가 아닌지 여부(즉, DATA.P == 0인지 여부, 여기서 DATA는 게스트가 기록하려고 하는 값)를 결정한다(판정 박스(710)). 만일 이들 결정들이 긍정이면, 게스트 운영 체계의 액세스는 장애 또는 VM 엑시트를 유발하지 않고 완료하도록 허용된다(즉, 기록은 메모리를 변경하도록 허용된다)(처리 블록(714)). 만일 처리 블록들(706, 708 및 710)에서의 결정들 중 어느 것이든 부정이면, 제어는 처리 블록(712)으로 전송되어, 도 2 내지 도 5와 관련하여 더욱 상세히 설명한 바와 같이, VM 엑시트가 발생되어야 할지 또는 장애가 게스트 소프트웨어로 벡터링되어야 할지를 결정하게 된다.
(도면들에 도시되지 않은) 다른 실시예들에서는, 기록이 PTE에 대한 것이어야 한다는 자격 조건(qualification)은 제거될 수도 있고 또는, 예를 들면, 존재 비트(present bit)가 설정되어 있지 않은 한 PTE 또는 PDE에의 기록을 허용하는 테스트로 대체될 수도 있다.
도 8을 참조하면, 도 7과 관련하여 상술한 장애 필터링 기준 및 몇몇 부가적인 기준을 포함하는 더욱 복잡한 장애 필터링 기준의 설정이 예시되어 있다. 이 장애 필터링 기준의 설정은 게스트 운영 체계가 페이지 장애를 요구하거나 또는 VM 엑시트를 유발하지 않고 PFN 이외의 PTE 내의 비트들, 판독/기록 및 존재 비트들을 변경하도록 허용한다. 또한 판독/기록 및 존재 비트들의 특정한 변경들은 페이지 장애를 요구하거나 또는 VM 엑시트를 유발하지 않고 허용된다.
처리 로직은 게스트 소프트웨어의 연산 중에 페이지 장애 조건을 검출하고(처리 블록(802)) 그 페이지 장애 조건과 관련된 페이지 장애 정보를 수신하는 것( 처리 블록(804))으로 시작한다. 다음으로, 처리 로직은 장애 유발 액세스가 기록 연산인지 여부를 결정하고(판정 박스(806)) 그것도 PTE에의 기록 연산인지 여부를 결정하고(판정 박스(808)) 또한 "P" 비트를 1로 설정하고자 하는 시도가 아닌지 여부(즉, DATA.P == 0인지 여부)를 결정한다(판정 박스(810)). 만일 이들 결정들이 모두 긍정이면, 게스트 운영 체계의 액세스는 장애 또는 VM 엑시트를 유발하지 않고 완료하도록 허용된다(즉, 기록은 메모리를 변경하도록 허용된다)(처리 블록(814)). 만일 처리 블록들(806 또는 808)에서의 결정들이 부정이면, 제어는 처리 블록(812)으로 진행하여, 도 2 내지 도 5와 관련하여 설명한 바와 같이, VM 엑시트가 필요한지를 결정하게 된다.
만일 처리 블록(810)에서의 결정이 부정이면, 부가적인 장애 필터링 규칙들이 적용된다. 구체적으로, 처리 로직은 PTE가 PTE에 존재하는 것으로 이미 표시되어 있는지 여부(즉, ADDR->P == 1인지 여부, 여기서 ADDR은 게스트 소프트웨어가 기록하려고 시도하는 어드레스이고 ADDR->P는 ADDR에 위치하는 메모리 내의 데이터가 PTE로 해석될 경우 P 비트를 나타낸다)를 결정하고(판정 박스(816)), PFN이 변경되고 있지 않은지 여부(즉, ADDR->PFN == DATA.PFN인지 여부)를 결정하고(판정 박스(818)), 게스트가 PTE에 의해 매핑된 페이지를 판독 전용으로 표시하려고 시도하거나(DATA.R/W == 0) 또는 PTE에 의해 매핑되는 페이지가 메모리 내의 PTE에서 기록 가능한 것으로 이미 표시되었는지(ADDR->R/W ==1) 여부를 결정한다(판정 박스(820)). 만일 이들 결정들이 긍정이면, 게스트 운영 체계의 액세스는 장애 또는 VM 엑시트를 유발하지 않고 완료하도록 허용된다(즉, 기록은 메모리를 변경하도록 허용된다)(처리 블록(814)). 만일 처리 블록들(816, 818 및 810)에서의 결정들 중 어느 것이든 부정이면, 제어는 처리 블록(812)으로 진행하여, VM 엑시트가 필요한지를 결정하게 된다.
도 7 및 도 8에 도시된 필터링 메커니즘들은, 상술한 바와 같이, 자체 매핑된 PDE를 사용하는 페이지 테이블들을 변경하려고 시도하는 액세스들을 필터링 제거(filter out)할 것임을 주의해야 할 것이다. 자체 매핑된 PDE를 사용하지 않는 페이지 테이블들을 변경하고자 하는 시도들은 장애 필터링 기준에 의해 필터링 제거되지 않을 것이다(즉, 블록들(708 및 808)에서의 기록이 PTE에 대한 것인지 여부에 대한 결정이 실패할 것이다). 그 후 제어 전송 필터링 기준은 도 2 내지 도 5에서 설명한 바와 같이 VM 엑시트가 필요한지 여부를 결정하기 위해 사용될 것이다. 이는 보안이나 정확한 연산 관점에서 문제점들을 제기하지 않는다. 왜냐하면 VMM은 PTE가 사실상 편집되고 있는지 여부를 결정할 수 있기 때문이다. 제어 전송 필터링 기준은, 모든 기록 페이지 장애 시에 VM 엑시트를 유발하고 또한 기록되고 있는 어드레스 및 데이터를 평가하여 페이지 테이블 편집이 시도되고 있는지를 결정하도록 구성될 것이다.
도 7 및 도 8을 참조하여 위에서 설명한 것들 이외의 각종 장애 필터링 기준이 보편성의 손실 없이 장애를 필터링하기 위해 사용될 수 있다. 필터링의 형태는, 일 실시예에서, VMCS 내에 상주할 수 있는 각종 VMM 제어 필드들(예를 들면, PTBASE)에 의해 제어될 수 있다. 대안적으로, 필터링은 단일 인에이블 비트(enable bit)에 의해 제어될 수도 있고, 프로세서 구현으로 하드코딩될 수도 있다.
도 9는 제어 전송 필터링 기준 및/또는 장애 필터링 기준을 정의하기 위한 프로세스의 일 실시예에 대한 블록도이다. 처리(900)는 수동으로 또는 자동으로 수행될 수 있다.
도 9를 참조하면, 처리(900)는 장애 정보(예를 들면, 에러 코드 값, 장애 식별자 등)의 어떤 조합들이 VMM으로의 이전을 필요로 하는지, 또는 대안적으로, 장애를 무시하고 완료하도록 허용되어야 하는지를 식별하는 것(처리 블록(902))으로 시작한다. 그 후, VM 엑시트 및/또는 장애 필터링 기준을 위하여 사용될 수 있는 필드들 및 이 필드들의 의미론(semantics)의 최대 수가 식별되고(처리 블록(904)) 이용 가능한 연산자들(예를 들면, 불, 산술 등)이 식별된다(처리 블록(906)). 또한, 처리 블록들(902-906)에서 식별된 정보에 기초하여, 필터링 기준이 생성된다(처리 블록(908)). 필터링 기준은 하나 이상의 미리 정의된 값들 및 이 미리 정의된 값들 및 에러 코드에 대해 수행될 하나 이상의 불 논리 및/또는 산술 연산들을 포함할 수 있다.
이상과 같이, 게스트 소프트웨어의 연산 중에 발생하는 장애들을 취급하기 위한 방법 및 장치에 대하여 설명하였다. 상기 설명은 예시를 의도하는 것이지, 한정을 위한 것이 아니다. 당업자들은 상기 설명을 읽고 이해하면 많은 다른 실시예들을 명백하게 알 수 있을 것이다. 그러므로, 본 발명의 범위는 첨부된 청구의 범위들과 더불어 그러한 청구의 범위들과 동등한 자격이 있는 균등물들의 전체 범위와 관련하여 결정되어야 할 것이다.

Claims (30)

  1. 게스트 소프트웨어의 연산(operation)과 연관된 장애(fault)에 관한 장애 정보(fault information)를 수신하는 단계와;
    상기 장애 정보가 적어도 하나의 장애 필터링 기준(fault filtering criterion)을 만족하는지 여부를 결정하는 단계와;
    상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하는 경우에, 상기 게스트 소프트웨어로 하여금 상기 장애를 무시(ignore)하도록 하는 단계와;
    상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하지 않는 경우에, 상기 장애를 상기 게스트 소프트웨어에 전달하는 단계
    를 포함하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하지 않는다고 결정하는 단계와;
    상기 장애 정보가 적어도 하나의 제어 전송 필터링 기준(control transfer filtering criterion)을 만족하는지 여부를 결정하는 단계
    를 더 포함하는 방법.
  4. 제3항에 있어서,
    상기 장애 정보가 상기 적어도 하나의 제어 전송 필터링 기준을 만족하면 상기 장애를 상기 게스트 소프트웨어에 전달하는 단계
    를 더 포함하는 방법.
  5. 제3항에 있어서,
    상기 장애 정보가 상기 적어도 하나의 제어 전송 필터링 기준을 만족하지 않는 경우에, 제어권을 가상 기기 모니터(virtual machine monitor)에 전송하는 단계
    를 더 포함하는 방법.
  6. 제1항에 있어서, 상기 장애 정보는 장애 식별자, 상기 장애와 연관된 에러 코드, 및 상기 장애와 연관된 하나 이상의 부가적인 데이터 값들 중 적어도 하나인 방법.
  7. 제1항에 있어서, 상기 장애는 인터럽트, 예외(exception), 및 플랫폼 이벤트 중 임의의 하나를 나타내는 방법.
  8. 제1항에 있어서, 상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하는지 여부를 결정하는 단계는,
    상기 게스트 소프트웨어의 상기 연산이 페이지 테이블 엔트리(page table entry)에의 기록(write)인지 여부를 결정하는 단계와;
    상기 기록이 상기 페이지 테이블 엔트리에 의해 매핑되고 있는(being mapped) 페이지를 존재하지 않는 것으로 표시(mark)하고자 하는 시도인지 여부를 결정하는 단계
    를 포함하는 방법.
  9. 제1항에 있어서, 상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하는지 여부를 결정하는 단계는,
    상기 게스트 소프트웨어의 상기 연산이 페이지 테이블 엔트리에의 기록인지 여부를 결정하는 단계와;
    상기 기록이 상기 페이지 테이블 엔트리에 의해 매핑되고 있는 페이지를 존재하는 것으로 표시하고자 하는 시도인지 여부를 결정하는 단계와;
    상기 페이지 테이블 엔트리에 의해 매핑되고 있는 상기 페이지가 존재하는 것으로 이전에 표시되었는지 여부를 결정하는 단계와;
    상기 기록이 페이지 프레임 번호를 변경하고자 하는 시도가 아닌지 여부를 결정하는 단계와;
    일 그룹의 조건들 중 적어도 하나가 발생하는지 여부를 결정하는 단계 - 상 기 일 그룹의 조건들은, 상기 기록이 상기 페이지 테이블 엔트리에 의해 매핑되는 상기 페이지를 판독 전용(read-only)으로 표시하고자 하는 시도일 것을 요구하는 제1 조건 및 상기 페이지 테이블 엔트리에 의해 매핑되고 있는 상기 페이지가 이전에 기록 가능하였을 것(writable)을 요구하는 제2 조건을 포함함 -
    를 포함하는 방법.
  10. 게스트 소프트웨어의 연산과 연관된 장애 조건(faulting condition)의 발생을 검출하는 단계와;
    상기 장애 조건과 연관된 장애 정보가 적어도 하나의 장애 필터링 기준을 만족하는지를 결정하는 단계 - 상기 결정은 상기 게스트 소프트웨어의 상기 연산과 연관된 데이터와 메모리 및 프로세서 레지스터 중 적어도 하나에 저장된 데이터를 비교하는 것을 포함함 - 와;
    상기 결정에 기초하여, 상기 게스트 소프트웨어가 상기 장애 조건을 무시하도록 허용되는지 여부를 결정하는 단계
    를 포함하는 방법.
  11. 삭제
  12. 제10항에 있어서, 상기 장애 정보는 장애 식별자, 상기 장애와 연관된 에러 코드, 및 상기 장애와 연관된 하나 이상의 부가적인 데이터 값들 중 적어도 하나인 방법.
  13. 제10항에 있어서, 상기 장애 조건은 메모리에 액세스하고자 하는 상기 게스트 소프트웨어의 시도와 연관되는 방법.
  14. 제10항에 있어서, 상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하는지 여부를 결정하는 단계는,
    상기 게스트 소프트웨어의 상기 연산이 페이지 테이블 엔트리에의 기록인지 여부를 결정하는 단계와;
    상기 기록이 상기 페이지 테이블 엔트리에 의해 매핑되고 있는 페이지를 존재하지 않는 것으로 표시하고자 하는 시도인지 여부를 결정하는 단계
    를 포함하는 방법.
  15. 제10항에 있어서, 상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하는지 여부를 결정하는 단계는,
    상기 게스트 소프트웨어의 상기 연산이 페이지 테이블 엔트리에의 기록인지 여부를 결정하는 단계와;
    상기 기록이 상기 페이지 테이블 엔트리에 의해 매핑되고 있는 페이지를 존재하는 것으로 표시하고자 하는 시도인지 여부를 결정하는 단계와;
    상기 페이지 테이블 엔트리에 의해 매핑되고 있는 상기 페이지가 존재하는 것으로 이전에 표시되었는지 여부를 결정하는 단계와;
    상기 기록이 페이지 프레임 번호를 변경하고자 하는 시도가 아닌지 여부를 결정하는 단계와;
    일 그룹의 조건들 중 적어도 하나가 발생하는지 여부를 결정하는 단계 - 상기 일 그룹의 조건들은, 상기 기록이 상기 페이지 테이블 엔트리에 의해 매핑되는 상기 페이지를 판독 전용으로 표시하고자 하는 시도일 것을 요구하는 제1 조건 및 상기 페이지 테이블 엔트리에 의해 매핑되고 있는 상기 페이지가 이전에 기록 가능하였을 것을 요구하는 제2 조건을 포함함 -
    를 포함하는 방법.
  16. 게스트 소프트웨어가 내부에 저장되어 있는 메모리와;
    상기 메모리에 연결되어, 상기 게스트 소프트웨어를 실행하고, 상기 게스트 소프트웨어의 상기 연산과 연관된 장애에 관한 장애 정보가 적어도 하나의 장애 필터링 기준을 만족하는지 여부를 결정하며, 상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하는 경우에, 상기 게스트 소프트웨어로 하여금 상기 장애를 무시하게 하며, 상기 장애 정보가 상기 적어도 하나의 필터링 기준을 만족하지 않는다고 결정하고, 상기 장애를 상기 게스트 소프트웨어로 전달하기 위한 프로세서
    를 포함하는 시스템.
  17. 삭제
  18. 제16항에 있어서, 상기 프로세서는 또한 상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하지 않는다고 결정하고, 상기 장애 정보가 적어도 하나의 제어 전송 필터링 기준을 만족하는지 여부를 결정하기 위한 것인 시스템.
  19. 제18항에 있어서, 상기 프로세서는 또한, 상기 장애 정보가 상기 적어도 하나의 제어 전송 필터링 기준을 만족하는 경우에, 상기 장애를 상기 게스트 소프트웨어에 전달하기 위한 것인 시스템.
  20. 제18항에 있어서, 상기 프로세서는 또한, 상기 장애 정보가 상기 적어도 하나의 제어 전송 필터링 기준을 만족하지 않는 경우에, 제어권을 가상 기기 모니터에 전송하기 위한 것인 시스템.
  21. 게스트 소프트웨어가 내부에 저장되어 있는 메모리와;
    상기 메모리에 연결되어, 상기 게스트 소프트웨어를 실행하고, 게스트 소프트웨어의 연산과 연관된 장애 조건의 발생을 검출하며,
    상기 장애 조건과 연관된 장애 정보가 적어도 하나의 장애 필터링 기준을 만족하는지를 결정하고 - 상기 결정은 상기 게스트 소프트웨어의 상기 연산과 연관된 데이터와 메모리 및 프로세서 레지스터 중 적어도 하나에 저장된 데이터를 비교하는 것을 포함함 - , 상기 결정에 기초하여 상기 게스트 소프트웨어가 상기 장애 조건을 무시하도록 허용되는지 여부를 결정하기 위한 프로세서
    를 포함하는 시스템.
  22. 삭제
  23. 제21항에 있어서, 상기 장애 조건은 메모리에 액세스하려는 상기 게스트 소프트웨어의 시도와 연관되는 시스템.
  24. 제21항에 있어서, 상기 프로세서는, 상기 게스트 소프트웨어의 상기 연산이 페이지 테이블 엔트리에의 기록인지 여부를 결정하고, 상기 기록이 상기 페이지 테이블 엔트리에 의해 매핑되는 페이지를 존재하지 않는 것으로 표시하고자 하는 시도인지 여부를 결정함으로써, 상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하는지 여부를 결정하기 위한 것인 시스템.
  25. 처리 시스템(processing system)에 의해 실행될 때, 상기 처리 시스템으로 하여금,
    게스트 소프트웨어의 연산과 연관된 장애에 관한 장애 정보를 수신하는 단계와;
    상기 장애 정보가 적어도 하나의 장애 필터링 기준을 만족하는지 여부를 결정하는 단계와;
    상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하는 경우에, 상기 게스트 소프트웨어로 하여금 상기 장애를 무시하도록 하는 단계와;
    상기 장애 정보가 상기 적어도 하나의 필터링 기준을 만족하지 않는다고 결정하는 단계와;
    상기 장애를 상기 게스트 소프트웨어로 전달하는 단계
    를 포함하는 방법을 수행하게 하는 명령문(instructions)을 포함하는 기기 판독 가능 매체(machine-readable medium).
  26. 삭제
  27. 제25항에 있어서, 상기 방법은,
    상기 장애 정보가 상기 적어도 하나의 장애 필터링 기준을 만족하지 않는다고 결정하는 단계와;
    상기 장애 정보가 적어도 하나의 제어 전송 필터링 기준을 만족하는지 여부를 결정하는 단계
    를 더 포함하는 기기 판독 가능 매체.
  28. 처리 시스템에 의해 실행될 때, 상기 처리 시스템으로 하여금,
    게스트 소프트웨어의 연산과 연관된 장애 조건의 발생을 검출하는 단계와;
    상기 장애 조건과 연관된 장애 정보가 적어도 하나의 장애 필터링 기준을 만족하는지를 결정하는 단계 - 상기 결정은 상기 게스트 소프트웨어의 상기 연산과 연관된 데이터를 메모리 및 프로세서 레지스터 중 적어도 하나에 저장된 데이터를 비교하는 것을 포함함 - 와;
    상기 결정에 기초하여, 상기 게스트 소프트웨어가 상기 장애 조건을 무시하도록 허용되는지 여부를 결정하는 단계
    를 포함하는 방법을 수행하게 하는 명령들을 내장하는 기기 판독 가능 매체.
  29. 삭제
  30. 제28항에 있어서, 상기 장애 조건은 메모리에 액세스하고자 하는 상기 게스트 소프트웨어의 시도와 연관되는 기기 판독 가능 매체.
KR1020047021382A 2002-06-29 2003-06-19 가상 기기 아키텍처에서의 게스트 소프트웨어의 연산과연관된 장애의 취급 KR100708356B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/184,798 US6996748B2 (en) 2002-06-29 2002-06-29 Handling faults associated with operation of guest software in the virtual-machine architecture
US10/184,798 2002-06-29
PCT/US2003/019099 WO2004003745A2 (en) 2002-06-29 2003-06-19 Handling faults associated with operation of guest software in the virtual-machine architecture

Publications (2)

Publication Number Publication Date
KR20050016917A KR20050016917A (ko) 2005-02-21
KR100708356B1 true KR100708356B1 (ko) 2007-04-17

Family

ID=29779461

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047021382A KR100708356B1 (ko) 2002-06-29 2003-06-19 가상 기기 아키텍처에서의 게스트 소프트웨어의 연산과연관된 장애의 취급

Country Status (7)

Country Link
US (1) US6996748B2 (ko)
EP (1) EP1518168B1 (ko)
KR (1) KR100708356B1 (ko)
CN (1) CN100468324C (ko)
AU (1) AU2003245543A1 (ko)
TW (1) TWI255402B (ko)
WO (1) WO2004003745A2 (ko)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7473715B2 (en) * 2001-05-02 2009-01-06 Zephyros, Inc. Two component (epoxy/amine) structural foam-in-place material
US7763663B2 (en) * 2001-12-19 2010-07-27 University Of Massachusetts Polysaccharide-containing block copolymer particles and uses thereof
US7631196B2 (en) 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US7199165B2 (en) * 2003-06-26 2007-04-03 L & L Products, Inc. Expandable material
EP1639462B1 (en) * 2003-06-27 2022-05-11 Oracle America, Inc. Hybrid system implementing distinct and co-existing application execution environments and methods for implementing the same
US20050044408A1 (en) * 2003-08-18 2005-02-24 Bajikar Sundeep M. Low pin count docking architecture for a trusted platform
US20050159531A1 (en) * 2004-01-20 2005-07-21 L&L Products, Inc. Adhesive material and use therefor
US7437613B2 (en) * 2004-01-30 2008-10-14 Intel Corporation Protecting an operating system kernel from third party drivers
US7802085B2 (en) * 2004-02-18 2010-09-21 Intel Corporation Apparatus and method for distributing private keys to an entity with minimal secret, unique information
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US20050241756A1 (en) * 2004-04-28 2005-11-03 L&L Products, Inc. Adhesive material and structures formed therewith
US8156490B2 (en) 2004-05-08 2012-04-10 International Business Machines Corporation Dynamic migration of virtual machine computer programs upon satisfaction of conditions
US7490070B2 (en) * 2004-06-10 2009-02-10 Intel Corporation Apparatus and method for proving the denial of a direct proof signature
US7937525B2 (en) * 2004-06-25 2011-05-03 Intel Corporation Method and apparatus for decoding a virtual machine control structure identification
US7305592B2 (en) * 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US7886293B2 (en) * 2004-07-07 2011-02-08 Intel Corporation Optimizing system behavior in a virtual machine environment
US7840962B2 (en) * 2004-09-30 2010-11-23 Intel Corporation System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time
US20060107121A1 (en) * 2004-10-25 2006-05-18 International Business Machines Corporation Method of speeding up regression testing using prior known failures to filter current new failures when compared to known good results
US8146078B2 (en) * 2004-10-29 2012-03-27 Intel Corporation Timer offsetting mechanism in a virtual machine environment
US8924728B2 (en) * 2004-11-30 2014-12-30 Intel Corporation Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information
US7757231B2 (en) * 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7647589B1 (en) 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US20060224815A1 (en) * 2005-03-30 2006-10-05 Koichi Yamada Virtualizing memory management unit resources
US7392172B2 (en) * 2005-04-28 2008-06-24 Hewlett-Packard Development Company, L.P. Providing virtual device access via firmware
US8849968B2 (en) * 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US7711914B2 (en) * 2005-06-28 2010-05-04 Hewlett-Packard Development Company, L.P. Debugging using virtual watchpoints
JP5368793B2 (ja) 2005-07-18 2013-12-18 ユニバーシティ オブ マサチューセッツ ロウエル ナノエマルジョンを製造および使用するための組成物および方法
US9785485B2 (en) 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
TR201901443T4 (tr) 2005-12-01 2019-02-21 Univ Massachusetts Lowell Botulinum nanoemülsiyonları.
US9486408B2 (en) 2005-12-01 2016-11-08 University Of Massachusetts Lowell Botulinum nanoemulsions
US8286162B2 (en) * 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
US7596654B1 (en) * 2006-01-26 2009-09-29 Symantec Operating Corporation Virtual machine spanning multiple computers
US7702743B1 (en) 2006-01-26 2010-04-20 Symantec Operating Corporation Supporting a weak ordering memory model for a virtual physical address space that spans multiple nodes
US8014530B2 (en) 2006-03-22 2011-09-06 Intel Corporation Method and apparatus for authenticated, recoverable key distribution with no database secrets
US7555628B2 (en) 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
BRPI0719732A2 (pt) 2006-12-01 2017-05-16 Anterios Inc nanopartículas de peptídeo e usos para as mesmas
EP2494958A1 (en) * 2006-12-01 2012-09-05 Anterios, Inc. Amphiphilic Entity Nanoparticles
US8789063B2 (en) * 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
CN101295265A (zh) * 2007-04-25 2008-10-29 国际商业机器公司 全系统isa仿真系统及其识别进程的方法
US9223600B1 (en) 2007-05-07 2015-12-29 Hewlett Packard Enterprise Development Lp In-processor dynamic address redirection table for substituting instruction strings
ES2660906T3 (es) 2007-05-31 2018-03-26 Anterios, Inc. Nanopartículas de ácido nucleico y usos de las mismas
JP4897578B2 (ja) * 2007-06-06 2012-03-14 株式会社日立製作所 仮想計算機の制御プログラムおよび仮想計算機システム
US7747899B2 (en) 2007-06-26 2010-06-29 Microsoft Corporation Providing mapping fault processing
US8566780B2 (en) 2007-06-26 2013-10-22 Microsoft Corporation Object model based mapping
US8078827B2 (en) * 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
US8032897B2 (en) * 2007-07-31 2011-10-04 Globalfoundries Inc. Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization
US8510756B1 (en) * 2007-12-06 2013-08-13 Parallels IP Holdings GmbH Guest operating system code optimization for virtual machine
US7779305B2 (en) * 2007-12-28 2010-08-17 Intel Corporation Method and system for recovery from an error in a computing device by transferring control from a virtual machine monitor to separate firmware instructions
WO2009158687A1 (en) * 2008-06-26 2009-12-30 Anterios, Inc. Dermal delivery
US8381032B2 (en) * 2008-08-06 2013-02-19 O'shantel Software L.L.C. System-directed checkpointing implementation using a hypervisor layer
US7827321B2 (en) 2008-10-02 2010-11-02 International Business Machines Corporation Central processing unit measurement facility
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US8341505B2 (en) * 2009-05-08 2012-12-25 Oracle America, Inc. Enforcing network bandwidth partitioning for virtual execution environments with direct access to network hardware
US8499304B2 (en) * 2009-12-15 2013-07-30 At&T Mobility Ii Llc Multiple mode mobile device
US8468600B1 (en) * 2011-03-04 2013-06-18 Adobe Systems Incorporated Handling instruction received from a sandboxed thread of execution
US8713378B2 (en) * 2011-07-07 2014-04-29 Microsoft Corporation Health monitoring of applications in a guest partition
CN102902599B (zh) 2012-09-17 2016-08-24 华为技术有限公司 虚拟机内部故障处理方法、装置及系统
US9350632B2 (en) 2013-09-23 2016-05-24 Intel Corporation Detection and handling of virtual network appliance failures
US9274823B1 (en) * 2014-12-24 2016-03-01 Parallels IP Holdings GmbH Thin hypervisor for native execution of unsafe code
CN104680067B (zh) * 2015-02-15 2017-12-19 安一恒通(北京)科技有限公司 文件的检测方法及装置
CN105095007A (zh) * 2015-08-21 2015-11-25 上海联影医疗科技有限公司 硬件设备错误的处理方法及系统
EP3153971B1 (en) * 2015-10-08 2018-05-23 Huawei Technologies Co., Ltd. A data processing apparatus and a method of operating a data processing apparatus
US10963280B2 (en) 2016-02-03 2021-03-30 Advanced Micro Devices, Inc. Hypervisor post-write notification of control and debug register updates
KR102487144B1 (ko) 2016-11-21 2023-01-12 에이리온 테라퓨틱스, 인코포레이티드 큰 물질의 경피 전달
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11403409B2 (en) * 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection

Family Cites Families (147)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3699532A (en) * 1970-04-21 1972-10-17 Singer Co Multiprogramming control for a data handling system
JPS50117336A (ko) * 1973-11-30 1975-09-13
US3996449A (en) * 1975-08-25 1976-12-07 International Business Machines Corporation Operating system authenticator
US4162536A (en) * 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
US4037214A (en) 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4247905A (en) * 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
US4278837A (en) * 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
US4276594A (en) * 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
US4207609A (en) * 1978-05-08 1980-06-10 International Business Machines Corporation Method and means for path independent device reservation and reconnection in a multi-CPU and shared device access system
JPS5823570B2 (ja) * 1978-11-30 1983-05-16 国産電機株式会社 液面検出装置
JPS5576447A (en) * 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4307447A (en) * 1979-06-19 1981-12-22 Gould Inc. Programmable controller
US4319323A (en) * 1980-04-04 1982-03-09 Digital Equipment Corporation Communications device for data processing system
US4419724A (en) * 1980-04-14 1983-12-06 Sperry Corporation Main bus interface package
US4366537A (en) * 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys
US4403283A (en) * 1980-07-28 1983-09-06 Ncr Corporation Extended memory system and method
DE3034581A1 (de) * 1980-09-13 1982-04-22 Robert Bosch Gmbh, 7000 Stuttgart Auslesesicherung bei einchip-mikroprozessoren
JPS58140862A (ja) * 1982-02-16 1983-08-20 Toshiba Corp 相互排他方式
US4521852A (en) * 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
JPS59111561A (ja) * 1982-12-17 1984-06-27 Hitachi Ltd 複合プロセツサ・システムのアクセス制御方式
US4759064A (en) * 1985-10-07 1988-07-19 Chaum David L Blind unanticipated signature systems
US4975836A (en) * 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
DE3689287T2 (de) * 1985-02-18 1994-05-26 Nec Corp Datenverarbeitungsgerät.
JPS61206057A (ja) * 1985-03-11 1986-09-12 Hitachi Ltd アドレス変換装置
JPS61206043A (ja) * 1985-03-11 1986-09-12 Hitachi Ltd 仮想計算機システムにおける割込制御方法
FR2592510B1 (fr) * 1985-12-31 1988-02-12 Bull Cp8 Procede et appareil pour certifier des services obtenus a l'aide d'un support portatif tel qu'une carte a memoire
FR2601535B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Procede pour certifier l'authenticite d'une donnee echangee entre deux dispositifs connectes en local ou a distance par une ligne de transmission
FR2601476B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Procede pour authentifier une donnee d'habilitation externe par un objet portatif tel qu'une carte a memoire
FR2601525B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Dispositif de securite interdisant le fonctionnement d'un ensemble electronique apres une premiere coupure de son alimentation electrique
FR2618002B1 (fr) * 1987-07-10 1991-07-05 Schlumberger Ind Sa Procede et systeme d'authentification de cartes a memoire electronique
US5007082A (en) * 1988-08-03 1991-04-09 Kelly Services, Inc. Computer software encryption apparatus
US5079737A (en) 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
US5434999A (en) 1988-11-09 1995-07-18 Bull Cp8 Safeguarded remote loading of service programs by authorizing loading in protected memory zones in a terminal
FR2640798B1 (fr) 1988-12-20 1993-01-08 Bull Cp8 Dispositif de traitement de donnees comportant une memoire non volatile electriquement effacable et reprogrammable
JPH02171934A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd 仮想計算機システム
JPH02208740A (ja) * 1989-02-09 1990-08-20 Fujitsu Ltd 仮想計算機制御方式
US5442645A (en) 1989-06-06 1995-08-15 Bull Cp8 Method for checking the integrity of a program or data, and apparatus for implementing this method
JP2590267B2 (ja) 1989-06-30 1997-03-12 株式会社日立製作所 仮想計算機における表示制御方式
US5022077A (en) * 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
JP2825550B2 (ja) * 1989-09-21 1998-11-18 株式会社日立製作所 多重仮想空間アドレス制御方法および計算機システム
CA2010591C (en) 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
CA2027799A1 (en) 1989-11-03 1991-05-04 David A. Miller Method and apparatus for independently resetting processors and cache controllers in multiple processor systems
US5075842A (en) * 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5108590A (en) 1990-09-12 1992-04-28 Disanto Dennis Water dispenser
US5230069A (en) * 1990-10-02 1993-07-20 International Business Machines Corporation Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US5317705A (en) 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5287363A (en) * 1991-07-01 1994-02-15 Disk Technician Corporation System for locating and anticipating data storage media failures
US5437033A (en) 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
US5255379A (en) 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
US5453003A (en) 1991-01-09 1995-09-26 Pfefferle; William C. Catalytic method
US5319760A (en) 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5455909A (en) * 1991-07-05 1995-10-03 Chips And Technologies Inc. Microprocessor with operation capture facility
JPH06236284A (ja) 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5574936A (en) * 1992-01-02 1996-11-12 Amdahl Corporation Access control mechanism controlling access to and logical purging of access register translation lookaside buffer (ALB) in a computer system
US5486529A (en) 1992-04-16 1996-01-23 Zeneca Limited Certain pyridyl ketones for treating diseases involving leukocyte elastase
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5237616A (en) * 1992-09-21 1993-08-17 International Business Machines Corporation Secure computer system having privileged and unprivileged memories
US5293424A (en) 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
US5796835A (en) 1992-10-27 1998-08-18 Bull Cp8 Method and system for writing information in a data carrier making it possible to later certify the originality of this information
JP2765411B2 (ja) 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US5668971A (en) * 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
JPH06187178A (ja) * 1992-12-18 1994-07-08 Hitachi Ltd 仮想計算機システムの入出力割込み制御方法
US5483656A (en) * 1993-01-14 1996-01-09 Apple Computer, Inc. System for managing power consumption of devices coupled to a common bus
US5469557A (en) * 1993-03-05 1995-11-21 Microchip Technology Incorporated Code protection in microcontroller with EEPROM fuses
FR2703800B1 (fr) 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
FR2704341B1 (fr) 1993-04-22 1995-06-02 Bull Cp8 Dispositif de protection des clés d'une carte à puce.
JPH06348867A (ja) 1993-06-04 1994-12-22 Hitachi Ltd マイクロコンピュータ
FR2706210B1 (fr) 1993-06-08 1995-07-21 Bull Cp8 Procédé d'authentification d'un objet portatif par un terminal hors ligne, objet portatif et terminal correspondants.
US5555385A (en) * 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5825880A (en) * 1994-01-13 1998-10-20 Sudia; Frank W. Multi-step digital signature method and system
US5459869A (en) 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5604805A (en) * 1994-02-28 1997-02-18 Brands; Stefanus A. Privacy-protected transfer of electronic information
FR2717286B1 (fr) 1994-03-09 1996-04-05 Bull Cp8 Procédé et dispositif pour authentifier un support de données destiné à permettre une transaction ou l'accès à un service ou à un lieu, et support correspondant.
US5684881A (en) 1994-05-23 1997-11-04 Matsushita Electric Industrial Co., Ltd. Sound field and sound image control apparatus and method
US5473692A (en) 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5539828A (en) 1994-05-31 1996-07-23 Intel Corporation Apparatus and method for providing secured communications
JPH0883211A (ja) * 1994-09-12 1996-03-26 Mitsubishi Electric Corp データ処理装置
EP0706275B1 (en) * 1994-09-15 2006-01-25 International Business Machines Corporation System and method for secure storage and distribution of data using digital signatures
FR2725537B1 (fr) 1994-10-11 1996-11-22 Bull Cp8 Procede de chargement d'une zone memoire protegee d'un dispositif de traitement de l'information et dispositif associe
US5606617A (en) 1994-10-14 1997-02-25 Brands; Stefanus A. Secret-key certificates
US5564040A (en) 1994-11-08 1996-10-08 International Business Machines Corporation Method and apparatus for providing a server function in a logically partitioned hardware machine
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5555414A (en) * 1994-12-14 1996-09-10 International Business Machines Corporation Multiprocessing system including gating of host I/O and external enablement to guest enablement at polling intervals
US5615263A (en) 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5764969A (en) 1995-02-10 1998-06-09 International Business Machines Corporation Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization
FR2731536B1 (fr) 1995-03-10 1997-04-18 Schlumberger Ind Sa Procede d'inscription securisee d'informations dans un support portable
US5717903A (en) 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
JP3451595B2 (ja) 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5633929A (en) * 1995-09-15 1997-05-27 Rsa Data Security, Inc Cryptographic key escrow system having reduced vulnerability to harvesting attacks
US5737760A (en) 1995-10-06 1998-04-07 Motorola Inc. Microcontroller with security logic circuit which prevents reading of internal memory by external program
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
JP3693721B2 (ja) 1995-11-10 2005-09-07 Necエレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
US5657445A (en) 1996-01-26 1997-08-12 Dell Usa, L.P. Apparatus and method for limiting access to mass storage devices in a computer system
US5835594A (en) 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5809546A (en) * 1996-05-23 1998-09-15 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries including storage keys for controlling accesses to the buffers
US5729760A (en) 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US5944821A (en) * 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5740178A (en) * 1996-08-29 1998-04-14 Lucent Technologies Inc. Software for controlling a reliable backup memory
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5935242A (en) * 1996-10-28 1999-08-10 Sun Microsystems, Inc. Method and apparatus for initializing a device
US5852717A (en) 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
US5901225A (en) 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
JP4000654B2 (ja) * 1997-02-27 2007-10-31 セイコーエプソン株式会社 半導体装置及び電子機器
US6044478A (en) * 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US5978475A (en) * 1997-07-18 1999-11-02 Counterpane Internet Security, Inc. Event auditing system
US5919257A (en) * 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
US5935247A (en) * 1997-09-18 1999-08-10 Geneticware Co., Ltd. Computer system having a genetic code that cannot be directly accessed and a method of maintaining the same
US6108644A (en) * 1998-02-19 2000-08-22 At&T Corp. System and method for electronic transactions
US6131166A (en) * 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6609199B1 (en) * 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US6282650B1 (en) * 1999-01-25 2001-08-28 Intel Corporation Secure public digital watermark
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6560627B1 (en) * 1999-01-28 2003-05-06 Cisco Technology, Inc. Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
US6188257B1 (en) * 1999-02-01 2001-02-13 Vlsi Technology, Inc. Power-on-reset logic with secure power down capability
US7225333B2 (en) * 1999-03-27 2007-05-29 Microsoft Corporation Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US6615278B1 (en) * 1999-03-29 2003-09-02 International Business Machines Corporation Cross-platform program, system, and method having a global registry object for mapping registry equivalent functions in an OS/2 operating system environment
US6684326B1 (en) * 1999-03-31 2004-01-27 International Business Machines Corporation Method and system for authenticated boot operations in a computer system of a networked computing environment
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
US6275933B1 (en) * 1999-04-30 2001-08-14 3Com Corporation Security system for a computerized apparatus
US6529909B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Method for translating an object attribute converter in an information services patterns environment
JP3710671B2 (ja) * 2000-03-14 2005-10-26 シャープ株式会社 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法
US6678825B1 (en) * 2000-03-31 2004-01-13 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
GB0020416D0 (en) * 2000-08-18 2000-10-04 Hewlett Packard Co Trusted system
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7631160B2 (en) * 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
US6976136B2 (en) * 2001-05-07 2005-12-13 National Semiconductor Corporation Flash memory protection scheme for secured shared BIOS implementation in personal computers with an embedded controller
US7676430B2 (en) * 2001-05-09 2010-03-09 Lenovo (Singapore) Ptd. Ltd. System and method for installing a remote credit card authorization on a system with a TCPA complaint chipset
US7191464B2 (en) * 2001-10-16 2007-03-13 Lenovo Pte. Ltd. Method and system for tracking a secure boot in a trusted computing environment
US7103771B2 (en) * 2001-12-17 2006-09-05 Intel Corporation Connecting a virtual token to a physical token
US7308576B2 (en) * 2001-12-31 2007-12-11 Intel Corporation Authenticated code module
US20030126453A1 (en) * 2001-12-31 2003-07-03 Glew Andrew F. Processor supporting execution of an authenticated code instruction
US7107460B2 (en) * 2002-02-15 2006-09-12 International Business Machines Corporation Method and system for securing enablement access to a data security device
US7343493B2 (en) * 2002-03-28 2008-03-11 Lenovo (Singapore) Pte. Ltd. Encrypted file system using TCPA
US7127548B2 (en) * 2002-04-16 2006-10-24 Intel Corporation Control register access virtualization performance improvement in the virtual-machine architecture
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문(의견제출통지서참조)

Also Published As

Publication number Publication date
EP1518168A2 (en) 2005-03-30
KR20050016917A (ko) 2005-02-21
AU2003245543A8 (en) 2004-01-19
WO2004003745A2 (en) 2004-01-08
TW200408939A (en) 2004-06-01
TWI255402B (en) 2006-05-21
US20040003324A1 (en) 2004-01-01
CN1692332A (zh) 2005-11-02
EP1518168B1 (en) 2019-08-07
AU2003245543A1 (en) 2004-01-19
US6996748B2 (en) 2006-02-07
CN100468324C (zh) 2009-03-11
WO2004003745A3 (en) 2004-12-23

Similar Documents

Publication Publication Date Title
KR100708356B1 (ko) 가상 기기 아키텍처에서의 게스트 소프트웨어의 연산과연관된 장애의 취급
KR100681975B1 (ko) 가상머신 구조에서 게스트 소프트웨어의 동작 동안발생하는 폴트 제어
TWI464575B (zh) 對應用程式進行透明式檢測的方法及系統,和計算系統
US20210124824A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
KR100667146B1 (ko) 가상 머신 아키텍처 내에서의 제어 레지스터 액세스가상화 성능 개선
US11443034B2 (en) Trust zone-based operating system and method
US7380049B2 (en) Memory protection within a virtual partition
KR101253394B1 (ko) 컴퓨팅 환경의 다중 페이징가능 게스트에 의한 스토리지 사용의 관리
CN107066311B (zh) 一种内核数据访问控制方法与系统
US8341369B2 (en) Providing protected access to critical memory regions
US20060036830A1 (en) Method for monitoring access to virtual memory pages
US20080201540A1 (en) Preservation of integrity of data across a storage hierarchy
US11734430B2 (en) Configuration of a memory controller for copy-on-write with a resource controller
EP3178032B1 (en) Embedding secret data in code
US9398019B2 (en) Verifying caller authorization using secret data embedded in code
JP2008234248A (ja) プログラム実行装置及びプログラム実行方法
US11216280B2 (en) Exception interception
Dautenhahn Protection in commodity monolithic operating systems

Legal Events

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

Payment date: 20180328

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee