KR20200097579A - 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법 - Google Patents

프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법 Download PDF

Info

Publication number
KR20200097579A
KR20200097579A KR1020190015145A KR20190015145A KR20200097579A KR 20200097579 A KR20200097579 A KR 20200097579A KR 1020190015145 A KR1020190015145 A KR 1020190015145A KR 20190015145 A KR20190015145 A KR 20190015145A KR 20200097579 A KR20200097579 A KR 20200097579A
Authority
KR
South Korea
Prior art keywords
virtual machine
host
core
information
virtual
Prior art date
Application number
KR1020190015145A
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 삼성전자주식회사
Priority to KR1020190015145A priority Critical patent/KR20200097579A/ko
Priority to US16/784,884 priority patent/US11630699B2/en
Priority to PCT/KR2020/001781 priority patent/WO2020162715A1/en
Publication of KR20200097579A publication Critical patent/KR20200097579A/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/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/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler internals
    • 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

다양한 실시 예들은 프로세스 스케줄링을 위한 전자 장치 및 저장 매체에 관한 것으로서, 상기 전자 장치는, 메모리 및 적어도 하나의 프로세서를 포함하며, 상기 메모리는 상기 적어도 하나의 프로세서로 하여금 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 인스트럭션들을 저장하며, 상기 호스트 OS는, 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하고, 상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에 적어도 하나의 코어를 할당하고, 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하도록 설정될 수 있다. 다양한 실시 예가 가능하다.

Description

