KR20170055180A - 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법 - Google Patents
멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법 Download PDFInfo
- Publication number
- KR20170055180A KR20170055180A KR1020150158033A KR20150158033A KR20170055180A KR 20170055180 A KR20170055180 A KR 20170055180A KR 1020150158033 A KR1020150158033 A KR 1020150158033A KR 20150158033 A KR20150158033 A KR 20150158033A KR 20170055180 A KR20170055180 A KR 20170055180A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- module
- operating system
- available
- information
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- 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/54—Interprogram communication
-
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- 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/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/441—Multiboot arrangements, i.e. selecting an operating system to be loaded
-
- 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/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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
-
- 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/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Computer Security & Cryptography (AREA)
Abstract
본 개시는 다중 운영체제(OS)가 실행되는 전자장치에서 호스트 운영시스템 및 게스트 운영시스템 간 동적 메모리 관리 방법을 제공한다. 동적 메모리 관리 방법은, 호스트 운영시스템과 게스트 운영시스템의 가용 메모리 상황에 따라, 게스트 운영시스템이 게스트 운영시스템의 메모리를 호스트 운영시스템으로 전달 및 전달한 메모리를 게스트 운영시스템으로 회수하는 것을 직접 판단하여 호스트 운영시스템에 실행을 요청할 수 있다. 또한, 게스트 운영시스템의 메모리 가용 상태 정보에 따라, 호스트 운영시스템에 요청하여 호스트 운영시스템의 메모리 정보를 지정된 수집 주기에 수집할 수 있다. 또한, 호스트 운영시스템이 게스트 운영시스템의 요청에 따라 게스트 운영시스템의 동적 메모리를 할당할 수 있다.
Description
본 개시는 멀티 운영체제를 지닌 전자장치에 관한 것으로서, 더욱 상세하게는, 호스트 운영시스템(host operating system) 및 복수의 게스트 운영시스템(guest operating system)을 지닌 가상화 컴퓨팅 시스템에서, 각각의 운영시스템의 성능을 향상시키도록 호스트 운영시스템과 게스트 운영시스템 사이의 동적 메모리를 관리하는 방법에 관한 것이다.
최근 하나의 디바이스에 복수의 운영시스템을 구동시키는 가상화 기술이 태블릿 PC, 스마트폰, 및 스마트카 등과 같은 모바일 기기로 확장되고 있다. 종래에는 가상화 기술이 데스크탑 컴퓨터나 특정 산업분야에서 국한되어 응용 개발되었다. 그러나 최근에는, 모바일 플랫폼들이 데스크탑 수준의 확장성을 지원하는 범용 운영시스템(OS, Operating System)로 기술이 진보함으로써, 가상화를 모바일 영역까지 확장하는 시도가 활발이 이루어지고 있다.
가상화(Virtualization) 기술은 물리적 장치를 추상화하여 독립된 실행 환경을 제공한다. 가상화를 이용하여 하나의 전자장치에 두 개 이상의 운영시스템이 구동하는 컴퓨팅 시스템에서는, 호스트 운영 시스템(Host Operating System)과 호스트 운영 시스템 환경 내의 가상 머신(Virtual Machine)에서 작동하는 게스트 운영 시스템(Guest Operating System)이 마치 별개의 운영시스템처럼 실행될 수 있다. 이때, 가상 머신에서 동작하는 게스트 OS는 호스트 OS와 전자장치의 CPU, 메모리, 저장공간 등을 서로 공유하고 분배한다.
종래에는, 예를 들어, 복수의 운영 시스템을 사용하는 태블릿 PC 또는 스마트폰의 경우, 어플리케이션의 기능 및 최근 실행 순으로 어플리케이션의 중요도를 부여하였다. 이때, 호스트 OS의 가용 메모리가 부족할 경우, 메모리 사용량이 많고 우선 순위가 낮은 어플리케이션은 실행 중지(kill)된다. 따라서, 호스트 OS의 어플리케이션 형태로 실행되는 가상머신의 게스트 OS는 메모리 사용량이 많기 때문에, 호스트 OS의 메모리가 부족할 경우 종료(kill)되는 가능성이 높은 문제점이 있다. 즉, 게스트 OS는 예상치 않은 비정상 종료를 하게 되는 경우가 발생하게 된다.
이에 따라, 복수의 OS를 사용하는 전자 장치에서, 호스트 운영시스템 및 게스트 운영시스템은 한정된 리소스 및 메모리를 관리하여 각각의 운영시스템의 성능을 향상시킬 수 있도록 하는 기술이 필요하게 된다.
본 개시는 호스트 운영시스템(host operating system) 및 복수의 게스트 운영시스템(guest operating system)을 지닌 가상화 컴퓨팅 시스템을 가진 전자장치에서 각각의 운영시스템의 성능을 향상시키도록 호스트 운영시스템과 게스트 운영시스템 사이의 동적 메모리를 관리하는 방법 및 이러한 방법을 지닌 전자장치를 제공하는 데 목적이 있다.
상기와 같은 목적을 달성하기 위한 본 개시의 일 실시 예에 따른, 다중 운영시스템(OS, Operating System)이 실행되는 전자 장치는, 제1 OS와 제2 OS의 가용 메모리 상황에 따라 상기 제1 OS의 메모리를 상기 제2 OS로 전달 및 상기 전달한 메모리를 회수하는 것을 직접 판단하여 상기 제2 OS에 상기 전달 및 회수의 실행을 요청하는 제1 메모리 관리 모듈; 상기 제1 OS의 메모리 가용 상태 정보를 수집하고, 상기 제2 OS에 요청하여 상기 제2 OS의 메모리 정보를 지정된 수집 주기(interval)에 수집하는 상기 제1 상태 수집 모듈; 상기 제2 OS가 상기 제1 OS의 요청에 따라 상기 제1 OS의 동적 메모리를 할당하는 메모리 할당 모듈; 상기 제2 OS의 메모리 가용 상태 정보를 수집하는 제2 상태 수집 모듈; 및 상기 동적 메모리 할당 정보를 바탕으로, 상기 제1 OS의 메모리를 전달받거나 상기 전달받은 메모리를 상기 제1 메모리로 돌려주어 상기 제2 OS의 메모리를 관리하는 제2 메모리 관리 모듈을 포함한다.
상기 제1 OS 메모리 관리 모듈은, 상기 제1 OS와 상기 제2 OS의 가용 메모리 상태 정보를 판단하고, 상기 제2 OS가 메인으로 실행되고, 상기 제1 OS가 서브로 실행될 때, 상기 제1 OS의 가용 메모리를 상기 제2 OS가 사용하도록 상기 메모리 할당 모듈에 전달을 요청하고, 상기 제1 OS가 메인으로 실행될 때, 상기 제1 OS는 상기 메모리 할당 모듈에 상기 전달한 메모리를 회수 요청할 수 있다.
상기 제1 메모리 관리 모듈은, 상기 판단된 가용 메모리 상황에 따라, 상기 제1 OS에서 상기 제2 OS로 메모리를 전달 및 최소 가용 메모리양을 결정하고, 상기 판단된 가용 메모리 상황 및 상기 최소 가용 메모리 양을 바탕으로, 상기 제1 OS의 메모리를 상기 제2 OS로 전달 및 회수 요청 중 하나를 결정할 수 있다.
상기 최소 가용 메모리양은 상기 제1 OS의 어플리케이션 실행을 위한 최소 단위의 가용 메모리양으로 상기 제1 OS에 의해 지정될 수 있고, 상기 지정된 가용 메모리양에 따라, 상기 제1 OS는 상기 제2 OS에 메모리 회수 요청을 할 수 있으며, 상기 지정된 가용 메모리양은, 상기 어플리케이션의 평균 사용량에 따라 결정될 수 있다.
상기 전달 또는 회수 결정은, 상기 제1 OS가 상기 제2 OS로 메모리 전달 또는 회수 여부를 판단하고, 판단 결과에 따라 상기 제2 OS의 상기 메모리 할당 모듈에 요청할 수 있다.
상기 제1 OS는 복수 개의 제1 OS일 수 있고, 상기 복수개의 제1 OS는, 각 제1 OS에 설치된 제1 메모리 관리모듈이 분산 컴퓨팅으로 상기 제1 OS의 메모리를 상기 제2 OS로 전달 또는 상기 제1 OS로 회수 여부를 결정할 수 있다.
상기 수집 주기는, 상기 제1 OS 및 상기 제2 OS의 메모리 부족 상태근접 여부 및 메모리 사용량 변동 여부에 따라 결정될 수 있고, 상기 제1 OS는, 상기 제1 OS 및 상기 제2 OS의 메모리 부족 이벤트가 발생 시, 상기 지정된 수집 주기를 기다리지 않고 상기 제1 메모리 관리 모듈을 실행할 수 있다.
상기 메모리 할당 모듈은, 상기 제1 OS의 요청에 따라, 상기 제1 OS의 메모리를 상기 제2 OS로 할당하거나, 상기 제1 OS로 상기 할당된 메모리의 회수를 실행하고, 상기 제1 OS가 복수 개일 때, 상기 제1 OS의 메모리를 다른 제1 OS로 할당할 수 있다.
상기 제2 메모리 상태 수집 모듈은, 상기 제2 OS의 상태 변화가 발생할 때, 상기 제2 OS의 메모리 가용 상태 정보를 수집하고, 상기 제1 OS의 상기 정보 요청 시, 상기 제1 OS에 상기 정보를 전달하거나, 또는 상기 제2 OS 메모리 부족 시, 상기 제1 OS에 상기 제2 OS의 메모리 부족 상태를 전달할 수 있다.
상기 제1 OS는 게스트 운영시스템이고, 상기 제1 메모리 관리 모듈 및 제1 상태 수집 모듈은, 가상 머신의 상기 게스트 운영시스템 내에서 실행되고, 상기 제2 OS는 호스트 운영시스템이고, 상기 제2 메모리 관리 모듈, 상기 메모리 할당 모듈, 및 상기 제2 상태 수집 모듈은, 상기 호스트 운영시스템 내에서 실행될 수 있다.
한편, 본 개시의 다른 실시예에 의하면,다중 운영 시스템(OS, Operating System)이 실행되는 전자장치에서 제1 OS 및 제2 OS간 동적 메모리 관리 방법은, 상기 제1 OS와 상기 제2 OS의 가용 메모리 상황에 따라 상기 제1 OS의 메모리를 상기 제2 OS로 전달 및 상기 전달한 메모리를 회수하는 것을 직접 판단하여 상기 제2 OS에 상기 전달 및 회수의 실행을 요청하는 제1 메모리 관리 단계; 상기 제1 OS의 메모리 가용 상태 정보를 수집하고, 상기 제2 OS에 요청하여 상기 제2 OS의 메모리 정보를 지정된 수집 주기에 수집하는 제1 상태 수집 단계; 상기 제2 OS가 상기 제1 OS의 요청에 따라 상기 제1 OS의 동적 메모리를 할당하는 메모리 할당 단계; 상기 제2 OS의 메모리 가용 상태 정보를 수집하는 제2 상태 수집 단계; 및 상기 동적 메모리 할당 정보를 바탕으로, 상기 제1 OS의 메모리를 전달받거나 상기 전달받은 메모리를 상기 제1 메모리로 돌려주어 상기 제2 OS의 메모리를 관리하는 제2 메모리 관리 단계;를 포함한다.
상기 제1 메모리 관리 단계는, 상기 제1 OS와 상기 제2 OS의 가용 메모리 상태 정보를 판단하고, 상기 제2 OS가 메인으로 실행되고, 상기 제1 OS가 서브로 실행될 때, 상기 제1 OS의 가용 메모리를 상기 제2 OS가 사용하도록 상기 메모리 할당 모듈에 전달을 요청하고, 상기 제1 OS가 메인으로 실행될 때, 상기 제1 OS는 상기 메모리 할당 모듈에 상기 전달한 메모리를 회수 요청할 수 있다.
상기 제1 메모리 관리 단계는, 상기 판단된 가용 메모리 상황에 따라, 상기 제1 OS에서 상기 제2 OS로 메모리를 전달 및 최소 가용 메모리양을 결정하고, 상기 판단된 가용 메모리 상황 및 상기 최소 메모리 단위를 바탕으로, 상기 제1 OS의 메모리를 상기 제2 OS로 전달 및 회수 요청 중 하나를 결정할 수 있다.
상기 최소 가용 메모리양은, 상기 제1 OS의 어플리케이션 실행을 위한 최소 단위의 가용 메모리양으로 상기 제1 OS에 의해 지정될 수 있고, 상기 지정된 가용 메모리양에 따라, 상기 제1 OS는 상기 제2 OS에 메모리 회수 요청을 할 수 있으며, 상기 지정된 가용 메모리양은, 상기 어플리케이션의 평균 사용량에 따라 결정될 수 있다.
상기 전달 또는 회수 결정은, 상기 제1 OS가 상기 제2 OS로 메모리 전달 또는 회수 여부를 판단하고, 판단 결과에 따라 상기 제2 OS의 상기 메모리 할당 모듈에 요청할 수 있다.
상기 제1 OS는 복수개의 제1 OS일 수 있고, 상기 복수개의 제1 OS는, 각 제1 OS에 설치된 제1 메모리 관리 모듈이 분산 컴퓨팅으로 제1 OS의 메모리를 제2 OS로 전달 또는 회수 여부를 결정할 수 있다.
상기 수집 주기는, 상기 제1 OS 및 상기 제2 OS의 메모리 부족 상태 근접 여부 및 메모리 사용량 변동 여부에 따라 결정될 수 있고, 상기 제1 OS는, 상기 제1 OS 및 상기 제2 OS의 메모리 부족 이벤트가 발생 시, 상기 설정된 수집 주기를 기다리지 않고 상기 메모리 관리 모듈을 실행할 수 있다.
상기 메모리 할당 모듈은, 상기 제1 OS의 요청에 따라, 상기 제1 OS의 메모리를 상기 제2 OS로 할당하거나, 상기 제1 OS로 회수를 실행하도록 메모리를 할당하고, 상기 제1 OS가 복수 개일 때, 상기 제1 OS의 메모리를 다른 제1 OS로 할당할 수 있다.
상기 제2 메모리 상태 수집 모듈은, 상기 제2 OS의 상태 변화가 발생할 때, 상기 제2 OS의 메모리 가용 상태 정보를 수집하고, 상기 제1 OS의 상기 정보 요청 시, 상기 제1 OS에 상기 정보를 전달하거나, 또는 상기 제2 OS 메모리 부족 시, 상기 제1 OS에 상기 제2 OS의 메모리 부족 상태를 전달할 수 있다.
상기 제1 OS는 게스트 운영시스템이고, 상기 제1 메모리 관리 모듈 및 상기 제1 상태 수집 모듈은, 가상 머신의 게스트 운영시스템 내에서 실행되고, 상기 제2 OS는 호스트 운영시스템이고, 상기 제2 메모리 관리 모듈, 상기 메모리 할당 모듈, 및 상기 제2 상태 수집 모듈은, 호스트 운영시스템 내에서 실행될 수 있다.
이상과 같은 본 개시의 실시예에 따른 복수의 운영 시스템을 가진 전자장치 및 이의 동적 메모리 관리 방법은, 게스트 OS가 게스트 OS 및 호스트 OS의 가용 메모리 상태 정보를 수집하여, 게스트 OS가 사용하지 않는 메모리를 호스트 OS에 전달하고, 게스트 OS의 메모리 부족 시 호스트 OS에 전달한 메모리를 회수하여, 호스트 OS 및 게스트 OS의 메모리 부족으로 인한 성능 저하를 방지할 수 있다.
도 1은 본 개시의 일 실시예에 따른, 게스트 운영시스템(제1 OS) 및 호스트 운영시스템(제2 OS)을 가진 전자장치의 예시도,
도 2는 본 개시의 일 실시예에 따른, 가상화 컴퓨팅 시스템의 일반적인 블록도,
도 3은 본 개시의 일 실시예에 따른, 제1 운영 시스템 및 제2 운영 시스템의 블록도,
도 4는 본 개시의 일 실시예에 따른, 제1 운영 시스템이 메인으로 실행 중일 때 동적 메모리 관리를 나타내는 도면,
도 5는 본 개시의 일 실시예에 따른, 제1 운영 시스템이 서브로 실행 중일 때 동적 메모리 관리를 나타내는 도면,
도 6은 본 개시의 일 실시예에 따른, 동적메모리 관리를 나타내는 순서도,
도 7a 및 도 7b는 본 개시의 일 실시예에 따른, 종래 기술 및 본 개시에서 제1 OS에서 제2 OS로 메모리를 전달 및 회수 요청하기 위한 최소의 메모리 단위에 따른 메모리 전달 및 회수 요청 빈도를 나타내는 그래프, 그리고
도 8은 본 개시의 일 실시예에 따른, 전자장치의 간단한 블록도이다.
도 2는 본 개시의 일 실시예에 따른, 가상화 컴퓨팅 시스템의 일반적인 블록도,
도 3은 본 개시의 일 실시예에 따른, 제1 운영 시스템 및 제2 운영 시스템의 블록도,
도 4는 본 개시의 일 실시예에 따른, 제1 운영 시스템이 메인으로 실행 중일 때 동적 메모리 관리를 나타내는 도면,
도 5는 본 개시의 일 실시예에 따른, 제1 운영 시스템이 서브로 실행 중일 때 동적 메모리 관리를 나타내는 도면,
도 6은 본 개시의 일 실시예에 따른, 동적메모리 관리를 나타내는 순서도,
도 7a 및 도 7b는 본 개시의 일 실시예에 따른, 종래 기술 및 본 개시에서 제1 OS에서 제2 OS로 메모리를 전달 및 회수 요청하기 위한 최소의 메모리 단위에 따른 메모리 전달 및 회수 요청 빈도를 나타내는 그래프, 그리고
도 8은 본 개시의 일 실시예에 따른, 전자장치의 간단한 블록도이다.
본 명세서에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 개시를 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 명세서에서 사용되는 기술적 용어는 본 명세서에서 특별히 다른 의미로 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 명세서에서 사용되는 기술적인 용어가 본 개시의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 개시에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 구성요소에 대한 접미사 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다.
또한, 본 명세서에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 개시의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하에서는, 첨부된 도면을 참조하여 본 개시에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 개시를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 개시의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 개시의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
이하에서는, 본 개시의 실시예를 첨부도면을 참조하여 상세히 설명하기로 한다. 도 1은 본 개시의 일 실시예에 따른, 호스트 운영시스템(101) 및 복수의 어플리케이션(103-n)을 가진 게스트 운영시스템(102)을 가진 전자장치(100)의 예시도이다. 본 개시의 일 실시예에 따라, 호스트 운영시스템(101)은 제2 운영시스템(제2 OS)일 수 있고, 게스트 운영시스템(102)은 제1 운영시스템(제1 OS)일 수 있다.
또한, 호스트 운영시스템(101) 및 게스트 운영시스템(102)은 각각의 운영시스템 내에서 다양한 데이터와 어플리케이션을 실행할 수 있다. 게스트 운영시스템(102)은 가상 머신(Virtual Machine) 내에서 동작하는 운영시스템일 수 있다. 이때, 호스트 운영시스템(101) 및 게스트 운영시스템(102)은 전자장치(100)의 CPU(미도시), 메모리(미도시), 및 저장공간(미도시)을 공유할 수 있다.
본 개시의 일 실시예에 따라, 게스트 운영시스템(102)은 게스트 운영시스템(102)에서 사용 중이지 않는 메모리를 호스트 운영시스템(101)에 전달할 수 있다. 또한, 게스트 운영시스템(102)이 어플리케이션을 실행하기 위하여 메모리가 필요할 경우, 게스트 운영시스템(102)은 호스트 운영시스템(101)에 전달한 메모리를 회수 요청하여 돌려받을 수 있다.
도 1을 참조하면, 본 개시의 일 실시예에 따라, 전자장치(100)는 호스트 운영시스템(101) 및 게스트 운영시스템(102)을 동시에 가질 수 있다. 또한, 전자장치(100)는 하나의 호스트 운영시스템(101)과 복수의 게스트 운영시스템(102-n)(미도시)을 가질 수 있다.
본 개시의 일 실시예로, 사용자에 의하여 게스트 운영시스템(102)에 의해 실행되는 어플리케이션이 선택되면, 게스트 운영시스템(102) 내에서 동작하는 어플리케이션들이 전자장치(100)의 메인 디스플레이에서 실행되고, 호스트 운영시스템(101)에 의해 실행되는 어플리케이션은 전자장치(100)의 화면의 서브에서 동작하거나 동작을 중지할 수 있다. 즉, 전자장치(100)는 사용자에 의해 선택된 운영시스템을 통하여 선택된 어플리케이션을 실행할 수 있다.
구체적으로, 본 개시의 일 실시예로, 전자장치(100)는 스마트폰, 태블릿 PC 및 스마트카 등의 모바일 장치일 수 있다. 또한, 본 개시의 일 실시예로, 호스트 운영시스템(101) 및 게스트 운영시스템(102)은 모바일 플랫폼 등 다양한 운영시스템이 될 수 있다. 이때, 복수의 어플리케이션(103-n)은 게스트 운영시스템(102)에서 제공하는 어플리케이션들일 수 있다.
도 2는 본 개시의 일 실시예에 따른, 가상화 컴퓨팅 시스템의 일반적인 블록도이다. 가상화 컴퓨팅 환경은 하이퍼바이저의 위치에 따라 "1 유형(type 1)"과 "2 유형(type 2)"로 구분된다. 본 개시에서는 당업자들에게 잘 알려진 통상의 기술에 대해서는 상세한 설명을 생략하도록 하며, 본 개시의 일 실시예에 따른 기술에 대해서 간략히 기술하도록 한다.
도 2를 참조하면, 본 발명의 일 실시예에 따라, 전자장치(100)는 가상화 기술 중 "2 유형(type 2)"의 가상 컴퓨팅 환경이 적용될 수 있다.
"2 유형(type 2)"의 가상화 기술을 적용한 가상 컴퓨팅 환경은 최하위에 CPU(Central Processing Unit)(미도시), 메모리(미도시), 입출력 장치(미도시) 등을 포함하는 하드웨어(미도시)가 위치한다.
하드웨어(미도시) 위에는 호스트 운영시스템(200)이 위치하며, 호스트 운영시스템(200) 위에 하이퍼바이저(Hypervisor)(230) 또는 가상머신 모니터(미도시)가 위치한다.
하이퍼바이저(230)는 다시 가상 머신(VM, Virtual Machine)(250)를 통하여 새로운 운영시스템인 게스트 운영시스템(270)이 독립적으로 실행될 수 있는 환경을 제공한다.
즉, "2 유형"의 가상 컴퓨팅 환경에서, 호스트 운영체제(210)에서 실행되는 어플리케이션(미도시)과 게스트 운영시스템(270) 상에서 실행되는 어플리케이션(290)은 가상적으로 서로 다른 물리적 공간에서 실행되는 효과를 제공한다.
따라서, 두 개의 서로 다른 운영시스템(호스트 OS 및 게스트 OS)이 실제로는 동일한 하드웨어(미도시)를 공유하면서 가상의 서로 다른 물리적 공간에서 동시에 동작될 수 있다.
본 개시의 일 실시예에서는, 게스트 운영시스템(270)이 하나가 도시되었으나, 게스트 운영시스템(270)은 복수 개로 동작할 수 있다. 즉, N개의 가상 머신(250n) 위에 각 가상머신(250n)에 대응하는 N개의 게스트 운영시스템(270n)이 위치할 수 있다. 또한, N개의 게스트 운영시스템(270n)에서 각 게스트 운영시스템(270n)에 대응하는 M개의 어플리케이션(290m)이 동작할 수 있다.
도 3은 본 개시의 일 실시예에 따른, 제1 운영 시스템 및 제2 운영 시스템의 블록도이다. 도 3을 참조하면, 제1 운영 시스템은 게스트 OS(102)일 수 있고, 제2 운영시스템은 호스트 OS(101)일 수 있다. 게스트 OS(102)는 가상 머신(미도시) 내에서 동작할 수 있다.
도 3에서, 본 발명의 일 실시예에 따라, 제1 상태수집모듈(310) 및 제1 메모리 관리 모듈(330)은 가상 머신(미도시) 내에 로드된(loaded) 사용자 레벨 어플리케이션(user-level application)일 수 있다. 구체적으로, 제1 상태수집모듈(310)은 제1 OS(102)의 메모리 가용 상태 정보를 수집할 수 있다. 이때, 메모리 가용 상태 정보는 제1 OS(102)에 지정된 메모리 크기(total memory)일 수 있다. 또한, 메모리 가용 상태 정보는, 제1 OS(102)가 지정된 메모리 크기(total memory)중 제1 OS(102) 내에서 동작하는 어플리케이션들을 실행하고 남는 메모리 크기(free memory)일 수 있다. 그리고, 메모리 가용 상태 정보는, 제1 OS(102)가 제2 OS(102)에게 전달할 수 있는 사용 가능한 메모리의 크기(available memory)일 수 있다.
또한, 제1 상태수집모듈(310)은 제2 OS(101)의 제2 상태수집모듈(350)에 요청하여 제2 OS(101)의 메모리 정보를 지정된 수집 주기에 수집할 수 있다. 그리고, 제1 상태수집모듈(310)에서 수집된 정보는 제1 메모리 관리모듈(330)에 전달될 수 있다. 이때, 본 개시의 일 실시예에 따라, 제1 상태수집모듈(310)은 제2 OS(101)의 메모리 정보 수집을 실행할 때, 오버헤드를 최소화하기 위하여 가상 메모리 정보 레지스터 액세스를 통해 수행될 수 있다.
그리고, 제1 상태수집모듈(310)은 제1 OS(102) 및 제2 OS(101)의 메모리 부족 상태(memory pressure)의 근접 여부 및 각 OS(102, 101)의 메모리 사용량 변동에 따라서 제1 OS(102) 및 제2 OS(101)의 메모리 상태 정보를 수집하기 위한 주기를 지정할 수 있다. 이때, 제1 OS(102)는 제1 OS(102) 및 제2 OS(101)의 메모리 상태 정보를 바탕으로, 제1 OS(102)가 제2 OS(101)에 메모리를 전달할 수 있고, 제2 OS(101)에 전달한 메모리를 회수 요청할 수 있다.
그러나, 불필요하게 잦은 상태 정보 수집 및 정보 요청은 CPU의 잦은 처리를 발생시켜 전력을 많이 소모시킬 수 있다. 따라서, 제1 OS(102)의 지정된 메모리(total memory)에서 제2 운영시스템(101)에 전달한 메모리의 양이 제1 OS(102)의 지정된 메모리(total memory)의 지정된 임계값(threshold) 이상일 때, 제1 OS(102)의 잔여 메모리의 변동량에 따라 수집 주기가 변동되도록 할 수 있다.
구체적으로, 예를 들어, 본 발명의 일 실시예에서, 제1 OS(102)는 1GB의 지정된 메모리(total memory)가 할당되어 있을 수 있다. 즉, 사용자가 전자장치(100)에서 제1 OS(102)를 실행하기 위해 선택하면, 제1 OS(102)에는 1GB 크기가 할당되어 1GB 메모리 한도 내에서 제1 OS (102)를 실행할 수 있도록 메모리가 지정될 수 있다.
이때, 예를 들어, 전자 장치(100)가 스마트폰일 때, 사용자가 전자장치(100)에서 제1 OS (102)의 제1 어플리케이션(103-1)를 선택하면, 제1 OS(102)는 지정된 1GB에서 200MB를 제1 어플리케이션(103-1)을 실행하는 데 할당할 수 있다. 또한, 사용자가 제4 어플리케이션(103-4)을 선택하면, 제1 OS(102)는 200MB를 제4 어플리케이션(103-4)을 실행하는 데 할당할 수 있다. 이때, 제1 OS (102)는 1GB 중 400MB의 메모리를 사용하고, 나머지 600MB 중 제2 OS(101)의 메모리 부족 상태에 따라 제2 OS (101)에 전달할 수 있다.
이때, 제1 OS(102)가 제n 어플리케이션(103-n)을 실행하기 위해 사용 중인 메모리 및 제1 OS(102)가 제2 OS (101)에 전달한 메모리의 양이, 제1 OS (102)의 지정된 메모리(total memory)인 1GB 중 지정된 임계값(threshold)인 650MB(총 메모리의 65%)를 초과하면, 제1 상태수집모듈(310)은 제2 상태수집모듈(350)에 제2 OS (101)의 메모리 상태 정보를 요청할 수 있다.
예를 들어, 제1 OS (102)가 지정된 메모리(total memory)의 지정된 임계값(65%)의 95%를 초과하는 메모리가 사용 중이라면, 제1 상태수집모듈(310)은 2초 주기로 제2 OS (101)에 메모리 상태 정보를 요청할 수 있다. 즉, 제1 OS (102)의 지정된 메모리 1GB 중, 제1 OS(102)를 실행하기 위한 메모리 크기로 지정된 임계값인 650MB(65%)의 95%(617MB)이상이 사용 중이면, 제1 OS(102)를 실행하기 위한 메모리 여유분이 부족할 수 있으므로 잦은 주기로 호스트 OS(101)에 상태정보를 요청할 수 있다.
만약, 예를 들어, 제1 OS(102)가 지정된 메모리(total memory)의 지정된 임계값(65%)의 80%를 초과하고 95%이하의 메모리가 사용 중이라면, 제1 상태수집모듈(310)은 4초 주기로 제2 OS(101)에 메모리 상태 정보를 요청할 수 있다. 즉, 제1 OS(102)의 지정된 메모리 1GB 중, 제1 OS(102)를 실행하기 위한 메모리 크기로 지정된 임계값인 650MB(65%)의 80% 내지 95% (520MB 내지 617MB)가 사용 중이면, 제1 OS(102)의 메모리 사용량이 줄어들수록 수집 주기를 4초에 x초씩 더하여(4+x) 수집 주기를 늘려갈 수 있다.
또한, 예를 들어, 제1 OS(102)가 지정된 메모리(total memory)의 지정된 임계값(65%)의 80%이하의 메모리가 사용 중이라면, 제1 상태수집모듈(310)은 10초 주기로 제2 OS(101)에 메모리 상태 정보를 요청할 수 있다. 즉, 제1 OS(102)의 지정된 메모리 1GB 중, 제1 OS(102)를 실행하기 위한 메모리 크기로 지정된 임계값인 650MB(65%)의 80%(520MB) 이하로 사용 중이면, 제1 OS(102)의 메모리에 여유가 많이 있으므로, 수집 주기를 제1 OS(102)의 메모리 사용량이 감소함에 따라 10초에 x초씩 더하여(10+x) 수집 주기를 늘려갈 수 있다.
그러나, 이상에서 예시한 수집 주기는 본 개시를 설명하기 일 실시예일 뿐, 게스트 OS(102)의 지정된 메모리(total memory)는 게스트 OS(102)에 따라 다르게 구현될 수 있다. 또한, 게스트 OS(102)의 지정된 메모리에 대한 임계값(threshold) 및 그에 따른 주기 설정도 게스트 OS(102)의 메모리 사용량과 메모리 변동량에 따라 다양하게 구현될 수 있다.
제1 메모리 관리 모듈(330)은 게스트 운영시스템(102) 내의 커널(미도시)에서 실행될 수 있다. 그러나, 이것은 본 개시를 위한 일 실시예일 뿐, 전자장치(100)가 데스크탑 컴퓨터일 경우, 제1 메모리 관리 모듈(330)은 게스트 운영시스템(102)의 드라이버(미도시)일 수 있다.
그리고, 제1 메모리 관리 모듈(330)은 제1 상태수집모듈에서 수집된 제1 OS(102) 및 제2 OS(101)의 가용 메모리 상황에 따라 제1 OS(102)의 메모리를 제2 OS(101)로 전달하는 것을 판단할 수 있고, 제2 OS(101)에 전달한 메모리를 다시 제1 OS(102)로 회수하도록 판단할 수 있다. 이 때, 제1 메모리 관리 모듈(330)은 판단된 메모리 전달 및 회수 결정을 메모리 할당 모듈(370)에 요청하고, 메모리 할당 모듈(370)은 제2 메모리 관리 모듈(390)에 제1 메모리 관리 모듈(330)로부터 받은 요청을 전달한다. 제1 메모리 관리 모듈(330)은 제2 OS(101)에서 메모리 부족 이벤트가 발생할 시, 메모리 할당 모듈(370)을 거치지 않고 직접 제2 메모리 관리 모듈(390)을 통하여, 제1 OS(102)의 메모리를 제2 OS(101)로 전달할 수 있다. 또한, 제1 메모리 관리 모듈(330)은 제1 OS(102)에서 메모리 부족 이벤트가 발생할 시, 즉시 메모리 할당 모듈(370)에 제1 OS(102)가 제2 OS(101)에 전달한 메모리를 회수하도록 요청할 수 있다.
또한, 제1 메모리 관리 모듈(330)은 제1 OS(102)가 전자장치(100)에서 메인으로 실행되고 있을 때, 메모리 할당 모듈(370)에 요청하여 제1 OS(102)가 제2 OS(101)에 전달한 메모리를 회수할 수 있다. 이때, 제1 메모리 관리 모듈(330)은 제2 OS(101)로부터 전달한 메모리를 돌려받기 위해 회수 요청을 할 때, 제2 OS(101)가 극한의 메모리 부족으로 제2 OS(101) 내에서 실행 중인 주요 서비스들이 중지(kill)되지 않도록 할 수 있다. 즉, 제1 OS(102)의 지정된 최소 가용 메모리와 지정된 임계 메모리를 고려하여 제2 OS(101)로부터 메모리를 돌려받을 수 있도록 구현할 수 있다.
예를 들어, 본 개시의 일 실시예에 따라, 전자장치(100)가 스마트폰일 때, 사용자가 스마트폰(100) 화면에서 제1 OS(102)를 선택할 때, 게스트 OS인 제1 OS(102)는 현재 사용자와 인터렉션(interaction)을 갖는 스마트폰(100) 화면 전면에서 메인으로 실행될 수 있다. 반면, 제2 OS(101)는 현재 사용자와 인터렉션을 갖지 않는 화면 후면에 있을 수 있다. 이때, 제1 OS(102)는 제2 OS(101)에 전달했던 제1 OS(102)의 메모리를 돌려받기 위해 회수 요청을 할 수 있다. 그러나, 제2 OS(101)의 메모리 가용량이 극한의 부족상태일 경우, 제1 OS(102)의 제1 메모리관리모듈은 제2 OS(101) 내에서 실행중인 주요 서비스들(예를 들어, 통화 기능, 알람 기능 들)이 중지(kill)되지 않도록, 제2 OS(101)로부터 회수할 메모리 양을 제어하도록 구현할 수 있다.
반면, 제1 메모리 관리 모듈(330)은 제2 OS(101)가 전자장치(100)에서 메인으로 실행되고 제1 OS(102)는 서브로 실행될 때, 메모리 할당 모듈(370)에 요청하여 제1 OS(102)의 메모리를 제2 OS(101)에 전달할 수 있다.
예를 들어, 본 개시의 일 실시예에 따라, 전자장치(100)가 스마트폰일 때, 사용자가 스마트폰(100) 화면에서 제2 OS(101) 내에서 동작하는 어플리케이션을 선택할 때, 호스트 OS인 제2 OS(101)는 현재 사용자와 인터렉션(interaction)을 갖는 스마트폰(100) 화면 전면에서 메인으로 실행될 수 있다. 반면, 제1 OS(102)는 현재 사용자와 인터렉션을 갖지 않는 화면 후면에 있을 수 있다. 이때, 제1 OS(102)는 제1 OS(102)의 가용 메모리를 최대한 많이 제2 OS(101)에 전달할 수 있다. 그러나, 제1 OS(102)가 실행될 수 있는 최소 가용 메모리양에 도달할 경우, 제1 OS(102)는 제2 OS(101)에 전달했던 메모리를 돌려달라고 회수 요청할 수 있다.
그리고, 제1 메모리 관리 모듈(330)은 제1 상태수집모듈(310)에서 수집된 제1 OS(102) 및 제2 OS(101)의 가용 메모리 상태 정보에 따라, 제1 OS(102)에서 제2 OS(101)로 메모리를 전달 및 전달한 메모리를 제1 OS(102)로 다시 회수하기 위한 최소 가용 메모리 양을 결정할 수 있다. 최소 가용 메모리양은, 제1 OS(102)의 어플리케이션들이 실행되기 위한 최소 단위의 가용 메모리로써, 어플리케이션의 평균 메모리 사용량에 따라 결정될 수 있다. 이때, 최소 단위의 가용 메모리는 제1 OS(102)에 의해 미리 지정될 수 있다.
본 개시의 일 실시예에 따라, 예를 들어, 제1 OS(102)는 1GB의 지정된 메모리를 할당받을 수 있다. 그리고, 제1 OS(102)에 지정된 메모리 1GB의 65%인 650MB를 임계값으로 지정할 수 있다. 그리고, 제1 OS(102)가 제2 OS(101)에 전달한 메모리를 회수하기 위한 최소 가용 메모리양을 64MB로 지정할 수 있다. 이때, 제1 OS(102)는 1GB 중 64MB가 남아있을 때까지, 제1 OS(102)는 제2 OS(101)에 전달한 메모리의 회수 요청을 하지 않을 수 있다. 따라서, 제2 OS(101)의 메모리할당모듈(370)에 메모리 전달 및 회수 요청하는 빈도수가 줄어들어 전력 사용을 줄일 수 있고, 제2 OS(101)는 안정된 메모리 상태에서 어플리케이션을 실행할 수 있다.
반면, 최소 가용 메모리양을 지정하지 않을 경우, 제1 메모리 관리 모듈(330)은 제1 상태수집모듈(310)에서 지정된 임계값(650MB)을 바탕으로, 제2 OS(101)에 메모리 회수 요청을 할 수 있다. 이때, 호스트 OS인 제2 OS(101)가 어플리케이션을 실행하기 위해 메모리 사용량이 많을 경우, 임계값인 650MB를 자주 초과할 수 있다. 이때, 제1 OS(102)는 제2 OS(101)의 메모리할당모듈(370)에 자주 메모리 회수 요청을 할 수 있다.
그러나, 상술한 예시들은, 제1 메모리관리 모듈(330)의 최소 가용 메모리 설정에 대한 설명을 위한 본 발명의 일 실시예일뿐, 본 개시는 게스트 OS(102)의 어플리케이션(103-n) 메모리 평균 사용량에 따라 다양하게 구현될 수 있다.
따라서, 제1 메모리 관리 모듈(330)는 제1 OS(102)가 제2 OS(101)에 전달한 메모리를 회수 요청하기 위한 최소 가용 메모리를 지정함으로써, 제1 메모리 관리 모듈(330)은 제2 OS(101)의 메모리 부족을 인식하는 빈도수를 줄일 수 있다. 또한, 제1 OS(102)가 제2 OS(101)에 메모리 회수 요청하는 빈도수를 줄일 수 있다. 따라서, 제2 OS(101)는 부족한 메모리를 제1 OS(102)로부터 전달받아 안정적으로 어플리케이션을 실행할 수 있고, 요청 빈도수가 줄어들어 전력소모도 줄일 수 있다.
제2 상태수집모듈(350)은 호스트 운영시스템(101)의 커널(미도시) 메모리 관리 시스템에서 실행될 수 있고, 호스트 운영시스템(101)의 사용자 레벨에서 실행될 수 있다. 그러나, 이것은 본 개시를 위한 일 실시예일 뿐, 전자 장치(100)가 데스크탑 컴퓨터일 경우, 제2 상태수집모듈(350)은 호스트 운영시스템(101)의 드라이버에서 실행될 수 있다.
그리고, 제2 상태수집모듈(350)은 제2 OS(101)의 상태(activity) 변화가 발생할 때, 제2 OS(101)의 메모리 가용 상태 정보를 수집할 수 있다. 제2 OS(101)의 상태(activity) 변화는, 예를 들어, 제2 OS(101) 상에서 동작되는 어플리케이션들이 실행 중이거나, 제1 OS(102)가 사용자에 의해 선택되어 실행될 때 발생하는 제2 OS(101)의 메모리 상태 변화일 수 있다.
또한, 제2 상태수집모듈(350)은 제1 OS(102)가 제2 OS(101)의 메모리 상태정보를 요청할 때, 제1 상태수집모듈(310)에 제2 OS(101)의 메모리 상태정보를 전달할 수 있다. 그리고, 제2 상태수집모듈(350)은, 제2 OS(101)의 메모리 부족 시, 제1 상태수집모듈(310)에 메모리 부족 이벤트를 전달하여 제2 OS(101)의 메모리 상태를 파악하도록 할 수 있다.
메모리 할당 모듈(370)은 호스트 운영시스템(101)의 사용자 레벨 어플리케이션에서 실행될 수 있다. 또한, 메모리 할당 모듈(370)은 제1 메모리 관리 모듈(330)의 요청에 따라, 제1 OS(102) 메모리를 제2 OS(101)로 전달하거나, 전달한 메모리를 제1 OS(102)로 다시 회수하는 것을 실행할 수 있다.
메모리 할당 모듈(370)은, 제1 OS(102)가 복수 개일 때, 각 제1 OS(102)에 설치된 제1 메모리 관리모듈(330)이 분산 컴퓨팅으로 제1 OS(102)의 메모리를 제2 OS(101)로 전달 또는 제1 OS(102)의 메모리를 다른 제1 OS(102-n)(미도시)로 전달할 수 있다.
예를 들어, 본 개시의 일 실시예에 따라, 전자 장치(100)는 스마트 폰이고, 제1 OS(102)는 제1 OS이고, 다른 제1 OS(102-1)(미도시)는 기업용 제2 OS이고, 제2 OS(101)는 개인용 제2 OS일 수 있다. 이때, 제1 OS(102)는 1GB의 지정된 메모리 중, 제1 애플리케이션(103-1)을 실행하기 위해 200 MB 사용할 수 있다. 제1 OS(102)는 나머지 800 MB 중 메모리 회수 요청을 위한 최소 가용 메모리 64 MB를 제외한 나머지 메모리를 기업용 제2 OS(102-1)(미도시)에 전달하도록 메모리할당모듈(370)에 요청할 수 있다.
제2 메모리 관리 모듈(390)은, 본 개시의 일 실시예에 따라, 호스트 운영시스템(101)의 커널(미도시)에서 실행될 수 있다. 그러나, 이는 본 개시를 위한 일 실시예일 뿐, 전자장치(100)가 데스크탑 컴퓨터일 경우, 제2 메모리 관리 모듈(390)은 호스트 운영시스템(101)의 드라이버에서 실행될 수 있다.
또한, 제2 메모리 관리 모듈(390)은 메모리 할당 모듈(370)에서 수신한 정보를 바탕으로, 제1 OS(102)로부터 메모리를 전달받을 수 있고, 제1 OS(102)로 메모리를 다시 전달할 수 있다. 즉, 제1 OS(102)에서 메모리 할당모듈(370)을 통해 제2 OS(101)에 메모리 회수 요청을 할 경우, 제2 메모리 관리 모듈(390)은 제1 OS(102)로부터 전달받은 메모리를 제1 메모리관리모듈(330)을 통해 재전달할 수 있다. 그리고, 제2 OS(101)의 메모리가 부족할 때, 제2 메모리관리모듈(390)은 메모리할당모듈(370)을 통하지 않고 직접 제1 메모리관리모듈(330)로부터 제1 OS(102) 메모리를 전달받을 수 있다.
도 4는 본 개시의 일 실시예에 따른, 제1 운영 시스템(102)이 메인으로 실행 중일 때 동적 메모리 관리를 나타내는 도면이다. 도 4를 참조하면, 전자장치(100)에서 제1 OS(102)가 메인으로 실행 중일 때, 제1 OS(102) 내의 제1 메모리 관리모듈(450)은 제2 OS(101)의 메모리 상태 정보를 파악하고(s460), 메모리 할당 모듈(370)에 제1 OS(102)가 제2 OS(101)에 전달한 메모리를 회수 요청할 수 있다(s470).
이때, 제1 메모리 관리 모듈(450)이 메모리할당모듈(410)로부터 전달받은 제2 OS(101)의 메모리 상태(s460)가 극한의 메모리 부족일 때, 제1 메모리 관리 모듈(450)은 제2 OS(101) 내에서 실행 중인 주요 서비스들이 중지(kill)되지 않도록 회수할 메모리 양을 조절하도록 구현할 수 있다. 즉, 제1 OS(102)가 제1 OS(102)의 지정된 최소 가용 메모리와 지정된 임계 메모리를 고려하여 제2 OS(101)로부터 메모리를 돌려받을 수 있도록 구현할 수 있다.
그리고, 메모리 할당 모듈(410)은 제1 메모리 관리모듈(450)로부터 받은 메모리 회수 요청을(s470) 제2 메모리 관리모듈(450)에 전달하고(s480), 호스트 OS인 제2 OS(101)에서 제1 OS(102)로부터 전달받은 메모리를 게스트 OS인 제1 OS(102)로 돌려주어 제1 OS(102)가 요청한 메모리를 회수할 수 있도록(s490) 구현할 수 있다.
예를 들어, 본 개시의 일 실시예에 따라, 전자장치(100)가 스마트폰일 때, 사용자가 스마트폰 화면에서 제1 OS(102)를 선택하면, 제1 OS(102)는 현재 사용자와 인터렉션(interaction)을 갖는 스마트폰(100) 화면 전면에서 메인으로 실행될 수 있다.
반면, 제2 OS(101)는 현재 사용자와 인터렉션을 갖지 않는 화면 후면에 있을 수 있다. 이때, 제1 OS(102)는 제2 OS(101)에 전달했던 제1 OS(102)의 메모리를 돌려받기 위해 회수 요청을 할 수 있다. 그러나, 제2 OS(101)의 메모리 가용량이 극한의 부족상태일 경우, 제1 OS(102)의 제1 메모리 관리모듈(450)은 제2 OS(101) 내에서 실행중인 주요 서비스들(예를 들어, 통화 기능, 알람 기능 들)이 중지(kill)되지 않도록, 제2 OS(101)로부터 회수할 메모리 양을 제어하도록 구현할 수 있다.
도 5는 본 개시의 일 실시예에 따른, 제1 운영 시스템(102)이 서브로 실행 중일 때 동적 메모리 관리를 나타내는 도면이다. 도 5를 참조하면, 전자장치(100)에서 호스트 OS인 제2 OS(101)가 메인으로 실행 중일 때, 제1 OS(102) 내의 제1 메모리 관리모듈(550)은 제2 OS(101)의 메모리 상태 정보를 파악하고(s560), 메모리 할당 모듈(510)에 제1 OS(102)가 제2 OS(101)에 메모리를 전달하도록 요청할 수 있다(s570).
그리고, 메모리 할당 모듈(510)은 제1 메모리 관리 모듈(550)로부터 받은 메모리 전달 요청을 제2 메모리 관리 모듈(530)에 전달하고(s580), 제2 메모리관리모듈(530)은 제1 메모리 관리 모듈(550)로부터 제1 OS(102)의 가용 메모리를 할당받을 수 있다(s580). 이때, 게스트 OS인 제1 OS(102)는 중지(kill)되지 않은 상태로 호스트 OS(101)인 제2 OS 내의 어플리케이션들이 실행될 수 있다. 따라서, 호스트 OS(101)의 메모리 부족으로 인한 게스트 OS(102)의 메모리 전달에 있어서, 게스트 OS(102) 내에서 실행중인 어플리케이션(103-n)들의 예상치 않은 비정상 종료를 방지할 수 있다.
예를 들어, 본 개시의 일 실시예에 따라, 전자장치(100)가 스마트폰일 때, 사용자가 스마트폰 (100)화면에서 제2 OS(101) 내에서 실행 중인 어플리케이션(예, 카메라, 일정관리, 등)을 선택할 때, 호스트 OS인 제2 OS(101)는 현재 사용자와 인터렉션(interaction)을 갖는 스마트폰(100) 화면 전면에서 메인으로 실행될 수 있다.
반면, 제1 OS(102)는 현재 사용자와 인터렉션을 갖지 않는 화면 후면에 있을 수 있다. 이때, 제1 OS(102)는 제2 OS(101)에 제1 OS(102)의 가용 메모리를 전달하도록 요청을 할 수 있다. 그러나, 제1 OS(102)는 화면 후면에서 실행 중이나 제1 OS 어플리케이션(103-n)들이 중지(kill)되지 않도록 지정된 최소 가용 메모리양을 가질 수 있다. 즉, 제1 메모리관리모듈(550)은 제1 OS(102)가 실행하는데 필요한 최소 가용 메모리를 남겨두고, 제2 OS(101)에 메모리를 전달할 수 있도록 구현할 수 있다.
도 6은 본 개시의 일 실시예에 따른, 동적메모리 관리를 나타내는 순서도이다. 도 6을 참조하면, 본 개시의 일 실시예에 따라, s610 단계에서, 전자장치(100)의 제1 OS(102)는, 제1 OS(102) 및 제2 OS(101)의 가용 메모리 상태 정보를 판단할 수 있다(s610). 이때, 제1 OS(102) 및 제2 OS(101)는 각각 OS의 어플리케이션 실행 상태 변화(activity) 및 메모리 변동량에 따른 정보를 수집할 수 있다. 그리고, 제1 OS(102)는 제2 OS(101)에 제2 OS(101)의 메모리 상태 정보를 요청하여 제2 OS(101)의 메모리 상태 정보를 수집할 수 있다.
그리고, 본 개시의 일 실시예에 따라, s630 단계에서, 전자장치(100)의 제1 OS(102)는 제1 OS(102)가 메인으로 실행 중인지, 서브로 실행 중인지 판단할 수 있다. 또한, 본 개시의 일 실시예에 따라, s650 단계에서, 제1 OS(102)에서 수집된 제1 OS(102) 및 제2 OS(101)의 메모리 가용상태 정보 및 제1 OS(102)가 전자장치(100)의 메인에서 실행되고 있는 지에 대한 정보를 바탕으로, 제1 OS(102)는 제1 OS(102)의 메모리를 제2 OS(101)로 전달할 것인지, 제2 OS(101)에 전달한 메모리를 다시 제1 OS(102)가 돌려받도록 회수할 것인지 판단할 수 있다.
또한, 본 개시의 일 실시예에 따라, s670 단계에서, 판단된 메모리 전달 및 회수에 따라, 제1 OS(102)는 제2 OS(101)에 메모리 전달 및 회수를 요청할 수 있다. 본 개시의 일 실시예에 따라, s690 단계에서, 제2 OS(101)는 제1 OS(102)가 제2 OS(101)에 전달한 메모리를 전달받아 제2 OS(101)를 실행하는 데 사용할 수 있고, 제1 OS(102)가 회수 요청한 메모리를 제1 OS(102)에 재전달할 수 있다.
도 7a 및 도 7b는 본 개시의 일 실시예에 따른, 종래 기술 및 본 개시에서 제1 OS(102)에서 제2 OS(101)로 메모리를 전달 및 회수 요청하기 위한 최소의 메모리 단위에 따른 메모리 전달 및 회수 요청 빈도를 나타내는 그래프이다.
도 7a를 참조하면, 본 개시의 일시예에 따른 종래의 기술로, 제1 OS(102)에서 제2 OS(101)로 메모리를 전달 및 전달한 메모리를 제1 OS(102)로 다시 회수하기 위한 최소 가용 메모리 양을 설정하지 않을 때, 제1 OS(102)가 제2 OS(101)에 메모리 회수 요청을 하는 빈도수를 나타내는 그래프이다.
본 개시의 일 실시예에 따라, 예를 들어, 제1 OS(102)가 1GB의 지정된 메모리를 할당받고, 제1 OS(102)에 지정된 메모리 1GB의 65%인 650MB이 제1 OS(102)를 실행하기 위한 임계값으로 지정된 경우일 수 있다. 이때, 제2 OS(101)에서 어플리케이션을 실행하기 위한 메모리 사용량이 많을 경우, 제1 OS(102)는 제2 OS(101)가 사용하는 제1 OS(102)의 메모리가 임계값인 650MB을 초과하는 지점마다 메모리 부족으로 인지(host pressure detect)하여, 제2 OS(101)에 빈번하게 메모리 회수 요청(①, ②, ③, ④, ⑤)을 할 수 있다.
이때, 제1 OS(102)의 잦은 메모리 회수 요청은 프로세서의 동작을 요구하므로 소모전력을 낭비시킬 수 있다. 또한, 제1 OS(102)의 잦은 메모리 회수 요청에 따라, 제2 OS(101)는 제1 OS(102)로 잦은 메모리 반환이 발생할 수 있다. 이에 따라, 제2 OS(101)의 동작이 안정적이지 않을 수 있다.
도 7b를 참조하면, 본 개시의 일 실시예에 따라, 제1 OS(102)가 제2 OS(101)에 전달한 메모리를 회수 요청하기 위한, 제1 OS(102)의 최소 가용 메모리를 64MB로 설정할 수 있다. 이때, 제1 OS(102)는 지정된 1GB 메모리 중 64MB가 남아있을 때까지, 제2 OS(101)에 전달한 메모리의 회수 요청을 하지 않을 수 있다. 따라서, 제2 OS(101)는 제1 OS(102)로부터의 회수 요청(①, ②) 빈도수가 줄어들어 전력 사용을 줄일 수 있다. 또한, 제2 OS(101)는 안정된 메모리 상태에서 어플리케이션을 실행할 수 있다.
그러나, 상술한 실시 예시들은, 본 개시의 최소 가용 메모리 설정에 대한 설명을 위한 일 실시예일뿐, 제1 OS(102)의 최소 가용 메모리는 게스트 OS(102)의 어플리케이션 메모리 평균 사용량에 따라 다양하게 구현될 수 있다.
도 8은 본 개시의 일 실시예에 따른, 전자장치의 간단한 블록도이다. 도 8을 참조하면, 프로세서(710)는 전자장치(100)의 호스트 운영시스템(101), 게스트 운영시스템(102), 메모리(720)를 제어할 수 있다. 메모리(720)는, 호스트 운영시스템(101) 및 게스트 운영시스템(102)을 제어하는 다양한 기능이 구현된 프로그램 및 데이터를 저장할 수 있다. 또한, 메모리(720)는 게스트 운영시스템(102)이 호스트 운영시스템(101)에 전달한 메모리를 회수 요청하기 위하여 지정된 제1 OS의 최소 가용 메모리 사용량에 대한 정보를 저장할 수 있다. 그리고, 메모리(720)는 제1 OS(102)에서 제2 OS(102)의 메모리 상태 정보를 수집할 수 있는 지정된 주기를 저장할 수 있다.
메모리(720)는 전자장치(100)의 동작에 필요한 각종 프로그램 및 데이터를 저장할 수 있다. 메모리는 비휘발성 메모리, 휘발성 메모리, 플래시메모리(flash-memory), 하드디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD) 등으로 구현될 수 있다. 메모리는 프로세서에 의해 액세스되며, 프로세서에 의한 데이터의 독취/기록/수정/삭제/갱신 등이 수행될 수 있다. 본 개시에서 메모리(720)는 메모리, ROM, RAM, 또는 전자장치에 장착되는 메모리 카드(미도시)(예를 들어, micro SD 카드, 메모리 스틱)를 포함할 수 있다. 메모리(720)에는 OS, 커널, 미들웨어, 어플리케이션 등을 포함하는 소프트웨어가 저장될 수 있다.
다양한 실시 예에 따른 장치 또는 방법은, 예컨대, 컴퓨터로 읽을 수 있는 저장매체(computer readable storage medium)에 유지되는(maintain) 프로그램들 중 적어도 하나의 프로그램에 포함된 명령어(instructions)를 실행하는 적어도 하나의 컴퓨터(예: 프로세서)에 의하여 수행될 수 있다.
상기 명령어가 컴퓨터(예: 프로세서)에 의해 실행될 경우, 상기 적어도 하나의 컴퓨터는 상기 명령어에 해당하는 기능을 수행할 수 있다. 이 때, 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 상기 메모리가 될 수 있다.
프로그램은, 예로, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체 (optical media)(예: CD-ROM(compact disc read only memory), DVD (digital versatile disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크 (floptical disk)), 하드웨어 장치(예: ROM (read only memory), RAM (random access memory), 또는 플래시 메모리 등) 등과 같은 컴퓨터로 읽을 수 저장 매체에 포함될 수 있다. 이 경우, 저장 매체는 일반적으로 전자 장치(100)의 구성의 일부로 포함되나, 전자 장치(100)의 포트(port)를 통하여 장착될 수도 있으며, 또는 전자 장치(100)의 외부에 위치한 외부 기기(예로, 클라우드, 서버 또는 다른 전자 기기)에 포함될 수도 있다.
또한, 프로그램은 복수의 저장 매체에 나누어 저장될 수도 있으며, 이 때, 복수의 저장 매체의 적어도 일부는 전자 장치의 외부 기기에 위치할 수도 있다.
명령어는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
또한, 이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시가 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
101: 게스트 운영시스템, 제1 OS
102: 호스트 운영시스템, 제2 OS
102: 호스트 운영시스템, 제2 OS
Claims (20)
- 다중 운영체제(OS)가 실행되는 전자 장치에 있어서,
제1 OS와 제2 OS의 가용 메모리 상황에 따라 상기 제1 OS의 메모리를 상기 제2 OS로 전달 및 상기 전달한 메모리를 회수하는 것을 직접 판단하여 상기 제2 OS에 상기 전달 및 회수의 실행을 요청하는 제1 메모리 관리 모듈;
상기 제1 OS의 메모리 가용 상태 정보를 수집하고, 상기 제2 OS에 요청하여 상기 제2 OS의 메모리 정보를 지정된 수집 주기(interval)에 수집하는 제1 상태 수집 모듈;
상기 제2 OS가 상기 제1 OS의 요청에 따라 상기 제1 OS의 동적 메모리를 할당하는 메모리 할당 모듈;
상기 제2 OS의 메모리 가용 상태 정보를 수집하는 제2 상태 수집 모듈; 및
상기 동적 메모리 할당 정보를 바탕으로, 상기 제1 OS의 메모리를 전달받거나 상기 전달받은 메모리를 상기 제1 메모리로 돌려주어 상기 제2 OS의 메모리를 관리하는 제2 메모리 관리 모듈;을 포함하는 전자장치. - 제1항에 있어서,
상기 제1 OS 메모리 관리 모듈은,
상기 제1 OS와 상기 제2 OS의 가용 메모리 상태 정보를 판단하고,
상기 제2 OS가 메인으로 실행되고, 상기 제1 OS가 서브로 실행될 때, 상기 제1 OS의 가용 메모리를 상기 제2 OS가 사용하도록 상기 메모리 할당 모듈에 전달을 요청하고,
상기 제1 OS가 메인으로 실행될 때, 제1 OS는 상기 메모리 할당 모듈에 상기 전달한 메모리를 회수 요청하는 전자장치. - 제2항에 있어서,
상기 제1 메모리 관리 모듈은,
상기 판단된 가용 메모리 상황에 따라, 상기 제1 OS에서 상기 제2 OS로 메모리를 전달 및 최소 가용 메모리양을 결정하고,
상기 판단된 가용 메모리 상황 및 상기 최소 가용 메모리 양을 바탕으로, 상기 제1 OS의 메모리를 상기 제2 OS로 전달 및 회수 요청 중 하나를 결정하는 전자장치. - 제3항에 있어서,
상기 최소 가용 메모리양은 상기 제1 OS의 어플리케이션 실행을 위한 최소 단위의 가용 메모리양으로 상기 제1 OS에 의해 지정될 수 있고,
상기 지정된 가용 메모리양에 따라, 상기 제1 OS는 상기 제2 OS에 메모리 회수 요청을 할 수 있으며,
상기 지정된 가용 메모리양은, 상기 어플리케이션의 평균 사용량에 따라 결정되는 전자장치. - 제2항에 있어서,
상기 전달 또는 회수 결정은,
상기 제1 OS가 상기 제2 OS로 메모리 전달 또는 회수 여부를 판단하고, 판단 결과에 따라 상기 제2 OS의 상기 메모리 할당 모듈에 요청하는 전자장치. - 제2항에 있어서,
상기 제1 OS는 복수 개의 제1 OS일 수 있고,
상기 복수개의 제1 OS는, 각 제1 OS에 설치된 제1 메모리 관리모듈이 분산 컴퓨팅으로 상기 제1 OS의 메모리를 상기 제2 OS로 전달 또는 상기 제1 OS로 회수 여부를 결정하는 전자장치. - 제1항에 있어서,
상기 수집 주기는, 상기 제1 OS 및 상기 제2 OS의 메모리 부족 상태근접 여부 및 메모리 사용량 변동 여부에 따라 결정될 수 있고,
상기 제1 OS는,
상기 제1 OS 및 상기 제2 OS의 메모리 부족 이벤트가 발생 시, 상기 지정된 수집 주기를 기다리지 않고 상기 제1 메모리 관리 모듈을 실행할 수 있는 전자장치. - 제1항에 있어서,
상기 메모리 할당 모듈은,
상기 제1 OS의 요청에 따라, 상기 제1 OS의 메모리를 상기 제2 OS로 할당하거나, 상기 제1 OS로 상기 할당된 메모리의 회수를 실행하고,
상기 제1 OS가 복수 개일 때, 상기 제1 OS의 메모리를 다른 제1 OS로 할당할 수 있는 전자장치. - 제1항에 있어서,
상기 제2 메모리 상태 수집 모듈은,
상기 제2 OS의 상태 변화가 발생할 때, 상기 제2 OS의 메모리 가용 상태 정보를 수집하고,
상기 제1 OS의 상기 정보 요청 시, 상기 제1 OS에 상기 정보를 전달하거나, 또는 상기 제2 OS 메모리 부족시, 상기 제1 OS에 상기 제2 OS의 메모리 부족 상태를 전달하는 전자장치. - 제1항에 있어서,
상기 제1 OS는 게스트 운영시스템이고, 상기 제1 메모리 관리 모듈 및 상기
제1 상태 수집 모듈은, 가상 머신의 상기 게스트 운영시스템 내에서 실행되고,
상기 제2 OS는 호스트 운영시스템이고, 상기 제2 메모리 관리 모듈, 상기 메모리 할당 모듈, 및 상기 제2 상태 수집 모듈은, 상기 호스트 운영시스템 내에서 실행될 수 있는 전자장치. - 다중 운영체제(OS)가 실행되는 전자장치에서 제1 OS 및 제2 OS간 동적 메모리 관리 방법은,
상기 제1 OS와 상기 제2 OS의 가용 메모리 상황에 따라 상기 제1 OS의 메모리를 상기 제2 OS로 전달 및 상기 전달한 메모리를 회수하는 것을 직접 판단하여 상기 제2 OS에 상기 전달 및 회수의 실행을 요청하는 제1 메모리 관리 단계;
상기 제1 OS의 메모리 가용 상태 정보를 수집하고, 상기 제2 OS에 요청하여 상기 제2 OS의 메모리 정보를 지정된 수집 주기에 수집하는 제1 상태 수집 단계;
상기 제2 OS가 상기 제1 OS의 요청에 따라 상기 제1 OS의 동적 메모리를 할당하는 메모리 할당 단계;
상기 제2 OS의 메모리 가용 상태 정보를 수집하는 제2 상태 수집 단계; 및
상기 동적 메모리 할당 정보를 바탕으로, 상기 제1 OS의 메모리를 전달받거나 상기 전달받은 메모리를 상기 제1 메모리로 돌려주어 상기 제2 OS의 메모리를 관리하는 제2 메모리 관리 단계;를 포함하는 동적 메모리 관리 방법. - 제11항에 있어서,
상기 제1 메모리 관리 단계는,
상기 제1 OS와 상기 제2 OS의 가용 메모리 상태 정보를 판단하고,
상기 제2 OS가 메인으로 실행되고, 상기 제1 OS가 서브로 실행될 때, 상기 제1 OS의 가용 메모리를 상기 제2 OS가 사용하도록 상기 메모리 할당 모듈에 전달을 요청하고,
상기 제1 OS가 메인으로 실행될 때, 상기 제1 OS는 상기 메모리 할당 모듈에 상기 전달한 메모리를 회수 요청하는 동적 메모리 관리 방법. - 제12항에 있어서,
상기 제1 메모리 관리 단계는,
상기 판단된 가용 메모리 상황에 따라, 상기 제1 OS에서 상기 제2 OS로 메모리를 전달 및 최소 가용 메모리양을 결정하고,
상기 판단된 가용 메모리 상황 및 상기 최소 메모리 단위를 바탕으로, 상기 제1 OS의 메모리를 상기 제2 OS로 전달 및 회수 회수 요청 중 하나를 결정하는 동적 메모리 관리 방법. - 제13항에 있어서,
상기 최소 가용 메모리양은, 상기 제1 OS의 어플리케이션 실행을 위한 최소 단위의 가용 메모리양으로 상기 제1 OS에 의해 지정될 수 있고,
상기 지정된 가용 메모리양에 따라, 상기 제1 OS는 상기 제2 OS에 메모리 회수 요청을 할 수 있으며,
상기 지정된 가용 메모리양은, 상기 어플리케이션의 평균 사용량에 따라 결정되는 동적 메모리 관리 방법. - 제12항에 있어서,
상기 전달 또는 회수 결정은,
상기 제1 OS가 상기 제2 OS로 메모리 전달 또는 회수 여부를 판단하고, 판단 결과에 따라 상기 제2 OS의 상기 메모리 할당 모듈에 요청하는 동적 메모리 관리 방법. - 제12항에 있어서,
상기 제1 OS는 복수개의 제1 OS일 수 있고,
상기 복수개의 제1 OS는, 각 제1 OS에 설치된 제1 메모리 관리 모듈이 분산 컴퓨팅으로 상기 제1 OS의 메모리를 제2 OS로 전달 또는 회수 여부를 결정하는 동적 메모리 관리 방법. - 제11항에 있어서,
상기 수집 주기는, 상기 제1 OS 및 상기 제2 OS의 메모리 부족 상태 근접 여부 및 메모리 사용량 변동 여부에 따라 결정될 수 있고,
상기 제1 OS는,
상기 제1 OS 및 상기 제2 OS의 메모리 부족 이벤트가 발생 시, 상기 설정된 수집 주기를 기다리지 않고 상기 메모리 관리 모듈을 실행할 수 있는 다중 동적 메모리 관리 방법. - 제11항에 있어서,
상기 메모리 할당 모듈은,
상기 제1 OS의 요청에 따라, 상기 제1 OS의 메모리를 상기 제2 OS로 할당하거나, 상기 제1 OS로 회수를 실행하도록 메모리를 할당하고,
상기 제1 OS가 복수 개일 때, 상기 제1 OS의 메모리를 다른 제1 OS로 할당할 수 있는 동적 메모리 관리 방법, - 제11항에 있어서,
상기 제2 메모리 상태 수집 모듈은,
상기 제2 OS의 상태 변화가 발생할 때, 상기 제2 OS의 메모리 가용 상태 정보를 수집하고,
상기 제1 OS의 상기 정보 요청 시, 상기 제1 OS에 상기 정보를 전달하거나, 또는 상기 제2 OS 메모리 부족 시, 상기 제1 OS에 상기 제2 OS의 메모리 부족 상태를 전달하는 동적 메모리 관리 방법. - 제11항에 있어서,
상기 제1 OS는 게스트 운영시스템이고, 상기 제1 메모리 관리 모듈 및 상기 제1 상태 수집 모듈은, 가상 머신의 상기 게스트 운영시스템 내에서 실행되고,
상기 제2 OS는 호스트 운영시스템이고, 상기 제2 메모리 관리 모듈, 상기 메모리 할당 모듈, 및 상기 제2 상태 수집 모듈은, 상기 호스트 운영시스템 내에서 실행될 수 있는 전자장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150158033A KR102513961B1 (ko) | 2015-11-11 | 2015-11-11 | 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법 |
PCT/KR2016/006570 WO2017082505A1 (ko) | 2015-11-11 | 2016-06-21 | 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법 |
US15/774,356 US10817332B2 (en) | 2015-11-11 | 2016-06-21 | Electronic device having multi-operating system and method for managing dynamic memory for same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150158033A KR102513961B1 (ko) | 2015-11-11 | 2015-11-11 | 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170055180A true KR20170055180A (ko) | 2017-05-19 |
KR102513961B1 KR102513961B1 (ko) | 2023-03-27 |
Family
ID=58695672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150158033A KR102513961B1 (ko) | 2015-11-11 | 2015-11-11 | 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10817332B2 (ko) |
KR (1) | KR102513961B1 (ko) |
WO (1) | WO2017082505A1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019172622A1 (ko) * | 2018-03-09 | 2019-09-12 | 삼성전자(주) | 전자장치 및 그 제어방법 |
KR20190106623A (ko) * | 2018-03-09 | 2019-09-18 | 삼성전자주식회사 | 전자장치 및 그 제어방법 |
WO2022055261A1 (ko) * | 2020-09-10 | 2022-03-17 | 삼성전자 주식회사 | 메모리를 관리하기 위한 전자 장치, 전자 장치의 동작 방법, 및 비 일시적 저장 매체 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102661703B1 (ko) * | 2016-12-23 | 2024-04-29 | 삼성전자주식회사 | 전자 장치 및 그의 제어 방법 |
US20210165673A1 (en) * | 2019-12-02 | 2021-06-03 | Microsoft Technology Licensing, Llc | Enabling shared graphics and compute hardware acceleration in a virtual environment |
US11580019B2 (en) * | 2020-04-17 | 2023-02-14 | Microsoft Technology Licensing, Llc | Computer memory management in computing devices |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004318540A (ja) * | 2003-04-17 | 2004-11-11 | Hitachi Ltd | 性能情報監視装置、方法およびプログラム |
KR20060023956A (ko) * | 2003-04-09 | 2006-03-15 | 쟈루나 에스에이 | 운영체제 |
KR20070003765A (ko) * | 2003-10-01 | 2007-01-05 | 쟈루나 에스에이 | 운영체제 |
KR20070005917A (ko) * | 2003-09-30 | 2007-01-10 | 쟈루나 에스에이 | 운영체제 |
KR20070083569A (ko) * | 2004-08-18 | 2007-08-24 | 쟈루나 에스에이 | 운영체제 |
KR20110138888A (ko) * | 2010-06-22 | 2011-12-28 | 삼성전자주식회사 | 방송수신장치 및 그의 메모리 관리방법 |
WO2014080495A1 (ja) * | 2012-11-22 | 2014-05-30 | 三菱電機株式会社 | データ収集・転送装置 |
KR101489870B1 (ko) * | 2013-08-19 | 2015-02-06 | 성균관대학교산학협력단 | 가상화 장치 및 그 메모리 관리 방법 |
KR20150118957A (ko) * | 2013-02-22 | 2015-10-23 | 비트데펜더 아이피알 매니지먼트 엘티디 | 가상 머신의 일체성 보호를 위한 메모리 인트로스펙션 엔진 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7433951B1 (en) | 2000-09-22 | 2008-10-07 | Vmware, Inc. | System and method for controlling resource revocation in a multi-guest computer system |
US8015383B2 (en) | 2007-06-27 | 2011-09-06 | International Business Machines Corporation | System, method and program to manage virtual memory allocated by a virtual machine control program |
US8146082B2 (en) * | 2009-03-25 | 2012-03-27 | Vmware, Inc. | Migrating virtual machines configured with pass-through devices |
US8943260B2 (en) * | 2011-03-13 | 2015-01-27 | International Business Machines Corporation | Dynamic memory management in a virtualized computing environment |
US8935506B1 (en) * | 2011-03-31 | 2015-01-13 | The Research Foundation For The State University Of New York | MemX: virtualization of cluster-wide memory |
JP5742410B2 (ja) * | 2011-04-11 | 2015-07-01 | 日本電気株式会社 | フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム |
US9268678B2 (en) | 2011-12-02 | 2016-02-23 | Vmware, Inc. | Memory defragmentation in a hosted hypervisor |
KR101587579B1 (ko) | 2014-02-19 | 2016-01-22 | 한국과학기술원 | 가상화 시스템에서 메모리 조정방법 |
US9582223B2 (en) * | 2014-04-14 | 2017-02-28 | International Business Machines Corporation | Efficient reclamation of pre-allocated direct memory access (DMA) memory |
US9841991B2 (en) * | 2014-05-12 | 2017-12-12 | Netapp, Inc. | Techniques for virtual machine migration |
-
2015
- 2015-11-11 KR KR1020150158033A patent/KR102513961B1/ko active IP Right Grant
-
2016
- 2016-06-21 US US15/774,356 patent/US10817332B2/en active Active
- 2016-06-21 WO PCT/KR2016/006570 patent/WO2017082505A1/ko active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060023956A (ko) * | 2003-04-09 | 2006-03-15 | 쟈루나 에스에이 | 운영체제 |
JP2004318540A (ja) * | 2003-04-17 | 2004-11-11 | Hitachi Ltd | 性能情報監視装置、方法およびプログラム |
KR20070005917A (ko) * | 2003-09-30 | 2007-01-10 | 쟈루나 에스에이 | 운영체제 |
KR20070003765A (ko) * | 2003-10-01 | 2007-01-05 | 쟈루나 에스에이 | 운영체제 |
KR20070083569A (ko) * | 2004-08-18 | 2007-08-24 | 쟈루나 에스에이 | 운영체제 |
KR20110138888A (ko) * | 2010-06-22 | 2011-12-28 | 삼성전자주식회사 | 방송수신장치 및 그의 메모리 관리방법 |
WO2014080495A1 (ja) * | 2012-11-22 | 2014-05-30 | 三菱電機株式会社 | データ収集・転送装置 |
KR20150118957A (ko) * | 2013-02-22 | 2015-10-23 | 비트데펜더 아이피알 매니지먼트 엘티디 | 가상 머신의 일체성 보호를 위한 메모리 인트로스펙션 엔진 |
KR101489870B1 (ko) * | 2013-08-19 | 2015-02-06 | 성균관대학교산학협력단 | 가상화 장치 및 그 메모리 관리 방법 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019172622A1 (ko) * | 2018-03-09 | 2019-09-12 | 삼성전자(주) | 전자장치 및 그 제어방법 |
KR20190106623A (ko) * | 2018-03-09 | 2019-09-18 | 삼성전자주식회사 | 전자장치 및 그 제어방법 |
WO2022055261A1 (ko) * | 2020-09-10 | 2022-03-17 | 삼성전자 주식회사 | 메모리를 관리하기 위한 전자 장치, 전자 장치의 동작 방법, 및 비 일시적 저장 매체 |
Also Published As
Publication number | Publication date |
---|---|
WO2017082505A1 (ko) | 2017-05-18 |
KR102513961B1 (ko) | 2023-03-27 |
US10817332B2 (en) | 2020-10-27 |
US20200249969A1 (en) | 2020-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552272B2 (en) | Maintaining high availability during N-node failover | |
KR102513961B1 (ko) | 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법 | |
US10387202B2 (en) | Quality of service implementation in a networked storage system with hierarchical schedulers | |
JP6219512B2 (ja) | 仮想ハドゥープマネジャ | |
US9183016B2 (en) | Adaptive task scheduling of Hadoop in a virtualized environment | |
US20110196968A1 (en) | Computer system, resource management server for computer system, and resource management method for computer system | |
US9413683B2 (en) | Managing resources in a distributed system using dynamic clusters | |
US8291430B2 (en) | Optimizing system performance using spare cores in a virtualized environment | |
EP2269132B1 (en) | Storage system and control method thereof as well as program | |
US20180139100A1 (en) | Storage-aware dynamic placement of virtual machines | |
US20090150640A1 (en) | Balancing Computer Memory Among a Plurality of Logical Partitions On a Computing System | |
US9852008B2 (en) | Computer-readable recording medium storing execution information notification program, information processing apparatus, and information processing system | |
US9811465B2 (en) | Computer system and cache control method | |
US8677374B2 (en) | Resource management in a virtualized environment | |
US20120137289A1 (en) | Protecting high priority workloads in a virtualized datacenter | |
US10289564B2 (en) | Computer and memory region management method | |
CN110196770B (zh) | 云系统内存数据处理方法、装置、设备及存储介质 | |
US20170019345A1 (en) | Multi-tenant resource coordination method | |
CN103176845A (zh) | 一种虚拟机部署方法、系统和装置 | |
US20230367652A1 (en) | Methods and apparatus to allocate hardware in virtualized computing architectures | |
US20180136958A1 (en) | Storage-aware dynamic placement of virtual machines | |
US20190173770A1 (en) | Method and system for placement of virtual machines using a working set computation | |
US7853757B2 (en) | Avoiding failure of an initial program load in a logical partition of a data storage system | |
CN105340246A (zh) | 一种管理系统资源的方法、装置及设备 | |
JP2010026828A (ja) | 仮想計算機の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |