KR20150132218A - 게스트 운영 체계 및 가상 프로세서들과 함께 하이퍼바이저를 이용하는 시스템들 및 방법들 - Google Patents

게스트 운영 체계 및 가상 프로세서들과 함께 하이퍼바이저를 이용하는 시스템들 및 방법들 Download PDF

Info

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
Application number
KR1020157027145A
Other languages
English (en)
Inventor
에릭 제임스 플론드케
러시안 코드레스큐
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20150132218A publication Critical patent/KR20150132218A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution 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

게스트 운영 체계 및 가상 프로세서들과 함께 하이퍼바이저를 이용하는 시스템들 및 방법들{SYSTEMS AND METHODS OF USING A HYPERVISOR WITH GUEST OPERATING SYSTEMS AND VIRTUAL PROCESSORS}
관련 출원들에 대한 상호 참조
[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은 우선 순위 계승을 수행하도록 동작가능한 시스템의 예시적인 실시예의 블록도이다.
[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. 제 1 항에 있어서,
    상기 하이퍼바이저는 상기 게스트 운영 체계의 태스크들 및 제 2 게스트 운영 체계의 태스크들과 관련된 우선 순위 정보에 액세스할 수 있는, 장치.
  3. 제 2 항에 있어서,
    상기 하이퍼바이저는, 상기 제 1 태스크에 대응하는 제 1 가상 프로세서의 제 1 우선 순위와 상기 제 2 태스크에 대응하는 제 2 가상 프로세서의 제 2 우선 순위의 비교에 적어도 부분적으로 기초하여, 상기 제 1 게스트 운영 체계의 제 1 태스크를 스케줄링할지 또는 상기 제 2 게스트 운영 체계의 제 2 태스크를 스케줄링할지를 결정하도록 구성되는, 장치.
  4. 제 2 항에 있어서,
    상기 제 1 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 적어도 하나는 실시간 운영 체계인, 장치.
  5. 제 4 항에 있어서,
    상기 실시간 운영 체계는, 비 실시간 게스트 운영 체계가 이용가능하지 않은 적어도 하나의 상승된 태스크 우선 순위 레벨에 액세스할 수 있는, 장치.
  6. 제 1 항에 있어서,
    상기 하이퍼바이저는 게스트 운영 체계의 태스크로부터의 요청에 기초하여 가상 프로세서를 블로킹 또는 언블로킹하도록 구성되는, 장치.
  7. 제 1 항에 있어서,
    상기 제 1 게스트 운영 체계의 제 1 태스크 및 제 2 게스트 운영 체계의 제 2 태스크는 공동 동기화 원시 함수에 액세스하도록 구성되는, 장치.
  8. 제 7 항에 있어서,
    상기 공동 동기화 원시 함수는 상기 제 1 게스트 운영 체계 및 상기 제 2 게스트 운영 체계에 의해 공유되는 메모리에 저장되는 데이터 값을 포함하며, 상기 데이터 값은 상기 메모리의 사용자 모드 어드레스에 저장되는, 장치.
  9. 제 7 항에 있어서,
    특정 게스트 운영 체계의 태스크가 동기화 원시 함수를 홀딩할 때, 상기 특정 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 판독-기록 액세스할 수 있으며, 다른 게스트 운영 체계의 적어도 하나의 태스크는 ―상기 다른 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 대해 블로킹됨― 상기 동기화 원시 함수에 대해 판독-전용 액세스할 수 있는, 장치.
  10. 제 9 항에 있어서,
    상기 다른 게스트 운영 체계의 적어도 하나의 태스크는, 상기 동기화 원시 함수가 타임아웃 기간 동안 릴리스되지 않을 때, 상기 타임아웃 기간의 만료 시 언블로킹되는, 장치.
  11. 제 1 항에 있어서,
    상기 제 1 게스트 운영 체계의 태스크들의 우선 순위들 및 제 2 게스트 운영 체계의 태스크들의 우선 순위들이 우선 순위들의 공동 세트로부터 선택되는, 장치.
  12. 제 11 항에 있어서,
    상기 제 1 게스트 운영 체계는, 상기 제 1 게스트 운영 체계가 상기 제 1 게스트 운영 체계의 태스크들에 할당할 수 있는 제 1 최대 우선 순위를 가지며, 상기 제 2 게스트 운영 체계는, 상기 제 2 게스트 운영 체계가 상기 제 2 게스트 운영 체계의 태스크들에 할당할 수 있는 제 2 최대 우선 순위를 갖는, 장치.
  13. 제 12 항에 있어서,
    상기 제 1 최대 우선 순위는 상기 제 2 최대 우선 순위와 상이한, 장치.
  14. 제 1 항에 있어서,
    상기 하이퍼바이저는, 상기 제 1 게스트 운영 체계 및 제 2 게스트 운영 체계 중 하나의 태스크가 블로킹할 때, 상기 제 1 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 나머지 하나의 태스크의 우선 순위를 일시적으로 상승시키도록 구성되는, 장치.
  15. 방법으로서,
    태스크를 실행하기 위해 가상 프로세서를 생성하기 위한 게스트 운영 체계로부터의 요청을 컴퓨팅 디바이스의 하이퍼바이저에서 수신하는 단계;
    상기 가상 프로세서를 생성하는 단계; 및
    상기 컴퓨팅 디바이스의 하드웨어 프로세서 상에서의 실행을 위해 상기 가상 프로세서를 스케줄링하는 단계를 포함하며, 상기 가상 프로세서는 상기 태스크의 태스크 우선 순위에 대응하는 우선 순위를 가지며, 상기 태스크 우선 순위는 상기 게스트 운영 체계에 의해 할당되는, 방법.
  16. 제 15 항에 있어서,
    상기 게스트 운영 체계의 상기 태스크로부터의 요청에 기초하여 상기 가상 프로세서를 블로킹 또는 언블로킹하는 단계를 더 포함하는, 방법.
  17. 제 15 항에 있어서,
    제 2 태스크와 관련된 제 2 가상 프로세서에 앞서 상기 가상 프로세서를 스케줄링하도록 결정하는 단계를 더 포함하는, 방법.
  18. 제 17 항에 있어서,
    상기 제 2 가상 프로세서에 앞서 상기 가상 프로세서를 스케줄링하도록 결정하는 단계는, 상기 가상 프로세서의 상기 우선 순위가 상기 제 2 가상 프로세서의 제 2 우선 순위보다 높다고 결정하는 단계를 포함하는, 방법.
  19. 제 15 항에 있어서,
    상기 게스트 운영 체계의 제 1 태스크 및 제 2 게스트 운영 체계의 제 2 태스크는 공동 동기화 원시 함수에 액세스하도록 구성되는, 방법.
  20. 제 19 항에 있어서,
    상기 공동 동기화 원시 함수는 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계에 의해 공유되는 메모리에 저장되는 데이터 값을 포함하며, 상기 데이터 값은 상기 메모리의 사용자 모드 어드레스에 저장되는, 방법.
  21. 제 19 항에 있어서,
    특정 게스트 운영 체계의 태스크가 동기화 원시 함수를 홀딩할 때, 상기 특정 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 판독-기록 액세스할 수 있으며, 다른 게스트 운영 체계의 적어도 하나의 태스크는 ―상기 다른 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 대해 블로킹됨― 상기 동기화 원시 함수에 판독-전용 액세스할 수 있는, 방법.
  22. 제 21 항에 있어서,
    상기 다른 게스트 운영 체계의 적어도 하나의 태스크는, 상기 동기화 원시 함수가 타임아웃 기간 동안 릴리스되지 않을 때, 상기 타임아웃 기간의 만료 시 언블로킹되는, 방법.
  23. 제 15 항에 있어서,
    상기 게스트 운영 체계의 태스크들의 우선 순위들 및 제 2 게스트 운영 체계의 태스크들의 우선 순위들이 우선 순위들의 공동 세트로부터 선택되는, 방법.
  24. 제 15 항에 있어서,
    상기 게스트 운영 체계는, 상기 게스트 운영 체계가 상기 게스트 운영 체계의 태스크들에 할당할 수 있는 제 1 최대 우선 순위를 가지며, 2 게스트 운영 체계는, 상기 제 2 게스트 운영 체계가 상기 제 2 게스트 운영 체계의 태스크들에 할당할 수 있는 제 2 최대 우선 순위를 갖는, 방법.
  25. 제 24 항에 있어서,
    상기 제 1 최대 우선 순위는 상기 제 2 최대 우선 순위와 상이한, 방법.
  26. 제 15 항에 있어서,
    상기 하이퍼바이저는, 상기 게스트 운영 체계 및 제 2 게스트 운영 체계 중 하나의 태스크가 블로킹할 때, 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 나머지 하나의 태스크의 우선 순위를 일시적으로 상승시키도록 구성되는, 방법.
  27. 장치로서,
    프로세싱하기 위한 수단; 및
    상기 프로세싱하기 위한 수단에 의해 실행가능한 스케줄링하기 위한 수단을 포함하며,
    상기 스케줄링하기 위한 수단은 상기 프로세싱하기 위한 수단에 의한 실행을 위해 가상 프로세서들을 스케줄링하도록 구성되며, 상기 가상 프로세서들 각각은 상기 스케줄링하기 위한 수단이 액세스할 수 있고, 대응하는 태스크의 태스크 우선 순위에 대응하는 우선 순위를 가지며, 상기 태스크 우선 순위는 제 1 게스트 운영 체계에 의해 할당되는, 장치.
  28. 제 27 항에 있어서,
    상기 스케줄링하기 위한 수단은 하이퍼바이저에 통합되는, 장치.
  29. 명령들을 포함하는 비 일시적 컴퓨터 판독 가능 매체로서,
    상기 명령들은 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금,
    태스크를 실행하기 위해 가상 프로세서를 생성하기 위한 게스트 운영 체계로부터의 요청을 하이퍼바이저에서 수신하게 하고;
    상기 가상 프로세서를 생성하게 하고; 그리고
    실행을 위해 상기 가상 프로세서를 스케줄링하게 하며,
    상기 가상 프로세서는 상기 태스크의 태스크 우선 순위에 대응하는 우선 순위를 가지며, 상기 태스크 우선 순위는 상기 게스트 운영 체계에 의해 할당되는,
    비 일시적 컴퓨터 판독 가능 매체.
  30. 제 29 항에 있어서,
    컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금, 상기 게스트 운영 체계의 상기 태스크로부터의 요청에 기초하여 상기 가상 프로세서를 블로킹 또는 언블로킹하게 하는 명령들을 더 포함하는, 비 일시적 컴퓨터 판독 가능 매체.
  31. 장치로서,
    프로세서; 및
    게스트 운영 체계를 포함하며,
    태스크를 생성하기 위한 요청의 수신에 응답하여, 상기 게스트 운영 체계는 상기 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하며, 상기 가상 프로세서는 상기 프로세서 상에서 스케줄링가능한, 장치.
  32. 제 31 항에 있어서,
    상기 게스트 운영 체계는 실행을 위한 태스크들에 대응하는 가상 프로세서들을 스케줄링함으로써 실행을 위한 태스크들을 스케줄링하기 위해 상기 하이퍼바이저에 의존하는, 장치.
  33. 제 31 항에 있어서,
    상기 게스트 운영 체계는 실시간 운영 체계인, 장치.
  34. 제 31 항에 있어서,
    상기 프로세서에 의해 실행가능한 제 2 게스트 운영 체계를 더 포함하는, 장치.
  35. 제 34 항에 있어서,
    상기 제 2 게스트 운영 체계의 각각의 태스크는 상기 제 2 게스트 운영 체계에 의해 요청되는 대응하는 가상 프로세서에 의해 실행되는, 장치.
  36. 제 34 항에 있어서,
    상기 게스트 운영 체계의 제 1 태스크 및 상기 제 2 게스트 운영 체계의 제 2 태스크는 공동 동기화 원시 함수에 액세스하도록 구성되는, 장치.
  37. 제 36 항에 있어서,
    상기 공동 동기화 원시 함수는 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계에 의해 공유되는 메모리에 저장되는 데이터 값을 포함하며, 상기 데이터 값은 상기 메모리의 사용자 모드 어드레스에 저장되는, 장치.
  38. 제 36 항에 있어서,
    특정 게스트 운영 체계의 태스크가 상기 동기화 원시 함수를 홀딩할 때, 상기 특정 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 판독-기록 액세스할 수 있으며, 다른 게스트 운영 체계의 적어도 하나의 태스크는 ―상기 다른 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 대해 블로킹됨― 상기 동기화 원시 함수에 판독-전용 액세스할 수 있는, 장치.
  39. 제 38 항에 있어서,
    상기 다른 게스트 운영 체계의 적어도 하나의 태스크는, 상기 동기화 원시 함수가 타임아웃 기간 동안 릴리스되지 않을 때, 상기 타임아웃 기간의 만료 시 언블로킹되는, 장치.
  40. 제 34 항에 있어서,
    상기 게스트 운영 체계의 태스크들의 우선 순위들 및 상기 제 2 게스트 운영 체계의 태스크들의 우선 순위들이 우선 순위들의 공동 세트로부터 선택되는, 장치.
  41. 제 34 항에 있어서,
    상기 게스트 운영 체계는, 상기 게스트 운영 체계가 상기 게스트 운영 체계의 태스크들에 할당할 수 있는 제 1 최대 우선 순위를 가지며, 상기 2 게스트 운영 체계는, 상기 제 2 게스트 운영 체계가 상기 제 2 게스트 운영 체계의 태스크들에 할당할 수 있는 제 2 최대 우선 순위를 갖는, 장치.
  42. 제 41 항에 있어서,
    상기 제 1 최대 우선 순위는 상기 제 2 최대 우선 순위와 상이한, 장치.
  43. 제 34 항에 있어서,
    상기 하이퍼바이저는, 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 하나의 태스크가 블로킹할 때, 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 나머지 하나의 태스크의 우선 순위를 일시적으로 상승시키도록 구성되는, 장치.
  44. 방법으로서,
    태스크를 생성하기 위한 요청을, 하이퍼바이저 및 적어도 하나의 프로세서를 포함하는 컴퓨팅 디바이스에서 실행하는 게스트 운영 체계에서 수신하는 단계; 및
    상기 태스크를 생성하기 위한 상기 요청에 응답하여, 상기 요청된 태스크를 실행하기 위해 가상 프로세서를 생성하도록 상기 하이퍼바이저에 요청하는 단계를 포함하며, 상기 가상 프로세서는 상기 적어도 하나의 프로세서 상에서 스케줄링가능한, 방법.
  45. 제 44 항에 있어서,
    상기 태스크에 대한 태스크 우선 순위를 할당하는 단계를 더 포함하며,
    상기 가상 프로세서의 우선 순위는 상기 태스크 우선 순위에 대응하고 상기 하이퍼바이저가 액세스가능한, 방법.
  46. 제 44 항에 있어서,
    상기 게스트 운영 체계는 실시간 운영 체계인, 방법.
  47. 제 46 항에 있어서,
    상기 실시간 운영 체계는 비 실시간 운영 체계가 액세스 가능하지 않은 적어도 하나의 상승된 태스크 우선 순위 레벨에 액세스할 수 있는, 방법.
  48. 제 44 항에 있어서,
    상기 게스트 운영 체계의 제 1 태스크 및 제 2 게스트 운영 체계의 제 2 태스크는 공동 동기화 원시 함수에 액세스하도록 구성되는, 방법.
  49. 제 48 항에 있어서,
    상기 공동 동기화 원시 함수는 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계에 의해 공유되는 메모리에 저장되는 데이터 값을 포함하며, 상기 데이터 값은 상기 메모리의 사용자 모드 어드레스에 저장되는, 방법.
  50. 제 48 항에 있어서,
    특정 게스트 운영 체계의 태스크가 상기 동기화 원시 함수를 홀딩할 때, 상기 특정 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 판독-기록 액세스할 수 있으며, 다른 게스트 운영 체계의 적어도 하나의 태스크는 ―상기 다른 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 대해 블로킹됨― 상기 동기화 원시 함수에 판독-전용 액세스할 수 있는, 방법.
  51. 제 50 항에 있어서,
    상기 다른 게스트 운영 체계의 적어도 하나의 태스크는, 상기 동기화 원시 함수가 타임아웃 기간 동안 릴리스되지 않을 때, 상기 타임아웃 기간의 만료 시 언블로킹되는, 방법.
  52. 제 44 항에 있어서,
    상기 게스트 운영 체계의 태스크들의 우선 순위들 및 제 2 게스트 운영 체계의 태스크들의 우선 순위들이 우선 순위들의 공동 세트로부터 선택되는, 방법.
  53. 제 44 항에 있어서,
    상기 게스트 운영 체계는, 상기 게스트 운영 체계가 상기 게스트 운영 체계의 태스크들에 할당할 수 있는 제 1 최대 우선 순위를 가지며, 2 게스트 운영 체계는, 상기 제 2 게스트 운영 체계가 상기 제 2 게스트 운영 체계의 태스크들에 할당할 수 있는 제 2 최대 우선 순위를 갖는, 방법.
  54. 제 53 항에 있어서,
    상기 제 1 최대 우선 순위는 상기 제 2 최대 우선 순위와 상이한, 방법.
  55. 제 44 항에 있어서,
    상기 하이퍼바이저는, 상기 게스트 운영 체계 및 제 2 게스트 운영 체계 중 하나의 태스크가 블로킹할 때, 상기 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 나머지 하나의 태스크의 우선 순위를 일시적으로 상승시키도록 구성되는, 방법.
  56. 장치로서,
    프로세서; 및
    게스트 운영 체계를 포함하며,
    태스크를 생성하기 위한 요청의 수신에 응답하여, 상기 게스트 운영 체계는 상기 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하기 위한 수단을 포함하고, 상기 가상 프로세서는 상기 프로세서 상에서 스케줄링가능한, 장치.
  57. 제 56 항에 있어서,
    상기 게스트 운영 체계는 실시간 운영 체계인, 장치.
  58. 제 56 항에 있어서,
    제 2 게스트 운영 체계를 더 포함하는, 장치.
  59. 명령들을 포함하는 비 일시적 컴퓨터 판독 가능 매체로서,
    상기 명령들은 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금,
    태스크를 생성하기 위한 요청을 게스트 운영 체계에서 수신하게 하고; 그리고
    상기 태스크를 생성하기 위한 요청에 응답하여, 상기 요청된 태스크를 실행하기 위해 가상 프로세서를 생성하도록 하이퍼바이저에 요청하게 하며,
    상기 가상 프로세서는 하드웨어 프로세서 상에서 스케줄링가능한,
    비 일시적 컴퓨터 판독 가능 매체.
  60. 제 59 항에 있어서,
    상기 게스트 운영 체계는 실시간 운영 체계인, 비 일시적 컴퓨터 판독 가능 매체.
  61. 제 60 항에 있어서,
    상기 실시간 운영 체계는, 비 실시간 게스트 운영 체계가 이용가능하지 않은 적어도 하나의 상승된 태스크 우선 순위 레벨에 액세스할 수 있는, 비 일시적 컴퓨터 판독 가능 매체.
  62. 전자 디바이스로서,
    프로세서;
    하이퍼바이저;
    제 1 게스트 운영 체계; 및
    제 2 게스트 운영 체계를 포함하며,
    상기 제 1 게스트 운영 체계의 적어도 하나의 태스크는 상기 하이퍼바이저로부터 상기 제 1 게스트 운영 체계에 의해 요청된 제 1 가상 프로세서에 의해 실행되고, 상기 제 1 가상 프로세서는 상기 프로세서에 의해 실행되며,
    상기 제 2 게스트 운영 체계의 적어도 하나의 태스크는 상기 하이퍼바이저로부터 상기 제 2 게스트 운영 체계에 의해 요청된 제 2 가상 프로세서에 의해 실행되고, 상기 제 2 가상 프로세서는 상기 프로세서에 의해 실행되는,
    전자 디바이스.
  63. 제 62 항에 있어서,
    상기 제 1 게스트 운영 체계는 실시간 운영 체계를 포함하며, 상기 제 2 게스트 운영 체계는 비 실시간 운영 체계를 포함하며, 상기 제 1 게스트 운영 체계의 제 1 태스크는 상기 제 2 게스트 운영 체계의 제 2 태스크가 이용가능하지 않은 적어도 하나의 상승된 태스크 우선 순위 레벨에 액세스할 수 있는, 전자 디바이스.
  64. 제 62 항에 있어서,
    상기 제 1 게스트 운영 체계의 제 1 태스크 및 상기 제 2 게스트 운영 체계의 제 2 태스크는 공동 동기화 원시 함수에 액세스하도록 구성되는, 전자 디바이스.
  65. 제 64 항에 있어서,
    상기 공동 동기화 원시 함수는 상기 제 1 게스트 운영 체계 및 상기 제 2 게스트 운영 체계에 의해 공유되는 메모리에 저장되는 데이터 값을 포함하며, 상기 데이터 값은 상기 메모리의 사용자 모드 어드레스에 저장되는, 전자 디바이스.
  66. 제 64 항에 있어서,
    특정 게스트 운영 체계의 상기 태스크가 동기화 원시 함수를 홀딩할 때, 상기 특정 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 판독-기록 액세스할 수 있으며, 다른 게스트 운영 체계의 적어도 하나의 태스크는 ―상기 다른 게스트 운영 체계의 상기 태스크는 상기 동기화 원시 함수에 대해 블로킹됨― 상기 동기화 원시 함수에 판독-전용 액세스할 수 있는, 전자 디바이스.
  67. 제 66 항에 있어서,
    상기 다른 게스트 운영 체계의 적어도 하나의 태스크는, 상기 동기화 원시 함수가 타임아웃 기간 동안 릴리스되지 않을 때, 상기 타임아웃 기간의 만료 시 언블로킹되는, 전자 디바이스.
  68. 제 62 항에 있어서,
    상기 제 1 게스트 운영 체계의 태스크들의 우선 순위들 및 상기 제 2 게스트 운영 체계의 태스크들의 우선 순위들이 우선 순위들의 공동 세트로부터 선택되는, 전자 디바이스.
  69. 제 62 항에 있어서,
    상기 제 1 게스트 운영 체계는, 상기 제 1 게스트 운영 체계가 상기 제 1 게스트 운영 체계의 태스크들에 할당할 수 있는 제 1 최대 우선 순위를 가지며, 상기 제 2 게스트 운영 체계는, 상기 제 2 게스트 운영 체계가 상기 제 2 게스트 운영 체계의 태스크들에 할당할 수 있는 제 2 최대 우선 순위를 갖는, 전자 디바이스.
  70. 제 69 항에 있어서,
    상기 제 1 최대 우선 순위는 상기 제 2 최대 우선 순위와 상이한, 전자 디바이스.
  71. 제 62 항에 있어서,
    상기 하이퍼바이저는, 상기 제 1 게스트 운영 체계 및 제 2 게스트 운영 체계 중 하나의 태스크가 블로킹할 때, 상기 제 1 게스트 운영 체계 및 상기 제 2 게스트 운영 체계 중 나머지 하나의 태스크들의 우선 순위를 일시적으로 상승시키도록 구성되는, 전자 디바이스.
  72. 제 62 항에 있어서,
    상기 프로세서는, 셋탑 박스, 음악 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 개인 디지털 보조기(PDA), 고정 위치 데이터 유닛 및 컴퓨팅 디바이스로 구성된 그룹으로부터 선택된 디바이스에 통합되는 디지털 신호 프로세서를 포함하는, 전자 디바이스.
KR1020157027145A 2013-03-14 2014-03-11 게스트 운영 체계 및 가상 프로세서들과 함께 하이퍼바이저를 이용하는 시스템들 및 방법들 KR20150132218A (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023128013A1 (ko) * 2021-12-30 2023-07-06 (주)페르세우스 하이퍼바이저 시스템의 운영체제 성능 간섭 방지 장치

Families Citing this family (36)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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