KR20150132218A - 게스트 운영 체계 및 가상 프로세서들과 함께 하이퍼바이저를 이용하는 시스템들 및 방법들 - Google Patents
게스트 운영 체계 및 가상 프로세서들과 함께 하이퍼바이저를 이용하는 시스템들 및 방법들 Download PDFInfo
- Publication number
- KR20150132218A KR20150132218A KR1020157027145A KR20157027145A KR20150132218A KR 20150132218 A KR20150132218 A KR 20150132218A KR 1020157027145 A KR1020157027145 A KR 1020157027145A KR 20157027145 A KR20157027145 A KR 20157027145A KR 20150132218 A KR20150132218 A KR 20150132218A
- Authority
- KR
- South Korea
- Prior art keywords
- operating system
- guest operating
- task
- priority
- hypervisor
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- 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
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
Abstract
장치는 프로세서 및 게스트 운영 체계를 포함한다. 태스크를 생성하기 위한 요청을 수신하는 것에 응답하여, 게스트 운영 체계는 요청된 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청한다. 가상 프로세서는 프로세서 상에서 스케줄링가능하다.
Description
관련 출원들에 대한 상호 참조
[0001] 본 출원은 2013년 3월 14일 출원되었으며, 본원과 소유자가 동일한 미국 정규 특허 출원 제 13/828,183호를 우선권으로 주장하며, 이 미국 정규 특허 출원의 내용들은 인용에 의해 전체적으로 본 명세서에 명백하게 통합된다.
[0002] 본 개시는 일반적으로 하이퍼바이저를 이용한 운영 체계들의 가상화에 관한 것이다.
[0003] 기술의 발전은 더 작고 더 강력한 컴퓨팅 디바이스들을 초래하였다. 예를 들어, 소형 경량이며 사용자에 의해 용이하게 운반되는 무선 컴퓨팅 디바이스들, 이를테면, 휴대용 무선 전화들, 개인 디지털 보조기(PDA)들, 태블릿 컴퓨터들, 및 페이징 디바이스들을 비롯해, 다양한 휴대용 개인 컴퓨팅 디바이스들이 현재 존재한다. 많은 이러한 컴퓨팅 디바이스들은 그 속에 포함되는 다른 디바이스들을 포함한다. 예를 들어, 무선 전화는 또한 디지털 스틸 카메라, 디지털 비디오 카메라, 디지털 레코더, 및 오디오 파일 플레이어를 포함할 수 있다. 또한, 이러한 컴퓨팅 디바이스들은 소프트웨어 애플리케이션들, 이를테면, 스틸 및 비디오 카메라를 사용하고 멀티미디어 재생 기능을 제공하는 멀티미디어 애플리케이션들 및 인터넷에 액세스하도록 사용될 수 있는 웹 브라우저 애플리케이션을 비롯해 실행가능한 명령들을 프로세싱할 수 있다.
[0004] 이러한 진보된 기능을 지원하기 위해, 컴퓨팅 디바이스들은 운영 체계를 포함할 수 있다. 운영 체계는 이용가능한 하드웨어 리소스들의 추상화(abstraction)들을 제공할 수 있다. 예를 들어, 운영 체계는 다양한 소프트웨어 태스크들 중에서 시스템 리소스들(예를 들어, 프로세서, 메모리 등)을 멀티플렉싱할 수 있다. 운영 체계는 또한 실행을 위해 태스크들을 스케줄링하고 메모리 관리를 수행할 수 있다. 또한, 운영 체계는 이벤트들에 대한 블로킹 및 언블로킹을 핸들링할 수 있다.
[0005] 어떤 상황들에서는, 단일 컴퓨팅 디바이스에서 다수의 운영 체계들 또는 동일한 운영 체계의 다수의 인스턴스들을 실행하는 것이 유리할 수 있다. 하이퍼바이저(또한 가상 머신 모니터로도 알려짐)는 이용가능한 하드웨어 리소스들의 추상화들을 운영 체계들에 제공할 수 있다. 따라서, 하이퍼바이저는 다수의 운영 체계들(또는 동일한 운영 체계의 다수의 인스턴스들)에 대해 운영 체계로서 역할을 할 수 있다. 하이퍼바이저가 사용될 때, 하이퍼바이저는, 특정 시간에 어느 운영 체계 및 그의 태스크에 특정 하드웨어 리소스에 대한 액세스가 보장되는 지를 결정하기 위한 스케줄러를 포함할 수 있다. 따라서, 스케줄링의 다수의 레벨들이 시스템 내에서 실행되고 있을 수 있다: 제 1 레벨은 각각의 개별 운영 체계의 스케줄러들을 포함할 수 있고, 제 2 레벨은 하이퍼바이저의 스케줄러를 포함할 수 있다.
[0006] 스케줄링의 다수의 레벨들을 수행하는 것은 (예를 들어, 하이퍼바이저에 의해 수행되는 콘텍스트 스위치들로 인해) 시스템에 오버헤드를 초래한다. 이러한 오버헤드는, 운영 체계들 중 하나 또는 그 이상이 특정 지연들을 보장할 수 있어야 하는 실시간 운영 체계인 경우, 용인될 수 없다. 다중 운영 체계 환경에서 실시간 운영 체계를 포함하기 위해, 실시간 운영 체계에는 통상적으로 "특별" 우선 순위가 주어진다. 예를 들어, 실시간 운영 체계는 이용가능한 최고 우선 순위를 가질 수 있다. 그러나 각 운영 체계 내의 태스크 우선 순위 정보에 하이퍼바이저가 액세스 가능하지 않을 수 있기 때문에, 이는 비효율적일 수 있다. 예를 들어, 실시간 운영 체계가 중요하지 않은 태스크를 실행하고 있지만 다른 운영 체계가 중요한 태스크를 실행하고 있는 경우, 하이퍼바이저가 상대적으로 중요하지 않은 실시간 운영 체계 태스크를 먼저 여전히 스케줄링할 수 있다.
[0007] 하이퍼바이저 제어 컴퓨팅 환경에서 운영 체계(예를 들어, 실시간 운영 체계)가 감소된 지연으로 실행될 수 있게 하는 시스템들 및 방법들이 개시된다. 내장된 스케줄러들을 갖는 통상의 게스트 운영 체계들 대신(또는 이에 부가하여), 설명된 기술들은 제한된 스케줄링 기능을 포함하거나 또는 포함하지 않고 그리고 대신에 스케줄링을 위해 하이퍼바이저에 의존하는 "씬(thin)" 게스트 운영 체계들을 사용한다. 블로킹 및 언블로킹은 또한 개별 운영 체계들 대신에 하이퍼바이저에 의해 핸들링될 수 있다. 더욱이, 하이퍼바이저는 개별 운영 체계들 각각의 태스크의 우선 순위들에 대한 정보에 액세스할 수 있다.
[0008] "씬" 운영 체계에서 새로운 태스크가 생성될 때만다, "씬" 운영 체계는 태스크에 대한 "가상 프로세서"를 생성하도록 하이퍼바이저에 요청할 수 있다. 하이퍼바이저는 근본적인 물리적 하드웨어(예를 들어, 하드웨어 프로세서(들))에 대한 실행을 위한 가상 프로세서를 스케줄링할 수 있고, 가상 프로세서는 대응하는 태스크가 존재하는 한, 유지될 수 있다. 예를 들어, 각각의 태스크는 가상 프로세서와 관련될 수 있고, 모든 스케줄링은 하이퍼바이저의 스케줄러에 의해 핸들링될 수 있다. 더욱이, 하이퍼바이저의 스케줄러는 개별 태스크들/가상 프로세서들의 우선순위들에 액세스할 수 있으며, 이는 모든 게스트 운영 체계들에 걸쳐 더욱 효율적인 가상 프로세서 스케줄링을 수행하는데 사용될 수 있다. 따라서, 설명된 시스템들 및 방법들은 개별 운영 체계들을 간략화할 수 있고 하이퍼바이저- 제어 컴퓨팅 환경에서 전체 지연을 감소시킬 수 있으며, 그로 인해 하나 또는 그 이상의 실시간 운영 체계들 및 하이퍼바이저-제어 컴퓨팅 환경의 다른 운영 체계들의 사용을 이네이블한다.
[0009] 특정 실시예에서, 장치는 프로세서 및 하이퍼바이저를 포함한다. 하이퍼바이저는 프로세서에 의한 실행을 위해 가상 프로세서들을 스케줄링하도록 구성된다. 가상 프로세서들 각각은 하이퍼바이저가 액세스할 수 있고 대응하는 태스크의 태스크 우선 순위에 대응하는 우선 순위를 갖는다. 태스크 우선 순위는 게스트 운영 체계에 의해 할당된다.
[0010] 다른 특정 실시예에서, 방법은, 태스크를 실행하기 위해 가상 프로세서를 생성하기 위한 게스트 운영 체계로부터의 요청을 컴퓨팅 디바이스의 하이퍼바이저에서 수신하는 단계를 포함한다. 이 방법은 또한 가상 프로세서를 생성하는 단계 및 컴퓨팅 디바이스의 하드웨어 프로세서 상에서 실행을 위해 가상 프로세서를 스케줄링하는 단계를 포함한다. 가상 프로세서는 게스트 운영 체계에 의해 할당되는 우선 순위를 가지며, 이 우선 순위는 태스크의 태스크 우선 순위에 대응한다.
[0011] 다른 특정 실시예에서, 장치는 프로세싱하기 위한 수단 및 프로세싱하기 위한 수단에 의해 실행가능한 스케줄링하기 위한 수단을 포함한다. 스케줄링하기 위한 수단은 프로세싱하기 위한 수단에 의한 실행을 위해 가상 프로세서들을 스케줄링하도록 구성된다. 가상 프로세서들 각각은 스케줄링하기 위한 수단이 액세스할 수 있고 대응하는 태스크의 태스크 우선 순위에 대응하는 우선 순위를 갖는다. 태스크 우선 순위는 제 1 게스트 운영 체계에 의해 할당된다.
[0012] 다른 특정 실시예에서, 비 일시적 컴퓨터 판독 가능 매체는 명령들을 포함하며, 이 명령들은 컴퓨터에 의해 실행될 때, 컴퓨터로 하여금, 태스크를 실행하기 위해 가상 프로세서를 생성하기 위한 게스트 운영 체계로부터의 요청을 하이퍼바이저에서 수신하게 한다. 이 명령들은 또한 컴퓨터에 의해 실행될 때 컴퓨터로 하여금, 가상 프로세서를 생성하게 하고, 실행을 위해 가상 프로세서를 스케줄링하게 한다. 가상 프로세서는 태스크의 태스크 우선 순위에 대응하는 우선 순위를 갖는다. 태스크 우선 순위는 게스트 운영 체계에 의해 할당된다.
[0013] 다른 특정 실시예에서, 장치는 프로세서 및 게스트 운영 체계를 포함한다. 태스크를 생성하기 위한 요청의 수신에 응답하여, 게스트 운영 체계는 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청한다. 가상 프로세서는 프로세서 상에서 스케줄링가능하다.
[0014] 다른 특정한 실시예에서, 방법은, 태스크를 생성하기 위한 요청을, 하이퍼바이저 및 적어도 하나의 프로세서를 포함하는 컴퓨팅 디바이스에서 실행하는 게스트 운영 체계에서 수신하는 단계를 포함한다. 이 방법은 또한, 태스크를 생성하기 위한 요청에 응답하여, 요청된 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하는 단계를 포함한다. 가상 프로세서는 적어도 하나의 프로세서 상에서 스케줄링가능하다.
[0015] 다른 특정 실시예에서, 장치는, 프로세서 및 게스트 운영 체계를 포함한다. 게스트 운영 체계는 태스크를 생성하기 위한 요청의 수신에 응답하여, 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하기 위한 수단을 포함한다. 가상 프로세서는 프로세서 상에서 스케줄링가능하다.
[0016] 다른 특정 실시예에서, 비 일시적 컴퓨터 판독 가능 매체는 명령들을 포함하며, 이 명령들은 컴퓨터에 의해 실행될 때, 컴퓨터로 하여금, 태스크를 생성하기 위한 요청을 게스트 운영 체계에서 수신하게 한다. 이 명령들은 또한 컴퓨터에 의해 실행될 때, 컴퓨터로 하여금, 태스크를 생성하기 위한 요청에 응답하여, 요청된 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하게 한다. 가상 프로세서는 하드웨어 프로세서 상에서 스케줄링가능하다.
[0017] 다른 특정 실시예에서, 전자 디바이스는, 프로세서, 하이퍼바이저, 제 1 게스트 운영 체계 및 제 2 게스트 운영 체계를 포함한다. 제 1 게스트 운영 체계의 적어도 하나의 태스크는 하이퍼바이저로부터 제 1 게스트 운영 체계에 의해 요청된 제 1 가상 프로세서에 의해 실행된다. 제 2 게스트 운영 체계의 적어도 하나의 태스크는 하이퍼바이저로부터 제 2 게스트 운영 체계에 의해 요청된 제 2 가상 프로세서에 의해 실행된다. 제 1 가상 프로세서 및 제 2 가상 프로세서는 프로세서에 의해 실행된다.
[0018] 개시된 실시예들 중 적어도 하나에 의해 제공되는 특정한 일 장점은 감소된 지연으로 다수의 게스트 운영 체계들로부터의 태스크들의 우선 순위화된 스케줄링을 수행하는 성능이다. 개시된 실시예들 중 적어도 하나에 의해 제공되는 다른 특정한 장점은 하이퍼바이저-제어 컴퓨팅 환경 내에서 실시간 운영 체계(들)를 사용하는 성능이다. 본 개시의 다른 양상들, 장점들 및 특징들은, 이하의 도면의 간단한 설명, 발명을 실시하기 위한 구체적인 내용, 및 청구항 부분을 포함하는 전체 출원을 검토한 후 명백해질 것이다.
[0019] 도 1은 게스트 운영 체계들 및 가상 프로세서들과 함께 하이퍼바이저를 이용하도록 동작가능한 시스템의 예시적인 실시예의 블록도이다.
[0020] 도 2는 게스트 운영 체계들 및 가상 프로세서들과 함께 하이퍼바이저를 이용하도록 동작가능한 시스템의 다른 예시적인 실시예의 블록도이다.
[0021] 도 3은 도 1의 하이퍼바이저에서의 동작 방법의 예시적인 실시예의 흐름도이다.
[0022] 도 4는 도 1의 게스트 운영 체계들 중 하나에서의 동작 방법의 예시적인 실시예의 흐름도이다.
[0023] 도 5는 게스트 운영 체계들 및 가상 프로세서들과 함께 하이퍼바이저의 사용을 지원하도록 동작가능한 컴포넌트들을 포함하는 무선 디바이스의 블록도이다.
[0024] 도 6은 우선 순위 계승을 수행하도록 동작가능한 시스템의 예시적인 실시예의 블록도이다.
[0020] 도 2는 게스트 운영 체계들 및 가상 프로세서들과 함께 하이퍼바이저를 이용하도록 동작가능한 시스템의 다른 예시적인 실시예의 블록도이다.
[0021] 도 3은 도 1의 하이퍼바이저에서의 동작 방법의 예시적인 실시예의 흐름도이다.
[0022] 도 4는 도 1의 게스트 운영 체계들 중 하나에서의 동작 방법의 예시적인 실시예의 흐름도이다.
[0023] 도 5는 게스트 운영 체계들 및 가상 프로세서들과 함께 하이퍼바이저의 사용을 지원하도록 동작가능한 컴포넌트들을 포함하는 무선 디바이스의 블록도이다.
[0024] 도 6은 우선 순위 계승을 수행하도록 동작가능한 시스템의 예시적인 실시예의 블록도이다.
[0025] 도 1은 게스트 운영 체계들 및 가상 프로세서들과 함께 하이퍼바이저를 사용하도록 동작가능한 시스템(100)의 예시적인 실시예의 블록도이다. 시스템(100)은 하나 이상의 하드웨어 리소스들, 이를테면, 하나 이상의 프로세서들(110)을 포함한다. 시스템은 또한 프로세서들(110)에 의해 실행가능한 하이퍼바이저(120)를 포함한다. 하이퍼바이저(120)는 하나 이상의 게스트 운영 체계들, 이를테면, 예시적인 제 1 게스트 운영 체계(130) 및 예시적인 제 2 게스트 운영 체계(140)에 의한 하나 또는 그 이상의 프로세서들(110)에 대한 액세스를 조정할 수 있다. 본 명세서에 추가로 설명되듯이, 게스트 운영 체계들(130, 140) 중 하나 또는 그 이상은 실시간 운영 체계(RTOS)일 수 있다.
[0026] 하이퍼바이저(120)는 다양한 논리적 및/또는 기능적 모듈들을 포함할 수 있다. 특정한 실시예에서, 각각의 이러한 모듈은 프로세서(110)에 의해 실행가능한 소프트웨어 명령들을 이용하여 구현된다. 대안적으로, 하이퍼바이저(120)의 선택된 기능은 하드웨어 디바이스들, 이를테면, 제어기, 주문형 집적회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA) 디바이스, 또는 기타 다른 디바이스를 이용하여 구현될 수 있다. 도 1의 실시예에서, 하이퍼바이저(120)는 우선 순위 인식 스케줄러(121), 가상 프로세서 생성/삭제 모듈(122), 및 가상 프로세서 블로킹/언블로킹 모듈(123)을 포함한다. 그러나 모듈들(121-123)은 단지 설명을 위한 것임을 주목해야 한다. 대안적인 실시예들에서, 하이퍼바이저(120)와 관련하여 설명된 기능들은 더 많거나 더 적은 모듈들을 사용하여 실행될 수 있다.
[0027] 가상 프로세서 생성/삭제 모듈(122)은 게스트 운영 체계들(130, 140) 중 어느 하나로부터의 요청을 수신하도록 구성될 수 있다. 예를 들어, 요청은 운영 체계-하이퍼바이저 통신 메커니즘, 이를테면 애플리케이션 프로그래밍 인터페이스(API) 또는 공유 메모리 영역을 통해 수신될 수 있다. 요청에 응답하여, 가상 프로세서 생성/삭제 모듈(122)은 가상 프로세서를 생성할 수 있다. 설명을 위해, 제 1 게스트 운영 체계(130)는 4개의 태스크들(151, 152, 153, 및 154)과 관련된다. 태스크들(151, 152, 153, 및 154) 각각은 대응하는 가상 프로세서(131, 132, 133, 및 134) 각각과 관련된다. 유사하게, 제 2 게스트 운영 체계(140)는 4개의 태스크들(161, 162, 163, 및 164)과 관련된다. 태스크들(161, 162, 163, 및 164) 각각은 대응하는 가상 프로세서(141, 142, 143, 및 144) 각각과 관련된다. 태스크들(151-154 및 161-164)은 사용자 모드(예를 들어, 애플리케이션 레벨) 또는 게스트 모드(예를 들어, 게스트 운영 체계 레벨) 루틴들 또는 서브루틴들과 관련될 수 있다. 태스크들(151-154 및 161-164)은 메모리에 저장되고 프로세서(110)에 의해 실행가능한 명령들의 세트(예를 들어, 프로그램 코드)에 대응할 수 있다. 예를 들어, 특정 애플리케이션은 "주된" 태스크 및 "주된 태스크"에 의해 발생되는 하나 이상의 추가 태스크들(예를 들어, 하나 이상의 그래픽 사용자 인터페이스(GUI) 태스크들, 하나 이상의 데이터 프로세싱 태스크들 등)과 관련될 수 있다.
[0028] 도 1의 시스템(100)에서, 가상 프로세서들은 대응하는 태스크들이 대응하는 게스트 운영 체계들에 의해 유지되는 한, 유지될 수 있다. 태스크가 완료된 경우, 가상 프로세서 생성/삭제 모듈(122)은 태스크를 위한 가상 프로세서를 삭제 및/또는 할당 해제할 수 있다. 가상 프로세서 생성/삭제 모듈(122)은, 프로세서들(110)에서 종료(exit) 또는 리턴 명령에 기초하여 또는 게스트 운영 체계으로부터의 통지에 응답하여 태스크가 완료되었다고 탐지할 수 있다. 특정 실시예에서, 가상 프로세서의 생성은 가상 프로세서에 하드웨어 및/또는 소프트웨어 리소스들을 할당하는 것을 포함할 수 있고, 가상 프로세서를 삭제하는 것은 가상 프로세서의 하드웨어 및/또는 소프트웨어 리소스들의 할당 해제를 포함할 수 있다.
[0029] 하이퍼바이저(120)의 관점에서, 가상 프로세서들(131-134 및 141-144) 각각은 스케줄링 가능한 엔티티라는 것을 주목해야 한다. 반대로, 게스트 운영 체계들(130 및 140)의 관점에서, 가상 프로세서들(131-134 및 141-144) 각각은 하드웨어 리소스 추상화일 수 있다. 태스크들(151-154 및 161-164) 각각은 게스트 운영 체계들(130 및 140)에서 실행되는 애플리케이션들 또는 게스트 운영 체계들(130 및 140)에 의해 개시되는 하나 또는 그 이상의 스레드들 또는 소프트웨어 루틴들/서브루틴들에 대응할 수 있다.
[0030] 우선 순위 인식 스케줄러(121)는 실행을 위해 가상 프로세서들(131-134 및 141-144)을 스케줄링하도록 구성될 수 있다. 스케줄러(121)는 "우선 순위 인식"을 하는 것으로 고려될 수 있는데, 그 이유는 스케줄러(121)가 개별 가상 프로세스들의 우선 순위 정보에 액세스할 수 있기 때문이다. 예를 들어, 도 1의 실시예에서, 각각의 가상 프로세서는 1 내지 3의 가상 프로세서 우선 순위를 갖는다. 우선 순위 1은 최고의 우선 순위일 수 있고, 우선 순위 3은 최저의 우선 순위일 수 있다. 대안적인 실시예들에서, 더 많거나 더 적은 우선 순위 지정들이 사용될 수 있다. 가상 프로세서의 우선 순위는 가상 프로세서에 대응하는 태스크의 태스크 우선 순위와 동일하거나, 이를 반영하거나 그렇지 않으면 이에 기초할 수 있다. 예를 들어, 가상 프로세서(134)는 태스크 우선 순위 2를 가지며, 이는 대응하는 태스크(154)의 태스크 우선 순위와 동일하다. 태스트(154)의 태스크 우선 순위는, 본 명세서에 추가로 설명되듯이, 태스크 생성 동안 게스트 운영 체계(130)에 의해 할당될 수 있다. 따라서, 우선 순위 인식 스케줄러(121)는 가상 프로세서 우선 순위 정보에 액세스함으로써 태스크 우선 순위 정보에 액세스할 수 있다. 우선 순위 인식 스케줄러(121)는 직접적으로(예를 들어, 운영 체계 메모리, 공유 메모리 또는 레지스터들의 특정 데이터 구조들을 판독함으로써) 또는 간접적으로(예를 들어, API를 통해) 우선 순위 정보에 액세스 가능할 수 있다.
[0031] 특정 실시예에서, 우선 순위 인식 스케줄러(121)는 제 1 태스크에 대응하는 제 1 가상 프로세서의 제 1 우선 순위를 제 2 태스크에 대응하는 제 2 가상 프로세서의 제 2 우선 순위와 비교하는 것에 기초하여 제 1 태스크를 스케줄링할지 또는 제 2 태스크를 스케줄링할지를 결정할 수 있다. 또한, 우선 순위 인식 스케줄러(121)는 상이한 운영 체계들의 태스크들에 대응하는 가상 프로세서들의 우선 순위들 사이에서 이러한 비교를 수행할 수 있다. 따라서, 특정 게스트 운영 체계(예를 들어, 실시간 운영 체계(RTOS))의 모든 태스크들을 다른 게스트 운영 체계의 모든 태스크들보다 자동으로 우선 순위화하는 대신에, 우선 순위 인식 스케줄러(121)는 태스크 특정 우선 순위를 수행할 수 있으며, 이는 시스템(100)의 전체 지연(예를 들어, 태스크 생성과 실행 사이의 평균 시간, 태스크 실행 시작과 완료 사이의 평균 시간 등으로 측정됨)을 감소시킬 수 있다. RTOS는 이용가능한 최고의 우선 순위를 낮은 지연(예를 들어, 미션 임계적인) 태스크들에 할당할 수 있어서, 이러한 태스크들이 우선 순위 인식 스케줄러(121)에 의해 우선 순위화되지만, 더 낮은 우선 순위들을 덜 중요한 RTOS 태스크들에 할당할 수 있어서, 다른 게스트 운영 체계들의 중요한 태스크들이 스케줄링될 덜 중요한 RTOS 태스크들을 대기할 필요가 없다.
[0032] 도 1의 실시예에서, 게스트 운영 체계들 모두가 "1" 내지 "3"의 태스크 우선 순위들을 지원한다. 그러나 이러한 우선 순위들은 단지 설명을 위한 것이다. 대안적인 실시예들에서, 게스트 운영 체계들은 우선 순위들의 세트들을 중첩하지 않거나 부분적으로 중첩하는 것을 지원할 수 있다. 예를 들어, 제 1 게스트 운영 체계(130)는 태스크 우선 순위들 "1" 내지 "3"을 지원하는 실시간 운영 체계일 수 있고, 제 2 게스트 운영 체계(140)는 태스크 우선 순위들 "2" 내지 "4"를 지원하는 비 실시간 운영 체계일 수 있다. 따라서, 실시간 운영 체계(들)(및 그 태스크들)는 비 실시간 운영 체계(들)(및 그 태스크들)가 이용가능하지 않은 적어도 하나의 상승된 태스크 우선 순위 레벨(예를 들어, 태스크 우선 순위 "1")에 액세스할 수 있다.
[0033] 하이퍼바이저(120)는 또한 가상 프로세서 블로킹/언블로킹 모듈(123)을 포함할 수 있다. 가상 프로세서 블로킹/언블로킹 모듈(123)은 가상 프로세서들(131-134 및 141-144)을 블로킹 및 언블로킹하도록 구성될 수 있다. 시스템(100)에서 태스크들과 가상 프로세서들 사이에 1 대 1 맵핑이 존재하기 때문에, "씬" 게스트 운영 체계(130 및 140)는 게스트 운영 체계들(130 및 140) 내에서 태스크 블로킹 및 언블로킹 로직을 구현하는 대신, 가상 프로세서들의 블로킹 및 언블로킹을 위해 하이퍼바이저(120)에 의존할 수 있음이 이해될 것이다. 이러한 방식은 게스트 운영 체계들(130 및 140)의 설계 및 구현을 간단하게 한다. 블로킹/언블로킹 상황들의 예들은, 제한적이지는 않지만, 동기화 객체(예를 들어, 뮤텍스 또는 세마포어)가 이용가능하게 될 때까지, 데이터가 이용가능하거나 특정 프로세싱 작동들이 (예를 들어, 다른 태스크에 의해) 완료될 때까지 또는 기타 다른 언블로킹 조건이 충족될 때까지, 태스크가 슬립하는 경우를 포함할 수 있다.
[0034] 게스트 운영 체계들(130 및 140) 각각은 스케줄링 로직을 포함하지 않거나 거의 포함하지 않는 "씬" 운영 체계일 수 있다. 대신, 게스트 운영 체계들(130 및 140)은 스케줄링 기능들을 위해 하이퍼바이저(120)에 의존한다. 게스트 운영 체계들(130 및 140)은 또한 태스크들의 블로킹 및 언블로킹을 위해 하이퍼바이저(120)에 의존할 수 있다. 비록 두 게스트 운영 체계들이 도 1에 도시되지만, 이는 단지 예를 위한 것임을 주목해야 한다. 대안적인 실시예들에서, 더 많거나 더 적은 게스트 운영 체계들이 하이퍼바이저(120)에 의해 지원될 수 있다. 더욱이, 하이퍼바이저(120)는 하나 이상의 "씬" 운영 체계들 및 스케줄링 및 블로킹/언블로킹 로직을 포함하는 하나 이상의 통상의 운영 체계들을 동시에 지원할 수 있다. 예를 들어, 하이퍼바이저(120)는, 전체 운영 체계들(예를 들어, 자신 고유의 스케줄러를 포함하는 운영 체계들)이 아닌, "씬" 운영 체계들을 위해 우선 순위 인식 스케줄링 및 블로킹/언블로킹을 수행할 수 있다. 예를 들어, 도 2는 하이퍼바이저-제어 컴퓨팅 환경(200)을 도시하며, 여기서 "씬" 운영 체계(130)는 단일 가상 프로세서(241) 및 "네이티브" 운영 체계 스케줄러(242)를 포함하는 통상의 운영 체계(240)와 공존한다. 도 2의 다른 컴포넌트들이 도 1의 대응하는 컴포넌트들을 참조하여 설명된 바와 같이 기능할 수 있다.
[0035] 작동 동안, 게스트 운영 체계들(130 및 140), 및/또는 게스트 운영 체계들(130 및 140)에서 실행되는 애플리케이션들은 (예를 들어, 애플리케이션들에 의해 발행된 태스크 생성 요청들에 응답하여) 태스크들을 생성할 수 있다. 태스크 생성 요청에 응답하여, 게스트 운영 체계들(130 및 140)은 요청된 태스크를 실행하기 위해 가상 프로세서들을 생성하도록 하이퍼바이저(120)에 요청할 수 있다. 예를 들어, 가상 프로세서 생성/삭제 모듈(122)은 태스크(154)와 관련된 제 1 게스트 운영 체계(130)로부터의 요청에 응답하여 가상 프로세서(134)를 생성할 수 있다. 가상 프로세서 생성/삭제 모듈(122)은 태스크(154)의 태스크 우선 순위를 반영하여, 생성된 가상 프로세서(134)에 우선 순위 "2"를 할당할 수 있다. 우선 순위 인식 스케줄러(121)는 가상 프로세서(134)를 스케줄링할 수 있다. 예를 들어, 실행을 위해 가상 프로세서를 스케줄링하는 것은 하드웨어 프로세서들(110)의 실행 큐에 가상 프로세서를 배치하는 것, 프로세서들(110)의 시간 슬라이스들 또는 실행 사이클들을 가상 프로세서에 할당하는 것 등을 포함할 수 있다. 가상 프로세서 블로킹/언블로킹 모듈(123)은 태스크(154)를 블로킹 및 언블로킹하기 위해 제 1 게스트 운영 체계(130)로부터의 요청들에 응답하여 가상 프로세서(134)를 블로킹 및 언블로킹할 수 있다. 태스크(154)의 완료시, 가상 프로세서 생성/삭제 모듈(122)은 가상 프로세서(134)를 삭제할 수 있다.
[0036] 특정 실시예에서, 게스트 운영 체계들(130 및 140) 중 하나 또는 그 이상은 RTOS일 수 있다. 예를 들어, 시스템(100)은 무선 폰에 통합될 수 있고, 게스트 운영 체계(130 또는 140) 중 하나는 특정 지연 보장을 제공하는 무선 폰에서 모뎀의 운영 체계일 수 있다. 설명을 위해, 모뎀 운영 체계는 스케줄링 지연들이 실시간 데드라인들을 충족시키기 위해 20 마이크로초(㎲) 미만인 것을 보장할 수 있다. 밀리초 정도의 지연들을 가질 수 있는 통상의 하이퍼바이저들은, 운영 체계들 중 하나가 실시간 운영 체계인 경우, 충분한 응답을 제공하지 않을 수 있다. 그러나 본 명세서에 설명된 기술들은 도 1의 하이퍼바이저(120)가, 모뎀 운영 체계 또는 다른 RTOS가 용인할 수 있는 감소된 지연들을 지원하게 할 수 있다. 따라서, 도 1의 시스템(100)은 무선 폰들 및 다른 무선 통신 디바이스들(예를 들어, 랩톱 또는 태블릿 컴퓨팅 디바이스들)에 사용될 수 있다.
[0037] 특정 실시예에서, 시스템(100)은 하나 이상의 멀티스레딩된 그리고/또는 멀티-코어 프로세서들을 포함하는 전자 디바이스에 통합될 수 있다. 예를 들어, 시스템(100)은 실시간 멀티스레딩된 컴퓨팅을 구현하도록 사용될 수 있다. 멀티스레딩된 프로세서는 동시에 실행되는 다수의 하드웨어 실행 콘텍스트들을 갖는 프로세서를 통해, 또는 단일 하드웨어 실행 콘텍스트(예를 들어, 대칭 멀티프로세싱(SMP) 클러스터)를 갖는 다수의 프로세서들로서 통해 구현될 수 있다.
[0038] 개시된 기술들은 다양한 전자 디바이스들에 적용가능할 수 있다. 설명을 위해, 모바일 전자 디바이스들(예를 들어, 무선 폰들)은 전형적으로 모뎀 소프트웨어, 모뎀 펌웨어 및 오디오 프로세싱을 포함하며, 이들 각각은 (예를 들어, 상이한 지연 요건들로 인해) 상이한 운영 체계 또는 운영 체계 이미지들을 사용할 수 있다. 도 1의 시스템(100)은, 지연 요건들을 충족시키면서, 모뎀 펌웨어 및 모뎀 소프트웨어가 동일한 DSP를 공유(예를 들어, 동일한 운영 체계의 다수의 카피들은 게스트 운영 체계들일 수 있음)하게 할 수 있다. 특정 실시예에서, 무선 폰은 모뎀 작동들을 위한 게스트 RTOS 및 애플리케이션들을 위한 다른 운영 체계(예를 들어, Wi-Fi 접속을 위해 무선 폰을 사용하는 랩탑 컴퓨터를 지원하기 위한 웹 서버)를 포함할 수 있으며, 여기서 두 운영 체계들은 상이한 프로세서들(예를 들어, DSP 및 개별 애플리케이션 프로세서를 포함하는 디바이스) 대신에 동일한 DSP 상에서 구동한다. 디바이스의 다수의 (또는 모든) 운영 체계들이 동일한 프로세서 또는 프로세서들의 세트 상에서 구동하게 하는 것은 디바이스와 관련된 생산/제조 비용을 감소시킬 수 있다는 것이 이해될 것이다.
[0039] 따라서, 도 1의 시스템(100)은 초과의 콘텍스트 스위칭(예를 들어, 스케줄링 가능한 상이한 엔티티들 사이의 스위칭) 없이 하이퍼바이저-제어 컴퓨팅 환경을 제공할 수 있는데, 그 이유는 하나의 가상 프로세서가 태스크마다 할당되기 때문이다. 운영 체계의 각 태스크는 하이퍼바이저(120)에 의해 스케줄링되고 프로세서(들)(110)에 의해 실행되는 개별 가상 프로세서에 의해 수행될 수 있다. 더욱이, 단일 스케줄링 계층의 구현으로부터의 감소된 오버헤드는 감소된 지연을 제공할 수 있으며, 이는 시스템(100)의 다수의 실시간 운영 체계들의 사용을 이네이블한다. 도 1의 시스템(100)은 운영 체계 설계에서 패러다임 변경을 나타낼 수 있다. 통상적으로, 운영 체계는 "메탈 상에서" 구동하도록 설계되고(즉, 하드웨어 구현 상세들을 고려), 하이퍼바이저는 운영 체계를 지원하도록 설계된다. 대조적으로, 도 1의 시스템(100)은 운영 체계/하이퍼바이저 "통합 설계" 패러다임을 반영하며, 여기서 운영 체계 및 하이퍼바이저는 특정 기능들에 대해 서로에 의존하도록 특정하게 구현되며, 이는 리던던시를 줄이고(예를 들어, 다수의 스케줄러들 대신에 하나의 스케줄러) 지연을 감소시킬 수 있다.
[0040] 도 3은 하이퍼바이저에서의 작동의 특정한 방법(300)을 도시하기 위한 흐름도이다. 예시적인 실시예에서, 방법(300)은 도 1-2의 하이퍼바이저(120)에 의해 수행될 수 있다.
[0041] 방법(300)은 302에서, 태스크를 실행하기 위해 가상 프로세서를 생성하기 위한 게스트 운영 체계로부터의 요청을 하이퍼바이저에서 수신하는 단계를 포함할 수 있으며, 여기서 태스크는 게스트 운영 체계에 의해 할당된 태스크 우선 순위를 갖는다. 예를 들어, 도 1 에서, 하이퍼바이저(120)는 태스크(163)를 실행하기 위해 가상 프로세서를 생성하기 위한 제 2 게스트 운영 체계(140)로부터의 요청을 수신할 수 있으며, 여기서 태스크(163)는 제 2 게스트 운영 체계(140)에 의해 할당된 태스크 우선 순위 "1"을 갖는다.
[0042] 방법(300)은 304에서, 가상 프로세서를 생성하는 단계를 또한 포함할 수 있으며, 여기서 가상 프로세서는 태스크 우선 순위에 대응하는 우선 순위를 갖는다. 예를 들어, 도 1에서, 하이퍼바이저(120)는 태스크를 실행하기 위해 가상 프로세서(143)를 생성할 수 있으며, 여기서, 가상 프로세서(143)는 우선 순위 "1"을 가지며, 이는 태스크(163)의 태스크 우선 순위에 대응한다.
[0043] 방법(300)은, 306에서, 실행을 위해 가상 프로세서를 스케줄링하고, 308에서, 게스트 운영 체계로부터의 요청에 기초하여 가상 프로세서를 블로킹 또는 언블로킹하는 것을 더 포함할 수 있다. 예를 들어, 도 1에서, 하이퍼바이저(120)는 실행을 위해 가상 프로세서(143)를 스케줄링하고 제 2 게스트 운영 체계(140)로부터의 요청들에 기초하여 가상 프로세서(143)를 블로킹/언블로킹할 수 있다. 하이퍼바이저는 또한 태스크(163)의 완료시 가상 프로세서(143)를 제거하거나 할당 해제할 수 있다.
[0044] 따라서, 도 3의 방법(300)은, 하이퍼바이저가 운영 체계 태스크들에 대응하는 가상 프로세서들의 스케줄링(예를 들어, 우선 순위 인식 스케줄링)을 생성 및 수행하게 할 수 있다. 예를 들어, 우선 순위 인식 스케줄링을 수행함으로써, 하이퍼바이저는 실시간 운영 체계가 하드웨어 리소스들을 지배하고 비실시간 운영 체계들의 성능에 부정적으로 영향을 미치게 하지 않고, 실시간 운영 체계가 지연 조건들을 충족시킬 수 있게 할 수 있다. 도 3의 방법(300)은 또한 하이퍼바이저가 블로킹 및 언블로킹을 수행하게 할 수 있다. 스케줄링 및 블로킹/언블로킹 로직을 포함하지 않는 "씬" 운영 체계들은 스케줄링 및 블로킹/언블로킹 기능을 위해 하이퍼바이저에 의존할 수 있으며, 이는 컴퓨팅 시스템에서 리던던시 및 지연을 감소시킬 수 있다.
[0045] 도 3의 방법(300)은 디지털 신호 프로세서(DSP), 프로세싱 유닛 이를테면 중앙 처리 장치(CPU), 제어기, 필드 프로그램 가능 게이트 어레이(FPGA) 디바이스, 주문형 집적회로(ASIC), 다른 하드웨어 디바이스, 펌웨어 디바이스, 또는 이들의 임의의 조합에 의해 구현될 수 있다. 예로서, 도 3의 방법(300)은 도 5와 관련하여 설명된 바와 같이, 명령들을 실행하는 프로세서에 의해 수행될 수 있다.
[0046] 도 4는 운영 체계(예를 들어, 하이퍼바이저-제어 컴퓨팅 환경에서 게스트 운영 체계)에서의 작동의 특정한 방법(400)을 설명하기 위한 흐름도이다. 예시적인 실시예에서, 방법(400)은 도 1-2의 제 1 게스트 운영 체계(130) 또는 도 1의 제 2 게스트 운영 체계(140)에 의해 수행될 수 있다.
[0047] 방법(400)은 402에서, 태스크를 생성하기 위한 요청을 게스트 운영 체계에서 수신하는 것을 포함한다. 특정 실시예에서, 게스트 운영 체계는 실시간 운영 체계일 수 있다. 예를 들어, 도 1에서, 제 1 게스트 운영 체계(130)는, 제 1 게스트 운영 체계(130) 상에서 실행되는 애플리케이션으로부터 태스크(예를 들어, 태스크(151))를 생성하기 위한 요청을 수신하는 실시간 운영 체계일 수 있다.
[0048] 방법(400)은, 404에서, 태스크를 생성하기 위한 요청에 응답하여, 요청된 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하는 것을 또한 포함할 수 있다. 예를 들어, 도 1에서, 제 1 게스트 운영 체계(130)는 요청된 태스크를 실행하기 위해 가상 프로세서(예를 들어, 가상 프로세서(131))를 생성하도록 하이퍼바이저(120)에 요청할 수 있다.
[0049] 방법(400)은, 406에서, 태스크에 태스크 우선 순위를 할당하는 것을 더 포함하며, 여기서 가상 프로세서의 우선 순위는 태스크 우선 순위와 대응하고 하이퍼바이저가 액세스할 수 있다. 예를 들어, 도 1에서, 제 1 게스트 운영 체계는 태스크(151)에 태스크 우선 순위 "1"을 할당할 수 있고, 가상 프로세서(131)는 태스크(151)의 태스크 우선 순위에 대응하는 우선 순위 "1"을 가질 수 있다.
[0050] 따라서, 도 4의 방법(400)은, 운영 체계가, 운영 체계 태스크들에 대응하는 가상 프로세서들의 우선 순위 인식 하이퍼바이저 스케줄링을 사용하게 할 수 있다. 스케줄링 및 블로킹/언블로킹 로직을 포함하지 않는 "씬" 운영 체계들은 스케줄링 및 블로킹/언블로킹 기능을 위해 하이퍼바이저에 의존할 수 있으며, 이는 컴퓨팅 시스템에서 리던던시 및 지연을 감소시킬 수 있다.
[0051] 도 4의 방법(400)은 디지털 신호 프로세서(DSP), 프로세싱 유닛, 이를테면 중앙 처리 장치(CPU), 제어기, 필드 프로그램 가능 게이트 어레이(FPGA) 디바이스, 주문형 집적 회로(ASIC), 다른 하드웨어 디바이스, 펌웨어 디바이스 또는 이들의 임의의 조합에 의해 구현될 수 있다. 예로서, 도 4의 방법(400)은 도 5와 관련하여 설명되는 바와 같이 명령들을 실행하는 프로세서에 의해 수행될 수 있다.
[0052] 도 5를 참조하면, 전자 디바이스(500)의 블록도가 도시된다. 전자 디바이스(500)는 메모리(532)에 커플링된 프로세서(510), 이를테면 디지털 신호 프로세서(DSP)를 포함한다. 특정 실시예에서, 전자 디바이스(500) 또는 그 컴포넌트들은 셋탑 박스, 음악 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 개인 디지털 보조기(PDA), 고정 위치 데이터 유닛, 컴퓨팅 디바이스, 또는 이들의 임의의 조합에 포함될 수 있다.
[0053] 도 5는 프로세서(510) 및 디스플레이(528)에 커플링된 디스플레이 제어기(526)를 또한 도시한다. 코더/디코더(코덱)(534)는 또한 프로세서(510)에 커플링될 수 있다. 스피커(536) 및 마이크로폰(538)은 코덱(534)에 커플링될 수 있다. 도 5는 또한 무선 제어기(540)가 프로세서(510) 및 안테나(542)에 (예를 들어, 라디오 주파수(RF) 인터페이스를 통해) 커플링될 수 있음을 나타낸다.
[0054] 메모리(532)는 실행가능한 명령들(556)을 포함하는, 유형의 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체일 수 있다. 명령들(556)은 도3-4의 방법들(300, 400)을 포함하는 다양한 기능들 및 방법들을 수행하기 위해 프로세서, 이를테면 프로세서(510)에 의해 실행될 수 있다. 메모리는 또한 하이퍼바이저(570)(예를 들어, 도 1-2의 하이퍼바이저(120)), 제 1 게스트 운영 체계(572)(예를 들어, 도 1-2의 제 1 게스트 운영 체계(130)), 제 2 게스트 운영 체계(574)(예를 들어, 도 1의 제 2 게스트 운영 체계(140))에 대응하는 명령들을 또한 저장할 수 있다. 추가의 운영 체계들(예를 들어, 도 2의 제 3 게스트 운영 체계(240))이 또한 포함될 수 있다.
[0055] 특정 실시예에서, 프로세서(510), 디스플에이 제어기(526), 메모리(532), 코덱(534), 및 무선 제어기(540)가 시스템 인 패키지 또는 시스템 온 칩 디바이스(522)에 포함될 수 있다. 특정 실시예에서, 입력 디바이스(530) 및 전력 공급기(544)는 시스템 온 칩 디바이스(522)에 커플링된다. 더욱이, 특정 실시예에서, 도 5에 도시된 바와 같이, 디스플레이(528), 입력 디바이스(530), 스피커(536), 마이크로폰(538), 안테나(542), 및 전력 공급기(544)는 시스템 온 칩 디바이스(522) 외부에 있다. 그러나, 디스플레이(528), 입력 디바이스(530), 스피커(536), 마이크로폰(538), 안테나(542), 및 전력 공급기(544) 각각은 시스템 온 칩 디바이스(522)의 컴포넌트, 이를테면 인터페이스 또는 제어기에 커플링될 수 있다.
[0056] 개시된 기술들은, 스케줄링 및 블로킹/언블로킹 기능을 위해 하이퍼바이저에 의존하는 하나 이상의 "씬" 실시간 운영 체계들을 비롯해, 다수의 게스트 운영 체계들의 사용을 이네이블한다. 특정 실시예에서, 게스트 운영 체계들(및 그 태스크들)은 서로 통신할 수 있으며, 동기화 원시 함수들(synchronization primitives)을 공유할 수 있다. 예를 들어, 일 게스트 운영 체계가 무선 통신 디바이스(예를 들어, 셀룰러 전화)의 모뎀과 관련될 수 있고, 다른 게스트 운영 체계가 오디오 프로세싱(예를 들어, 스피치 인코딩/디코딩)과 관련될 수 있다.
[0057] 게스트 운영 체계가 통신가능한 실시예들에서, 보안 조치들이 시행될 수 있다. 보안 조치들은, 서비스 품질(QoS) 보장(예를 들어, 실시간 운영 체계들을 위한 지연 요건들)이 유지되도록 설계될 수 있다.
[0058] 통신 메커니즘(예를 들어, 동기화 원시 함수)은 (예를 들어, 도 1의 가상 프로세서 블로킹/언블로킹 모듈(123)에 의해) 태스크들/가상 프로세서들을 블로킹/언블로킹하기 위해 사용될 수 있다. 특정 실시예에서, 메모리의 단일 비트 또는 다중 비트 데이터 값이 동기화 원시 함수에 대해 사용될 수 있다. 하나 이상의 규칙들이 동기화 원시 함수의 사용을 통제할 수 있다. 예를 들어, 제 1 규칙은 동기화 원시 함수가 언로킹(예를 들어, 0으로 설정)되면, 동기화 원시 함수가 스레드(예를 들어, 게스트 운영 체계의 태스크 또는 대응하는 가상 프로세서)에 의해 로킹(예를 들어, 1로 설정)될 수 있다는 것을 나타낼 수 있다. 동기화 원시 함수가 스레드에 의해 로킹(또한 동기 원시 함수를 스레드 "홀딩"하는 것으로 지칭됨)된 후, 동기화 원시 함수에 의해 보호된 데이터가 스레드에 의해 기록될 수 있다. 제 2 규칙은, 동기화 원시 함수가 로킹되면, 동기화 원시 함수가 언로킹될 때까지 동기화 원시 함수를 획득하기 위한 스레드 탐색이 블로킹되어야 함을 나타낼 수 있다. 대안적인 실시예들에서, 동기화 원시 함수는 두 상태들보다 많은 상태들을 나타내는 멀티 비트 값일 수 있다. 예를 들어, 언로킹 상태는 제 1 값에 의해 표현될 수 있고, 대기 없는 스레드들로 로킹된(locked-with-no-waiting-threads) 상태는 제 2 값에 의해 표현될 수 있으며, 적어도 하나의 대기 스레드로 로킹(locked-with-at-least-one-waiting-thread)된 것은 제 3 값으로 표현될 수 있다. 특정 실시예에서, 동기화 원시 함수는 다수의 게스트 운영 체계들 사이에 공유되는 메모리의 사용자 모드 어드레스에 저장될 수 있다(예를 들어, 동기화 원시 함수는 사용자 공간에 저장될 수 있음).
[0059] 다수의 운영 체계들을 갖는 하이퍼바이저 제어 환경에서 일 게스트 운영 체계의 태스크들은 다른 게스트 운영 체계의 태스크들에 의존할 수 있다는 것이 이해될 것이다. 예를 들어, 제 1 게스트 운영 체계의 제 1 태스크가 블로킹될 때 제 2 게스트 운영 체계의 제 2 태스크가 동기화 원시 함수를 홀딩하기 때문에, 제 1 게스트 운영 체계의 제 1 태스크는, 제 2 게스트 운영 체계의 제 2 태스크가 동기화 원시 함수를 릴리스할 때까지 진행될 수 없을 수 있다. 블로킹된 제 1 태스크는 동기화 원시 함수에 대해 판독 전용 액세스할 수 있지만, 제 2 태스크는 동기화 원시 함수에 대해 판독-기록 액세스할 수 있다.
[0060] 특정 실시예에서, 게스트 운영 체계들에서 실행하는 태스크들에 이용가능한 블로킹 기능 호출은 두 인수들을 포함할 수 있다: 동기화 원시 함수에 대한 포인터 및 동기화 원시 함수의 예상된 값. 하이퍼바이저는, 포인터에 의해 표시된 어드레스에서 동기화 원시 함수의 값이 예상된 값과 동일한 경우를 체크할 수 있다. 값들이 동일하면, 블로킹은 성공적이다. 값들이 동일하지 않으면, 하이퍼바이저는 블로킹 없이 리턴한다. 웨이크업 기능은 두 인수들을 포함할 수 있다: 동기화 원시 함수에 대한 포인터 및 동기화 원시 함수의 값에 의존하여 웨이크업될 수 있는 스레드들의 최대 수.
[0061] 특정 실시예에서, 타임아웃이 블로킹을 위해 구현될 수 있다. 예를 들어, 동기화 원시 함수가 특정 양의 시간 내에(예를 들어, 타임아웃 기간의 만료에 응답하여) 릴리스되지 않으면, 동기화 원시 함수를 블로킹하는 태스크는 자동적으로 웨이크업할 수 있다.
[0062] 특정 실시예에서, 우선 순위들의 글로벌 세트는 하이퍼바이저 제어 컴퓨팅 환경에서 운영 체계에 사용될 수 있다. 일부 경우들에서, 실시간 운영 체계(들)는, 비 실시간 운영 체계들이 액세스할 수 없는, 우선 순위들의 글로벌 세트의, 하나 이상의 상승된 우선 순위들에 액세스할 수 있다. 상이한 게스트 운영 체계들로부터의 상이한 태스크들이 우선 순위들의 글로벌 세트의 상이한 우선 순위들을 가질 수 있을 때, 우선 순위 도치가 발생할 수 있다. 예를 들어, 우선 순위 도치는, 상이한 우선 순위의 스레드들이 동기화 원시 함수를 두고 경쟁할 때 발생할 수 있다. 우선 순위 도치는 작동 비효율성 및 잠재적인 데드록(deadlock)을 초래할 수 있다. 예를 들어, (예를 들어, 실시간 운영 체계의) 높은 우선 순위 스레드는 (예를 들어, 비 실시간 운영 체계의) 낮은 우선 순위 스레드에 의해 사용되고 있는 동기화 원시 함수를 대기할 수도 있다. 낮은 우선 순위 스레드(및 더 나아가, 대기하는 높은 우선 순위 스레드)는 매체 우선 순위 스레드들에 의해 대체될 수 있다. 대체로 인해, 낮은 우선 순위 스레드는, 높은 우선 순위 스레드가 동기화 원시 함수를 획득하고 실행을 계속할 수 있도록, 동기화 원시 함수를 릴리스하기 위한 실행을 완료하지 못할 수 있다. 매체 우선 순위 스레드들이 높은 우선 순위 스레드를 효율적으로 대체하고 있기 때문에, 매체 우선 순위 스레드들 및 높은 우선 순위 스레드의 우선 순위들은 "도치"되었다고 일컬어 질 수 있다.
[0063] 우선 순위 계승은 우선 순위 도치를 방지하기 위해 사용될 수 있는 기술이다. 우선 순위 계승에서, 높은 우선 순위 스레드(예를 들어, 우선 순위 = 1)가 낮은 우선 순위 스레드(예를 들어, 우선 순위 = 3)를 블로킹할 때, 낮은 우선 순위 스레드는 블로킹하는 높은 우선 순위 스레드의 우선 순위를 "계승"한다(예를 들어, 낮은 우선 순위 스레드는 우선 순위 = 1을 계승함). 이러한 계승은 중간 우선 순위 스레드들(예를 들어, 우선 순위 = 2)이 우선 순위 도치를 초래하지 못하게 한다. 다수의 게스트 운영 체계들을 포함하는 컴퓨팅 환경들에서, 우선 순위 도치는 단일 게스트 운영 체계의 태스크들에 대해 또는 다수의 게스트 운영 체계들의 태스크들에 대해 발생할 수 있다.
[0064] 도 6은 우선 순위 도치를 수행하도록 동작가능한 시스템(600)의 실시예를 도시한다. 시스템(600)은 하이퍼바이저(120) 및 하나 이상의 멀티스레딩된 프로세서들(660)(예를 들어, 도 1의 프로세서(들)(110))을 포함한다. 멀티스레딩된 프로세서는 동시에 실행되는 다수의 하드웨어 실행 콘텍스트들을 갖는 프로세서를 통해 또는 단일 하드웨어 실행 콘텍스트(예를 들어, 대칭적 멀티프로세싱(SMP) 클러스터)를 갖는 다수의 프로세서들로서 구현될 수 있다. 특정 실시예에서, 하이퍼바이저(120)는 우선 순위 도치 방지 방식을 구현할 수 있다. 이 방식에 따라, 각각의 게스트 운영 체계는, 게스트 운영 체계가 하이퍼바이저(120)에 의해 로딩될 때 구축되는 최대 허용된 우선 순위를 갖는다. 각각의 게스트 운영 체계는 자기 자신의 태스크들/스레드들(및 더 나아가, 가상 프로세서들)을 자신의 최대 허용된 우선 순위로 상승시킬 수 있다. 그러나 게스트 운영 체계는 자신의 최대 허용된 우선 순위를 상승시키는 것이 금지된다. 대신에, 오직 더 높은 우선 순위 게스트 운영 체계가 우선 순위 계승 시스템을 통해 또 다른 낮은 우선 순위 게스트 운영 체계의 낮은 우선 순위 태스크를 상승시킬 수 있다. 이는 높은 우선 순위 태스크 및 게스트 운영 체계 환경이, 태스크 우선 순위들이 동기화 원시 함수가 사용될 때 조정되어야 하는지를 결정할 수 있게 한다.
[0065] 특정 실시예에서, 하이퍼바이저(120)는 "레이지(lazy)" 우선 순위 계승을 구현할 수 있다. 하이퍼바이저(120)는 태스크들/가상 프로세서들의 우선 순위("Prio"), 임시 우선 순위("Tprio"), 및 상태(예를 들어, "실행", "블로킹됨", "준비" 등)를 나타내는 제어 블록들(620)을 유지할 수 있다. 우선 순위 인식 스케줄러(121)가, 제 1 태스크가 제 2 낮은 우선 순위 태스크에 의한 실행으로부터 블로킹된다고 결정할 때, 제 2 태스크는 제 1 태스크의 우선 순위와 동일한 임시 우선 순위를 계승할 수 있다. 임시 우선 순위는 스케줄링 데이터 구조들의 콘텐츠들을 변경하지 않고 설정될 수 있다.
[0066] 예를 들어, 스케줄링 데이터 구조들은 도시된 바와 같이, 준비 리스트(630) 및 실행 리스트(640)를 포함할 수 있다. 준비 리스트(630)는 실행을 위해 준비된(예를 들어, 임의의 동기화 원시 함수에 대해 블로킹되지 않은) 태스크들(또는 대응하는 가상 프로세서들)을 나타낼 수 있다. 실행 리스트(640)는 실행을 위해 스케줄링 및/또는 실행되고 있는 태스크들(또는 대응하는 가상 프로세서들)을 나타낼 수 있다. 설명된 실시예에서, 준비 리스트(630) 및 실행 리스트(640)는 시스템(600)에서 이용가능한 4개의 우선 순위들 각각에 대해 하나의 "슬롯"을 포함한다. 그러나 이는 단지 설명을 위한 것이다. 대안적인 실시예들에서, 준비 리스트(630) 및 실행 리스트(640)는 상이하게 체계화될 수 있다.
[0067] 우선 순위 도치가 발생하지 않을 때의 정규 작동 동안, "레이지" 우선 순위 도치는 저비용적일 수 있는데, 그 이유는 오직 임시 우선 순위(도 6에서 "Tprio"로 표시됨)가 하이퍼바이저(120)에 의해 설정되고 스케줄링 데이터가 영향받지 않기 때문이다. 그러나 제 2 태스크가 다른 태스크에 의해 대체되면, 제 2 태스크(또는 대응하는 가상 프로세서)는 임시 우선 순위를 사용하여 실행하기 위해 리스케줄링될 수 있다. 제 2 태스크는 더 높은 임시 우선 순위로 실행될 있어서, 시스템이 제 1 태스크의 실행을 진행할 수 있게 한다.
[0068] 설명된 실시예들과 함께, 프로세싱을 위한 수단을 포함하는 장치가 개시된다. 예를 들어, 프로세싱하기 위한 수단은 하드웨어 프로세서, 이를테면 도 1-2의 하나 이상의 프로세서들(110) 또는 도 5의 프로세서(510), 데이터를 프로세싱하기 위한 하나 또는 그 이상의 다른 디바이스들 또는 회로들 또는 이들의 임의의 조합을 포함할 수 있다. 장치는 또한 프로세싱하기 위한 수단에 의해 실행가능한 스케줄링을 위한 수단을 포함한다. 스케줄링하기 위한 수단은 프로세싱하기 위한 수단에 의한 실행을 위해 가상 프로세서들을 스케줄링하도록 구성되며, 가상 프로세서들 각각은 스케줄링하기 위한 수단이 액세스할 수 있는 우선 순위를 가지며 대응하는 태스크의 태스크 우선 순위에 대응하며, 태스크 우선 순위는 제 1 게스트 운영 체계에 의해 할당된다. 예를 들어, 스케줄링하기 위한 수단은 도 1-2의 우선 순위 인식 스케줄러(121), 도 5의 하이퍼바이저(570), 하나 또는 그 이상의 다른 디바이스들, 회로들, 모듈들, 또는 실행을 위해 가상 프로세서를 스케줄링하기 위한 명령들, 또는 이들의 임의의 조합일 수 있다.
[0069] 특정 실시예에서, 장치는 프로세서 및 게스트 운영 체계를 포함한다. 게스트 운영 체계는 태스크를 생성하기 위한 요청을 수신하는 것에 응답하여 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하기 위한 수단을 포함한다. 가상 프로세서는 프로세서 상에서 스케줄링될 수 있다. 예를 들어, 요청하기 위한 수단은, 도 1-2의 게스트 운영 체계(130)의 컴포넌트(예를 들어, 운영 체계-하이퍼바이저 통신 메커니즘, 이를테면, API 또는 공유된 메모리 영역), 도 1의 게스트 운영 체계(140)의 컴포넌트, 하나 또는 그 이상의 다른 디바이스들, 회로들, 모듈들, 또는 가상 프로세서를 생성하기 위해 하이퍼바이저에 요청하기 위한 명령들 또는 이들의 임의의 조합일 수 있다.
[0070] 당업자는, 본 명세서에 개시된 실시예들에 관련하여 설명되는 논리 블록들, 구성들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 프로세서에 의해 실행된 컴퓨터 소프트웨어, 또는 이 둘의 결합들로서 구현될 수 있음을 추가로 이해할 것이다. 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들, 및 단계들이 일반적으로 그들의 기능적 관점에서 앞서 설명되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 프로세서 실행가능한 명령들로 구현되는지는 특정 애플리케이션 및 전체 시스템에 대해 부과된 설계 제약들에 의존한다. 당업자는 각각의 특정 애플리케이션 마다 다양한 방식들로 설명된 기능을 구현할 수 있지만, 이러한 구현 결정은 본 개시의 범위를 벗어나게 하는 것으로 해석되어서는 안된다. 멀티스레딩된 프로세서는 동시에 실행되는 다수의 하드웨어 실행 콘텍스트들을 갖는 프로세서를 통해 또는 단일 하드웨어 실행 콘텍스트(예를 들어, 대칭적 멀티프로세싱(SMP) 클러스터)를 갖는 다수의 프로세서들로서 구현될 수 있다.
[0071] 본원에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 이 둘의 조합으로 직접 구현될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM), 플래시 메모리, 판독 전용 메모리(ROM), 프로그램 가능 판독 전용 메모리(PROM), 소거가능 프로그램 가능 판독 전용 메모리(EPROM), 전기적 소거 가능 프로그램 가능 판독 전용 메모리(EEPROM), 레지스터들, 하드 디스크, 착탈식 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 또는 당 업계에 공지된 비 일시적 저장 매체의 임의의 다른 형태에 상주할 수 있다. 예시적인 저장 매체는 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 주문형 반도체(ASIC)에 상주할 수도 있다. ASIC는 컴퓨팅 디바이스 또는 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말에서 개별 컴포넌트들로서 존재할 수 있다.
[0072] 개시된 실시예들의 이전 설명은 당업자가 개시된 실시예들을 실시하거나 이용할 수 있도록 제공된다. 이들 실시예들에 대한 다양한 변형은 당업자에게 용이하게 명백할 것이며, 여기에 정의된 원리들은 본 개시의 범위를 벗어나지 않고 다른 실시 형태에 적용될 수도 있다. 따라서, 본 발명의 개시는 여기에 제시된 실시예들로 한정되도록 의도되는 것이 아니라, 이하의 청구항들에 의해 정의되는 원리들 및 신규한 특징들과 일치하는 가능한 최광의 범위와 일치하여야 한다.
Claims (72)
- 장치로서,
프로세서; 및
하이퍼바이저를 포함하며,
상기 하이퍼바이저는 상기 프로세서에 의한 실행을 위해 가상 프로세서들을 스케줄링하도록 구성되며, 상기 가상 프로세서들 각각은 상기 하이퍼바이저가 액세스할 수 있고, 대응하는 태스크의 태스크 우선 순위에 대응하는 우선 순위를 가지며, 상기 태스크 우선 순위는 제 1 게스트 운영 체계에 의해 할당되는, 장치. - 제 1 항에 있어서,
상기 하이퍼바이저는 상기 게스트 운영 체계의 태스크들 및 제 2 게스트 운영 체계의 태스크들과 관련된 우선 순위 정보에 액세스할 수 있는, 장치. - 제 2 항에 있어서,
상기 하이퍼바이저는, 상기 제 1 태스크에 대응하는 제 1 가상 프로세서의 제 1 우선 순위와 상기 제 2 태스크에 대응하는 제 2 가상 프로세서의 제 2 우선 순위의 비교에 적어도 부분적으로 기초하여, 상기 제 1 게스트 운영 체계의 제 1 태스크를 스케줄링할지 또는 상기 제 2 게스트 운영 체계의 제 2 태스크를 스케줄링할지를 결정하도록 구성되는, 장치. - 제 2 항에 있어서,
상기 제 1 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 적어도 하나는 실시간 운영 체계인, 장치. - 제 4 항에 있어서,
상기 실시간 운영 체계는, 비 실시간 게스트 운영 체계가 이용가능하지 않은 적어도 하나의 상승된 태스크 우선 순위 레벨에 액세스할 수 있는, 장치. - 제 1 항에 있어서,
상기 하이퍼바이저는 게스트 운영 체계의 태스크로부터의 요청에 기초하여 가상 프로세서를 블로킹 또는 언블로킹하도록 구성되는, 장치. - 제 1 항에 있어서,
상기 제 1 게스트 운영 체계의 제 1 태스크 및 제 2 게스트 운영 체계의 제 2 태스크는 공동 동기화 원시 함수에 액세스하도록 구성되는, 장치. - 제 7 항에 있어서,
상기 공동 동기화 원시 함수는 상기 제 1 게스트 운영 체계 및 상기 제 2 게스트 운영 체계에 의해 공유되는 메모리에 저장되는 데이터 값을 포함하며, 상기 데이터 값은 상기 메모리의 사용자 모드 어드레스에 저장되는, 장치. - 제 7 항에 있어서,
특정 게스트 운영 체계의 태스크가 동기화 원시 함수를 홀딩할 때, 상기 특정 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 판독-기록 액세스할 수 있으며, 다른 게스트 운영 체계의 적어도 하나의 태스크는 ―상기 다른 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 대해 블로킹됨― 상기 동기화 원시 함수에 대해 판독-전용 액세스할 수 있는, 장치. - 제 9 항에 있어서,
상기 다른 게스트 운영 체계의 적어도 하나의 태스크는, 상기 동기화 원시 함수가 타임아웃 기간 동안 릴리스되지 않을 때, 상기 타임아웃 기간의 만료 시 언블로킹되는, 장치. - 제 1 항에 있어서,
상기 제 1 게스트 운영 체계의 태스크들의 우선 순위들 및 제 2 게스트 운영 체계의 태스크들의 우선 순위들이 우선 순위들의 공동 세트로부터 선택되는, 장치. - 제 11 항에 있어서,
상기 제 1 게스트 운영 체계는, 상기 제 1 게스트 운영 체계가 상기 제 1 게스트 운영 체계의 태스크들에 할당할 수 있는 제 1 최대 우선 순위를 가지며, 상기 제 2 게스트 운영 체계는, 상기 제 2 게스트 운영 체계가 상기 제 2 게스트 운영 체계의 태스크들에 할당할 수 있는 제 2 최대 우선 순위를 갖는, 장치. - 제 12 항에 있어서,
상기 제 1 최대 우선 순위는 상기 제 2 최대 우선 순위와 상이한, 장치. - 제 1 항에 있어서,
상기 하이퍼바이저는, 상기 제 1 게스트 운영 체계 및 제 2 게스트 운영 체계 중 하나의 태스크가 블로킹할 때, 상기 제 1 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 나머지 하나의 태스크의 우선 순위를 일시적으로 상승시키도록 구성되는, 장치. - 방법으로서,
태스크를 실행하기 위해 가상 프로세서를 생성하기 위한 게스트 운영 체계로부터의 요청을 컴퓨팅 디바이스의 하이퍼바이저에서 수신하는 단계;
상기 가상 프로세서를 생성하는 단계; 및
상기 컴퓨팅 디바이스의 하드웨어 프로세서 상에서의 실행을 위해 상기 가상 프로세서를 스케줄링하는 단계를 포함하며, 상기 가상 프로세서는 상기 태스크의 태스크 우선 순위에 대응하는 우선 순위를 가지며, 상기 태스크 우선 순위는 상기 게스트 운영 체계에 의해 할당되는, 방법. - 제 15 항에 있어서,
상기 게스트 운영 체계의 상기 태스크로부터의 요청에 기초하여 상기 가상 프로세서를 블로킹 또는 언블로킹하는 단계를 더 포함하는, 방법. - 제 15 항에 있어서,
제 2 태스크와 관련된 제 2 가상 프로세서에 앞서 상기 가상 프로세서를 스케줄링하도록 결정하는 단계를 더 포함하는, 방법. - 제 17 항에 있어서,
상기 제 2 가상 프로세서에 앞서 상기 가상 프로세서를 스케줄링하도록 결정하는 단계는, 상기 가상 프로세서의 상기 우선 순위가 상기 제 2 가상 프로세서의 제 2 우선 순위보다 높다고 결정하는 단계를 포함하는, 방법. - 제 15 항에 있어서,
상기 게스트 운영 체계의 제 1 태스크 및 제 2 게스트 운영 체계의 제 2 태스크는 공동 동기화 원시 함수에 액세스하도록 구성되는, 방법. - 제 19 항에 있어서,
상기 공동 동기화 원시 함수는 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계에 의해 공유되는 메모리에 저장되는 데이터 값을 포함하며, 상기 데이터 값은 상기 메모리의 사용자 모드 어드레스에 저장되는, 방법. - 제 19 항에 있어서,
특정 게스트 운영 체계의 태스크가 동기화 원시 함수를 홀딩할 때, 상기 특정 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 판독-기록 액세스할 수 있으며, 다른 게스트 운영 체계의 적어도 하나의 태스크는 ―상기 다른 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 대해 블로킹됨― 상기 동기화 원시 함수에 판독-전용 액세스할 수 있는, 방법. - 제 21 항에 있어서,
상기 다른 게스트 운영 체계의 적어도 하나의 태스크는, 상기 동기화 원시 함수가 타임아웃 기간 동안 릴리스되지 않을 때, 상기 타임아웃 기간의 만료 시 언블로킹되는, 방법. - 제 15 항에 있어서,
상기 게스트 운영 체계의 태스크들의 우선 순위들 및 제 2 게스트 운영 체계의 태스크들의 우선 순위들이 우선 순위들의 공동 세트로부터 선택되는, 방법. - 제 15 항에 있어서,
상기 게스트 운영 체계는, 상기 게스트 운영 체계가 상기 게스트 운영 체계의 태스크들에 할당할 수 있는 제 1 최대 우선 순위를 가지며, 2 게스트 운영 체계는, 상기 제 2 게스트 운영 체계가 상기 제 2 게스트 운영 체계의 태스크들에 할당할 수 있는 제 2 최대 우선 순위를 갖는, 방법. - 제 24 항에 있어서,
상기 제 1 최대 우선 순위는 상기 제 2 최대 우선 순위와 상이한, 방법. - 제 15 항에 있어서,
상기 하이퍼바이저는, 상기 게스트 운영 체계 및 제 2 게스트 운영 체계 중 하나의 태스크가 블로킹할 때, 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 나머지 하나의 태스크의 우선 순위를 일시적으로 상승시키도록 구성되는, 방법. - 장치로서,
프로세싱하기 위한 수단; 및
상기 프로세싱하기 위한 수단에 의해 실행가능한 스케줄링하기 위한 수단을 포함하며,
상기 스케줄링하기 위한 수단은 상기 프로세싱하기 위한 수단에 의한 실행을 위해 가상 프로세서들을 스케줄링하도록 구성되며, 상기 가상 프로세서들 각각은 상기 스케줄링하기 위한 수단이 액세스할 수 있고, 대응하는 태스크의 태스크 우선 순위에 대응하는 우선 순위를 가지며, 상기 태스크 우선 순위는 제 1 게스트 운영 체계에 의해 할당되는, 장치. - 제 27 항에 있어서,
상기 스케줄링하기 위한 수단은 하이퍼바이저에 통합되는, 장치. - 명령들을 포함하는 비 일시적 컴퓨터 판독 가능 매체로서,
상기 명령들은 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금,
태스크를 실행하기 위해 가상 프로세서를 생성하기 위한 게스트 운영 체계로부터의 요청을 하이퍼바이저에서 수신하게 하고;
상기 가상 프로세서를 생성하게 하고; 그리고
실행을 위해 상기 가상 프로세서를 스케줄링하게 하며,
상기 가상 프로세서는 상기 태스크의 태스크 우선 순위에 대응하는 우선 순위를 가지며, 상기 태스크 우선 순위는 상기 게스트 운영 체계에 의해 할당되는,
비 일시적 컴퓨터 판독 가능 매체. - 제 29 항에 있어서,
컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금, 상기 게스트 운영 체계의 상기 태스크로부터의 요청에 기초하여 상기 가상 프로세서를 블로킹 또는 언블로킹하게 하는 명령들을 더 포함하는, 비 일시적 컴퓨터 판독 가능 매체. - 장치로서,
프로세서; 및
게스트 운영 체계를 포함하며,
태스크를 생성하기 위한 요청의 수신에 응답하여, 상기 게스트 운영 체계는 상기 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하며, 상기 가상 프로세서는 상기 프로세서 상에서 스케줄링가능한, 장치. - 제 31 항에 있어서,
상기 게스트 운영 체계는 실행을 위한 태스크들에 대응하는 가상 프로세서들을 스케줄링함으로써 실행을 위한 태스크들을 스케줄링하기 위해 상기 하이퍼바이저에 의존하는, 장치. - 제 31 항에 있어서,
상기 게스트 운영 체계는 실시간 운영 체계인, 장치. - 제 31 항에 있어서,
상기 프로세서에 의해 실행가능한 제 2 게스트 운영 체계를 더 포함하는, 장치. - 제 34 항에 있어서,
상기 제 2 게스트 운영 체계의 각각의 태스크는 상기 제 2 게스트 운영 체계에 의해 요청되는 대응하는 가상 프로세서에 의해 실행되는, 장치. - 제 34 항에 있어서,
상기 게스트 운영 체계의 제 1 태스크 및 상기 제 2 게스트 운영 체계의 제 2 태스크는 공동 동기화 원시 함수에 액세스하도록 구성되는, 장치. - 제 36 항에 있어서,
상기 공동 동기화 원시 함수는 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계에 의해 공유되는 메모리에 저장되는 데이터 값을 포함하며, 상기 데이터 값은 상기 메모리의 사용자 모드 어드레스에 저장되는, 장치. - 제 36 항에 있어서,
특정 게스트 운영 체계의 태스크가 상기 동기화 원시 함수를 홀딩할 때, 상기 특정 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 판독-기록 액세스할 수 있으며, 다른 게스트 운영 체계의 적어도 하나의 태스크는 ―상기 다른 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 대해 블로킹됨― 상기 동기화 원시 함수에 판독-전용 액세스할 수 있는, 장치. - 제 38 항에 있어서,
상기 다른 게스트 운영 체계의 적어도 하나의 태스크는, 상기 동기화 원시 함수가 타임아웃 기간 동안 릴리스되지 않을 때, 상기 타임아웃 기간의 만료 시 언블로킹되는, 장치. - 제 34 항에 있어서,
상기 게스트 운영 체계의 태스크들의 우선 순위들 및 상기 제 2 게스트 운영 체계의 태스크들의 우선 순위들이 우선 순위들의 공동 세트로부터 선택되는, 장치. - 제 34 항에 있어서,
상기 게스트 운영 체계는, 상기 게스트 운영 체계가 상기 게스트 운영 체계의 태스크들에 할당할 수 있는 제 1 최대 우선 순위를 가지며, 상기 2 게스트 운영 체계는, 상기 제 2 게스트 운영 체계가 상기 제 2 게스트 운영 체계의 태스크들에 할당할 수 있는 제 2 최대 우선 순위를 갖는, 장치. - 제 41 항에 있어서,
상기 제 1 최대 우선 순위는 상기 제 2 최대 우선 순위와 상이한, 장치. - 제 34 항에 있어서,
상기 하이퍼바이저는, 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 하나의 태스크가 블로킹할 때, 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 나머지 하나의 태스크의 우선 순위를 일시적으로 상승시키도록 구성되는, 장치. - 방법으로서,
태스크를 생성하기 위한 요청을, 하이퍼바이저 및 적어도 하나의 프로세서를 포함하는 컴퓨팅 디바이스에서 실행하는 게스트 운영 체계에서 수신하는 단계; 및
상기 태스크를 생성하기 위한 상기 요청에 응답하여, 상기 요청된 태스크를 실행하기 위해 가상 프로세서를 생성하도록 상기 하이퍼바이저에 요청하는 단계를 포함하며, 상기 가상 프로세서는 상기 적어도 하나의 프로세서 상에서 스케줄링가능한, 방법. - 제 44 항에 있어서,
상기 태스크에 대한 태스크 우선 순위를 할당하는 단계를 더 포함하며,
상기 가상 프로세서의 우선 순위는 상기 태스크 우선 순위에 대응하고 상기 하이퍼바이저가 액세스가능한, 방법. - 제 44 항에 있어서,
상기 게스트 운영 체계는 실시간 운영 체계인, 방법. - 제 46 항에 있어서,
상기 실시간 운영 체계는 비 실시간 운영 체계가 액세스 가능하지 않은 적어도 하나의 상승된 태스크 우선 순위 레벨에 액세스할 수 있는, 방법. - 제 44 항에 있어서,
상기 게스트 운영 체계의 제 1 태스크 및 제 2 게스트 운영 체계의 제 2 태스크는 공동 동기화 원시 함수에 액세스하도록 구성되는, 방법. - 제 48 항에 있어서,
상기 공동 동기화 원시 함수는 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계에 의해 공유되는 메모리에 저장되는 데이터 값을 포함하며, 상기 데이터 값은 상기 메모리의 사용자 모드 어드레스에 저장되는, 방법. - 제 48 항에 있어서,
특정 게스트 운영 체계의 태스크가 상기 동기화 원시 함수를 홀딩할 때, 상기 특정 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 판독-기록 액세스할 수 있으며, 다른 게스트 운영 체계의 적어도 하나의 태스크는 ―상기 다른 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 대해 블로킹됨― 상기 동기화 원시 함수에 판독-전용 액세스할 수 있는, 방법. - 제 50 항에 있어서,
상기 다른 게스트 운영 체계의 적어도 하나의 태스크는, 상기 동기화 원시 함수가 타임아웃 기간 동안 릴리스되지 않을 때, 상기 타임아웃 기간의 만료 시 언블로킹되는, 방법. - 제 44 항에 있어서,
상기 게스트 운영 체계의 태스크들의 우선 순위들 및 제 2 게스트 운영 체계의 태스크들의 우선 순위들이 우선 순위들의 공동 세트로부터 선택되는, 방법. - 제 44 항에 있어서,
상기 게스트 운영 체계는, 상기 게스트 운영 체계가 상기 게스트 운영 체계의 태스크들에 할당할 수 있는 제 1 최대 우선 순위를 가지며, 2 게스트 운영 체계는, 상기 제 2 게스트 운영 체계가 상기 제 2 게스트 운영 체계의 태스크들에 할당할 수 있는 제 2 최대 우선 순위를 갖는, 방법. - 제 53 항에 있어서,
상기 제 1 최대 우선 순위는 상기 제 2 최대 우선 순위와 상이한, 방법. - 제 44 항에 있어서,
상기 하이퍼바이저는, 상기 게스트 운영 체계 및 제 2 게스트 운영 체계 중 하나의 태스크가 블로킹할 때, 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 나머지 하나의 태스크의 우선 순위를 일시적으로 상승시키도록 구성되는, 방법. - 장치로서,
프로세서; 및
게스트 운영 체계를 포함하며,
태스크를 생성하기 위한 요청의 수신에 응답하여, 상기 게스트 운영 체계는 상기 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하기 위한 수단을 포함하고, 상기 가상 프로세서는 상기 프로세서 상에서 스케줄링가능한, 장치. - 제 56 항에 있어서,
상기 게스트 운영 체계는 실시간 운영 체계인, 장치. - 제 56 항에 있어서,
제 2 게스트 운영 체계를 더 포함하는, 장치. - 명령들을 포함하는 비 일시적 컴퓨터 판독 가능 매체로서,
상기 명령들은 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금,
태스크를 생성하기 위한 요청을 게스트 운영 체계에서 수신하게 하고; 그리고
상기 태스크를 생성하기 위한 요청에 응답하여, 상기 요청된 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하게 하며,
상기 가상 프로세서는 하드웨어 프로세서 상에서 스케줄링가능한,
비 일시적 컴퓨터 판독 가능 매체. - 제 59 항에 있어서,
상기 게스트 운영 체계는 실시간 운영 체계인, 비 일시적 컴퓨터 판독 가능 매체. - 제 60 항에 있어서,
상기 실시간 운영 체계는, 비 실시간 게스트 운영 체계가 이용가능하지 않은 적어도 하나의 상승된 태스크 우선 순위 레벨에 액세스할 수 있는, 비 일시적 컴퓨터 판독 가능 매체. - 전자 디바이스로서,
프로세서;
하이퍼바이저;
제 1 게스트 운영 체계; 및
제 2 게스트 운영 체계를 포함하며,
상기 제 1 게스트 운영 체계의 적어도 하나의 태스크는 상기 하이퍼바이저로부터 상기 제 1 게스트 운영 체계에 의해 요청된 제 1 가상 프로세서에 의해 실행되고, 상기 제 1 가상 프로세서는 상기 프로세서에 의해 실행되며,
상기 제 2 게스트 운영 체계의 적어도 하나의 태스크는 상기 하이퍼바이저로부터 상기 제 2 게스트 운영 체계에 의해 요청된 제 2 가상 프로세서에 의해 실행되고, 상기 제 2 가상 프로세서는 상기 프로세서에 의해 실행되는,
전자 디바이스. - 제 62 항에 있어서,
상기 제 1 게스트 운영 체계는 실시간 운영 체계를 포함하며, 상기 제 2 게스트 운영 체계는 비 실시간 운영 체계를 포함하며, 상기 제 1 게스트 운영 체계의 제 1 태스크는 상기 제 2 게스트 운영 체계의 제 2 태스크가 이용가능하지 않은 적어도 하나의 상승된 태스크 우선 순위 레벨에 액세스할 수 있는, 전자 디바이스. - 제 62 항에 있어서,
상기 제 1 게스트 운영 체계의 제 1 태스크 및 상기 제 2 게스트 운영 체계의 제 2 태스크는 공동 동기화 원시 함수에 액세스하도록 구성되는, 전자 디바이스. - 제 64 항에 있어서,
상기 공동 동기화 원시 함수는 상기 제 1 게스트 운영 체계 및 상기 제 2 게스트 운영 체계에 의해 공유되는 메모리에 저장되는 데이터 값을 포함하며, 상기 데이터 값은 상기 메모리의 사용자 모드 어드레스에 저장되는, 전자 디바이스. - 제 64 항에 있어서,
특정 게스트 운영 체계의 상기 태스크가 동기화 원시 함수를 홀딩할 때, 상기 특정 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 판독-기록 액세스할 수 있으며, 다른 게스트 운영 체계의 적어도 하나의 태스크는 ―상기 다른 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 대해 블로킹됨― 상기 동기화 원시 함수에 판독-전용 액세스할 수 있는, 전자 디바이스. - 제 66 항에 있어서,
상기 다른 게스트 운영 체계의 적어도 하나의 태스크는, 상기 동기화 원시 함수가 타임아웃 기간 동안 릴리스되지 않을 때, 상기 타임아웃 기간의 만료 시 언블로킹되는, 전자 디바이스. - 제 62 항에 있어서,
상기 제 1 게스트 운영 체계의 태스크들의 우선 순위들 및 상기 제 2 게스트 운영 체계의 태스크들의 우선 순위들이 우선 순위들의 공동 세트로부터 선택되는, 전자 디바이스. - 제 62 항에 있어서,
상기 제 1 게스트 운영 체계는, 상기 제 1 게스트 운영 체계가 상기 제 1 게스트 운영 체계의 태스크들에 할당할 수 있는 제 1 최대 우선 순위를 가지며, 상기 제 2 게스트 운영 체계는, 상기 제 2 게스트 운영 체계가 상기 제 2 게스트 운영 체계의 태스크들에 할당할 수 있는 제 2 최대 우선 순위를 갖는, 전자 디바이스. - 제 69 항에 있어서,
상기 제 1 최대 우선 순위는 상기 제 2 최대 우선 순위와 상이한, 전자 디바이스. - 제 62 항에 있어서,
상기 하이퍼바이저는, 상기 제 1 게스트 운영 체계 및 제 2 게스트 운영 체계 중 하나의 태스크가 블로킹할 때, 상기 제 1 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 나머지 하나의 태스크들의 우선 순위를 일시적으로 상승시키도록 구성되는, 전자 디바이스. - 제 62 항에 있어서,
상기 프로세서는, 셋탑 박스, 음악 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 개인 디지털 보조기(PDA), 고정 위치 데이터 유닛 및 컴퓨팅 디바이스로 구성된 그룹으로부터 선택된 디바이스에 통합되는 디지털 신호 프로세서를 포함하는, 전자 디바이스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/828,183 US9396012B2 (en) | 2013-03-14 | 2013-03-14 | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US13/828,183 | 2013-03-14 | ||
PCT/US2014/023708 WO2014159444A1 (en) | 2013-03-14 | 2014-03-11 | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150132218A true KR20150132218A (ko) | 2015-11-25 |
Family
ID=50513451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157027145A KR20150132218A (ko) | 2013-03-14 | 2014-03-11 | 게스트 운영 체계 및 가상 프로세서들과 함께 하이퍼바이저를 이용하는 시스템들 및 방법들 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9396012B2 (ko) |
EP (1) | EP2972851A1 (ko) |
JP (2) | JP6199477B2 (ko) |
KR (1) | KR20150132218A (ko) |
CN (1) | CN105051690B (ko) |
TW (1) | TWI552076B (ko) |
WO (1) | WO2014159444A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023128013A1 (ko) * | 2021-12-30 | 2023-07-06 | (주)페르세우스 | 하이퍼바이저 시스템의 운영체제 성능 간섭 방지 장치 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10437591B2 (en) | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US9396012B2 (en) | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US9606818B2 (en) | 2013-03-14 | 2017-03-28 | Qualcomm Incorporated | Systems and methods of executing multiple hypervisors using multiple sets of processors |
US10114756B2 (en) | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
US9262192B2 (en) * | 2013-12-16 | 2016-02-16 | Vmware, Inc. | Virtual machine data store queue allocation |
US10248463B2 (en) * | 2015-02-13 | 2019-04-02 | Honeywell International Inc. | Apparatus and method for managing a plurality of threads in an operating system |
US9792139B2 (en) | 2015-02-25 | 2017-10-17 | Red Hat Israel, Ltd. | Service driven virtual machine scheduling |
US9367345B1 (en) * | 2015-02-26 | 2016-06-14 | Red Hat Israel, Ltd. | Power efficient cross-VCPU notification by VM function |
US9830187B1 (en) * | 2015-06-05 | 2017-11-28 | Apple Inc. | Scheduler and CPU performance controller cooperation |
KR20160144688A (ko) * | 2015-06-09 | 2016-12-19 | 한국전자통신연구원 | 큐를 이용한 smp 가상 머신 이벤트 라우터 및 방법 |
EP3371665B1 (en) * | 2015-12-10 | 2019-03-20 | Siemens Aktiengesellschaft | Distributed embedded data and knowledge management system integrated with plc historian |
US20170177395A1 (en) * | 2015-12-21 | 2017-06-22 | Mingqiu Sun | Embedded architecture based on process virtual machine |
JP6971016B2 (ja) * | 2016-04-07 | 2021-11-24 | オムロン株式会社 | 制御装置、制御方法およびプログラム |
US11157517B2 (en) | 2016-04-18 | 2021-10-26 | Amazon Technologies, Inc. | Versioned hierarchical data structures in a distributed data store |
US10338135B2 (en) | 2016-09-28 | 2019-07-02 | Amazon Technologies, Inc. | Extracting debug information from FPGAs in multi-tenant environments |
US11099894B2 (en) | 2016-09-28 | 2021-08-24 | Amazon Technologies, Inc. | Intermediate host integrated circuit between virtual machine instance and customer programmable logic |
US10282330B2 (en) * | 2016-09-29 | 2019-05-07 | Amazon Technologies, Inc. | Configurable logic platform with multiple reconfigurable regions |
US10250572B2 (en) | 2016-09-29 | 2019-04-02 | Amazon Technologies, Inc. | Logic repository service using encrypted configuration data |
US10162921B2 (en) | 2016-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Logic repository service |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
US10069949B2 (en) | 2016-10-14 | 2018-09-04 | Honeywell International Inc. | System and method for enabling detection of messages having previously transited network devices in support of loop detection |
US11115293B2 (en) | 2016-11-17 | 2021-09-07 | Amazon Technologies, Inc. | Networked programmable logic service provider |
CN108182104B (zh) * | 2016-12-08 | 2021-07-09 | ***通信有限公司研究院 | 一种分配虚拟处理器的方法、设备及*** |
EP3343366B1 (en) * | 2016-12-27 | 2020-12-30 | OpenSynergy GmbH | System and method for scheduling a plurality of guest systems and/or threads |
US10671639B1 (en) | 2017-03-30 | 2020-06-02 | Amazon Technologies, Inc. | Selectively replicating changes to hierarchial data structures |
US10860550B1 (en) | 2017-03-30 | 2020-12-08 | Amazon Technologies, Inc. | Versioning schemas for hierarchical data structures |
US10423342B1 (en) | 2017-03-30 | 2019-09-24 | Amazon Technologies, Inc. | Scaling events for hosting hierarchical data structures |
US10956193B2 (en) * | 2017-03-31 | 2021-03-23 | Microsoft Technology Licensing, Llc | Hypervisor virtual processor execution with extra-hypervisor scheduling |
US10579417B2 (en) * | 2017-04-26 | 2020-03-03 | Microsoft Technology Licensing, Llc | Boosting user thread priorities to resolve priority inversions |
US11080095B2 (en) | 2017-06-04 | 2021-08-03 | Apple Inc. | Scheduling of work interval objects in an AMP architecture using a closed loop performance controller |
CN109656674B (zh) * | 2017-10-11 | 2023-09-12 | 阿里巴巴集团控股有限公司 | 一种计算机设备、虚拟化芯片及数据传输方法 |
US10810086B2 (en) | 2017-10-19 | 2020-10-20 | Honeywell International Inc. | System and method for emulation of enhanced application module redundancy (EAM-R) |
US10783026B2 (en) | 2018-02-15 | 2020-09-22 | Honeywell International Inc. | Apparatus and method for detecting network problems on redundant token bus control network using traffic sensor |
US11570176B2 (en) * | 2021-01-28 | 2023-01-31 | Bank Of America Corporation | System and method for prioritization of text requests in a queue based on contextual and temporal vector analysis |
CN112965812A (zh) * | 2021-02-09 | 2021-06-15 | 中国铁建重工集团股份有限公司 | 一种基于边缘计算的故障诊断方法、***和终端 |
CN115562794B (zh) * | 2022-12-07 | 2023-03-10 | 天津卓朗昆仑云软件技术有限公司 | 虚拟桌面***及虚拟桌面的实现方法 |
Family Cites Families (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0814795B2 (ja) * | 1986-01-14 | 1996-02-14 | 株式会社日立製作所 | マルチプロセッサ仮想計算機システム |
JPH0193830A (ja) * | 1987-10-05 | 1989-04-12 | Nec Corp | 仮想計算機システムにおける割り込み制御方式 |
JPH0877025A (ja) * | 1994-09-01 | 1996-03-22 | Kokusai Electric Co Ltd | タスクの優先度制御方法、タスクの優先度制御装置 |
US6026427A (en) * | 1997-11-21 | 2000-02-15 | Nishihara; Kazunori | Condition variable to synchronize high level communication between processing threads |
US6286092B1 (en) | 1999-05-12 | 2001-09-04 | Ati International Srl | Paged based memory address translation table update method and apparatus |
US6516373B1 (en) | 1999-06-18 | 2003-02-04 | Samsung Electronics Co., Ltd. | Common motherboard interface for processor modules of multiple architectures |
US6526462B1 (en) | 1999-11-19 | 2003-02-25 | Hammam Elabd | Programmable multi-tasking memory management system |
US6904483B2 (en) * | 2001-03-20 | 2005-06-07 | Wind River Systems, Inc. | System and method for priority inheritance |
GB2378277B (en) | 2001-07-31 | 2003-06-25 | Sun Microsystems Inc | Multiple address translations |
JP2003099272A (ja) | 2001-09-20 | 2003-04-04 | Ricoh Co Ltd | タスク切替システムと方法およびdspとモデム |
US7620678B1 (en) | 2002-06-12 | 2009-11-17 | Nvidia Corporation | Method and system for reducing the time-to-market concerns for embedded system design |
US7117481B1 (en) | 2002-11-06 | 2006-10-03 | Vmware, Inc. | Composite lock for computer systems with multiple domains |
US6981072B2 (en) | 2003-06-05 | 2005-12-27 | International Business Machines Corporation | Memory management in multiprocessor system |
JP3922576B2 (ja) * | 2003-06-27 | 2007-05-30 | 株式会社日立製作所 | 命令プロセッサ割り当てスケジューリング方法、該命令プロセッサ割り当てスケジューリング方法を実現する計算機システムおよびそのためのプログラム |
US7134007B2 (en) | 2003-06-30 | 2006-11-07 | Intel Corporation | Method for sharing firmware across heterogeneous processor architectures |
US7424709B2 (en) | 2003-09-15 | 2008-09-09 | Intel Corporation | Use of multiple virtual machine monitors to handle privileged events |
US20050251806A1 (en) * | 2004-05-10 | 2005-11-10 | Auslander Marc A | Enhancement of real-time operating system functionality using a hypervisor |
US7917740B1 (en) | 2004-05-11 | 2011-03-29 | Advanced Micro Devices, Inc. | Virtualization assist for legacy x86 floating point exception handling |
US8271976B2 (en) * | 2004-06-30 | 2012-09-18 | Microsoft Corporation | Systems and methods for initializing multiple virtual processors within a single virtual machine |
JP4006428B2 (ja) * | 2004-09-28 | 2007-11-14 | 株式会社東芝 | 計算機システム |
US7299337B2 (en) | 2005-05-12 | 2007-11-20 | Traut Eric P | Enhanced shadow page table algorithms |
US7739476B2 (en) | 2005-11-04 | 2010-06-15 | Apple Inc. | R and C bit update handling |
US7971205B2 (en) * | 2005-12-01 | 2011-06-28 | International Business Machines Corporation | Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status |
US7945913B2 (en) * | 2006-01-19 | 2011-05-17 | International Business Machines Corporation | Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system |
US20070283336A1 (en) | 2006-06-01 | 2007-12-06 | Michael Karl Gschwind | System and method for just-in-time compilation in a heterogeneous processing environment |
US7899994B2 (en) * | 2006-08-14 | 2011-03-01 | Intel Corporation | Providing quality of service (QoS) for cache architectures using priority information |
US8082551B2 (en) | 2006-10-30 | 2011-12-20 | Hewlett-Packard Development Company, L.P. | System and method for sharing a trusted platform module |
US7685409B2 (en) * | 2007-02-21 | 2010-03-23 | Qualcomm Incorporated | On-demand multi-thread multimedia processor |
US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
US8250254B2 (en) | 2007-07-31 | 2012-08-21 | Intel Corporation | Offloading input/output (I/O) virtualization operations to a processor |
JP5014179B2 (ja) * | 2008-01-25 | 2012-08-29 | 三菱電機株式会社 | Os優先度変更装置及びos優先度変更プログラム |
CN101499021A (zh) * | 2008-01-31 | 2009-08-05 | 国际商业机器公司 | 在多个虚拟机上动态分配资源的方法和装置 |
US8245236B2 (en) * | 2008-02-27 | 2012-08-14 | International Business Machines Corporation | Lock based moving of threads in a shared processor partitioning environment |
US20090282198A1 (en) | 2008-05-08 | 2009-11-12 | Texas Instruments Incorporated | Systems and methods for optimizing buffer sharing between cache-incoherent cores |
US8166254B2 (en) | 2008-06-06 | 2012-04-24 | International Business Machines Corporation | Hypervisor page fault processing in a shared memory partition data processing system |
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 |
US8301863B2 (en) | 2008-11-17 | 2012-10-30 | International Business Machines Corporation | Recursive logical partition real memory map |
US8291414B2 (en) | 2008-12-11 | 2012-10-16 | International Business Machines Corporation | Shared resource service provisioning using a virtual machine manager |
US20100242014A1 (en) | 2009-03-17 | 2010-09-23 | Xiaohan Zhu | Symmetric multi-processor operating system for asymmetric multi-processor architecture |
US8156275B2 (en) * | 2009-05-13 | 2012-04-10 | Apple Inc. | Power managed lock optimization |
US9152200B2 (en) | 2009-06-23 | 2015-10-06 | Hewlett-Packard Development Company, L.P. | Resource and power management using nested heterogeneous hypervisors |
US8479196B2 (en) | 2009-09-22 | 2013-07-02 | International Business Machines Corporation | Nested virtualization performance in a computer system |
EP2323035B1 (en) * | 2009-11-16 | 2019-04-17 | Red Bend Software | Scheduling system |
US8650426B2 (en) | 2009-12-16 | 2014-02-11 | Qualcomm Incorporated | System and method for controlling central processing unit power in a virtualized system |
JP5336423B2 (ja) * | 2010-05-14 | 2013-11-06 | パナソニック株式会社 | 計算機システム |
US8719834B2 (en) * | 2010-05-24 | 2014-05-06 | Panasonic Corporation | Information processing system, method, program and integrated circuit for maintaining balance of processing loads with respect to real-time tasks |
US8443376B2 (en) | 2010-06-01 | 2013-05-14 | Microsoft Corporation | Hypervisor scheduler |
US20110320766A1 (en) | 2010-06-29 | 2011-12-29 | Youfeng Wu | Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type |
US20120072638A1 (en) | 2010-09-16 | 2012-03-22 | Unisys Corp. | Single step processing of memory mapped accesses in a hypervisor |
US8307169B2 (en) | 2011-03-10 | 2012-11-06 | Safenet, Inc. | Protecting guest virtual machine memory |
JP5648544B2 (ja) | 2011-03-15 | 2015-01-07 | 富士通株式会社 | スケジューリングプログラム、および情報処理装置 |
US8984330B2 (en) | 2011-03-28 | 2015-03-17 | Siemens Corporation | Fault-tolerant replication architecture |
US9043562B2 (en) | 2011-04-20 | 2015-05-26 | Microsoft Technology Licensing, Llc | Virtual machine trigger |
US8677360B2 (en) * | 2011-05-12 | 2014-03-18 | Microsoft Corporation | Thread-related actions based on historical thread behaviors |
US20130013889A1 (en) | 2011-07-06 | 2013-01-10 | Jaikumar Devaraj | Memory management unit using stream identifiers |
US9250969B2 (en) | 2011-08-30 | 2016-02-02 | At&T Intellectual Property I, L.P. | Tagging a copy of memory of a virtual machine with information for fetching of relevant portions of the memory |
US8910158B2 (en) * | 2011-12-14 | 2014-12-09 | Intel Corporation | Virtualizing interrupt priority and delivery |
US20140053272A1 (en) | 2012-08-20 | 2014-02-20 | Sandor Lukacs | Multilevel Introspection of Nested Virtual Machines |
US9292318B2 (en) * | 2012-11-26 | 2016-03-22 | International Business Machines Corporation | Initiating software applications requiring different processor architectures in respective isolated execution environment of an operating system |
US9075789B2 (en) * | 2012-12-11 | 2015-07-07 | General Dynamics C4 Systems, Inc. | Methods and apparatus for interleaving priorities of a plurality of virtual processors |
US9052932B2 (en) * | 2012-12-17 | 2015-06-09 | International Business Machines Corporation | Hybrid virtual machine configuration management |
US10437591B2 (en) | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US9396011B2 (en) | 2013-03-12 | 2016-07-19 | Qualcomm Incorporated | Algorithm and apparatus to deploy virtual machine monitor on demand |
WO2014165040A1 (en) * | 2013-03-13 | 2014-10-09 | Veriscape, Inc. | Dynamic memory management for a virtual supercomputer |
US9606818B2 (en) | 2013-03-14 | 2017-03-28 | Qualcomm Incorporated | Systems and methods of executing multiple hypervisors using multiple sets of processors |
US9396012B2 (en) | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US10114756B2 (en) | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
-
2013
- 2013-03-14 US US13/828,183 patent/US9396012B2/en active Active
-
2014
- 2014-03-11 KR KR1020157027145A patent/KR20150132218A/ko not_active Application Discontinuation
- 2014-03-11 EP EP14718236.4A patent/EP2972851A1/en not_active Ceased
- 2014-03-11 CN CN201480013671.XA patent/CN105051690B/zh not_active Expired - Fee Related
- 2014-03-11 JP JP2016501323A patent/JP6199477B2/ja not_active Expired - Fee Related
- 2014-03-11 WO PCT/US2014/023708 patent/WO2014159444A1/en active Application Filing
- 2014-03-14 TW TW103109243A patent/TWI552076B/zh active
-
2016
- 2016-06-21 US US15/188,487 patent/US10133598B2/en not_active Expired - Fee Related
-
2017
- 2017-08-23 JP JP2017160075A patent/JP2017204307A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023128013A1 (ko) * | 2021-12-30 | 2023-07-06 | (주)페르세우스 | 하이퍼바이저 시스템의 운영체제 성능 간섭 방지 장치 |
Also Published As
Publication number | Publication date |
---|---|
JP2016511489A (ja) | 2016-04-14 |
US20160299780A1 (en) | 2016-10-13 |
CN105051690B (zh) | 2018-12-07 |
EP2972851A1 (en) | 2016-01-20 |
JP6199477B2 (ja) | 2017-09-20 |
US10133598B2 (en) | 2018-11-20 |
CN105051690A (zh) | 2015-11-11 |
US20140282507A1 (en) | 2014-09-18 |
JP2017204307A (ja) | 2017-11-16 |
TW201447766A (zh) | 2014-12-16 |
WO2014159444A1 (en) | 2014-10-02 |
US9396012B2 (en) | 2016-07-19 |
TWI552076B (zh) | 2016-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10133598B2 (en) | Systems and methods of using a hypervisor to assign virtual processor priority based on task priority and to schedule virtual processors for guest operating systems | |
US10606653B2 (en) | Efficient priority-aware thread scheduling | |
EP2962198B1 (en) | Executing an operating system on processors having different instruction set architectures | |
JP5723968B2 (ja) | 便宜的マルチタスキング | |
US9753771B2 (en) | System-on-chip including multi-core processor and thread scheduling method thereof | |
KR102641520B1 (ko) | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법 | |
US8990534B2 (en) | Adaptive resource management of a data processing system | |
JP6240745B2 (ja) | 複数のハイパーバイザを実行するシステムおよび方法 | |
US9400677B2 (en) | Adaptive handling of priority inversions using transactions | |
CN108139946B (zh) | 用于在冲突存在时进行有效任务调度的方法 | |
US8479207B2 (en) | Priority inheritance in multithreaded systems | |
TW201411488A (zh) | 在作業系統中藉由多個程序對現場可程式設計閘陣列的使用的管理 | |
CN112416546A (zh) | 多任务调度方法、电子装置和计算机存储介质 | |
CN107577523B (zh) | 一种任务执行的方法及装置 | |
TWI460659B (zh) | 用於降低競爭之鎖定窗 | |
US20130152100A1 (en) | Method to guarantee real time processing of soft real-time operating system | |
US11422857B2 (en) | Multi-level scheduling | |
CN114168271A (zh) | 一种任务调度方法、电子设备及存储介质 | |
CN115617494A (zh) | 多cpu环境下的进程调度方法、装置、电子设备和介质 | |
US11301304B2 (en) | Method and apparatus for managing kernel services in multi-core system | |
Hahn et al. | Improving user experience of android smartphones using foreground app-aware I/O management | |
CN114443255A (zh) | 一种线程调用方法和装置 | |
CN116578418A (zh) | 一种基于quartz调度框架的任务调度方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |