WO2024025199A1 - 컴퓨팅 장치 및 그 동작 방법 - Google Patents
컴퓨팅 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- WO2024025199A1 WO2024025199A1 PCT/KR2023/009629 KR2023009629W WO2024025199A1 WO 2024025199 A1 WO2024025199 A1 WO 2024025199A1 KR 2023009629 W KR2023009629 W KR 2023009629W WO 2024025199 A1 WO2024025199 A1 WO 2024025199A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- virtual machine
- application
- resource preemption
- host
- scheduling
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000015654 memory Effects 0.000 claims description 14
- 238000012790 confirmation Methods 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 18
- 238000013468 resource allocation Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 238000004590 computer program Methods 0.000 description 15
- 230000008859 change Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 230000007935 neutral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000001824 photoionisation detection Methods 0.000 description 1
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Definitions
- Various embodiments relate to a computing device and a method of operating the same, and more specifically, to a computing device and a method of operating the same for scheduling processing resources in a computing device including a host system and a virtual machine system.
- a virtual machine refers to a computing environment implemented in software, that is, software that emulates a computer system.
- the system virtual machine provides a complete system platform and supports the execution of a complete operating system (OS).
- OS operating system
- These system virtual machines multiplex the underlying physical computer between virtual machines running each operating system.
- a computing device may include a host system and one or more virtual machine systems, and each virtual machine system may be equipped with its own processing resource scheduler.
- the authority to allocate processing resources to computing devices is handled by each processing resource scheduler within the virtual machine system. Since the processing resource scheduler in the host system and the processing resource scheduler in the virtual machine system are independent of each other, a method of controlling the processing resource scheduler in the virtual machine system is required for efficient distribution of processing resources in the computing device.
- Various embodiments aim to provide a computing device and a method of operating the same for scheduling processing resources in a computing device including a host system and a virtual machine system.
- a method of operating a computing system including a host system and a virtual machine system includes receiving a request for execution of a virtual machine application by the virtual machine system, by a CPU scheduler of the virtual machine system, An operation of scheduling the virtual machine application requested to be executed to be executed first, providing the scheduling result to the kernel, and transmitting a request to confirm resource preoccupation rights for the virtual machine application to the CPU scheduler of the host system, the host system's An operation of determining resource preemption rights of the virtual machine application by a CPU scheduler by referring to a host scheduling list, and providing information about the determined resource preemption rights to the CPU scheduler of the virtual machine system.
- a method of operating a computing system including a host system and a virtual machine system includes, upon receiving a request for execution of a virtual machine application by the host system, sending a request for execution of the virtual machine application to the virtual machine system.
- An operation of transmitting, by the CPU scheduler of the host system, a resource preemption right to first execute the virtual machine application requested to be executed is determined, and information about the determined resource preemption right is sent to the CPU scheduler of the virtual machine system.
- the operation of delivering, scheduling the virtual machine application requested to be executed first based on information about the resource preemption authority determined by the CPU scheduler of the virtual machine system to execute the virtual machine application first, and Includes the operation of providing scheduling results to the kernel.
- a computing device includes a host system, a virtual machine system, one or more CPUs, and a memory including instructions, and when the instructions are executed by the computing device, the computing device An operation of receiving a request for execution of a virtual machine application, scheduling the virtual machine application requested to be executed first by the CPU scheduler of the virtual machine system, providing the scheduling result to the kernel, and executing the virtual machine application. An operation of transmitting a request for confirmation of resource preemption authority to the CPU scheduler of the host system, and determining, by the CPU scheduler of the host system, the resource preemption authority of the virtual machine application with reference to the host scheduling list, and determining the resource preemption authority of the virtual machine application by the CPU scheduler of the host system. An operation is performed to provide information about preemption rights to the CPU scheduler of the virtual machine system.
- a computing device includes a host system, a virtual machine system, one or more CPUs, and a memory including instructions, and when the instructions are executed by the computing device, the computing device is An operation of transmitting a request for execution of a virtual machine application to the virtual machine system upon receiving a request for execution of a virtual machine application, and a resource for first executing the virtual machine application requested to be executed by the CPU scheduler of the host system Determining preemption rights and transmitting information about the determined resource preemption rights to the CPU scheduler of the virtual machine system, and preempting the resources determined by the CPU scheduler of the virtual machine system to execute the virtual machine application first Based on information about permissions, the virtual machine application that has been requested to be executed is scheduled to be executed first, and the scheduling result is provided to the kernel.
- resource preemption scheduling for execution requests of virtual machine applications can be performed more effectively in a computing system including a host system and a virtual machine system.
- FIG. 1 illustrates an example of a computing device including a host system and a virtual machine system, according to one embodiment.
- FIG. 2 illustrates an example of a computing device including a host system and a virtual machine system, according to an embodiment.
- Figure 3 shows an example of a flowchart of a method of operating a computing device when receiving a request to execute a virtual machine application, according to an embodiment.
- Figure 4 shows an example of a flowchart of a method of operating a computing device when receiving a request to execute a virtual machine application, according to an embodiment.
- FIG. 5 is an example block diagram of a computing device including an Android system, which is an example of a virtual machine system, according to one embodiment.
- Figure 6 shows an example of a host scheduling list according to an embodiment.
- FIG. 7 illustrates an example flowchart of a method of operating the computing device shown in FIG. 6 according to an embodiment.
- FIG. 8 shows an example of a flowchart of a method of operating the computing device shown in FIG. 6 according to one embodiment.
- FIG. 9 shows an example of a flowchart of a method of operating a computing device when a request to execute a virtual machine application is received by a host system, according to an embodiment.
- FIG. 10 illustrates an example of an environment in which a request for execution of a virtual machine application is received by a host system according to an example.
- FIG. 11 is an example block diagram of a computing device including an Android system, which is an example of a virtual machine system, according to an embodiment.
- FIG. 12 shows an example of a flowchart of a method of operating the computing device shown in FIG. 11 according to an embodiment.
- FIG. 13 illustrates an example of a computing device according to an embodiment.
- the term “user” refers to a person who controls the functions or operations of a computing device or electronic device using a control device, and may include a viewer, an administrator, or an installer.
- Computers include general-purpose CPUs, or processors, designed to execute a set of system instructions.
- the processor executes instructions unique to the processor, and the set of instructions that the processor can execute is called the processor's instruction set.
- Processor uniqueness between computer systems typically results in incompatibility with the hardware architecture of the computer systems.
- Computer manufacturers generally want to allow more applications to run on their processor families. Therefore, to increase the number of operating systems and application programs that can run on a computer system, a host computer with one type of CPU, called a host, can run a virtual machine that allows it to emulate instructions for another type of CPU, called a guest. technology can be employed.
- a unit of work that is the target of scheduling for resource preemption may include an application, process, or task.
- resources scheduled for applications, processes, tasks, etc. may include CPU, memory, or other hardware devices.
- FIG. 1 illustrates an example of a computing device including a host system and a virtual machine system, according to one embodiment.
- the computing device 100 may include a host system 110 and a virtual machine system 120.
- the launch application 10 included in the host system 110 may include a host application and a virtual machine application.
- launch application 10 is shown to include two host applications #1 and #2 and two virtual machine applications #1 and #2.
- the Tizen home screen can include not only the Tizen application but also an Android application. In this way, when a request to execute a virtual machine application is received while the launch application 10, which is an application of the host system, is executed, it is necessary to effectively control the scheduling of the virtual machine system to execute the virtual machine application.
- the virtual machine system 120 may include virtual machine applications #1, #2, #3, and #4 that can be executed on the virtual machine application 20. While the virtual machine application 20 is running, if a request to execute virtual machine application #2, which is one of virtual machine applications #1, #2, #3, and #4, is received, the virtual machine is requested to execute the requested virtual machine application. It is necessary to effectively control the scheduling of the system.
- FIG. 2 illustrates an example of a computing device including a host system and a virtual machine system, according to an embodiment.
- the computing device 100 may include a host system 110, a virtual machine system 120, a kernel 130, and a hardware platform 140.
- Computing device 100 may represent a computer that supports execution of an operating system and one or more application programs. This computing device 100 may be a general purpose computer or a display device. Display devices may include various types of electronic devices that can receive and output content, such as network TV, smart TV, Internet TV, web TV, IPTV, PC, etc.
- the host system 110 provides an operating system platform for executing processes on the computing device 100.
- the host system 110 controls all hardware devices within the computing device 100 and manages system resources for all applications running therein.
- the host system 110 may include a host application 111, a host application framework 112, and a host CPU scheduler 113.
- the host application framework 112 may be composed of various different components such as support programs, compilers, code libraries, APIs, and classes that implement the application program standard structure for the host operating system.
- the host CPU scheduler 113 is a module that appropriately distributes CPU resources of the host system and can control the distribution of CPU resources of the virtual machine system by communicating with the virtual machine CPU scheduler 123 of the virtual machine system.
- the host CPU scheduler 113 when the host CPU scheduler 113 receives a request to confirm the resource preemption authority for the virtual machine application from the virtual machine CPU scheduler 123, the host CPU scheduler 113 determines the resource preemption authority of the virtual machine application by referring to the host scheduling list, and determines the resource preemption authority for the virtual machine application. Information about resource preemption rights may be provided to the virtual machine CPU scheduler 123.
- the host CPU scheduler 113 when the host CPU scheduler 113 receives a request to confirm the resource preemption authority for the virtual machine application from the virtual machine CPU scheduler 123, the host CPU scheduler 113 determines the resource preemption authority of the virtual machine application by referring to the host scheduling list, and determines the resource preemption authority for the virtual machine application. Information about resource preemption rights can be provided to the kernel 130. At this time, in order to provide resource preemption authority information for the virtual machine application to the kernel 130, the virtual PID (process identifier) for the virtual machine application can be converted into an actual PID using the ID map of the kernel 130.
- the host CPU scheduler 113 upon receiving a request for execution of a virtual machine application by the host system, determines resource preemption authority to first execute the virtual machine application requested to be executed, and determines resource preemption authority for the determined resource preemption authority. Information can be provided to the virtual machine CPU scheduler 123.
- the virtual machine system 120 is a source software implementation of a physical computing device and implements a computing platform that supports execution of software applications under the control of a virtual machine operating system. In this way, virtual machines emulate a specific computing architecture.
- the virtual machine system may include, for example, well-known commercial operating systems, such as Google's Android®, Microsoft's Windows®, Linux® operating system, Apple's MacOS®, etc.
- the virtual machine system 120 may include a virtual machine application 121, a virtual machine application framework, and a virtual machine CPU scheduler 123.
- the virtual machine CPU scheduler 123 represents a module for appropriately distributing CPU resources of the virtual machine system.
- the virtual machine CPU scheduler 123 when receiving a request to execute a virtual machine application by the virtual machine system, the virtual machine CPU scheduler 123 schedules the virtual machine application requested to be executed according to a predetermined algorithm, and reports the scheduling result. It can be provided to the kernel. Additionally, the virtual machine CPU scheduler 123 transmits a request to confirm resource preemption rights for the virtual machine application to the CPU scheduler of the host system, receives resource preemption rights information for the virtual machine application from the host CPU scheduler 113, and receives the received resource preemption rights information. Accordingly, the scheduling for virtual machine applications can be updated.
- the virtual machine CPU scheduler 123 when a request to execute a virtual machine application is received by the host system, the virtual machine CPU scheduler 123 provides information about the determined resource preemption authority to execute the virtual machine application first by the host CPU scheduler 113. Based on the information on the resource preemption authority received from the host CPU scheduler 113 and determined to execute the virtual machine application first, the virtual machine application requested to be executed is scheduled to be executed first, and the scheduling result is It can be provided to the kernel.
- the kernel 130 serves to connect the virtual machine system 120 and the physical hardware platform 140 of the computing device 100. Kernel 130 is the central operating system component and runs directly on the host. Kernel 130 allocates memory and schedules access to physical CPUs and physical hardware devices connected to computing device 100.
- the kernel 130 includes a kernel scheduler 131 that schedules tasks or processes to be executed on physical CPUs of the computing device 100.
- the kernel scheduler 131 schedules processes to run on a specific physical CPU by placing the process in a run queue for that specific physical CPU. Additionally, the kernel scheduler 131 can rebalance the execution queue of each physical CPU according to the situation of the physical CPU.
- the hardware platform 140 may include one or more physical CPUs 141, one or more memories 142, and one or more physical hardware devices 143.
- the memory may include random access memory that stores currently executing programs and data used by these programs.
- the hardware platform may also include channels, adapters, etc.
- Figure 3 shows an example of a flowchart of a method of operating a computing device when receiving a request to execute a virtual machine application, according to an embodiment.
- the computing device 100 may receive a request to execute a virtual machine application by the virtual machine system.
- a work unit that is the target of scheduling for resource preemption may include an application, a process, or a task.
- application an application
- process a process
- task a task
- the resource distribution priority of the virtual machine application requested to be executed may be scheduled by the CPU scheduler 123 of the virtual machine system.
- the virtual machine CPU scheduler 123 may schedule resource allocation rankings for virtual machine applications requested to be executed according to a predetermined resource allocation algorithm of the virtual machine system.
- a predetermined resource allocation algorithm can be implemented in a way that scores points according to the importance of resource preemption for the application.
- a predetermined resource allocation algorithm can determine the priority score from the minimum to the maximum depending on the importance of resource preoccupation.
- a predetermined resource allocation algorithm may determine a priority score between values from -20 to +20. An application with a high resource allocation priority can be assigned -20, an application with a low resource allocation priority can be assigned +20, and an application with a medium resource allocation priority can be assigned 0.
- the scheduling result determined for the virtual machine application by the virtual machine CPU scheduler 123 may be provided to the kernel 130.
- the CPU scheduler 123 of the virtual machine system schedules the execution request based on its own predetermined resource allocation algorithm and provides the scheduling result directly to the kernel without consulting the host system.
- the execution instructions of the virtual application can be processed immediately without delay.
- the kernel that receives the scheduling result from the virtual machine CPU scheduler 123 may perform scheduling control on the virtual machine application according to the scheduling result.
- the virtual machine CPU scheduler 123 may transmit a request to confirm resource preemption rights for the virtual machine application to the CPU scheduler 113 (hereinafter referred to as the host CPU scheduler) of the host system.
- a request to confirm resource preemption authority for a virtual machine application may indicate a request to confirm resource preemption authority for the corresponding virtual machine application by the host system.
- the resource preemption authority of the virtual machine application may be determined by the host CPU scheduler 113.
- the host CPU scheduler 113 can determine the resource preemption authority of the virtual machine application by referring to the host scheduling list used inside the host system.
- the CPU scheduler of the host system When the CPU scheduler of the host system receives a request to confirm resource preemption rights for the virtual machine application from the CPU scheduler 123 of the virtual machine system, it can refer to the host scheduling list inside the host system to determine resource preemption rights for the virtual machine application. there is.
- the host scheduling list represents a list containing priority information about applications that is used when the host system's CPU scheduler 113 determines resource preemption rights for applications inside the host system.
- the host scheduling list may include resource preemption priority information for one or more applications.
- the resource preemption priority may be set high for applications with a high need for resource preemption, and the resource preemption priority may be set low for applications with a low need for resource preemption.
- Resource preemption priority can be set between predetermined values.
- the resource preemption priority ranges from -20 to +20, with -20 for applications with a high need for resource preemption, +20 for applications with a low need for resource preemption, and neutral applications. You can set 0 for .
- the host scheduling list may include one or more lists representing one or more applications.
- the host scheduling list includes a rule base list, which is a list of applications with the highest need for resource preemption, a white list, which is a list of applications with a relatively high need for resource preemption, and a list of applications with a relatively low need for resource preemption. It may include a blacklist, which is a list of
- the CPU scheduler 113 of the host system can determine resource preemption rights for the virtual machine application by referring to the host scheduling list.
- the CPU scheduler 113 of the host system may determine the resource preemption authority for the virtual machine application to be one value among predetermined values. For example, if the resource preemption priority has a value from -20 to +20, the CPU scheduler 113 of the host system may determine -20 as the resource preemption authority for the virtual machine application.
- the CPU scheduler 113 of the host system may determine the resource preemption authority for the virtual machine application to allow resource preemption or deny resource preemption.
- the host CPU scheduler 113 may provide information about resource preemption rights determined for the virtual application to the virtual machine CPU scheduler.
- the virtual machine CPU scheduler 123 determines the resource preemption right for the corresponding virtual machine application based on the information about the resource preemption right received from the host system. Scheduling results can be updated. For example, if the scheduling result of the virtual machine CPU scheduler 123 is high priority and the information about the resource preemption authority of the host CPU scheduler 113 is also high priority, the virtual machine CPU scheduler 123 changes the scheduling result for the virtual machine application. You may not.
- the virtual machine CPU scheduler 123 If the scheduling result of the virtual machine CPU scheduler 123 is high priority and the information about the resource preemption authority of the host CPU scheduler 113 is low priority, the virtual machine CPU scheduler 123 sends the scheduling result for the virtual machine application as low priority. You can change it to
- the virtual machine CPU scheduler 123 may provide an updated scheduling result to the kernel according to the scheduling result for the corresponding virtual machine application based on information about resource preemption rights received from the host system.
- the virtual machine CPU scheduler 123 may not provide the scheduling result to the kernel if there is no change in the scheduling result for the corresponding virtual machine application based on information about resource preemption rights received from the host system. will be.
- the kernel may receive an updated scheduling result from the virtual machine CPU scheduler 123 and update scheduling control based on it.
- Figure 4 shows an example of a flowchart of a method of operating a computing device when receiving a request to execute a virtual machine application, according to an embodiment.
- the host CPU scheduler 113 may check the actual PID of the virtual machine application.
- the host CPU scheduler 113 can use the virtual PID of the virtual application that has received a resource preemption authority confirmation request to obtain the actual PID of this virtual application using the ID map 408 held by the kernel 130.
- the ID map of the kernel 130 may include mapping information between virtual PIDs and actual PIDs for virtual applications.
- the virtual PID is identification information used by the virtual machine system to identify the virtual application
- the real PID is identification information used by the kernel to identify the virtual application.
- the host CPU scheduler 113 may need the actual PID for this virtual application in order to directly provide resource preemption authority information determined for the virtual application to the kernel.
- the host CPU scheduler 113 may provide information about the determined resource preemption authority to the kernel and virtual machine CPU scheduler.
- the host CPU scheduler 113 may provide resource preemption authority information to the kernel using the actual PID corresponding to the virtual application obtained in operation 407.
- the kernel may adjust scheduling control based on resource preemption authority information for the virtual application received from the host CPU scheduler 113.
- the kernel may not change the scheduling for the virtual machine application. If the scheduling result of the virtual machine CPU scheduler 123 is high priority and the information about the resource preemption authority of the host CPU scheduler 113 is also high priority, the kernel may not change the scheduling for the virtual machine application. If the scheduling result of the virtual machine CPU scheduler 123 is high priority and the information about the resource preemption authority of the host CPU scheduler 113 is low priority, the kernel can change the scheduling for the virtual machine application to lower priority.
- the virtual machine CPU scheduler 123 directly provides resource preemption authority information determined for the virtual machine application to the kernel, so the kernel can more quickly control scheduling by reflecting the resource preemption priority determined for the virtual machine application.
- the virtual machine CPU scheduler 123 may update the scheduling result based on resource preemption authority information for the virtual application received from the host CPU scheduler 113.
- the virtual machine CPU scheduler 123 may not change the scheduling for the virtual machine application. If the scheduling result of the virtual machine CPU scheduler 123 is high priority and the information about the resource preemption authority of the host CPU scheduler 113 is low priority, the virtual machine CPU scheduler 123 sets the scheduling for the virtual machine application to lower priority. You can change it.
- FIG. 5 is an example block diagram of a computing device including an Android system, which is an example of a virtual machine system, according to an embodiment.
- the computing device 100 may include an Android system 500, a host system 110, and a kernel 130, according to an embodiment.
- the Android system 500 may include an Android application 510, an Android CPU scheduling controller 520, and an Android CPU scheduler 530.
- the Android application 510 may receive an execution request for the corresponding application.
- the kernel 130 may create a host virtual machine ID map 132 whose key is the application ID (APP ID) for the Android application requested to be executed.
- the host virtual machine ID map 132 may generate a virtual process ID (PID), a real process ID (PID), and a priority in response to the application ID for the Android application.
- priority information may have a null value.
- the Android application 510 may receive the APP ID and virtual PID corresponding to the virtual application requested to be executed from the kernel 130 and provide them to the Android CPU scheduling controller 520.
- the Android CPU scheduling controller 520 can determine the resource preemption priority of the Android application according to a resource distribution priority algorithm predetermined within the Android system.
- the Android CPU scheduling controller 520 can schedule resource allocation rankings for Android applications requested to be executed according to a predetermined resource allocation algorithm within the Android system.
- a predetermined resource allocation algorithm can be implemented in a way that scores points according to the importance of resource preemption for the application.
- a predetermined resource allocation algorithm can determine the priority score from the minimum to the maximum depending on the importance of resource preoccupation.
- a predetermined resource allocation algorithm may determine a priority score between values from -20 to +20. An application with a high resource allocation priority can be assigned -20, an application with a low resource allocation priority can be assigned +20, and an application with a medium resource allocation priority can be assigned 0.
- the Android CPU scheduling controller 520 can transmit (App ID, virtual PID, priority) to the Android CPU scheduler 530 to provide a resource preemption priority determined for the virtual application requested to be executed.
- the Android CPU scheduling controller 520 may transmit a resource preemption authority confirmation request to the host CPU scheduling proxy 114 in order to receive confirmation of the host system's resource preemption authority for the virtual application requested to be executed. At this time, the Android CPU scheduling controller 520 may provide (App ID, virtual PID) to the CPU scheduling proxy 114 to identify the virtual application requested to be executed.
- the Android CPU scheduler 530 can transmit (App ID, virtual PID, priority) to the kernel 130 to provide the kernel with the resource preemption priority determined for the virtual application received from the Android CPU scheduling controller 520.
- Android CPU scheduler 530 When the Android CPU scheduler 530 receives information about resource preemption rights (App ID, virtual PID, priority) for a virtual application from the host CPU scheduling proxy 114 of the host system 110, it reflects this and updates the scheduling for the virtual application. You can. Android CPU scheduler 530 can provide updated scheduling results to kernel 130 when scheduling for a virtual application is updated.
- App ID resource preemption rights
- virtual PID priority
- the interface 133 of the kernel 130 receives information about the resource preemption priority (App ID, virtual PID, priority) determined for the virtual application received from the Android CPU scheduler 530 and converts it into a format that can be understood by the kernel scheduler 131. After that, the converted information can be transmitted to the kernel scheduler 131.
- the kernel scheduler 131 can schedule the CPU to preempt resources based on priority information about the received virtual application.
- the host system 110 may include a host CPU scheduling proxy 114 and a host scheduling list 600.
- the host CPU scheduling proxy 114 When the host CPU scheduling proxy 114 receives a request to confirm resource preemption authority for the virtual application from the Android CPU scheduling controller 520 along with the App ID and virtual PID, the host CPU scheduling proxy 114 can refer to the host scheduling list 600 to determine resource preemption authority for the virtual application. .
- the host scheduling list 600 represents a list containing priority information on resource preemption rights for applications, which is referenced when the host CPU scheduling proxy 114 determines resource preemption rights for applications within the host system.
- the host scheduling list may include resource preemption priority information for one or more applications.
- the resource preemption priority may be set high for applications with a high need for resource preemption, and the resource preemption priority may be set low for applications with a low need for resource preemption.
- Resource preemption priority can be set between predetermined values.
- the resource preemption priority ranges from -20 to +20, with -20 for applications with a high need for resource preemption, +20 for applications with a low need for resource preemption, and neutral applications. You can set 0 for .
- the host scheduling list may include one or more lists representing one or more applications.
- the host scheduling list includes a rule base list, which is a list of applications with the highest need for resource preemption, a white list, which is a list of applications with a relatively high need for resource preemption, and a list of applications with a relatively low need for resource preemption. It may include a black list, which is a list of
- Figure 6 shows an example of a host scheduling list 600 according to an embodiment.
- the host scheduling list 600 may include a rule base list 610, a white list 620, and a black list 630.
- the rule base list 610 may represent a list of applications with the highest priority for resource preemption rights. For example, processes related to essential routines of the system, such as a screen logo being output within a few seconds after power is applied to the computing device and a specific process being started within a few seconds, may be included in the rule base list 610.
- White list 620 may represent a list of applications with relatively high priority for resource preemption rights. For example, a process that receives a request to execute a specific Android application from a user may be included in the white list 620.
- Blacklist 630 may represent a list of applications with the lowest priority for resource preemption rights. For example, processes that update software in the background may have a relatively low need for resource preemption, so these processes may be included in the blacklist 630. For example, a process that installs and executes an Android application from the Android application store (Android system) and outputs a pop-up or notification according to the installation execution may be included in the black list 630.
- Android system Android application store
- the priority level may be determined as high, medium, or low priority in relation to resource preemption authority.
- each list included in the host scheduling list 600 may have a value corresponding to the resource preemption priority.
- the value corresponding to the resource preemption priority has a value between -20 and +20, and -20 for applications included in rule base list 610, which is a list of applications with a high need for resource preemption, and resource preemption priority is -20.
- the host CPU scheduling proxy 114 determines the resource preemption authority for the virtual application by referring to the host scheduling list 600, it can provide the determined resource preemption authority information for the virtual application to the Android CPU scheduler 530. At this time, the host CPU scheduling proxy 114 may transmit (App ID, virtual PID, priority) to the Android CPU scheduler 530 to provide resource preemption authority information determined for the virtual application.
- the host CPU scheduling proxy 114 may directly provide resource preemption authority information determined for a virtual application to the kernel. In order for the host CPU scheduling proxy 114 to directly provide the resource preemption authority information determined for the virtual application to the kernel 130, it must know the actual PID corresponding to the virtual application. To this end, the host CPU scheduling proxy 114 can refer to the host virtual machine ID map 132 held by the kernel 130 using AppID and virtual PID to obtain the actual PID corresponding to the virtual machine application. In other words, the host CPU scheduling proxy 114 provides the AppID and virtual PID to the kernel 130, and by referring to the host virtual machine ID map 132 held by the kernel 130, the actual PID and App ID corresponding to the virtual machine application can be obtained. there is.
- the host CPU scheduling proxy 114 can provide resource preemption authority information determined for the virtual application to the kernel scheduler 131 using the actual PID. That is, the host CPU scheduling proxy 114 can transmit (AppID, actual PID, priority) to the kernel scheduler 131.
- FIG. 7 shows an example of a flowchart of a method of operating the computing device shown in FIG. 6 according to an embodiment.
- the Android system may receive an execution request for the Android application 510.
- the Android application may transmit a scheduling request by providing (AppID, virtual PID) corresponding to the Android application requested to be executed to the Android scheduling controller 520.
- the Android CPU scheduling controller 520 may perform scheduling by determining the resource preemption priority for the Android application for which scheduling has been requested according to the resource preemption distribution algorithm within the Android system.
- the Android CPU scheduling controller 520 may transmit (AppID, virtual PID, priority) as a scheduling execution result determined for the Android application to the Android CPU scheduler 530.
- the Android CPU scheduling controller 520 may transmit (AppID, virtual PID) to the host CPU scheduling proxy 114 of the host system to send a resource preemption permission confirmation request for the Android application.
- the Android CPU scheduler 530 may transmit the scheduling execution result received from the Android CPU scheduling controller 520 to the kernel 130.
- the kernel 130 may perform scheduling control according to the scheduling result received from the Android CPU scheduler 530.
- the host CPU scheduling proxy 114 may refer to the host scheduling list 600 to determine resource preemption authority for the Android application.
- the host CPU scheduling proxy 114 may provide resource preemption authority information determined for the Android application to the Android CPU scheduler 530. At this time, the host CPU scheduling proxy 114 can transmit (AppID, virtual PID, resource preemption authority information) to the Android CPU scheduler 530.
- the Android CPU scheduler 530 may update the scheduling result for the Android application based on resource preemption authority information received from the host CPU scheduling proxy 114.
- the Android CPU scheduler 530 may provide updated scheduling results to the kernel 130.
- kernel 130 may receive updated scheduling results from Android CPU scheduler 530 and adjust scheduling control based thereon.
- FIG. 8 shows an example of a flowchart of a method of operating the computing device shown in FIG. 6 according to one embodiment.
- the host CPU scheduling proxy 114 may transmit an actual PID request corresponding to the Android application to the kernel 130.
- the host CPU scheduling proxy 114 can transmit the AppID and virtual PID corresponding to the Android application to the kernel 130.
- the kernel 130 refers to the ID map 132 to find the corresponding real PID using the AppID and virtual PID corresponding to the requested Android application, and returns (AppID, virtual PID, real PID) in response to the real PID request. can be sent to the host CPU scheduling proxy 114.
- the host CPU scheduling proxy 114 may directly provide resource preemption authority information to the kernel 130 using the actual PID. That is, the host CPU scheduling proxy 114 can transmit (AppID, actual PID, resource preemption authority information) to the kernel 130.
- the kernel 130 may update scheduling control for the corresponding Android application based on resource preemption authority information received from the host CPU scheduling proxy 114.
- the host CPU scheduling proxy 114 may transmit (AppID, virtual PID, resource preemption authority information) to the Android CPU scheduler 530 to provide resource preemption authority information determined for the Android application to the Android CPU scheduler 530.
- the Android CPU scheduler 530 may update the scheduling result for the Android application based on resource preemption authority information received from the host CPU scheduling proxy 114.
- FIG. 9 shows an example of a flowchart of a method of operating a computing device when a request to execute a virtual machine application is received by a host system, according to an embodiment.
- the computing device 100 receives a request for execution of a virtual machine application by the host system, and upon receiving the request for execution of the virtual machine application, transfers the request for execution of the virtual machine application to the virtual machine system. You can. Specifically, the computing device 100 may receive a request to execute a virtual machine application through the host application while the host application is executed by the host system.
- FIG. 10 illustrates an example of an environment in which a request for execution of a virtual machine application is received by a host system according to an example.
- the computing device 100 may display the Tizen home screen 1010 based on the Tizen OS on the display 1000, according to an embodiment.
- the Tizen home screen 1010 may provide a menu 1020 including items for executing one or more applications.
- Menu 1020 may include items for executing host applications #1, #2, and #3 based on the Tizen OS, as well as items for executing Android applications #1, #2, and #3 based on the Android OS. .
- the computing device 100 When a user input requesting execution of one of Android applications #1, #2, and #3 is received from the user in the menu 1020 of the Tizen home screen 1010, the computing device 100 receives a request to execute the Android application by the host system. You can check what you have received. In this environment, when a user input requesting execution of an Android application is received, since the user has explicitly requested execution of the Android application, the computing device 100 sets the resource preemption priority for the Android application requested to be executed to the highest. It is necessary to control it so that it can be executed without delay.
- the CPU scheduler of the host system determines the resource preemption authority for running the virtual machine application first for the virtual machine application requested to be executed, and provides information about the determined resource preemption authority. It can be passed to the CPU scheduler of the virtual machine system.
- the CPU scheduler of the host system can recognize that if there is a request to execute a virtual machine application in the host system environment, this is the application that must be processed most proactively. Therefore, when there is a request to execute a virtual machine application in the host system environment, the CPU scheduler of the host system can set the resource preemption authority of the virtual machine application requested to be executed to the highest level.
- the CPU scheduler of the host system may determine resource preemption rights to execute the virtual machine application requested to be executed first, and may transmit information about the determined resource preemption rights to the CPU scheduler of the virtual machine system.
- the CPU scheduler of the virtual machine system schedules the virtual machine application requested to be executed to be executed first, based on information about resource preemption rights determined to execute the virtual machine application first, and provides the scheduling result to the kernel. You can.
- the CPU scheduler of the virtual machine system can schedule the virtual machine application to be executed first by explicitly receiving resource preemption authority information that allows the virtual machine application to be executed first for the virtual machine application requested to be executed, from the CPU scheduler of the host system. there is. In this way, by providing the kernel with a scheduling result determined to execute the virtual machine application first, the kernel can schedule the virtual application so that resource preoccupation is given priority.
- FIG. 11 is an example block diagram of a computing device including an Android system, which is an example of a virtual machine system, according to an embodiment.
- the computing device 100 may include an Android system 500, a host system 110, and a kernel 130, according to an embodiment.
- the host system 110 may include a host launcher application 115, a host application framework 112, and a host CPU scheduling proxy 114.
- the host launcher application 115 When the host launcher application 115 receives a request to execute an Android application, it may transmit the AppID of the Android application requested to be executed to the host application framework 112.
- the host application framework 112 may transmit the AppID and execution request of the Android application requested to be executed to the Android application framework 540 and the host CPU scheduling proxy 114 of the Android system.
- the host CPU scheduling proxy 114 which has received the AppID from the host application framework 112, can determine the resource preemption priority to be the highest so that the virtual machine application can be executed first for the virtual machine application whose execution request has been received by the host system. there is.
- the host application framework 112 may provide resource preemption priority information for the Android application to the Android CPU scheduling controller 520 of the Android system so that the Android application can be scheduled according to the determined priority.
- the host CPU scheduling proxy 114 may transmit (AppID, priority) to the Android CPU scheduling controller 520 to deliver resource preemption priority information for the Android application.
- the Android system 500 may include an Android application 510, an Android CPU scheduling controller 520, an Android CPU scheduler 530, and an Android application framework 540.
- the Android application framework 540 receives the AppID and execution request of the Android application received by the host system from the host application framework 112 and sends the execution request of the Android application along with the virtual PID corresponding to the received AppID and AppID to Android. It can be provided as application 510.
- the Android application 510 may provide an execution request along with the received AppID and virtual PID to the Android scheduling controller 520.
- the Android CPU scheduling controller 520 determines the resource preemption priority based on the AppID and resource preemption priority information received from the host CPU scheduling proxy 114 for the Android application requested to be executed, and sends the determined resource preemption priority information to the Android CPU scheduler. It can be provided as 530. At this time, the Android CPU scheduling controller 520 can transmit the AppID, virtual PID, and priority of the Android application requested to be executed to the Android CPU scheduler 530.
- the Android CPU scheduler 530 can provide resource preemption priority information for Android applications received from the Android CPU scheduling controller 520 to the kernel 130.
- FIG. 12 shows an example of a flowchart of a method of operating the computing device shown in FIG. 11 according to an embodiment.
- the host launcher application 115 of the host system may receive a request to execute an Android application.
- the host launcher application 115 may confirm that this application is an Android application by referring to the attribute information of the actually requested Android application.
- the host launcher application 115 may transmit an execution request for the Android application to the application framework 112 along with the AppID.
- the host application framework 112 which has received a request to execute the Android application, may transmit the execution request for the Android application along with the AppID to the application framework 540 of the Android system.
- the Android application framework 540 which has received an execution request for the Android application, may transmit the execution request for the Android application to the Android application 510 along with the AppID and virtual PID.
- the Android application 510 may transmit a scheduling request for the Android application requested to be executed along with the AppID and virtual PID to the CPU scheduling controller 520.
- the host application framework 112 may transmit a scheduling request for the Android application requested to be executed to the CPU scheduling proxy 114 along with the AppID.
- the host CPU scheduling proxy 114 determines the resource preemption authority for the Android application requested to be executed, and transmits the AppID of the Android application and information about the determined resource preemption authority to the host CPU scheduling controller 520 of the host system. At this time, the host CPU scheduling proxy 114 recognizes the Android application requested to be executed in the host system as an application that must be executed by prioritizing resources as an application in response to the user's execution request, and impersonates the resource preemption authority for the Android application requested to be executed. It can be decided as a high priority.
- the Android CPU scheduling controller 520 which has received a scheduling request for an Android application and resource preemption authority information for the Android application, determines the priority based on the received resource preemption authority information for the Android application for which scheduling has been requested. You can schedule.
- the Android CPU scheduling controller 520 may transmit the scheduling result to the CPU scheduler 530.
- the Android CPU scheduling controller 520 can provide AppID, virtual PID, and scheduling priority information to the Android CPU scheduler 530.
- the CPU scheduler 530 which receives scheduling priority information for the Android application from the CPU scheduling controller 520, may provide AppID, virtual PID, and scheduling priority information to the kernel 130 as a scheduling result.
- the kernel 130 may receive a scheduling result for the Android application requested to be executed and schedule resource preoccupation for the Android application requested to be executed based on the scheduling result.
- FIG. 13 illustrates an example of a computing device according to an embodiment.
- the computing device 100 includes a communication unit (e.g., including a communication circuit) 1310, a receiver 1320, a display 1330, a memory 1340, a control unit (e.g., a processing circuit) 1350, and a playback unit (e.g., It may further include a 1360 (including a video processing circuit), an audio processing unit (for example, including an audio processing circuit) 1370, an audio output unit (for example, including a speaker) 1380, and a detection unit (for example, including a circuit) 1390. You can.
- the communication unit 1310 may include one or more modules including various communication circuits that enable wireless communication between the computing device 100 and a wireless communication system or between the computing device 100 and a network where other electronic devices are located.
- the communication unit 1310 may include a mobile communication module 1311, a wireless Internet module 1312, and a short-range communication module 1313.
- the mobile communication module 1311 may include various communication circuits and transmits and receives wireless signals with at least one of a base station, an external terminal, and a server on a mobile communication network.
- the wireless signal may include various types of data based on voice call signals, video call signals, or text/multimedia message transmission and reception.
- the wireless Internet module 1312 refers to a module that includes various circuits for wireless Internet access and may be built into or external to the device.
- Wireless Internet technologies include Wireless LAN (WLAN) (WiFi), Wireless Broadband (Wibro), World Interoperability for Microwave Access (Wimax), and High Speed Downlink Packet Access (HSDPA).
- Wi-Fi Wireless LAN
- Wibro Wireless Broadband
- Wimax World Interoperability for Microwave Access
- HSDPA High Speed Downlink Packet Access
- the short-range communication module 1313 refers to a module that includes various circuits for short-range communication.
- Short-distance communication technologies include Bluetooth, Bluetooth Low Energy (BLE), Radio Frequency Identification (RFID), infrared data association (IrDA), Ultra Wideband (UWB), and ZigBee.
- the receiver 1320 receives video (e.g., video, etc.), audio (e.g., voice, music, etc.), and additional information (e.g., EPG, etc.) from the outside of the computing device 100 under the control of the control unit 1350. can do.
- the receiver 1320 includes one of an HDMI port (High-Definition Multimedia Interface port 1321, a component jack 1322), a PC port 1323, and a USB port 1324, or one or more In addition to the HDMI port, the receiver 1320 may further include DisplayPort (DP), Thunderbolt, and MHL (Mobile High-Definition Link).
- DP DisplayPort
- Thunderbolt Thunderbolt
- MHL Mobile High-Definition Link
- the playback unit 1360 may include various video processing circuits and, under the control of the control unit 1350, process video signals received from the reception unit 1320 or the communication unit 1310 and output them to the display 1330.
- the display 1330 can display the video signal received from the video processor 1360 on the screen.
- the audio processing unit 1370 may include various audio processing circuits, and under the control of the control unit 1350, convert the audio signal received from the reception unit 1320 or the communication unit 1310 into an analog audio signal and output it to the audio output unit 1380.
- the audio output unit 1380 can output the received analog audio signal through a speaker.
- the detection unit 1390 may include various circuits, detects the user's voice, user's image, or user interaction, and may include a microphone, a camera unit, and an optical receiver.
- the microphone receives the user's uttered voice.
- the microphone can convert the received voice into an electrical signal and output it to the control unit 1350.
- the camera unit may receive images (eg, consecutive frames) corresponding to the user's motion, including gestures, within the camera recognition range.
- the optical receiver receives optical signals (including control signals) received from the remote control device.
- the light receiver may receive an optical signal corresponding to a user input (eg, touch, press, touch gesture, voice, or motion) from the remote control device.
- the memory 1340 may store programs related to the operation of the computing device 100 and various data generated during the operation of the computing device 100.
- the computing device 100 when the instructions included in the memory 1340 are executed by the computing device 100, the computing device 100 receives a request for execution of a virtual machine application by the virtual machine system and sends the command to the CPU scheduler of the virtual machine system.
- To determine, by the CPU scheduler of the host system, the resource preemption authority of the virtual machine application by referring to the host scheduling list, and to perform an operation of providing information about the determined resource preemption authority to the CPU scheduler of the virtual machine system. can do.
- the information on the resource preemption authority may include the priority of the resource preemption authority of the virtual machine application.
- Information on the resource preemption authority may be provided to the kernel to further perform an operation to adjust priority execution scheduling for the virtual application.
- the host scheduling list may include priority information for each of one or more applications.
- the host scheduling list includes a rule base list including identification information about one or more applications that must be executed with the highest priority, a white list including identification information about one application that must be executed with priority, It may include at least one of a black list containing identification information about one or more applications that are not run preferentially.
- the computing device 100 selects resources for the virtual machine application from the CPU scheduler of the virtual machine system by the CPU scheduler of the host system.
- the computing device 100 Upon receiving a preemption authority confirmation request, an operation of checking the actual PID corresponding to the application ID of the virtual machine application using the ID map of the kernel, and information on the resource preemption authority determined for the virtual machine application.
- an operation of adjusting resource preemption scheduling for the virtual machine application can be further performed.
- the kernel ID map may include App ID, virtual PID, real PID, and resource preemption priority information for the application.
- the computing device 100 when the instructions included in the memory 1340 are executed by the computing device 100, the computing device 100 receives an execution request for a virtual machine application from the host system and sends the execution request for the virtual machine application to the virtual machine.
- An operation of transmitting to a machine system the CPU scheduler of the host system determines the resource preemption right to first execute the virtual machine application requested to be executed, and sends information about the determined resource preemption right to the virtual machine system.
- Computer-readable media can be any available media that can be accessed by a computer and includes both volatile and non-volatile media, removable and non-removable media. Additionally, computer-readable media may include computer storage media. Computer storage media includes both volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data.
- the disclosed embodiments may be implemented as S/W programs including instructions stored in computer-readable storage media.
- a computer is a device capable of calling instructions stored from a storage medium and performing operations according to the disclosed embodiments according to the called instructions, and may include an electronic device according to the disclosed embodiments.
- Computer-readable storage media may be provided in the form of non-transitory storage media.
- ‘non-transitory’ only means that the storage medium does not contain signals and is tangible, and does not distinguish whether the data is stored semi-permanently or temporarily in the storage medium.
- control method according to the disclosed embodiments may be included and provided in a computer program product.
- Computer program products are commodities and can be traded between sellers and buyers.
- a computer program product may include a S/W program and a computer-readable storage medium in which the S/W program is stored.
- a computer program product may include a product in the form of a S/W program (e.g., a downloadable app) distributed electronically by the device manufacturer or through an electronic marketplace (e.g., Google Play Store, App Store).
- an electronic marketplace e.g., Google Play Store, App Store.
- at least part of the S/W program may be stored in a storage medium or temporarily created.
- the storage medium may be a manufacturer's server, an electronic market server, or a relay server's storage medium that temporarily stores the SW program.
- a computer program product in a system comprised of a server and a device, may include a storage medium of a server or a storage medium of a device.
- the computer program product may include a storage medium of the third device.
- the computer program product may include a S/W program itself that is transmitted from a server to a device or a third device, or from a third device to the device.
- one of the server, the device, and the third apparatus may execute the computer program product to perform the method according to the disclosed embodiments.
- two or more of a server, a device, and a third apparatus may execute the computer program product and perform the methods according to the disclosed embodiments in a distributed manner.
- a server eg, a cloud server or an artificial intelligence server, etc.
- a server may execute a computer program product stored on the server and control a device connected to the server to perform the method according to the disclosed embodiments.
- a third device may execute a computer program product to control a device communicatively connected to the third device to perform the method according to the disclosed embodiment.
- the third device may download the computer program product from the server and execute the downloaded computer program product.
- the third device may perform the methods according to the disclosed embodiments by executing the computer program product provided in a preloaded state.
- a “unit” may be a hardware component such as a processor or circuit, and/or a software component executed by the hardware component such as a processor.
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
실시예들에 따라, 컴퓨팅 장치 및 그 동작 방법이 개시된다. 개시된, 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 시스템을 동작시키는 방법은, 상기 가상 머신 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신하는 동작, 상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하고, 상기 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 상기 호스트 시스템의 CPU 스케쥴러에 전송하는 동작, 상기 호스트 시스템의 CPU 스케쥴러에 의해, 호스트 스케쥴링 리스트를 참조하여 상기 가상 머신 어플리케이션의 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러에 제공하는 동작을 포함한다.
Description
다양한 실시예들은 컴퓨팅 장치 및 그 동작 방법에 관한 것으로, 보다 구체적으로는, 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 장치에서 프로세싱 리소스를 스케쥴링하는 컴퓨팅 장치 및 그 동작 방법에 관한 것이다.
가상 머신 (virtual Machine)은 컴퓨팅 환경을 소프트웨어로 구현한 것 즉 컴퓨터 시스템을 에뮬레이션하는 소프트웨어를 나타낸다. 시스템 가상 머신은 완전한 시스템 플랫폼을 제공하며 완전한 운영 체제(OS)의 실행을 지원한다. 이러한 시스템 가상 머신은 각 운영 체제를 실행하는 가상 머신 사이의 기초가 되는 물리 컴퓨터를 멀티플렉싱한다.
컴퓨팅 장치는 호스트 시스템과 하나 이상의 가상 머신 시스템을 포함할 수 있으며 각 가상 머신 시스템은 각자의 프로세싱 자원 스케쥴러를 탑재할 수 있다. 컴퓨팅 장치의 프로세싱 자원 배분 권한은 가상 머신 시스템 내의 각 프로세싱 자원 스케쥴러가 전담하고 있다. 호스트 시스템 내의 프로세싱 자원 스케쥴러와 가상 머신 시스템 내의 프로세싱 자원 스케쥴러는 서로 독립적이므로, 컴퓨팅 장치 내의 프로세싱 자원의 효율적인 배분을 위해 가상 머신 시스템 내의 프로세싱 자원 스케쥴러를 제어하는 방안이 요구된다.
다양한 실시예들은, 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 장치에서 프로세싱 리소스를 스케쥴링하는 컴퓨팅 장치 및 그 동작 방법을 제공하는 것을 목적으로 한다.
일 실시예에 따른 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 시스템을 동작시키는 방법은, 상기 가상 머신 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신하는 동작, 상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하고, 상기 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 상기 호스트 시스템의 CPU 스케쥴러에 전송하는 동작, 상기 호스트 시스템의 CPU 스케쥴러에 의해, 호스트 스케쥴링 리스트를 참조하여 상기 가상 머신 어플리케이션의 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러에 제공하는 동작을 포함한다.
일 실시예에 따른 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 시스템을 동작시키는 방법은, 상기 호스트 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신함에 따라 상기 가상 머신 어플리케이션의 실행 요청을 상기 가상 머신 시스템으로 전달하는 동작, 상기 호스트 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 하는 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러로 전달하는 동작, 상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 가상 머신 어플리케이션을 우선 실행하도록 결정된 상기 자원 선점 권한에 대한 정보에 기반하여, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하는 동작을 포함한다.
일 실시예에 따른 컴퓨팅 장치는, 호스트 시스템, 가상 머신 시스템, 하나 이상의 CPU, 명령어들을 포함하는 메모리를 포함하고, 상기 명령어들을 상기 컴퓨팅 장치에 의해 실행될 때, 상기 컴퓨팅 장치가, 상기 가상 머신 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신하는 동작, 상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하고, 상기 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 상기 호스트 시스템의 CPU 스케쥴러에 전송하는 동작, 및 상기 호스트 시스템의 CPU 스케쥴러에 의해, 호스트 스케쥴링 리스트를 참조하여 상기 가상 머신 어플리케이션의 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러에 제공하는 동작을 실행한다.
일 실시예에 따른 컴퓨팅 장치는, 호스트 시스템, 가상 머신 시스템, 하나 이상의 CPU, 명령어들을 포함하는 메모리를 포함하고, 상기 명령어들을 상기 컴퓨팅 장치에 의해 실행될 때, 상기 컴퓨팅 장치가, 상기 호스트 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신함에 따라 상기 가상 머신 어플리케이션의 실행 요청을 상기 가상 머신 시스템으로 전달하는 동작, 상기 호스트 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 하는 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러로 전달하는 동작, 및 상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 가상 머신 어플리케이션을 우선 실행하도록 결정된 상기 자원 선점 권한에 대한 정보에 기반하여, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하는 동작을 실행한다.
본 개시서의 다양한 실시예들에 따르면, 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 시스템에서 가상 머신 어플리케이션의 실행 요청에 대한 자원 선점 스케쥴링을 보다 효과적으로 할 수 있게 된다.
본 개시서의 다양한 실시예들에 따르면, 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 시스템에서 가상 머신 시스템에 의해 수신한 가상 머신 어플리케이션 실행 요청에 대한 자원 선점 스케쥴링을 효과적으로 할 수 있게 된다.
본 개시서의 다양한 실시예들에 따르면, 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 시스템에서 호스트 시스템에 의해 수신한 가상 머신 어플리케이션 실행 요청에 대한 자원 선점 스케쥴링을 효과적으로 할 수 있게 된다.
도 1은 일 실시예에 따라 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 장치의 일 예를 나타낸다.
도 2는 일 실시예에 따라 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 장치의 일 예를 나타낸다.
도 3은 일 실시예에 따라 가상 머신 어플리케이션의 실행 요청을 수신한 경우에 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 4는 일 실시예에 따라 가상 머신 어플리케이션의 실행 요청을 수신한 경우에 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 5는 일 실시예에 따라 가상 머신 시스템의 일 예인 안드로이드 시스템을 포함하는 컴퓨팅 장치의 블록도의 일 예이다.
도 6은 일 실시예에 따른 호스트 스케쥴링 리스트의 일 예를 나타낸다.
도 7은 일 실시예에 따라 도 6에 도시된 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 8은 일 실시예에 따라 도 6에 도시된 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 9는 일 실시예에 따라 호스트 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신한 경우에 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 10은 일 예에 따라 호스트 시스템 의해 가상 머신 어플리케이션의 실행 요청을 수신하는 환경의 일 예를 나타낸다.
도 11은 일 실시예에 따라 가상 머신 시스템의 일 예인 안드로이드 시스템을 포함하는 컴퓨팅 장치의 블록도의 일 예이다.
도 12는 일 실시예에 따라 도 11에 도시된 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 13은 일 실시예에 따라 컴퓨팅 장치의 일 예를 나타낸다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 실시예들에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 명세서의 실시예에서 "사용자"라는 용어는 제어 장치를 이용하여 컴퓨팅 장치 또는 전자 장치의 기능 또는 동작을 제어하는 사람을 의미하며, 시청자, 관리자 또는 설치 기사를 포함할 수 있다.
컴퓨터들은 시스템 명령어들의 세트를 실행하도록 설계된 범용 CPU들 또는 프로세서들을 포함한다. 프로세서는 프로세서에 고유한 명령어들을 실행하는데, 프로세서가 실행할 수 있는 명령어들의 집합을 프로세서의 명령어 세트라고 한다. 컴퓨터 시스템들간의 프로세서의 고유성은 통상적으로 컴퓨터 시스템들의 하드웨어 아키텍쳐에 대한 비호환성을 초래한다. 일반적으로 컴퓨터 제조업자들은 자신들의 프로세서 패밀리에서 더 많은 어플리케이션들이 실행되게 하기를 원한다. 따라서 컴퓨터 시스템에 실행될 수 있는 오퍼레이팅 시스템들 및 어플리케이션 프로그램들의 수를 늘리기 위해, 호스트 라고 하는 일 타입의 CPU를 가진 호스트 컴퓨터는, 게스트 라고 하는 다른 타입의 CPU에 대한 명령어들을 에뮬레이트할 수 있게 해주는 가상 머신 기술을 채용할 수 있다.
본 개시서에서 자원 선점을 위한 스케쥴링의 대상이 되는 작업의 단위는 어플리케이션, 프로세스, 또는 태스크를 포함할 수 있다.
본 개시서에서 어플리케이션이나 프로세스, 태스크 등을 위해 스케쥴링하는 자원은 CPU, 메모리, 또는 그 외 하드웨어 장치 등을 포함할 수 있다.
도 1은 일 실시예에 따라 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 장치의 일 예를 나타낸다.
도 1을 참조하면, 컴퓨팅 장치 100는 호스트 시스템 110과 가상 머신 시스템 120을 포함할 수 있다. 호스트 시스템 110이 포함하는 론칭 어플리케이션 10는 호스트 어플리케이션과 가상 머신 어플리케이션을 포함할 수 있다. 예를 들어 도 1에서 론칭 어플리케이션 10는 두개의 호스트 어플리케이션 #1와 #2, 두개의 가상 머신 어플리케이션 #1과 #2를 포함하는 것이 도시되어 있다. 예를 들어 삼성전자의 타이젠 시스템에서 타이젠 홈 화면에는 타이젠 어플리케이션 뿐만 아니라 안드로이드 어플리케이션도 포함할 수 있다. 이와 같이 호스트 시스템의 어플리케이션인 론칭 어플리케이션 10이 실행하는 동안 가상 머신 어플리케이션의 실행 요청을 수신한 경우, 가상 머신 어플리케이션의 실행을 위해 가상 머신 시스템의 스케쥴링을 효과적으로 제어하는 것이 필요하다.
가상 머신 시스템 120는 가상 머신 어플리케이션 20에서 실행될 수 있는 가상 머신 어플리케이션 #1, #2, #3, #4를 포함할 수 있다. 가상 머신 어플리케이션 20이 실행되는 동안 가상 머신 어플리케이션 #1, #2, #3, #4 중 하나인 가상 머신 어플리케이션 #2의 실행 요청을 수신한 경우, 실행 요청된 가상 머신 어플리케이션의 실행을 위해 가상 머신 시스템의 스케쥴링을 효과적으로 제어하는 것이 필요하다.
도 2는 일 실시예에 따라 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 장치의 일 예를 나타낸다.
도 2를 참조하면, 컴퓨팅 장치 100는 호스트 시스템 110, 가상 머신 시스템 120, 커널 130, 하드웨어 플랫폼 140을 포함할 수 있다.
컴퓨팅 장치 100는 오퍼레이팅 시스템과 하나 이상의 어플리케이션 프로그램의 실행을 지원하는 컴퓨터를 나타낼 수 있다. 이러한 컴퓨팅 장치 100는 일반 목적용 컴퓨터 (general purpose computer)일 수도 있고, 디스플레이 장치 일 수도 있다. 디스플레이 장치는 예를 들어, 네트워크 TV, 스마트 TV, 인터넷 TV, 웹 TV, IPTV, PC 등과 같이 컨텐츠를 수신하여 출력할 수 있는 다양한 형태의 전자 장치를 포함할 수 있다.
호스트 시스템 110은 컴퓨팅 장치 100 상에서 프로세스들을 실행하기 위한 오퍼레이팅 시스템 플랫폼을 제공한다. 호스트 시스템 110은 컴퓨팅 장치 100 내의 모든 하드웨어 장치들을 제어하고 내부에서 실행되는 모든 어플리케이션들을 위한 시스템 리소스를 관리한다.
호스트 시스템 110는 호스트 어플리케이션 111, 호스트 어플리케이션 프레임워크 112, 호스트 CPU 스케쥴러 113을 포함할 수 있다. 호스트 어플리케이션 프레임워크 112는 호스트 오퍼레이팅 시스템을 위한 어플리케이션 프로그램 표준 구조를 구현하는 지원 프로그램, 컴파일러, 코드 라이브러리, API, 클래스 등 여러가지 서로 다른 콤포넌트들로 구성될 수 있다. 호스트 CPU 스케쥴러 113는 호스트 시스템의 CPU 자원을 적절히 배분하는 모듈로서 가상 머신 시스템의 가상 머신 CPU 스케쥴러 123과 통신하여 가상 머신 시스템의 CPU 자원 배분을 제어할 수 있다.
일 실시예에 따라 호스트 CPU 스케쥴러 113는 가상 머신 CPU 스케쥴러 123로부터 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 수신하면, 호스트 스케쥴링 리스트를 참조하여 상기 가상 머신 어플리케이션의 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 CPU 스케쥴러 123에 제공할 수 있다.
일 실시예에 따라 호스트 CPU 스케쥴러 113는 가상 머신 CPU 스케쥴러 123로부터 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 수신하면, 호스트 스케쥴링 리스트를 참조하여 상기 가상 머신 어플리케이션의 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 커널 130로 제공할 수 있다. 이때 커널 130로 가상 머신 어플리케이션에 대한 자원 선점 권한 정보를 제공하기 위해 커널 130의 ID 맵을 이용하여 가상 머신 어플리케이션에 대한 가상 PID(process identifier)를 실제 PID로 변환할 수 있다.
일 실시예에 따라 호스트 CPU 스케쥴러 113는 호스트 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신함에 따라 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 하는 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 가상 머신 CPU 스케쥴러 123로 제공할 수 있다.
가상 머신 시스템 120은 물리적인 컴퓨팅 장치의 소스트웨어 구현으로서 가상 머신 오퍼레이팅 시스템의 제어에 따라 소프트웨어 어플리케이션들의 실행을 지원하는 컴퓨팅 플랫폼을 구현한다. 이와 같이 가상 머신들은 특정한 컴퓨팅 아키텍쳐를 에뮬레이트한다. 가상 머신 시스템은 예를 들어 잘 알려진 상업용 오퍼레이팅 시스템, 예를 들어 구글사의 Android®, 마이크로소프트사의 Window®, Linux® 오퍼레이팅 시스템, 애플사의 MacOS® 등을 포함할 수 있다.
가상 머신 시스템 120는 가상 머신 어플리케이션 121, 가상 머신 어플리케이션 프레임워크, 가상 머신 CPU 스케쥴러 123을 포함할 수 있다. 가상 머신 CPU 스케쥴러 123는 가상 머신 시스템의 CPU 자원을 적절히 배분하기 위한 모듈을 나타낸다.
일 실시예에 따라 가상 머신 CPU 스케쥴러 123는 가상 머신 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신한 경우, 상기 실행 요청된 상기 가상 머신 어플리케이션을 미리 정해진 알고리즘에 따라 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공할 수 있다. 또한 가상 머신 CPU 스케쥴러 123는 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 상기 호스트 시스템의 CPU 스케쥴러에 전송하고 호스트 CPU 스케쥴러 113으로부터 가상 머신 어플리케이션에 대한 자원 선점 권한 정보를 수신하고 수신된 자원 선점 권한 정보에 따라 가상 머신 어플리케이션에 대한 스케쥴링을 업데이트할 수 있다.
일 실시예에 따라 가상 머신 CPU 스케쥴러 123는 호스트 시스템에 의해 가상 머신 어플리케이션의 실행 요청이 수신된 경우에, 호스트 CPU 스케쥴러 113에 의해 상기 가상 머신 어플리케이션을 우선 실행하도록 하는 결정된 자원 선점 권한에 대한 정보를 상기 호스트 CPU 스케쥴러 113으로부터 수신하고, 이에 따라 상기 가상 머신 어플리케이션을 우선 실행하도록 결정된 상기 자원 선점 권한에 대한 정보에 기반하여, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공할 수 있다.
커널 130은 가상 머신 시스템 120과 컴퓨팅 장치 100의 물리적 하드웨어 플랫폼 140 사이를 연결해주는 역할을 한다. 커널 130은 중앙 오퍼레이팅 시스템 콤포넌트로서 호스트 상에서 직접 실행한다. 커널 130은 메모리를 할당하고 물리적 CPU로의 액세스를 스케쥴하고 컴퓨팅 장치 100에 연결된 물리적 하드웨어 장치들로의 액세스를 스케쥴한다.
커널 130은 컴퓨팅 장치 100의 물리적 CPU들 상에서 실행되기 위한 태스크나 프로세스들을 스케쥴하는 커널 스케쥴러 131를 포함한다. 커널 스케쥴러 131는 프로세스를 특정한 물리적 CPU를 위한 실행 큐 (run queue)에 넣음으로써 특정한 물리적 CPU 상에서 실행될 프로세스를 스케쥴한다. 또한 커널 스케쥴러 131는 물리적 CPU의 상황에 맞추어 개별 물리적 CPU의 실행 큐를 리밸런스할 수 있다.
하드웨어 플랫폼 140은 하나 이상의 물리적 CPU 141, 하나 이상의 메모리 142, 하나 이상의 물리적 하드웨어 장치 143를 포함할 수 있다. 메모리는 현재 실행하고 있는 프로그램들 및 이 프로그램에 이용되는 데이터를 저장하는 랜덤 액세스 메모리를 포함할 수 있다. 하드웨어 플랫폼은 이외에도 채널들, 어댑터 등을 포함할 수 있다.
도 3은 일 실시예에 따라 가상 머신 어플리케이션의 실행 요청을 수신한 경우에 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 3을 참조하면, 동작 301에서, 컴퓨팅 장치 100는 가상 머신 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신할 수 있다.
본 개시서에서 자원 선점을 위한 스케쥴링의 대상이 되는 작업 단위는, 어플리케이션 또는 프로세스, 태스크 등을 포함할 수 있다. 이하에서는 설명의 편의상 “어플리케이션”으로 언급하기로 한다.
동작 302에서, 가상 머신 시스템의 CPU 스케쥴러 123에 의해 실행 요청된 가상 머신 어플리케이션의 자원 배분 순위를 스케쥴링할 수 있다. 가상 머신 CPU 스케쥴러 123는 가상 머신 시스템의 미리 정해진 자원 배분 알고리즘에 따라 실행 요청된 가상 머신 어플리케이션에 대한 자원 배분 순위를 스케쥴링할 수 있다. 예를 들어 미리 정해진 자원 배분 알고리즘은 어플리케이션에 대한 자원 선점 중요도에 따라서 점수를 매기는 방식으로 구현될 수 있다. 예를 들어 미리 정해진 자원 배분 알고리즘은 자원 선점 중요도에 따라 우선 수위 점수를 최소값에서 최대값 까지 사이에서 결정할 수 있다. 예를 들어 미리 정해진 자원 배분 알고리즘은 -20에서 +20 까지의 값 사이에서 우선 순위 점수를 결정할 수 있다. 자원 배분 우선 순위가 높은 어플리케이션에 대해서 -20을, 자원 배분 우선 순위가 낮은 어플리케이션에 대해서 +20을, 자원 배분 우선 순위가 중간인 어플리케이션에 대해서 0을 매길 수 있다.
동작 303에서, 가상 머신 CPU 스케쥴러 123에 의해 가상 머신 어플리케이션에 대해서 결정된 스케쥴링 결과를 커널 130에 제공할 수 있다. 이와 같이 가상 머신 시스템의 CPU 스케쥴러 123는 가상 머신 어플리케이션의 실행 요청이 있으면, 호스트 시스템에 문의하는 과정 없이 일단 자신의 미리 정해진 자원 배분 알고리즘에 기반하여 스케쥴링하고 스케쥴링 결과를 바로 커널에 제공함으로써 실행 요청된 가상 어플리케이션의 실행 지시를 지연 없이 바로 진행할 수 있다.
동작 304에서, 가상 머신 CPU 스케쥴러 123로부터 스케쥴링 결과를 수신한 커널은 스케쥴링 결과에 따라 가상 머신 어플리케이션에 대한 스케쥴링 제어를 수행할 수 있다.
동작 305에서, 가상 머신 CPU 스케쥴러 123에 의해 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 호스트 시스템의 CPU 스케쥴러 113(이하, 호스트 CPU 스케쥴러)에 전송할 수 있다. 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청은 해당 가상 머신 어플리케이션에 대한 자원 선점 권한을 호스트 시스템에 의해 확인받기 위한 요청을 나타낼 수 있다.
동작 306에서, 호스트 CPU 스케쥴러 113에 의해, 가상 머신 어플리케이션의 자원 선점 권한을 결정할 수 있다. 호스트 CPU 스케쥴러 113는 호스트 시스템 내부에서 사용하는 호스트 스케쥴링 리스트를 참조하여 가상 머신 어플리케이션의 자원 선점 권한을 결정할 수 있다.
호스트 시스템의 CPU 스케쥴러는 가상 머신 시스템의 CPU 스케쥴러 123로부터 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 수신하면, 호스트 시스템 내부의 호스트 스케쥴링 리스트를 참조하여, 가상 머신 어플리케이션에 대한 자원 선점 권한을 결정할 수 있다.
호스트 스케쥴링 리스트는 호스트 시스템 내부에서 호스트 시스템의 CPU 스케쥴러 113가 어플리케이션들에 대한 자원 선점 권한을 결정할 때 사용되는, 어플리케이션들에 대한 우선순위 정보가 담겨진 리스트를 나타낸다.
일 실시예에 따라 호스트 스케쥴링 리스트는 하나 이상의 어플리케이션에 대한 자원 선점 우선 순위 정보를 포함할 수 있다. 예를 들어 자원 선점 필요성이 높은 어플리케이션들에 대해서는 자원 선점 우선 순위가 높게 설정되고 자원 선점 필요성이 낮은 어플리케이션들에 대해서는 자원 선점 우선 순위가 낮게 설정될 수 있다. 자원 선점 우선 순위는 미리 정해진 값 사이에서 정해질 수 있다. 예를 들어, 자원 선점 우선 순위는 -20에서 +20 사이의 값을 가지며, 자원 선점 필요성이 높은 어플리케이션들에 대해서는 -20을, 자원 선점 필요성이 낮은 어플리케이션들에 대해서는 +20을, 중립적인 어플리케이션들에 대해서는 0을 설정할 수 있다.
일 실시예에 따라 호스트 스케쥴링 리스트는 하나 이상의 어플리케이션들에 대한 목록을 나타내는 하나 이상의 리스트를 포함할 수 있다. 예를 들어, 호스트 스케쥴링 리스트는 자원 선점 필요성이 가장 높은 어플리케이션들에 대한 리스트인 룰 베이스 리스트, 자원 선점 필요성이 상대적으로 높은 어플리케이션들에 대한 리스트인 화이트 리스트, 자원 선점 필요성이 상대적으로 낮은 어플리케이션들에 대한 리스트인 블랙 리스트를 포함할 수 있다.
호스트 시스템의 CPU 스케쥴러 113는 이와 같은 호스트 스케쥴링 리스트를 참조하여, 가상 머신 어플리케이션에 대한 자원 선점 권한을 결정할 수 있다.
일 실시예에 따라 호스트 시스템의 CPU 스케쥴러 113는 가상 머신 어플리케이션에 대한 자원 선점 권한을 미리 정해진 값 사이에서 하나의 값으로 결정할 수 있다. 예를 들어 자원 선점 우선순위가 -20에서 +20 까지의 값을 가지는 경우, 호스트 시스템의 CPU 스케쥴러 113는 가상 머신 어플리케이션에 대한 자원 선점 권한으로서 -20 을 결정할 수 있다.
일 실시예에 따라 호스트 시스템의 CPU 스케쥴러 113는 가상 머신 어플리케이션에 대한 자원 선점 권한을 자원 선점 허가 또는 자원 선점 거부로 결정할 수 있다.
동작 307에서, 호스트 CPU 스케쥴러 113는 가상 어플리케이션에 대해서 결정된 자원 선점 권한에 대한 정보를 가상 머신 CPU 스케쥴러에 제공할 수 있다.
동작 308에서, 가상 어플리케이션에 대해서 결정된 자원 선점 권한에 대한 정보를 호스트 CPU 스케쥴러 113로부터 수신하면 가상 머신 CPU 스케쥴러 123는, 호스트 시스템으로부터 수신한 자원 선점 권한에 대한 정보에 기반하여 해당 가상 머신 어플리케이션에 대한 스케쥴링 결과를 업데이트할 수 있다. 예를 들어, 가상 머신 CPU 스케쥴러 123의 스케쥴링 결과가 우선 순위 높음 이고 호스트 CPU 스케쥴러 113의 자원 선점 권한에 대한 정보 역시 우선 순위 높음 인 경우에 가상 머신 CPU 스케쥴러 123는 가상 머신 어플리케이션에 대한 스케쥴링 결과를 변경하지 않을 수 있다. 만약 가상 머신 CPU 스케쥴러 123의 스케쥴링 결과가 우선 순위 높음 이고 호스트 CPU 스케쥴러 113의 자원 선점 권한에 대한 정보가 우선 순위 낮음 인 경우에 가상 머신 CPU 스케쥴러 123는 가상 머신 어플리케이션에 대한 스케쥴링 결과를 우선 순위가 낮아지도록 변경할 수 있다.
동작 309에서, 가상 머신 CPU 스케쥴러 123는, 호스트 시스템으로부터 수신한 자원 선점 권한에 대한 정보에 기반하여 해당 가상 머신 어플리케이션에 대한 스케쥴링 결과에 따라 업데이트된 스케쥴링 결과를 커널에 제공할 수 있다.
일 실시예에 따라 가상 머신 CPU 스케쥴러 123는, 호스트 시스템으로부터 수신한 자원 선점 권한에 대한 정보에 기반하여 해당 가상 머신 어플리케이션에 대한 스케쥴링 결과에 변경이 없는 경우에는 스케쥴링 결과를 커널에 제공하지 않을 수도 있을 것이다.
동작 310에서, 커널은 가상 머신 CPU 스케쥴러 123로부터 업데이트된 스케쥴링 결과를 수신하고, 이에 기반하여 스케쥴링 제어를 업데이트할 수 있다.
도 4는 일 실시예에 따라 가상 머신 어플리케이션의 실행 요청을 수신한 경우에 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 4의 동작 401에서 동작 406 까지의 구성은 도 3의 동작 301에서 동작 306 까지의 구성과 동일하므로 설명은 생략한다.
동작 407에서 호스트 CPU 스케쥴러 113는 가상 머신 어플리케이션의 실제 PID를 확인할 수 있다. 호스트 CPU 스케쥴러 113는 자원 선점 권한 확인 요청을 받은 가상 어플리케이션의 가상 PID를 이용하여 커널 130이 보유하는 ID 맵 408을 이용하여 이 가상 어플리케이션의 실제 PID를 획득할 수 있다. 커널 130의 ID 맵은 가상 어플리케이션에 대한 가상 PID와 실제 PID의 매핑 정보를 포함할 수 있다. 가상 PID는 가상 어플리케이션을 식별하기 위해 가상 머신 시스템에 의해 사용되는 식별 정보이고 실제 PID는 가상 어플리케이션을 식별하기 위해 커널에 의해 사용되는 식별 정보이다. 호스트 CPU 스케쥴러 113는 가상 어플리케이션에 대해 결정된 자원 선점 권한 정보를 직접 커널로 제공하기 위해 이러한 가상 어플리케이션에 대한 실제 PID가 필요할 수 있다.
동작 409에서, 호스트 CPU 스케쥴러 113는, 결정된 자원 선점 권한에 대한 정보를 커널 및 가상 머신 CPU 스케쥴러에 제공할 수 있다.
호스트 CPU 스케쥴러 113는 동작 407에서 획득한 가상 어플리케이션에 대응하는 실제 PID를 이용하여 자원 선점 권한 정보를 커널로 제공할 수 있다.
동작 410에서, 커널은 호스트 CPU 스케쥴러 113로부터 수신한, 가상 어플리케이션에 대한 자원 선점 권한 정보에 기반하여 스케쥴링 제어를 조정할 수 있다.
가상 머신 CPU 스케쥴러 123의 스케쥴링 결과가 우선 순위 높음 이고 호스트 CPU 스케쥴러 113의 자원 선점 권한에 대한 정보 역시 우선 순위 높음 인 경우에 커널은 가상 머신 어플리케이션에 대한 스케쥴링을 변경하지 않을 수 있다. 만약 가상 머신 CPU 스케쥴러 123의 스케쥴링 결과가 우선 순위 높음 이고 호스트 CPU 스케쥴러 113의 자원 선점 권한에 대한 정보가 우선 순위 낮음 인 경우에 커널은 가상 머신 어플리케이션에 대한 스케쥴링을 우선 순위가 낮아지도록 변경할 수 있다.
이와 같이 가상 머신 CPU 스케쥴러 123가 커널로 가상 머신 어플리케이션에 대해 결정된 자원 선점 권한 정보를 직접적으로 제공함으로써 커널은 보다 신속히 가상 머신 어플리케이션에 대해 결정된 자원 선점 우선 순위를 반영하여 스케쥴링을 제어할 수 있다.
동작 411에서, 가상 머신 CPU 스케쥴러 123는 호스트 CPU 스케쥴러 113로부터 수신한, 가상 어플리케이션에 대한 자원 선점 권한 정보에 기반하여 스케쥴링 결과를 업데이트할 수 있다.
가상 머신 CPU 스케쥴러 123의 스케쥴링 결과가 우선 순위 높음 이고 호스트 CPU 스케쥴러 113의 자원 선점 권한에 대한 정보 역시 우선 순위 높음 인 경우에 가상 머신 CPU 스케쥴러 123는 가상 머신 어플리케이션에 대한 스케쥴링을 변경하지 않을 수 있다. 만약 가상 머신 CPU 스케쥴러 123의 스케쥴링 결과가 우선 순위 높음 이고 호스트 CPU 스케쥴러 113의 자원 선점 권한에 대한 정보가 우선 순위 낮음 인 경우에 가상 머신 CPU 스케쥴러 123는 가상 머신 어플리케이션에 대한 스케쥴링을 우선 순위가 낮아지도록 변경할 수 있다.
도 5는 일 실시예에 따라 가상 머신 시스템의 일 예인 안드로이드 시스템을 포함하는 컴퓨팅 장치의 블록도의 일 예이다.
도 5를 참조하면, 일 실시예에 따라 컴퓨팅 장치 100는 안드로이드 시스템 500, 호스트 시스템 110, 커널 130을 포함할 수 있다.
일 실시예에 따라 안드로이드 시스템 500은 안드로이드 어플리케이션 510, 안드로이드 CPU 스케쥴링 콘트롤러 520, 안드로이드 CPU 스케쥴러 530을 포함할 수 있다.
안드로이드 어플리케이션 510은 해당 어플리케이션에 대한 실행 요청을 수신할 수 있다. 안드로이드 어플리케이션에 대한 실행 요청을 수신하면, 커널 130는 실행 요청된 안드로이드 어플리케이션에 대한 어플리케이션 ID (APP ID)를 키로 하는 호스트 가상 머신 ID 맵 132를 생성할 수 있다. 호스트 가상 머신 ID 맵 132은 안드로이드 어플리케이션에 대한 어플리케이션 ID에 대응하여, 가상 PID (Virtual Process ID), 실제 PID (Real Process ID), 우선순위를 생성할 수 있다. 처음 생성시 우선 순위 정보는 null 값을 가질 수 있다.
안드로이드 어플리케이션 510은 커널 130로부터 실행요청된 가상 어플리케이션에 대응하는 APP ID 와 가상 PID를 수신하고 이를 안드로이드 CPU 스케쥴링 콘트롤러 520로 제공할 수 있다.
안드로이드 CPU 스케쥴링 콘트롤러 520는 안드로이드 시스템 내부에서 미리 정해진 자원 배분 우선 순위 알고리즘에 따라 안드로이드 어플리케이션의 자원 선점 우선순위를 결정할 수 있다.
안드로이드 CPU 스케쥴링 콘트롤러 520는 안드로이드 시스템 내부의 미리 정해진 자원 배분 알고리즘에 따라 실행 요청된 안드로이드 어플리케이션에 대한 자원 배분 순위를 스케쥴링할 수 있다. 예를 들어 미리 정해진 자원 배분 알고리즘은 어플리케이션에 대한 자원 선점 중요도에 따라서 점수를 매기는 방식으로 구현될 수 있다. 예를 들어 미리 정해진 자원 배분 알고리즘은 자원 선점 중요도에 따라 우선 수위 점수를 최소값에서 최대값 까지 사이에서 결정할 수 있다. 예를 들어 미리 정해진 자원 배분 알고리즘은 -20에서 +20 까지의 값 사이에서 우선 순위 점수를 결정할 수 있다. 자원 배분 우선 순위가 높은 어플리케이션에 대해서 -20을, 자원 배분 우선 순위가 낮은 어플리케이션에 대해서 +20을, 자원 배분 우선 순위가 중간인 어플리케이션에 대해서 0을 매길 수 있다.
안드로이드 CPU 스케쥴링 콘트롤러 520는 실행 요청된 가상 어플리케이션에 대해서 결정된 자원 선점 우선순위를 제공하기 위해 안드로이드 CPU 스케쥴러 530에 (App ID, 가상 PID, priority)를 전달할 수 있다.
안드로이드 CPU 스케쥴링 콘트롤러 520는 실행 요청된 가상 어플리케이션에 대해서 호스트 시스템의 자원 선점 권한 확인을 받기 위해 호스트 CPU 스케쥴링 프록시 114로 자원 선점 권한 확인 요청을 전달할 수 있다. 이때 안드로이드 CPU 스케쥴링 콘트롤러 520는 실행 요청된 가상 어플리케이션을 식별하기 위해 (App ID, 가상 PID)를 CPU 스케쥴링 프록시 114로 제공할 수 있다.
안드로이드 CPU 스케쥴러 530는 안드로이드 CPU 스케쥴링 콘트롤러 520로부터 수신한 가상 어플리케이션에 대해서 결정된 자원 선점 우선순위를 커널로 제공하기 위해 커널 130로 (App ID, 가상 PID, priority)를 전달할 수 있다.
안드로이드 CPU 스케쥴러 530는 호스트 시스템 110의 호스트 CPU 스케쥴링 프록시 114로부터 가상 어플리케이션에 대한 자원 선점 권한에 대한 정보 (App ID, 가상 PID, priority)를 수신한 경우 이를 반영하여 해당 가상 어플리케이션에 대한 스케쥴링을 업데이트할 수 있다. 안드로이드 CPU 스케쥴러 530는 가상 어플리케이션에 대한 스케쥴링이 업데이트 되면 업데이트된 스케쥴링 결과를 커널 130로 제공할 수 있다.
커널 130의 인터페이스 133는 안드로이드 CPU 스케쥴러 530로부터 수신한 가상 어플리케이션에 대해서 결정된 자원 선점 우선순위에 대한 정보 (App ID, 가상 PID, priority)를 수신하고 이를 커널 스케쥴러 131에 의해 이해될 수 있는 포맷으로 변환한 후 변환된 정보를 커널 스케쥴러 131로 전달할 수 있다. 커널 스케쥴러 131는 수신된 가상 어플리케이션에 대한 우선 순위 정보에 기반하여 자원 선점 할 수 있도록 CPU를 스케쥴링할 수 있다.
호스트 시스템 110은 호스트 CPU 스케쥴링 프록시 114와 호스트 스케쥴링 리스트 600를 포함할 수 있다.
호스트 CPU 스케쥴링 프록시 114는 안드로이드 CPU 스케쥴링 콘트롤러 520로부터 가상 어플리케이션에 대한 자원 선점 권한 확인 요청을 App ID, 가상 PID 와 함께 수신하면, 호스트 스케쥴링 리스트 600을 참조하여 가상 어플리케이션에 대한 자원 선점 권한을 결정할 수 있다.
호스트 스케쥴링 리스트 600는 호스트 시스템 내부에서 호스트 CPU 스케쥴링 프록시 114가 어플리케이션들에 대한 자원 선점 권한을 결정할 때 참조되는, 어플리케이션들에 대한 자원 선점 권한에 대한 우선순위 정보가 담겨진 리스트를 나타낸다.
일 실시예에 따라 호스트 스케쥴링 리스트는 하나 이상의 어플리케이션에 대한 자원 선점 우선 순위 정보를 포함할 수 있다. 예를 들어 자원 선점 필요성이 높은 어플리케이션들에 대해서는 자원 선점 우선 순위가 높게 설정되고 자원 선점 필요성이 낮은 어플리케이션들에 대해서는 자원 선점 우선 순위가 낮게 설정될 수 있다. 자원 선점 우선 순위는 미리 정해진 값 사이에서 정해질 수 있다. 예를 들어, 자원 선점 우선 순위는 -20에서 +20 사이의 값을 가지며, 자원 선점 필요성이 높은 어플리케이션들에 대해서는 -20을, 자원 선점 필요성이 낮은 어플리케이션들에 대해서는 +20을, 중립적인 어플리케이션들에 대해서는 0을 설정할 수 있다.
일 실시예에 따라 호스트 스케쥴링 리스트는 하나 이상의 어플리케이션들에 대한 목록을 나타내는 하나 이상의 리스트를 포함할 수 있다. 예를 들어, 호스트 스케쥴링 리스트는 자원 선점 필요성이 가장 높은 어플리케이션들에 대한 리스트인 룰 베이스 리스트, 자원 선점 필요성이 상대적으로 높은 어플리케이션들에 대한 리스트인 화이트 리스트, 자원 선점 필요성이 상대적으로 낮은 어플리케이션들에 대한 리스트인 블랙 리스트를 포함할 수 있다.
도 6은 일 실시예에 따른 호스트 스케쥴링 리스트 600의 일 예를 나타낸다.
도 6을 참조하면, 호스트 스케쥴링 리스트 600는 룰 베이스 리스트 610, 화이트 리스트 620, 블랙 리스트 630을 포함할 수 있다.
룰 베이스 리스트 610는 자원 선점 권한에 대해서 가장 우선 순위가 높은 어플리케이션들에 대한 목록을 나타낼 수 있다. 예를 들어, 컴퓨팅 장치에 전원이 인가되고 나서 몇 초 이내에 화면 로고가 출력되고 또 몇 초 이내에 특정 프로세스가 시작되어야 하는 등의 시스템의 필수적인 루틴에 관한 프로세스가 룰 베이스 리스트 610에 포함될 수 있다.
화이트 리스트 620는 자원 선점 권한에 대해서 상대적으로 우선 순위가 높은 어플리케이션들에 대한 목록을 나타낼 수 있다. 예를 들어, 사용자로부터 특정한 안드로이드 어플리케이션에 대한 실행 요청을 수신한 경우의 프로세스가 화이트 리스트 620에 포함될 수 있다.
블랙 리스트 630는 자원 선점 권한에 대해서 우선 순위가 가장 낮은 어플리케이션들에 대한 목록을 나타낼 수 있다. 예를 들어, 백그라운드에서 소프트웨어를 업데이트하는 프로세스는 자원 선점에 대한 필요성이 상대적으로 떨어질 수 있으므로 이러한 프로세스가 블랙 리스트 630에 포함될 수 있다. 예를 들어, 안드로이드 어플리케이션 스토어(안드로이드 시스템)에서 안드로이드 어플리케이션을 설치 실행하고 이러한 설치 실행에 따라 팝업이나 노티피케이션을 출력하는 프로세스는 블랙 리스트 630에 포함될 수 있다.
호스트 스케쥴링 리스트 600에 포함된 각 리스트에 대응하여 자원 선점 권한과 관련하여 우선순위 높음, 중간, 낮음으로 우선순위 레벨이 결정될 수 있다.
또는 호스트 스케쥴링 리스트 600에 포함된 각 리스트에 대응하여 자원 선점 우선 순위에 대응하는 값을 가질 수 있다. 예를 들어, 자원 선점 우선 순위에 대응하는 값은 -20에서 +20 사이의 값을 가지며, 자원 선점 필요성이 높은 어플리케이션들의 목록인 룰 베이스 리스트 610에 포함된 어플리케이션들에 대해서는 -20을, 자원 선점 필요성이 낮은 어플리케이션들의 목록인 블랙 리스트 630에 포함된 어플리케이션들에 대해서는 +20을, 중립적인 어플리케이션들의 목록인 화이트 리스트 620에 포함된 어플리케이션들에 대해서는 0을 설정할 수 있다.
호스트 CPU 스케쥴링 프록시 114는 호스트 스케쥴링 리스트 600을 참조하여 가상 어플리케이션에 대한 자원 선점 권한을 결정하면, 가상 어플리케이션에 대해서 결정된 자원 선점 권한 정보를 안드로이드 CPU 스케쥴러 530에 제공할 수 있다. 이때 호스트 CPU 스케쥴링 프록시 114는 가상 어플리케이션에 대해서 결정된 자원 선점 권한 정보를 제공하기 위해 안드로이드 CPU 스케쥴러 530에 (App ID, 가상 PID, priority)를 전송할 수 있다.
호스트 CPU 스케쥴링 프록시 114는 가상 어플리케이션에 대해서 결정된 자원 선점 권한 정보를 직접 커널로 제공할 수도 있다. 호스트 CPU 스케쥴링 프록시 114가 가상 어플리케이션에 대해서 결정된 자원 선점 권한 정보를 직접 커널 130로 제공하기 위해서는 가상 어플리케이션에 대응하는 실제 PID를 알아야 한다. 이를 위해 호스트 CPU 스케쥴링 프록시 114는 AppID 와 가상 PID를 이용하여 커널 130이 보유하고 있는 호스트 가상 머신 ID 맵 132를 참조하여, 가상 머신 어플리케이션에 대응하는 실제 PID를 획득할 수 있다. 즉, 호스트 CPU 스케쥴링 프록시 114는 AppID 와 가상 PID를 커널 130로 제공하고, 커널 130이 보유하고 있는 호스트 가상 머신 ID 맵 132를 참조하여, 가상 머신 어플리케이션에 대응하는 실제 PID 및 App ID를 획득할 수 있다. 이와 같이 가상 머신 어플리케이션에 대응하는 실제 PID를 획득하면, 호스트 CPU 스케쥴링 프록시 114는 실제 PID를 이용하여 가상 어플리케이션에 대해 결정된 자원 선점 권한 정보를 커널 스케쥴러 131로 제공할 수 있다. 즉 호스트 CPU 스케쥴링 프록시 114는 (AppID, 실제 PID, priority)를 커널 스케쥴러 131로 전송할 수 있다.
도 7은 일 실시예에 따라 도 6에 도시된 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 7을 참조하면, 동작 705에서 안드로이드 시스템은 안드로이드 어플리케이션 510에 대한 실행 요청을 수신할 수 있다.
동작 710에서, 안드로이드 어플리케이션은 실행 요청된 안드로이드 어플리케이션에 대응하는 (AppID, 가상 PID)를 안드로이드 스케쥴링 콘트롤러 520에 제공함으로써 스케쥴링 요청을 전송할 수 있다.
동작 715에서, 안드로이드 CPU 스케쥴링 콘트롤러 520는 안드로이드 시스템 내부의 자원 선점 배분 알고리즘에 따라 스케쥴링 요청된 안드로이드 어플리케이션에 대한 자원 선점 우선순위를 결정함으로써 스케쥴링할 수 있다.
동작 720에서, 안드로이드 CPU 스케쥴링 콘트롤러 520는 안드로이드 어플리케이션에 대해 결정된 스케쥴링 실행 결과로서 (AppID, 가상 PID, priority)를 안드로이드 CPU 스케쥴러 530으로 전송할 수 있다.
동작 725에서, 안드로이드 CPU 스케쥴링 콘트롤러 520는 안드로이드 어플리케이션에 대한 자원 선점 권한 확인 요청을 보내기 위해 호스트 시스템의 호스트 CPU 스케쥴링 프록시 114로 (AppID, 가상 PID)를 전송할 수 있다.
동작 730에서, 안드로이드 CPU 스케쥴러 530는 안드로이드 CPU 스케쥴링 콘트롤러 520로부터 수신한 스케쥴링 실행 결과를 커널 130로 전송할 수 있다.
동작 735에서, 커널 130는 안드로이드 CPU 스케쥴러 530로부터 수신한 스케쥴링 결과에 따라 스케쥴링 제어를 수행할 수 있다.
동작 740에서, 호스트 CPU 스케쥴링 프록시 114는 호스트 스케쥴링 리스트 600를 참조하여 안드로이드 어플리케이션에 대한 자원 선점 권한을 결정할 수 있다.
동작 745에서, 호스트 CPU 스케쥴링 프록시 114는 안드로이드 어플리케이션에 대해서 결정된 자원 선점 권한 정보를 안드로이드 CPU 스케쥴러 530로 제공할 수 있다. 이때 호스트 CPU 스케쥴링 프록시 114는 (AppID, 가상 PID, 자원 선점 권한 정보)를 안드로이드 CPU 스케쥴러 530로 전송할 수 있다.
동작 750에서, 안드로이드 CPU 스케쥴러 530는 호스트 CPU 스케쥴링 프록시 114로부터 수신한 자원 선점 권한 정보에 기반하여 안드로이드 어플리케이션에 대한 스케쥴링 결과를 업데이트할 수 있다.
동작 755에서, 안드로이드 CPU 스케쥴러 530는 업데이트된 스케쥴링 결과를 커널 130로 제공할 수 있다.
동작 760에서, 커널 130는 안드로이드 CPU 스케쥴러 530로부터 업데이트된 스케쥴링 결과를 수신하고 이에 기반하여 스케쥴링 제어를 조정할 수 있다.
도 8은 일 실시예에 따라 도 6에 도시된 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 8의 동작 805에서 동작 840 까지는 도 7의 동작 705에서 동작 740 까지의 동작과 동일하므로 설명은 생략한다.
동작 845에서, 호스트 CPU 스케쥴링 프록시 114는 커널 130로 안드로이드 어플리케이션에 대응하는 실제 PID 요청을 전송할 수 있다. 실제 PID 요청을 위해 호스트 CPU 스케쥴링 프록시 114는 커널 130로 안드로이드 어플리케이션에 대응하는 AppID, 가상 PID를 전송할 수 있다.
동작 850에서, 커널 130는 ID맵 132를 참조하여 요청된 안드로이드 어플리케이션에 대응하는 AppID 와 가상 PID를 이용하여 대응하는 실제 PID를 찾고, 실제 PID 요청에 대한 응답으로 (AppID, 가상 PID, 실제 PID)를 호스트 CPU 스케쥴링 프록시 114로 전송할 수 있다.
동작 855에서, 호스트 CPU 스케쥴링 프록시 114는 실제 PID를 이용하여 자원 선점 권한 정보를 직접 커널 130로 제공할 수 있다. 즉, 호스트 CPU 스케쥴링 프록시 114는 (AppID, 실제 PID, 자원 선점 권한 정보)를 커널 130로 전송할 수 있다.
동작 860에서, 커널 130는 호스트 CPU 스케쥴링 프록시 114로부터 수신한 자원 선점 권한 정보에 기반하여 해당 안드로이드 어플리케이션에 대한 스케쥴링 제어를 업데이트할 수 있다.
동작 865에서, 호스트 CPU 스케쥴링 프록시 114는 안드로이드 어플리케이션에 대해서 결정된 자원 선점 권한 정보를 안드로이드 CPU 스케쥴러 530로 제공하기 위해 (AppID, 가상 PID, 자원 선점 권한 정보)를 안드로이드 CPU 스케쥴러 530로 전송할 수 있다.
동작 870에서, 안드로이드 CPU 스케쥴러 530는 호스트 CPU 스케쥴링 프록시 114로부터 수신한 자원 선점 권한 정보에 기반하여 안드로이드 어플리케이션에 대한 스케쥴링 결과를 업데이트할 수 있다.
도 9는 일 실시예에 따라 호스트 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신한 경우에 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 9를 참조하면, 동작 910에서, 컴퓨팅 장치 100는 호스트 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신하고, 이러한 가상 머신 어플리케이션의 실행 요청 수신에 따라 가상 머신 어플리케이션의 실행 요청을 가상 머신 시스템으로 전달할 수 있다. 구체적으로, 컴퓨팅 장치 100는 호스트 시스템에 의한 호스트 어플리케이션이 실행하는 동안, 호스트 어플리케이션을 통해서 가상 머신 어플리케이션의 실행 요청을 수신할 수 있다.
도 10은 일 예에 따라 호스트 시스템 의해 가상 머신 어플리케이션의 실행 요청을 수신하는 환경의 일 예를 나타낸다.
도 10을 참조하면, 컴퓨팅 장치 100는 일 실시예에 따라 타이젠 OS에 기반한 타이젠 홈 화면 1010을 디스플레이 1000에 표시할 수 있다.
타이젠 홈 화면 1010은 하나 이상의 어플리케이션의 실행을 위한 아이템들을 포함하는 메뉴 1020를 제공할 수 있다. 메뉴 1020는 타이젠 OS에 기반한 호스트 어플리케이션 #1, #2, #3의 실행을 위한 아이템들 뿐만 아니라 안드로이드 OS에 기반한 안드로이드 어플리케이션 #1, #2, #3의 실행을 위한 아이템들을 포함할 수 있다.
이와 같은 타이젠 홈 화면 1010의 메뉴 1020에서 사용자로부터 안드로이드 어플리케이션 #1,#2,#3 중 하나의 실행을 요청하는 사용자 입력을 수신한 경우에 컴퓨팅 장치 100는 호스트 시스템에 의해 안드로이드 어플리케이션 실행 요청을 수신한 것을 확인할 수 있다. 이와 같은 환경에서 안드로이드 어플리케이션 실행을 요청하는 사용자 입력을 수신한 경우에, 이는 사용자가 명시적으로 안드로이드 어플리케이션의 실행을 요청한 것이므로 컴퓨팅 장치 100는 실행 요청된 안드로이드 어플리케이션에 대한 자원 선점 우선 순위를 가장 높게 설정함으로써 지연없이 실행될 수 있도록 제어할 필요가 있다.
다시 도 9로 돌아가서, 동작 920에서, 호스트 시스템의 CPU 스케쥴러에 의해, 실행 요청된 가상 머신 어플리케이션에 대해서, 가상 머신 어플리케이션을 우선 실행하도록 하는 자원 선점 권한을 결정하고, 결정된 자원 선점 권한에 대한 정보를 가상 머신 시스템의 CPU 스케쥴러로 전달할 수 있다.
호스트 시스템의 CPU 스케쥴러는 호스트 시스템 환경에서 가상 머신 어플리케이션의 실행 요청이 있으면 이는 가장 선제적으로 처리해야 하는 어플리케이션임을 인식할 수 있다. 따라서 호스트 시스템의 CPU 스케쥴러는 호스트 시스템 환경에서 가상 머신 어플리케이션의 실행 요청이 있으면 실행 요청된 가상 머신 어플리케이션의 자원 선점 권한을 가장 높게 설정할 수 있다.
호스트 시스템의 CPU 스케쥴러는 실행 요청된 가상 머신 어플리케이션을 우선 실행하도록 자원 선점 권한을 결정하고, 결정된 자원 선점 권한에 대한 정보를 가상 머신 시스템의 CPU 스케쥴러로 전달할 수 있다.
동작 930에서, 가상 머신 시스템의 CPU 스케쥴러에 의해, 가상 머신 어플리케이션을 우선 실행하도록 결정된 자원 선점 권한에 대한 정보에 기반하여, 실행 요청된 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고 스케쥴링 결과를 커널에 제공할 수 있다.
가상 머신 시스템의 CPU 스케쥴러는 실행 요청된 가상 머신 어플리케이션에 대해서 이 가상 머신 어플리케이션을 우선 실행하도록 하는 자원 선점 권한 정보를 호스트 시스템의 CPU 스케쥴러로부터 명시적으로 수신함으로써 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링할 수 있다. 이와 같이 가상 머신 어플리케이션에 대해서 우선 실행하도록 결정된 스케쥴링 결과를 커널에 제공함으로써 커널은 가상 어플리케이션에 대해서 자원 선점이 우선될 수 있도록 스케쥴링할 수 있다.
도 11은 일 실시예에 따라 가상 머신 시스템의 일 예인 안드로이드 시스템을 포함하는 컴퓨팅 장치의 블록도의 일 예이다.
도 11를 참조하면, 일 실시예에 따라 컴퓨팅 장치 100는 안드로이드 시스템 500, 호스트 시스템 110, 커널 130을 포함할 수 있다.
일 실시예에 따라 호스트 시스템 110는 호스트 런처 어플리케이션 115, 호스트 어플리케이션 프레임워크 112, 호스트 CPU 스케쥴링 프록시 114를 포함할 수 있다.
호스트 런처 어플리케이션 115는 안드로이드 어플리케이션에 대한 실행 요청을 수신하면, 실행 요청된 안드로이드 어플리케이션의 AppID를 호스트 어플리케이션 프레임워크 112로 전달할 수 있다.
호스트 어플리케이션 프레임워크 112는 실행 요청된 안드로이드 어플리케이션의 AppID 및 실행 요청을 안드로이드 시스템의 안드로이드 어플리케이션 프레임워크 540 및 호스트 CPU 스케쥴링 프록시 114로 전달할 수 있다.
호스트 어플리케이션 프레임워크 112로부터 AppID를 수신한 호스트 CPU 스케쥴링 프록시 114는 호스트 시스템에 의해 실행 요청 수신된 가상 머신 어플리케이션에 대해서 이 가상 머신 어플리케이션이 우선 실행될 수 있도록 자원 선점 우선 순위를 가장 높은 우선 순위로 결정할 수 있다. 그리고 호스트 어플리케이션 프레임워크 112는 이와 같이 결정된 우선 순위에 따라 안드로이드 어플리케이션이 스케쥴링될 수 있도록 이 안드로이드 어플리케이션에 대한 자원 선점 우선 순위 정보를 안드로이드 시스템의 안드로이드 CPU 스케쥴링 콘트롤러 520로 제공할 수 있다. 이때 호스트 CPU 스케쥴링 프록시 114는 안드로이드 어플리케이션에 대한 자원 선점 우선 순위 정보를 전달하기 위해 (AppID, priority)를 안드로이드 CPU 스케쥴링 콘트롤러 520로 전송할 수 있다.
안드로이드 시스템 500는 안드로이드 어플리케이션 510, 안드로이드 CPU 스케쥴링 콘트롤러 520, 안드로이드 CPU 스케쥴러 530, 안드로이드 어플리케이션 프레임워크 540를 포함할 수 있다.
안드로이드 어플리케이션 프레임워크 540는 호스트 어플리케이션 프레임워크 112로부터 호스트 시스템에 의해 실행 요청 수신된 안드로이드 어플리케이션의 AppID 및 실행 요청을 수신하고 수신된 AppID 및 AppID에 대응하는 가상 PID와 함께 해당 안드로이드 어플리케이션의 실행 요청을 안드로이드 어플리케이션 510으로 제공할 수 있다.
안드로이드 어플리케이션 510은 수신된 AppID 및 가상 PID와 함께 실행 요청을 안드로이드 스케쥴링 콘트롤러 520로 제공할 수 있다.
안드로이드 CPU 스케쥴링 콘트롤러 520는 실행 요청된 안드로이드 어플리케이션에 대해서 호스트 CPU스케쥴링 프록시 114로부터 수신된 AppID 및 자원 선점 우선 순위 정보에 기반하여, 자원 선점 우선 순위를 결정하고, 결정된 자원 선점 우선 순위 정보를 안드로이드 CPU 스케쥴러 530로 제공할 수 있다. 이때 안드로이드 CPU 스케쥴링 콘트롤러 520는 실행 요청된 안드로이드 어플리케이션에 대해서 AppID, 가상 PID, priority 를 안드로이드 CPU 스케쥴러 530로 전송할 수 있다.
안드로이드 CPU 스케쥴러 530는 안드로이드 CPU 스케쥴링 콘트롤러 520로부터 수신한 안드로이드 어플리케이션에 대한 자원 선점 우선 순위 정보를 커널 130로 제공할 수 있다.
도 12는 일 실시예에 따라 도 11에 도시된 컴퓨팅 장치의 동작 방법의 흐름도의 일 예를 나타낸다.
도 12를 참조하면, 동작 1205에서, 호스트 시스템의 호스트 런처 어플리케이션 115는 안드로이드 어플리케이션의 실행 요청을 수신할 수 있다.
동작 1210에서, 호스트 런처 어플리케이션 115는 실해 요청된 안드로이드 어플리케이션의 속성 정보를 참조하여 이 어플리케이션이 안드로이드 어플리케이션 임을 확인할 수 있다.
동작 1215에서, 호스트 런처 어플리케이션 115는 안드로이드 어플리케이션에 대한 실행 요청을 AppID와 함께 어플리케이션 프레임 워크 112로 전달할 수 있다.
동작 1220에서, 안드로이드 어플리케이션에 대한 실행 요청을 전달받은 호스트 어플리케이션 프레임워크 112는 해당 안드로이드 어플리케이션에 대한 실행 요청을 AppID와 함께 안드로이드 시스템의 어플리케이션 프레임워크 540로 전달할 수 있다.
동작 1225에서, 안드로이드 어플리케이션에 대한 실행 요청을 수신한 안드로이드 어플리케이션 프레임워크 540는 안드로이드 어플리케이션에 대한 실행 요청을 AppID 및 가상 PID와 함께 안드로이드 어플리케이션 510으로 전달할 수 있다.
동작 1230에서, 안드로이드 어플리케이션 510는 실행 요청된 안드로이드 어플리케이션에 대한 스케쥴링 요청을 AppID 및 가상 PID와 함께 CPU 스케쥴링 콘트로러 520로 전송할 수 있다.
동작 1235에서, 호스트 어플리케이션 프레임워크 112는 실행 요청된 안드로이드 어플리케이션에 대한 스케쥴링 요청을 AppID와 함께 CPU 스케쥴링 프록시 114로 전달할 수 있다.
동작 1240에서, 호스트 CPU 스케쥴링 프록시 114는 실행 요청된 안드로이드 어플리케이션에 자원 선점 권한을 결정하고, 안드로이드 어플리케이션의 AppID 와 결정된 자원 선점 권한에 대한 정보를 호스트 시스템의 호스트 CPU 스케쥴링 콘트롤러 520로 전달할 수 있다. 이때 호스트 CPU 스케쥴링 프록시 114는 호스트 시스템에서 실행 요청된 안드로이드 어플리케이션은 사용자의 실행 요청에 따른 어플리케이션으로서 우선적으로 자원을 선점하여 실행되어야 하는 어플리케이션으로 인식하여, 실행 요청된 안드로이드 어플리케이션에 대한 자원 선점 권한을 가장 높은 우선 순위로 결정할 수 있다.
동작 1245에서, 안드로이드 어플리케이션에 대한 스케쥴링 요청 및 이 안드로이드 어플리케이션에 대한 자원 선점 권한 정보를 수신한 안드로이드 CPU 스케쥴링 콘트롤러 520는 스케쥴링 요청된 안드로이드 어플리케이션에 대해서 수신된 자원 선점 권한 정보에 기반하여 우선순위를 결정하여 스케쥴링 할 수 있다.
동작 1250에서, 안드로이드 CPU 스케쥴링 콘트롤러 520는 스케쥴링 결과를 CPU 스케쥴러 530로 전송할 수 있다. 이때 스케쥴링 결과를 전달하기 위해 안드로이드 CPU 스케쥴링 콘트롤러 520는 AppID, 가상 PID, 스케쥴링 우선순위 정보를 안드로이드 CPU 스케쥴러 530로 제공할 수 있다.
동작 1255에서, CPU 스케쥴링 콘트롤러 520로부터 안드로이드 어플리케이션에 대한 스케쥴링 우선순위 정보를 수신한 CPU 스케쥴러 530는 스케쥴링 결과로서, AppID, 가상 PID, 스케쥴링 우선순위 정보를 커널 130로 제공할 수 있다.
동작 1260에서, 커널 130은 실행 요청된 안드로이드 어플리케이션에 대한 스케쥴링 결과를 수신하고 스케쥴링 결과에 기반하여 해당 실행 요청된 안드로이드 어플리케이션에 대한 자원 선점을 스케쥴링할 수 있다.
도 13은 일 실시예에 따라 컴퓨팅 장치의 일 예를 나타낸다.
도 13을 참조하면, 컴퓨팅 장치 100는 통신부 (예를 들어 통신 회로를 포함) 1310, 수신부 1320, 디스플레이 1330, 메모리 1340, 제어부 (예를 들어 프로세싱 회로를 포함) 1350 외에, 재생부 (예를 들어 비디오 처리 회로를 포함) 1360, 오디오 처리부 (예를 들어 오디오 처리 회로를 포함) 1370, 오디오 출력부 (예를 들어 스피커를 포함) 1380, 감지부 (예를 들어 회로를 포함) 1390를 더 포함할 수 있다.
통신부 1310는 컴퓨팅 장치 100과 무선 통신 시스템 사이 또는 컴퓨팅 장치 100과 다른 전자 장치가 위치한 네트워크 사이의 무선 통신을 가능하게 하는, 다양한 통신 회로를 포함하는, 하나 이상의 모듈을 포함할 수 있다. 예를 들어, 통신부 1310는 이동통신 모듈 1311, 무선 인터넷 모듈 1312 및 근거리 통신 모듈 1313을 포함할 수 있다.
이동통신 모듈 1311는, 다양한 통신 회로를 포함할 수 있고, 이동 통신망 상에서 기지국, 외부의 단말, 서버 중 적어도 하나와 무선 신호를 송수신한다. 상기 무선 신호는, 음성 호 신호, 화상 통화 호 신호 또는 문자/멀티미디어 메시지 송수신에 따른 다양한 형태의 데이터를 포함할 수 있다.
무선 인터넷 모듈 1312은 무선 인터넷 접속을 위한 다양한 회로를 포함하는 모듈을 말하는 것으로, 디바이스에 내장되거나 외장될 수 있다. 무선 인터넷 기술로는 WLAN(Wireless LAN)(WiFi), Wibro(Wireless broadband), Wimax(World Interoperability for Microwave Access), HSDPA(High Speed Downlink Packet Access) 등이 이용될 수 있다. 상기 무선 인터넷 모듈 1312을 통해서 상기 디바이스는 다른 디바이스와 와이 파이(Wi-Fi) P2P(Peer to Peer)연결을 할 수 있다.
근거리 통신 모듈 1313은 근거리 통신을 위한 다양한 회로를 포함하는 모듈을 말한다. 근거리 통신 기술로 블루투스(Bluetooth), BLE(Bluetooth Low Energy), RFID(Radio Frequency Identification), 적외선 통신(IrDA, infrared Data Association), UWB(Ultra Wideband), ZigBee 등이 이용될 수 있다.
수신부 1320는 제어부 1350의 제어에 의해 컴퓨팅 장치 100의 외부에서부터 비디오(예를 들어, 동영상 등), 오디오(예를 들어, 음성, 음악 등) 및 부가 정보(예를 들어, EPG 등) 등을 수신할 수 있다. 수신부 1320는 HDMI 포트(High-Definition Multimedia Interface port, 1321, 컴포넌트 잭(component jack, 1322), PC 포트(PC port, 1323), 및 USB 포트(USB port, 1324) 중 하나를 포함하거나, 하나 이상의 조합을 포함할 수 있다. 수신부 1320는 HDMI 포트 이외에도 디스플레이 포트 (DisplayPort; DP), 썬더볼트 (Thunderbolt), MHL (Mobile High-Definition Link)를 더 포함할 수 있다.
재생부 1360는 다양한 비디오 프로세싱 회로를 포함할 수 있고, 제어부 1350의 제어에 따라, 수신부 1320 또는 통신부 1310로부터 수신되는 영상신호를 처리하여 디스플레이 1330로 출력할 수 있다.
디스플레이 1330는 영상 처리부 1360로부터 수신된 영상 신호를 화면에 표시할 수 있다.
오디오 처리부 1370는 다양한 오디오 프로세싱 회로를 포함할 수 있고, 제어부 1350의 제어에 따라, 수신부 1320 또는 통신부 1310로부터 수신되는 오디오 신호를 아날로그 오디오 신호로 변환하여 오디오 출력부 1380로 출력할 수 있다.
오디오 출력부 1380는 수신되는 아날로그 오디오 신호를 스피커를 통해 출력할 수 있다.
감지부 1390는 다양한 회로를 포함할 수 있고, 사용자의 음성, 사용자의 영상, 또는 사용자의 인터랙션을 감지하며, 마이크로폰, 카메라부, 및 광 수신부를 포함할 수 있다. 마이크로폰은 사용자의 발화(utterance)된 음성을 수신한다. 마이크는 수신된 음성을 전기 신호로 변환하여 제어부 1350로 출력할 수 있다. 카메라부는 카메라 인식 범위에서 제스처를 포함하는 사용자의 모션에 대응되는 영상(예를 들어, 연속되는 프레임)을 수신할 수 있다. 광 수신부는, 원격 제어 장치에서부터 수신되는 광 신호(제어 신호를 포함)를 수신한다. 광 수신부는 원격 제어 장치로부터 사용자 입력(예를 들어, 터치, 눌림, 터치 제스처, 음성, 또는 모션)에 대응되는 광 신호를 수신할 수 있다.
메모리 1340는 컴퓨팅 장치 100의 동작에 관련된 프로그램, 컴퓨팅 장치 100의 동작 중에 발생하는 각종 데이터를 저장할 수 있다.
일 실시예에 따라 메모리 1340에 포함된 명령어들을 컴퓨팅 장치 100에 의해 실행될 때, 컴퓨팅 장치 100가, 상기 가상 머신 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신하는 동작, 상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하고, 상기 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 상기 호스트 시스템의 CPU 스케쥴러에 전송하는 동작, 및 상기 호스트 시스템의 CPU 스케쥴러에 의해, 호스트 스케쥴링 리스트를 참조하여 상기 가상 머신 어플리케이션의 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러에 제공하는 동작을 실행하도록 할 수 있다.
일 실시예에 따라 상기 자원 선점 권한에 대한 정보는, 상기 가상 머신 어플리케이션의 자원 선점 권한의 우선 순위를 포함할 수 있다.
일 실시예에 따라 메모리 1340에 포함된 명령어들을 컴퓨팅 장치 100에 의해 실행될 때, 컴퓨팅 장치 100가, 상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 자원 선점 권한에 대한 정보가 자원 선점 거부를 나타내는 경우, 상기 자원 선점 권한에 대한 정보를 상기 커널로 제공하여 상기 가상 어플리케이션에 대한 우선 실행 스케쥴링을 조정하는 동작을 더 실행하도록 할 수 있다.
일 실시예에 따라 상기 호스트 스케쥴링 리스트는, 하나 이상의 어플리케이션들의 각각에 대한 우선순위 정보를 포함할 수 있다.
일 실시예에 따라 상기 호스트 스케쥴링 리스트는, 가장 우선적으로 실행되어야 하는 하나 이상의 어플리케이션들에 대한 식별 정보를 포함하는 룰 베이스 리스트, 우선적으로 실행되어야 하는 하나 어플리케이션들에 대한 식별 정보를 포함하는 화이트 리스트, 우선적으로 실행되지 않는 하나 이상의 어플리케이션들에 대한 식별 정보를 포함하는 블랙 리스트 중 적어도 하나를 포함할 수 있다.
일 실시예에 따라 메모리 1340에 포함된 명령어들을 컴퓨팅 장치 100에 의해 실행될 때, 컴퓨팅 장치 100가, 상기 호스트 시스템의 CPU 스케쥴러에 의해, 상기 가상 머신 시스템의 CPU 스케쥴러로부터, 상기 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 수신함에 따라, 상기 가상 머신 어플리케이션의 어플리케이션 ID에 대응하는 실제 PID를 상기 커널의 ID 맵을 이용하여 확인하는 동작, 및 상기 가상 머신 어플리케이션에 대해 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 어플리케이션의 상기 실제 PID를 이용하여 상기 커널에 제공함으로써 상기 가상 머신 어플리케이션에 대한 자원 선점 스케쥴링을 조정하는 동작을 더 실행하도록 할 수 있다.
일 실시예에 따라 커널의 ID 맵은, 어플리케이션에 대한 App ID, 가상 PID, 실제 PID, 및 자원 선점 우선 순위 정보를 포함할 수 있다.
일 실시예에 따라 메모리 1340에 포함된 명령어들을 컴퓨팅 장치 100에 의해 실행될 때, 컴퓨팅 장치 100가, 상기 호스트 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신함에 따라 상기 가상 머신 어플리케이션의 실행 요청을 상기 가상 머신 시스템으로 전달하는 동작, 상기 호스트 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 하는 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러로 전달하는 동작, 상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 가상 머신 어플리케이션을 우선 실행하도록 결정된 상기 자원 선점 권한에 대한 정보에 기반하여, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하는 동작을 실행도록 할 수 있다.
일부 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.
개시된 실시예들은 컴퓨터로 읽을 수 있는 저장 매체(computer-readable storage media)에 저장된 명령어를 포함하는 S/W 프로그램으로 구현될 수 있다.
컴퓨터는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 개시된 실시예에 따른 동작이 가능한 장치로서, 개시된 실시예들에 따른 전자 장치를 포함할 수 있다.
컴퓨터로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서,‘비일시적’은 저장 매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
또한, 개시된 실시예들에 따른 제어 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다.
컴퓨터 프로그램 제품은 S/W 프로그램, S/W 프로그램이 저장된 컴퓨터로 읽을 수 있는 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 프로그램 제품은 디바이스의 제조사 또는 전자 마켓(예, 구글 플레이 스토어, 앱 스토어)을 통해 전자적으로 배포되는 S/W 프로그램 형태의 상품(예, 다운로더블 앱)을 포함할 수 있다. 전자적 배포를 위하여, S/W 프로그램의 적어도 일부는 저장 매체에 저장되거나, 임시적으로 생성될 수 있다. 이 경우, 저장 매체는 제조사의 서버, 전자 마켓의 서버, 또는 SW 프로그램을 임시적으로 저장하는 중계 서버의 저장매체가 될 수 있다.
컴퓨터 프로그램 제품은, 서버 및 디바이스로 구성되는 시스템에서, 서버의 저장매체 또는 디바이스의 저장매체를 포함할 수 있다. 또는, 서버 또는 디바이스와 통신 연결되는 제 3 장치(예, 스마트폰)가 존재하는 경우, 컴퓨터 프로그램 제품은 제 3 장치의 저장매체를 포함할 수 있다. 또는, 컴퓨터 프로그램 제품은 서버로부터 디바이스 또는 제 3 장치로 전송되거나, 제 3 장치로부터 디바이스로 전송되는 S/W 프로그램 자체를 포함할 수 있다.
이 경우, 서버, 디바이스 및 제 3 장치 중 하나가 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수 있다. 또는, 서버, 디바이스 및 제 3 장치 중 둘 이상이 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 분산하여 실시할 수 있다.
예를 들면, 서버(예로, 클라우드 서버 또는 인공 지능 서버 등)가 서버에 저장된 컴퓨터 프로그램 제품을 실행하여, 서버와 통신 연결된 디바이스가 개시된 실시예들에 따른 방법을 수행하도록 제어할 수 있다.
또 다른 예로, 제 3 장치가 컴퓨터 프로그램 제품을 실행하여, 제 3 장치와 통신 연결된 디바이스가 개시된 실시예에 따른 방법을 수행하도록 제어할 수 있다. 제 3 장치가 컴퓨터 프로그램 제품을 실행하는 경우, 제 3 장치는 서버로부터 컴퓨터 프로그램 제품을 다운로드하고, 다운로드 된 컴퓨터 프로그램 제품을 실행할 수 있다. 또는, 제 3 장치는 프리로드 된 상태로 제공된 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수도 있다.
또한, 본 명세서에서, "부"는 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다.
전술한 본 개시의 설명은 예시를 위한 것이며, 본 개시가 속하는 기술분야의 통상의 지식을 가진 자는 본 개시의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 개시의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 개시의 범위에 포함되는 것으로 해석되어야 한다.
Claims (15)
- 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 시스템을 동작시키는 방법에 있어서,상기 가상 머신 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신하는 동작,상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하고, 상기 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 상기 호스트 시스템의 CPU 스케쥴러에 전송하는 동작,상기 호스트 시스템의 CPU 스케쥴러에 의해, 호스트 스케쥴링 리스트를 참조하여 상기 가상 머신 어플리케이션의 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러에 제공하는 동작을 포함하는 방법.
- 제1항에 있어서,상기 자원 선점 권한에 대한 정보는, 상기 가상 머신 어플리케이션의 자원 선점 권한의 우선 순위를 포함하는, 방법.
- 제1항에 있어서,상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 자원 선점 권한에 대한 정보가 자원 선점 거부를 나타냄에 기초하여, 상기 자원 선점 권한에 대한 정보를 상기 커널로 제공하여 상기 가상 어플리케이션에 대한 우선 실행 스케쥴링을 조정하는 동작을 더 포함하는 방법.
- 제1항에 있어서,상기 호스트 스케쥴링 리스트는, 하나 이상의 어플리케이션들의 각각에 대한 우선순위 정보를 포함하는 방법.
- 제1항에 있어서,상기 호스트 스케쥴링 리스트는, 가장 우선적으로 실행되어야 하는 하나 이상의 어플리케이션들에 대한 식별 정보를 포함하는 룰 베이스 리스트, 우선적으로 실행되어야 하는 하나 이상의 어플리케이션들에 대한 식별 정보를 포함하는 화이트 리스트, 우선적으로 실행되지 않는 하나 이상의 어플리케이션들에 대한 식별 정보를 포함하는 블랙 리스트 중 적어도 하나를 포함하는, 방법.
- 제1항에 있어서,상기 호스트 시스템의 CPU 스케쥴러에 의해,상기 가상 머신 시스템의 CPU 스케쥴러로부터, 상기 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 수신함에 따라, 상기 가상 머신 어플리케이션의 어플리케이션 ID에 대응하는 실제 PID를 상기 커널의 ID 맵을 이용하여 확인하는 동작, 및상기 가상 머신 어플리케이션에 대해 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 어플리케이션의 상기 실제 PID를 이용하여 상기 커널에 제공함으로써 상기 가상 머신 어플리케이션에 대한 자원 선점 스케쥴링을 조정하는 동작을 더 포함하는, 방법.
- 제6항에 있어서,상기 커널의 ID 맵은,어플리케이션에 대한 어플리케이션 ID(Application ID), 가상 PID, 실제 PID, 및 자원 선점 우선 순위 정보를 포함하는, 방법.
- 호스트 시스템과 가상 머신 시스템을 포함하는 컴퓨팅 시스템을 동작시키는 방법에 있어서,상기 호스트 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신함에 따라 상기 가상 머신 어플리케이션의 실행 요청을 상기 가상 머신 시스템으로 전달하는 동작,상기 호스트 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 하는 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러로 전달하는 동작,상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 가상 머신 어플리케이션을 우선 실행하도록 결정된 상기 자원 선점 권한에 대한 정보에 기반하여, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하는 동작을 포함하는, 방법.
- 컴퓨팅 장치에 있어서,호스트 시스템,가상 머신 시스템,하나 이상의 CPU,명령어들을 포함하는 메모리를 포함하고,상기 명령어들을 상기 컴퓨팅 장치에 의해 실행될 때, 상기 컴퓨팅 장치가,상기 가상 머신 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신하는 동작,상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하고, 상기 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 상기 호스트 시스템의 CPU 스케쥴러에 전송하는 동작, 및상기 호스트 시스템의 CPU 스케쥴러에 의해, 호스트 스케쥴링 리스트를 참조하여 상기 가상 머신 어플리케이션의 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러에 제공하는 동작을 실행하도록 하는, 컴퓨팅 장치.
- 제9항에 있어서,상기 자원 선점 권한에 대한 정보는, 상기 가상 머신 어플리케이션의 자원 선점 권한의 우선 순위를 포함하는, 컴퓨팅 장치.
- 제9항에 있어서,상기 명령어들을 상기 컴퓨팅 장치에 의해 실행될 때, 상기 컴퓨팅 장치가,상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 자원 선점 권한에 대한 정보가 자원 선점 거부를 나타냄에 기초하여, 상기 자원 선점 권한에 대한 정보를 상기 커널로 제공하여 상기 가상 어플리케이션에 대한 우선 실행 스케쥴링을 조정하는 동작을 더 실행하도록 하는 컴퓨팅 장치.
- 제9항에 있어서,상기 호스트 스케쥴링 리스트는, 하나 이상의 어플리케이션들의 각각에 대한 우선순위 정보를 포함하는 컴퓨팅 장치.
- 제9항에 있어서,상기 호스트 스케쥴링 리스트는, 가장 우선적으로 실행되어야 하는 하나 이상의 어플리케이션들에 대한 식별 정보를 포함하는 룰 베이스 리스트, 우선적으로 실행되어야 하는 하나 어플리케이션들에 대한 식별 정보를 포함하는 화이트 리스트, 우선적으로 실행되지 않는 하나 이상의 어플리케이션들에 대한 식별 정보를 포함하는 블랙 리스트 중 적어도 하나를 포함하는, 컴퓨팅 장치.
- 제9항에 있어서,상기 명령어들은 상기 컴퓨팅 장치에 의해 실행될 때, 상기 컴퓨팅 장치가,상기 호스트 시스템의 CPU 스케쥴러에 의해,상기 가상 머신 시스템의 CPU 스케쥴러로부터, 상기 가상 머신 어플리케이션에 대한 자원 선점 권한 확인 요청을 수신함에 따라, 상기 가상 머신 어플리케이션의 어플리케이션 ID에 대응하는 실제 PID를 상기 커널의 ID 맵을 이용하여 확인하는 동작, 및상기 가상 머신 어플리케이션에 대해 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 어플리케이션의 상기 실제 PID를 이용하여 상기 커널에 제공함으로써 상기 가상 머신 어플리케이션에 대한 자원 선점 스케쥴링을 조정하는 동작을 더 실행하는 컴퓨팅 장치.
- 컴퓨팅 장치에 있어서,호스트 시스템,가상 머신 시스템,하나 이상의 CPU,명령어들을 포함하는 메모리를 포함하고,상기 명령어들을 상기 컴퓨팅 장치에 의해 실행될 때, 상기 컴퓨팅 장치가,상기 호스트 시스템에 의해 가상 머신 어플리케이션의 실행 요청을 수신함에 따라 상기 가상 머신 어플리케이션의 실행 요청을 상기 가상 머신 시스템으로 전달하는 동작,상기 호스트 시스템의 CPU 스케쥴러에 의해, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 하는 자원 선점 권한을 결정하고, 상기 결정된 자원 선점 권한에 대한 정보를 상기 가상 머신 시스템의 CPU 스케쥴러로 전달하는 동작, 및상기 가상 머신 시스템의 CPU 스케쥴러에 의해, 상기 가상 머신 어플리케이션을 우선 실행하도록 결정된 상기 자원 선점 권한에 대한 정보에 기반하여, 상기 실행 요청된 상기 가상 머신 어플리케이션을 우선 실행하도록 스케쥴링하고, 상기 스케쥴링 결과를 커널에 제공하는 동작을 실행하는, 컴퓨팅 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/350,320 US20240036911A1 (en) | 2022-07-28 | 2023-07-11 | Computing device and operating method thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2022-0093876 | 2022-07-28 | ||
KR1020220093876A KR20240015952A (ko) | 2022-07-28 | 2022-07-28 | 컴퓨팅 장치 및 그 동작 방법 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/350,320 Continuation US20240036911A1 (en) | 2022-07-28 | 2023-07-11 | Computing device and operating method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024025199A1 true WO2024025199A1 (ko) | 2024-02-01 |
Family
ID=89706744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2023/009629 WO2024025199A1 (ko) | 2022-07-28 | 2023-07-07 | 컴퓨팅 장치 및 그 동작 방법 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR20240015952A (ko) |
WO (1) | WO2024025199A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118349366A (zh) * | 2024-06-18 | 2024-07-16 | 北京象帝先计算技术有限公司 | 资源调度器及方法、图形处理系统、电子组件及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140173113A1 (en) * | 2012-12-19 | 2014-06-19 | Symantec Corporation | Providing Optimized Quality of Service to Prioritized Virtual Machines and Applications Based on Quality of Shared Resources |
US20140331222A1 (en) * | 2013-05-03 | 2014-11-06 | Vmware, Inc. | Dynamic virtual machine sizing |
KR20200097579A (ko) * | 2019-02-08 | 2020-08-19 | 삼성전자주식회사 | 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법 |
JP2020135167A (ja) * | 2019-02-15 | 2020-08-31 | 日本電信電話株式会社 | リソース管理装置およびリソース管理方法 |
KR102339095B1 (ko) * | 2017-06-27 | 2021-12-15 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 인터럽트 요청 처리 방법 및 장치, 및 가상화된 디바이스 |
-
2022
- 2022-07-28 KR KR1020220093876A patent/KR20240015952A/ko unknown
-
2023
- 2023-07-07 WO PCT/KR2023/009629 patent/WO2024025199A1/ko unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140173113A1 (en) * | 2012-12-19 | 2014-06-19 | Symantec Corporation | Providing Optimized Quality of Service to Prioritized Virtual Machines and Applications Based on Quality of Shared Resources |
US20140331222A1 (en) * | 2013-05-03 | 2014-11-06 | Vmware, Inc. | Dynamic virtual machine sizing |
KR102339095B1 (ko) * | 2017-06-27 | 2021-12-15 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 인터럽트 요청 처리 방법 및 장치, 및 가상화된 디바이스 |
KR20200097579A (ko) * | 2019-02-08 | 2020-08-19 | 삼성전자주식회사 | 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법 |
JP2020135167A (ja) * | 2019-02-15 | 2020-08-31 | 日本電信電話株式会社 | リソース管理装置およびリソース管理方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118349366A (zh) * | 2024-06-18 | 2024-07-16 | 北京象帝先计算技术有限公司 | 资源调度器及方法、图形处理系统、电子组件及设备 |
Also Published As
Publication number | Publication date |
---|---|
KR20240015952A (ko) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018048118A1 (en) | Server and method for controlling external device | |
WO2019078617A1 (en) | ELECTRONIC APPARATUS AND VOICE RECOGNITION METHOD | |
WO2024025199A1 (ko) | 컴퓨팅 장치 및 그 동작 방법 | |
WO2022050652A1 (en) | Method, apparatus, and computer readable storage medium for controlling account | |
EP2754263A1 (en) | Mobile terminal, image display device mounted on vehicle and data processing method using the same | |
WO2020067677A1 (ko) | 외부 장치와 통신이 필요한 어플리케이션의 운영 방법 및 전자 장치 | |
WO2021101275A1 (en) | Method, system and device for sharing contents | |
WO2018190637A1 (ko) | 디바이스의 통신 연결 방법 및 그 장치 | |
WO2016013906A1 (en) | Electronic apparatus for executing virtual machine and method for executing virtual machine | |
WO2019039851A1 (ko) | Usb 인터페이스를 통해 외부 장치와 연결하는 방법 및 그를 위한 전자 장치 | |
WO2020106019A1 (en) | Electronic device and method for providing in-vehicle infotainment service | |
WO2019182309A1 (ko) | 가전 기기의 통신 네트워크를 설정하는 방법 및 서버 | |
WO2020017767A1 (en) | Method and device for controlling access of application | |
WO2020080780A1 (en) | Electronic device for executing multiple operating systems and method of controlling same | |
WO2019223600A1 (zh) | 蓝牙音频传输方法、装置及计算机可读存储介质 | |
WO2020171465A1 (en) | Electronic device and application managing method thereof | |
WO2019039707A1 (en) | METHOD FOR CONFIGURING ACTION OF AN EXTERNAL DEVICE AND ELECTRONIC DEVICE SUPPORTING THE SAME | |
WO2020013639A1 (ko) | 소유권을 등록하는 전자 장치 및 방법 | |
WO2019117561A1 (ko) | 외부 장치에 따라 다른 서비스를 제공하는 전자 장치 | |
WO2021158037A1 (en) | Electronic device for task scheduling when application is run, method of operating the same, and storage medium | |
WO2020262990A1 (en) | Display apparatus and control method thereof | |
WO2023090863A1 (ko) | 전자 장치 및 그 동작 방법 | |
WO2018105965A1 (en) | Vehicle operating method and vehicle operating apparatus | |
WO2022163894A1 (ko) | Esim (embedded subscriber identity module) profile을 활용하여 네트워크에 접속하는 방법 및 전자 장치 | |
WO2021215764A1 (ko) | 데이터를 전송하는 방법 및 이를 지원하는 전자 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23846858 Country of ref document: EP Kind code of ref document: A1 |