프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법{ELECTRONIC DEVICE, STORAGE MEDIUM AND METHOD FOR PROCESS SCHEDULING}
다양한 실시 예들은 비대칭 멀티 코어 프로세서 환경에서 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법에 관한 것이다.
최근에는 임베디드 시스템 환경의 전자 장치의 프로세서들이 성능을 향상시키기 위해 멀티코어 프로세서 형태로 발전하고 있다. 이러한 멀티 코어 프로세서는 크게 대칭 멀티 코어와 비대칭 멀티 코어로 구분할 수 있으며, 비대칭 멀티 코어 방식의 프로세서(AMP: asymmetric multi-core processor)가 대칭 멀티 코어 방식의 프로세서보다 성능이 높고 효율적이므로 비대칭 멀티 코어 방식의 프로세서의 사용이 크게 증가하고 있다.
비대칭 멀티코어 방식의 프로세서는 하나의 칩에 다수의 코어들(예를 들어, 4, 8 또는 16개의 코어들)로 이루어질 수 있다. 상기 비대칭 멀티코어 방식의 프로세서는 서로 다른 특성을 가지는 코어들 즉, 높은 성능과 낮은 에너지 효율성을 갖는 타입의 코어들(예, big core)과, 낮은 성능과 높은 효율성을 갖는 타입의 코어들(예, little core)로 이루어질 수 있다.
상기 비대칭 멀티 코어 프로세서는 코어들 각각의 성능을 고려하여 실행할 프로세스를 코어들에 할당하도록 프로세스 스케줄링을 수행할 수 있다.
또한, 비대칭 멀티 코어 환경에서 전자 장치는 하드웨어 리소스를 효율적으로 사용하기 위해 가상화 기술을 적용하여 가상 운영체제(예, 가상 머신)를 지원할 수 있다.
그러나 종래의 비대칭 멀티 코어 환경에서 전자 장치는 가상 운영체제가 가상 자원(예, vCPU: virtual central processing unit)을 블랙박스(black box)인 것처럼 간주하여 프로세스 스케줄링을 수행할 수 있다. 더욱이, 가상 운영체제는 물리적 하드웨어(physical hardware)의 이종(asymmetric)을 알지 못하고, 프로세스의 우선순위(priority)에 대한 스케줄링만을 수행하게 된다.
이에 따라 호스트 운영 체제는 가상 운영체제에서 실행되는 프로세스에 대한 정보를 알 수 없으므로 비작동 상태의 코어들이 많아지게 되거나 프로세스 스케줄링이 중복으로 수행될 수 있다. 따라서 종래의 비대칭 멀티 코어 환경에서 전자 장치는 코어들을 효율적으로 활용할 수 없으며, 성능이 저하되는 문제점이 있다.
본 개시의 목적은 다양한 실시예들에 따라, 가상화 기술을 이용하여 비대칭 멀티 코어 프로세서가 효율적으로 프로세스를 코어에 할당하도록 하는 프로세스 스케줄링을 위한 전자 장치, 기록 매체 및 방법을 제공하는 것이다.
다양한 실시 예들 중 어느 하나에 따른, 전자 장치는, 메모리 및 적어도 하나의 프로세서를 포함하며, 상기 메모리는 상기 적어도 하나의 프로세서로 하여금 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 인스트럭션들을 저장하며, 상기 호스트 OS는, 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하고, 상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에 적어도 하나의 코어를 할당하고, 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하도록 설정될 수 있다.
또한, 다양한 실시 예들 중 다른 하나에 따른 전자 장치는, 메모리 및 적어도 하나의 프로세서를 포함하며, 상기 메모리는 상기 적어도 하나의 프로세서로 하여금 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 인스트럭션들을 저장하고 상기 호스트 OS는, 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하고, 상기 적어도 하나의 프로세스에 대한 정보를 기반하여 식별된 적어도 하나의 가상 자원에 적어도 하나의 코어를 할당하고, 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하도록 설정될 수 있다.
또한, 다양한 실시 예들 중 어느 하나에 따른 컴퓨터상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체에 있어서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가, 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 실행 가능한 명령들을 포함하며, 상기 호스트 OS로 하여금, 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하는 동작, 상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에 적어도 하나의 코어를 할당하는 동작 및 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하는 동작을 수행하도록 하는 실행 가능한 명령들을 포함할 수 있다.
또한, 다양한 실시 예 중 다른 하나에 따른 컴퓨터상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체에 있어서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 실행 가능한 명령들을 포함하며, 상기 호스트 OS로 하여금, 상기 호스트 OS는, 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하는 동작, 상기 적어도 하나의 프로세스에 대한 정보를 기반하여 식별된 적어도 하나의 가상 자원에 적어도 하나의 코어를 할당하는 동작 및 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하는 동작을 수행하도록 하는 실행 가능한 명령들을 포함할 수 있다.
또한, 다양한 실시 예들 중 어느 하나에 따른 방법은, 상기 전자 장치의 적어도 하나의 프로세서에 의해 실행되는 호스트 OS(operating system)에 의해, 적어도 하나의 프로세스에 대한 정보를 상기 프로세서에 의해 실행되는 가상 머신으로부터 수신하는 동작, 상기 호스트 OS에 의해, 상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에 적어도 하나의 코어를 할당하는 동작, 상기 호스트 OS에 의해, 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하는 동작 및 상기 가상 머신에 의해, 상기 적어도 하나의 코어의 할당에 관련된 정보를 기반하여 상기 적어도 하나의 프로세스를 구동하는 동작을 포함할 수 있다.
또한, 다양한 실시 예들 중 다른 하나에 따른 방법은, 상기 전자 장치의 적어도 하나의 프로세서에 의해 실행되는 호스트 OS(operating system)에 의해, 적어도 하나의 프로세스에 대한 정보를 상기 프로세서에 의해 실행되는 가상 머신으로부터 수신하는 동작, 상기 호스트에 의해, 상기 적어도 하나의 프로세스에 대한 정보를 기반하여 식별된 적어도 하나의 가상 자원에 적어도 하나의 코어를 할당하는 동작, 상기 호스트에 의해, 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하는 동작, 상기 가상 머신에 의해, 상기 적어도 하나의 코어의 할당에 관련된 정보를 기반으로 재할당된 상기 적어도 하나의 가상 자원을 식별하는 동작, 상기 가상 머신에 의해, 적어도 하나의 프로세스를 선정하는 동작, 상기 가상 머신에 의해, 상기 선정된 적어도 하나의 프로세스에 상기 적어도 하나의 가상 자원을 할당하는 동작 및 상기 가상 머신에 의해, 상기 할당된 적어도 하나의 가상 자원을 이용하여 상기 선정된 적어도 하나의 프로세스를 구동하는 동작을 포함할 수 있다.
다양한 실시 예에 따른 프로세스 스케줄링을 위한 전자 장치, 기록 매체 및 방법은 비대칭 멀티 코어 프로세서를 통해 가상 머신의 프로세스를 호스트 운영체제(OS)에서 공유하여 관리할 수 있다. 그러므로 상기 프로세스 스케줄링을 위한 전자 장치, 기록 매체 및 방법은 호스트 OS가 가상 머신에 대응하는 프로세스를 비대칭 멀티 코어들에 효율적으로 할당할 수 있고, 비대칭 멀티 코어들을 보다 잘 활용할 수 있으며, 디바이스 하이드웨어의 공간 절약 및 이를 구성하기 위한 비용을 절감할 수 있는 효과가 있다.
도 1은 다양한 실시 예들에 따른 네트워크 환경을 나타내는 도면이다.
도 2는 다양한 실시 예들에 따른 전자 장치의 구성 예를 나타내는 도면이다.
도 3a 및 도 3b는 실시 예들에 따른 전자 장치의 구성 예를 나타내는 도면이다.
도 4는 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
도 5는 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
도 6은 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
도 7은 다양한 실시 예들에 따른 전자 장치의 프로세스 스케줄링 예를 나타내는 도면이다.
도 8은 다양한 실시 예들에 따른 전자 장치의 프로세스 스케줄링 예를 나타내는 도면이다.
도 9는 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
도 10은 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
도 11은 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
도 12는 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치 (예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나,""A, B 또는 C," "A, B 및 C 중 적어도 하나, "및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제1", "제2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제1) 구성요소가 다른(예: 제2) 구성요소에, "기능적으로" 또는 "통신적으로"라는 용어와 함께 또는 이런 용어 없이, "커플드" 또는 "커넥티드"라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제 3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 전자 장치(#01)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(#36) 또는 외장 메모리(#38))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(#40))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(#01))의 프로세서(예: 프로세서(#20))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두 개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
도 1은, 다양한 실시예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블럭도이다. 도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일실시예에 따르면, 전자 장치(101)는 프로세서 모듈(120), 메모리(130), 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 표시 장치(160) 또는 카메라 모듈(180))가 생략되거나, 하나 이상의 다른 구성 요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들은 하나의 통합된 회로로 구현될 수 있다. 예를 들면, 센서 모듈(176)(예: 지문 센서, 홍채 센서, 또는 조도 센서)은 표시 장치(160)(예: 디스플레이)에 임베디드된 채 구현될 수 있다.
프로세서 모듈(120)은 적어도 하나의 프로세서(121)(#1,…., #N)를 포함할 수 있다. 상기 적어도 하나의 프로세서(121)는 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(121)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)을 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 상기 프로세서(121)는 적어도 하나의 코어(123)를 포함할 수 있다. 일 실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(121)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 로드하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(121, 또는 123) 또는 센서모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 장치(150)는, 전자 장치(101)의 구성요소(예: 프로세서(121 또는 123))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 장치(150)는, 예를 들면, 마이크, 마우스, 또는 키보드를 포함할 수 있다.
음향 출력 장치(155)는 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 장치(155)는, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있고, 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일실시예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
표시 장치(160)는 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 표시 장치(160)는, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일실시예에 따르면, 표시 장치(160)는 터치를 감지하도록 설정된 터치 회로(touch circuitry), 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 센서 회로(예: 압력 센서)를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일실시예에 따르면, 오디오 모듈(170)은, 입력 장치(150)를 통해 소리를 획득하거나, 음향 출력 장치(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102)) (예: 스피커 또는 헤드폰))를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일실시예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일실시예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일실시예에 따르면, 연결 단자(178)는, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일실시예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일실시예에 따르면, 전력 관리 모듈(388)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성 요소에 전력을 공급할 수 있다. 일실시예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108))간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(121)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제1 네트워크(198)(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제2 네트워크(199)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성 요소(예: 단일 칩)로 통합되거나, 또는 서로 별도의 복수의 구성 요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 및 인증할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일실시예에 따르면, 안테나 모듈(197)은 하나 이상의 안테나들을 포함할 수 있고, 이로부터, 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부 전자 장치 간에 송신되거나 수신될 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들 간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호 간에 교환할 수 있다.
일 실시예에 따르면, 명령 또는 데이터는 제2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104) 간에 송신 또는 수신될 수 있다. 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부 전자 장치들(102, 104, or 108) 중 하나 이상의 외부 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
이하, 첨부된 도면을 참조하여 상기 도 1의 제1 전자 장치(101)를 기반으로 다양한 실시 예들에 따른 프로세스 스케줄링을 반가상화하여 프로세스 스케줄링을 수행하기 위한 전자 장치에 대해서 살펴본다.
이하, 다양한 실시 예들에서 설명되어지는 프로세스는 적어도 하나의 프로세서에 의해 실행되는 업무로서, 스케줄링의 처리 단위를 의미할 수 있다. 상기 프로세스는 운영 체제의 타입에 따라 예를 들어, 테스크(task) 또는 스레드(thread)의 용어로 대체될 수 있다. 이에 한정되지 않고, 상기 스케줄링 처리 단위는 다른 용어로도 정의될 수도 있다. 본 개시의 다양한 실시 예들에서 설명되어지는 용어들은 해당 기술분야의 통상의 기술자들에 의해 사용되는 용어이다.
도 2는 다양한 실시 예들에 따른 전자 장치의 구성 예를 나타내는 도면이다.
상기 도 2를 참조하면, 다양한 실시 예에 따른 전자 장치(101)(예, 상기 도 1의 제1 전자 장치(101)와 동일 또는 유사)는 적어도 하나의 프로세서(211) 및 메모리(213)를 포함하는 디바이스 하드웨어(210)로 구성될 수 있다.
다양한 실시 예들에 따른 상기 적어도 하나의 프로세서(211)(예, 도 1의 프로세서(121))는 적어도 하나의 코어(예, 도 1의 코어(123)), 캐시 메모리(도시되지 않음) 및/또는 컨트롤러(도시되지 않음)를 포함하여 설정될 수 있다. 상기 각 프로세서(211)는 비대칭 멀티 코어 프로세서(asymmetric multi core processor)일 수 있으나, 반드시, 이에 한정되는 것은 아니다. 상기 코어는 한 번에 하나의 명령(instruction)을 처리하는 하드웨어 연산 장치일 수 있다. 상기 각 프로세서(211)에 포함된 코어는 서로 비대칭 멀티 코어일 수 있으나, 반드시 이에 한정되는 것은 아니다.
다양한 실시 예들에 따른 상기 메모리(213)(예 도 1의 메모리(130))는 호스트 운영체제(operating system, 이하, OS라 칭함)(220)(예, 도 1의 운영 체제(142)), 하이퍼바이저(hypervisor)(230) 및 적어도 하나의 가상 머신(240: 240a, 240b, 240c)(VM(virtual machine))으로 구성될 수 있는 프로세스 스케줄링을 위한 소프트웨어 프로그램(예, 도 1의 프로그램(140)과 동일 또는 유사)을 저장할 수 있다. 상기 메모리(213)는 상기 적어도 하나의 프로세서(211)로 하여금 상기 호스트 OS(220), 상기 하이퍼바이저(230) 및 적어도 하나의 가상 머신(240)을 실행하도록 하는 명령(instruction)들을 저장할 수 있다.
다양한 실시 예들에 따른 상기 호스트 OS(220)는 상기 디바이스 하드웨어(210)와 연동하여 상기 적어도 하나의 프로세서(211)(예, 비대칭 멀티 코어 프로세서)의 상위에 설치되는 소프트웨어(예, 윈도우(windows), 리눅스(linux) 맥(MAC), 아이오에스(iOS) 또는 안드로이드(android))일 수 있다. 상기 호스트 OS(220)는 상기 가상 머신(240)에서 관리되는 적어도 하나의 프로세스에 대한 정보(이하, 프로세스 정보라 칭함)를 상기 가상 머신(240)으로부터 수신하고, 상기 적어도 하나의 프로세스에 대한 정보 기반하여 상기 가상 머신(240)에 적어도 하나의 코어(예, 도 1의 코어(123))를 할당하고, 상기 할당된 적어도 하나의 코어의 할당에 관련된 정보(이하, 할당 정보라 칭함)를 상기 가상 머신(240)에 제공하도록 설정될 수 있다. 상기 호스트 OS(220)는 관리 모듈(221) 및 호스트 스케줄러(223)를 포함하여 설정될 수 있다. 다양한 실시 예들에 따라, 상기 관리 모듈(221)은 상기 가상 머신(240)의 가상 스케줄러(241a, 241b 또는 241c)에서 관리하는 적어도 하나의 프로세스에 대한 정보를 공유받고, 공유받은 상기 적어도 하나의 프로세스에 대한 정보를 관리할 수 있다. 다양한 실시 예들에 따라, 상기 호스트 스케줄러(2230)는 상기 적어도 하나의 프로세스에 대한 정보를 기반하여 상기 가상 머신(240)에서 구동할 적어도 하나의 프로세스 또는 상기 가상 머신(240)에서 이용 가능한 적어도 하나의 가상 자원(예, vCPU(virtual central processing unit))을 식별하고, 상기 적어도 하나의 프로세스 또는 상기 적어도 하나의 가상 자원(vCPU)에 상기 적어도 하나의 코어를 할당하도록 스케줄링을 수행할 수 있다.
다양한 실시예들에 따른, 상기 하이퍼바이저(230)는 상기 호스트 OS(220)의 상위에 배치되고, 상기 적어도 하나의 가상 머신(240)을 모니터링하는 소프트웨어로서, 예를 들어, 가상 머신 모니터(VMM(virtual machine monitor)) 또는 QEMU와 대응될 수 있다. 상기 하이퍼바이저(230)는 상기 적어도 하나의 가상 머신(240)에서 개별적으로 운영체제를 실행할 수 있도록 관리할 수 있으며, 상기 적어도 하나의 가상 머신(240)으로부터 예를 들어, 하이퍼콜(hypercall)을 통해 명령을 수신할 수 있다. 다양한 실시 예들에 따라, 상기 하이퍼바이저(230)는 상기 적어도 하나의 가상 머신(240)에 대한 적어도 하나의 또는 할당한 가상 자원을 상기 호스트 OS(220)에서 공유할 수 있도록 관련된 정보들을 상기 호스트 OS(220)로 제공할 수 있다.
다양한 실시예들에 따른, 상기 적어도 하나의 가상 머신(240)은 상기 하이퍼바이저(230)를 통해 실행되고, 개별적으로 운영체제를 실행할 수 있는 소프트웨어로서, 게스트 운영체제(OS)에 대응될 수 있다. 여기서, 상기 게스트 OS는 상기 가상 머신(240) 상위에서 적어도 하나의 어플리케이션을 실행할 수 있도록 설정될 수 있다. 상기 적어도 하나의 가상 머신(240)은 상기 어플리케이션의 실행에 관련된 적어도 하나의 프로세스(243)(t0, t1 및 t2)를 스케줄링하는 가상 스케줄러(241a, 241b 또는 241c)를 포함하여 설정될 수 있다.
도 3a는 다양한 실시 예들에 따른 전자 장치의 구성 예를 나타내는 도면이다.
상기 3a를 참조하면, 다양한 실시 예에 따른 호스트 OS(220)는 관리 모듈(221)을 이용하여 가상 머신들(240a, 240b)에서 관리하는 프로세스 정보를 호스트 OS(220)에서도 공유하여 관리할 수 있도록 설정될 수 있다. 상기 호스트 OS(220)는 상기 적어도 하나의 가상 머신(240a 및 240b)의 상기 프로세스 정보 및 프로세스 스케줄링을 위한 우선순위(priority) 및 프로세스가 구동(running)되는 시간을 나타내는 가상 런타임(virtual runtime)을 포함하는 스케줄링 정책에 관련된 정보를 공유받을 수 있다.
상기 가상 머신들(240a 및 240b) 각각에 포함된 가상 스케줄러(241a 및 241b)는 새로운 프로세스가 생성될 때, 상기 생성된 프로세스를 식별하고, 상기 식별된 프로세스에 대한 프로세스 정보를 상기 호스트 OS(220)에서 공유할 수 있도록 하이퍼바이저(230)로 전송할 수 있다. 한 실시 예에 따라 상기 가상 스케줄러(241a 및 241b)는 새로운 프로세스가 생성된 것을 식별할 때마다 상기 새로운 프로세스에 대한 프로세스 정보를 하이퍼바이저(230)를 통해 또는 직접적으로 상기 호스트 OS(220)의 관리 모듈(221)로 제공할 수 있다. 다른 실시 예에 따라, 상기 가상 스케줄러(241a 또는 241b)는 정해진 시간 주기 또는 스케줄링이 시작될 때, 관리하고 있는 모든 또는 적어도 일부의 프로세스 정보를 하이퍼바이저(230)를 통해 또는 직접적으로 상기 호스트 OS(220)와 공유하도록 상기 관리 모듈(221)로 제공할 수 있다.
상기 가상 스케줄러(241a 및 241b)는 상기 호스트 스케줄러(223)에 의한 스케줄링에 따라 선정된 적어도 하나의 프로세스에 할당된 코어에 관련된 정보(이하, 할당 정보라 칭함)를 수신할 수 있다. 상기 가상 스케줄러(241a 및 241b)는 상기 할당 정보를 수신할 때, 할당 정보를 기반으로 구동할 적어도 하나의 프로세스를 식별하고, 식별된 적어도 하나의 프로세스에 상응하는 가상 머신(240)으로 할당 정보를 포함하는 신호를 전달할 수 있다. 상기 가상 머신(240)은 상기 식별된 적어도 하나의 프로세스를 실행 상태(running state)로 변경한 후, 상기 식별된 적어도 하나의 프로세스에 할당된 코어를 이용하여 상기 식별된 적어도 하나의 프로세스가 구동되도록 설정될 수 있다.
상기 하이퍼바이저(230)는 상기 가상 머신들(240a 및 240b) 각각으로부터 수신된 프로세스 정보를 통신 큐(301)에 삽입할 수 있다. 상기 하이퍼바이저(230)는 상기 통신 큐(301)에 삽입된 프로세스 정보를 상기 호스트 OS(220)로 전송할 수 있다. 다른 실시 예에 따라, 상기 하이퍼바이저(230)는 상기 통신 큐(301)를 생략하여 설정될 수 있다.
상기 호스트 OS(220)의 관리 모듈(221)은 가상 준비 큐(303)를 포함하여 설정될 수 있으나, 이에 한정되지 않고, 상기 가상 준비(303)를 생략하여 설정될 수 있다. 다양한 실시 예들 중 어느 한 실시예에 따라, 상기 관리 모듈(221)은 상기 하이퍼바이저(230)를 통해 수신된 프로세스 정보를 가상 준비 큐(303)에 삽입할 수 있다. 다양한 실시예들 중 다른 실시 예에 따라, 상기 관리 모듈(221)은 상기 가상 준비 큐(303)가 생략된 경우, 수신된 프로세스 정보를 호스트 준비 큐(305)에 삽입할 수 있다. 다양한 실시예들 중 또 다른 실시 예에 따라, 상기 관리 모듈(221)은 상기 가상 준비 큐(303)에 삽입된 프로세스 정보를 호스트 준비 큐(305)에 삽입하도록 관리할 수 있다. 예를 들어, 상기 호스트 스케줄러(223)가 상기 호스트 준비 큐(305)에 삽입된 프로세스만을 선정할 수 있는 경우, 상기 관리 모듈(221)은 상기 가상 준비 큐(303)에 삽입된 프로세서들 중 적어도 일부 또는 전부를 상기 호스트 준비 큐(305)로 삽입할 수 있다.
상기 관리 모듈(221)은 상기 하이퍼바이저(230)를 통해 가상 머신(240a 및/또는 240b)으로부터 프로세스 정보를 수신하고, 수신된 프로세스 정보를 관리할 수 있으며, 상기 프로세스 정보를 기반으로 상기 적어도 하나의 프로세스의 우선순위를 가상 머신(240a 및 240b) 별로 식별할 수 있다. 어느 한 실시예에 따라 상기 관리 모듈(221)은 적어도 하나의 프로세스의 우선순위를 직접 스케줄링 정책을 기반으로 결정하여 관리할 수 있다. 다른 실시예에 따라, 상기 관리 모듈(221)은 상기 수신된 프로세스 정보를 기반으로 적어도 하나의 프로세서의 우선순위를 미리 확인하고, 호스트 스케줄러(223)에서 프로세스 스케줄링할 때, 상기 미리 확인된 우선순위를 상기 호스트 스케줄러(2230)로 제공하도록 관리할 수 있다. 또 다른 실시예에 따라, 상기 관리 모듈(221)은 상기 스케줄링 정책 및 상기 하이퍼바이저(230)에 의해 확인된 부가 정보를 기반으로 우선순위를 결정하여 관리하거나, 상기 부가 정보를 상기 호스트 스케줄러(2230)로 제공하도록 관리할 수 있다. 예를 들어, 상기 부가 정보는 상기 가상 머신(240a 및 240b)의 과금 정보 또는 고유 속성을 포함할 수 있다.
상기 호스트 스케줄러(223)는 상기 호스트 준비 큐(host ready queue)(305)를 포함하여 이루어질 수 있다. 여기서, 상기 호스트 준비 큐(305)는 전자 장치(101)의 메모리(예, 도 1의 메모리(132) 또는 도 2의 메모리(213)와 동일 또는 유사)의 일부 또는 상기 호스트 OS(220)를 위한 별도의 로컬 메모리의 저장 영역일 수 있다.
상기 호스트 스케줄러(223)는 상기 선정된 적어도 하나의 프로세스(예, 가상 프로세스 또는 호스트의 프로세스)를 코어에 할당할 수 있다. 상기 호스트 스케줄러(223)는 호스트 OS(220)에서 구동하는 프로세스(예, 호스트 프로세스) 뿐만 아니라, 관리 모듈(221)에 의해 관리되는 가상 머신(240)에 대한 프로세스 정보를 기반으로 이종의 프로세스인 가상 프로세스를 스케줄링할 수 있다.
상기 호스트 스케줄러(223)는 상기 가상 준비 큐(303) 및/또는 상기 호스트 준비 큐(305)에 삽입된 프로세스 정보를 기반하여 적어도 하나의 프로세스를 선정할 수 있다. 상기 선정된 적어도 하나의 프로세스가 가상 프로세스인 경우, 상기 프로세스에 대응하는 가상 머신(예, 제1 가상 머신(240a))으로 할당 정보를 예를 들어, 가상 인터럽트(vIRQ)를 통해 전송할 수 있으나, 반드시, 이에 한정되는 것은 아니다. 다양한 실시 예에 따라 상기 호스트 스케줄러(223)는 상기 할당 정보를 상기 하이퍼바이저(230)로 전송할 수 있다. 다양한 실시 예에 따라, 상기 호스트 스케줄러(223)는 미리 지정된 스케줄링 정책들 중에 예를 들어, 가상 런타임(virtual runtime) 또는 토큰(token)과 같은 정책을 사용하여 적어도 하나의 프로세스를 선정할 수 있다.
다양한 실시 예들 중 어느 한 실시 예에 따라, 상기 호스트 스케줄러(223)는 물리적 CPU(Central Processing Unit)에서 실행되는 프로세스(이하, 호스트 프로세스라 칭함)를 호스트 준비 큐(host ready queue)(305)에 삽입할 수 있다. 상기 호스트 스케줄러(223)는 가상 준비 큐(303)에 액세스(access)할 수 있다. 상기 호스트 스케줄러(223)는 프로세스 스케줄 이벤트가 발생할 때, 가상 준비 큐(303)에 삽입된 프로세스들(예, 가상 프로세스) 및 호스트 준비 큐(305)에 삽입된 프로세스들(예, 호스트 프로세스) 중 적어도 하나를 선정할 수 있다. 상기 호스트 스케줄러(223)는 상기 선정된 적어도 하나의 프로세스를 코어에 할당할 수 있다. 상기 호스트 스케줄러(223)는 프로세스를 선정할 때, 상기 관리 모듈(221)로부터 제공된 우선순위에 관련된 정보(예, 관리 모듈(221)에서 결정된 우선순위 정보, 스케줄링 정책에 따른 우선순위 정보 또는 스케줄링 정책 및 부가 정보에 따른 우선순위 정보)를 기반으로 상기 가상 프로세스들 및 상기 호스트 테스트들의 우선순위를 결정할 수 있다.
다양한 실시 예들 중 다른 실시 예에 따라, 상기 호스트 스케줄러(223)는 상기 가상 준비 큐(303)가 생략된 경우, 상기 호스트 준비 큐(305)에 삽입된 프로세스들(예, 가상 프로세스들 및 호스트 프로세스들) 중에서 적어도 하나의 프로세스를 선정할 수 있다.
다양한 실시 예들 중 또 다른 실시 예에 따라, 상기 호스트 스케줄러(223)는 상기 가상 준비 큐(303)에 삽입된 프로세서들 중 적어도 일부 또는 전부가 상기 호스트 준비 큐(305)에 삽입되면, 상기 호스트 준비 큐(305)에 삽입된 프로세스들(예, 가상 프로세스들 및 호스트 프로세스들) 중에서 적어도 하나의 프로세스를 선정할 수 있다.
도 3b는 다양한 실시 예들에 따른 전자 장치의 구성 예를 나타내는 도면이다.
상기 도 3b에 따른 실시 예에서는 상기 호스트 OS(220)가 가상 준비 큐(303), 호스트 준비 큐(305) 및 코어들(예, 도 1의 코어(123)) 각각에 대응하는 제1 및 제2 실행 큐(307a 및 307b)를 이용하여 프로세스 스케줄링을 수행하는 것을 예를 들어 설명하기로 한다.
상기 도 3a 및 상기 도 3b를 참조하면, 상기 관리 모듈(221)은 상기 가상 준비 큐(303)에 제1 가상 머신(240a)의 가상 프로세스들(예, 제1 가상 프로세스 (VM0-t1), 제2 가상 프로세스(VM0-t2)) 및 제2 가상 머신(240b)의 가상 프로세스(예, 제3 가상 프로세스(VM1-t0)) 각각에 대한 프로세스 정보를 삽입하여 관리할 수 있다. 상기 호스트 스케줄러(223)는 호스트 준비 큐(305)에 호스트 프로세스들(t0 및 t1) 각각에 대한 프로세스 정보를 삽입할 수 있다. 여기서, 제1 가상 프로세스(예, VM0-t1) 및 상기 제3 가상 프로세스(예, VM1-t0)가 상기 제2 가상 프로세스(VM0_t2) 및 호스트 프로세스들(t0 및 t1) 보다 우선순위가 높을 수 있다.
상기 호스트 스케줄러(223)는 스케줄링을 수행할 때, 상기 가상 준비 큐(303)에 삽입된 프로세스 정보들 및 상기 호스트 준비 큐(305)에 삽입된 프로세스 정보를 기반하여 상기 우선순위가 높은 제1 및 제3 가상 프로세스(VM0-t1 및 VM1-t0)를 선정하고, 선정된 제1 및 제3 가상 프로세스(VM0-t1 및 VM1-t0) 각각을 제1 코어 및 제2 코어에 할당할 수 있다. 이때, 상기 호스트 스케줄러(223)는 상기 할당된 제1 코어에 대응하는 제1 구동 큐(307a)(run queue)에 상기 제1 가상 프로세스(VM0-t1)에 대한 프로세스 정보를 삽입하고, 상기 제2 코어에 대응하는 제2 구동 큐(307b)(run queue)에 상기 제3 가상 프로세스(VM1-t0)에 대한 프로세스 정보를 삽입할 수 있다. 상기 호스트 스케줄러(223)는 제1 가상 프로세스(예, VM0-t1)에 대한 할당 정보를 상기 제1 가상 머신(240a)으로 전송하고, 상기 제3 가상 프로세스(예,VM1-t0)에 대한 할당 정보를 상기 제2 가상 머신(240b)으로 전송할 수 있다. 여기서, 상기 제1 코어 및 제2 코어는 적어도 하나의 프로세서(예, 도 1의 프로세서(121) 또는 도 2의 프로세서(211))에 포함된 물리적 코어이다. 상기 제1 실행 큐(307a) 및 상기 제2 실행 큐(307b)는 전자 장치(101)의 메모리(예, 도 1의 메모리(132) 또는 도 2의 메모리(213)와 동일 또는 유사)의 일부 또는 상기 호스트 OS(220)를 위한 별도의 로컬 메모리의 일부 저장 영역일 수 있다.
상기 제1 가상 머신(240a)은 수신된 할당 정보를 기반하여 상기 제1 가상 프로세스(VM0-t1)를 식별하고, 상기 제1 가상 프로세스(VM0-t1)를 구동 상태로 변환하고, 구동 시점이 되면, 상기 제1 가상 프로세스(VM0-t1)가 삽입된 상기 제1 구동 큐(307a)에 대응하는 제1 코어를 이용하여 제1 가상 프로세스(VM0-t1)를 구동하도록 설정될 수 있다.
상기 제2 가상 머신(240b)은 수신된 할당 정보를 기반하여 식별된 제1 가상 프로세스(VM0-t1)를 구동 상태로 변환하고, 구동 시점이 되면, 상기 제1 가상 프로세스(VM0-t1)가 삽입된 상기 제1 구동 큐(307a)에 대응하는 제1 코어를 이용하여 제1 가상 프로세스(VM0-t1)가 구동되도록 설정될 수 있다.
이와 같이, 다양한 실시 예들에서는 상기 도 2(또는 상기 도 3a)의 전자 장치(101)를 통해 전자 장치의 주요 구성 요소에 대해 설명하였다. 그러나 다양한 실시 예들에서는 상기 도 2(또는 상기 도 3a)를 통해 도시된 구성 요소가 모두 필수 구성 요소인 것은 아니며, 도시된 구성 요소보다 많은 구성 요소에 의해 상기 전자 장치(101)가 구현될 수도 있고, 그 보다 적은 구성 요소에 의해 상기 전자 장치(101)가 구현될 수도 있다. 또한, 상기 도 2(또는 상기 도 3a)를 통해 상술한 전자 장치(101)의 주요 구성 요소의 위치는 다양한 실시 예에 따라 변경 가능할 수 있다.
다양한 실시 예들 중 어느 하나에 따른 전자 장치는, 메모리 및 적어도 하나의 프로세서를 포함하며, 상기 메모리는 상기 적어도 하나의 프로세서로 하여금 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 인스트럭션들을 저장하고, 상기 호스트 OS는, 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하고, 상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에 적어도 하나의 코어를 할당하고, 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하도록 설정될 수 있다.
다양한 실시 예에 따라, 상기 호스트 OS는, 상기 가상 머신에 적어도 하나의 코어를 할당할 때, 상기 가상 머신으로부터 공유 받은 스케줄링 정책에 관련된 정보 및 상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에서 구동할 적어도 하나의 프로세스를 선정하고, 상기 선정된 적어도 하나의 프로세스에 상기 적어도 하나의 코어를 할당하도록 설정될 수 있다.
다양한 실시 예에 따라, 상기 전자 장치는 상기 가상 머신으로부터 제공된 상기 적어도 하나의 프로세스에 대한 정보를 상기 호스트 OS로 제공하는 하이퍼바이저를 더 포함할 수 있다.
다양한 실시 예에 따라, 상기 호스트 OS는 상기 호스트 OS는, 상기 가상 머신의 가상 스케줄러에서 관리하는 상기 적어도 하나의 프로세스에 대한 정보를 공유받고, 공유받은 상기 적어도 하나의 프로세스에 대한 정보를 관리하도록 설정되는 관리 모듈 및 상기 적어도 하나의 프로세스에 대한 정보를 기반하여 상기 가상 머신에서 구동할 적어도 하나의 프로세스를 선정하고, 상기 선정된 적어도 하나의 프로세스에 상기 적어도 하나의 코어를 할당하도록 스케줄링을 수행하는 호스트 스케줄러를 포함할 수 있다.
다양한 실시 예에 따라, 상기 관리 모듈은 우선순위 및 프로세스가 구동되는 시간을 나타내는 가상 런타임을 포함하는 스케줄링 정책에 관련된 정보를 상기 가상 머신으로부터 공유받아 관리하도록 더 설정할 수 있다.
다양한 실시 예에 따라, 상기 호스트 스케줄러, 상기 스케줄링을 위한 이벤트가 발생할 때, 상기 호스트 OS에서 구동되는 적어도 하나의 다른 프로세스 및 상기 가상 머신에서 구동할 적어도 하나의 프로세스 중 적어도 하나를 선정하도록 더 설정될 수 있다.
다양한 실시 예에 따라, 상기 호스트 스케줄러, 상기 스케줄링을 위한 이벤트가 발생할 때, 상기 가상 머신에서 구동할 상기 적어도 하나의 프로세스를 선정하고, 상기 선정된 적어도 하나의 프로세스와 연동하여 상기 호스트 OS에서 구동할 적어도 하나의 다른 프로세스를 추가로 선정하도록 더 설정될 수 있다.
다양한 실시 예에 따라, 상기 가상 머신은, 상기 호스트 OS로부터 제공된 상기 적어도 하나의 코어의 할당에 관련된 정보를 기반하여 구동할 적어도 하나의 프로세스를 식별하고, 상기 식별된 적어도 하나의 프로세스를 구동하도록 설정될 수 있다.
다양한 실시 예들 중 어느 하나에 따른 전자 장치는, 메모리 및 적어도 하나의 프로세서를 포함하며, 상기 메모리는 상기 적어도 하나의 프로세서로 하여금 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 인스트럭션들을 저장하고, 상기 호스트 OS는, 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하고, 상기 적어도 하나의 프로세스에 대한 정보를 기반하여 식별된 적어도 하나의 가상 자원에 적어도 하나의 코어를 할당하고, 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하도록 설정될 수 있다.
다양한 실시 예에 따라, 상기 호스트 OS는, 상기 호스트 OS는,
상기 가상 머신의 가상 스케줄러에서 관리하는 상기 적어도 하나의 프로세스에 대한 정보를 공유받고, 공유받은 상기 적어도 하나의 프로세스에 대한 정보를 관리하도록 설정되는 관리 모듈 및 상기 적어도 하나의 프로세스에 대한 정보를 기반하여 상기 가상 머신에서 이용 가능한 상기 적어도 하나의 가상 자원을 식별하고, 상기 적어도 하나의 가상 자원에 상기 적어도 하나의 코어를 할당하도록 상기 스케줄링을 수행하는 호스트 스케줄러를 포함할 수 있다.
다양한 실시 예에 따라, 상기 전자 장치는 상기 적어도 하나의 프로세스에 대한 정보를 상기 호스트 OS로 제공하고, 상기 호스트 OS로부터 제공되는 상기 적어도 하나의 코어의 할당에 관련된 정보를 기반하여 상기 가상 머신에 상기 적어도 하나의 가상 자원을 재할당하도록 설정되는 하이퍼바이저를 더 포함하는 더 포함할 수 있다.
다양한 실시 예에 따라, 상기 가상 머신은 상기 하이퍼바이저에 의해 재할당된 상기 적어도 하나의 가상 자원을 식별하고, 적어도 하나의 프로세스를 선정하고, 상기 선정된 적어도 하나의 프로세스에 상기 적어도 하나의 가상 자원을 할당하고, 상기 선정된 적어도 하나의 프로세스를 구동하도록 설정될 수 있다.
상술한 바와 같은 다양한 실시 예들에 따른 전자 장치에서의 동작 절차에 대해 첨부된 도면들을 참조하여 구체적으로 설명하기로 한다.
도 4는 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
다양한 실시 예들에 따른 전자 장치(도 1의 제1 전자 장치(101) 또는 도 2의 전자 장치(101))는 적어도 하나의 프로세서(예, 도 1의 프로세서(121) 또는 도 2의 프로세서(211))에 의해 적어도 하나의 가상 머신(예, 도 2의 가상 머신(240)) 및 호스트 OS(예, 도 2 또는 도 3a의 호스트 OS(220))를 실행할 수 있다. 상기 호스트 OS는 가상 머신에서 실행되는 적어도 하나의 프로세스에 대한 프로세스 정보를 공유받아 관리할 수 있다.
상기 도 4를 참조하면, 401 동작에서 상기 전자 장치에서 실행되는 호스트 OS는 적어도 하나의 프로세스에 대한 정보(이하, 프로세스 정보라 칭함)를 상기 가상 머신으로부터 수신할 수 있다. 이때, 상기 호스트 OS는 상기 가상 머신으로부터 수신된 프로세스 정보를 가상 준비 큐(예, 도 3a의 가상 준비 큐(303))에 삽입하고, 스케줄링 기회가 주어질 때까지 상기 프로세스 정보를 관리할 수 있다. 다양한 실시 예에 따라 상기 호스트 OS는 상기 프로세스 정보를 하이퍼바이저(예, 도 2 또는 도 3a의 하이퍼바이저(230))의 통신 큐(예, 도 3a의 통신 큐(301))를 이용하여 수신할 수 있다.
403 동작에서 상기 호스트 OS는 상기 적어도 하나의 프로세스에 근거하여 상기 가상 머신에 적어도 하나의 코어를 할당할 수 있다. 여기서, 상기 403단계에서 상기 호스트 OS는 스케줄링을 수행할 때, 상기 가상 준비 큐에 삽입된 적어도 하나의 프로세스(가상 프로세스) 또는 호스트의 프로세스들 중 적어도 하나를 선정할 수 있다. 상기 호스트 OS는 상기 선정된 적어도 하나의 프로세스에 코어를 할당할 수 있다.
405 동작에서 상기 호스트 OS는 상기 적어도 하나의 코어의 할당에 관련된 정보(이하, 할당 정보)를 상기 가상 머신에 제공할 수 있다. 다양한 실시 예에 따라, 상기 호스트 OS는 상기 선정된 적어도 하나의 프로세스가 가상 프로세스인 경우, 상기 할당 정보를 가상 머신으로 직접 또는 하이퍼바이저를 통해 전송할 수 있다.
상기 가상 머신은 상기 호스트 OS로부터 상기 할당 정보를 제공받을 때, 상기 할당 정보를 기반하여 구동할 적어도 하나의 프로세스를 식별하고, 식별된 적어도 하나의 프로세스에 할당된 코어를 이용하여 상기 식별된 적어도 하나의 프로세스를 구동할 수 있다.
도 5는 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이고, 도 6은 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
상기 도 4와 같은 프로세스 스케줄링 동작 절차를 기반으로 상기 도 5 및 상기 도 6을 참조하여 구체적인 동작 절차를 설명하기로 한다.
상기 도 5 및 상기 도 6을 참조하면, 601 및 603 동작(도 5의 511 동작과 동일)에서, 다양한 실시 예에 따른 전자 장치(도 1의 제1 전자 장치(101) 또는 도 2의 전자 장치(101))에서 실행되는 적어도 하나의 가상 머신(240)은 새로운 프로세스가 생성될 때, 가상 스케줄러(241)를 통해 생성된 새로운 프로세스를 호스트 OS(220)와 공유하기 위해 상기 새로운 프로세스에 대한 프로세스 정보를 관리 모듈(221)로 제공할 수 있다. 다양한 실시 예에 따라 상기 가상 머신(240)은 하이퍼바이저(230)를 통해 상기 호스트 OS(220)의 관리 모듈(221)로 상기 프로세스 정보를 제공할 수 있다. 이때, 상기 하이퍼바이저(230)는 상기 가상 머신(240)에서 수신된 상기 프로세스 정보를 통신 큐(301)에 삽입하고, 상기 통신 큐(301)에 삽입된 프로세스 정보를 상기 관리 모듈(221)로 전송할 수 있다. 다양한 실시예에 따라, 상기 하이퍼바이저(203)는 통신 큐(301)를 생략할 수 있다. 다양한 실시예에 따라, 상기 가상 머신(240)은 직접적으로 상기 프로세스 정보를 상기 관리 모듈(221)로 전송할 수 있다. 다양한 실시 예에 따라, 상기 가상 머신(240)의 가상 스케줄러(241)는 새로운 프로세스가 생성된 것을 식별할 때, 정해진 시간 주기 또는 스케줄링이 시작될 때마다 새로운 프로세스에 대한 프로세스 정보 또는 상기 호스트 OS(220)에 공유되지 않은 프로세스에 대한 프로세스 정보를 제공할 수 있다.
605 동작에서, 상기 호스트 OS(220)의 관리 모듈(221)은 상기 가상 머신(240)으로부터 제공된 프로세스 정보를 관리할 수 있다. 다양한 실시 예에 따라, 상기 호스트 OS(220)는 상기 수신된 적어도 하나의 프로세스 정보를 가상 준비 큐(303)에 삽입할 수 있다. 상기 관리 모듈(221)은 적어도 하나의 프로세스의 우선순위를 가상 머신(240) 별로 식별할 수 있다. 상기 관리 모듈(221)은 상기 식별된 우선순위를 기반으로 다음 프로세스 스케줄링을 대기할 수 있다. 상기 관리 모듈(221)은 상기 가상 머신(240)에서 스케줄링되는 프로세스들의 적어도 일부 또는 전부를 상기 가상 준비 큐(303)에 삽입할 수 있다.
607 동작에서, 상기 호스트 스케줄러(223)는 프로세스 스케줄링 이벤트 발생을 확인할 수 있다.
609 동작(또는 도 5의 513 동작)에서, 상기 호스트 OS(220)의 호스트 스케줄러(223)는 상기 프로세스 스케줄 이벤트가 발생할 때, 상기 가상 준비 큐(301)에 삽입된 프로세스 정보프로세스 및 호스트 준비 큐(305)에 삽입된 프로세스 정보를 기반으로 적어도 하나의 프로세스를 선정할 수 있다. 상기 호스트 스케줄러(223)는 미리 지정된 스케줄링 정책을 기반으로 가상 프로세스들 및 호스트의 프로세스들의 우선순위를 식별할 수 있으며, 식별된 우선순위를 기반으로 상기 적어도 하나의 프로세스를 선정할 수 있다. 여기서, 상기 선정된 프로세스가 다수인 경우, 선정된 프로세스들이 모두 하나의 가상 머신에 대응하는 프로세스이거나, 상기 선정된 프로세스들 중 일부가 다른 가상 머신에 대응되는 프로세스일 수 있다. 다양한 실시 예에 따라, 상기 호스트 스케줄러(223)는 프로세스를 선정할 때, 상기 관리 모듈(221)로부터 제공된 우선순위에 관련된 정보(예, 관리 모듈(221)에서 결정된 우선순위 정보, 스케줄링 정책에 따른 우선순위 정보 또는 스케줄링 정책 및 부가 정보에 따른 우선순위 정보)를 기반으로 상기 가상 프로세스들 및 상기 호스트 프로세스들의 우선순위를 결정할 수 있다. 다양한 실시 예에 따라, 상기 호스트 스케줄러(223)는 미리 지정된 스케줄링 정책들 중에 예를 들어, 가상 런타임(virtual runtime) 또는 토큰(token)과 같은 정책을 사용하여 적어도 하나의 프로세스를 선정할 수 있다.
611 동작에서, 상기 호스트 스케줄러(223)는 상기 선정된 적어도 하나의 프로세스에 코어를 할당할 수 있다. 즉, 상기 호스트 스케줄러(223)는 상기 적어도 하나의 프로세스를 실행할 가상 머신(240)에 적어도 하나의 코어를 할당할 수 있다.
613 동작(또는 도 5의 515 동작)에서 상기 호스트 스케줄러(223)는 상기 선정된 적어도 하나의 프로세스가 가상 프로세스로 식별하면, 상기 선정된 적어도 하나의 프로세스에 대한 할당 정보를 상기 선정된 프로세스를 실행할 가상 머신(240)으로 전송할 수 있다. 이때, 상기 가상 머신(240)은 상기 호스트 OS(220)로부터 수신된 할당 정보를 기반으로 상기 선정된 적어도 하나의 프로세스를 식별하고, 상기 식별된 프로세스를 구동 상태로 변환하여 구동을 대기할 수 있다. 615 동작에서 상기 호스트 스케줄러(223)는 할당된 코어에 상응하는 구동 큐(예, 도 3b의 구동 큐(307a 또는 307b))에 상기 선정된 프로세스에 대한 프로세스 정보를 삽입할 수 있다. 다양한 실시 예에 따라 상기 613 동작 이전 또는 동시에 수행될 수 있다.
617 동작에서 상기 가상 머신(240)은 할당된 코어를 이용하여 상기 선정된 프로세스를 구동할 수 있다.
도 7은 다양한 실시 예들에 따른 전자 장치의 프로세스 스케줄링 예를 나타내는 도면이다. 도 8은 다양한 실시 예들에 따른 전자 장치의 프로세스 스케줄링 예를 나타내는 도면이다.
상기 도 7에 도시된 바와 같은 실시 예에서는 적어도 하나의 프로세서(예, 도 1의 프로세서(121) 또는 도 2의 프로세서(211))에 포함되는 코어(예, 도 1의 코어(123))들 중 4개의 물리적 코어(예, big core #0, big core #1, little core #0, little core #1)를 예를 들어 설명하기로 한다. 또한, 상기 도 7a에 도시된 바와 같은 실시 예는 상기 도 3b를 기반으로 설명하기로 한다.
상기 도 7을 참조하면, 호스트 OS는 상기 도 3b의 가상 준비 큐(303)에 삽입된 프로세스 정보들을 기반으로 상기 도 6의 609 동작과 같이, 프로세스 스케줄링을 통해 제1 가상 프로세스(예, 게임)(711), 제2 가상 프로세스(예, 디스플레이 매니저(display manager)(713) 및 제3 가상 프로세스(예, 백신프로그램)(715)를 선정할 수 있다. 여기서, 상기 선정된 3개의 가상 프로세스들(711, 713 및 715)은 모두 하나의 가상 머신에 대응하거나, 상기 가상 프로세스들(711, 713 및 715) 중 적어도 일부는 서로 다른 가상 머신에 대응될 수 있다. 그러나 상기 도 7에서는 상기 선정된 3개의 가상 프로세스들(711, 713 및 715)은 모두 하나의 가상 머신에 대응되는 것을 예를 들어 설명하기로 한다. 상기 호스트 OS는 프로세스들(711, 713 및 715)이 선정된 것에 응답으로, 상기 선정된 가상 프로세스들(711, 713 및 715) 각각에 대한 프로세스 정보를 기반으로 상기 선정된 가상 프로세스들(711, 713 및 715) 각각을 코어에 할당할 수 있다. 예를 들어, 제1 가상 프로세스(711)는 제1 코어(big core #0)(701)에 할당하고, 제2 가상 프로세스(713)는 제2 코어(big core #1)(703)에 할당하고, 제3 가상 프로세스(715)는 제3 코어(little core #0)(705)에 할당할 수 있다. 상기 제2 가상 프로세스(713) 및 제3 가상 프로세스(715)는 상기 제1 가상 프로세스(711)에 연동하여 실행되는 프로세스일 수 있다. 상기 할당된 제1 내지 제3 가상 프로세스들(711, 713 및 715) 각각에 대한 프로세스 정보는 상기 제1 코어(701), 상기 제2 코어(703) 및 상기 제3 코어(705) 각각에 대응하는 구동 큐에 삽입될 수 있다.
상기 호스트 OS는 상기 도 3b에 도시된 바와 같은 호스트 준비 큐(305)에 삽입된 프로세스 정보를 기반으로 상기 제1 코어 내지 제4 코어(701, 703, 705 및 707)에 할당할 호스트 프로세스들을 선정할 수 있다. 예를 들어, 상기 호스트 OS는 상기 제1 코어(701)에 제1 호스트 프로세스(예, 스토리지 데몬(storage daemon))(721)를 할당하고, 상기 제2 코어(703)에 제2 호스트 프로세스(예, 음성 인식 서비스)(723)를 할당하고, 상기 제3 코어(705)에 제3 호스트 프로세스(예, 소셜 네트워크(social network) 서비스)(725)를 할당할 수 있다. 또한, 상기 호스트 OS는 제4 코어(little core #1)(707)에 제4 호스트 프로세스(예, 메신저 서비스 데몬)(727) 및 제5 호스트 프로세스(예, 네트워크 데몬)(729)를 할당할 수 있다. 상기 호스트 프로세스들(721, 723, 725, 727 및 729) 중 적어도 일부는 상기 선정된 가상 프로세스들(711, 713 및 715)에 관련하여 구동되는 프로세스일 수 있다.
상기 도 7 및 상기 도 8을 참조하면, 전자 장치(예, 도 1의 제1 전자 장치(101) 또는 도 2의 전자 장치(101))는 코어들(801)로 이루어진 적어도 하나의 프로세서(예, 도 1의 프로세서(123) 및 도 2의 프로세서(211))를 포함할 수 있다. 예를 들어, 상기 코어들(801)은 서로 다른 성능을 갖는 물리적인 비대칭 멀티 코어일 수 있으며, 상기 코어들(801) 각각은 성능에 따라 빅(big) 코어 및 리틀(little) 코어로 구분될 수 있으나, 이에 한정되지 않는다. 상기 전자 장치는 실행할 어플리케이션(803)을 가상화하여 실행하도록 할 수 있다.
상기 전자 장치에서 실행되는 가상 머신(807)은 상기 어플리케이션(803)에 관련된 적어도 하나의 프로세스(809)를 식별하고, 식별된 적어도 하나의 프로세스에 대한 프로세스 정보를 공유하도록 운영체제(예, 호스트 OS)(805)로 전송할 수 있다.
상기 운영체제(805)는 공유하는 프로세스 정보를 기반으로 적어도 하나의 프로세스(809)를 선정할 수 있으며, 선정된 적어도 하나의 프로세스(809)를 상기 코어들(801) 중에서 적어도 하나의 코어에 할당할 수 있다. 예를 들어, 상기 코어들(801)은 상기 도 7의 제1 내지 제4 코어(701, 703, 705 및 707)일 수 있으며, 상기 선정된 적어도 하나의 프로세스(809)는 상기 도 7의 제1 가상 프로세스들(711, 713, 715) 및 제2 호스트 프로세서들(721, 723, 725, 727 및 729)일 수 있다.
상기 전자 장치에서 실행되는 상기 가상 머신(807)은 상기 운영체제(805)로부터 수신된 상기 할당 정보를 기반으로 상기 선정된 프로세스들(809)을 실행할 수 있다.
도 9는 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
다양한 실시 예들에 따른 전자 장치(예, 도 1의 제1 전자 장치(101) 또는 도 2의 전자 장치(101))는 적어도 하나의 프로세서(예, 도 1의 프로세서(121) 또는 도 2의 프로세서(221))에 의해 적어도 하나의 가상 머신(예, 도 2의 가상 머신(240)), 하이버파이저(예, 도 2의 하이퍼바이저(230)) 및 호스트 OS(예, 도 2의 호스트 OS(220))를 실행할 수 있다. 상기 호스트 OS는 가상 머신에서 실행되는 적어도 하나의 프로세스에 대한 정보(이하, 프로세스 정보라 칭함)를 공유받아 관리할 수 있다.
상기 도 9를 참조하면, 901 동작에서 상기 전자 장치에서 실행되는 호스트 OS는 상기 가상 머신에 대응하는 적어도 하나의 프로세스에 대한 정보를 상기 하이퍼바이저를 통해 상기 가상 머신으로부터 수신할 수 있다.
903 동작에서 상기 호스트 OS는 상기 가상 머신으로부터 수신된 프로세스 정보를 관리할 수 있으며, 상기 수신된 프로세스 정보를 기반으로 상기 가상 머신에서 이용할 수 있는 가상 자원(예, vCPU)을 식별할 수 있다. 예를 들어, 상기 호스트 OS는 상기 가상 머신에 할당할 가상 자원의 수, 가상 자원 성능(예, big 가상 자원 또는 little 가상 자원)을 기반으로 상기 가상 자원을 식별할 수 있다.
905 동작에서 상기 호스트 OS는 상기 가상 머신에서 이용할 적어도 하나의 가상 자원에 적어도 하나의 코어를 할당할 수 있다. 907 동작에서 상기 호스트 OS는 상기 적어도 하나의 코어의 할당에 관련된 정보(예, 할당 정보)를 상기 하이퍼바이저를 통해 상기 가상 머신에 제공할 수 있다.
상기 하이퍼바이저는 상기 907 동작에 의해 상기 할당 정보를 획득하면, 상기 획득한 할당 정보를 기반으로 상기 가상 머신에서 이용할 수 있는 적어도 하나의 가상 자원을 재할당할 수 있다. 상기 하이퍼바이저는 상기 재할당에 관련된 정보(가상자원 재할당 정보)를 상기 가상 머신으로 제공할 수 있다. 상기 가상 머신은 상기 할당 정보를 획득하면, 상기 할당 정보를 기반으로 자신에게 할당된 적어도 하나의 가상 자원을 식별할 수 있다. 상기 가상 머신은 실행할 적어도 하나의 프로세스를 선정하고, 선정된 적어도 하나의 프로세스에 상기 식별된 적어도 하나의 가상 자원을 할당하고, 상기 할당된 가상 자원을 통해 상기 적어도 하나의 프로세스를 구동할 수 있다.
도 10은 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이고, 도 11은 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
상기 도 9와 같은 프로세스 스케줄링 동작 절차를 기반으로 상기 도 10 및 도 11을 참조하여 구체적인 동작 절차를 설명하기로 한다.
상기 도 10 및 도 11을 참조하면, 1101 및 1103 동작(도 10의 1011 동작과 동일)에서, 다양한 실시 예에 따른 전자 장치(도 1의 제1 전자 장치(101) 또는 도 2의 전자 장치(101))에서 실행되는 적어도 하나의 가상 머신(240)은 새로운 프로세스가 생성될 때, 가상 스케줄러(241)를 통해 생성된 새로운 프로세스에 대한 프로세스 정보를 호스트 OS(220)의 관리 모듈(221)로 제공할 수 있다. 이때, 상기 프로세스 정보는 하이퍼바이저(230)의 통신 큐를 통해 상기 관리 모듈(221)로 제공될 수 있으나, 반드시 이에 한정되지는 않는다. 다양한 실시 예에 따라, 상기 가상 머신(240)의 제1 스케줄러(241)는 새로운 프로세스가 생성된 것을 식별할 때, 정해진 시간 주기 또는 스케줄링이 시작될 때마다 새로운 프로세스 또는 상기 호스트 OS에 공유되지 않은 프로세스에 대한 프로세스 정보를 상기 하이퍼바이저(230)로 제공할 수 있다.
1105 동작에서, 상기 호스트 OS(220)의 관리 모듈(221)은 상기 하이퍼바이저를 통해 제공된 프로세스 정보를 관리할 수 있다. 상기 호스트 OS(220)는 상기 프로세스 정보를 기반으로 상기 가상 머신에서 이용할 수 있는 가상 자원(예, vCPU)을 식별할 수 있다. 상기 관리 모듈(221)은 식별된 상기 가상 자원에 대한 정보를 가상 준비 큐(303)에 삽입할 수 있다. 상기 관리 모듈(221)은 상기 가상 자원에 대한 정보를 기반으로 가상 머신(240) 별로 우선순위를 식별할 수 있다. 상기 관리 모듈(221)은 상기 식별된 우선순위를 기반으로 다음 스케줄링을 대기할 수 있다.
1107 동작에서, 상기 호스트 OS(220)의 호스트 스케줄러(223)는 스케줄 이벤트 발생을 확인할 수 있다.
1109 및 1111 동작(또는 도 10의 1013 동작)에서, 상기 호스트 OS(220)의 호스트 스케줄러(223)는 스케줄 이벤트가 발생하면, 가상 자원에 대한 스케줄링을 수행할 수 있다. 상기 1109 동작에서 상기 호스트 스케줄러(223)는 상기 스케줄링 수행 시, 상기 가상 준비 큐(303)에 삽입된 가상 자원에 대한 정보를 기반으로 식별된 우선순위에 따라 상기 가상 머신에서 이용할 수 있는 적어도 하나의 가상 자원을 선정할 수 있다. 상기 1111 동작에서 상기 호스트 스케줄러(223)는 상기 선정된 적어도 하나의 가상 자원에 적어도 하나의 코어를 할당할 수 있다.
1113 동작(또는 도 10의 1015 동작)에서 상기 호스트 스케줄러(223)는 상기 선정된 적어도 하나의 가상 자원에 대한 할당 정보를 상기 하이퍼바이저(230)로 제공할 수 있다. 여기서, 상기 할당 정보는 상기 선정된 적어도 하나의 가상 자원에 대한 정보 및 실행 요청에 관련된 정보를 포함할 수 있다.
1115 동작에서 상기 호스트 스케줄러(223)는 할당된 코어에 대응하는 구동 큐에 상기 선정된 상기 가상 자원에 대한 정보를 삽입할 수 있다.
1117 동작에서 상기 하이퍼바이저(230)는 제공된 상기 할당 정보를 기반으로 상기 가상 머신(240)에서 사용할 수 있는 가상 자원(vCPU)(1001)을 재할당할 수 있다. 여기서, 상기 할당 정보에 다수의 가상 머신(240)의 가상 자원에 대한 정보가 포함되는 경우, 상기 하이퍼바이저(230)는 상기 할당 정보를 기반으로 식별된 각 가상 머신(240) 별로 해당 가상 자원을 재할당할 수 있다.
1119 동작(또는 도 10의 1017 동작과 동일)에서 상기 하이퍼바이저(230)는 가상 자원 재할당에 관련된 정보(이하, 가상 자원(vCPU) 재할당 정보)를 상기 가상 머신(240)으로 제공할 수 있다.
1121 동작 및 1123 동작에서 상기 가상 머신(240)은 상기 가상 자원 재할당 정보를 기반으로 프로세스 스케줄링을 수행할 수 있다. 상기 1121 동작에서 상기 가상 머신(240)은 상기 가상 자원 재할당 정보를 기반으로 자신에게 할당된 적어도 하나의 가상 자원을 식별할 수 있으며, 식별된 적어도 하나의 가상 자원에 할당할 적어도 하나의 프로세스를 선정할 수 있다. 상기 1123 동작에서 상기 가상 머신(240)은 프로세스 스케줄링을 수행 시, 상기 선정된 프로세스에 자신에게 할당된 적어도 하나의 가상 자원을 할당할 수 있다.
1125 동작에서 상기 가상 머신(240)은 상기 선정된 프로세스를 할당한 가상 자원을 이용하여 상기 선정된 프로세스를 구동할 수 있다.
도 12는 다양한 실시 예들에 따른 전자 장치의 동작 절차 예를 나타내는 도면이다.
상기 도 12에 도시된 바와 같은 동작 절차는 상기 도 10의 동작 절차와 비교하여 1211 동작에서 가상 머신(240)이 주기적으로 프로세스 정보를 제공하는 동작은 도 10의 1011 동작과 상이하며, 나머지 1213 동작, 1215 동작 및 1217 동작은 모두 도 10의 1013 동작, 1015 동작 및 1017 동작과 동일하므로 구체적인 동작에 대한 설명은 생략하기로 한다. 상기 1217 동작에서 하이퍼바이저(230)는 상기 가상 머신(240)에서 사용할 수 있는 가상 자원(vCPU)(1201)에 대한 재할당 정보를 상기 가상 머신(240)으로 제공할 수 있다. 상기 도 12와 같은 동작 절차를 통해 상기 전자 장치는 스케줄링을 위해 가상 머신(240)과 호스트 OS(220) 간의 통신에 따른 오버헤드를 줄일 수 있다.
다양한 실시 예들에 따른 전자 장치는 호스트 OS에서 상기 도 12와 같은 미리 지정된 주기를 늘려서 가상 자원을 스케줄링 시점마다 매번 다시 할당하지 않고, 주기 동안의 히스토리 정보(internal history 또는 long-term history)를 토대로 상기 가상 자원을 간헐적으로 동적 할당할 수 있다.
상술한 도 10 및 상기 도 12에 도시된 바와 같은 동작 절차에 따른 다양한 실시 예들은 가상 머신의 프로세스 정보를 기반으로 각각의 가상 자원의 우선순위와 로드(load)를 지정할 수 있으며, 호스트 스케줄러는 직접적으로 상기 가상 머신의 프로세스를 스케줄링을 하지 않더라도, 제공받은 프로세스 정보를 기반으로 지정된 상기 우선순위와 로드를 기반으로 상기 가상 머신의 스케줄링 여부와 상기 가상 머신에서 이용할 수 있는 가상 자원을 할당하기 위한 적어도 하나의 프로세서의 코어에 대한 성능(예, 빅 코어(big core) 또는 리틀 코어(little core))을 식별할 수 있다. 또한, 상술한 도 10 및 상기 도 12에 도시된 바와 같은 동작 절차에 따른 다양한 실시 예들은 호스트의 스케줄링에 따른 오버헤드를 줄일 수 있고, 가상 스케줄러 및 관리 모듈의 오버헤드를 줄일 수 있다.
본 문서에서 사용된 용어 "모듈"은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. "모듈"은, 예를 들면, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component), 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. "모듈"은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면, "모듈"은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 도 1의 프로세서(121) 또는 도 2의 프로세서(211))에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 메모리(예: 도 1의 메모리(130))가 될 수 있다.
컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM(compact disc read only memory), DVD(digital versatile disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM(read only memory), RAM(random access memory), 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
다양한 실시 예에 따르면, 컴퓨터상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체에 있어서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가, 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 실행 가능한 명령들을 포함하며, 상기 호스트 OS로 하여금 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하는 동작, 상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에 적어도 하나의 코어를 할당하는 동작, 및 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하는 동작을 수행하도록 하는 실행 가능한 명령들을 포함할 수 있다.
또한, 다양한 실시 예에 따르면, 컴퓨터상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체에 있어서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가, 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 실행 가능한 명령들을 포함하며, 상기 호스트 OS로 하여금, 상기 호스트 OS는, 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하는 동작, 상기 적어도 하나의 프로세스에 대한 정보를 기반하여 식별된 적어도 하나의 가상 자원에 적어도 하나의 코어를 할당하는 동작 및 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하는 동작을 수행하도록 하는 실행 가능한 명령들을 포함할 수 있다.
그리고 본 문서에 개시된 실시예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 문서에서 기재된 기술의 범위를 한정하는 것은 아니다. 따라서, 본 문서의 범위는, 본 문서의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시예를 포함하는 것으로 해석되어야 한다.
100 : 네트워크 환경 101 : 전자 장치
102, 104 : 전자 장치 106 : 서버
110 : 버스 120 : 프로세서 모듈
130 : 메모리 141 : 커널
143 : 미들웨어 145 : API
147 : 어플리케이션 150 : 입출력 인터페이스
160 : 디스플레이 170 : 통신 인터페이스
162 : 네트워크 210 : 디바이스 하드웨어
220 : 호스트 OS 230 : 하이퍼바이저
240 : 가상 머신

Claims (20)

  1. 전자 장치에 있어서,
    메모리; 및
    적어도 하나의 프로세서를 포함하며,
    상기 메모리는 상기 적어도 하나의 프로세서로 하여금 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 인스트럭션들을 저장하고,
    상기 호스트 OS는,
    적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하고,
    상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에 적어도 하나의 코어를 할당하고,
    상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하도록 설정되는, 전자 장치.
  2. 제1항에 있어서,
    상기 호스트 OS는, 상기 가상 머신에 적어도 하나의 코어를 할당할 때, 상기 가상 머신으로부터 공유 받은 스케줄링 정책에 관련된 정보 및 상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에서 구동할 적어도 하나의 프로세스를 선정하고, 상기 선정된 적어도 하나의 프로세스에 상기 적어도 하나의 코어를 할당하도록 설정되는, 전자 장치.
  3. 제1항에 있어서, 상기 전자 장치는,
    상기 가상 머신으로부터 제공된 상기 적어도 하나의 프로세스에 대한 정보를 상기 호스트 OS로 제공하는 하이퍼바이저를 더 포함하는, 전자 장치.
  4. 제1항에 있어서, 상기 호스트 OS는,
    상기 가상 머신의 가상 스케줄러에서 관리하는 상기 적어도 하나의 프로세스에 대한 정보를 공유받고, 공유받은 상기 적어도 하나의 프로세스에 대한 정보를 관리하도록 설정되는 관리 모듈; 및
    상기 적어도 하나의 프로세스에 대한 정보를 기반하여 상기 가상 머신에서 구동할 적어도 하나의 프로세스를 선정하고, 상기 선정된 적어도 하나의 프로세스에 상기 적어도 하나의 코어를 할당하도록 스케줄링을 수행하는 호스트 스케줄러를 포함하는, 전자 장치.
  5. 제4항에 있어서,
    상기 관리 모듈은 우선순위 및 프로세스가 구동되는 시간을 나타내는 가상 런타임을 포함하는 스케줄링 정책에 관련된 정보를 상기 가상 머신으로부터 공유받아 관리하도록 더 설정되는, 전자 장치.
  6. 제4항에 있어서, 상기 호스트 스케줄러,
    상기 스케줄링을 위한 이벤트가 발생할 때, 상기 호스트 OS에서 구동되는 적어도 하나의 다른 프로세스 및 상기 가상 머신에서 구동할 적어도 하나의 프로세스 중 적어도 하나를 선정하도록 더 설정되는, 전자 장치.
  7. 제6항에 있어서, 상기 호스트 스케줄러,
    상기 스케줄링을 위한 이벤트가 발생할 때, 상기 가상 머신에서 구동할 상기 적어도 하나의 프로세스를 선정하고, 상기 선정된 적어도 하나의 프로세스와 연동하여 상기 호스트 OS에서 구동할 적어도 하나의 다른 프로세스를 추가로 선정하도록 더 설정되는, 전자 장치.
  8. 제1항에 있어서, 상기 가상 머신은,
    상기 호스트 OS로부터 제공된 상기 적어도 하나의 코어의 할당에 관련된 정보를 기반하여 구동할 적어도 하나의 프로세스를 식별하고,
    상기 식별된 적어도 하나의 프로세스를 구동하도록 설정되는, 전자 장치.
  9. 전자 장치에 있어서,
    메모리; 및
    적어도 하나의 프로세서를 포함하며,
    상기 메모리는 상기 적어도 하나의 프로세서로 하여금 호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 인스트럭션들을 저장하고, 상기 호스트 OS는, 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하고,
    상기 적어도 하나의 프로세스에 대한 정보를 기반하여 식별된 적어도 하나의 가상 자원에 적어도 하나의 코어를 할당하고,
    상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하도록 설정되는, 전자 장치.
  10. 제9항에 있어서, 상기 호스트 OS는,
    상기 가상 머신의 가상 스케줄러에서 관리하는 상기 적어도 하나의 프로세스에 대한 정보를 공유받고, 공유받은 상기 적어도 하나의 프로세스에 대한 정보를 관리하도록 설정되는 관리 모듈; 및
    상기 적어도 하나의 프로세스에 대한 정보를 기반하여 상기 가상 머신에서 이용 가능한 상기 적어도 하나의 가상 자원을 식별하고, 상기 적어도 하나의 가상 자원에 상기 적어도 하나의 코어를 할당하도록 상기 스케줄링을 수행하는 호스트 스케줄러를 포함하는, 전자 장치.
  11. 제9항에 있어서, 상기 전자 장치는,
    상기 적어도 하나의 프로세스에 대한 정보를 상기 호스트 OS로 제공하고, 상기 호스트 OS로부터 제공되는 상기 적어도 하나의 코어의 할당에 관련된 정보를 기반하여 상기 가상 머신에 상기 적어도 하나의 가상 자원을 재할당하도록 설정되는 하이퍼바이저를 더 포함하는, 전자 장치.
  12. 제11항에 있어서, 상기 가상 머신은,
    상기 하이퍼바이저에 의해 재할당된 상기 적어도 하나의 가상 자원을 식별하고,
    적어도 하나의 프로세스를 선정하고,
    상기 선정된 적어도 하나의 프로세스에 상기 적어도 하나의 가상 자원을 할당하고,
    상기 선정된 적어도 하나의 프로세스를 구동하도록 설정되는, 전자 장치.
  13. 컴퓨터상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체에 있어서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가,
    호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 실행 가능한 명령들을 포함하며,
    상기 호스트 OS로 하여금:
    적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하는 동작;
    상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에 적어도 하나의 코어를 할당하는 동작; 및
    상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하는 동작을 수행하도록 하는 실행 가능한 명령들을 포함하는, 컴퓨터 판독 가능한 기록 매체.
  14. 제13항에 있어서, 상기 가상 머신에 적어도 하나의 코어를 할당하는 동작은,
    상기 가상 머신으로부터 공유 받은 스케줄링 정책에 관련된 정보 및 상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에서 구동할 적어도 하나의 프로세스를 선정하는 동작, 및
    상기 선정된 적어도 하나의 프로세스에 상기 적어도 하나의 코어를 할당하는 동작을 수행하도록 하는 실행 가능한 명령들을 포함하는, 컴퓨터 판독 가능한 기록 매체.
  15. 제14항에 있어서, 상기 가상 머신에 적어도 하나의 코어를 할당하는 동작은,
    상기 선정된 적어도 하나의 프로세스와 연동하여 상기 호스트 OS에서 구동할 적어도 하나의 다른 프로세스를 추가로 선정하는 동작을 더 수행하도록 하는 실행 가능한 명령들을 포함하는, 컴퓨터 판독 가능한 기록 매체.
  16. 제13항에 있어서, 상기 가상 머신에 적어도 하나의 코어를 할당하는 동작은,
    상기 스케줄링을 위한 이벤트가 발생할 때, 상기 호스트 OS에서 구동되는 적어도 하나의 다른 프로세스 및 상기 가상 머신에서 구동할 적어도 하나의 프로세스 중 적어도 하나를 선정하는 동작을 수행하도록 하는 실행 가능한 명령들을 포함하는, 컴퓨터 판독 가능한 기록 매체.
  17. 컴퓨터상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체에 있어서, 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가,
    호스트 OS(operating system) 및 적어도 하나의 가상 머신을 실행하도록 하는 실행 가능한 명령들을 포함하며,
    상기 호스트 OS로 하여금:
    상기 호스트 OS는, 적어도 하나의 프로세스에 대한 정보를 상기 가상 머신으로부터 수신하는 동작;
    상기 적어도 하나의 프로세스에 대한 정보를 기반하여 식별된 적어도 하나의 가상 자원에 적어도 하나의 코어를 할당하는 동작; 및
    상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하는 동작을 수행하도록 하는 실행 가능한 명령들을 포함하는, 컴퓨터 판독 가능한 기록 매체.
  18. 제17항에 있어서, 상기 적어도 하나의 가상 머신으로 하여금:
    상기 적어도 하나의 코어의 할당에 관련된 정보를 기반으로 재할당된 상기 적어도 하나의 가상 자원을 식별하는 동작;
    적어도 하나의 프로세스를 선정하는 동작;
    상기 선정된 적어도 하나의 프로세스에 상기 적어도 하나의 가상 자원을 할당하는 동작; 및
    상기 할당된 적어도 하나의 가상 자원을 이용하여 상기 선정된 적어도 하나의 프로세스를 구동하는 동작을 수행하도록 실행 가능한 명령들을 포함하는, 컴퓨터 판독 가능한 기록 매체.
  19. 전자 장치에서 프로세스 스케줄링을 위한 방법은,
    상기 전자 장치의 적어도 하나의 프로세서에 의해 실행되는 호스트 OS(operating system)에 의해, 적어도 하나의 프로세스에 대한 정보를 상기 프로세서에 의해 실행되는 가상 머신으로부터 수신하는 동작;
    상기 호스트 OS에 의해, 상기 적어도 하나의 프로세스에 대한 정보에 기반하여 상기 가상 머신에 적어도 하나의 코어를 할당하는 동작;
    상기 호스트 OS에 의해, 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하는 동작; 및
    상기 가상 머신에 의해, 상기 적어도 하나의 코어의 할당에 관련된 정보를 기반하여 상기 적어도 하나의 프로세스를 구동하는 동작을 포함하는, 상기 방법.
  20. 전자 장치에서 프로세스 스케줄링을 위한 방법은,
    상기 전자 장치의 적어도 하나의 프로세서에 의해 실행되는 호스트 OS(operating system)에 의해, 적어도 하나의 프로세스에 대한 정보를 상기 프로세서에 의해 실행되는 가상 머신으로부터 수신하는 동작;
    상기 호스트에 의해, 상기 적어도 하나의 프로세스에 대한 정보를 기반하여 식별된 적어도 하나의 가상 자원에 적어도 하나의 코어를 할당하는 동작;
    상기 호스트에 의해, 상기 적어도 하나의 코어의 할당에 관련된 정보를 상기 가상 머신에 제공하는 동작;
    상기 가상 머신에 의해, 상기 적어도 하나의 코어의 할당에 관련된 정보를 기반으로 재할당된 상기 적어도 하나의 가상 자원을 식별하는 동작;
    상기 가상 머신에 의해, 적어도 하나의 프로세스를 선정하는 동작;
    상기 가상 머신에 의해, 상기 선정된 적어도 하나의 프로세스에 상기 적어도 하나의 가상 자원을 할당하는 동작; 및
    상기 가상 머신에 의해, 상기 할당된 적어도 하나의 가상 자원을 이용하여 상기 선정된 적어도 하나의 프로세스를 구동하는 동작을 포함하는, 방법.

KR1020190015145A 2019-02-08 2019-02-08 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법 KR20200097579A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190015145A KR20200097579A (ko) 2019-02-08 2019-02-08 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법
US16/784,884 US11630699B2 (en) 2019-02-08 2020-02-07 Virtual process scheduling and execution using cores allocated via host operating system having host ready queue and virtual ready queue
PCT/KR2020/001781 WO2020162715A1 (en) 2019-02-08 2020-02-07 Electronic device, storage medium, and method for process scheduling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190015145A KR20200097579A (ko) 2019-02-08 2019-02-08 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법

Publications (1)

Publication Number Publication Date
KR20200097579A true KR20200097579A (ko) 2020-08-19

Family

ID=71944576

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190015145A KR20200097579A (ko) 2019-02-08 2019-02-08 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법

Country Status (3)

Country Link
US (1) US11630699B2 (ko)
KR (1) KR20200097579A (ko)
WO (1) WO2020162715A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023195559A1 (ko) * 2022-04-08 2023-10-12 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치
WO2024025199A1 (ko) * 2022-07-28 2024-02-01 삼성전자 주식회사 컴퓨팅 장치 및 그 동작 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116450353A (zh) * 2021-04-21 2023-07-18 深圳市腾讯网络信息技术有限公司 处理器核匹配方法、装置、电子设备及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7433951B1 (en) 2000-09-22 2008-10-07 Vmware, Inc. System and method for controlling resource revocation in a multi-guest computer system
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
US8230425B2 (en) 2007-07-30 2012-07-24 International Business Machines Corporation Assigning tasks to processors in heterogeneous multiprocessors
US8762999B2 (en) * 2007-09-27 2014-06-24 Oracle America, Inc. Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement
US8424007B1 (en) * 2008-09-30 2013-04-16 Symantec Corporation Prioritizing tasks from virtual machines
US20100138829A1 (en) * 2008-12-01 2010-06-03 Vincent Hanquez Systems and Methods for Optimizing Configuration of a Virtual Machine Running At Least One Process
US8683243B2 (en) 2011-03-11 2014-03-25 Intel Corporation Dynamic core selection for heterogeneous multi-core systems
US8793686B2 (en) * 2011-06-08 2014-07-29 Microsoft Corporation Operating system decoupled heterogeneous computing
US8677449B1 (en) * 2012-03-19 2014-03-18 Google Inc. Exposing data to virtual machines
US9021509B1 (en) * 2013-04-24 2015-04-28 Empire Technology Development Llc Datacenter managed thread and multi-processing support
US20160170474A1 (en) * 2013-08-02 2016-06-16 Nec Corporation Power-saving control system, control device, control method, and control program for server equipped with non-volatile memory
US10776143B2 (en) * 2014-06-17 2020-09-15 International Business Machines Corporation Techniques for utilizing a resource fold factor in placement of physical resources for a virtual machine
KR102426633B1 (ko) * 2015-07-27 2022-07-29 삼성전자주식회사 운영체제 관리 방법 및 이를 지원하는 전자 장치
US10268580B2 (en) * 2016-09-30 2019-04-23 Intel Corporation Processors and methods for managing cache tiering with gather-scatter vector semantics
US10282226B2 (en) * 2016-12-20 2019-05-07 Vmware, Inc. Optimizing host CPU usage based on virtual machine guest OS power and performance management
US10545778B1 (en) * 2016-12-30 2020-01-28 Juniper Networks, Inc. Software redundancy for network functions
US11169857B2 (en) * 2018-05-25 2021-11-09 Red Hat, Inc. System and method for reserving a portion of CPU time for host execution

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023195559A1 (ko) * 2022-04-08 2023-10-12 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치
WO2024025199A1 (ko) * 2022-07-28 2024-02-01 삼성전자 주식회사 컴퓨팅 장치 및 그 동작 방법

Also Published As

Publication number Publication date
WO2020162715A1 (en) 2020-08-13
US20200257564A1 (en) 2020-08-13
US11630699B2 (en) 2023-04-18

Similar Documents

Publication Publication Date Title
US20200364085A1 (en) Task scheduling based on performance control conditions for multiple processing units
US9690618B2 (en) Method for task scheduling and electronic device using the same
EP2958019A1 (en) Method for task group migration and electronic device supporting the same
US11630699B2 (en) Virtual process scheduling and execution using cores allocated via host operating system having host ready queue and virtual ready queue
EP2919115B1 (en) Task migration method and apparatus
KR20160004152A (ko) 멀티 프로세서의 태스크(task) 우선순위 결정 방법 및 이를 구현하는 전자장치
EP3803585B1 (en) Electronic device for executing multiple operating systems and method of controlling same
KR20200007420A (ko) 전자 장치의 데이터 패킷 처리 장치 및 방법
KR102631745B1 (ko) 이종 운영체제의 실행을 제어하기 위한 방법, 이를 위한 전자 장치 및 저장 매체
KR102372644B1 (ko) 운영 체제의 운용 방법 및 이를 지원하는 전자 장치
KR20210060213A (ko) 어플리케이션을 프리로드하는 방법 및 이를 지원하는 전자 장치
WO2015176422A1 (zh) 一种基于安卓系统的应用管理方法及其装置
US9569241B2 (en) Sharing devices assigned to virtual machines using runtime exclusion
KR20210101055A (ko) 어플리케이션 실행 시 태스크 스케줄링을 위한 전자 장치, 그 동작 방법 및 저장 매체
EP3942385B1 (en) Electronic device for controlling frequency of processor and method of operating the same
US11768702B2 (en) Electronic device for scheduling based on heterogeneous multi-processor and operating method thereof
KR102423768B1 (ko) 복수의 스레드들에 포함된 복수의 명령어들을 처리하기 위한 방법 및 그 전자 장치
KR20200118980A (ko) 이종 운영체제를 실행하는 전자 장치 및 그 방법
KR102408961B1 (ko) 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치
EP4293509A1 (en) Electronic device including multiprocessor and operation method thereof
KR101334842B1 (ko) 가상화 지원 단말 플랫폼을 위한 가상머신 관리장치 및 방법
KR20220131023A (ko) 멀티 프로세서를 포함하는 전자 장치 및 그 운용 방법
KR20210017249A (ko) 프로세서 코어들과 다양한 버전의 isa들을 이용하여 명령어들을 실행하는 전자 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right