KR20150105990A - 계층형 가상 머신 무결성 모니터링 - Google Patents
계층형 가상 머신 무결성 모니터링 Download PDFInfo
- Publication number
- KR20150105990A KR20150105990A KR1020157021737A KR20157021737A KR20150105990A KR 20150105990 A KR20150105990 A KR 20150105990A KR 1020157021737 A KR1020157021737 A KR 1020157021737A KR 20157021737 A KR20157021737 A KR 20157021737A KR 20150105990 A KR20150105990 A KR 20150105990A
- Authority
- KR
- South Korea
- Prior art keywords
- vmm
- processor element
- monitor
- server
- timer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3058—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/301—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
일반적으로 다양한 실시예는 계층형 가상 머신(VM) 모니터링 소프트웨어 컴포넌트의 상태를 모니터링하기 위해 컴퓨팅 디바이스의 다양한 하드웨어 및 소프트웨어 컴포넌트의 제공 및 사용에 관한 것이다. 장치는 제 1 프로세서 엘리먼트와 제 1 타이머가 제 1 기간의 마지막에 도달하였음을 나타내는 표시를 수신하고, 제 2 프로세서 엘리먼트에 의한 가상 머신 모니터(VMM) 감시자의 실행을 모니터링하고, 제 2 타이머가 제 2 기간의 마지막에 도달하기 전에 VMM의 무결성을 검증하기 위해 제 2 프로세서 엘리먼트가 상기 VMM 감시자의 실행을 완료했는지를 판단하고, 판단의 표시를 컴퓨팅 디바이스에 전달하는 로직을 포함한다. 다른 실시예가 기재되고 청구된다.
Description
본 명세서에 기재된 실시예는 복수의 하드웨어 및 소프트웨어 컴포넌트를 사용하여 가상 머신의 무결성에 대한 계층형 모니터링을 제공하는 것에 관련되어 있다.
서버 기반의 컴퓨팅 서비스(예를 들어, 이른바 클라우드 컴퓨팅)의 사용이 보편화 됨에 따라, 이들 서비스를 제공하는 서버의 보안이 더욱 중요하게 되었다. 또한, 이러한 서버에 의해 제공되는 서비스의 형태가 점점 다양화되었다. 그 결과, 타인에게 제공되는 이러한 서비스 및 이들 서비스를 제공하는 서버에 허가되지 않는 접속을 하려는 시도(예를 들어, 이른바 해킹 또는 사이버 공격)의 횟수가 증가하였고, 그 성격도 변하였다.
이러한 서버의 보안을 해킹하려는 초기 노력은 주로 특정 형태 또는 범위의 서비스를 제공하기 위해 서버가 사용하는 특정의 애플리케이션 소프트웨어를 해킹하는 것에 맞추어져 있었다. 예를 들어, 이러한 초기 노력은 서버의 프로세서에 의해 실행되어 특정 형태의 서비스를 제공하는 데이터베이스 관리 애플리케이션, 검색 엔진 애플리케이션, 데이터 검색 애플리케이션, 회계 또는 재정 거래 애플리케이션을 해킹하는 것에 집중되어 있었다. 목적은 주로 접속을 담당하는 애플리케이션의 보안을 해킹함으로써 민감한 데이터에 접속하는 것이었다.
그러나, 서버의 보안을 해킹하는 최근의 시도는 서버 자체의 더욱 기본적인 기능을 제공하는데 사용되는 운영 시스템 또는 다른 핵심 소프트웨어을 해킹하는 것에 초점을 맞추고 있다. 이러한 핵심 소프트웨어 중 최근 더욱 흔히 타겟이 되는 것이 이러한 서버의 서비스를 이용하는 고객이 그 위에서 다양한 다른 애플리케이션 소프트웨어 또는 애플리케이션 소프트웨어의 조합을 실행할 수 있는 별도의 가상 머신을 다른 계정으로 생성 및 관리하는 가상 머신 모니터(VMM, virtual machine monitor)이다.
이러한 보안 위협의 변화에 대응하여, 해킹되고 있음 및/또는 다른 문제가 있음을 표시하기 위해 서버상에서 각각의 가상 머신의 동작을 지속적으로 감시하는 다양한 VMM 소프트웨어가 개발되었다. 그러나, 가상 머신을 해제하려는 노력은 점점 복잡해지고 있고, 지금은 VMM 소프트웨어 자체를 해킹하려는 시도가 있다. 본 명세서에서 설명하는 실시예는 이러한 및 다른 고려 사항의 관점에서 요구된다.
다양한 실시예는 일반적으로 계층형 가상 머신 모니터링(VMM) 소프트웨어 컴포넌트의 상태를 모니터링하는 컴퓨팅 디바이스의 다양한 하드웨어 및 소프트웨어 컴포넌트의 제공 및 사용에 관한 것이다. 보다 구체적으로, 액세스가 제한된 하드웨어 기반의 타이머, 독립적인 프로세서 엘리먼트와 스토리지를 포함하는 컨트롤러, 및 관리 디바이스와의 보조 통신 채널의 조합은 협력하여 VMM 소프트웨어를 모니터링하는 복수의 가상 머신 세션을 모니터링하는 감시자 소프트웨어를 모니터링한다.
서버의 적어도 하나의 프로세서 엘리먼트 및 스토리지로 구성된 서버의 메인 운영 환경에서, VMM 컴포넌트는 복수의 가상 머신의 동작을 모니터링 및 제어하고, 각각의 가상 머신 내의 프로세서 엘리먼트는 애플리케이션 소프트웨어의 하나 이상의 부분을 수행하게 된다. VMM 컴포넌트는 하나의 가상 머신이 다른 가상 머신으로 액세스하는 것을 제한한다. VMM은 가상 머신 간의 허가되지 않은 액세스가 시도되는 것에 응답하여 해당 허가되지 않은 액세스가 시도된 가상 머신을 불능으로 하거나 제거할 수 있다.
메인 운영 환경의 스토리지의 하드웨어로 보호된 영역 내에서 VMM 감시자는 VMM 컴포넌트에 대한 정기적인 상태 체크를 수행하여 VMM 컴포넌트가 정상적으로 동작하고 있는지와 무결성이 해킹되지 않았는지를 확인한다. 정기적인 상태 체크는 시간의 간격이 상태 체크를 개시하는 각 경우에 따라 임의로 변할 수 있는 랜덤 하드웨어 타이머에 의해 트리거된다. VMM 감시자는 VMM 컴포넌트의 상태 체크 결과의 표시를 서버와 분리되어 있고 별개인 관리 디바이스에 전달한다.
메인 운영 환경과 분리되어 있고 별개인 컨트롤러 환경에서, 컨트롤러 스토리지에 저장되어 있고 컨트롤러 프로세서 엘리먼트에 의해 실행되는 감시자 검증기가 VMM 감시자를 체크하여 VMM 감시자가 정상적으로 동작하고 있는지와 무결성이 해킹되지 않았는지를 확인한다. 이러한 VMM 감시자 체크는 감시자 검증기가 VMM 감시자에 의해 수행되는 VMM의 상태 체크의 진행을 모니터링하는 것을 수반한다. 감시자 검증기는 VMM 감시자의 이러한 체크 결과의 표시를 VMM 감시자가 행하는 전달과 별개로 하여 관리 디바이스로 보낸다.
관리 디바이스는 VMM 및 VMM 감시자의 상태에 대한 이러한 별도의 표시를 수신하고 이 표시를 이용하여 서버의 전체적인 현재 상태를 판단한다. 관리 디바이스는 서버의 상태에 대한 하나 이상의 특정한 판단에 대해, 서버의 재시작 및/또는 관리자에게 경고 표시를 제공하는 것과 같은 다른 서버의 관리 동작을 취하도록 하는 명령을 컨트롤러 프로세서에 전달하여 응답할 수 있다. 대부분의 설명이 단일 서버로 집중되어 있지만, 본 명세서에서 개시되는 기술은 복수의 서버에 적용될 수 있으며 관리 디바이스는 그러한 상태 정보를 복수의 서버로부터 수신할 수 있다고 생각된다.
도 1은 컴퓨팅 디바이스 사이에서의 상호 작용에 관한 제 1 실시예를 도시한다.
도 2 내지 4는 도 1의 실시예의 일부를 도시한다.
도 5는 도 3의 변형을 도시한다.
도 6은 제 1 로직의 흐름의 실시예를 도시한다.
도 7은 제 2 로직의 흐름의 실시예를 도시한다.
도 8은 제 3 로직의 흐름의 실시예를 도시한다.
도 9는 프로세싱 아키텍처의 실시예를 도시한다.
도 2 내지 4는 도 1의 실시예의 일부를 도시한다.
도 5는 도 3의 변형을 도시한다.
도 6은 제 1 로직의 흐름의 실시예를 도시한다.
도 7은 제 2 로직의 흐름의 실시예를 도시한다.
도 8은 제 3 로직의 흐름의 실시예를 도시한다.
도 9는 프로세싱 아키텍처의 실시예를 도시한다.
본 명세서에서 사용되는 표기 및 명명법을 일반적으로 참조하여, 후술하는 상세한 설명의 일부는 컴퓨터 또는 네트워크 컴퓨터에서 수행되는 프로그램 프로시져로 제시될 수 있다. 이러한 절차적인 설명 및 표현은 당업자가 다른 당업자에게 그들의 업무의 본질을 가장 효과적으로 전달하기 위해 사용된다. 여기서 프로시져는 일반적으로 원하는 결과에 이르는 일관적인 동작의 연속으로서 이해된다. 이러한 동작은 물리적 양의 물리적 조작을 필요로 하는 것이다. 항상 그러한 것은 아니지만, 일반적으로 이들 양은 저장, 전달, 결합, 비교 및 조작될 수 있는 전기적, 자기적 또는 광학적 신호의 형태를 갖는다. 주로 통상적으로 사용되고 있다는 이유로, 이들 신호는 비트, 값, 엘리먼트, 심볼, 캐릭터, 용어, 숫자 등으로 부르는 것이 편리하다. 그러나, 이들 모두 및 유사한 용어가 적절한 물리적 양과 관련될 수 있고 이들 양에 적용되는 단지 편리한 레이블임에 유의해야 한다.
또한, 이러한 조작은 추가 및 비교와 같은 용어로 불릴 수 있는데, 이것은 일반적으로 인간 조작자가 수행하는 정신적 동작과 관련된다. 그러나, 본 명세서에 설명된 하나 이상의 실시예의 일부를 구성하는 동작에 있어서 대부분의 경우, 그러한 인간 조작자의 능력은 필요하지 않거나 바람직하지 않다. 대신 이러한 동작은 머신의 동작이다. 다양한 실시예의 동작을 수행하는 유용한 머신은 본 명세서의 교시 내용에 따라 작성되고 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 구성되는 범용 디지털 컴퓨터 및/또는 필요한 목적에 맞게 특별히 구성된 장치를 포함한다. 다양한 실시예는 이러한 동작을 수행하는 장치 또는 시스템과 또한 관련된다. 이들 장치는 필요한 목적에 맞게 특별히 구성될 수 있거나, 범용 컴퓨터를 포함할 수 있다. 다양한 이들 머신에 필요한 구조는 제공되는 설명으로부터 드러날 것이다.
도면을 참조하면, 해당 도면에서 동일한 참조 번호는 전체적으로 동일한 엘리먼트를 나타내는데 사용된다. 이하의 설명에서, 설명을 목적으로, 다양한 특정 세부 사항이 이들의 완전한 이해를 위해 설명된다. 그러나, 새로운 실시예는 이러한 특정 세부 사항이 없이도 실시될 수 있음은 분명할 것이다. 다른 예에서, 공지의 구조 및 장치는 설명을 용이하게 하기 위해 블록도의 형태로 표시된다. 청구항은 모든 변경, 균등 및 대안을 그 범위 내에 포함하는 것을 의도한다.
도 1은 서버 기반의 컴퓨팅 디바이스를 사용하고자 하는 조작자의 하나 이상의 상호 작용 디바이스(100a-c)와, 이러한 서비스를 제공하는 서버(300)와, 서버(300)의 동작을 감독하는 관리 디바이스(600)를 포함하는 컴퓨팅 서비스 시스템(1000)의 컴퓨팅 디바이스의 상호 작용의 블록도를 도시한다. 이들 컴퓨팅 디바이스(100a-c, 300 및 600)의 각각은, 데스크톱 컴퓨터 시스템, 데이터 입력 터미널, 랩톱 컴퓨터, 넷북 컴퓨터, 울트라북 컴퓨터, 태블릿 컴퓨터, 휴대용 PDA, 스마트폰, 디지털 카메라, 모바일 디바이스, 옷과 결합된 신체 장착 컴퓨팅 디바이스, 차량에 결합된 컴퓨팅 디바이스, 서버, 서버의 클러스터, 서버 팜 등을 포함할 수 있지만 이에 제한되지 않는 다양한 형태의 컴퓨팅 디바이스 중 임의의 것일 수 있다.
도시된 바와 같이, 이들 컴퓨팅 디바이스(100a-c, 300, 600)는 시스템(1000)의 네트워크(999)를 통해 서버 기반의 서비스를 제공하는 상태의 표시를 나타내는 데이터를 전달하는 신호를 교환한다. 그러나, 이들 컴퓨팅 디바이스의 하나 이상은 그러한 서비스를 제공하는 것과 전혀 관련이 없는 다른 데이터를 교환할 수 있다. 다양한 실시예에서, 네트워크(999)는 단일 빌딩 또는 다른 상대적으로 제한된 영역 내에서만 연장되도록 제한될 수 있는 단일 네트워크일 수 있고/있거나 인터넷을 포함할 수 있다. 따라서, 네트워크(999)는 전기적으로 및/또는 광학적으로 전달 케이블을 사용하는 유선 기술 및 적외선, 무선 주파수 또는 무선 전송의 다른 형태를 사용하는 무선 기술을 포함하나 이에 제한되지 않는, 신호가 교환될 수 있는 통신 기술의 다양한 것(또는 조합) 중 임의의 것에 기반할 수 있다.
세 개의 상호 작용 디바이스(100a-c)의 개수가 특정한 것으로 도시되었지만, 서버(300)가 제공하는 서비스를 사용하고자 하는 임의의 수의 조작자는 다양한 수의 상호 작용 디바이스를 사용할 수 있음에 유의해야 한다. 따라서, 세 개의 상호 작용 디바이스로 특정하여 도시하는 것은, 이들의 정확한 개수가 무엇이든, 특정 시간에 복수의 상호 작용 디바이스에 서비스를 제공하기 위해 서버(300)가 사용될 수 있음을 전달하기 위해 사용된 하나의 예에 불과하다. 또한, 상호 작용 디바이스(100a-c), 서버(300) 및 관리 디바이스(600) 간에 단일 네트워크(999)가 공유되는 것으로 도시되었으나, 관리 디바이스(600)가 서버(300)를 상호 작용 디바이스(100a-c)와 같은 상호 작용 디바이스에 연결하기 위해 사용된 네트워크와는 전혀 분리된 네트워크(또는 다른 연결 형태)를 통해 서버(300) 및/또는 다른 서버에 연결되는 다른 실시예도 가능한 것임을 이해해야 한다.
다양한 실시예에서, 서버(300)는 (서버(300)의 메인 프로세서로서 동작하는) 프로세서 엘리먼트(350), 스토리지(360), 랜덤 타이머(312), 타이머(313), 인터럽트 컨트롤러(315), 컨트롤러(400) 및 서버(300)를 네트워크(999)에 연결하는 인터페이스(390) 중 하나 이상을 포함한다. 프로세서 엘리먼트(350)는 스토리지(360) 내에 보호 영역(367)을 정의하여 그 내부에 저장되고 그 내부의 프로세서 엘리먼트에 의해 실행되는 명령의 무결성을 위한 하드웨어 기반의 보호를 제공한다. 스토리지(360)는 보호 영역(367) 내에 컨트롤 루틴(370), 키(337) 및 상태 데이터(339)를 저장한다. 그러나, 복수의 가상 머신(VM, virtual machine) 세션(331x-z) 및 컨트롤 루틴(340)은 보호 영역(367)의 외부의 스토리지(360) 내에 저장된다. 컨트롤러(400)는 (서버(300)의 컨트롤러(400)의 컨트롤러 프로세서로서 동작하는) 프로세서 엘리먼트(450), 스토리지(460) 및 하나 이상의 헬스 감지기(417)를 포함한다. 스토리지(460)는 컨트롤 루틴(440) 및 상태 데이터(439)를 포함한다.
VM 세션(331x-z)이 3개로 특정되어 도시되었지만, 루틴(340)은 다양한 수의 VM 세션을 예시 및 관리할 수 있으며, VM 세션의 수는 잠재적으로 프로세서 엘리먼트(350) 및 스토리지(360)의 능력에 의해서만 제한됨을 유의해야 한다. 따라서, 이와 같이 VM 세션을 세 개로 특정하여 도시한 것은 많은 VM 세션이 서버(300) 내에서 특정 시간에 예시 및 관리될 수 있음을 전달하기 위한 예에 불과하다. 또한, 세 개로 도시된 상호 작용 디바이스(100a-c)와 세 개로 도시된 VM 세션(331x-z) 간에는 어떠한 특정의 관련성도 없음에 유의해야 한다. 또한, 특정 시간에 주어진 VM 세션의 사용의 본질 및 정도에 따라 특정 시간에 서버(300)에 연결된 복수의 상호 작용 디바이스와 관련되거나 어떤 상호 작용 디바이스와도 관련되지 않을 수 있다. VM 세션(331x-z) 각각은 다양한 애플리케이션 소프트웨어 또는 애플리케이션 소프트웨어의 조합의 실행에 이용될 수 있다.
인터럽트 컨트롤러(315)는, 당업자가 용이하게 인식하는 것과 같이, 다른 스퀀스를 실행하도록 하기 위해 프로세서 엘리먼트(350)가 일시적으로 명령의 하나의 시퀀스의 실행을 중지시키는 프로세서 엘리먼트(350)에 제공되는 하드웨어 및/또는 소프트웨어 인터럽트에 대한 집중 선택 포인트 및 룩업 기능을 제공한다. 랜덤 타이머(312)는 랜덤하게 선택된 기간의 마지막에 도달하면 인터럽트를 발행(및/또는 다소 다른 메커니즘을 통해 프로세서 엘리먼트(350)에 시그널링)한다. 달리 말하면, 선택된 기간은 랜덤 타이머(312)가 사용될 때마다 변한다. 이와 달리, 타이머(313)는 구체적으로 선택된 기간의 마지막에 도달하면 인터럽트를 발행(및/또는 다소 다른 메커니즘을 통해 프로세서 엘리먼트(350)에 시그널링)한다. 자세히 후술되지만, 랜덤 타이머(312)와 타이머(313)는 하나가 기간의 마지막에 도달하는 것이 다른 타이머의 기간의 시작에 대한 트리거로서 작용할 수 있는 방식으로 협력될 수 있다. 서버(300)가 (예를 들어, 전원이 공급되거나 리셋됨에 따라) 초기화되면, 특정의 선택된 기간이 타이머(313)에 제공되고/제공되거나 이들 두 개의 타이머에게 이들이 협력하여 하나가 다른 하나를 트리거한다는 방식의 표시가 제공될 수 있다. 일부 실시예에서, 서버(300)가 초기화되면 기간을 랜덤하게 선택하기 위한 파라미터가 랜덤 타이머(312)에 제공되어 랜덤 타이머(312)가 각각의 타이머가 시작되는 시간을 카운트하는 시간의 새로운 랜덤 주기를 자동적으로 도출할 수 있도록 한다. 다른 실시예에서, 컨트롤 루틴(370, 보호 영역(367) 내)은 랜덤 타이머(312)가 개시되는 각 시간을 카운트하는 시간의 새로운 랜덤 주기를 도출할 수 있다. 이와 달리 또는 이에 더하여, 컨트롤 루틴(370)은 랜덤 타이머(312)에게 랜덤 타이머(312)에 의한 카운팅의 종료가 다른 이벤트와 일치하도록 하는 선택된 기간을 제공하여 적어도 가끔 랜덤 타이머(312)에 의해 카운트된 기간이 실제로는 랜덤이 아닐 수 있도록 한다. 컨트롤러(400, 및/또는 다른 메커니즘)에 의해 수행될 수 있는 랜덤 타이머(312) 및 타이머(313)의 하나 또는 모두의 이러한 구성은 서버(300)의 초기화 이후 단 한 번만 일어날 수 있고, 이러한 구성은 그 이후 서버(300)의 다른 초기화가 일어나기 전까지 변경될 수 없다.
헬스 감지기(417)는 하나 이상의 컴포넌트로 구성되고 이들에 의해 서버(300)의 동작 상태의 다양한 측면이 모니터링될 수 있다. 보다 구체적으로, 헬스 감지기(417)는 서버(300)의 다양한 컴포넌트의 온도를 모니터링하는 하나 이상의 열 센서, 서버(300)의 하나 이상의 컴포넌트가 전력을 공급받는 전압을 모니터링하는 전압 레벨 센서, 버스 활동 모니터, 클록 신호 모니터, 프로세서 스레드 실행 모니터 등을 포함할 수 있다.
보호 영역(367)은 비교적 엄격한 액세스 제한에 따라 프로세서 엘리먼트(350)에 의해 정의된 어드레스의 하나 이상의 범위로 이루어질 수 있다. 이러한 제한은 보호 영역(367) 내에 저장되고 스토리지(360)에 걸쳐 다른 어드레스에 있는 데이터 및/또는 실행 가능한 명령에 비교적 자유롭게 액세스하는 능력이 부여된 실행 가능한 명령을 포함할 수 있으나, 보호 영역(367) 외부로부터의 다른 실행 가능 명령에 의한 액세스는 엄격히 제한될 수 있거나 전혀 허용되지 않을 수 있다. 이와 달리 또는 이에 부가하여, 보호 영역(367) 내에 저장된 실행 가능 명령은 다양한 어드레스 위치에서 서버(300)의 컴포넌트를 비교적 다양하게 선택하여 액세스할 수 있는 능력이 부여될 수 있으나, 보호 영역(367) 외부로부터의 다른 실행 가능 명령에 의한 액세스는 컴포넌트의 선택에 있어서 비교적 제한될 수 있다. 서버(300)를 초기화하면 (예를 들어, 전원이 공급되거나 리셋된 후) 프로세서 엘리먼트(350)는 보호 영역(367)이 차지하는 스토리지(360) 내의 어드레스 위치 및/또는 보호 영역(367)의 내부 및 외부에서 모두 실행 가능한 명령의 상대적 액세스 특권을 정의하도록 구성될 수 있다. 이러한 구성은 컨트롤러(400)에 의해 수행될 수 있고, 및/또는 그 이후 서버(300)의 다른 초기화가 일어나기 전까지 (프로세서 엘리먼트(350) 및/또는 다른 하드웨어에 의해) 변경할 수 없는 구성으로서, 단 한 번만 발생하는 것이 허용된다. 이러한 방식으로, 보호 영역(367)은 악성 소프트웨어에 의해 몰래 해킹되지 않을 수 있다.
컨트롤 루틴(340)은, 다양한 기능을 수행하는 로직을 구현하는 서버(300)의 메인 프로세서 엘리먼트로서의 자신의 역할에 있어서, 프로세서 엘리먼트(350) 상에서 동작하는 일련의 명령을 포함한다. 컨트롤 루틴(340)의 일련의 명령을 수행함에 있어서, 프로세서 엘리먼트(350)는 각각의 VM 세션(331x-z)을 개시, 유지 및 모니터링한다. 실제로, 컨트롤 루틴(340)은 VM 모니터(VMM)의 로직을 구현한다. 각각의 VM 세션(331x-z) 내에서, 애플리케이션 소프트웨어 또는 애플리케이션 소프트웨어의 조합은 VM 세션(331x-z) 중 다른 것과 연관되는 상호 작용 디바이스(100a-c) 중 다른 것에 서버 기반의 컴퓨팅 서비스를 제공하는 일부로서, 프로세서 엘리먼트(350)에 의해 실행된다. 컨트롤 루틴(340)은 프로세서 엘리먼트(350)가 VM 세션(331x-z) 각각의 사이에 독립성을 유지하도록 하여, 컨트롤 루틴(340)은 프로세서 엘리먼트(350)로 하여금 이들 VM 세션 중 하나의 프로세서 엘리먼트(350)에 의해 수행되는 애플리케이션 소프트웨어가 이들 VM 세션 중 다른 것의 데이터 또는 애플리케이션 소프트웨어에 액세스하도록 하는 것을 허용하지 않는다. 이들 VM 세션 중 하나에서 프로세서 엘리먼트(350)가 그러한 허용되지 않는 액세스를 하도록 하는 실행 가능 명령의 시도를 감지하면, 컨트롤 루틴(340)은 프로세서 엘리먼트(350)로 하여금 허용되지 않는 액세스가 시도되었던 VM 세션을 불능으로 하고, 그 VM을 제거하고, 및/또는 다른 다양한 동작을 취하도록 한다. 따라서, 컨트롤 루틴(340)은 VM 세션 사이에서 독립성을 제공함으로써 프로세서 엘리먼트(350)는 보안성을 제공한다.
컨트롤 루틴(370)은 또한 프로세서 엘리먼트(350) 상에서 동작하고 다양한 기능을 수행하는 로직을 구현하는 일련의 명령을 포함한다. 랜덤 타이머(312)가 랜덤하게 선택된 기간의 마지막까지 카운팅하는 것을 완료(예를 들어, 카운트 다운)하면, 이후 컨트롤 루틴(340)의 동작을 일시적으로 중지시키고, 컨트롤 루틴(370)의 실행을 개시하도록 프로세서 엘리먼트(350)에게 시그널링함으로써, 프로세서 엘리먼트(350)에 의해 컨트롤 루틴(370)이 실행된다. 컨트롤 루틴(370)의 일련의 명령을 실행함에 있어서, 인터럽트 컨트롤러(315)를 통해 프로세서 엘리먼트(350)에게 전달될 수 있는 적어도 임의의 형태의 인터럽트에 의해 컨트롤 루틴(370)의 실행이 멈추는 것을 배제하기 위해 프로세서 엘리먼트(350)로 하여금 인터럽트 컨트롤러(315)를 (적어도 부분적으로) 일시적으로 불능으로 만든다. 이후 프로세서 엘리먼트(350)는 다양한 가능한 방법으로 컨트롤 루틴(340)의 적어도 일부의 무결성을 검사한다. 실제로, 컨트롤 루틴(370)은 VMM 감시자의 로직을 구현한다. 하나의 가능한 실시예에서, 컨트롤 루틴(340)의 적어도 일부가 디지털 방식으로 서명될 수 있고, 컨트롤 루틴(370)은 프로세서 엘리먼트(350)로 하여금 매칭하는 암호 키, 즉, 키(337)를 이용하여 그 디지털 서명을 암호적으로 검증하도록 할 수 있다. 따라서, 컨트롤 루틴(370)은 프로세서 엘리먼트(350)가 컨트롤 루틴(340)의 무결성을 테스트하게 함으로써 또 다른 보안을 제공하여 컨트롤 루틴(340)이 해킹(예를 들어, 악성 소프트웨어에 의해 변경, 부가 또는 대체)되지 않았음을 확인한다.
프로세서 엘리먼트(350)가 컨트롤 루틴(340)의 적어도 일부의 무결성을 검증할 수 있는 것과는 무관하게, 컨트롤 루틴(370)은 프로세서 엘리먼트(350)로 하여금 상태 데이터(339) 내의 검사 결과를 표시하도록 하고, 상태 데이터(339)가 네트워크(999)를 통해 관리 디바이스(600)에 전달되도록 한다. 일부 실시예에서, 컨트롤 루틴(370)의 실행이 방해받지 않도록 인터럽트 컨트롤러(315)를 불능으로 만들면, 인터럽트에 대한 응답이 너무 오랫동안 차단되는 것을 방지하기 위해 인터럽트 컨트롤러(315)를 비교적 빠르게 재가동시킬 수 있을 정도로 충분히 빠르게 실행가능하도록 하기 위해 컨트롤 루틴(370)을 비교적 작은 크기로 해야 한다. 따라서, 이러한 실시예에서, 컨트롤 루틴(370)은 직접 프로세서 엘리먼트(350)가 인터페이스(390)를 동작시켜 상태 데이터(339)를 관리 디바이스(600)로 전달하도록 하는데 필요한 명령을 포함하지 않을 수 있다. 따라서, 이러한 실시예에서, 컨트롤 루틴(370)은 컨트롤 루틴(370)의 실행이 끝나고 컨트롤 루틴(340)의 실행이 재개되면 프로세서 엘리먼트(350)로 하여금 상태 데이터(339)의 이러한 전달을 수행하도록 할 수 있다.
적어도 컨트롤 루틴(340)의 무결성의 검사를 완료하면, 컨트롤 루틴(370)은 프로세서 엘리먼트(350)가 인터럽트 컨트롤러(315)를 재가동하고, 컨트롤 루틴(370)의 실행을 중지하며, 컨트롤 루틴(340)의 실행을 재개하도록 한다. 또한, 방금 설명한 바와 같이, 프로세서 엘리먼트(350)는 컨트롤 루틴(340)에 포함되어 인터페이스(390)가 그렇게 동작하도록 하는 명령을 이용하여 상태 데이터(339)를 관리 디바이스(600)에 전달할 수 있다. 그러나, 컨트롤 루틴(340)이 이미 해킹되었거나, 이와 달리 정상적으로 동작하지 않는다면, 컨트롤 루틴(340)이 프로세서 엘리먼트(350)로 하여금 상태 데이터(339)를 관리 디바이스(600)에 전달하도록 했다고 해도 상태 데이터(339)가 전달되지 않고, 따라서 관리 디바이스(600)는 이것을 수신하지 않을 수 있다는 점에 유의해야 한다.
컨트롤 루틴(440)은, 다양한 기능을 수행하는 로직을 구현하는 컨트롤러(400)의 컨트롤러 프로세서로서의 역할에 있어서, 프로세서 엘리먼트(450) 상에서 동작하는 일련의 명령을 포함한다. 랜덤 타이머(312)가 랜덤하게 선택된 기간의 마지막까지 카운팅하는 것을 완료(예를 들어, 카운트 다운)하면, 프로세서 엘리먼트(450)에 의한 컨트롤러 루틴(440)이 실행된다. 따라서, 랜덤 타이머(312)가 카운팅을 완료하는 것은 인터럽트 컨트롤러(315)를 통해 및/또는 다른 메커니즘에 의해 컨트롤 루틴(370, 440) 모두의 실행의 개시를 트리거하는 트리거 이벤트로서 취급된다. 랜덤 타이머(312)의 카운팅 완료는, 프로세서 엘리먼트(350)가 컨트롤 루틴(370)의 실행을 완료할 것으로 기대되는 비교적 짧은 기간을 나타내는 선택된 비교적 짧은 기간의 마지막까지 카운팅하는 타이머(313)의 카운팅 개시를 트리거한다. 타이머(313)는 수십 또는 수백 밀리 세컨드와 같이 1초보다 훨씬 짧은 시간의 기간으로 설정되는 것으로 생각된다. 반대로, 랜덤 타이머(312)는 수 분에서부터 수 일까지의 기간 중에서 기간을 랜덤하게 선택하도록 하는 파라미터로 설정되거나, 수 분에서 수일까지의 기간 중에서 랜덤하게 선택된 기간이 제공되는 것으로 생각된다. 랜덤 타이머(312)의 카운팅이 완료되면 프로세서 엘리먼트(450)는 컨트롤 루틴(440)의 실행을 개시하도록 하는 신호를 수신한다. 컨트롤 루틴(440)의 일련의 명령을 실행함에 있어서, 프로세서 엘리먼트(450)는, 타이머(313)가 선택된 기간의 마지막까지의 카운팅을 완료하기 전에 프로세서 엘리먼트(350)가 컨트롤 루틴(370)의 실행을 완료하였는지를 판단한다. 실제로, 컨트롤 루틴(440)은 기능을 검증하는 VMM 감시자를 구현한다.
타이머(313)가 카운팅을 완료하기 전에 프로세서 엘리먼트(350)가 컨트롤 루틴(370)의 실행을 완료하면, 프로세서 엘리먼트(350) 상의 컨트롤 루틴(370)의 VMM 감시자 기능의 동작이 (일부 실시예에서) 올바르게 작동하는 것으로 추정할 수 있다. 그 결과, 프로세서 엘리먼트(350)가 관리 디바이스(600)로 전송하는 상태 데이터(339) 내의 결과의 표시가 무엇이든 간에 이는 컨트롤 루틴(340)의 무결성의 정확한 평가라고 추정할 수 있다. 그러나, 프로세서 엘리먼트(350)가 컨트롤루틴(370)의 실행을 완료하기 전에 타이머(313)가 카운팅을 완료하면, (하드웨어 또는 소프트웨어) 오작동이 발생하였거나 컨트롤 루틴(370)의 무결성이 해킹되었다고 가정할 수 있다. 일부 실시예에서, 타이머(313)는 카운팅을 완료하자마자 자신을 자동적으로 다시 트리거하도록 설정될 수 있고, 이것은 프로세서 엘리먼트(350)가 컨트롤 루틴(370)을 다시 실행하도록 다시 트리거하는 트리거 이벤트로서 취급될 수 있다. 타이머(313)의 카운팅 완료 전에 컨트롤 루틴(370)의 사전 실행 완료가 실패한 원인에 따라, 타이머(313)가 카운팅을 완료하기까지 그러한 프로세서 엘리먼트(350)를 다시 트리거하여 컨트롤 루틴(370)을 실행함으로써 문제를 해결할 수 있다. 이와 달리, 타이머(313)는 반복적으로 카운팅을 완료하고, 자신을 반복적으로 다시 트리거하여 다시 카운트하도록 할 수 있으며, 이는 프로세서 엘리먼트(450)에 의해 감지되고 관리 디바이스(600)에 보고될 수 있다.
타이머(313)가 카운팅을 완료하기 전에 프로세서 엘리먼트(350)가 컨트롤 루틴(370)을 완료할 수 있는지 없는지에 관계없이, 컨트롤 루틴(440)은 프로세서 엘리먼트(450)로 하여금 프로세서 엘리먼트(350)가 컨트롤 루틴(370)을 완료하려는 시도의 결과를 상태 데이터(439)에 표시하도록 한다. 컨트롤 루틴(440)은 프로세서 엘리먼트(450)가 인터페이스(390)를 동작시켜 상태 데이터(439)를 프로세서 엘리먼트(350)로부터의 도움없이 관리 디바이스(600)로 전달할 수 있도록 하는데 필요한 명령을 포함하고, 컨트롤 루틴(440)은 프로세서 엘리먼트(450)가 그 동작을 행하도록 한다. 그 결과, 랜덤 타이머(312)가 랜덤하게 선택된 기간의 마지막까지 카운팅하는 것을 완료할 때마다, 관리 디바이스(600)가 상태 데이터(339)를 수신하지 못하는 것과 같은 컨트롤 루틴(340) 또는 컨트롤 루틴(370) 중 어느 것의 상태에 관계없이, 관리 디바이스(600)는 여전히 상태 데이터(439)를 수신해야 한다.
프로세서 엘리먼트(450)와 스토리지(460)는 적어도 프로세서 엘리먼트(350)와 스토리지(360)에 의해 정의되는 동작 환경과는 실질적으로 분리된 컨트롤러(400) 내의 동작 환경의 일부를 정의한다. 이러한 분리된 동작 환경으로 인해 컨트롤 루틴(440)은 프로세서 엘리먼트(350)에 의해 실행될 수 있는 다른 신뢰도가 낮은 소프트웨어에 의해 해킹될 위험이 현저히 감소되어 실행될 수 있다. 스토리지(460) 내에서 하나 이상의 상태 데이터(439)의 스토리지는 컨트롤 루틴(440)의 실행의 무결성을 확보하는데 도움을 준다. 따라서, 컨트롤 루틴(340, 370) 모두가 파괴되고 프로세서 엘리먼트(350)가 효과적으로 명령(예를 들어, 머신 체크)을 실행하지 못하는 것과 같은 오작동에도 컨트롤러(400)는 관리 디바이스(600)에 상태 데이터(439)를 제공할 수 있는 기능을 유지할 수 있음은 매우 분명하다.
다양한 실시예에서, 관리 디바이스(600)는 하나 이상의 프로세서 엘리먼트(650), 스토리지(660) 및 관리 디바이스(600)를 네트워크(999)에 연결하는 인터페이스(690)를 포함한다. 스토리지(660)는 컨트롤 루틴(640)과 서버(300)로부터 수신한 상태 데이터(339, 439)의 하나 또는 모두를 저장한다. 컨트롤 루틴(640)은 프로세서 엘리먼트(650) 상에서 동작하여 다양한 기능을 수행하는 로직을 구현하는 일련의 명령을 포함한다. 컨트롤 루틴(640)의 일련의 명령을 실행함에 있어서, 프로세서 엘리먼트(650)는 프로세서 엘리먼트(350, 450)에 의한 컨트롤 루틴(370, 440)의 각각의 실행 결과의 표시를 평가하여 서버(300)의 상태를 판단한다. 예를 들어, 상태 데이터(339)가 컨트롤 루틴(340)의 무결성을 성공적으로 확인한 것으로 표시하는 경우, 프로세서 엘리먼트(650)는 서버(300)가 정상적으로 그리고 안전하게 동작하고 있다고 판단한다.
이와 달리, 상태 데이터(339)가 전혀 수신되지 못하고, 상태 데이터(439)가 수신되면, 프로세서 엘리먼트(650)는 왜 상태 데이터(339)가 수신되지 못하였는지를 판단하기 위해 상태 데이터(439)에 무엇이 표시되어 있는지를 검사한다. 상태 데이터(439)가, 타이머(313)가 카운팅을 완료하기 전에 컨트롤 루틴(340)의 무결성을 평가하기 위한 컨트롤 루틴(370)의 실행을 성공적으로 완료했다고 표시하는 경우, 프로세서 엘리먼트(650)는 컨트롤 루틴(340)이 해킹되었거나 또는 상태 데이터(339)의 전송을 방해할 정도로 충분히 오작동하고 있다고 판단할 수 있다. 상태 데이터(439)가, 타이머(313)가 카운팅을 완료(예를 들어, 매번 타이머(313)는 반복적으로 다시 트리거되고 카운팅을 완료한다)하기 전에 프로세서 엘리먼트(350)가 컨트롤 루틴(370)의 실행을 성공적으로 완료하지 못했다고 표시하는 경우, 프로세서 엘리먼트(650)는 적어도 컨트롤 루틴(370)이 해킹되었거나 또는 프로세서 엘리먼트(350) 또는 다른 컴포넌트가 오작동하였다고 판단할 수 있다.
프로세서 엘리먼트(350)가 오작동하고 있는지를 확인하기 위해, 프로세서 엘리먼트(650)는 상태 데이터(439) 내에 포함될 수 있는 서버(300)의 헬스의 하나 이상의 표시를 평가할 수 있다. 보다 구체적으로, 컨트롤 루틴(370)의 실행을 모니터링하기 위해 랜덤 타이머(312)의 카운트 다운에 의해 트리거되는 인스턴스 사이에서, 프로세서 엘리먼트(450)는 서버(300)의 헬스의 다양한 측면을 모니터링하기 위해 하나 이상의 헬스 감지기(417)를 작동시키고, 서버(300)의 헬스에 대한 감지된 것의 표시를 (아마도 상태 데이터(439)의 부가적인 것으로서) 관리 디바이스(600)에 반복적으로 전달할 수 있다. 따라서, 프로세서 엘리먼트(450)는 랜덤 타이머(312)가 카운팅을 완료할 때마다 발생되는 트리거 이벤트보다 더 자주 서버(300)의 헬스에 대한 다양한 상태 데이터(439)를 관리 디바이스(600)에 전달할 수 있다.
서버(300)의 헬스에 대한 그러한 표시는 프로세서 엘리먼트(350)가 복구할 수 없는 정의되지 않은 상태로 진입한 일반적인 결과로서 명령의 실행을 이미 오래전에 중지하였음을 표시할 수 있다. 이와 달리, 서버(300)로 전력을 공급하는 전압 레벨을 프로세서 엘리먼트(350) 및/또는 다른 컴포넌트가 단속적으로 또는 예측할 수 없게 동작하는 정해진 한도 내로 유지하는 데 실패했다는 표시가 있을 수 있다. 프로세서 엘리먼트(650)는, 서버(300)의 다양한 컴포넌트의 헬스의 이러한 표시를 포함하여 오작동을 보안이 파괴된 경우와는 구별할 수 있다. 서버(300) 내에서 발생한 비정상적인 동작의 원인에 관해 프로세서 엘리먼트(650)가 한 판단에 따라, 프로세서 엘리먼트(650)는 서버(300)에 정지 또는 리셋시키는 명령을 전달하고/하거나 서버(300)의 동작에 대한 책임자에게 문제를 알릴 수 있다.
다양한 실시예에서, 각각의 프로세서 엘리먼트(350, 450 및 650)는 AMD®의 Athlon®, Duron® 또는 Opteron® 프로세서, ARM® 애플리케이션 임베디드 또는 시큐어 프로세서, IBM® 및/또는 Motorola® DrangonBall® 또는 PowerPC® 프로세서, IBM 및/또는 Sony® Cell 프로세서, 또는 Intel® Celeron®, Core(2) Duo®, Core(2) Quad®, Core i3®, Core i5®, Core i7®, Atom®, Itanium®, Pentium®, Xeon®, XScale® 프로세서를 포함하되 이에 제한되지 않는 상업적으로 이용할 수 있는 다양한 프로세서를 포함할 수 있다. 또한 하나 이상의 이러한 프로세서 엘리먼트는 (동일 또는 별개의 다이에 복수의 코어가 같이 존재하는지에 따라) 멀티 코어 프로세서 및/또는 복수의 물리적으로 분리된 프로세서가 임의의 방식으로 연결되어 있는 다양한 멀티 프로세서 아키텍처를 포함할 수 있다.
다양한 실시예에서, 각각의 스토리지(360, 460, 660)는 전력이 지속적으로 공급되는 것을 요구하는 휘발성 기술, 제거되거나 되지 않을 수 있는 머신 판독 가능 저장 매체의 사용을 수반하는 기술을 포함하는 다양한 정보 저장 기술 중 임의의 것에 기반할 수 있다. 따라서, 이들 스토리지 각각은 ROM(read-only memory), RAM(random-access memory), DRAM(dynamic RAM), DDR-DRAM(Double-Data-Rate DRAM), SDRAM(synchronous DRAM), SRAM(static RAM), PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 메모리, 폴리머 메모리(예를 들어, 강유전체 폴리머 메모리), 오보닉(ovonic) 메모리, 상변화 또는 강유전체 메모리, SONOS(silicon-oxide-nitride-oxide-silicon) 메모리, 마그네틱 또는 광학 카드, 하나 이상의 개별 강자성체 디스크 드라이브, 또는 하나 이상의 어레이에 구조화된 복수의 스토리지 디바이스 (예를 들어, 개별 디스크 어레이의 리던던트 어레이 또는 RAID 어레이에 구조화된 복수의 강자성체 디스크 드라이브)를 포함하되 이에 제한되지 않는 다양한 형태(또는 조합의 형태)의 임의의 것을 포함할 수 있다. 이들 스토리지 각각이 단일의 블록으로 도시되어 있지만, 하나 이상의 이들 스토리지는 다른 스토리지 기술에 기반할 수 있는 복수의 스토리지 디바이스를 포함할 수 있음에 유의해야 한다. 따라서, 예를 들어, 하나 이상의 도시된 각각의 스토리지는 프로그램 및/또는 데이터가 머신 판독 가능 매체 상에서 임의의 형태로 저장 및 전달될 수 있는 광학 드라이브 또는 플래시 메모리 카드 리더, 비교적 오랜 기간 동안 프로그램 및/또는 데이터를 국소적으로 저장하는 강자성체 디스크 드라이브, 및 프로그램 및/또는 데이터에 비교적 빠르게 액세스할 수 있는 하나 이상의 휘발성 솔리드 스테이스 메모리 디바이스(예를 들어, SRAM 또는 DRAM)의 조합을 나타낼 수 있다. 이들 스토리지 각각은 동일한 스토리지 기술에 근거한 복수의 스토리지 컴포넌트로 구성될 수 있지만, 이들은 용도(예를 들어, 일부 DRAM 디바이스는 메인 스토리지로 이용되고, 다른 DRAM 디바이스는 그래픽 컨트롤러의 별개의 프레임 버퍼로 이용될 수 있다)에 따라 다르게 처리되어 별도로 관리될 수 있음에 유의해야 한다.
다양한 실시예에서, 각각의 인터페이스(390, 690)는 도시된 것과 같이 각각의 컴퓨팅 디바이스(300, 600)를 네트워크(999)를 통해 연결시키는 다양한 시그널링 기술을 사용한다. 이들 인터페이스 각각은 이러한 연결을 가능하게 하는 필요 기능의 적어도 일부를 제공하는 회로를 포함한다. 그러나, 이들 인터페이스 각각은 대응하는 프로세서 엘리먼트(350, 450, 650)에 의해 실행되는 일련의 명령어로 적어도 일부가 구현될 수 있다 (예를 들어, 프로토콜 스택 또는 다른 특징을 구현). 네트워크(999)의 하나 이상의 부분은 전기적 및/또는 광학적 도전 케이블을 이용하고 있고, 대응하는 인터페이스(390, 690)는 RS-232C, RS-422, USB, Ethernet(IEEE-802.3) 또는 IEEE-1394를 포함하되 이에 제한되지 않는 다양한 산업 표준의 임의의 것에 따르는 시그널링 및/또는 프로토콜을 이용할 수 있다. 이와 달리, 또는 부가적으로 네트워크(999)의 하나 이상의 부분은 무선 신호 통신의 사용을 수반하고, 대응하는 이들 인터페이스는 IEEE 802.11a, 802.11b, 802.11g, 802.16, 802.20(통상 "모바일 브로드밴드 와이어리스 액세스"라고 불림), 블루투스, 지그비(ZigBee), 또는 GSM/GPRS(GSM with General Packet Radio Service), CDMA/1xRTT, EDGE(Enhanced Data Rates for Global Evolution), EV-DO(Evolution Data Only/Optimized), EV-DV(Evolution For Data and Voice), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), 4G LTE 등을 포함하되 이에 제한되지 않는 다양한 산업 표준의 임의의 것에 따르는 시그널링 및/또는 프로토콜을 이용할 수 있다. 각각의 인터페이스(190, 390)가 단일의 블록으로 도시되었지만, 하나 이상의 이들 인터페이스가 다른 시그널링 기술을 기반으로 할 수 있는 복수의 인터페이스를 포함할 수 있음에 유의해야 한다. 하나 이상의 이들 인터페이스가 대응하는 컴퓨팅 디바이스(100, 300)를 각각 다른 통신 기술을 이용하여 하나 이상의 네트워크에 연결하는 경우가 이에 해당할 수 있다.
도 2는 서버(300)의 컴포넌트 간에 핸드쉐이킹에 대한 가능한 구현의 일면을 자세히 도시한다. 구체적으로, 가능한 구현에서는 프로세서 엘리먼트(350, 450) 및/또는 타이머(312, 313) 간의 조정이 어느 정도 가능해질 수 있도록 하는 하나 이상의 레지스터를 포함한다.
구체적으로, 일부 실시예에서, 랜덤 타이머(312)는 프로세서 엘리먼트(350, 450) 중 하나 또는 모두가 랜덤 타이머의 상태를 모니터할 수 있도록 하는 레지스터(322)를 포함한다. 프로세서 엘리먼트(350)는, 랜덤 타이머(312)가 랜덤하게 선택된 기간의 카운팅을 완료함으로써 트리거된 인터럽트에 의해서 컨트롤 루틴(340)을 실행하는 것으로부터 컨트롤 루틴(370)을 실행하는 것으로 천이하는 것으로 생각되지만, 다른 실시예에서 컨트롤 루틴(340)은 프로세서 엘리먼트(350)로 하여금, 랜덤하게 선택된 기간의 카운팅이 완료되었는지를 판단하기 위해 레지스터(322)를 반복적으로 판독함으로써 랜덤 타이머(312)의 상태를 반복적으로 체크하도록 할 수 있다. 또한, 컨트롤 프로그램(340, 370)의 하나 또는 모두를 해킹하는데 성공한 악성 소프트웨어에게 그 정보를 제공하지 않도록 하기 위해 프로세서 엘리먼트(350)는 랜덤 타이머(312)의 상태를 체크하지 못하도록 하는 것이 바람직할 수도 있다.
프로세서 엘리먼트(350)가 레지스터(322)를 판독할 수 있는지 없는지에 관계없이, 컨트롤 루틴(440)은 프로세서 엘리먼트(450)로 하여금 레지스터(322)를 판독하여 랜덤 타이머(312)의 상태를 반복적으로 체크하도록 할 수 있다. 이것은 컨트롤 루틴(370)의 실행을 모니터링하는 것을 프로세서 엘리먼트(450)가 준비하도록 하는 랜덤 타이머(312)의 카운팅 완료 시점을 판단함으로써 이루어질 수 있다. 이와 달리 또는 부가적으로, 프로세서 엘리먼트(450)는 관리 디바이스(600)로 전달하는 상태 데이터(439) 내에 랜덤 타이머(312)의 현재 상태의 표시를 포함시킬 수 있다.
일부 실시예에서, 타이머(313)는 프로세서 엘리먼트(350, 450)의 하나 또는 모두가 타이머의 상태를 모니터링 및/또는 제어할 수 있도록 하는 레지스터(323)를 포함할 수 있다. 프로세서 엘리먼트(450)는, 타이머(313)가 카운팅을 완료하기 전에 프로세서 엘리먼트(350)가 컨트롤 루틴(370)의 실행을 성공적으로 완료하였는지를 판단하기 위해 레지스터(323)를 반복적으로 모니터링한다. 보다 구체적으로, 컨트롤 루틴(370)이 성공적으로 완료하면, 프로세서 엘리먼트(350)는 타이머(313)가 카운팅을 중지하도록 레지스터(323)에 기록할 수 있다. 프로세서 엘리먼트(450)는, 프로세서 엘리먼트(350)가 실제로 컨트롤 루틴(370)의 실행을 완료했는지를 나타내는 표시로서 타이머의 카운팅 완료 전에 프로세서 엘리먼트(350)의 이러한 기록 동작이 발생하였음을 나타내는 표시가 레지스터(323)에 있는지를 반복적으로 체크할 수 있다.
일부 실시예에서, 인터럽트 컨트롤러(315)는 프로세서 엘리먼트(350, 450)의 하나 또는 모두가 인터럽트 컨트롤러의 상태를 모니터링 및/또는 제어할 수 있도록 하는 레지스터(325)를 포함할 수 있다. 앞서 설명한 바와 같이, 컨트롤 루틴(370)은 프로세서 엘리먼트(350)로 하여금 컨트롤 루틴(370)의 지속적인 실행을 가능하도록 하기 위해 인터럽트 컨트롤러(315)를 적어도 부분적으로 불능으로 하는 것이 고려된다. 레지스터(325)는 이러한 것이 발생하는 메커니즘일 수 있다. 레지스터(325)는, 컨트롤 루틴(340)은 해킹되었지만 컨트롤 루틴(370)은 그렇지 않을 때, 인터럽트 컨트롤러(315)에 대한 조작을 막기 위해 보호 영역(367) 내에 저장된 실행 가능한 명령(컨트롤 루틴(370)과 같은)에 액세스할 수 있지만 보호 영역(367) 밖에 저장된 실행 가능한 명령(컨트롤 루틴(340) 또는 VM 세션과 같은)에는 액세스할 수 없는 컴포넌트 중 하나일 수 있다. 프로세서 엘리먼트(450)는 프로세서 엘리먼트(350)를 통해 컨트롤 루틴(370)의 실행을 모니터링하므로, 레지스터(325)는 프로세서 엘리먼트(450)에 의해 판독될 수 있다. 인터럽트 컨트롤러(315)를 불능으로 하는 것이 컨트롤 루틴(370)의 실행을 시작함에 있어서 프로세서 엘리먼트(350)의 첫 번째 동작 중 하나로 생각되고, 인터럽트 컨트롤러(315)를 재가동하는 것이 컨트롤 루틴(370)의 실행을 중지함에 있어서 마지막 동작 중 하나로 생각되므로, 프로세서 엘리먼트(450)는 상태 데이터(439)에 포함시키기 위해 수집하는 정보의 일부로서 인터럽트 컨트롤러(315)의 불능 또는 재가동이 발생하였는지를 판단하기 위해 레지스터(325)를 모니터링할 수 있다.
일부 실시예에서, 레지스터(326)는 컨트롤 루틴(340, 370)의 하나 또는 다른 하나를 실행하는 인스턴스 사이에서 정보를 교환하는 메커니즘의 일부로서 서버(300) 내에 (가능하게는 프로세서 엘리먼트(350) 내에) 포함될 수 있다. 구체적으로, 프로세서 엘리먼트(350)는 컨트롤 루틴(370)의 실행에 의해 상태 데이터(339)가 저장되는 어드레스 위치를 나타내는 값을 레지스터(326)에 기록할 수 있으므로, 프로세서 엘리먼트는 상태 데이터(339)를 관리 디바이스(600)로 전달할 수 있도록 하는 컨트롤 루틴(340) 실행이 재개되면 상태 데이터(339)의 위치를 확인할 수 있을 것이다.
일부 실시예에서, 인터페이스(390)는 프로세서 엘리먼트(350, 450)의 하나 또는 모두가 인터페이스의 상태를 모니터링 및/또는 제어할 수 있도록 하는 레지스터(329)를 포함할 수 있다. 구체적으로, 컨트롤 루틴(440)은 프로세서 엘리먼트(450)로 하여금, 컨트롤 루틴(340)의 실행이 재개되면 컨트롤 루틴(340)이 프로세서 엘리먼트(350)로 하여금 상태 데이터(339)를 관리 디바이스(600)에 전달하는 것을 적어도 시도하도록 하는지 아닌지를 나타내는 표시를, 레지스터(329)로부터 판독하도록 한다.
도 3은 도 1의 블록도의 일부 블록도를 더욱 자세하게 도시한다. 더욱 구체적으로, 컴퓨팅 디바이스(300) 및 컨트롤러(400)의 동작 환경의 측면이 도시되며, 대응하는 컨트롤 루틴(340, 370, 440)의 실행에 의해 프로세서 엘리먼트(350, 450)
는 전술한 기능을 수행한다. 당업자에게 알려진 바와 같이, 각각의 컨트롤 루틴을 구성하는 컴포넌트를 포함하여 이러한 각각의 루틴은 임의의 형태의 프로세서 또는 이들 프로세서 엘리먼트의 각각에 대응하는 것을 구현하도록 선택된 프로세서 상에서 동작하도록 선택된다.
다양한 실시예에서, 각각의 컨트롤 루틴(340, 370, 440)은 운영 시스템, 디바이스 드라이버 및/또는 애플리케이션 레벨 루틴(예를 들어, 디스크 매체로 제공되는 소위 "소프트웨어 수트", 원격 서버로부터 획득되는 "애플렛" 등)의 조합을 포함할 수 있다. 운영 시스템이 포함되는 경우, 운영 시스템은 Winodws™, OS X™, Linux® 또는 Android OS™를 포함하되 이제 제한되지 않는 이용 가능한 다양한 운영 시스템일 수 있다. 하나 이상의 디바이스 드라이버가 포함되는 경우, 이러한 디바이스 드라이버는 컴퓨팅 디바이스(300) 및 컨트롤러(400)의 다양한 다른 하드웨어 또는 소프트웨어 컴포넌트를 위한 지원을 제공할 수 있다.
각각의 컨트롤 루틴(340, 440)은 프로세서 컴포넌트(350, 450)에 의해 실행되어 인터페이스(390, 490)를 동작시키는 통신 컴포넌트(349, 449)를 각각 포함하고, 도시된 바와 같이 네트워크(999)(또는 다른 연결)를 통해 신호를 전달 및 수신한다. 당업자에게 알려진 바와 같이, 이들 통신 컴포넌트 각각은 대응하는 이러한 인터페이스를 구현하기 위해 선택된 인터페이스 기술의 형태에 따라 동작할 수 있도록 선택된다.
컨트롤 루틴(340)은 VM 세션(예를 들어, VM 세션(331a-c))을 개시, 유지 및 모니터링하기 위해 프로세서 엘리먼트(350)에 의해 실행될 수 있는 VMM 컴포넌트(341)를 포함한다. VMM 컴포넌트(341)는 다른 VM 세션 내의 애플리케이션 소프트웨어들의 실행 사이에 액세스를 허용하지 않음으로써 그들 사이에 안정성을 제공한다. 또한, VMM 컴포넌트(341)는 그러한 허용되지 않는 액세스를 하려는 시도를 감지한 경우 전술한 바와 같이 그러한 액세스가 시도되었던 VMM 세션을 불능 또는 제거하는 동작을 취할 수 있다.
컨트롤 루틴(370)은 컨트롤 루틴(340)의 적어도 일부(예를 들어, VMM 컴포넌트(341))에 대한 무결성을 체크하기 위해 랜덤 타이머(312)가 랜덤하게 선택된 기간의 마지막까기 카운트 다운하는 것을 완료하는 트리거 이벤트에 응답하여 프로세서 엘리먼트(350)에 의해 실행될 수 있는 VMM 감시자(371)를 포함한다. VMM 감시자(371)가 그러한 동작을 하기 위해 사용할 수 있는 기술 중, VMM 감시자(371)는 컨트롤 루틴(340)의 적어도 그 일부 내에 임베드디된 디지털 서명을 체크하는 키(337)를 이용할 수 있다. 보호 영역(367) 내에 저장된 VMM 감시자(371) 및 키(337)를 이용함으로써 보호 영역(367) 밖에 저장된 악성 소프트웨어에 의한 해킹으로부터 어느 정도 보호될 수 있다.
컨트롤 루틴(440)은, (랜덤 타이머(312)의 카운트 다운 완료에 의해서도 트리거된) 프로세서 엘리먼트(350)에 의해 성공적으로 실행되었는지를 판단하는 컨트롤 루틴(370)의 실행을 모니터링하기 위해, 랜덤하게 선택된 기간의 마지막까지 카운트 다운을 완료하는 랜덤 타이머(312)의 트리거 이벤트에 응답하여 프로세서 엘리먼트(450)에 의해 실행 가능한 감시자 검증기(441)를 포함한다. 감시자 검증기(441)는 관리 디바이스(600)에 전송되는 상태 데이터(439)에 그 결과(무엇이든 관계없이)를 기록한다.
컨트롤 루틴(440)은 프로세서 엘리먼트(450)에 의해 실행 가능하고 서버(300)의 헬스(운영 상태)의 표시를 감지하는 하나 이상의 헬스 센서(447)를 반복적으로 작동시키는 헬스 모니터(447)를 포함한다. 설명한 바와 같이, 서버(300)의 헬스를 나타내는 표시는 컨트롤 루틴(370)을 실행하는 프로세서 엘리먼트(350)의 모니터링과 관련된 경우를 제외하고 전달되는 상태 데이터(439)에 다양하게 기록되므로, 관리 디바이스(600)는 서버(300)의 헬스의 표시를 어느 정도의 빈도로 수신하는 것으로 생각된다.
도 4는 도 3에 도시된 컨트롤 루틴(340, 370)의 다양한 블록도를 도시한다. 도시 및 설명의 명료성을 위해, 도 3에도 도시되었던 서버(300)의 많은 다른 컴포넌트는 도 4에서 그 도시가 생략된다. (도 3에서 대응하는 것과 비교되는) 도 4의 변형에서, VMM 컴포넌트는 임베디드 감시자(344) 및 키(334)를 더 포함한다. 또한, 도 4의 컨트롤 루틴(370)의 변형에서, VMM 감시자(371)는 임베디드 감시자(344)가 해킹되지 않았는지를 확인하기 위해 임베디드 감시자(344)(그리고 아마도 또한 키(344))의 무결성을 체크한다. 임베디드 감시자(344)가 확인된 것으로 가정하면, 실행되는 임베디드 감시자(344)에 대한 표시는 컨트롤 루틴(370)을 실행하는 프로세서 엘리먼트와 컨트롤 루틴(340)을 실행하는 프로세서 엘리먼트 사이에서의 천이를 통해 전달된다. 프로세서 엘리먼트(350)에 의해 실행되면, 임베디드 감시자(344)는 임베디드 디지털 서명의 암호 체크에 있어서 키(334)를 가능한 이용하여 컨트롤 루틴(340)의 다른 부분(아마도 VMM 컴포넌트(341)의 나머지)에 대한 무결성 체크를 수행한다. 이것은 컨트롤 루틴(370)의 실행에 이용할 수 있는 시간의 길이가 너무 짧아서 컨트롤 루틴(340) 및/또는 VMM 컴포넌트(341)의 무결성에 유효한 검증을 수행할 수 없는 경우에 행해질 수 있다. 이러한 경우, 컨트롤 루틴(340)의 비교적 작은 임베디드 감시자의 검증이 실현 가능할 수 있다. 임베디드 감시자(344)의 무결성에 대한 검증이 성공하면, 임베디드 감시자(344)는 컨트롤 루틴(340) 이상의 무결성 체크를 수행하기에 충분히 신뢰할 수 있는 것으로 간주될 수 있다.
도 5는 도 1의 블록도의 일부의 다른 블록도를 더 자세하게 도시한다. 보다 구체적으로, 컨트롤 루틴(640)의 실행에 의해 프로세서 엘리먼트(650)가 전술한 기능을 수행하는 컴퓨팅 디바이스(600)의 운영 환경의 일면이 도시된다. 당업자가 인식할 수 있는 것과 같이, 컨트롤 루틴을 구성하는 컴포넌트를 포함하여 이 컨트롤 루틴은 프로세서 또는 이 프로세서 엘리먼트를 구현하기 위해 선택된 프로세서들의 임의의 형태 상에서 동작하도록 선택된다.
다양한 실시예에서, 컨트롤 루틴(640)은 운영 시스템, 디바이스 드라이버 및/또는 애플리케이션 레벨 루틴(예를 들어, 디스크 매체로 제공되는 소위 "소프트웨어 수트", 원격 서버로부터 획득되는 "애플렛" 등)의 조합을 포함할 수 있다. 운영 시스템이 포함되는 경우, 운영 시스템은 Winodws™, OS X™, Linux® 또는 Android OS™를 포함하되 이에 제한되지 않는 이용 가능한 다양한 운영 시스템일 수 있다. 하나 이상의 디바이스 드라이버가 포함되는 경우, 이러한 디바이스 드라이버는 컴퓨팅 디바이스(600)의 다양한 다른 하드웨어 또는 소프트웨어 컴포넌트를 위한 지원을 제공할 수 있다.
컨트롤 루틴(640)은, 프로세서 엘리먼트(650)에 의해 실행 가능하고 인터페이스(690) 및 가능한 인터페이스(790)도 동작시켜 네트워크(999) 및/또는 전술한 바와 같이 컴퓨팅 디바이스(300, 600) 사이의 다른 연결을 통해 신호를 전달 및 수신할 수 있는 통신 컴포넌트(649)를 포함한다. 전술한 바와 같이, 서버(300)의 컨트롤러(400)는 관리 디바이스(600)와 통신하는 별도의 인터페이스(490)를 이용할 수 있고, 도 5에 도시된 바와 같이 관리 디바이스(600)는 그 인터페이스(490)와 완전히 별도의 링크를 통해 그러한 통신을 서포트하는 별도의 인터페이스(790)를 이용할 수 있다. 당업자에게 인식될 수 있는 바와 같이, 이 통신 컴포넌트는 이러한 인터페이스의 하나 또는 모두를 구현하기 위해 선택되는 임의의 인터페이스 기술과 함께 동작할 수 있도록 선택된다.
컨트롤 루틴(640)은 (수신되면) 상태 데이터(339) 및 상태 데이터(439)를 분석하기 위해 프로세서 엘리먼트(650)에 의해 실행 가능한 평가 컴포넌트(645)를 포함한다. 컨트롤 루틴(340)의 무결성을 검증하고자 하는 프로세서 엘리먼트에 문제가 있음을 나타내는 표시를 수신하는 것에 응답하여, 평가 컴포넌트(645)는 컨트롤러(400)로부터 수신한 상태 데이터(439) 내의 서버(300)의 헬스에 대한 표시를 검사한다. 또한, 평가 컴포넌트(645)는, 수신되면, 상태 데이터(339) 내에 무엇이 표시되는지를 검사한다. 또한, 평가 컴포넌트(645)는 컨트롤러(400)로부터 수신하고 이력 데이터(635)에 저장된 서버(300)의 헬스의 이력 표시를 검사할 수 있다. 이후 평가 컴포넌트(645)는 서버(300)을 재시작함으로써 수정될 수 있는 오작동이 발생하였는지, 서버(300)의 수리를 필요로 하는 오작동이 발생하였는지, 또는 컨트롤 루틴(340(VMM 컴포넌트(341)를 포함하는), 370) 중 하나 또는 모두의 무결성이 해킹되었는지를 판단한다.
도 6은 로직의 흐름(2100)의 일 실시예를 도시한다. 로직의 흐름(2100)은 본 명세서에 기재된 하나 이상의 실시예에 의해 실행되는 동작의 일부 또는 전부를 표시할 수 있다. 보다 구체적으로, 로직의 흐름(2100)은 적어도 컨트롤 루틴(340) 및/또는 컨트롤 루틴(370)을 실행함에 있어서 프로세서 엘리먼트(350)에 의해 수행되는 동작 및/또는 서버(300)의 다른 컴포넌트(들)에 의해 수행되는 동작을 도시한다.
2110에서, 서버의 메인 프로세서 엘리먼트(예를 들어, 서버(300)의 프로세서 엘리먼트(350))는 서버의 랜덤 타이머가 랜덤하게 선택된 기간의 마지막에 이르렀음(예를 들어, 완전히 카운트 다운했음)을 나타내는 표시를 수신한다. 전술한 바와 같이, 서버가 (예를 들어, 전력이 공급되거나 리셋됨에 따라) 초기화되면, 랜덤 타이머는 각각 새로운 기간의 길이를 랜덤하게 선택하기 위한 파라미터를 제공받을 수 있고, 이러한 세팅은 서버가 재초기화되지 않으면 변경되지 않도록 고정될 수 있다.
2120에서, 이러한 타이머 이벤트에 응답하여, 메인 프로세서 엘리먼트는 VMM(예를 들어, 컨트롤 루틴(340)의 VMM(341))의 실행을 중지하고, VMM 감시자(예를 들어, 컨트롤 루틴(370)의 VMM 감시자(371))의 실행을 개시하여 적어도 VMM의 무결성을 체크한다. 전술한 바와 같이, 랜덤 타이머가 기간의 마지막에 도달하면, 메인 프로세서 엘리먼트가 이러한 변화를 실행하도록 트리거하는 메커니즘으로서 인터럽트가 트리거될 수 있다. 이와는 달리, 랜덤 타이머의 레지스터가 메인 프로세서 엘리먼트에 의해 모니터링될 수 있다.
2130에서, 메인 프로세서 엘리먼트는 VMM 감시자의 실행이 실질적으로 중지되지 않도록 서버의 인터럽트 컨트롤러를 적어도 부분적으로 불능으로 한다. 2140에서, 메인 프로세서 엘리먼트는 VMM 내에 임베디드된 디지털 서명을 체크하는 암호화 키를 가능한 이용하여 VMM의 무결성을 체크하고, 그 체크 결과의 표시를 관리 디바이스(예를 들어, 관리 디바이스(600))에 전송하는 결과 데이터로서 저장한다.
2150에서, 메인 프로세서 엘리먼트가 VMM 감시자의 실행을 중지하고 VMM의 실행을 재개하면, 메인 프로세서 엘리먼트는 VMM를 조정하여 관리 디바이스에 결과 데이터를 전달한다. 전술한 바와 같이, 저장된 결과 데이터의 위치의 표시가 VMM 감시자의 실행과 VMM의 실행 사이에 레지스터를 통해 전달되는 핸드쉐이크 메커니즘이 이용될 수 있다.
2160에서, 메인 프로세서 엘리먼트는 인터럽트 컨트롤러를 재가동하고, 2170에서 다른 타이머에게 카운팅을 중지하도록 시그널링한다. 전술한 바와 같이, 랜덤 타이머가 랜덤하게 선택된 기간에 도달하는 것이 메인 프로세서 엘리먼트가 VMM을 실행하는 것으로부터 VMM 감시자를 실행하는 것으로 전환하도록 하는 트리거 이벤트로서 기능을 하는 것과 같이, 다른 카운터에 의한 다른 기간의 카운트 다운을 개시하도록 하는 트리거로서 기능을 한다. 또한, 이러한 다른 카운터는 메인 프로세서 엘리먼트가 VMM 감시자의 실행을 성공적으로 완료하는데 걸리는 시간 동안 "감시 타이머"로서 기능을 한다. 다른 타이머에게 카운팅을 중지하도록 시그널링함으로써, 메인 프로세서 엘리먼트는 VMM 감시자의 실행을 완료했음을 나타내는 표시를 전달한다.
2180에서, 메인 프로세서는 VMM 감시자의 실행을 중지하고 VMM의 실행을 재개한다. 전술한 바와 같이, 결과 데이터의 전송이 일어나야 하는 것은 바로 이 시점인데, 이것은 VMM 감시자는 그러한 시간 제한 내에 실행되어야 하므로 인터페이스를 동작시켜 스스로 결과 데이터를 관리 디바이스에 전달하도록 하는 실행 가능한 명령을 포함하지 않기 때문일 수 있다.
도 7은 로직의 흐름(2200)의 일 실시예를 도시한다. 로직 흐름(2200)은 본 명세서에서 기재된 하나 이상의 실시예에 의해 실행되는 동작의 일부 또는 전부를 표시할 수 있다. 보다 구체적으로, 로직의 흐름(2200)은 적어도 컨트롤 루틴(440)을 실행함에 있어서 프로세서 엘리먼트(450)에 의해 수행되는 동작 및/또는 컨트롤러(400)의 다른 컴포넌트에 의해 수행되는 동작을 도시할 수 있다.
2210에서, 서버의 컨트롤러 프로세서 엘리먼트(예를 들어, 서버(300)의 컨트롤러(400)의 프로세서 엘리먼트(450))는 서버의 랜덤 타이머가 랜덤하게 선택된 기간의 마지막에 도달했다(예를 들어, 완전히 카운트 다운했다)는 표시를 수신한다. 전술한 바와 같이, 서버가 (예를 들어, 전력이 공급되거나 리셋됨에 따라) 초기화되면, 랜덤 타이머는 각각 새로운 기간의 길이를 랜덤하게 선택하기 위한 파라미터를 제공받을 수 있고, 이러한 세팅은 서버가 재초기화되지 않으면 변경되지 않도록 고정될 수 있다.
2220에서, 컨트롤러 프로세서는 서버의 메인 프로세서 엘리먼트에 의해 VMM 감시자의 실행(예를 들어, 프로세서 엘리먼트(350)에 의한 컨트롤러 루틴(370)의 VMM 감시자(371)의 실행)을 모니터링한다. 전술한 바와 같이, 컨트롤러 프로세서는 인터럽트 컨트롤러의 레지스터 및/또는 인터페이스를 모니터링하여 단계가 하나 또는 다른 것의 상태가 변경되는 지점에 도달하였는지를 판단하는 것을 포함하되, 이에 제한되지 않는 그러한 실행을 모니터링하는 다양한 기술을 이용할 수 있다. 2230에서, 컨트롤러 프로세서는 또한 메인 프로세서 엘리먼트에 의한 VMM 감시자의 실행의 시간까지 "감시" 타이머로서 기능을 하는 다른 타이머의 카운트 다운을 모니터링한다.
2240에서, 컨트롤러 프로세서 엘리먼트는, 메인 프로세서 엘리먼트에 의한 VMM 감시자의 실행이 다른 타이머가 카운트 다운을 완료하기 전에 완료되었는지 아닌지를 나타내는 표시를 관리 디바이스(예를 들어, 관리 디바이스(600))에게 전달한다. 2250에서, 컨트롤러 프로세서 엘리먼트는 또한 서버의 헬스의 표시를 관리 디바이스에 전달한다. 전술한 바와 같이, 서버의 헬스의 표시는 다른 타이머가 카운트 다운을 완료하기 전에 VMM 감시자가 실행되었는지를 나타내는 표시보다 더 자주 관리 디바이스에 전달될 수 있다. 또한, VMM 감시자의 실행의 결과가 전달되는 경우 그 결과는 서버의 헬스의 표시의 전달과 결합될 수 있다.
도 8은 로직의 흐름(2300)의 일 실시예를 도시한다. 로직의 흐름(2300)은 본 명세서에서 기재된 하나 이상의 실시예에 의해 실행되는 동작의 일부 또는 전부를 표시할 수 있다. 보다 구체적으로, 로직의 흐름(2300)은 적어도 컨트롤 루틴(640)을 실행함에 있어서 프로세서 엘리먼트(650)에 의해 수행되는 동작 및/또는 관리 디바이스(600)의 다른 컴포넌트(들)에 의해 수행되는 동작을 도시할 수 있다.
2310에서, 관리 디바이스(예를 들어, 관리 디바이스(600))는 서버의 랜덤 타이머(예를 들어, 서버(300)의 랜덤 타이머(312))가 랜덤하게 선택된 기간의 마지막에 도달하였음(예를 들어, 완전하게 카운트 다운했음)을 나타내는 표시를 수신한다. 2320에서, 관리 디바이스는 서버의 메인 프로세서 엘리먼트(예를 들어, 프로세서 엘리먼트(350))가 서버의 다른 타이머(예를 들어, 타이머(313))가 카운트 다운을 완료하기 전에 VMM 감시자(예를 들어, 컨트롤 루틴(370)의 VMM 감시자(371))의 실행을 성공적으로 완료했는지를 나타내는 표시를 수신한다. 2330에서, 관리 디바이스(600)는 서버의 헬스의 표시를 수신한다. 이러한 다양한 표시는 통상의 결과 데이터 내에서 함께 수신될 수도 있고, 또는 네트워크 또는 그들 사이의 다른 연결을 통해 서버의 컨트롤러(예를 들어, 컨트롤러(400))에 의해 행해진 별도의 전달에 의해 수신될 수 있다. 전술한 바와 같이, 컨트롤러는 관리 디바이스와 연결되어 네트워크 또는 서버의 메인 프로세서 엘리먼트가 관리 디바이스와 통신할 수 있는 네트워크와는 완전히 구별되는 다른 연결을 통해 이러한 표시를 전달할 수 있다.
2340에서, 메인 프로세서 엘리먼트에 의한 VMM 컴포넌트(예를 들어, 컨트롤 루틴(340)의 VMM 컴포넌트(341))의 무결성의 체크에 대한 긍정적인 결과를 나타내는 결과 데이터가 수신되었는지에 대해 체크가 이루어진다. 어떤 결과 데이터(긍정 또는 그렇지 않은)도 수신되지 않았거나, 또는 긍정적이지 않은 결과를 나타내는 결과 데이터가 수신되면, 2350에서, 관리 디바이스는 메인 프로세서 엘리먼트 또는 그 컨트롤러 중 하나로부터 수신한 정보를 분석한다.
2350에서의 분석에 이어, 2360에서, 관리 디바이스는 발생한 것에 대한 추가 분석을 하기 위해 현재 레지스터 세팅의 표시, 특정 위치에서의 스토리지의 내용 등과 같은 부가적인 상태 정보를 서버로부터 요구할 것인지를 결정한다. 2370에서, 관리 디바이스가 재초기화에 대한 명령을 서버에 전달하여 초기화할 것인지를 결정한다. 서버의 헬스의 표시가 서버의 수리를 요구하는 문제가 발생하였음을 나타내지 않는다면(예를 들어, 오작동 쿨링 또는 사양 밖의 전압으로 전력을 계속 공급), 서버를 재시작함으로써 현재의 문제를 해결할 수 있다. 2380에서, 관리 디바이스는 서버에 대한 문제를 관리자에게 표시(예를 들어, 디스플레이 상의 표시를 시각적으로 제시)할 것인지를 결정한다.
도 9는 전술한 다양한 실시예를 구현하기에 적합한 예시적인 프로세싱 아키텍처(3000)의 일 실시예를 도시한다. 보다 구체적으로, 프로세싱 아키텍처(3000)(또는 이들의 변형)는 하나 이상의 컴퓨팅 디바이스(300, 600)의 일부로서 구현될 수 있다. 프로세싱 아키텍처(3000)의 컴포넌트에는 이전에 도시된 컴포넌트의 참조 번호의 마지막 두 자리 수에 대응하는 마지막 두 자리 수가 부여되었고, 각각의 컴퓨팅 디바이스(300, 600)의 일부로서 기재되었다는 점에 유의해야 한다. 이것은 다양한 실시예에서 컴퓨팅 디바이스(300, 600)의 어느 것이 이러한 예시적인 프로세싱 아키텍처를 이용할 수 있더라도, 이들의 그러한 컴포넌트들의 연관을 이해하기 쉽도록 한다.
프로세싱 아키텍처(3000)는 하나 이상의 프로세서, 멀티 코어 프로세서, 코프로세서, 메모리 유닛, 칩셋, 컨트롤러, 주변기기, 인터페이스, 오실레이터, 타이밍 디바이스, 비디오 카드, 오디오 카드, 멀티미디어 입력/출력(I/O) 컴포넌트, 파워 서플라이 등을 포함하되 이에 제한되지 않는 디지털 프로세싱에서 흔히 이용되는 다양한 엘리먼트를 포함한다. 본 출원에서 사용되는 것과 같이, "시스템" 및 "컴포넌트"라는 용어는 디지털 프로세싱이 수행되는 컴퓨팅 디바이스 엔터티로서 하드웨어, 하드웨어와 소프트웨어의 결합, 소프트웨어, 또는 실행중인 소프트웨어를 의미하며, 도시된 예시적인 프로세싱 이키텍처가 그 예로서 제공된다. 예를 들어, 컴포넌트는 프로세서 엘리먼트 상에서 동작하는 프로세스, 프로세서 엘리먼트 자체, 광학 및/또는 마그네틱 저장 매체를 이용할 수 있는 스토리지 디바이스(예를 들어, 하드 디스크 드라이브, 어레이 내의 복수의 스토리지 디바이스 등), 소프트웨어 오브젝트, 실행 가능한 일련의 명령, 실행의 스레드, 프로그램 및/또는 모든 컴퓨팅 디바이스(예를 들어, 모든 컴퓨터)일 수 있지만 이에 제한되는 것은 아니다. 설명의 위해, 서버 상에서 동작하는 애플리케이션 및 서버 모두 컴포넌트 일 수 있다. 하나 이상의 컴포넌트는 프로세스 및/또는 실행의 스레드 내에 상주할 수 있고, 컴포넌트는 하나의 컴퓨팅 디바이스 상에 국부화 및/또는 둘 이상의 컴퓨팅 디바이스 사이에 분산될 수 있다. 또한, 컴포넌트는 동작을 조율하기 위해 다양한 형태의 통신 매체를 통해 서로 통신적으로 연결될 수 있다. 조율은 정보의 일방향 또는 쌍방향 교환과 관련될 수 있다. 예를 들어, 컴포넌트는 통신 매체를 통해 통신되는 신호의 형태로 정보를 통신할 수 있다. 정보는 하나 이상의 신호 라인에 위치하는 신호로서 구현될 수 있다. 각각의 메시지는 직렬로 또는 실질적으로 병렬로 전달되는 신호 또는 복수의 신호일 수 있다.
도시된 바와 같이, 프로세싱 아키텍처(3000)를 구현함에 있어서, 컴퓨팅 디바이스는 적어도 프로세서 엘리먼트(950), 스토리지(960), 다른 디바이스에 대한 인터페이스(990) 및 연결(955)을 포함한다. 프로세싱 아키텍처(3000)를 구현하는 컴퓨팅 디바이스의 의도된 목적 및/또는 사용 조건을 포함하는 다양한 측면에 따라서, 그러한 컴퓨팅 디바이스는 랜덤 타이머(912), 타이머(913) 및/또는 인터럽트 컨트롤러(915)와 같지만 이에 제한되지 않는 추가 컴포넌트를 더 포함할 수 있다.
연결(955)은 하나 이상의 버스, 포인트 투 포인트 접속, 송수신기, 버퍼, 크로스포인트 스위치 및/또는 적어도 프로세서 엘리먼트(950)를 스토리지(960)에 통신적으로 연결시키는 다른 컨덕터 및/또는 로직을 포함한다. 연결(955)은 프로세서 엘리먼트(950)를 하나 이상의 인터페이스(990)와 디스플레이 인터페이스(985)(경우에 따라서는 이들 및/또는 다른 컴포넌트도 존재한다)에 더 연결시킬 수 있다. 프로세서 엘리먼트(950)가 연결(955)에 의해 연결되면, 프로세서 엘리먼트(950)는 컴퓨팅 디바이스(200, 700) 중 어느 것이 프로세싱 아키텍처(3000)를 구현하는, 자세하게 전술한, 다양한 태스크를 수행할 수 있다. 연결(955)은 신호가 광학적으로 및/또는 전기적으로 전달되는 다양한 기술 또는 기술의 조합으로 구현될 수 있다. 또한, 연결(955)의 적어도 일부분은 AGP(Accelerated Graphics Port), CardBus, E-ISA(Extended Industry Standard Architecture), MCA(Micro Channel Architecture), NuBus, PCI-X(Peripheral Component Interconnect (Extended)), PCI-E(PCI Express), PCMCIA(Personal Computer Memory Card International Association) 버스, HyperTransport™, QuickPath 등을 포함하되 이에 제한되지 않는 다양한 산업 표준의 임의의 것에 따르는 타이밍 및/또는 프로토콜을 이용할 수 있다.
전술한 바와 같이, (프로세서 엘리먼트(350, 450, 650 및 750)의 하나 이상에 대응하는) 프로세서 엘리먼트(950)는 다양한 기술을 이용하고 다양한 방법으로 물리적으로 접속된 하나 이상의 코어로 구현된 다양한 산업적으로 이용 가능한 프로세서의 임의의 것을 포함할 수 있다.
전술한 바와 같이, 스토리지(960)(스토리지(360, 460 및 660)의 어느 하나에 대응하는)는 다양한 기술 또는 기술의 조합에 근거하는 하나 이상의 구별되는 스토리지 디바이스를 포함할 수 있다. 보다 구체적으로, 도시된 바와 같이, 스토리지(960)는 하나 이상의 휘발성 스토리지(961)(예를 들어, RAM 기술의 하나 이상의 형태에 근거한 솔리드 스테이트 스토리지), 비휘발성 스토리지(962)(예를 들어, 내용을 보존하기 위해 지속적인 전력의 공급을 필요로 하지 않는 솔리드 스테이트, 강자성체 또는 다른 스토리지) 및 제거 가능한 미디어 스토리지(963)(예를 들어, 컴퓨팅 디바이스 간에 정보가 전달될 수 있도록 하는 제거 가능한 디스크 또는 솔리드 스테이트 메모리 카드 스토리지)를 포함할 수 있다. 복수의 구별되는 형태의 스토리지를 가능한 포함하는 스토리지(960)는 하나의 형태는 프로세서 엘리먼트(950)에 의한 데이터의 보다 빠른 조작이 가능하도록 비교적 빠른 판독 및 기록 능력을 제공함(다만, 지속적으로 전력을 요구하는 "휘발성" 기술을 이용함)에 반해, 다른 형태는 비휘발성 스토리지의 비교적 높은 밀도를 제공(다만, 비교적 느린 판독 및 기록 능력을 제공)하는 컴퓨팅 디바이스의 스토리지 디바이스의 하나 이상의 형태에 대한 통상적인 사용의 인식에 따라 설명된다.
다른 기술을 이용한 다른 스토리지 디바이스의 다른 특성에 따라, 이러한 다른 스토리지 디바이스가 다른 인터페이스를 통해 다른 스토리지 디바이스에 연결된 다른 스토리지 컨트롤러를 통해 컴퓨팅 디바이스의 다른 부분에 연결되는 것은 자명하다. 예시적으로, 휘발성 스토리지(961)가 제공되고, 이것은 RAM 기술에 근거하며, 휘발성 스토리지(961)는 아마도 행 및 열 어드레싱을 이용하는 휘발성 스토리지(961)에 적절한 인터페이스를 제공하는 스토리지 컨트롤러(965a)를 통해 연결(955)에 통신적으로 연결될 수 있으며, 스토리지 컨트롤러(965a)는 휘발성 스토리지(961) 내에 저장된 정보를 보존하도록 하는 열 리프레싱 및/또는 다른 유지 태스크를 수행할 수 있다. 다른 예로서, 비휘발성 스토리지(962)가 제공되고, 이것은 하나 이상의 강자성체 및/또는 솔리드 스테이트 디스크 드라이브를 포함하며, 비휘발성 스토리지(962)는 아마도 정보의 블록 및/또는 실린더 및 섹터의 어드레싱을 이용하는 비휘발성 스토리지(962)에 적절한 인터페이스를 제공하는 스토리지 컨트롤러(965b)를 통해 연결(965)에 통신적으로 연결될 수 있다. 또 다른 예로서, 제거 가능한 매체 스토리지(963)가 제공되며, 이것은 제거 가능한 머신 판독 가능한 저장 매체(969)의 하나 이상의 조각을 이용하는 광학 및/또는 솔리드 스테이트 디스크 드라이브를 포함하고, 제거 가능한 매체 스토리지(963)는 아마도 정보의 블록의 어드레싱을 이용하는 제거 가능한 매체 스토리지(963)에 적절한 인터페이스를 제공하는 스토리지 컨트롤러(965c)를 통해 연결(955)에 통신적으로 연결될 수 있으며, 스토리지 컨트롤러(965c)는 판독, 삭제 및 기록 동작을 머신 판독 가능한 저장 매체(969)의 긴 수명에 특정한 방식으로 조정할 수 있다.
휘발성 스토리지(961) 또는 비휘발성 스토리지(962)의 하나 또는 다른 하나는 각각이 기반하는 기술에 따라 프로세서 엘리먼트(950)에 의해 실행 가능한 일련의 명령을 포함하는 루틴이 저장된 머신 판독 가능한 저장 매체의 형태로 만들어진 제품을 포함할 수 있다. 예시적으로, 비휘발성 스토리지(962)는 강자성체 기반의 디스크 드라이브(예를 들어, 소위 "하드 드라이브")를 포함하고, 이들 각 디스크 드라이브는 일반적으로 플로피 디스켓과 같은 제거 가능한 저장 매체와 비슷한 방식으로, 일련의 명령과 같은 정보를 저장하기 위해 다양한 패턴으로 자기적으로 반응하는 입자의 코팅이 증착되고 자기적으로 배향되는 하나 이상의 회전 플래터를 이용한다. 다른 예로서, 비휘발성 스토리지(962)는 컴팩트 플래시 카드와 비슷한 방식으로 일련의 명령과 같은 정보를 저장하는 솔리드 스테이트 스토리지 디바이스의 뱅크로 구성될 수 있다. 또한, 실행 가능한 루틴 및/또는 데이터를 저장하기 위해 다른 시점에 컴퓨팅 디바이스에 다른 형태의 스토리지 디바이스를 이용하는 것은 통상적이다. 따라서, 프로세서 엘리먼트(950)에 의해 실행되는 일련의 명령을 포함하는 루틴은 초기에는 머신 판독 가능한 저장 매체(969)에 저장될 수 있고, 해당 루틴이 실행될 때 프로세서 엘리먼트(950)에 의한 보다 빠른 액세스를 가능하게 하는 머신 판독 가능한 저장 매체(969) 및/또는 휘발성 스토리지(961)가 지속적으로 필요하지는 않은 장기 스토리지로서 비휘발성 스토리지(962)에 해당 루틴을 복사하는데 후속하여 제거 가능한 매체 스토리지(963)가 이용될 수 있다.
전술한 바와 같이, 인터페이스(990)(하나 이상의 인터페이스(390, 490, 690, 790)에 대응하는)는 컴퓨팅 디바이스를 하나 이상의 다른 디바이스에 통신적으로 연결하는데 이용될 수 있는 다양한 통신 기술 중 임의의 것에 대응하는 다양한 시그널링 기술을 이용할 수 있다. 또한, 유선 또는 무선 신호의 하나 또는 모두의 형태가 프로세서 엘리먼트(950)가 네트워크 또는 네트워크의 상호 접속된 세트를 통해 입력/출력 디바이스 또는 다른 컴퓨팅 디바이스와 상호 작용하도록 하기 위해 이용될 수 있다. 어느 컴퓨팅 디바이스에 의해 지원될 것으로 추측되는 복수의 시그널링 및/또는 프로토콜의 완전히 다른 특성을 인식하여, 인터페이스(990)는 복수의 다른 인터페이스 컨트롤러(995a, 995b, 995c)를 포함하는 것으로 도시되었다. 인터페이스 컨트롤러(995a)는 도시된 키보드(920)와 같은 사용자 입력 디바이스로부터 직렬적으로 전달된 메시지를 수신하기 위해 다양한 형태의 유선 디지털 시리얼 인터페이스 또는 무선 인터페이스를 이용할 수 있다. 인터페이스 컨트롤러(995b)는 도시된 네트워크(999)(하나 이상의 링크, 더 작은 네트워크 또는 인터넷을 포함하는 네트워크)를 통해 다른 컴퓨팅 디바이스에 액세스하기 위해 다양한 케이블 기반 또는 무선 신호, 타이밍 및/또는 프로토콜을 이용할 수 있다. 인터페이스(995c)는 도시된 프린터(925)로 데이터를 전달하기 위해 직렬 또는 병렬 신호 전달 중 하나를 사용할 수 있는 다양한 전기 전도적인 케이블을 이용할 수 있다. 인터페이스(990)의 하나 이상의 인터페이스 컨트롤러를 통해 통신적으로 연결될 수 있는 디바이스의 다른 예로는, 마이크, 리모컨, 스타일러스 펜, 카드 리더기, 지문 인식기, 가상 현실 상호 작용 장갑, 그래픽 입력 태블릿, 조이스틱, 다른 키보드, 레티나 스캐너, 터치 스크린의 터치 입력 컴포넌트, 트랙볼, 다양한 센서, 레이저 프린터, 잉크젯 프린터, 기계적 로봇, 밀링 머신 등이 있으나 이에 제한되는 것은 아니다.
컴퓨팅 디바이스는 통신적으로 디스플레이(예를 들어, 도시된 예시적인 디스플레이(980))와 연결(또는 실제로는 포함)되는데, 프로세싱 아키텍처(3000)를 구현하는 이러한 컴퓨팅 디바이스는 디스플레이 인터페이스(985)를 또한 포함할 수 있다. 보다 일반적인 형태의 인터페이스가 디스플레이와의 통신 연결에 이용될 수 있지만, 디스플레이 상에 컨텐츠를 다양한 형태로 시각적으로 디스플레이하는데 필요한 다소 특수한 추가 프로세싱 및 사용되는 케이블 기반의 인터페이스의 다소 특수한 본질로 인해, 별도의 디스플레이 인터페이스를 제공하는 것이 바람직한 경우가 있다. 디스플레이(980)의 통신 연결에 있어서 디스플레이 인터페이스(985)가 이용하는 유선 및/또는 무선 시그널링 기술은 다양한 아날로그 비디오 인터페이스, DVI(Digital Video Interface), DisplayPort 등을 포함하되 이에 제한되지 않는 다양한 산업 표준에 따르는 시그널링 및/또는 프로토콜을 이용할 수 있다.
보다 일반적으로, 컴퓨팅 디바이스(200, 700)의 다양한 엘리먼트는 다양한 하드웨어 엘리먼트, 소프트웨어 엘리먼트, 또는 이들의 조합을 포함할 수 있다. 하드웨어 엘리먼트의 예는, 디바이스, 로직 디바이스, 컴포넌트, 프로세서, 마이크로 프로세서, 회로, 프로세서 엘리먼트, 회로 엘리먼트(예를 들어, 트랜지스터, 저항, 커패시터, 인덕터 등), 집적 회로, ASIC(application specific integrated circuits), PLD(programmable logic devices), DSP(digital signal processor), FPGA(field programmable gate array), 메모리 유닛, 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 소프트웨어 엘리먼트의 예는, 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 소프트웨어 개발 프로그램, 머신 프로그램, 운영 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 펑션, 방법, 프로시져, 소프트웨어 인터페이스, API(application program interface), 명령 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼 또는 이들의 조합을 포함할 수 있다. 그러나, 실시예를 하드웨어 엘리먼트 및/또는 소프트웨어 엘리먼트를 이용하여 구현할 것인지를 결정하는 것은 원하는 계산 속도, 파워의 정도, 열 저항, 프로세싱 사이클 버짓, 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제한 요소와 같은 다양한 요인에 따라 주어진 구현에 바람직하도록 변경될 수 있다.
일부 실시예는 "one embodiment" 또는 "an embodiment"라는 표현을 그 파생어에 따라 사용하여 기재될 수 있다. 이러한 용어는 실시예와 관련하여 기재된 특정의 구성, 구조 또는 특징이 적어도 하나의 실시예에 포함되는 것을 의미한다. 발명의 상세한 설명의 여러 곳에서 "in one embodiment"라는 구절이 사용되지만, 이것은 반드시 동일한 실시예를 가리키는 것은 아니다. 또한, 일부 실시예에는 "coupled" 및 "connected"이라는 표현을 그 파생어에 따라 사용하여 기재될 수 있다. 이들 용어는 반드시 서로 동의어로서 의도된 것은 아니다. 예를 들어, 일부 실시예는 둘 이상의 엘리먼트가 서로 물리적 또는 전기적으로 직접 접촉되어 있는 것을 나타내기 위해 "connected" 및/또는 "coupled"이라는 용어를 사용하여 기재될 수 있다. 그러나, "coupled"이라는 용어는 둘 이상의 엘리먼트가 서로 직접 접촉하지 않지만 서로 협력하거나 상호 작용하고 있는 것을 의미할 수 있다.
본 명세서의 요약서는 독자가 기술적 개시의 본질을 빠르게 확인할 수 있도록 하기 위해 제공되는 것임이 강조된다. 요약서는 청구항의 범위 또는 의미를 해석 또는 제한하기 위해 사용되지 않을 것이라는 점을 이해하는 전제로 제출된다. 또한, 전술한 발명의 상세한 설명에서 본 개시를 간소화하기 위해 다양한 특징이 단일의 실시예로 함께 그룹화되어 있음을 알 수 있다. 이 개시의 방법은 청구된 실시예가 각 청구항에서 명시적으로 기재된 것에 부가적인 특징을 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 그 보다는, 후술하는 청구항에서 보이는 것과 같이, 발명의 대상은 개시된 단일 실시예의 모든 특징의 일부에 존재한다. 따라서, 후술하는 청구항은 발명의 상세한 설명에 포함되며, 각 청구항은 별개의 실시예로서 존재한다. 첨부하는 청구항에서, "including" 및 "in which"라는 용어가 각각 대표적인 용어인 "comprising" 및 "wherein"과 보통의 영어에 있어서 동의어로서 사용된다. 또한, "first", "second", "third" 등의 용어는 단순한 레이블로서 사용될 뿐 그들의 대상에 대한 순서로서의 요구사항을 부과하는 의도는 없다.
전술한 것은 개시된 아키텍처의 예를 포함한다. 물론, 모든 인식 가능한 컴포넌트 및/또는 방법론의 조합을 기재하는 것은 불가능하지만, 당업자는 보다 많은 조합 및 치환이 가능함을 인식할 수 있다. 따라서, 신규한 아키텍처는 첨부하는 청구항의 정신 및 범위 내에 포함되는 그러한 모든 교환, 변경 및 변형을 포함하는 것을 의도한다. 자세한 개시는 다른 실시예와 관련된 예시를 제공하는 것에 의존한다. 아래 제시되는 예는 제한하는 것을 의도하지 않는다.
가상 머신의 무결성을 모니터링하는 장치의 예는 제 1 프로세서 엘리먼트와 제 1 타이머가 제 1 기간의 마지막에 도달하였음을 나타내는 표시를 수신하고, 제 2 프로세서 엘리먼트에 의해 가상 머신 모니터(VMM) 감시자의 실행을 모니터링하고, VMM의 무결성을 검증하기 위해 2 타이머가 제 2 기간의 마지막에 도달하기 전에 제 2 프로세서 엘리먼트가 VMM 감시자의 실행을 완료하는지를 판단하고, 판단의 표시를 컴퓨팅 디바이스에 전달하는 제 1 로직을 포함한다.
장치의 상기 예에서, 제 1 로직은 제 2 프로세서 엘리먼트에 의한 VMM 감시자의 실행을 모니터링하기 위해 인터럽트 컨트롤러의 상태를 모니터링하고, 제 2 프로세서 엘리먼트가 인터럽트 컨트롤러를 재가동시켰는지를 판단한다.
장치의 상기 예 중 어느 하나에 있어서, 제 1 로직은 제 2 프로세서 엘리먼트에 의한 VMM 감시자의 실행을 모니터링하기 위해 제 2 타이머의 상태를 모니터링하고, VMM 감시자의 실행의 완료를 나타내기 위해 제 2 프로세서 엘리먼트가 제 2 타이머를 중지시켰는지를 판단한다.
장치의 상기 예 중 어느 하나에 있어서, 제 1 로직은 헬스 감지기를 포함하는 서버의 헬스 감지기, 제 1 및 제 2 프로세서 엘리먼트를 모니터링하고, 서버의 헬스에 대한 표시를 컴퓨팅 디바이스에 전달한다.
장치의 상기 예 중 어느 하나에 있어서, 헬스 감지기는 열 센서, 전압 센서, 버스 활동 모니터 및 클록 신호 모니터를 포함한다.
장치의 상기 예 중 어느 하나에 있어서, 장치는 제 2 프로세서 엘리먼트 및 인터럽트 컨트롤러를 포함하고, VMM 감시자는 인터럽트 컨트롤러를 재가동하도록 인터럽트 컨트롤러의 레지스터에 기록하고, VMM 감시자의 실행을 중지하고, VMM을 실행시키는 제 2 로직을 포함한다.
장치의 상기 예 중 어느 하나에 있어서, 장치는 제 2 프로세서를 포함하고, VMM 감시자는 VMM의 실행 동안 컴퓨팅 디바이스로 전달되는 VMM의 무결성의 검증 결과를 나타내는 결과 데이터를 마련하고, VMM 감시자의 실행을 중지하고 VMM의 실행을 시작하게 하는 제 2 로직을 포함한다.
장치의 상기 예 중 어느 하나에 있어서, 장치는 제 1 타이머를 포함하고, 제 1 타이머는 제 1 기간의 지속 시간을 랜덤하게 선택하는 랜덤 타이머를 포함한다.
장치의 상기 예 중 어느 하나에 있어서, 장치는 제 2 프로세서 엘리먼트를 포함하고, VMM 감시자는 키를 사용하여 VMM에 임베디드된 디지털 서명을 검증하는 제 2 로직을 포함한다.
장치의 상기 예 중 어느 하나에 있어서, 장치는 제 2 프로세서 엘리먼트를 포함하고, VMM 감시자는 VMM 감시자의 완료를 나타내기 위해 제 2 타이머를 중지시키도록 제 2 타이머의 레지스터에 기록하는 제 2 로직을 포함한다.
가상 머신의 무결성을 모니터링하는 다른 장치의 예는 프로세서 엘리먼트와, 프로세서 엘리먼트를 서버에 연결하는 제 1 인터페이스와, 서버의 제 1 타이머가 제 1 기간의 마지막에 도달하였음을 나타내는 표시를 수신하고, VMM의 무결성을 검증하기 위해 서버의 제 2 타이머가 제 2 기간의 마지막에 도달하기 전에 서버의 프로세서 엘리먼트에 의해 VMM 감시자가 실행되었는지를 나타내는 제 1 결과 데이터를 수신하고, 검증의 결과를 나타내는 제 2 결과 데이터의 수신을 기다리는 로직을 포함한다.
다른 장치의 상기 예에 있어서, 로직은 서버로부터 제 2 결과 데이터를 수신하지 못한 것에 응답하여 제 2 결과 데이터를 수신하지 못한 원인을 판단하기 위해 적어도 제 1 결과 데이터를 분석한다.
다른 장치의 상기 예 중 어느 하나에 있어서, 로직은 서버의 컴포넌트의 온도, 서버로의 전력 공급의 전압 레벨, 서버의 버스의 활동에 대한 표시, 정정되지 않은 어레이/로직 에러의 표시, 및 서버의 클록 신호의 존재 또는 부재에 대한 표시 중 적어도 하나를 포함하는 서버의 헬스의 표시를 수신한다.
다른 장치의 상기 예 중 어느 하나에 있어서, 로직은 서버의 컨트롤러에게 시그널링하여 서버를 재초기화할지를 판단한다.
다른 장치의 상기 예 중 어느 하나에 있어서, 로직은 서버의 헬스의 표시에 응답하여 서버를 수리할 필요에 대한 표시를 제공한다.
다른 장치의 상기 예 중 어느 하나에 있어서, 장치는 디스플레이를 포함하고, 로직은 VMM의 무결성이 VMM 감시자에 의해 검증되지 않음을 나타내는 제 2 결과를 수신하는 것에 응답하여 VMM의 무결성이 손상된 것으로 나타내는 표시를 시각적으로 제공한다.
가상 머신의 무결성을 모니터링하는 컴퓨터로 구현된 방법의 예는, 서버의 제 1 타이머가 제 1 기간의 마지막에 도달하였음을 나타내는 표시를 수신하고, 서버의 메인 프로세서 엘리먼트에 의한 가상 머신 모니터(VMM) 감시자의 실행을 모니터링하고, 서버의 VMM의 무결성을 검증하기 위해 서버의 제 2 타이머가 제 2 기간의 마지막에 도달하기 전에 메인 프로세서 엘리먼트가 VMM 감시자의 실행을 완료하는지를 판단하고, 서버의 헬스 상태에 대한 적어도 하나의 감지기를 모니터링하고, 헬스 상태 및 판단을 나타내는 결과 데이터를 컴퓨팅 디바이스에 전달하는 것을 포함한다.
컴퓨터로 구현된 방법의 상기 예에 있어서, 방법은 메인 프로세서 엘리먼트에 의한 VMM 감시자의 실행을 모니터링하기 위해 서버의 인터럽트 컨트롤러의 상태를 모니터링하고, 메인 프로세서 엘리먼트가 인터럽트 컨트롤러를 재가동시켰는지를 판단하는 것을 포함한다.
컴퓨터로 구현된 방법의 상기 예 중 어느 하나에 있어서, 방법은 VMM의 무결성의 검증 이후에 인터럽트 컨트롤러를 재가동하도록 인터럽트 컨트롤러의 레지스터에 기록하는 것을 포함한다.
컴퓨터로 구현된 방법의 상기 예 중 어느 하나에 있어서, 방법은 메인 프로세서 엘리먼트에 의한 VMM 감시자의 실행을 모니터링하기 위해 제 2 타이머의 상태를 모니터링하고, VMM 감시자의 실행 완료를 나타내기 위해 메인 프로세서 엘리먼트가 제 2 타이머를 중지시켰는지를 판단하는 것을 포함한다.
컴퓨터로 구현된 방법의 상기 예 중 어느 하나에 있어서, 방법은 VMM 감시자의 완료를 나타내기 위해 타이머를 중지시키도록 제 2 타이머의 레지스터에 기록하는 것을 포함한다.
컴퓨터로 구현된 방법의 상기 예 중 어느 하나에 있어서, 방법은 서버의 컴포넌트의 온도, 서버에 대한 전력 공급의 전압 레벨, 서버의 버스의 활동의 표시, 정정되지 않은 어레이/로직 에러의 표시, 서버의 클록 신호의 존재 또는 부재의 표시 중 적어도 하나를 포함한다.
컴퓨터로 구현된 방법의 상기 예 중 어느 하나에 있어서, 방법은 VMM에 임베디드된 디지털 서명을 검증하기 위해 키를 사용하는 것을 포함한다.
가상 머신 무결성에 대한 장치의 예는 컴퓨터로 구현된 방법의 상기 예 중 어느 하나를 수행하는 수단을 포함한다.
적어도 하나의 머신 판독 가능한 저장 매체의 한 예로서, 컴퓨팅 디바이스에 의해 실행될 때 컴퓨팅 디바이스로 하여금 컴퓨팅 디바이스의 제 1 타이머가 제 1 기간의 마지막에 도달하였음을 나타내는 표시를 수신하고, 컴퓨팅 디바이스의 메인 프로세서 엘리먼트에 의한 가상 머신 모니터(VMM) 감시자의 실행을 모니터링하고, 컴퓨팅 디바이스의 VMM의 무결성을 검증하기 위해 컴퓨팅 디바이스의 제 2 타이머가 제 2 기간의 마지막에 도달하기 전에 메인 프로세서 엘리먼트가 VMM 감시자의 실행을 완료하는지를 판단하고, 판단을 나타내는 결과 데이터를 다른 컴퓨팅 디바이스에 전달하도록 하는 명령을 포함한다.
적어도 하나의 머신 판독 가능한 저장 매체의 상기 예에 있어서, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 헬스 상태에 대한 적어도 하나의 감지자를 모니터링하고, 결과 데이터 내에 헬스 상태의 표시를 포함시킨다.
적어도 하나의 머신 판독 가능한 저장 매체의 상기 예 중 어느 하나에 있어서, 헬스 상태는 컴퓨팅 디바이스의 컴포넌트의 온도, 컴퓨팅 디바이스에 대한 전력 공급의 전압 레벨, 컴퓨팅 디바이스의 버스의 활동의 표시, 정정되지 않은 어레이/로직 에러의 표시, 컴퓨팅 디바이스의 클록 신호의 존재 또는 부재의 표시 중 적어도 하나를 포함한다.
적어도 하나의 머신 판독 가능한 저장 매체의 상기 예 중 어느 하나에 있어서, 컴퓨팅 디바이스는 메인 프로세서 엘리먼트에 의한 VMM 감시자의 실행을 모니터링하기 위해 컴퓨팅 디바이스의 인터럽트 컨트롤러의 상태를 모니터링하고, 메인 프로세서 엘리먼트가 인터럽트 컨트롤러를 재가동했는지를 판단한다.
적어도 하나의 머신 판독 가능한 저장 매체의 상기 예 중 어느 하나에 있어서, 컴퓨팅 디바이스는 메인 프로세서 엘리먼트에 의한 VMM 감시자의 실행을 모니터링하기 위해 제 2 타이머의 상태를 모니터링하고, VMM 감시자의 실행 완료를 나타내기 위해 메인 프로세서 엘리먼트가 제 2 타이머를 종료시켰는지를 판단한다.
가상 머신의 무결성을 모니터링하는 다른 장치의 예는 컴퓨팅 디바이스의 제 1 타이머가 제 1 기간의 마지막에 도달하였음을 나타내는 표시를 수신하고, 컴퓨팅 디바이스의 메인 프로세서 엘리먼트에 의한 가상 머신 모니터(VMM) 감시자의 실행을 모니터링하고, 컴퓨팅 디바이스의 제 2 타이머가 제 2 기간의 마지막에 도달하기 전에 컴퓨팅 디바이스의 VMM의 무결성을 검증하기 위해 메인 프로세서 엘리먼트가 VMM 감시자의 실행을 완료했는지를 판단하고, 판단의 나타내는 결과 데이터를 다른 컴퓨팅 디바이스에 전달하는 수단을 포함한다.
다른 장치의 상기 예에서, 장치는 컴퓨팅 디바이스의 헬스 상태에 대한 적어도 하나의 감지기를 모니터링하고, 헬스 상태의 표시를 결과 데이터 내에 포함시키는 수단을 포함한다.
다른 장치의 상기 예 중 어느 하나에 있어서, 헬스 상태는 컴퓨팅 디바이스의 컴포넌트의 온도, 컴퓨팅 디바이스에 대한 전력 공급의 전압 레벨, 컴퓨팅 디바이스의 버스의 활동의 표시, 정정되지 않은 어레이/로직 에러의 표시, 컴퓨팅 디바이스의 클록 신호의 존재 또는 부재의 표시 중 적어도 하나를 포함한다.
다른 장치의 상기 예 중 어느 하나에 있어서, 장치는 메인 프로세서 엘리먼트에 의한 VMM 감시자의 실행을 모니터링하기 위해 인터럽트 컨트롤러의 상태를 모니터링하고, 메인 프로세서 엘리먼트가 인터럽트 컨트롤러를 재가동시켰는지를 판단하는 수단을 포함한다.
다른 장치의 상기 예 중 어느 하나에 있어서, 장치는 메인 프로세서 엘리먼트에 의한 VMM 감시자의 실행을 모니터링하기 위해 제 2 타이머의 상태를 모니터링하고, VMM 감시자의 실행의 완료를 나타내기 위해 메인 프로세서 엘리먼트가 제 2 타이머를 중지시켰는지를 판단하는 수단을 포함한다.
Claims (25)
- 가상 머신의 무결성을 모니터링하는 장치로서,
제 1 프로세서 엘리먼트와,
제 1 타이머가 제 1 기간의 마지막에 도달하였음을 나타내는 표시를 수신하고, 제 2 프로세서 엘리먼트에 의한 가상 머신 모니터(VMM) 감시자(watcher)의 실행을 모니터링하고, VMM의 무결성을 검증하기 위해 제 2 타이머가 제 2 기간의 마지막에 도달하기 전에 상기 제 2 프로세서 엘리먼트가 상기 VMM 감시자의 실행을 완료하는지를 판단하고, 상기 판단의 표시를 컴퓨팅 디바이스에 전달하는 제 1 로직을 포함하는
장치.
- 제 1 항에 있어서,
상기 제 1 로직은, 상기 제 2 프로세서 엘리먼트에 의한 상기 VMM 감시자의 실행을 모니터링하기 위해 인터럽트 컨트롤러의 상태를 모니터링하고 상기 제 2 프로세서 엘리먼트가 상기 인터럽트 컨트롤러를 재가동(re-enable)시켰는지를 판단하는
장치.
- 제 1 항에 있어서,
상기 제 1 로직은, 상기 제 2 프로세서 엘리먼트에 의한 상기 VMM 감시자의 실행을 모니터링하기 위해 상기 제 2 타이머의 상태를 모니터링하고 상기 VMM 감시자의 실행의 완료를 나타내기 위해 상기 제 2 프로세서 엘리먼트가 상기 제 2 타이머를 중지시켰는지를 판단하는
장치.
- 제 1 항에 있어서,
상기 제 1 로직은, 헬스 감지기(a health detector)를 포함하는 서버의 헬스 감지기, 상기 제 1 및 제 2 프로세서 엘리먼트를 모니터링하고 상기 서버의 헬스에 대한 표시를 상기 컴퓨팅 디바이스에 전달하는
장치.
- 제 1 항에 있어서,
상기 제 2 프로세서 엘리먼트 및 인터럽트 컨트롤러를 포함하고,
상기 VMM 감시자는, 상기 인터럽트 컨트롤러를 재가동하도록 상기 인터럽트 컨트롤러의 레지스터에 기록하고 상기 VMM 감시자의 실행을 중지하고, 상기 VMM을 실행시키는 제 2 로직을 포함하는
장치.
- 제 1 항에 있어서,
상기 제 2 프로세서를 포함하고, 상기 VMM 감시자는, 상기 VMM의 실행 동안 상기 컴퓨팅 디바이스로 전달되는 상기 VMM의 무결성의 검증 결과를 나타내는 결과 데이터를 마련하고 상기 VMM 감시자의 실행을 중지하고 상기 VMM의 실행을 시작하게 하는 제 2 로직을 포함하는
장치.
- 제 1 항에 있어서,
상기 제 1 타이머를 포함하고, 상기 제 1 타이머는 상기 제 1 기간의 지속 시간을 랜덤하게 선택하는 랜덤 타이머(a randomized timer)를 포함하는
장치.
- 제 1 항에 있어서,
상기 제 2 프로세서 엘리먼트를 포함하고, 상기 VMM 감시자는 키를 사용하여 상기 VMM에 임베디드된 디지털 서명을 검증하는 제 2 로직을 포함하는
장치.
- 제 1 항에 있어서,
상기 제 2 프로세서 엘리먼트를 포함하고, 상기 VMM 감시자는 상기 VMM 감시자의 완료를 나타내기 위해 상기 제 2 타이머를 중지시키도록 상기 제 2 타이머의 레지스터에 기록하는 제 2 로직을 포함하는
장치.
- 가상 머신의 무결성을 모니터링하는 장치로서,
프로세서 엘리먼트와,
상기 프로세서 엘리먼트를 서버에 연결하는 제 1 인터페이스와,
상기 서버의 제 1 타이머가 제 1 기간의 마지막에 도달하였음을 나타내는 표시를 수신하고, VMM의 무결성을 검증하기 위해 상기 서버의 제 2 타이머가 제 2 기간의 마지막에 도달하기 전에 상기 서버의 프로세서 엘리먼트에 의해 VMM 감시자가 실행되었는지를 나타내는 제 1 결과 데이터를 수신하고, 상기 검증의 결과를 나타내는 제 2 결과 데이터의 수신을 기다리는 로직을 포함하는
장치.
- 제 10 항에 있어서,
상기 로직은, 상기 서버로부터 상기 제 2 결과 데이터의 미수신에 응답하여 상기 제 2 결과 데이터의 미수신 원인을 판단하기 위해 적어도 상기 제 1 결과 데이터를 분석하는
장치.
- 제 11 항에 있어서,
상기 로직은, 상기 서버의 컴포넌트의 온도, 상기 서버로의 전력 공급의 전압 레벨, 상기 서버의 버스의 활동에 대한 표시, 정정되지 않은 어레이/로직 에러의 표시, 및 상기 서버의 클록 신호의 존재 또는 부재에 대한 표시 중 적어도 하나를 포함하는 상기 서버의 헬스의 표시를 수신하는
장치.
- 제 12 항에 있어서,
상기 로직은 상기 서버의 컨트롤러에게 시그널링하여 상기 서버를 재초기화(reinitialize)할지를 판단하는
장치.
- 제 12 항에 있어서,
상기 로직은 상기 서버의 헬스의 표시에 응답하여 상기 서버를 수리할 필요에 대한 표시를 제공하는
장치.
- 제 10 항에 있어서,
디스플레이를 포함하고, 상기 로직은 상기 VMM의 무결성이 상기 VMM 감시자에 의해 검증되지 않음을 나타내는 상기 제 2 결과의 수신에 응답하여 상기 VMM의 무결성이 손상된(compromised) 것으로 나타내는 표시를 시각적으로 제공하는
장치.
- 가상 머신의 무결성을 모니터링하는 컴퓨터로 구현된 방법으로서,
서버의 제 1 타이머가 제 1 기간의 마지막에 도달하였음을 나타내는 표시를 수신하고,
상기 서버의 메인 프로세서 엘리먼트에 의한 가상 머신 모니터(VMM) 감시자의 실행을 모니터링하고,
상기 서버의 VMM의 무결성을 검증하기 위해 상기 서버의 제 2 타이머가 제 2 기간의 마지막에 도달하기 전에 상기 메인 프로세서 엘리먼트가 상기 VMM 감시자의 실행을 완료하는지를 판단하고,
상기 서버의 헬스 상태에 대한 적어도 하나의 감지기를 모니터링하고,
상기 헬스 상태 및 상기 판단을 나타내는 결과 데이터를 컴퓨팅 디바이스에 전달하는 것을 포함하는
방법.
- 제 16 항에 있어서,
상기 메인 프로세서 엘리먼트에 의한 상기 VMM 감시자의 실행을 모니터링하기 위해 상기 서버의 인터럽트 컨트롤러의 상태를 모니터링하고, 상기 메인 프로세서 엘리먼트가 상기 인터럽트 컨트롤러를 재가동시켰는지를 판단하는 것을 포함하는
방법.
- 제 17 항에 있어서,
상기 VMM의 무결성의 검증 이후에 상기 인터럽트 컨트롤러를 재가동하도록 상기 인터럽트 컨트롤러의 레지스터에 기록하는 것을 포함하는
방법.
- 제 16 항에 있어서,
상기 메인 프로세서 엘리먼트에 의한 상기 VMM 감시자의 실행을 모니터링하기 위해 상기 제 2 타이머의 상태를 모니터링하고,
상기 VMM 감시자의 실행 완료를 나타내기 위해 상기 메인 프로세서 엘리먼트가 상기 제 2 타이머를 중지시켰는지를 판단하는 것을 포함하는
방법.
- 제 19 항에 있어서,
상기 VMM 감시자의 완료를 나타내기 위해 상기 타이머를 중지시키도록 상기 제 2 타이머의 레지스터에 기록하는 것을 포함하는
방법.
- 제 16 항에 있어서,
상기 VMM에 임베디드된 디지털 서명을 검증하기 위해 키를 사용하는 것을 포함하는
방법.
- 적어도 하나의 머신 판독 가능한 저장 매체로서, 컴퓨팅 디바이스에 의해 실행될 때 상기 컴퓨팅 디바이스로 하여금,
상기 컴퓨팅 디바이스의 제 1 타이머가 제 1 기간의 마지막에 도달하였음을 나타내는 표시를 수신하고,
상기 컴퓨팅 디바이스의 메인 프로세서 엘리먼트에 의한 가상 머신 모니터(VMM) 감시자의 실행을 모니터링하고,
상기 컴퓨팅 디바이스의 VMM의 무결성을 검증하기 위해 상기 컴퓨팅 디바이스의 제 2 타이머가 제 2 기간의 마지막에 도달하기 전에 상기 메인 프로세서 엘리먼트가 상기 VMM 감시자의 실행을 완료하는지를 판단하고,
상기 판단을 나타내는 결과 데이터를 다른 컴퓨팅 디바이스에 전달하도록 하는 명령을 포함하는
머신 판독 가능한 저장 매체.
- 제 22 항에 있어서,
상기 컴퓨팅 디바이스는 상기 컴퓨팅 디바이스의 헬스 상태에 대한 적어도 하나의 감지자를 모니터링하고, 상기 결과 데이터 내에 상기 헬스 상태의 표시를 포함시키는
머신 판독 가능한 저장 매체.
- 제 22 항에 있어서,
상기 컴퓨팅 디바이스는, 상기 메인 프로세서 엘리먼트에 의한 상기 VMM 감시자의 실행을 모니터링하기 위해 상기 컴퓨팅 디바이스의 인터럽트 컨트롤러의 상태를 모니터링하고, 상기 메인 프로세서 엘리먼트가 상기 인터럽트 컨트롤러를 재가동시켰는지를 판단하는
머신 판독 가능한 저장 매체.
- 제 22 항에 있어서,
상기 컴퓨팅 디바이스는, 상기 메인 프로세서 엘리먼트에 의한 상기 VMM 감시자의 실행을 모니터링하기 위해 상기 제 2 타이머의 상태를 모니터링하고, 상기 VMM 감시자의 실행 완료를 나타내기 위해 상기 메인 프로세서 엘리먼트가 상기 제 2 타이머를 종료시켰는지를 판단하는
머신 판독 가능한 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/797,924 | 2013-03-12 | ||
US13/797,924 US9720716B2 (en) | 2013-03-12 | 2013-03-12 | Layered virtual machine integrity monitoring |
PCT/US2014/022260 WO2014159158A1 (en) | 2013-03-12 | 2014-03-10 | Layered virtual machine integrity monitoring |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150105990A true KR20150105990A (ko) | 2015-09-18 |
KR101725211B1 KR101725211B1 (ko) | 2017-04-10 |
Family
ID=51534724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157021737A KR101725211B1 (ko) | 2013-03-12 | 2014-03-10 | 계층형 가상 머신 무결성 모니터링 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9720716B2 (ko) |
EP (1) | EP2972853B1 (ko) |
JP (1) | JP6017709B2 (ko) |
KR (1) | KR101725211B1 (ko) |
CN (1) | CN104995602B (ko) |
WO (1) | WO2014159158A1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10009371B2 (en) * | 2013-08-09 | 2018-06-26 | Nicira Inc. | Method and system for managing network storm |
CN103488937B (zh) * | 2013-09-16 | 2017-02-22 | 华为技术有限公司 | 一种度量方法、电子设备及度量系统 |
US10063445B1 (en) * | 2014-06-20 | 2018-08-28 | Amazon Technologies, Inc. | Detecting misconfiguration during software deployment |
US8937496B1 (en) * | 2014-08-20 | 2015-01-20 | Xilinx, Inc. | Clock monitor |
US10037424B1 (en) * | 2015-12-22 | 2018-07-31 | Amazon Technologies, Inc. | Isolated virtual environments for untrusted applications |
US10459747B2 (en) * | 2016-07-05 | 2019-10-29 | Red Hat Israel, Ltd. | Exitless timer access for virtual machines |
CN106502868B (zh) * | 2016-11-18 | 2020-02-14 | 国云科技股份有限公司 | 一种适用于云计算的动态调整监测频率方法 |
CN112364343B (zh) * | 2020-11-16 | 2022-05-06 | 支付宝(杭州)信息技术有限公司 | 虚拟机监控器秘密的保护方法、装置和电子设备 |
US12038806B2 (en) * | 2022-06-02 | 2024-07-16 | Micron Technology, Inc. | Evaluation of memory device health monitoring logic |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7069439B1 (en) * | 1999-03-05 | 2006-06-27 | Hewlett-Packard Development Company, L.P. | Computing apparatus and methods using secure authentication arrangements |
JP2008513909A (ja) * | 2004-09-30 | 2008-05-01 | インテル・コーポレーション | 仮想マシンモニタに関連するタイマへのサポートを提供する方法及び装置 |
US20090164770A1 (en) * | 2007-12-20 | 2009-06-25 | Zimmer Vincent J | Hypervisor runtime integrity support |
US7774855B2 (en) * | 2002-05-07 | 2010-08-10 | Savvis Communications Corporation | Integrity monitoring system and data visualization tool for viewing data generated thereby |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123107A (en) * | 1989-06-20 | 1992-06-16 | Mensch Jr William D | Topography of CMOS microcomputer integrated circuit chip including core processor and memory, priority, and I/O interface circuitry coupled thereto |
US5926640A (en) * | 1996-11-01 | 1999-07-20 | Digital Equipment Corporation | Skipping clock interrupts during system inactivity to reduce power consumption |
US5987598A (en) * | 1997-07-07 | 1999-11-16 | International Business Machines Corporation | Method and system for tracking instruction progress within a data processing system |
US6718482B2 (en) * | 1997-09-12 | 2004-04-06 | Hitachi, Ltd. | Fault monitoring system |
DE19928061C2 (de) * | 1999-06-15 | 2003-08-28 | Francotyp Postalia Ag | Sicherheitsmodul zur Überwachung der Systemsicherheit und Verfahren |
US20020161961A1 (en) | 2001-01-17 | 2002-10-31 | Ajile Systems, Inc. | Multiple virtual machine environment management system |
US20030074315A1 (en) * | 2001-10-16 | 2003-04-17 | Sterling National Bank | System and apparatus for remotely printing certified documents |
US20030130953A1 (en) * | 2002-01-09 | 2003-07-10 | Innerpresence Networks, Inc. | Systems and methods for monitoring the presence of assets within a system and enforcing policies governing assets |
US6993681B2 (en) * | 2002-04-15 | 2006-01-31 | General Electric Corporation | Remote administration in a distributed system |
CN100386740C (zh) * | 2002-12-12 | 2008-05-07 | 有限状态机实验室公司 | 用于检测计算机系统中的安全漏洞的系统和方法 |
US7593936B2 (en) * | 2003-08-11 | 2009-09-22 | Triumfant, Inc. | Systems and methods for automated computer support |
US7937759B2 (en) * | 2003-10-02 | 2011-05-03 | Auburn University | System and method for protecting communication devices from denial of service attacks |
US7567974B2 (en) * | 2004-09-09 | 2009-07-28 | Microsoft Corporation | Method, system, and apparatus for configuring a data protection system |
US8271838B2 (en) * | 2004-11-16 | 2012-09-18 | Siemens Corporation | System and method for detecting security intrusions and soft faults using performance signatures |
US20060200726A1 (en) * | 2005-03-03 | 2006-09-07 | Seagate Technology Llc | Failure trend detection and correction in a data storage array |
US7694331B2 (en) * | 2005-04-01 | 2010-04-06 | Nokia Corporation | Phone with secure element and critical data |
US7953980B2 (en) * | 2005-06-30 | 2011-05-31 | Intel Corporation | Signed manifest for run-time verification of software program identity and integrity |
US7685638B1 (en) * | 2005-12-13 | 2010-03-23 | Symantec Corporation | Dynamic replacement of system call tables |
US20080147247A1 (en) * | 2006-12-18 | 2008-06-19 | Anton Weldin | Circuit for controlling an acceleration, braking and steering system of a vehicle |
JP4958641B2 (ja) * | 2007-05-29 | 2012-06-20 | 株式会社日立製作所 | 記憶制御装置及びその制御方法 |
US7831818B2 (en) * | 2007-06-20 | 2010-11-09 | Freescale Semiconductor, Inc. | Exception-based timer control |
US8402536B2 (en) * | 2008-04-15 | 2013-03-19 | Nokia Corporation | Signature based authentication of the configuration of a configurable logic component |
US20090327741A1 (en) * | 2008-06-30 | 2009-12-31 | Zimmer Vincent J | System and method to secure boot uefi firmware and uefi-aware operating systems on a mobile internet device (mid) |
US8516260B2 (en) * | 2008-10-27 | 2013-08-20 | Advanced Micro Devices, Inc. | Method, apparatus, and device for providing security among a calling function and a target function |
JP5322620B2 (ja) * | 2008-12-18 | 2013-10-23 | 株式会社東芝 | 情報処理装置、プログラム開発システム、プログラム検証方法及びプログラム |
US8140668B2 (en) | 2009-06-24 | 2012-03-20 | Red Hat Israel, Ltd. | Pre-scheduling the timelines of virtual machines |
KR20110111855A (ko) * | 2010-04-05 | 2011-10-12 | 주식회사 팬택 | 채널상태정보 피드백 장치와 그 방법, 기지국 |
CN101847188A (zh) * | 2010-04-28 | 2010-09-29 | 北京飞天诚信科技有限公司 | 一种基于时钟的安全装置的软件保护方法及安全装置 |
US9158564B2 (en) * | 2012-04-30 | 2015-10-13 | American Megatrends, Inc. | Virtual service processor stack |
US9046570B2 (en) * | 2012-08-03 | 2015-06-02 | Freescale Semiconductor, Inc. | Method and apparatus for limiting access to an integrated circuit (IC) |
US8978032B2 (en) * | 2012-11-15 | 2015-03-10 | Bank Of America Corporation | Host naming application programming interface |
US8954546B2 (en) * | 2013-01-25 | 2015-02-10 | Concurix Corporation | Tracing with a workload distributor |
-
2013
- 2013-03-12 US US13/797,924 patent/US9720716B2/en active Active
-
2014
- 2014-03-10 EP EP14775763.7A patent/EP2972853B1/en active Active
- 2014-03-10 KR KR1020157021737A patent/KR101725211B1/ko active IP Right Grant
- 2014-03-10 CN CN201480008468.3A patent/CN104995602B/zh active Active
- 2014-03-10 JP JP2015561750A patent/JP6017709B2/ja active Active
- 2014-03-10 WO PCT/US2014/022260 patent/WO2014159158A1/en active Application Filing
-
2017
- 2017-07-31 US US15/665,382 patent/US10671416B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7069439B1 (en) * | 1999-03-05 | 2006-06-27 | Hewlett-Packard Development Company, L.P. | Computing apparatus and methods using secure authentication arrangements |
US7774855B2 (en) * | 2002-05-07 | 2010-08-10 | Savvis Communications Corporation | Integrity monitoring system and data visualization tool for viewing data generated thereby |
JP2008513909A (ja) * | 2004-09-30 | 2008-05-01 | インテル・コーポレーション | 仮想マシンモニタに関連するタイマへのサポートを提供する方法及び装置 |
US20090164770A1 (en) * | 2007-12-20 | 2009-06-25 | Zimmer Vincent J | Hypervisor runtime integrity support |
Also Published As
Publication number | Publication date |
---|---|
US9720716B2 (en) | 2017-08-01 |
JP6017709B2 (ja) | 2016-11-02 |
US10671416B2 (en) | 2020-06-02 |
CN104995602B (zh) | 2018-09-28 |
JP2016515249A (ja) | 2016-05-26 |
KR101725211B1 (ko) | 2017-04-10 |
WO2014159158A1 (en) | 2014-10-02 |
EP2972853A1 (en) | 2016-01-20 |
US20170371689A1 (en) | 2017-12-28 |
CN104995602A (zh) | 2015-10-21 |
US20140282502A1 (en) | 2014-09-18 |
EP2972853A4 (en) | 2016-10-19 |
EP2972853B1 (en) | 2019-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101725211B1 (ko) | 계층형 가상 머신 무결성 모니터링 | |
CN100489805C (zh) | 运行时间安全保证的自动存储器检测器及其方法 | |
JP5534029B2 (ja) | データ保護方法、装置及びシステム | |
CN101989242B (zh) | 一种提高soc系统安全的总线监视器及其实现方法 | |
US10788984B2 (en) | Method, device, and system for displaying user interface | |
CN110321715A (zh) | 可信度量方法、装置及处理器 | |
CN106662994B (zh) | 检测系统管理模式bios代码的改变 | |
US20160378691A1 (en) | System, apparatus and method for protecting a storage against an attack | |
WO2016029761A1 (zh) | 安全智能终端设备、及信息处理方法 | |
CN105765596A (zh) | 集成端点和网络检测并消除攻击的技术 | |
CN109840430A (zh) | Plc的安全处理单元及其总线仲裁方法 | |
US20140096270A1 (en) | Secure data containers and data access control | |
EP3588355B1 (en) | Information processing apparatus for detecting tampering with software executed at boot time, method for rebooting information processing apparatus, storage medium, and program | |
WO2017105706A1 (en) | Processor state integrity protection using hash verification | |
CN111158767A (zh) | 基于bmc的服务器安全启动方法及装置 | |
US20230259636A1 (en) | Security assessment apparatus and method for processor | |
JP2010129095A (ja) | データ保護方法とコンピュータ装置 | |
WO2017105781A1 (en) | Integrity protection for system management mode | |
EP3570197A1 (en) | Electronic system and method for preventing malicious actions on a processing system of the electronic system | |
WO2018194568A1 (en) | Executing processes in sequence | |
US11328055B2 (en) | Process verification | |
KR102019483B1 (ko) | 이동식 저장 장치 및 그의 보안 방법 | |
US11874953B1 (en) | Method and system for runtime integrity check | |
WO2016122590A1 (en) | Processor state determination |
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 |