KR20050016918A - 가상머신 구조에서 게스트 소프트웨어의 동작 동안발생하는 폴트 제어 - Google Patents

가상머신 구조에서 게스트 소프트웨어의 동작 동안발생하는 폴트 제어

Info

Publication number
KR20050016918A
KR20050016918A KR10-2004-7021391A KR20047021391A KR20050016918A KR 20050016918 A KR20050016918 A KR 20050016918A KR 20047021391 A KR20047021391 A KR 20047021391A KR 20050016918 A KR20050016918 A KR 20050016918A
Authority
KR
South Korea
Prior art keywords
fault
control
transition
filtering criteria
vmm
Prior art date
Application number
KR10-2004-7021391A
Other languages
English (en)
Other versions
KR100681975B1 (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 KR20050016918A publication Critical patent/KR20050016918A/ko
Application granted granted Critical
Publication of KR100681975B1 publication Critical patent/KR100681975B1/ko

Links

Classifications

    • 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
    • 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/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

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

Abstract

일 실시예에서, 게스트 소프트웨어(guest software)의 동작과 연계된 폴트(fault)와 관련된 폴트 정보가 수신된다. 더욱이, 폴트 정보가 한 개 이상의 필터링 기준들을 만족하는지에 대해 판정이 된다. 판정이 긍정적이면, 제어는 게스트 소프트웨어에 남아있고 가상머신 모니터(Virtual Machine Monitor;VMM)에 전송되지 않는다.

Description

가상머신 구조에서 게스트 소프트웨어의 동작 동안 발생하는 폴트 제어{CONTROL OVER FAULTS OCCURRING DURING THE OPERATION OF GUEST SOFTWARE IN THE VIRTUAL-MACHINE ARCHITECTURE}
본 발명은 일반적으로 가상머신(virtual machine)에 관한 것이고, 더 구체적으로는 가상머신 구조에서 게스트 소프트웨어(guest software)의 동작과 연계된 폴트들(faults)의 핸들링에 관한 것이다.
종래의 가상머신 모니터(VMM)는 통상적으로 컴퓨터 상에서 운행되고, 다른 소프트웨어에게 한 개 이상의 가상머신들의 추상화(abstraction)를 제공한다. 각각의 가상머신은, 집합적으로 게스트 소프트웨어라고 언급되는, 그 자체의 "게스트 운영 체제"(즉, VMM에 의해 호스트되는 운영 체제(OS)) 및 다른 소프트웨어를 운행하는 자체포함(self-contained) 플랫폼으로서 동작할 것이다. 게스트 소프트웨어는 그것이 가상머신보다는 전용 컴퓨터에서 운행하는 것처럼 동작하는 것을 기대한다. 즉, 게스트 소프트웨어는 다양한 이벤트들을 제어하기를 기대하고 하드웨어 자원들로의 액세스를 갖는다. 하드웨어 자원들은 처리기 상주 자원들(예를 들어, 제어 레지스터들), 메모리 상주 자원들(예를 들어, 디스크립터 표들(descriptor tables)), 및 기반 하드웨어 플랫폼에 상주하는 자원들(예를 들어, 입출력 디바이스들)을 포함할 수 있다. 이벤트들은 인터럽트, 예외처리, 플랫폼 이벤트(예를 들어, 초기화(INIT) 또는 시스템 관리 인터럽트(SMI)) 등을 포함할 수 있다.
가상머신 환경에서, VMM은 가상머신들 상에서 운행하는 게스트 소프트웨어의 적절한 동작을 제공하기 위해 및 가상머신들 상에서 운행하는 게스트 소프트웨어로부터의 보호 그리고 게스트 소프트웨어 간의 보호를 위해 이들 이벤트들과 하드웨어 자원들에 대해 궁극적 제어를 가질 수 있어야 한다. 이를 성취하기 위해, VMM은 통상적으로 게스트 소프트웨어가 보호된 자원을 액세스할 때 또는 다른 이벤트들(인터럽트들 또는 예외처리와 같은)이 발생할 때 제어를 수신한다.
예를 들어, 페이지 폴트(예를 들어, 주소번역(address-translation) 동작과 연계된 예외처리)가 게스트 소프트웨어의 동작 중에 발생할 때, 제어는 VMM으로 전송되어, VMM은 게스트 소프트웨어 또는 VMM 자체가 페이지 폴트를 핸들링할 필요가 있는지를 판정한다. 페이지 폴트가 게스트 소프트웨어에 의해 핸들링될 필요가 있으면, 제어는 게스트 소프트웨어로 다시 전송된다. VMM에 의해 핸들링될 필요가 없는 페이지 폴트들(다른 예외처리 및 인터럽트들을 비롯하여)이 다소 빈번히 발생하므로, VMM과 게스트 소프트웨어 간의 그런 제어 천이와 연계된 막대한 수행 비용이 있다.
본 발명은 참조 번호들이 유사 소자들을 참조하는 첨부된 도면들에서, 제한적이 아닌, 예로서 도시된다.
도 1은 본 발명이 동작할 수 있는 가상머신 환경의 일 실시예를 도시한다.
도 2는 제어 전이 필터링 기준들을 사용하여 폴트들 때문에 VM 퇴출(VM exit)을 필터링하는 처리의 일 실시예의 흐름도이다.
도 3 내지 도 5는 제어 전이 필터링 기준들을 사용하여 폴트들 때문에 VMM 퇴출을 필터링하는 처리의 실시예들을 도시한다.
도 6은 폴트 필터링 기준들 및 제어 전이 필터링 기준들을 사용하여 폴트들 및 폴트들 때문에의 VM 퇴출을 필터링하는 처리의 일 실시예의 흐름도이다.
도 7 내지 도 8은 폴트 필터링 기준들을 사용하여 폴트들을 필터링하는 처리의 실시예들을 도시한다.
도 9는 폴트 필터링 기준들 및 제어 전이 필터링 기준들을 정의하는 처리의 일 실시예의 흐름도이다.
가상머신 구조에서 게스트 소프트웨어의 동작과 연계된 폴트들을 핸들링하는 방법 및 장치가 기재된다. 다음의 기재에서, 설명 목적으로, 다수의 특정 세부사항들이 본 발명의 철저한 이해를 제공하기 위해 서술된다. 그러나, 당업자에게는 본 발명은 이들 특정 세부사항들이 없이도 실시될 수 있음이 명백할 것이다.
다음의 상세 설명의 일부분은 컴퓨터 시스템의 레지스터들 및 메모리 내에 알고리즘들이나 데이터 비트들에의 동작의 부호적 표현들의 형태로 제공된다. 이들 알고리즘적 설명 및 표현은 다른 당업자들에게 그들의 작업의 내용을 가장 효과적으로 전달하기 위해 데이터 처리 분야의 당업자들에 의해 사용되는 수단이다. 알고리즘은 일반적으로 본 명세서에서 원하는 결과로 유도하는 자체일관적 동작의 시퀀스로 사료된다. 동작들은 물리적 양들의 물리적 조작을 요구하는 것들이다. 보통, 필수는 아니지만, 이들 양들은 저장되고, 전송되고, 조합되고, 비교되고, 그리고 그렇지 않으면 조작될 수 있는 전기 또는 자기 신호들의 형태를 띈다. 이들 신호들을 비트, 값, 소자, 부호, 문자, 용어, 숫자 등으로서 언급하는 것은 주로 일반 사용의 이유에서 종종 편리함을 발견하게 된다.
그러나, 이들 모두와 유사 용어들은 적절한 물리 양들과 연계되어야 하고 이들 양들에 적용된 편리한 이름표들에 불과함을 염두에 두어야 한다. 특별히 기재되지 않는 한, 그렇지 않으면 다음 논의로부터 명백한 것과 같이, 본 발명을 통해, "처리" 또는 "계산" 또는 "판정" 등과 같은 용어들을 사용하는 논의는, 컴퓨터 시스템 메모리 또는 레지스터들 또는 다른 그런 정보 저장, 전송, 또는 디스플레이 디바이스들 내에서 컴퓨터 시스템의 레지스터들이나 메모리들 내의 물리적(전자적)양들로서 표현된 데이터를 물리적 양들로서 유사하게 표현된 다른 데이터로 조작하거나 변환하는 컴퓨터 시스템의 액션 또는 처리들, 또는 유사한 전기적 컴퓨팅 디바이스를 언급할 것임을 이해해야 한다.
다음의 실시예들의 상세 설명에서, 설명의 방식으로, 본 발명이 실시될 수 있는 특정 실시예들을 도시하는 첨부된 도면들로의 참조가 되어진다. 도면들에서, 유사 번호들은 몇 개의 관점들을 통해 거의 유사한 컴포넌트들을 설명한다. 이들 실시예들은 충분히 상세히 설명되어 당업자들이 본 발명을 실시할 수 있도록 한다. 다른 실시예들이 사용될 수 있고, 구조적, 논리적, 및 전기적 변경들이 본 발명의 범위로부터 벗어나지 않고 만들어질 수 있을 것이다. 게다가, 본 발명의 다양한 실시예들은, 비록 다르지만, 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 일 실시예에서 설명된 특정 특징(feature), 구조, 또는 특성(characteristic)은 다른 실시예들 내에 포함될 수 있다. 그러므로, 다음 상세 설명은 제한적 의미로 받아들여서는 안되고, 본 발명의 범위는 첨부된 청구범위와 그런 청구항들이 명칭된 전체 범위의 동격들에 의해서만 정의된다.
도 1은 본 발명이 동작할 수 있는 가상머신 환경(100)의 일 실시예를 도시한다. 이 실시예에서, 베어 플랫폼 하드웨어(Bare Platform Hardware)(116)는, 예를 들어, 표준 운영 체제(OS) 또는, VMM(112)과 같은, 가상머신 모니터(VMM)를 실행할 수 있는 컴퓨팅 플랫폼을 포함한다. 통상적으로 소프트웨어에 구현되지만, VMM(112)은 고차원의 소프트웨어로의 베어 머신 인터페이스를 에뮬레이트(emulate)하고 엑스포트(export)할 수 있다. 그런 고차원 소프트웨어는 표준 또는 실시간 OS를 포함할 수 있고, 제한된 OS 기능을 갖는 크게 기능 저하된 운영 체제일 수 있고, 종래 OS 기능들을 포함하지 않을 수 있고, 기타등등이다. 다른 경우에, 예를 들어, VMM(112)은 다른 VMM 내에서, 또는 그 위에서 운행될 수 있다. VMM들과 그들의 통상적 특징들과 기능성은 당업자들에게 잘 공지되어 있고, 예를 들어, 소프트웨어, 펌웨어, 또는 다양한 기술들의 조합에 의해 구현될 수 있다.
플랫폼 하드웨어(116)는 개인용 컴퓨터(PC), 메인프레임, 핸드헬드 디바이스, 휴대용 컴퓨터, 셋톱 박스, 또는 임의의 다른 컴퓨팅 시스템일 수 있다. 플랫폼 하드웨어(116)는 처리기(118), 메모리(120), 및 도시되지 않은 가능한 다른 플랫폼 하드웨어(예를 들어, 입출력 디바이스들)를 포함한다.
처리기(118)는 마이크로처리기, 디지탈 신호 처리기, 마이크로제어기 등과 같은 소프트웨어를 실행시킬 수 있는 임의의 타입의 처리기일 수 있다. 처리기(118)는 본 발명의 방법 실시예들의 실행을 수행하는 마이크로코드, 프로그램가능 로직, 또는 하드코드된 로직을 포함할 수 있다.
메모리(120)는 하드 디스크, 플로피 디스크, 랜덤 액세스 메모리(RAM), 읽기용 메모리(ROM), 플래쉬 메모리, 상술된 디바이스들의 임의의 조합, 또는 처리기(118)에 의해 판독가능한 임의의 다른 타입의 머신 매체일 수 있다. 메모리(120)는 본 발명의 방법 실시예들의 실행을 수행하는 명령들 또는 데이터를 저장할 수 있다.
VMM(112)은 다른 소프트웨어들(예를 들어, "게스트" 소프트웨어)에게 한 개 이상의 가상머신들(VMs)의 추상화를 제공한다. VMM(112)은 다양한 게스트들에게 동일 또는 상이한 추상화들을 제공할 수 있다. 도 1은, 대체로 2개 정도의 VM들이 VMM(112)에 의해 지원될 수 있지만, 2개의 그런 VM들(102, 114)을 도시한다. 각각의 VM에서 운행되는 게스트 소프트웨어는 게스트 OS(104 또는 106)와 같은 게스트 OS와 다양한 게스트 소프트웨어 응용 프로그램들(108, 110)을 포함할 수 있다. 집합적으로, 게스트 OS와 소프트웨어 응용 프로그램들은 본 명세서에서 게스트 소프트웨어(103, 115)로서 언급된다. 게스트 소프트웨어(103, 105)는 게스트 소프트웨어가 운행하는 VM들(102, 114) 내에 물리적 자원들(예를 들어, 처리기 레지스터들, 메모리, 및 I/O 디바이스들)을 액세스하기를 기대한다. VMM(112)은 플랫폼 하드웨어(116) 내에 자원들에 대해 궁극적 제어를 유지하면서 게스트 소프트웨어에 의해 원하는 자원들로의 액세스를 용이하게 한다.
게다가, 게스트 소프트웨어(103, 115)는 예외처리, 인터럽트, 및 플랫폼 이벤트(예를 들어, 초기화(INIT)와 시스템 관리 인터럽트(SMIs))와 같은 다양한 이벤트들을 핸들링하기를 기대한다. 이들 이벤트들의 일부는 그들이 VM(102, 114)과 게스트 소프트웨어(103, 115)의 적합한 동작을 보장하기 위해 그리고 게스트 소프트웨어(103, 115)로부터 그리고 게스트 소프트웨어(103, 115) 간에 보호를 위해 VMM(112)에 의해 핸들링되어야 하므로 "특권"이 부여 된다. 특권이 부여된 이벤트들에 대해, VMM(112)은 이들 특권이 부여된 이벤트들에 대해 궁극적 제어를 유지하면서 게스트 소프트웨어에 의해 원해지는 기능을 용이하게 한다. 게스트 소프트웨어에 대한 기능을 용이하게 하는 동작은 VMM(112)측에서의 널리 다양한 액티비티(activity)들을 포함할 수 있다. VMM(112)의 액티비티들과 그것의 특성들은 본 발명의 범위를 제한해서는 안된다.
특권이 부여된 이벤트들에 추가하여, 게스트 소프트웨어의 동작 중에 발생하지만, VMM(112)에 의해 핸들링될 필요가 없고, 그래서 VMM(112)으로 제어 전송을 요구하지 않는 다수의 "비특권"의 이벤트들이 있다. 일 실시예에서, 필터링 메카니즘은 특권 부여된 이벤트들과 비특권의 이벤트들 간에 식별하기 위해 제공된다. 이 필터링 메카니즘으로, 현재 이벤트(예를 들어, 예외 처리)와 연계된 정보는 한 개 이상의 필터링 기준들을 사용하여 평가되어 현재 이벤트에 대한 제어가 게스트 소프트웨어에 남아있을지 또는 VMM(112)으로 전송될지를 판정한다. 이들 필터링 기준들은 본 명세서에서 제어 전이 필터링 기준들로서 언급된다. 현재 이벤트와 연계된 정보는 본 명세서에서 폴트 정보로서 언급된다.
다른 실시예들에서, 필터링 메카니즘은 현재 이벤트의 시간에 존재하는 다 인자들이 게스트 소프트웨어가 VMM(112) 또는 다른 VM들의 보안과 적절한 동작을 침해하지 않고 원하는 동작을 완료할 수 있슴을 지시하므로 고려되지 않을 수 있는 특정 비특권 이벤트들을 식별하기 위해 제공된다. 이 실시예에서, 현재 이벤트와 연계된 폴트 정보는 한 개 이상의 필터링 기준들을 사용하여 평가되어 현재 이벤트가 고려되지 않을 수 있는지(즉, 게스트 소프트웨어가 원하는 동작을 완료하도록 허용되었는지)를 판정한다. 이들 필터링 기준들은 본 명세서에서 폴트 필터링 기준들로서 언급된다.
일 실시예에서, 필터링 기준들(제어 전이 필터링 기준들 및/또는 폴트 필터링 기준들)은 가상머신 제어 구조(VMCS)(122)에 한 개 이상의 지정된 필드들에 저장된 데이터를 사용하여 정의된다. 단지 한 개의 그런 VMCS만이 도 1에 도시되었지만, 다른 VM들이 다른 VMCS 메모리 이미지들로부터의 데이터를 사용할 수 있다. VMCS(122)는 메모리(120)에 상주할 수 있고, 처리기(118)에 의해 유지관리 될 수 있다. 임의의 다른 데이터 구조(예를 들어, 온칩 캐쉬(on-chip cache), 파일, 탐색표(look-up table) 등)는 일반성을 잃지 않고 VMCS(122) 또는 필터링 메카니즘과 연계된 필드들을 저장하기 위해 사용될 수 있슴을 주목해야 한다. 필터링 메카니즘의 다양한 실시예들은 다음에 더 상세히 설명될 것이다.
일 실시예에서, 필터링 메카니즘이 현재 이벤트가 VMM(112)에 의해 핸들링되어야 한다고 판정하면, VMM(112)으로 제어가 전이된다. 그 다음, VMM(112)은 이벤트를 핸들링하고 게스트 소프트웨어로 제어를 다시 전이한다. 일 실시예에서, VMM(112)으로부터 게스트 소프트웨어로의 제어의 전이는 특별 명령을 실행해서 성취된다. VMM으로부터 게스트 소프트웨어로의 제어의 전이는 본 명세서에서 VM 엔트리로서 언급되고, 게스트 소프트웨어로부터 VMM으로의 제어 전이는 본 명세서에서 VM 퇴출로서 언급되고, VM 퇴출의 잠재적 원인들(예를 들어, 특권화된 예외처리들과 인터럽트들, 및 특권화된 플랫폼 이벤트들)은 본 명세서에서 가상화 이벤트들로서 언급된다.
일 실시예에서, VM 퇴출이 발생할 때, VMCS(122)에 규정된 특정 엔트리 포인트(예를 들어, 명령 포인터 값)에 VMM(112)으로 제어가 전달된다. 다른 실시예에서, 방향지정(redirection) 구조(즉, Intel?? Pentium?? IV의 처리기 명령 세트 구조(ISA)의 인터럽트-디스크립터 표(본 명세서에서 IA-32 ISA로서 언급됨))를 통해 방향을 지정한 후에 제어는 VMM(112)으로 전달된다. 다른 경우에, 이 분야에 공지된 임의의 다른 메카니즘은 게스트 소프트웨어로부터 VMM(112)로 제어를 전이시키기 위해 사용될 수 있다.
예외처리, 인터럽트, 및 플랫폼 이벤트를 포함하는 특권화된 그리고 비특권화된 이벤트들은 본 명세서에서 폴트들로서 언급된다. 폴트는 처리기 상의 명령의 실행에 의해 발생될 수 있다. 예를 들어, 메모리를 액세스하는 동작은 페이징(paging) 및 세그멘테이션(segmentation) 보호 메카니즘들 때문에 다양한 폴트들의 원인이 될 수 있다. 각각의 폴트는 폴트 정보와 연계된다. 폴트 정보는 동적, 정적, 또는 약간 동적인 폴트 정보로서 특성화될 수 있다. 동적 폴트 정보는 폴트 시간에 또는 폴트 시간 근접하여 생성된다. 동적 폴트 정보의 예들은 예외처리에 의해 생성되고, 폴트 동작의 특성들이나 페이지 폴트를 유발시키는 쓰기 메모리 동작에 의해 메모리에 기록되도록 의도되는 데이터 값에 직접적으로 종속되는 오류 코드를 포함한다.
정적인 또는 약간 정적인 폴트 정보는 폴트의 시간에 상관없이 동일 값을 가질 수 있다. 약간 정적인 폴트 정보의 예는, 예를 들어, IA-32 ISA의 CR0 레지스터의 캐쉬 디세이블(cache disable)(CD) 또는 기록방지(write-protect)(WP) 비트들과 같이, 거의 변경되지 않는 다양한 제어 레지스터들의 비트들의 세팅이다. 정적 폴트 정보의 예는 처리기 구현의 버전이다(예를 들어, IA-32 ISA의 CPUID 명령을 통해 보고되는 바와 같이).
일반적으로 말하면, 폴트 정보는 폴트 식별자, 연계된 폴트 오류 코드, 폴트와 연계된 추가 데이터 값들, 또는 이들 데이터 항목들의 임의의 조합을 포함할 수 있다. 폴트 식별자는 이 특정 폴트를 다른 폴트들로부터 구분하기 위해 사용되는 값일 것이다. 오류 코드는 다수의 값들로 구성될 수 있고, 각각의 값은 특정 조건의 발생을 지시한다. 추가 데이터 값들은 폴트 명령 또는 폴트 트리거링 조건에 결합된 임의의 다른 데이터를 나타낼 수 있다. 추가로, 추가 데이터 값들은 폴트 발생 동안 계산되는 데이터를 나타낼 것이다. 추가 데이터 값들의 일부 예들은 폴트의 시간에 특정 위치에 기록되도록 요구되는 데이터, 폴트의 시간에 액세스되는 주소, 폴트를 유발하는 명령의 주소, 폴트의 시간의 메모리 상태 등을 포함한다.
폴트 정보의 일 예는 IA-32 ISA의 페이지 폴트를 참조하여 설명될 수 있다. IA-32 ISA에서, 페이지 폴트는 14와 동일한 폴트 식별자에 의해 식별된다. 따라서, 페이지 폴트가 발생할 때, 엔트리 14에 인터럽트 디스크립터 표(IDT)를 통해 폴트 핸들러를 벡터링하여 폴트 핸들러가 제어를 전달된다. 액세스되는 주소(페이지 폴트를 발생시킴)는 제어 레지스터에(CR2)에 저장된다. 추가로, 폴트 핸들러로 제어를 전달하기 전에, 페이지 폴트는 폴트 핸들러에 의한 사용을 위해 스택에 저장되는 오류 코드를 발생시킨다. 오류 코드는 폴트 핸들러에게 무슨 조건들이 그 페이지 폴트를 유발시켰는지를 알리는 4비트들을 포함한다. 구체적으로, 오류 코드의 비트0는 폴트가 주소 번역을 위해 사용되는 페이지 표에 비존재(non-present) 페이지에 의해 유발되는지를 지시하고, 오류 코드의 비트1은 폴트 액세스가 쓰기였는지를 지시하고, 오류 코드의 비트2는 처리기가 사용자 모드에 있을 때 액세스가 발생되었는지를 지시하고, 오류 코드의 비트3은 폴트가 페이지 디렉토리에 1로 세팅된 예약 비트(reserved bit)에 의해 유발되었는지를 지시한다.
추가 데이터 값들이 페이지 폴트와 연계될 수 있다. 연계된 추가 데이터 값들의 예들은 페이지 폴트(CR2)를 유발시키는 액세스되는 주소, 폴트 명령의 주소, 페이지 폴트가 발생할 때 게스트 소프트웨어가 페이지 표 계층의 기록불가(non-writable) 페이지에 기록하기를 시도하였던 데이터 값, 물리적인, 및 게스트 선형 메모리의 페이지 표들의 주소 등을 포함한다.
제어 전이 필터링 기준들을 사용하는 필터링 메카니즘의 일부 실시예들이 이제 설명될 것이다. 제어 전이 필터링 기준들은 수동으로 또는 프로그램적으로 정의될 수 있다. 제어 전이 필터링 기준들은 특정 폴트, 오류 코드의 형태, ISA, 추가 데이터 값들의 존재, VMM의 특성들, 및 기타 요인들에 종속되어 변한다. 제어 전이 필터링 기준들의 복잡성 및 기준들을 표현하기 위해 요구되는 소자들의 수는 오류 코드에 포함된 값들의 수, 추가 데이터 값들의 수, 및 오류 코드 값들 및/또는 VMM으로의 천이를 유발시킬 필요가 있는(그리고 필요가 없는) 추가 데이터 값들의 가능한 조합들의 수에 종속한다. 예를 들어, 다수의 그런 조합들이 고려되어야 할 때, 제어 전이 필터링 기준들은 오류 코드 및/또는 다른 폴트 정보 및 미리 정의된 데이터 세트에의 몇 개의 연산들(예를 들어, 산술 및/또는 불린(Boolean) 로직 연산)의 수행을 요구할 것이다.
일부 실시예들에서, 미리 정의된 데이터는 상술된 바와 같이 VMCS의 지정 필드들에 저장된다. 다른 실시예들에서, 미리 정의된 데이터는 하드코드될 수 있다(즉, 컴퓨터 프로그램, 프로그램가능한 로직, 마이크로코드, 또는 처리기의 하드코드된 로직에서).
도 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 (1)
여기서, EC는 오류 코드이고, AND는 비트단위 불린 로직 연산자이고, "=="는 비트단위 비교 연산자이고, MASK는 본 명세서에서 마스크 필드라고 언급되는 제1 필드에 저장된 미리 정의된 데이터이고, MATCH는 본 명세서에서 정합 필드라고 언급되는 제2 필드에 저장되는 미리 정의된 데이터이다.
각각의 마스크 및 정합 필드들의 크기는 대응하는 오류 코드의 크기에 종속한다. 일부 실시예들에서, 마스크 및 정합 필드들이 폭들은 오류 코드의 크기와 동일하다. 다른 실시예들에서, 마스크 및 정합 필드들의 폭들은 오류 코드의 크기와 동일하지 않을 수 있다. 예를 들어, 마스크 및 정합 필드는 오류 코드보다 작을 수 있고, 표현 1로 단지 일부 비트들만을 매핑할 것이다.
게다가, 도 3에서 설명된 일 실시예에서, 처리 로직은 또한 방향지정 맵의 대응하는 제어 비트를 사용하여 VM 퇴출을 발생시킬지에 대한 추가 판정을 한다. 방향지정 맵은 어느 가상화 이벤트들이 VM 퇴출을 유발시키는지를 설정하는 VMM에 의해 유지되는 제어 비트들의 세트를 나타낸다. 고려되고 있는 제어 비트는 현재 폴트를 유발시키는 가상화 이벤트에 대응한다. 예를 들어, 가상화 이벤트는 페이지 폴트, 외부 인터럽트, 또는 게스트 소프트웨어에 의한 폴트정정(debug) 레지스터로의 액세스일 수 있고, 그들의 각각은 방향지정 맵에서 연계된 비트를 갖는다. 일 실시예에서, 방향지정 맵은 도 1의 VMCS(122)에 포함된다. 일 실시예에서, 방향지정 맵은 VMCS(122)의 단일 필드이다. 다른 실시예들에서, 복수 필드들은 방향지정 맵을 상세화하기 위해 VMCS(122)에서 요구된다.
결정 박스(303)에서의 판정이 부정적이거나(즉, 폴트 정보는 이 폴트와 연계된 오류 코드를 포함하지 않음), 결정 박스(304)에서 처리 로직이 표현식 1에서 등식이 성립되는 것으로 결정하면(즉, 비트단위 AND 연산자를 통해 마스크 필드에 저장된 데이터와 조합되는 오류 코드가 정합 필드에 저장된 데이터와 정합됨), 일 실시예에서, 방향지정 맵에서 대응하는 제어 비트의 값은 VM 퇴출을 발생시킬지를 판정하기 위해 사용된다(처리 블럭(306)). 예를 들어, 제어 비트가 세팅되면, 처리 로직은 VM 퇴출을 발생시킨다(처리 블럭(313)); 그렇지 않으면, 처리 로직은 게스트 소프트웨어로 폴트를 전달할 것이다(처리 블럭(312)).
표현식1에서 등식이 성립되지 않으면, 처리 로직은 방향지정 비트맵에서 제어 비트의 값을 인버트(invert)하고(처리 블럭(308)) 이 인버트된 값을 사용하여 VM 퇴출을 발생시킬지를 판정한다(처리 블럭(310)). 인버트된 값이 세팅되면, 처리 로직은 VM 퇴출을 발생시킨다(처리 블럭(314)); 그렇지 않으면, 폴트는 게스트 소프트웨어로 벡터링된다(처리 블럭(312)). 다른 실시예에서, 처리 로직은, 결정 블럭(304)에서 판정되는 것처럼, 등식이 성립되지 않으면 제어 비트의 실제 값을 사용할 수 있고, 등식이 성립되면 제어 비트의 인버트된 값을 사용할 수 있다.
도 3의 처리(300)에서 제어 비트를 갖는 마스크와 정합 필드들의 사용은 예로써 IA-32 ISA 페이지 폴트와 연계된 오류 코드의 다양한 값들(본 명세서에서 페이지 폴트 오류 코드 또는 PFEC라고 언급됨)을 사용하여 도시될 수 있다. 다음 예들은 표현식1에서 등식이 성립되지 않으면 제어 비트의 인버전의 존재를 가정한다(도 3에 도시된 바와 같이).
상술된 바와 같이, PFEC는 4개의 비트들을 포함한다. PFEC의 모든 가능한 조합들에 대해 원하는 결과들을 얻기 위해, 마스크 필드, 정합 필드, 및 제어 필드의 각각은 특정 세팅을 가져야 한다. 예를 들어, 모든 페이지 폴트들에 VM 퇴출을 유발시키기 위해, 제어 비트는 1로 세팅될 것이고, 마스크 필드 비트들의 값은 0x0로 세팅될 것이고, 정합 필드의 값은 0x0로 세팅될 것이다. 다른 경우에, 동일 동작을 얻기 위해, 제어 비트는 0으로 세팅될 것이고, 마스크 필드는 0x0로 세팅될 것이고, 정합 필드는 0xF로 세팅될 것이다(동일 기능을 제공하는 정합, 마스크, 및 제어 비트 값들의 다수 세팅이 있슴을 주목함). 다른 예에서, 현재 페이지들로의 상급자 쓰기들로부터 귀결하는 페이지 폴트들에 VM 퇴출을 유발시키기 위해, 제어 비트는 1로 세팅될 것이고, 마스크 필드의 값은 0xF로 세팅될 것이고, 매치 필드의 값은 0x3으로 세팅될 것이다. 이들 값들은 VM 퇴출이 0x3과 동일한 오류 코드를 발생시키는 페이지 폴트들에서만 발생할 것임을 보장한다. 또 다른 예에서, 비존재 페이지들 또는 예약비트(reserved-bit) 위반들로부터 귀결하는 페이지 폴트들에 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)). 다른 경우에, 정합이 발견되지 않으면, 폴트는 게스트 운영 체제로 삽입된다(처리 블럭(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 조합 INT2가 정합 필드(MATCH)에 저장된 데이터와 정합하는지를 판정한다. 일 실시예에서(도 5에 도시 안됨), 판정들 중의 하나가 긍정적이면, 처리 로직은 VM 퇴출을 발생시킨다. 그렇지 않으면, 폴트는 게스트 OS로 삽입된다.
다른 실시예에서(도 5에 도시됨), VM 퇴출에 관한 판정은 방향지정 맵에서의 대응하는 제어 비트에 추가로 종속한다. 구체적으로, 결정 박스(508)에서의 판정이 긍정적이면(또는 결정 블럭(503)에서의 판정이 부정적이면, 즉, 폴트 정보가 오류 코드를 포함하지 않는 경우), 처리 블럭은 제어 비트가 VM 퇴출을 명시하는지(즉, 제어 비트가 1로 세팅됨)를 결정 블럭(510)에서 추가 판정한다. 제어 비트가 VM 퇴출을 명시하면, 처리 로직은 VM 퇴출을 발생시킨다(처리 블럭(512)). 제어 비트가 VM 퇴출을 명시하지 않으면(즉, 제어 비트가 0으로 세팅됨), 폴트는 게스트 OS로 삽입된다(처리 블럭(518)).
그렇지 않으면, 결정 박스(508)에서의 결정이 부정적이면, 처리 로직은 제어 비트의 값을 인버트한다(처리 블럭(514)). 인버트된 값이 VM 퇴출을 명시하면(결정 박스(516)), 처리 로직은 VM 퇴출을 발생시킨다(처리 블럭(512)). 인버트된 값이 VM 퇴출을 명시하지 않으면, 폴트는 게스트 OS로 삽입된다(처리 블럭(518)).
도 3 내지 도 5에서 도시된 실시예들은 특정 연산자들(예를 들어, 비트단위 AND 연산자, 비교 연산자 등)을 사용하지만, 다양한 다른 연산자들이 일반성을 잃지 않고 필터링 기준들과 함께 사용될 수 있다. 추가로, 도 3 내지 도 5와 연결하여 상술된 것들과 다른 다양한 필터링 기준들이 게스트 소프트웨어의 동작 중에 발생하는 폴트들을 처리하기 위해 사용될 수 있다. 게다가, 상술된 추가 데이터 값들은 필터링 처리 동안 폴트와 연계된 오류 코드 대신, 또는 함께 사용될 수 있다.
일부 실시예들에서, 추가 필터링 기준들(본 명세서에서 폴트 필터링 기준들이라고 언급됨)은 제어 전이 필터링 기준들 이전에 폴트 정보에 적용된다. 다른 실시예들에서, 폴트 필터링 기준들은 제어 전이 필터링 기준들 후에 폴트 정보에 적용된다. 다른 실시예들에서, 제어 전이 필터링 기준들이 아닌 폴트 필터링 기준들은 폴트 정보에 적용된다. 폴트 필터링 기준들은 게스트 소프트웨어의 동작 동안에 발생하는 폴트 조건이 무시될 수 있는지를 판정하기 위해 사용된다. 폴트 조건은 동작이 완료되도록 허용되면 폴트를 정상적으로 유발시키는 이벤트를 나타낸다. 그런 폴트 조건의 일례는 게스트 소프트웨어에 의해 페이지 표 계층(page table hierarchy)에서 기록불가 페이지에 쓰기의 시도이다. 일부 상황들에서, 폴트 조건의 시간에 존재하는 다른 요인들은 폴트 조건이, 예를 들어, VMM 또는 다른 가상머신들의 수행, 보안, 또는 적합한 동작을 침해하지 않을 것임을 지시하므로 폴트 조건은 무시될 수 있다. 그런 상황들의 예들은 도 7 내지 도 8과 연결하여 아래 더 상세히 설명될 것이다.
도 6은 폴트 필터링 기준들 및 제어 전이 필터링 기준들을 사용하여 폴트들 및 폴트들 때문에의 VM 퇴출을 필터링하는 처리(600)의 일 실시예의 흐름도이다. 처리는 하드웨어(예를 들어, 회로, 전용 로직, 프로그램가능한 로직, 마이크로코드 등), 소프트웨어(일반 목적 컴퓨터 시스템 또는 전용 머신 상에 운행되는 것과 같은), 또는 그들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다.
처리(600)는 게스트 소프트웨어의 동작 중에 폴트 조건의 발생을 검출하고(처리 블럭(602)), 폴트 조건에 관련된 폴트 정보를 분석하는(처리 블럭(604)) 처리 로직에서부터 시작한다. 그런 폴트 정보는 폴트 식별자, 오류 코드, 폴팅 주소, 기록될 데이터, 페이지 표 주소 등을 포함할 수 있다.
다음, 처리 로직은 폴트 정보가 폴트 필터링 기준들을 만족하는지를 판정한다(결정 박스(604)). 폴트 필터링 기준들은 게스트 소프트웨어의 동작에 관한 규칙들을 사용하여 처리기 상태의 한 개 이상의 소자들, 메모리 상태, 및/또는 폴트 정보의 평가를 요구한다. 예를 들어, 폴트 필터링 기준들은 게스트 소프트웨어가 메모리 위치에 기록하려고 시도하는 데이터와 이 메모리 위치에 현재 저장된 데이터의 비교를 요구할 것이다. 폴트 필터링 기준들은 처리기 상태의 일 소자, 메모리 상태, 및/또는 폴트 정보의 일 소자의 단일 점검 또는 다양한 소자들의 복수 점검들을 요구할 수 있다. 폴트 필터링 기준들의 복잡성은 특정 폴트 조건, 폴트 조건에 관련된 동작 규칙들, ISA, VMM의 특성들, 응용 프로그램, 및 다른 요인들에 따라 다를 수 있다. 필터링 기준들의 예들은 도 7 내지 도 8과 연결하여 아래 더 상세히 기재된다.
폴트 필터링 기준들이 만족되면, 처리 로직은 폴트 조건을 무시하고, 폴트 조건이 검출되지 않은 것처럼 게스트 소프트웨어가 진행하도록 허용한다(처리 블럭(608)). 결과적으로, 게스트 소프트웨어에 의해 시작되는 동작은 폴트 조건의 검출에도 불구하고 그것의 완료를 허용하기 위해 수정된다.
폴트 필터링 기준들이 만족되지 않으면, 처리 로직은 제어 전이 필터링 기준들을 사용하여 폴트를 핸들링하는 적합한 엔트리를 결정한다(결정 박스(610)). 폴트 정보가 제어 전이 필터링 기준들을 만족시키면, 처리 로직은 게스트 소프트웨어에 폴트를 전달하고 게스트 소프트웨어가 그 폴트를 핸들링하도록 허용한다(처리 블럭(612)). 폴트 정보가 제어 전이 필터링 기준들을 만족시키지 않으면, 처리 로직은 VMM으로 제어를 천이한다(처리 블럭(614)).
다른 실시예들에서, 폴트 필터링 기준들이 만족되지 않으면, 처리 로직은 제어 전이 필터링 기준들을 사용하지 않고 항상 VMM으로 제어를 천이한다.
또 다른 실시예들에서, 처리 로직은 첫번째로 제어 전이 필터링 기준들을 사용하여 폴트를 핸들링하는 적절한 개체를 결정한다. 그 다음, 적절한 개체가 게스트 소프트웨어이면, 처리 로직은 폴트 필터링 기준들이 만족되었는지를 추가 판정한다. 폴트 필터링 기준들이 만족되면, 게스트는 폴트 조건을 무시하도록 허용된다; 폴트 필터링 기준들이 만족되지 않으면, 위와 같이, 폴트는 게스트로 전달된다.
다음 기재는 IA-32 ISA처럼 페이지 표 구조들을 가정한다. 그러나, 유사 페이지 표 구조들이 다양한 ISA들에 존재하고 본 발명은 IA-32 ISA의 사용에 의해 제한되지 않음을 주목해야 한다. 추가로, 다음 기재를 용이하게 하기 위해 다양한 단순화가 되어진다. 예를 들어, 물리 주소 확장(PAE) 및 페이지 크기 확장(PSE) 프래그들(flags)의 효과는 포함되지 않았고, 링(ring) 기반 보호 메카니즘들은 설명되지 않았고, 메모리 액세스의 배열에 대한 요구는 테스트되지 않았고, 기타등등이다.
그 기술에서 공지된 바와 같이, IA-32 ISA의 페이지 표들은 페이지 디렉토리 엔트리들(PDEs)과 페이지 표 엔트리들(PTEs)로 구성된다. 각각의 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이나 다른 가상머신에서 실행되는 코드를 침해하는 것을 막기 위해, 게스트 소프트웨어의 액세스를 기반 물리적 머신의 물리적 메모리 자원들로의 액세스를 제한하는 것이 필요하다. 게스트 OS들과 VMM 각각에 의해 관리되는 분리된 페이지 표 계층이 제공되는 일부 구조들에서, 게스트 소프트웨어의 액세스를 물리적 메모리 자원으로 제한하는 한 가지 접근법은 게스트 페이지 표 계층들의 승인(permisssions)을 수정하는 VMM을 포함하여 보호된 페이지들(즉, VMM 또는 다른 VM들에 속한 페이지들)로의 게스트 소프트웨어에 의한 읽기 또는 쓰기 동작들을 막는다. 추가로, 게스트 페이지 표들은 수정되어, 게스트 페이지 표들을 저장하는 VM에 속한 일부 페이지들로의 쓰기 동작들을 막는다. 일단 이들 승인 수정이 되면, 페이지 표를 변경시키려는 게스트 소프트웨어의 시도는 VMM이 VM 퇴출을 통해 관찰할 수 있는 페이지 폴트 이벤트를 유발시킬 것이다. VMM은 시도된 액세스를 검사할 수 있고, 취해질 적절한 액션들을 결정한다. 예를 들어, 그것은 시도된 액세스를 승인, 비허용, 또는 수정할 것이다. 예를 들어, 게스트 소프트웨어는 VMM 또는 다른 VM에 속하는 물리적 페이지를 매핑하는 것이 허용되지 않을 수 있다. 게스트 소프트웨어에 의한 페이지 테이블들로의 수정들이 빈번하게 발생하므로, 각각의 시도된 게스트 페이지 표 변경을 스크리닝하는 VMM으로의 퇴출과 연관된 오버헤드는 막대한 수행 부담을 부가할 것이다.
페이지 테이블들의 관리를 단순화하기 위해, 예를 들어, Microsoft Windows XP와 같은, 몇 개의 운영 체제들은 재귀적 페이지 디렉토리를 채택한다. 부언하면, 페이지 디렉토리 엔트리(PDE)는 페이지 표의 페이지로서 페이지 디렉토리의 페이지를 참조하도록 세팅될 것이다. 페이지 디렉토리와 페이지 표 모두로서의 동일 페이지의 이러한 사용은 자체참조적(self-referential) PDE를 통해 액세스되는 선형 주소 공간의 4MB 영역에 액세스가능한 모든 페이지 표의 페이지들에 귀결한다. 주어진 자체참조적 PDE의 사용에서, 임의의 특정 선형 주소를 매핑하기 위해 사용되는 PTE 또는 PDE의 선형 주소가 계산될 것이다. 자체참조적 PDE를 채택하는 운영 체제들에서, 통상적 페이지 표 편집은 이 자체 매핑된(self-mapped) 영역을 통해 되어진다(즉, 페이지 표로의 편집은 자체매핑하는 PDE를 사용하는 4MB 영역 내에 속하는 선형 주소들을 사용하는 메모리로의 쓰기를 통해 되어짐). 이 자체매핑된 PDE를 사용하지 않는 페이지 표들의 편집의 수는 얼마 안된다.
공통 페이지가 페이지 디렉토리 페이지 및 페이지 표 페이지 모두로서 사용되는 페이지 표는 본 명세서에서 자체매핑된 페이지 표라고 언급된다. 당업자들에게는 페이지 표 엔트리들이 구조화된 방식으로 선형 주소들에 매핑되는 -그런 매핑이 페이지 표 계층의 복수 수준들에서의 구조들의 재사용의 결과이든지 또는 OS 관행으로서 이든지 간에- 다른 접근법들로 본 발명이 또한 적용됨이 명백할 것이다.
본 발명의 일 실시예에서, 필터링 메카니즘은 VMM으로의 퇴출을 요구하지 않는 페이지 맵 편집을 식별하기 위해 채택된다. 이 실시예에서, 필터링 기준들에 대한 추가 필드들은 VMCS에 추가된다.
일 실시예에서, 게스트 운영 체제에 의해 사용되는 페이지 표들은 자체 매핑된다, 즉, 페이지 표 계층의 페이지 디렉토리 엔트리들(PDEs) 중의 하나는 페이지 디렉토리(PD) 페이지의 베이스를 다시 가리킨다. 상술된 바와 같이, 자체 매핑된 페이지 표들의 개념은 그 기술에 잘 공지되어 있고, 예를 들어, Microsoft Windows XP와 같은 운영 체제에 의해 사용된다. 일 실시예에서, 자체매핑은 페이지 디렉토리들의 베이스의 선형 주소(본 명세서에서 PTBASE라고 언급됨)가 조건들의 세트를 만족시킴을 보장하여 지원된다. 조건들의 세트는 PTBASE 값이 4MB에 배열됨, 즉, PTBASE[21:0] == 0이고, 페이지 표는 적합한 자체 매핑 엔트리를 포함하고, 즉, ((CR3[13: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:21]있으면) 또는 PTE(즉, 주소가 페이지 표 내에 있고, PDE 내에 있지 않으면) 내에 있는지가 판정될 수 있다.
도 7과 도 8은 폴트 필터링 기준들을 사용하여 페이지 폴트들을 필터링하는 처리의 2개의 실시예들을 도시한다. 처리는 하드웨어(즉, 회로, 전용 로직, 프로그램가능한 로직, 마이크로코드 등), 소프트웨어(일반 목적 컴퓨터 시스템 또는 전용 머신 상에서 운행되는 것과 같은), 또는 그들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 도 7과 도 8에서 도시된 실시예들에서, VMM은 페이지 표 자체를 매핑하는 게스트 페이지 표 엔트리들(게스트 PTEs)이 읽기용 액세스를 갖는 것을 보장하여 물리적 메모리를 보호한다. 결과적으로, 게스트 소프트웨어가 페이지 표의 엔트리들을 변경시키려고 시도할 때, 페이지 폴트 조건이 발생한다. 이들 실시예들은, 자체 매핑되는 페이지 표들을 사용하는 게스트 OS의 사용이 더욱 더 수행력 향상을 제공하지만, 상술된 바와 같이, 자체 매핑되는 페이지 표들을 사용하는 게스트 OS 또는 이 페이지 표 구조를 사용하지 않는 게스트 OS와 사용될 수 있다.
도 7에 도시된 실시예에서, 게스트 운영 체제가 물리적 메모리 공간을 여전히 보호하고 게스트 소프트웨어에게 페이지 표의 완전 제어를 주지 않으면서 "P"비트를 1로 세팅하려고 시도하지 않으면 폴트를 전달하지 않고 또는 VM 퇴출을 유발시키지 않고 완료시키기 위해 PTE로의 쓰기 승인을 하는 폴트 필터링 기준들의 세트가 도시된다. 이 규칙의 논거는 비존재로 표시된 PTE(즉, "P"비트는 0임)가 물리적 메모리 페이지를 매핑할 수 없다는 것이다. 그러므로, 게스트 소프트웨어에 의해 변경되는 PTE는 물리적 메모리 페이지를 매핑할 수 없고, 그래서 VMM의 동작이나 다른 VM 상에 운행되는 소프트웨어를 방해할 수 없다. 그러므로, VMM은 페이지 표 수정에 대해 통보될 필요가 없고, 페이지 표 쓰기는 페이지 폴트 또는 VM 퇴출을 유발시키지 않고 진행하도록 허용될 것이다.
도 7의 참조에서, 처리 로직은 게스트 소프트웨어의 동작 중에 페이지 폴트 조건을 검출하고(처리 블럭(702)) 페이지 폴트 조건과 관련있는 페이지 폴트 정보를 수신하는(처리 블럭(704)) 것에서부터 시작한다.
다음, 폴트 필터링 기준들의 세트는 페이지 폴트 정보에 적용된다. 구체적으로, 처리 로직은 폴팅 액세스가 PTE(결정 박스(708))로의 쓰기 동작(결정 박스(706))이고, "P"비트를 1로 세팅하려는 시도가 아닌지를 판정한다(즉, DATA.P == 0, 여기서 DATA는 게스트가 쓰려고 하는 값임)(결정 박스(710)). 이들 판정들이 긍정적이면, 게스트 운영 체제의 액세스는 폴트 또는 VM 퇴출을 유발시키지 않고 완료되도록(즉, 쓰기가 메모리를 수정하도록 함) 한다(처리 블럭(714)). 처리 블럭들(706, 708, 및 710)의 판정들 중의 임의의 것이 부정적이면, 도 2 내지 도 5와 연결하여 더 상세히 설명되는 것처럼, 제어는 처리 블럭(712)으로 전이되어 VM 퇴출이 발생되거나 폴트가 게스트 소프트웨어로 벡터링되는지를 판정한다.
다른 실시예에서(도면들에 도시 안됨), 쓰기는 PTE로 되어져야 한다는 자격은 삭제되거나, 예를 들어, 존재 비트가 세팅되지 않는 한 PTE 또는 PDE로의 쓰기를 허용하는 테스트로 대체될 수 있다.
도 8의 참조에서, 도 7과 연결하여 상술된 폴트 필터링 기준들과 일부 추가 기준들을 포함하는 폴트 필터링 기준들의 더욱 복잡한 세트가 도시된다. 이 폴트 필터링 기준들의 세트는 게스트 운영 체제가 PFN이 아닌 PTE의 비트들, 페이지 폴트를 요구하거나 VM 퇴출을 유발시키지 않고 읽기/쓰기 및 존재 비트들을 수정하도록 한다. 추가로, 읽기/쓰기와 존재 비트들의 특정 수정본들은 페이지 폴트를 요구하거나 VM 퇴출을 유발시키지 않고 허용된다.
처리 로직은 게스트 소프트웨어의 동작 중에 페이지 폴트 조건을 검출하고(처리 블럭(802)) 페이지 폴트 조건과 관련된 페이지 폴트 정보를 수신하는(처리 블럭(804)) 단계에서부터 시작한다. 다음, 처리 로직은 폴팅 액세스가 PTE(결정 박스(808))로의 쓰기 동작이고(결정 박스(806)) "P"비트를 1로 세팅하려는 시도는(즉, DATA.P == 0) 아닌지를 판정한다(결정 박스(810)). 이들 판정들이 모두 긍정적이면, 게스트 운영 체제의 액세스는 폴트나 VM 퇴출을 유발시키지 않고 완료(즉, 메모리를 수정하기 위해 쓰기가 허용됨)하도록 된다(처리 블럭(814)). 처리 블럭(806, 808)에서의 판정들이 부정적이면, 도 2 내지 도 5를 참조하여 설명되는 바와 같이, 제어는 처리 블럭(812)로 진행하여 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를 사용하여 페이지 표들을 수정하려고 시도하는 액세스들을 필터링해 낼 것임을 주목해야 한다. 자체 매핑된 PDE를 사용하지 않는 페이지 표들을 수정하려는 시도들은 폴트 필터링 기준들에 의해 필터링되지 않을 것이다(즉, 블럭들(708, 808)에서 쓰기가 PTE로 인지의 판정은 실패함). 그 다음, 제어 전이 필터링 기준들은 도 2 내지 도 5에 도시된 바와 같이 VM 퇴출이 필요한지를 판정하기 위해 사용될 것이다. 사실상 PTE가 편집되는지를 VMM이 판정할 수 있으므로, 이것은 보안 또는 정확한 동작의 관점에서 문제가 되지 않는다. 제어 전이 필터링 메카니즘은 모든 쓰기 페이지 폴트들에 VM 퇴출을 유발시키고 페이지 표 편집이 시도되는지를 판정하기 위해 씌여지는 주소와 데이터를 평가하기 위해 구성될 것이다.
도 7 및 도 8을 참조하여 상술된 것들 이외의 다양한 폴트 필터링 기준들은 일반성을 잃지 않고 폴트들을 필터링하기 위해 사용될 수 있다. 필터링의 형태는, 일 실시예에서, VMCS에 상주할 수 있는 다양한 VMM 제어된 필드들(예를 들어, PTBASE)에 의해 제어될 수 있다. 다른 경우에, 필터링은 단일 인에이블 비트에 의해 제어될 수 있고, 처리기 구현으로 하드코드될 수 있고, 기타등등이다.
도 9는 제어 전이 필터링 기준들 및/또는 폴트 필터링 기준들을 정의하는 처리(900)의 일 실시예의 블럭도이다. 처리(900)는 수동 또는 자동으로 수행될 수 있다.
도 9의 참조에서, 처리(900)는 폴트 정보의 어떤 조합들(예를 들어, 오류 코드 값, 폴트 식별자 등)이 VMM으로의 천이가 요구되지 않거나, 다른 경우에, 폴트를 무시하고 완료되도록 허용되어야 하는지를 식별하는 단계에서부터 시작한다(처리 블럭(902)). 그 다음, VM 퇴출 및/또는 폴트 필터링 기준들을 위해 사용될 수 있는 필드들의 최대수 및 필드들의 세만틱이 식별되고(처리 블럭(904)), 이용가능한 연산자들(예를 들어, 불린, 산술 등)이 식별된다(처리 블럭(906)). 게다가, 처리 블럭(902) 내지 처리 블럭(906)에서 식별된 정보에 기초하여, 필터링 기준들이 생성된다(처리 블럭(908)). 필터링 기준들은 미리 정의된 값들과 미리 정의된 값들과 오류 코드에 수행되는 한 개 이상의 미리 정의된 값들, 한 개 이상의 불린 로직 및/또는 산술 연산을 포함할 수 있다.
그러므로, 게스트 소프트웨어의 동작 중에 발생하는 폴트를 핸들링하는 방법 및 장치가 설명되었다. 위의 설명은 설명적이지만 제한적이지는 않도록 의도됨이 이해된다. 당업자들에게는 위의 설명을 읽고 이해할 때 다수의 다른 실시예들이 명백할 것이다. 그러므로, 본 발명의 범위는 첨부된 청구범위로의 참조와 그런 청구항들이 명칭된 동격들의 전체 범위의 참조로 결정되어야 한다.

Claims (30)

  1. 게스트 소프트웨어(guest software)의 동작과 연계된 폴트(fault)에 관련된 폴트 정보를 수신하는 단계;
    상기 폴트 정보가 적어도 한 개의 필터링 기준들을 만족시키는지를 판정하는 단계; 및
    상기 폴트 정보가 상기 적어도 한 개의 필터링 기준들을 만족시키면 가상 머신 모니터(VMM)로의 제어의 천이를 억제하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 적어도 한 개의 필터링 기준들은 적어도 한 개의 제어 전이 필터링 기준들(control transfer filtering criteria)인 단계; 및
    상기 VMM으로의 제어의 천이를 억제하는 단계는 상기 폴트 정보가 상기 적어도 한 개의 제어 전이 필터링 기준들을 만족시키면 상기 게스트 소프트웨어로 상기 폴트를 전달하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 폴트 정보는 폴트 식별자, 상기 폴트와 연계된 오류 코드, 및 상기 폴트와 연계된 한 개 이상의 추가 데이터 값들 중의 적어도 하나인 방법.
  4. 제1항에 있어서,
    상기 폴트는 인터럽트, 예외 처리, 및 플랫폼 이벤트 중의 임의의 하나를 나타내는 방법.
  5. 제1항에 있어서, 상기 폴트 정보는 다수의 값들을 포함하고, 상기 다수의 값들 각각은 특정 조건의 발생을 나타내는 방법.
  6. 제5항에 있어서, 상기 폴트 정보의 값들의 한 개 이상의 조합들이 상기 VMM으로의 천이를 요구하는 방법.
  7. 제1항에 있어서,
    상기 폴트 정보가 상기 적어도 한 개의 필터링 기준들을 만족시키지 않으면 상기 VMM으로 제어를 천이하는 단계
    를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 적어도 한 개의 필터링 기준은 한 개 이상의 지정된 필드들에 저장된 데이터를 사용하여 정의되는 방법.
  9. 제8항에 있어서,
    상기 한 개 이상의 지정된 필드들은 정합(match) 필드와 마스크(mask) 필드를 포함하는 방법.
  10. 제8항에 있어서,
    상기 폴트 정보가 상기 적어도 한 개의 필터링 기준들을 만족시키는지를 판정하는 단계는 한 개 이상의 불린(Boolean) 로직 연산자들을 사용하여 한 개 이상의 지정된 필드들에 저장된 데이터와 상기 폴트 정보를 조합하는 단계를 포함하는 방법.
  11. 상기 폴트와 관련된 폴트 정보와 적어도 한 개의 제어 전이 필터링 기준들을 사용하여 게스트 소프트웨어의 동작과 연계된 폴트가 가상 머신 모니터(VMM)로의 제어의 천이를 요구하는지를 판정하는 단계; 및
    상기 폴트 정보가 상기 적어도 한 개의 제어 전이 필터링 기준들을 만족시키면 상기 게스트 소프트웨어로 상기 폴트를 전달하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 폴트 정보는 폴트 식별자, 상기 폴트와 연계된 오류 코드, 및 상기 폴트와 연계된 한 개 이상의 추가 데이터 값들 중의 적어도 하나인 방법.
  13. 제11항에 있어서,
    상기 폴트는 인터럽트, 예외처리, 및 플랫폼 이벤트 중의 임의의 하나를 나타내는 방법.
  14. 제11항에 있어서,
    상기 적어도 한 개의 제어 전이 필터링 기준들은 한 개 이상의 지정된 필드들에 저장된 데이터를 사용하여 정의되는 방법.
  15. 제14항에 있어서,
    상기 한 개 이상의 지정된 필드들은 정합 필드와 마스크 필드를 포함하는 방법.
  16. 제15항에 있어서,
    상기 게스트 소프트웨어의 상기 동작과 연계된 상기 폴트가 상기 VMM으로의 제어의 천이를 요구하는지를 판정하는 단계는,
    비트단위 AND 연산자를 사용하여 상기 마스크 필드에 저장된 데이터와 상기 폴트 정보를 조합하는 단계; 및
    상기 조합의 결과가 상기 정합 필드에 저장된 데이터와 정합하는지를 판정하는 단계
    를 포함하는 방법.
  17. 제16항에 있어서,
    상기 게스트 소프트웨어의 상기 동작과 연계된 상기 폴트가 상기 VMM으로의 제어의 천이를 요구하는지를 판정하는 단계는,
    상기 조합의 결과가 상기 정합 필드에 저장된 상기 데이터와 정합하는지를 판정하는 단계;
    방향지정 맵(redirection map)에서 대응하는 비트의 값을 식별하는 단계 -상기 대응하는 비트의 값은 상기 폴트가 상기 VMM으로의 제어의 천이를 요구하는지를 지시함-
    를 더 포함하는 방법.
  18. 제16항에 있어서,
    상기 게스트 소프트웨어의 상기 동작과 연계된 상기 폴트가 상기 VMM으로의 제어의 천이를 요구하는지를 판정하는 단계는,
    상기 조합의 결과가 상기 정합 필드에 저장된 상기 데이터와 정합하지 않음을 결정하는 단계;
    방향지정 맵에서의 대응하는 비트의 값을 식별하는 단계; 및
    상기 대응하는 비트의 값을 인버팅(inverting)하는 단계 -상기 대응하는 비트의 상기 인버팅된 값은 상기 폴트가 상기 VMM으로의 제어의 천이를 요구하는지를 지시함-
    를 더 포함하는 방법.
  19. 게스트 소프트웨어를 저장한 메모리; 및
    상기 메모리에 결합되어, 상기 게스트 소프트웨어를 실행하고, 상기 게스트 소프트웨어의 동작과 연계된 폴트에 관련된 폴트 정보가 적어도 한 개의 필터링 기준들을 만족시키는지를 판정하고, 및 상기 폴트 정보가 상기 적어도 한 개의 필터링 기준들을 만족시키면 가상 머신 모니터(VMM)로의 제어의 천이를 억제하는 처리기
    를 포함하는 시스템.
  20. 제19항에 있어서,
    상기 적어도 한 개의 필터링 기준들은 적어도 한 개의 제어 전이 필터링 기준들이고,
    상기 처리기는 상기 폴트 정보가 상기 적어도 한 개의 제어 전이 필터링 기준들을 만족시키면 상기 게스트 소프트웨어로 상기 폴트를 전달하여 상기 VMM으로의 제어의 천이를 억제하는
    시스템.
  21. 제19항에 있어서,
    상기 처리기는 또한 상기 폴트 정보가 상기 적어도 한 개의 필터링 기준들을 만족시키지 않으면 상기 VMM으로 제어를 더 천이하는 시스템.
  22. 게스트 소프트웨어를 저장한 메모리; 및
    상기 메모리에 결합되어, 상기 게스트 소프트웨어를 실행하고, 게스트 소프트웨어의 동작과 연계된 폴트가 상기 폴트와 관련된 폴트 정보와 적어도 한 개의 제어 전이 필터링 기준들을 사용하여 가상 머신 모니터로의 제어의 천이를 요구하는지를 판정하고, 및 상기 폴트 정보가 상기 적어도 한 개의 제어 전이 필터링 기준들을 만족시키면 상기 게스트 소프트웨어로 상기 폴트를 전달하는 처리기
    를 포함하는 시스템.
  23. 제22항에 있어서,
    상기 적어도 한 개의 제어 전이 필터링 기준들은 한 개 이상의 지정된 필드들에 저장된 데이터를 사용하여 정의되고, 상기 한 개 이상의 지정된 필드들은 정합 필드와 마스크 필드를 포함하는 시스템.
  24. 제23항에 있어서,
    상기 처리기는 비트단위 AND 연산자를 사용하여 상기 폴트 정보와 상기 마스크 필드에 저장된 데이터를 조합하고, 상기 조합의 결과가 상기 정합 필드에 저장된 데이터와 정합하는지를 판정하여, 상기 게스트 소프트웨어의 동작과 연계된 상기 폴트가 상기 VMM으로의 제어의 천이를 요구하는지를 판정하는 시스템.
  25. 처리 시스템에 의해 실행될 때, 상기 처리 시스템으로 하여금,
    게스트 소프트웨어의 동작과 연계된 폴트와 관련된 폴트 정보를 수신하는 단계;
    상기 폴트 정보가 적어도 한 개의 필터링 기준들을 만족시키는지를 판정하는 단계; 및
    상기 폴트 정보가 상기 적어도 한 개의 필터링 기준들을 만족시키면 가상 머신 모니터(VMM)로의 제어의 천이를 억제하는 단계
    를 포함하는 방법을 수행하도록 하는 명령들을 포함하는 머신 판독가능 매체.
  26. 제25항에 있어서,
    상기 적어도 한 개의 필터링 기준들은 적어도 한 개의 제어 전이 필터링 기준들이고,
    상기 VMM으로의 제어의 천이를 억제하는 단계는 상기 폴트 정보가 상기 적어도 한 개의 제어 전이 필터링 기준들을 만족시키면 상기 게스트 소프트웨어로 상기 폴트를 전달하는 단계를 포함하는 머신 판독가능 매체.
  27. 제25항에 있어서,
    상기 방법은, 상기 폴트 정보가 상기 적어도 적어도 한 개의 필터링 기준들을 만족시키지 않으면 상기 VMM으로 제어를 천이시키는 단계를 더 포함하는 머신 판독가능 매체.
  28. 처리 시스템에 의해 실행될 때, 상기 처리 시스템으로 하여금,
    게스트 소프트웨어의 동작과 연계된 폴트와 관련된 폴트 정보와 적어도 한 개의 제어 전이 필터링 기준들을 사용하여 상기 폴트가 가상 머신 모니터(VMM)로의 제어의 천이를 요구하는지를 판정하는 단계; 및
    상기 폴트 정보가 상기 적어도 한 개의 제어 전이 필터링 기준들을 만족시키면 상기 게스트 소프트웨어로 상기 폴트를 전달하는 단계
    를 포함하는 방법을 수행하도록 하는 명령들을 포함하는 머신 판독가능 매체.
  29. 제28항에 있어서,
    상기 적어도 한 개의 제어 전이 필터링 기준들은 한 개 이상의 지정된 필드들에 저장된 데이터를 사용하여 정의되고, 상기 한 개 이상의 지정된 필드들은 정합 필드와 마스크 필드를 포함하는 머신 판독가능 매체.
  30. 제29항에 있어서,
    상기 처리기는 비트단위 AND 연산자를 사용하여 상기 폴트 정보와 상기 마스크 필드에 저장된 상기 데이터를 조합하고, 상기 조합의 결과가 상기 정합 필드에 저장된 데이터와 정합되는지를 판정하여, 상기 게스트 소프트웨어의 상기 동작과 연계된 상기 폴트가 상기 VMM으로의 제어의 천이를 요구하는지를 판정하는 머신 판독가능 매체.
KR1020047021391A 2002-06-29 2003-06-13 가상머신 구조에서 게스트 소프트웨어의 동작 동안발생하는 폴트 제어 KR100681975B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/184,774 2002-06-29
US10/184,774 US7124327B2 (en) 2002-06-29 2002-06-29 Control over faults occurring during the operation of guest software in the virtual-machine architecture
PCT/US2003/018667 WO2004003749A2 (en) 2002-06-29 2003-06-13 Control over faults occurring during the operation of guest software in the virtual-machine architecture

Publications (2)

Publication Number Publication Date
KR20050016918A true KR20050016918A (ko) 2005-02-21
KR100681975B1 KR100681975B1 (ko) 2007-02-15

Family

ID=29779452

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047021391A KR100681975B1 (ko) 2002-06-29 2003-06-13 가상머신 구조에서 게스트 소프트웨어의 동작 동안발생하는 폴트 제어

Country Status (7)

Country Link
US (1) US7124327B2 (ko)
EP (1) EP1520230A2 (ko)
KR (1) KR100681975B1 (ko)
CN (1) CN100468351C (ko)
AU (1) AU2003251509A1 (ko)
TW (1) TWI232372B (ko)
WO (1) WO2004003749A2 (ko)

Families Citing this family (202)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003278036B2 (en) * 2002-10-22 2009-12-10 Aventis Pasteur Limited Anti-cancer vaccines and high-dose cytokines as adjuvants
US7287197B2 (en) * 2003-09-15 2007-10-23 Intel Corporation Vectoring an interrupt or exception upon resuming operation of a virtual machine
US7222203B2 (en) * 2003-12-08 2007-05-22 Intel Corporation Interrupt redirection for virtual partitioning
US8898788B1 (en) 2004-04-01 2014-11-25 Fireeye, Inc. Systems and methods for malware attack prevention
US8171553B2 (en) 2004-04-01 2012-05-01 Fireeye, Inc. Heuristic based capture with replay to virtual machine
US9106694B2 (en) 2004-04-01 2015-08-11 Fireeye, Inc. Electronic message analysis for malware detection
US8584239B2 (en) 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis
US8793787B2 (en) * 2004-04-01 2014-07-29 Fireeye, Inc. Detecting malicious network content using virtual environment components
US8528086B1 (en) 2004-04-01 2013-09-03 Fireeye, Inc. System and method of detecting computer worms
US8566946B1 (en) 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US8881282B1 (en) 2004-04-01 2014-11-04 Fireeye, Inc. Systems and methods for malware attack detection and identification
US9027135B1 (en) 2004-04-01 2015-05-05 Fireeye, Inc. Prospective client identification using malware attack detection
US8549638B2 (en) 2004-06-14 2013-10-01 Fireeye, Inc. System and method of containing computer worms
US7587537B1 (en) 2007-11-30 2009-09-08 Altera Corporation Serializer-deserializer circuits formed from input-output circuit registers
US7370181B2 (en) * 2004-06-22 2008-05-06 Intel Corporation Single stepping a virtual machine guest using a reorder buffer
US7305592B2 (en) * 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US7539986B2 (en) * 2004-06-30 2009-05-26 Intel Corporation Method for guest operating system integrity validation
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
US7404107B2 (en) * 2004-12-15 2008-07-22 Microsoft Corporation Fault injection selection
US20060126799A1 (en) * 2004-12-15 2006-06-15 Microsoft Corporation Fault injection
US20060126800A1 (en) * 2004-12-15 2006-06-15 Microsoft Corporation Fault injection object
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
US8286162B2 (en) * 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
US7703126B2 (en) * 2006-03-31 2010-04-20 Intel Corporation Hierarchical trust based posture reporting and policy enforcement
US7555628B2 (en) 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US7665005B2 (en) * 2006-08-25 2010-02-16 Intel Corporation In situ processor margin testing
US8615643B2 (en) 2006-12-05 2013-12-24 Microsoft Corporation Operational efficiency of virtual TLBs
US8214483B2 (en) * 2007-02-28 2012-07-03 Red Hat, Inc. Method and system for continuous availability subscription service
US8578337B2 (en) * 2007-02-28 2013-11-05 Red Hat, Inc. Method and system for quality assurance subscription service
US7694189B2 (en) 2007-02-28 2010-04-06 Red Hat, Inc. Method and system for remote monitoring subscription service
US9946982B2 (en) 2007-02-28 2018-04-17 Red Hat, Inc. Web-based support subscriptions
US7739554B2 (en) * 2007-02-28 2010-06-15 Red Hat, Inc. Method and system for automatic resolution and dispatching subscription service
US8055951B2 (en) * 2007-04-10 2011-11-08 International Business Machines Corporation System, method and computer program product for evaluating a virtual machine
US7984483B2 (en) * 2007-04-25 2011-07-19 Acxess, Inc. System and method for working in a virtualized computing environment through secure access
US9223600B1 (en) 2007-05-07 2015-12-29 Hewlett Packard Enterprise Development Lp In-processor dynamic address redirection table for substituting instruction strings
US8799620B2 (en) * 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US8151264B2 (en) * 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
US7882274B2 (en) * 2007-09-20 2011-02-01 Virtual Desktop Technologies, Inc. Computer system with multiple terminals
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
WO2009123640A1 (en) * 2008-04-04 2009-10-08 Hewlett-Packard Development Company, L.P. Virtual machine manager system and methods
CN101645119B (zh) * 2008-08-07 2012-05-23 中国科学院软件研究所 一种基于虚拟硬件环境的恶意代码自动分析方法及系统
US8997219B2 (en) 2008-11-03 2015-03-31 Fireeye, Inc. Systems and methods for detecting malicious PDF network content
US8850571B2 (en) 2008-11-03 2014-09-30 Fireeye, Inc. Systems and methods for detecting malicious network content
US8832829B2 (en) 2009-09-30 2014-09-09 Fireeye, Inc. Network-based binary file extraction and analysis for malware detection
US8893124B2 (en) 2011-03-31 2014-11-18 Intel Corporation Method, apparatus and system for limiting access to virtualization information in a memory
WO2013032442A1 (en) * 2011-08-30 2013-03-07 Hewlett-Packard Development Company , L.P. Virtual high privilege mode for a system management request
US9519782B2 (en) 2012-02-24 2016-12-13 Fireeye, Inc. Detecting malicious network content
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
CN102902599B (zh) 2012-09-17 2016-08-24 华为技术有限公司 虚拟机内部故障处理方法、装置及系统
US20140189310A1 (en) * 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9223602B2 (en) * 2012-12-28 2015-12-29 Intel Corporation Processors, methods, and systems to enforce blacklisted paging structure indication values
US10572665B2 (en) 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US9009822B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for multi-phase analysis of mobile applications
US9195829B1 (en) 2013-02-23 2015-11-24 Fireeye, Inc. User interface with real-time visual playback along with synchronous textual analysis log display and event/time index for anomalous behavior detection in applications
US9009823B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications installed on mobile devices
US9824209B1 (en) 2013-02-23 2017-11-21 Fireeye, Inc. Framework for efficient security coverage of mobile software applications that is usable to harden in the field code
US9176843B1 (en) 2013-02-23 2015-11-03 Fireeye, Inc. Framework for efficient security coverage of mobile software applications
US9159035B1 (en) 2013-02-23 2015-10-13 Fireeye, Inc. Framework for computer application analysis of sensitive information tracking
US8990944B1 (en) 2013-02-23 2015-03-24 Fireeye, Inc. Systems and methods for automatically detecting backdoors
US9367681B1 (en) 2013-02-23 2016-06-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application
US10235278B2 (en) * 2013-03-07 2019-03-19 International Business Machines Corporation Software testing using statistical error injection
US9565202B1 (en) 2013-03-13 2017-02-07 Fireeye, Inc. System and method for detecting exfiltration content
US9626509B1 (en) 2013-03-13 2017-04-18 Fireeye, Inc. Malicious content analysis with multi-version application support within single operating environment
US9355247B1 (en) 2013-03-13 2016-05-31 Fireeye, Inc. File extraction from memory dump for malicious content analysis
US9104867B1 (en) 2013-03-13 2015-08-11 Fireeye, Inc. Malicious content analysis using simulated user interaction without user involvement
US9430646B1 (en) 2013-03-14 2016-08-30 Fireeye, Inc. Distributed systems and methods for automatically detecting unknown bots and botnets
US9311479B1 (en) 2013-03-14 2016-04-12 Fireeye, Inc. Correlation and consolidation of analytic data for holistic view of a malware attack
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9413781B2 (en) 2013-03-15 2016-08-09 Fireeye, Inc. System and method employing structured intelligence to verify and contain threats at endpoints
US10713358B2 (en) 2013-03-15 2020-07-14 Fireeye, Inc. System and method to extract and utilize disassembly features to classify software intent
US9251343B1 (en) 2013-03-15 2016-02-02 Fireeye, Inc. Detecting bootkits resident on compromised computers
US9495180B2 (en) 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9635039B1 (en) 2013-05-13 2017-04-25 Fireeye, Inc. Classifying sets of malicious indicators for detecting command and control communications associated with malware
US9424138B2 (en) 2013-06-14 2016-08-23 Nvidia Corporation Checkpointing a computer hardware architecture state using a stack or queue
US9536091B2 (en) 2013-06-24 2017-01-03 Fireeye, Inc. System and method for detecting time-bomb malware
US10133863B2 (en) 2013-06-24 2018-11-20 Fireeye, Inc. Zero-day discovery system
US9300686B2 (en) 2013-06-28 2016-03-29 Fireeye, Inc. System and method for detecting malicious links in electronic messages
US9888016B1 (en) 2013-06-28 2018-02-06 Fireeye, Inc. System and method for detecting phishing using password prediction
US9690936B1 (en) 2013-09-30 2017-06-27 Fireeye, Inc. Multistage system and method for analyzing obfuscated content for malware
US9628507B2 (en) 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
US10192052B1 (en) 2013-09-30 2019-01-29 Fireeye, Inc. System, apparatus and method for classifying a file as malicious using static scanning
US9736179B2 (en) 2013-09-30 2017-08-15 Fireeye, Inc. System, apparatus and method for using malware analysis results to drive adaptive instrumentation of virtual machines to improve exploit detection
US9294501B2 (en) 2013-09-30 2016-03-22 Fireeye, Inc. Fuzzy hash of behavioral results
US9171160B2 (en) 2013-09-30 2015-10-27 Fireeye, Inc. Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses
US10089461B1 (en) 2013-09-30 2018-10-02 Fireeye, Inc. Page replacement code injection
US10515214B1 (en) 2013-09-30 2019-12-24 Fireeye, Inc. System and method for classifying malware within content created during analysis of a specimen
US9921978B1 (en) 2013-11-08 2018-03-20 Fireeye, Inc. System and method for enhanced security of storage devices
US9189627B1 (en) 2013-11-21 2015-11-17 Fireeye, Inc. System, apparatus and method for conducting on-the-fly decryption of encrypted objects for malware detection
US9747446B1 (en) 2013-12-26 2017-08-29 Fireeye, Inc. System and method for run-time object classification
US9756074B2 (en) 2013-12-26 2017-09-05 Fireeye, Inc. System and method for IPS and VM-based detection of suspicious objects
US9292686B2 (en) 2014-01-16 2016-03-22 Fireeye, Inc. Micro-virtualization architecture for threat-aware microvisor deployment in a node of a network environment
US9262635B2 (en) 2014-02-05 2016-02-16 Fireeye, Inc. Detection efficacy of virtual machine-based analysis with application specific events
US9241010B1 (en) 2014-03-20 2016-01-19 Fireeye, Inc. System and method for network behavior detection
US10242185B1 (en) 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9591015B1 (en) 2014-03-28 2017-03-07 Fireeye, Inc. System and method for offloading packet processing and static analysis operations
US9223972B1 (en) 2014-03-31 2015-12-29 Fireeye, Inc. Dynamically remote tuning of a malware content detection system
US9432389B1 (en) 2014-03-31 2016-08-30 Fireeye, Inc. System, apparatus and method for detecting a malicious attack based on static analysis of a multi-flow object
US9438623B1 (en) 2014-06-06 2016-09-06 Fireeye, Inc. Computer exploit detection using heap spray pattern matching
US9973531B1 (en) 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection
US9594912B1 (en) 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US10084813B2 (en) 2014-06-24 2018-09-25 Fireeye, Inc. Intrusion prevention and remedy system
US9398028B1 (en) 2014-06-26 2016-07-19 Fireeye, Inc. System, device and method for detecting a malicious attack based on communcations between remotely hosted virtual machines and malicious web servers
US10805340B1 (en) 2014-06-26 2020-10-13 Fireeye, Inc. Infection vector and malware tracking with an interactive user display
US10002252B2 (en) 2014-07-01 2018-06-19 Fireeye, Inc. Verification of trusted threat-aware microvisor
US9672354B2 (en) * 2014-08-18 2017-06-06 Bitdefender IPR Management Ltd. Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine
US9363280B1 (en) 2014-08-22 2016-06-07 Fireeye, Inc. System and method of detecting delivery of malware using cross-customer data
US10671726B1 (en) 2014-09-22 2020-06-02 Fireeye Inc. System and method for malware analysis using thread-level event monitoring
US10027689B1 (en) 2014-09-29 2018-07-17 Fireeye, Inc. Interactive infection visualization for improved exploit detection and signature generation for malware and malware families
US9773112B1 (en) 2014-09-29 2017-09-26 Fireeye, Inc. Exploit detection of malware and malware families
US9690933B1 (en) 2014-12-22 2017-06-27 Fireeye, Inc. Framework for classifying an object as malicious with machine learning for deploying updated predictive models
US10075455B2 (en) 2014-12-26 2018-09-11 Fireeye, Inc. Zero-day rotating guest image profile
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US9838417B1 (en) 2014-12-30 2017-12-05 Fireeye, Inc. Intelligent context aware user interaction for malware detection
CN104680067B (zh) * 2015-02-15 2017-12-19 安一恒通(北京)科技有限公司 文件的检测方法及装置
US9690606B1 (en) 2015-03-25 2017-06-27 Fireeye, Inc. Selective system call monitoring
US10148693B2 (en) 2015-03-25 2018-12-04 Fireeye, Inc. Exploit detection system
US9438613B1 (en) 2015-03-30 2016-09-06 Fireeye, Inc. Dynamic content activation for automated analysis of embedded objects
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
US10417031B2 (en) 2015-03-31 2019-09-17 Fireeye, Inc. Selective virtualization for security threat detection
US9483644B1 (en) 2015-03-31 2016-11-01 Fireeye, Inc. Methods for detecting file altering malware in VM based analysis
US9654485B1 (en) 2015-04-13 2017-05-16 Fireeye, Inc. Analytics-based security monitoring system and method
US9594904B1 (en) 2015-04-23 2017-03-14 Fireeye, Inc. Detecting malware based on reflection
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10715542B1 (en) 2015-08-14 2020-07-14 Fireeye, Inc. Mobile application risk analysis
US10176321B2 (en) 2015-09-22 2019-01-08 Fireeye, Inc. Leveraging behavior-based rules for malware family classification
US10033747B1 (en) 2015-09-29 2018-07-24 Fireeye, Inc. System and method for detecting interpreter-based exploit attacks
US9825976B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Detection and classification of exploit kits
US10817606B1 (en) 2015-09-30 2020-10-27 Fireeye, Inc. Detecting delayed activation malware using a run-time monitoring agent and time-dilation logic
US10706149B1 (en) 2015-09-30 2020-07-07 Fireeye, Inc. Detecting delayed activation malware using a primary controller and plural time controllers
US10601865B1 (en) 2015-09-30 2020-03-24 Fireeye, Inc. Detection of credential spearphishing attacks using email analysis
US10210329B1 (en) 2015-09-30 2019-02-19 Fireeye, Inc. Method to detect application execution hijacking using memory protection
US9825989B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Cyber attack early warning system
US10284575B2 (en) 2015-11-10 2019-05-07 Fireeye, Inc. Launcher for setting analysis environment variations for malware detection
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
CN105468434A (zh) * 2015-12-11 2016-04-06 浪潮(北京)电子信息产业有限公司 一种处理虚拟机异常的方法及装置
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10565378B1 (en) 2015-12-30 2020-02-18 Fireeye, Inc. Exploit of privilege detection framework
US10621338B1 (en) 2015-12-30 2020-04-14 Fireeye, Inc. Method to detect forgery and exploits using last branch recording registers
US10133866B1 (en) 2015-12-30 2018-11-20 Fireeye, Inc. System and method for triggering analysis of an object for malware in response to modification of that object
US10050998B1 (en) 2015-12-30 2018-08-14 Fireeye, Inc. Malicious message analysis system
US10581874B1 (en) 2015-12-31 2020-03-03 Fireeye, Inc. Malware detection system with contextual analysis
US9824216B1 (en) 2015-12-31 2017-11-21 Fireeye, Inc. Susceptible environment detection system
US11552986B1 (en) 2015-12-31 2023-01-10 Fireeye Security Holdings Us Llc Cyber-security framework for application of virtual features
US10671721B1 (en) 2016-03-25 2020-06-02 Fireeye, Inc. Timeout management services
US10476906B1 (en) 2016-03-25 2019-11-12 Fireeye, Inc. System and method for managing formation and modification of a cluster within a malware detection system
US10601863B1 (en) 2016-03-25 2020-03-24 Fireeye, Inc. System and method for managing sensor enrollment
US10785255B1 (en) 2016-03-25 2020-09-22 Fireeye, Inc. Cluster configuration within a scalable malware detection system
US10893059B1 (en) 2016-03-31 2021-01-12 Fireeye, Inc. Verification and enhancement using detection systems located at the network periphery and endpoint devices
US10826933B1 (en) 2016-03-31 2020-11-03 Fireeye, Inc. Technique for verifying exploit/malware at malware detection appliance through correlation with endpoints
US10169585B1 (en) 2016-06-22 2019-01-01 Fireeye, Inc. System and methods for advanced malware detection through placement of transition events
US10462173B1 (en) 2016-06-30 2019-10-29 Fireeye, Inc. Malware detection verification and enhancement by coordinating endpoint and malware detection systems
US10592678B1 (en) 2016-09-09 2020-03-17 Fireeye, Inc. Secure communications between peers using a verified virtual trusted platform module
US10491627B1 (en) 2016-09-29 2019-11-26 Fireeye, Inc. Advanced malware detection using similarity analysis
US10795991B1 (en) 2016-11-08 2020-10-06 Fireeye, Inc. Enterprise search
US10587647B1 (en) 2016-11-22 2020-03-10 Fireeye, Inc. Technique for malware detection capability comparison of network security devices
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
US10552610B1 (en) 2016-12-22 2020-02-04 Fireeye, Inc. Adaptive virtual machine snapshot update framework for malware behavioral analysis
US10581879B1 (en) 2016-12-22 2020-03-03 Fireeye, Inc. Enhanced malware detection for generated objects
US10523609B1 (en) 2016-12-27 2019-12-31 Fireeye, Inc. Multi-vector malware detection and analysis
US10904286B1 (en) 2017-03-24 2021-01-26 Fireeye, Inc. Detection of phishing attacks using similarity analysis
US10798112B2 (en) 2017-03-30 2020-10-06 Fireeye, Inc. Attribute-controlled malware detection
US10848397B1 (en) 2017-03-30 2020-11-24 Fireeye, Inc. System and method for enforcing compliance with subscription requirements for cyber-attack detection service
US10902119B1 (en) 2017-03-30 2021-01-26 Fireeye, Inc. Data extraction system for malware analysis
US10791138B1 (en) 2017-03-30 2020-09-29 Fireeye, Inc. Subscription-based malware detection
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10855700B1 (en) 2017-06-29 2020-12-01 Fireeye, Inc. Post-intrusion detection of cyber-attacks during lateral movement within networks
US10601848B1 (en) 2017-06-29 2020-03-24 Fireeye, Inc. Cyber-security system and method for weak indicator detection and correlation to generate strong indicators
US10893068B1 (en) 2017-06-30 2021-01-12 Fireeye, Inc. Ransomware file modification prevention technique
US10747872B1 (en) 2017-09-27 2020-08-18 Fireeye, Inc. System and method for preventing malware evasion
US10805346B2 (en) 2017-10-01 2020-10-13 Fireeye, Inc. Phishing attack detection
US11108809B2 (en) 2017-10-27 2021-08-31 Fireeye, Inc. System and method for analyzing binary code for malware classification using artificial neural network techniques
US11240275B1 (en) 2017-12-28 2022-02-01 Fireeye Security Holdings Us Llc Platform and method for performing cybersecurity analyses employing an intelligence hub with a modular architecture
US11005860B1 (en) 2017-12-28 2021-05-11 Fireeye, Inc. Method and system for efficient cybersecurity analysis of endpoint events
US11271955B2 (en) 2017-12-28 2022-03-08 Fireeye Security Holdings Us Llc Platform and method for retroactive reclassification employing a cybersecurity-based global data store
US10826931B1 (en) 2018-03-29 2020-11-03 Fireeye, Inc. System and method for predicting and mitigating cybersecurity system misconfigurations
US10956477B1 (en) 2018-03-30 2021-03-23 Fireeye, Inc. System and method for detecting malicious scripts through natural language processing modeling
US11558401B1 (en) 2018-03-30 2023-01-17 Fireeye Security Holdings Us Llc Multi-vector malware detection data sharing system for improved detection
US11003773B1 (en) 2018-03-30 2021-05-11 Fireeye, Inc. System and method for automatically generating malware detection rule recommendations
US11075930B1 (en) 2018-06-27 2021-07-27 Fireeye, Inc. System and method for detecting repetitive cybersecurity attacks constituting an email campaign
US11314859B1 (en) 2018-06-27 2022-04-26 FireEye Security Holdings, Inc. Cyber-security system and method for detecting escalation of privileges within an access token
US11228491B1 (en) 2018-06-28 2022-01-18 Fireeye Security Holdings Us Llc System and method for distributed cluster configuration monitoring and management
US11316900B1 (en) 2018-06-29 2022-04-26 FireEye Security Holdings Inc. System and method for automatically prioritizing rules for cyber-threat detection and mitigation
US11182473B1 (en) 2018-09-13 2021-11-23 Fireeye Security Holdings Us Llc System and method for mitigating cyberattacks against processor operability by a guest process
US11763004B1 (en) 2018-09-27 2023-09-19 Fireeye Security Holdings Us Llc System and method for bootkit detection
US11368475B1 (en) 2018-12-21 2022-06-21 Fireeye Security Holdings Us Llc System and method for scanning remote services to locate stored objects with malware
US11258806B1 (en) 2019-06-24 2022-02-22 Mandiant, Inc. System and method for automatically associating cybersecurity intelligence to cyberthreat actors
US11556640B1 (en) 2019-06-27 2023-01-17 Mandiant, Inc. Systems and methods for automated cybersecurity analysis of extracted binary string sets
US11392700B1 (en) 2019-06-28 2022-07-19 Fireeye Security Holdings Us Llc System and method for supporting cross-platform data verification
US11113094B1 (en) * 2019-08-28 2021-09-07 Parallels International Gmbh Physical memory management for virtual machines
US11886585B1 (en) 2019-09-27 2024-01-30 Musarubra Us Llc System and method for identifying and mitigating cyberattacks through malicious position-independent code execution
US11637862B1 (en) 2019-09-30 2023-04-25 Mandiant, Inc. System and method for surfacing cyber-security threats with a self-learning recommendation engine
CN111274086B (zh) * 2020-01-15 2023-06-13 湖北工程学院 一种计算机软件故障监测系统

Family Cites Families (148)

* 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 データ処理装置
DE69534757T2 (de) * 1994-09-15 2006-08-31 International Business Machines Corp. System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
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
US6237061B1 (en) * 1999-01-05 2001-05-22 Netlogic Microsystems, Inc. Method for longest prefix matching in a content addressable memory
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
US20030126453A1 (en) * 2001-12-31 2003-07-03 Glew Andrew F. Processor supporting execution of an authenticated code instruction
US7308576B2 (en) * 2001-12-31 2007-12-11 Intel Corporation Authenticated code module
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

Also Published As

Publication number Publication date
EP1520230A2 (en) 2005-04-06
US7124327B2 (en) 2006-10-17
WO2004003749A2 (en) 2004-01-08
AU2003251509A1 (en) 2004-01-19
KR100681975B1 (ko) 2007-02-15
US20040003323A1 (en) 2004-01-01
TWI232372B (en) 2005-05-11
TW200408935A (en) 2004-06-01
CN1679001A (zh) 2005-10-05
CN100468351C (zh) 2009-03-11
WO2004003749A3 (en) 2005-02-03

Similar Documents

Publication Publication Date Title
KR100681975B1 (ko) 가상머신 구조에서 게스트 소프트웨어의 동작 동안발생하는 폴트 제어
KR100708356B1 (ko) 가상 기기 아키텍처에서의 게스트 소프트웨어의 연산과연관된 장애의 취급
US10901772B2 (en) Virtualization exceptions
US10073986B2 (en) Regulating access to and protecting portions of applications of virtual machines
TWI464575B (zh) 對應用程式進行透明式檢測的方法及系統,和計算系統
KR100667146B1 (ko) 가상 머신 아키텍처 내에서의 제어 레지스터 액세스가상화 성능 개선
US7418584B1 (en) Executing system management mode code as virtual machine guest
EP1939754B1 (en) Providing protected access to critical memory regions
KR101253394B1 (ko) 컴퓨팅 환경의 다중 페이징가능 게스트에 의한 스토리지 사용의 관리
US7506121B2 (en) Method and apparatus for a guest to access a memory mapped device
US20060036830A1 (en) Method for monitoring access to virtual memory pages
US10621340B2 (en) Hybrid hypervisor-assisted security model
US10664304B2 (en) Application memory protection using an extended page table switching virtual machine function
US11216280B2 (en) Exception interception
WO2013074071A1 (en) Regulating access to and protecting portions of applications of virtual machines

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

Payment date: 20130208

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140203

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160127

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170201

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 14