KR20160132439A - 디바이스 특유의 또는 사용자 특유의 자원 사용 프로파일에 기초한 자원 관리 - Google Patents

디바이스 특유의 또는 사용자 특유의 자원 사용 프로파일에 기초한 자원 관리 Download PDF

Info

Publication number
KR20160132439A
KR20160132439A KR1020167028068A KR20167028068A KR20160132439A KR 20160132439 A KR20160132439 A KR 20160132439A KR 1020167028068 A KR1020167028068 A KR 1020167028068A KR 20167028068 A KR20167028068 A KR 20167028068A KR 20160132439 A KR20160132439 A KR 20160132439A
Authority
KR
South Korea
Prior art keywords
application
computing device
resource usage
amount
resource
Prior art date
Application number
KR1020167028068A
Other languages
English (en)
Other versions
KR102275114B1 (ko
Inventor
티모시 엠. 커츠만
데이빗 에이. 화이트채플
아볼라데 그바데게신
아디나 엠. 트루피네스쿠
제레미 피. 로빈슨
사마스 에이치. 샤
아크힐레쉬 카자
앤드류 클리닉
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160132439A publication Critical patent/KR20160132439A/ko
Application granted granted Critical
Publication of KR102275114B1 publication Critical patent/KR102275114B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • G06F17/3053
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Telephone Function (AREA)

Abstract

애플리케이션과 연관된 포그라운드 프로세스는 물론 컴퓨팅 디바이스 상에서 개별적인 프로세스들로서 실행 중인 애플리케이션과 연관된 하나 이상의 백그라운드 작업들에 의해 사용되는 자원들이 추적된다. 애플리케이션에 의한 자원 사용에 관한 과거 데이터가 애플리케이션에 대한 자원 사용량 - 이는 이어서 저장됨 - 을 예측하는 데 이용된다. 애플리케이션의 차후의 시작은 예측된 자원 사용량이 이용 가능한지를 조건으로 할 수 있다. 예측된 자원 사용량이 이용 가능한 경우, 그것이 애플리케이션에 할당될 수 있고, 애플리케이션이 시작될 수 있다. 애플리케이션이 그 이후에 예측된 자원 사용량을 초과하는 경우, 그와 동시에 실행 중인 다른 프로세스들이 자원을 해제시키기 위해 종료될 수 있다. 애플리케이션이 어떻게 동작하는지에 관계없이, 애플리케이션에 대한 새로운 자원 사용 데이터가 획득되고, 이 새로운 자원 사용 데이터는 그 이후에 예측된 자원 사용량을 조절하기 위해 사용된다.

Description

디바이스 특유의 또는 사용자 특유의 자원 사용 프로파일에 기초한 자원 관리{RESOURCE MANAGEMENT BASED ON DEVICE-SPECIFIC OR USER- SPECIFIC RESOURCE USAGE PROFILES}
현재의 모바일 디바이스, 특히 현재의 저가 모바일 디바이스는 멀티태스킹 시나리오에 의해 심각한 도전을 받고 있다. 규모에서 경쟁력을 갖추기 위해, 모바일 디바이스가 저가 및/또는 저성능 부품들을 사용하여 제조되어야만 하는 경우가 종종 있다. 이것은, RAM(random access memory)과 MMC(Multi Media Card) 둘 다를 포함하는, 모바일 디바이스를 구현하는 데 사용되는 메모리에 대해 특히 그렇다. 이것의 순효과(net effect)는 메모리 관리를 위해 페이징(paging)에 의존하는 종래의 모바일 디바이스가 다수의 프로세스들을 동시에 실행하려고 시도할 때 아주 빨리 갑자기 중단되는 것이다. 이것은 아주 좋지 않은 사용자 경험 및 장애가 있는 멀티태스킹 시나리오를 가져온다. 이 문제점은 시장에서는 감소된 제조 비용을 요구하지만 모바일 디바이스용으로 개발 중인 애플리케이션 및 운영 체제가 점점 더 커지게 됨에 따라 특히 중요하게 되고 있다.
이전에는, 모바일 디바이스 상에서의 다수의 프로세스들의 동시 실행을 지원하는 데 불충분한 메모리를 가지는 것의 문제가 하기의 방식들 중 하나 이상으로 처리되었다: 메모리 관리를 위해 페이징을 사용하는 것; 모바일 디바이스 상에 보다 많은 메모리를 제공하는 것; 및 애플리케이션 및 운영 체제의 크기에 제한을 두는 것. 앞서 살펴본 바와 같이, 페이징은 아주 좋지 않은 사용자 경험 및 장애가 있는 멀티태스킹 시나리오를 가져올 수 있다. 보다 많은 메모리를 제공하는 것은 모바일 디바이스 비용, 복잡도 및 전력 소비를 끌어올린다. 애플리케이션 및 운영 체제에 크기 제한을 두는 것은 원하는 기능을 개발하여 사용자에게 전달하는 것을 극히 어렵게 만든다. 적어도 이러한 이유들로 인해, 모바일 디바이스에 대한 기존의 메모리 관리 해결책은 결함이 있다. 사용자 경험에 악영향을 미치지 않고 아주 다양한 멀티태스킹 시나리오들을 가능하게 하는 방식으로 현재의 모바일 디바이스들이 다수의 프로세스들을 동시에 실행할 수 있게 하기 위해 보다 나은 메모리 관리 기법들이 필요하다.
모바일 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션에 의한, 휘발성 및 비휘발성 메모리, CPU(central processing unit), I/O(input/output), 네트워크, 전원, 및 센서와 같은, 다양한 자원들의 사용의 추적을 가능하게 하는 시스템, 방법, 장치, 및 컴퓨터 프로그램 제품이 본원에 기술된다. 본원에 기술되는 기법들은 유리하게도 애플리케이션과 연관된 포그라운드 프로세스(foreground process)(예컨대, 애플리케이션에 대한 사용자 인터페이스를 현재 제공하고 있고 컴퓨팅 디바이스와 연관된 디스플레이의 적어도 일부분을 차지하고 있는 프로세스)에 의해 사용되는 자원은 물론, 컴퓨팅 디바이스 상에서 개별적인 프로세스들로서 실행 중인 애플리케이션과 연관된 하나 이상의 백그라운드 작업(background task)들에 의해 사용되는 자원 둘 다를 추적하는 것에 의해 애플리케이션에 대한 자원 사용을 추적한다. 애플리케이션에 의한 자원 사용에 관한 과거 데이터가 애플리케이션에 대한 자원 사용량 - 이는 이어서 저장됨 - 을 예측하는 데 이용된다. 애플리케이션의 차후의 시작(launch)은 예측된 자원 사용량이 이용 가능한지를 조건으로 할 수 있다. 예측된 자원 사용량이 이용 가능한 경우, 그것이 애플리케이션에 할당될 수 있고, 애플리케이션이 시작될 수 있다. 애플리케이션이 그 이후에 예측된 자원 사용량을 초과하는 경우, 그와 동시에 실행 중인 다른 프로세스들이 자원을 해제(free up)시키기 위해 종료될 수 있다. 애플리케이션이 어떻게 동작하는지에 관계없이, 애플리케이션에 대한 새로운 자원 사용 데이터가 획득되고, 이 새로운 자원 사용 데이터는 그 이후에 예측된 자원 사용량을 조절하기 위해 사용된다. 이러한 방식으로, 애플리케이션을 위한 자원의 할당이 시간의 경과에 따라 사용자의 사용 패턴에 기초하여 사용자를 위해 자동으로 미세 조정될 수 있고, 컴퓨팅 디바이스는 특히 멀티태스킹 시나리오 동안 보다 나은 사용자 경험 및 개선된 성능을 제공할 수 있다. 다수의 사용자들을 지원하는 컴퓨팅 디바이스의 경우, 각각의 사용자/애플리케이션 조합에 대해 예측된 자원 사용량이 저장될 수 있다.
본원에 기술되는 시스템, 방법, 장치 및 컴퓨터 프로그램 제품은 또한, 특정의 자원 사용 행태와 연관된 때, 장소, 및 이벤트와 같은, 애플리케이션 및/또는 사용자에 의한 자원 사용에 관련된 다른 정보를 추적할 수 있다. 이러한 정보는 유리하게도, 심지어 사용자가 애플리케이션을 시작하려고 시도하기 전에도, 컴퓨팅 디바이스의 자원을 애플리케이션에 예측하여 할당하기 위해 사용될 수 있다. 게다가, 애플리케이션들 및/또는 애플리케이션 데이터가 사용자가 그들에 액세스할 것으로 예상되기 전의 시점에서 메모리에 로딩될 수 있다.
상세하게는, 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법이 본원에 기술되어 있다. 자원은, 예를 들어, 휘발성 또는 비휘발성 메모리 자원, CPU 자원, I/O 자원, 네트워크 자원, 전원 자원, 및 센서 자원 중 적어도 하나를 포함할 수 있다. 본 방법에 따르면, 컴퓨팅 디바이스에 의해 실행되고 있는 동안 애플리케이션의 제1 인스턴스에 의해 사용되는 자원의 제1 양이 결정된다. 제1 양을 결정하는 단계는 제1 애플리케이션과 연관된 포그라운드 프로세스 및 애플리케이션의 제1 인스턴스와 연관된 하나 이상의 백그라운드 작업들에 의해 사용되는 자원의 양을 결정하는 단계를 포함할 수 있다. 애플리케이션에 대한 제1 예측된 자원 사용량이 제1 양에 적어도 기초하여 계산된다. 제1 예측된 자원 사용량이 데이터 저장소에 저장된다. 이어서, 컴퓨팅 디바이스에 의해 실행될 애플리케이션의 제2 인스턴스에 할당될 자원의 제2 양이 데이터 저장소에 저장된 제1 예측된 자원 사용량에 적어도 기초하여 결정된다.
전술한 방법의 하나의 실시예에서, 제1 양에 적어도 기초하여 애플리케이션에 대한 제1 예측된 자원 사용량을 계산하는 단계는 제1 양을 애플리케이션의 하나 이상의 이전에 실행된 인스턴스들과 연관된 하나 이상의 이전에 결정된 양들과 비교하는 것에 의해 애플리케이션에 대한 최대 자원 사용량을 획득하는 단계, 및 최대 자원 사용량에 기초하여 제1 예측된 자원 사용량을 계산하는 단계를 포함한다.
대안의 실시예에서, 제1 양에 적어도 기초하여 애플리케이션에 대한 제1 예측된 자원 사용량을 계산하는 단계는 제1 양 및 애플리케이션의 이전에 실행된 인스턴스들과 연관된 하나 이상의 이전에 결정된 양들에 기초하여 애플리케이션에 대한 평균 자원 사용량을 획득하는 단계, 및 평균 자원 사용량에 기초하여 제1 예측된 자원 사용량을 계산하는 단계를 포함한다. 또한 이 실시예에 따르면, 애플리케이션에 대한 평균 자원 사용량을 획득하는 단계는 제1 곱(first product)을 획득하기 위해 제1 양을 제1 가중 인자와 곱하는 단계, 제2 곱(second product)을 획득하기 위해 적어도 하나 이상의 이전에 결정된 양들에 기초하여 획득된 이동 평균 양(running average amount)을 제2 가중 인자와 곱하는 단계, 및 제1 곱과 제2 곱을 합산하는 단계를 포함할 수 있다. 제1 가중 인자는, 구현에 따라, 제2 가중 인자보다 크거나, 그보다 작거나, 그와 같을 수 있다.
전술한 방법은 또한 자원의 제2 양이 현재 이용 가능하지 않은 것으로 결정하는 단계와, 그에 응답하여, 애플리케이션의 제2 인스턴스의 실행을 방지하는 것과 같은 특정 조치들을 수행하는 단계, 및/또는 컴퓨팅 디바이스 상에서 현재 실행 중인 하나 이상의 프로세스들을 종료시키는 단계를 포함할 수 있다.
전술한 방법은 컴퓨팅 디바이스에 의해 실행되는 동안 애플리케이션의 제2 인스턴스에 의해 사용되는 자원의 양이 제2 양을 초과하는 것으로 결정하는 단계와, 그에 응답하여, 컴퓨팅 디바이스 상에서 동시에 실행 중인 하나 이상의 프로세스들을 종료시키는 단계를 추가로 포함할 수 있다.
전술한 방법의 다른 실시예에서, 결정하는 단계, 계산하는 단계, 및 저장하는 단계는 제1 사용자를 위해 컴퓨팅 디바이스에 의해 실행되고 있는 동안 애플리케이션의 제1 인스턴스에 의해 사용되는 자원의 제1 양을 결정하는 단계, 제1 양에 적어도 기초하여 애플리케이션 및 제1 사용자에 대한 제1 예측된 자원 사용량을 계산하는 단계, 제1 예측된 자원 사용량을 데이터 저장소에 저장하는 단계, 및 데이터 저장소에 저장된 제1 예측된 자원 사용량에 적어도 기초하여 제1 사용자를 위해 컴퓨팅 디바이스에 의해 실행될 애플리케이션의 제2 인스턴스에 할당될 자원의 제2 양을 결정하는 단계를 포함한다. 이 실시예에 따르면, 본 방법은 제2 사용자를 위해 컴퓨팅 디바이스에 의해 실행되고 있는 동안 애플리케이션의 제3 인스턴스에 의해 사용되는 자원의 제3 양을 결정하는 단계, 제3 양에 적어도 기초하여 애플리케이션 및 제2 사용자에 대한 제2 예측된 자원 사용량을 계산하는 단계, 제2 예측된 자원 사용량을 데이터 저장소에 저장하는 단계, 및 데이터 저장소에 저장된 제2 예측된 자원 사용량에 적어도 기초하여 제2 사용자를 위해 컴퓨팅 디바이스에 의해 실행될 애플리케이션의 제4 인스턴스에 할당될 자원의 제4 양을 결정하는 단계를 추가로 포함한다.
컴퓨터 프로그램 제품이 또한 본원에 기술되어 있다. 컴퓨터 프로그램 제품은, 컴퓨팅 디바이스의 적어도 하나의 프로세서에 의해 실행될 때, 적어도 하나의 프로세서로 하여금 동작들을 수행하게 하는 컴퓨터 프로그램 논리가 기록되어 있는 컴퓨터 판독 가능 메모리를 포함한다. 동작들은 애플리케이션을 시작하라는 요청을 수신하는 동작, 애플리케이션에 대한 예측된 자원 사용량을 획득하는 동작 - 예측된 자원 사용량은 컴퓨팅 디바이스에 의한 애플리케이션의 하나 이상의 이전 실행들 동안 컴퓨팅 디바이스의 자원의 사용의 모니터링에 기초함 -, 예측된 자원 사용량을 현재 이용 가능한 자원의 양과 비교하는 것에 의해 자원의 충분한 양이 이용 가능한지를 결정하는 동작, 및 자원의 충분한 양이 이용 가능한 것으로 적어도 결정한 것에 응답하여 애플리케이션이 시작하도록 허용하는 동작을 포함한다. 자원은 휘발성 또는 비휘발성 메모리 자원, CPU 자원, I/O 자원, 네트워크 자원, 전원 자원, 및 센서 자원 중 하나를 포함할 수 있다. 애플리케이션에 대한 자원의 사용의 모니터링은 애플리케이션과 연관된 포그라운드 프로세스 및 애플리케이션과 연관된 하나 이상의 백그라운드 작업들에 의한 자원의 사용의 모니터링을 수반할 수 있다.
전술한 컴퓨터 프로그램 제품의 하나의 실시예에서, 동작들은 자원의 충분한 양이 이용 가능하지 않은 것으로 적어도 결정한 것에 응답하여 애플리케이션이 시작하도록 허용하지 않는 동작을 추가로 포함한다.
다른 실시예에서, 동작들은 자원의 충분한 양이 이용 가능하지 않은 것으로 적어도 결정한 것에 응답하여 하나 이상의 프로세스들이 종료되게 하는 동작을 추가로 포함한다.
또 다른 실시예에서, 동작들은, 시작된 후에 애플리케이션에 의해 사용되는 자원의 양이 예측된 자원 사용량을 초과하는 것으로 결정한 것에 응답하여, 컴퓨팅 디바이스 상에서 동시에 실행 중인 하나 이상의 프로세스들을 종료시키는 동작을 추가로 포함한다.
또 다른 실시예에서, 수신하는 단계는 제1 사용자를 위해 애플리케이션을 시작하라는 요청을 수신하는 단계를 포함하고, 획득하는 단계는 애플리케이션 및 제1 사용자에 대한 예측된 자원 사용량을 획득하는 단계를 포함한다.
컴퓨팅 디바이스 상에 구현되는 시스템이 또한 본원에 기술되어 있다. 본 시스템은 적어도 하나의 프로세서 및 적어도 하나의 프로세서에 의해 액세스 가능한 메모리를 포함한다. 메모리는 적어도 하나의 프로세서에 의한 실행을 위한 콤포넌트들을 저장한다. 콤포넌트들은 애플리케이션 및 사용자 중 하나 이상에 의한 컴퓨팅 디바이스의 적어도 하나의 자원의 사용 패턴을 모니터링하고, 사용 패턴과 연관된 정보를 저장하며, 적어도 하나의 프로세서에 의한 적어도 하나의 프로세스의 실행 이전에 자원의 적어도 일부분을 적어도 하나의 프로세스에 예측하여 할당하기 위해 저장된 정보를 사용하기 위해 동작 가능한 자원 관리자를 포함한다. 적어도 하나의 자원은 휘발성 또는 비휘발성 메모리 자원, CPU 자원, I/O 자원, 네트워크 자원, 전원 자원, 및 센서 자원을 포함할 수 있다.
전술한 시스템의 하나의 실시예에서, 자원 관리자는 컴퓨팅 디바이스의 사용자 또는 임의의 다른 엔티티가 애플리케이션을 시작하기 전에 자원의 적어도 일부분을 애플리케이션에 예측하여 할당하기 위해 동작 가능하다. 적어도 하나의 자원이 메모리를 포함하는 전술한 시스템의 다른 실시예에서, 자원 관리자는 또한 컴퓨팅 디바이스의 사용자 또는 임의의 다른 엔티티가 애플리케이션을 시작하기 전에 애플리케이션의 적어도 일부분 또는 애플리케이션과 연관된 데이터를 예측하여 할당된 메모리에 로딩하기 위해 동작 가능하다.
이 발명의 내용은 이하에서 발명을 실시하기 위한 구체적인 내용에 추가로 기술되는 선택된 개념들을 간략화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 발명 요지의 핵심적인 특징들 또는 필수적인 특징들을 언급하는 것으로 의도되어 있지도 않고, 청구된 발명 요지의 범주를 제한하기 위해 사용되는 것으로 의도되어 있지도 않다. 더욱이, 유의할 점은, 청구된 발명 요지가 발명을 실시하기 위한 구체적인 내용 및/또는 본 문서의 다른 섹션들에 기술되는 구체적인 실시예들로 제한되지 않는다는 것이다. 이러한 실시예들은 단지 예시를 위해 본원에 제시되어 있다. 부가의 실시예들이 본원에 포함된 개시 내용에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
본원에 포함되어 명세서의 일부를 형성하는 첨부 도면들은 본 발명의 실시예들을 예시하고, 설명과 함께, 또한 본 발명의 원리들을 설명하고 관련 기술 분야(들)의 통상의 기술자가 본 발명을 제조 및 사용할 수 있게 하는 역할을 한다.
도 1은 일 실시예에 따른, 디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 기초하여 자원 관리를 수행하는 컴퓨팅 디바이스의 블록도.
도 2는 일 실시예에 따른, 디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 따라 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법의 플로우차트.
도 3은 하나의 실시예에 따른, 애플리케이션에 대한 예측된 자원 사용량을 계산하는 방법의 플로우차트.
도 4는 다른 실시예에 따른, 애플리케이션에 대한 예측된 자원 사용량을 계산하는 방법의 플로우차트.
도 5는 일 실시예에 따른, 애플리케이션에 대한 평균 자원 사용량을 획득하는 방법의 플로우차트.
도 6은 도 2에 도시된 플로우차트의 방법에 따라 수행될 수 있는 부가 단계들의 플로우차트.
도 7은 도 2에 도시된 플로우차트의 방법에 따라 수행될 수 있는 부가 단계들의 플로우차트.
도 8은 도 2에 도시된 플로우차트의 방법에 따라 수행될 수 있는 부가 단계들의 플로우차트.
도 9는 일 실시예에 따른, 사용자 특유의 자원 사용 프로파일에 따라 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법의 플로우차트.
도 10은 일 실시예에 따른, 디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 따라 애플리케이션의 시작을 관리하는 방법의 플로우차트.
도 11은 자원을 프로세스들에 예측하여 할당하기 위해 컴퓨팅 디바이스의 자원과 관련한 사용자의 모니터링된 자원 사용 패턴들 및 그로부터 도출된 정보를 사용하는 방법의 플로우차트.
도 12는 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션이 컴퓨팅 디바이스의 자원을 애플리케이션과 연관된 포그라운드 프로세스 및 하나 이상의 백그라운드 작업들에 할당하는 것을 관리하는 데 도움을 줄 수 있게 하는 하나의 방법의 플로우차트.
도 13은 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션이 컴퓨팅 디바이스의 자원을 애플리케이션과 연관된 포그라운드 프로세스 및 하나 이상의 백그라운드 작업들에 할당하는 것을 관리하는 데 도움을 줄 수 있게 하는 다른 방법의 플로우차트.
도 14는 다양한 실시예들을 구현하는 데 사용될 수 있는 예시적인 모바일 디바이스의 블록도.
도 15는 다양한 실시예들을 구현하는 데 사용될 수 있는 예시적인 프로세서 기반 컴퓨터 시스템의 블록도.
본 발명의 특징들 및 장점들은 도면들과 관련하여 살펴볼 때 이하에 기재되는 상세한 설명으로부터 보다 명백하게 될 것이고, 도면들에서 유사한 참조 문자들은 전체에 걸쳐 대응하는 요소들을 나타낸다. 도면들에서, 유사한 참조 번호들은 일반적으로 동일하고, 기능상 유사하며, 그리고/또는 구조상 유사한 요소들을 나타낸다. 요소가 처음으로 나오는 도면은 대응하는 참조 번호에서 가장 왼쪽 숫자(들)에 의해 나타내어져 있다.
I. 서론
이하의 발명을 실시하기 위한 구체적인 내용은 본 발명의 예시적인 실시예들을 나타내는 첨부 도면들을 참조한다. 그렇지만, 본 발명의 범주가 이 실시예들로 제한되지 않고, 그 대신에 첨부된 청구항들에 의해 한정된다. 이와 같이, 예시된 실시예들의 수정된 버전들과 같은, 첨부 도면들에 도시된 것들 이외의 실시예들이 그럼에도 불구하고 본 발명에 포함될 수 있다.
명세서에서 "하나의 실시예", "일 실시예", "예시적인 실시예" 등으로 언급하는 것들은 기술된 실시예가 특정의 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예가 그 특정의 특징, 구조, 또는 특성을 꼭 포함하는 것은 아닐 수 있음을 나타낸다. 더욱이, 이러한 문구들이 꼭 동일한 실시예를 지칭하는 것은 아니다. 게다가, 특정의 특징, 구조, 또는 특성이 일 실시예와 관련하여 기술될 때, 명시적으로 기술되어 있든 그렇지 않든 간에, 관련 기술 분야(들)의 통상의 기술자가 이러한 특징, 구조, 또는 특성을 다른 실시예들과 관련하여 구현하는 것을 알고 있는 것으로 생각된다.
모바일 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션에 의한, 휘발성 및 비휘발성 메모리, CPU, I/O, 네트워크, 전원, 및 센서와 같은, 다양한 자원들의 사용의 추적을 가능하게 하는 시스템, 방법, 장치, 및 컴퓨터 프로그램 제품이 본원에 기술된다. 본원에 기술되는 기법들은 유리하게도 애플리케이션과 연관된 포그라운드 프로세스(예컨대, 애플리케이션에 대한 사용자 인터페이스를 제공하고 컴퓨팅 디바이스와 연관된 디스플레이를 배타적으로 차지하고 있을 수 있는 프로세스)에 의해 사용되는 자원은 물론, 컴퓨팅 디바이스 상에서 개별적인 프로세스들로서 실행 중인 애플리케이션과 연관된 하나 이상의 백그라운드 작업들에 의해 사용되는 자원 둘 다를 추적하는 것에 의해 애플리케이션에 대한 자원 사용을 추적한다. 애플리케이션에 의한 자원 사용에 관한 과거 데이터가 애플리케이션에 대한 자원 사용량 - 이는 이어서 저장됨 - 을 예측하는 데 이용된다. 애플리케이션의 차후의 시작은 예측된 자원 사용량이 이용 가능한지를 조건으로 할 수 있다. 예측된 자원 사용량이 이용 가능한 경우, 그것이 애플리케이션에 할당될 수 있고, 애플리케이션이 시작될 수 있다. 애플리케이션이 그 이후에 예측된 자원 사용량을 초과하는 경우, 그와 동시에 실행 중인 다른 프로세스들이 자원을 해제시키기 위해 종료될 수 있다. 애플리케이션이 어떻게 동작하는지에 관계없이, 애플리케이션에 대한 새로운 자원 사용 데이터가 획득되고, 이 새로운 자원 사용 데이터는 그 이후에 예측된 자원 사용량을 조절하기 위해 사용된다. 이러한 방식으로, 애플리케이션을 위한 자원의 할당이 시간의 경과에 따라 사용자의 사용 패턴에 기초하여 사용자를 위해 자동으로 미세 조정될 수 있고, 컴퓨팅 디바이스는 특히 멀티태스킹 시나리오 동안 보다 나은 사용자 경험 및 개선된 성능을 제공할 수 있다. 다수의 사용자들을 지원하는 컴퓨팅 디바이스의 경우, 각각의 사용자/애플리케이션 조합에 대해 예측된 자원 사용량이 저장될 수 있다.
본원에 기술되는 시스템, 방법, 장치 및 컴퓨터 프로그램 제품은 또한, 특정의 자원 사용 행태와 연관된 때, 장소, 및 이벤트와 같은, 애플리케이션 및/또는 사용자에 의한 자원 사용에 관련된 다른 정보를 추적할 수 있다. 이러한 정보는 유리하게도, 심지어 사용자가 애플리케이션을 시작하려고 시도하기 전에도, 컴퓨팅 디바이스의 자원을 애플리케이션에 예측하여 할당하기 위해 사용될 수 있다. 게다가, 애플리케이션들 및/또는 애플리케이션 데이터가 사용자가 그들에 액세스할 것으로 예상되기 전의 시점에서 메모리에 로딩될 수 있다.
섹션 II는 디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 기초하여 자원 관리를 수행하는 예시적인 컴퓨팅 디바이스는 물론, 연관된 방법들을 기술한다. 섹션 III은 섹션 II의 예시적인 컴퓨팅 디바이스가 또한 멀티 프로세스 애플리케이션에 대한 동적 자원 관리를 어떻게 가능하게 할 수 있는지를 기술한다. 섹션 IV는 본원에 기술되는 자원 관리 특징들을 구현할 수 있는 예시적인 모바일 디바이스를 기술한다. 섹션 V는 본원에 기술되는 자원 관리 특징들을 구현할 수 있는 예시적인 데스크톱 컴퓨터를 기술한다. 섹션 VI는 몇몇 맺음말을 제공한다.
II. 디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 기초하여 자원 관리를 수행하는 예시적인 시스템 및 방법
도 1은 일 실시예에 따른, 디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 기초하여 자원 관리를 수행하는 컴퓨팅 디바이스(100)의 블록도이다. 컴퓨팅 디바이스(100)는 일반적으로 사용자를 위해 애플리케이션을 실행할 수 있는 프로세서 기반 전자 디바이스를 나타내는 것으로 의도되어 있다. 하나의 실시예에서, 컴퓨팅 디바이스(100)는 휴대폰(예컨대, 스마트폰), 랩톱 컴퓨터, 태블릿 컴퓨터, 또는 넷북과 같은 모바일 컴퓨팅 디바이스를 포함한다. 컴퓨팅 디바이스(100)는 생각건대, 웨어러블 컴퓨터(예컨대, 헤드 마운티드 컴퓨터), 휴대용 미디어 플레이어, PDA(personal digital assistant), PNA(personal navigation assistant), 핸드헬드 게임 콘솔, 또는 사용자를 위해 애플리케이션을 실행할 수 있는 임의의 다른 모바일 디바이스와 같은, 다른 유형의 모바일 컴퓨팅 디바이스들을 포함할 수 있다. 컴퓨팅 디바이스(100)의 기능을 포함할 수 있는 모바일 디바이스의 일 예는 도 14를 참조하여 이하에서 논의될 것이다. 다른 실시예에서, 컴퓨팅 디바이스(100)는 사용자를 위해 애플리케이션을 실행할 수 있는 데스크톱 컴퓨터 또는 다른 비모바일 컴퓨팅 플랫폼을 포함한다. 컴퓨팅 디바이스(100)의 기능을 포함할 수 있는 예시적인 데스크톱 컴퓨터는 도 15를 참조하여 이하에서 논의될 것이다.
도 1에 도시된 바와 같이, 컴퓨팅 디바이스(100)는 애플리케이션(102), 운영 체제(104), 및 데이터 저장소(106)를 포함한다. 하나의 실시예에서, 애플리케이션(102) 및 운영 체제(104) 각각은 컴퓨팅 디바이스(100)의 메모리에 저장되고 메모리에 통신 가능하게 연결되는 프로세서(예컨대, 마이크로프로세서 또는 소프트웨어 명령어를 실행하기 위해 동작 가능한 다른 회로)에 의해 메모리로부터 실행되는 소프트웨어 콤포넌트를 포함한다. 이러한 메모리 및 프로세서는 컴퓨팅 디바이스(100)의 일부를 구성하지만, 단지 간단함을 위해 도 1에 도시되지 않다. 또한 이러한 실시예에 따르면, 애플리케이션(102) 및 운영 체제(104) 각각은 컴퓨팅 디바이스(100)의 비휘발성 메모리에 영속적으로 저장되고 이어서 전원이 켜진 컴퓨팅 디바이스(100)의 동작 동안 프로세서에 의해 컴퓨팅 디바이스(100)의 휘발성 메모리로부터 실행하기 위해 휘발성 메모리로 일시적으로 전달될 수 있다.
애플리케이션(102)은 컴퓨팅 디바이스(100)의 사용자를 위해 기능들을 수행하고 그리고/또는 특징들을 제공하기 위해 컴퓨팅 디바이스(100) 상에 설치되고 실행될 수 있는 아주 다양한 컴퓨터 프로그램들 중 임의의 것을 나타내는 것으로 의도되어 있다. 애플리케이션(102)은, 예를 들어 그리고 어떤 제한도 전혀 없이, 전화 애플리케이션, 이메일 애플리케이션, 메시징 애플리케이션, 웹 브라우징 애플리케이션, 달력 애플리케이션, 유틸리티 애플리케이션, 게임 애플리케이션, 소셜 네트워킹 애플리케이션, 음악 애플리케이션, 생산성 애플리케이션, 라이프스타일 애플리케이션, 레퍼런스 애플리케이션(reference application), 여행 애플리케이션, 스포츠 애플리케이션, 내비게이션 애플리케이션, 헬스케어 및 피트니스 애플리케이션, 뉴스 애플리케이션, 사진 애플리케이션, 금융 애플리케이션, 비즈니스 애플리케이션, 교육 애플리케이션, 날씨 애플리케이션, e-리더(e-reader) 애플리케이션, 의료 애플리케이션 등을 나타낼 수 있다.
운영 체제(104)는 컴퓨팅 디바이스(100) 상에서 실행 중인 애플리케이션들을 위해 전체적으로 자원을 관리하고 공용 서비스를 제공하는 한 세트의 컴퓨터 프로그램들을 포함한다. 도 1에 도시된 바와 같이, 운영 체제(104)는 드라이버들(110), 커널(120), 및 시스템 서비스들(130)을 포함한다. 드라이버들(110)은 운영 체제(104)가, CPU, 시스템 메모리, 및 I/O 디바이스들과 같은, 컴퓨팅 디바이스(100)의 다양한 하드웨어 자원들과 상호작용할 수 있게 하는 콤포넌트들을 포함한다. 커널(120)은 컴퓨팅 디바이스(100)의 이러한 하드웨어 자원들 및 다른 자원들을 관리하기 위해 그리고 다른 프로그램들이 이 자원들을 실행하고 사용할 수 있게 하기 위해 드라이버들(110)을 이용한다. 커널(120)은 프로세스들을 CPU에 할당하는 것, 시스템 메모리를 특정의 프로세스에 할당하는 것, 및 I/O 요청들을 적절한 디바이스들에 할당하는 것과 같은 동작들을 수행할 수 있다. 시스템 서비스들(130)은 커널(120)에 의해 할당될 수 있는 다양한 자원들에 대한 애플리케이션들로부터의 요청들에 서비스하기 위해 동작하는 콤포넌트이다.
도 1에 도시된 바와 같이, 커널(120)은 메모리 관리자(122)를 포함한다. 메모리 관리자(122)는 컴퓨팅 디바이스(100)의 시스템 메모리가 어떻게 이용되는지를 제어하고, 다른 프로세스들이 시스템 메모리를 필요로 할 때 시스템 메모리에 액세스할 수 있게 하는 동작들을 수행한다. 동작들 중에서도 특히, 메모리 관리자(122)는, 프로세스들이 물리적으로 이용 가능한 것보다 더 많은 시스템 메모리를 사용할 수 있도록, 가상 주소지정 방식(virtual addressing scheme)을 유지하고 페이징을 수행할 수 있다. 시스템 메모리를 관리하기 위해, 메모리 관리자(122)는 드라이버들(110) 중 하나인 메모리 드라이버(memory driver)(112)와 상호작용한다.
도 1에 추가로 도시된 바와 같이, 시스템 서비스들(130)은 자원 관리자(132)를 포함한다. 본원에서 보다 상세히 논의될 것인 바와 같이, 자원 관리자(132)는 애플리케이션에 할당될 자원의 양을 결정하기 위해 - 이러한 결정은 애플리케이션에 대한 자원 사용 프로파일에 기초할 수 있음 - 그리고, 자원이 이용 가능한 경우, 자원의 양을 할당하기 위해 동작하는 콤포넌트이다. 이하의 설명에서, 애플리케이션에 할당될 자원이 시스템 메모리인 것으로 가정될 것이다 - 그렇지만, 본원에 기술되는 자원 관리 기법들이, CPU, 시스템 메모리 이외의 휘발성 메모리, 비휘발성 메모리, 네트워크 자원, I/O 자원, 전원 자원(예컨대, 배터리 전원 또는 어떤 다른 전원으로부터의 전력)(이들로 제한되지 않음), 및 센서 자원(예컨대, 카메라 또는 마이크로폰)을 비롯한, 컴퓨팅 디바이스(100)의 임의의 다른 자원으로 용이하게 확장될 수 있다는 것을 잘 알 것이다 -.
데이터 저장소(106)는 컴퓨팅 디바이스(100)의 휘발성 또는 비휘발성 메모리에 저장되는 데이터 집합체를 포함한다. 본원에서 설명될 것인 바와 같이, 데이터 저장소(106)는 컴퓨팅 디바이스(100) 상에 설치되고 실행될 수 있는 애플리케이션들에 대한 자원 사용 프로파일들을 저장하기 위해 자원 관리자(132)에 의해 사용된다. 특정의 예시적인 구현들에 따르면, 데이터 저장소(106)는 레지스터 또는 데이터베이스를 포함할 수 있다.
애플리케이션(102)이 (예컨대, 애플리케이션의 사용자 활성화 또는 어떤 다른 이벤트에 응답하여) 시작되어야 할 때, 애플리케이션(102)이 애플리케이션(102)이 제대로 실행하기 위해 필요한 자원들을 할당받아야 한다는 것을 요청하기 위해 애플리케이션(102)을 대신하여 시스템 서비스들(130)에 대한 하나 이상의 시스템 서비스 호출(system service call)들이 행해진다. 호출(들)에 응답하여, 자원 관리자(132)는 필요한 자원들이 이용 가능한지를 결정하기 위해, 그리고 이러한 자원들이 이용 가능한 경우, 자원들이 애플리케이션(102)에 할당되게 하기 위해 동작한다.
시스템 메모리의 경우에, 자원 관리자(132)는 데이터 저장소(106)에 저장될 수 있는 애플리케이션(102)에 대한 자원 사용 프로파일에 액세스하려고 시도하는 것에 의해 애플리케이션(102)에 할당할 시스템 메모리의 양을 결정한다. 일 실시예에서, 애플리케이션(102)에 대한 이러한 자원 사용 프로파일은 애플리케이션(102)이 실행 동안 사용할 것으로 예상되는 시스템 메모리의 양을 명시하는 예측된 자원 사용량을 포함한다. 대안적으로, 애플리케이션(102)의 자원 사용 프로파일은 데이터 - 이로부터 이러한 예측된 자원 사용량이 도출될 수 있음 - 를 포함할 수 있다. 추가의 실시예에서, 애플리케이션(102)에 대한 어떤 자원 사용 프로파일도 데이터 저장소(106)에 존재하지 않는 경우, 기본 예측된 자원 사용량(default predicted resource usage amount)이 애플리케이션(102)에 할당될 수 있다. 이러한 기본 예측된 자원 사용량은 모든 애플리케이션들에 대해 동일할 수 있거나, 애플리케이션 유형별로 다를 수 있다.
자원 관리자(132)가 애플리케이션(102)에 대한 예측된 자원 사용량을 결정하면, 자원 관리자(132)는 예측된 자원 사용량이 현재 이용 가능한지를 결정하기 위해 메모리 관리자(122)와 통신한다. 예측된 자원 사용량이 현재 이용 가능한 경우, 자원 관리자(132)는 예측된 자원 사용량을 애플리케이션(102)에 할당할 것이고, 애플리케이션(102)은 실행되도록 허용될 수 있다. 그렇지만, 예측된 자원 사용량이 현재 이용 가능하지 않은 경우, 자원 관리자(132)는 애플리케이션(102)이 실행되지 못하게 할 수 있다. 게다가, 예측된 자원 사용량이 현재 이용 가능하지 않은 경우, 자원 관리자(132)는 또한, 애플리케이션(102)을 위한 시스템 메모리를 해제시키기 위해, 컴퓨팅 디바이스 상에서 현재 실행 중인 하나 이상의 다른 프로세스들을 종료시킬 수 있다. 이러한 다른 프로세스들은 프로세스 우선순위 방식에 따라 애플리케이션(102)보다 낮은 우선순위를 배정받은 프로세스일 수 있다. 충분한 시스템 메모리가 이러한 방식으로 재확보(recapture)되었으면, 자원 관리자(132)는 애플리케이션(102)이 실행되도록 허용할 수 있다.
애플리케이션(102)이 실행되기 시작한 후에, 자원 관리자(132)는 애플리케이션(102)이 얼마만큼의 시스템 메모리를 실제로 사용하고 있는지를 모니터링할 것이다. 이러한 방식으로, 자원 관리자(132)는 애플리케이션(102)이 예측된 자원 사용량에 따라 처음에 할당받은 것보다 더 많은 시스템 메모리를 이용하고 있는 것으로 결정할 수 있다. 이 경우에, 자원 관리자(132)는, 애플리케이션(102)이 제대로 실행되는 데 충분한 시스템 메모리가 이용 가능하도록 하기 위해, 컴퓨팅 디바이스 상에서 동시에 실행 중인 하나 이상의 프로세스들을 종료시키려고 시도할 수 있다. 자원 관리자(132)는 또한, 애플리케이션(102)이 시스템 메모리 사용에 관한 미리 정의된 상한을 초과하고 있는 것으로 결정하는 경우 또는 애플리케이션(102)에 의한 시스템 메모리 사용의 양이 용인할 수 없는 것으로 다른 방식으로 결정하는 경우, 애플리케이션(102)의 실행을 종료시킬 수 있다.
자원 관리자(132)는 또한, 애플리케이션(102)에 대한 데이터 저장소(106)에 저장된 예측된 자원 사용량을 업데이트하기 위해, 얼마만큼의 시스템 메모리가 애플리케이션(102)에 의해 사용되고 있는지를 모니터링하는 것에 의해 자원 관리자(132)가 획득하는 정보를 이용할 것이다. 예측된 자원 사용량을 업데이트하는 다양한 알고리즘들이 이하에서 상세히 기술될 것이다. 이러한 방식으로, 자원 관리자(132)는 애플리케이션(102)이 어떻게 거동하고 컴퓨팅 디바이스(100)의 사용자에 의해 이용되고 있는지에 응답하는 방식으로 시간의 경과에 따라 애플리케이션(102)에 대한 자원들의 할당을 자동으로 미세 조정할 수 있다. 이것은 유익하게도 컴퓨팅 디바이스(100)가 특히 멀티태스킹 시나리오 동안 보다 나은 사용자 경험 및 개선된 성능을 제공할 수 있게 한다.
자원 관리자(132)가 디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 따라 컴퓨팅 디바이스(100)의 자원을 관리하기 위해 동작하는 방식이 이제부터 도 2의 플로우차트(200)를 참조하여 기술될 것이다. 플로우차트(200)의 단계들이 도 1의 컴퓨팅 디바이스(100)의 콤포넌트들을 계속 참조하면서 기술될 것이지만, 본 방법이 전적으로 다른 콤포넌트들에 의해 수행될 수 있다는 것을 잘 알 것이다.
도 2에 도시된 바와 같이, 플로우차트(200)의 방법은 자원 관리자(132)가 컴퓨팅 디바이스(100)에 의해 실행되고 있는 동안 애플리케이션의 제1 인스턴스에 의해 사용되는 자원의 제1 양을 결정하는 단계(202)에서 시작된다. 예를 들어, 앞서 언급된 바와 같이, 자원 관리자(132)는, 애플리케이션(102)의 제1 인스턴스가 컴퓨팅 디바이스(100)에 의해 실행되고 있는 동안, 애플리케이션(102)의 제1 인스턴스에 의해 사용되고 있는 시스템 메모리의 제1 양을 결정할 수 있다.
일 실시예에서, 자원 관리자(132)는 애플리케이션의 제1 인스턴스와 연관된 포그라운드 프로세스 및 애플리케이션의 제1 인스턴스와 연관된 하나 이상의 백그라운드 작업들에 의해 사용되는 자원의 양을 결정하는 것에 의해 제1 양을 결정한다. 포그라운드 프로세스는 애플리케이션의 제1 인스턴스에 대한 사용자 인터페이스를 현재 제공하고 있고 컴퓨팅 디바이스(100)와 연관된 디스플레이의 적어도 일부분을 차지하고 있는 프로세스일 수 있다. 그렇지만, 많은 최신의 애플리케이션들의 실행은 또한 하나 이상의 백그라운드 프로세스들(본원에서 백그라운드 작업이라고도 지칭됨)의 실행을 수반한다. 이러한 백그라운드 작업들은 포그라운드 프로세스와 동시에 실행될 수 있고, 어떤 경우에, 포그라운드 프로세스에 의해 개시될 수 있다. 이러한 백그라운드 작업들의 예는 백그라운드 오디오(background audio)를 발생시키는 것, VoIP(Voice over Internet Protocol) 통화를 수행하는 것, 이메일을 동기화시키는 것, 콘텐츠 공유 등(이들로 제한되지 않음)을 포함한다. 포그라운드 프로세스와 같이, 이 백그라운드 작업들도 시스템 자원을 소비한다. 그렇지만, 애플리케이션 자원 사용의 종래의 개념들은 전형적으로 이러한 백그라운드 작업들에 의해 소비되는 자원을 포함하지 않는다. 일 실시예는 유리하게도 실행 중인 애플리케이션과 연관된 포그라운드 프로세스 및 동일한 애플리케이션과 연관된 하나 이상의 백그라운드 작업들 둘 다에 의한 자원 사용을 추적하는 것과 애플리케이션에 대한 총 자원 사용량을 획득하기 위해 양 유형의 자원 사용을 결합시키는 것에 의해 이것을 해결한다.
단계(204)에서, 자원 관리자(132)는 제1 양에 적어도 기초하여 애플리케이션에 대한 제1 예측된 자원 사용량을 계산한다. 예를 들어, 자원 관리자(132)는 제1 양에 적어도 기초하여 애플리케이션(102)에 대한 제1 예측된 시스템 메모리 사용량을 계산할 수 있다. 이 단계가 어떻게 수행될 수 있는지를 설명하기 위해 다양한 예시적인 알고리즘들이 이하에서 제공될 것이다.
단계(206)에서, 자원 관리자(132)는 제1 예측된 자원 사용량을 데이터 저장소(106)에 저장한다. 예를 들어, 자원 관리자(132)는 애플리케이션(102)에 대한 제1 예측된 시스템 메모리 사용량을 데이터 저장소(106)에 저장할 수 있다.
단계(206)의 수행으로부터 얼마 후에, 자원 관리자(132)는 애플리케이션의 제2 인스턴스가 컴퓨팅 디바이스(100) 상에서 실행되어야 한다는 것을 통지받는다. 단계(208)에서, 자원 관리자(132)는 데이터 저장소(106)에 저장된 제1 예측된 자원 사용량에 적어도 기초하여 애플리케이션의 제2 인스턴스에 할당될 자원의 제2 양을 결정한다. 예를 들어, 자원 관리자(132)는 애플리케이션(102)에 대해 데이터 저장소(106)에 저장된 제1 예측된 시스템 메모리 사용량에 적어도 기초하여 애플리케이션(102)의 제2 인스턴스에 할당될 시스템 메모리의 제2 양을 결정할 수 있다. 시스템 메모리의 제2 양을 결정하는 것은, 예를 들어, 시스템 메모리의 제2 양을 제1 예측된 시스템 메모리 사용량으로 설정하는 것을 포함할 수 있다.
단계(204)에서 애플리케이션에 대한 제1 예측된 자원 사용량을 계산하기 위해 다양한 방법들이 사용될 수 있다. 예를 들어, 하나의 실시예에서, 제1 예측된 자원 사용량이 특정의 수의 실행들에 걸쳐 애플리케이션에 의해 사용된 최대 자원 양에 기초하여 계산된다. 이 접근법은 도 3의 플로우차트(300)에 의해 나타내어져 있다.
상세하게는, 도 3은 일 실시예에 따른, 애플리케이션에 대한 예측된 자원 사용량을 계산하는 방법의 플로우차트(300)를 나타낸 것이다. 도 3에 도시된 바와 같이, 플로우차트(300)의 방법은 자원 관리자(132)가 단계(202) 동안 결정된 제1 양을 애플리케이션의 하나 이상의 이전에 실행된 인스턴스들과 연관된 하나 이상의 이전에 결정된 양들과 비교하는 것에 의해 애플리케이션에 대한 최대 자원 사용량을 획득하는 단계(302)에서 시작된다. 단계(304)에서, 자원 관리자(132)는 최대 자원 사용량에 기초하여 제1 예측된 자원 사용량을 계산한다.
이 접근법의 일 예가 이제부터 제공될 것이다. 이 예에 따르면, 자원 관리자(132)는 애플리케이션(102)의 5 번의 별개의 실행들 동안 애플리케이션(102)에 의한 시스템 메모리 사용을 추적하고 이러한 실행들에 걸쳐 애플리케이션(102)에 의한 최대 시스템 메모리 사용을 예측된 자원 사용량으로서 선택한다. 예를 들어, 애플리케이션(102)의 마지막 4 번의 실행들 동안, 애플리케이션(102)이, 각각, 100 MB, 120 MB, 160 MB 및 140 MB의 시스템 메모리를 사용한 것으로 가정한다. 이어서 단계(202) 동안, 자원 관리자(132)는 애플리케이션(102)의 현재 실행 중인 인스턴스가 150 MB의 시스템 메모리를 사용하고 있는 것으로 결정한다. 이 경우에, 자원 관리자(132)는 제1 예측된 자원 사용량을 160 MB(또는 어쩌면 160 MB + 얼마간의 버퍼 양)로 설정할 수 있는데, 그 이유는 그것이 애플리케이션(102)의 마지막 5 번의 실행들에 걸쳐 애플리케이션(102)에 의한 최대 시스템 메모리 사용이기 때문이다.
다른 실시예에서, 제1 예측된 자원 사용량이 특정의 수의 실행들에 걸쳐 애플리케이션에 의해 사용된 평균 자원 양에 기초하여 계산된다. 이 접근법은 도 4의 플로우차트(400)에 의해 나타내어져 있다.
상세하게는, 도 4은 일 실시예에 따른, 애플리케이션에 대한 예측된 자원 사용량을 계산하는 방법의 플로우차트(400)를 나타낸 것이다. 도 4에 도시된 바와 같이, 플로우차트(400)의 방법은 자원 관리자(132)가 단계(202) 동안 결정된 제1 양과 애플리케이션의 하나 이상의 이전에 실행된 인스턴스들과 연관된 하나 이상의 이전에 결정된 양들에 기초하여 애플리케이션에 대한 평균 자원 사용량을 획득하는 단계(402)에서 시작된다. 단계(404)에서, 자원 관리자(132)는 평균 자원 사용량에 기초하여 제1 예측된 자원 사용량을 계산한다.
이 접근법의 일 예가 이제부터 제공될 것이다. 이 예에 따르면, 자원 관리자(132)는 애플리케이션(102)의 5 번의 별개의 실행들 동안 애플리케이션(102)에 의한 시스템 메모리 사용을 추적하고, 그 값들의 평균을 계산하며, 이어서 평균 값을 예측된 자원 사용량으로서 사용한다. 예를 들어, 애플리케이션(102)의 마지막 4 번의 실행들 동안, 애플리케이션(102)이, 각각, 100 MB, 120 MB, 160 MB 및 140 MB의 시스템 메모리를 사용한 것으로 가정한다. 이어서 단계(202) 동안, 자원 관리자(132)는 애플리케이션(102)의 현재 실행 중인 인스턴스가 150 MB의 시스템 메모리를 사용하고 있는 것으로 결정한다. 이 경우에, 자원 관리자(132)는 애플리케이션(102)에 대한 평균 자원 사용량이 ((100 MB + 120 MB + 160 MB + 140 MB + 150 MB) / 5) = 134 MB인 것으로 결정할 것이다. 그 결과, 자원 관리자(132)는 제1 예측된 자원 사용량을 134 MB(또는 어쩌면 134 MB + 얼마간의 버퍼 양)로 설정할 수 있다.
단계(402)에서 기술되는 평균 자원 사용량이 획득될 수 있는 다른 방법이 이제부터 기술될 것이다. 이 접근법에 따르면, 새로운 장기 이동 평균(long-term running average)을 획득하기 위해 자원 사용량의 이동 평균이 가장 최근의 자원 사용량과 결합된다. 이전의 장기 이동 평균 또는 가장 최근의 자원 사용량 중 어느 하나에 보다 큰 가중치가 적용되도록 이 결합이 가중될 수 있다. 대안적으로, 양쪽 양이 똑같이 가중될 수 있다. 이 접근법은 하기의 식을 사용하여 표현될 수 있고:
RAVG_NEW = αRAVG_OLD + (1-α)RNEW
여기서 RAVG_NEW는 자원 사용량의 새로운 이동 평균을 나타내고, RAVG_OLD는 자원 사용량의 이전의 이동 평균을 나타내며, RNEW는 가장 최근에 관찰된 자원 사용량을 나타내고, α는 가중(weighting)을 결정하는 변수이다.
예를 들어, 자원 사용량의 이전의 이동 평균 RAVG _OLD는 130 MB이고, 가장 최근에 관찰된 자원 사용량 RAVG _NEW는 160 MB이며, 가중 인자 α는 .25인 것으로 가정한다. 이 경우에, 자원 사용량의 새로운 이동 평균 RAVG_NEW는 ((.25 * 130 MB) + (.75 * 160 MB)) = 152.5 MB일 것이다. 그 결과, 자원 관리자(132)는 제1 예측된 자원 사용량을 152.5 MB(또는 어쩌면 152.5 MB + 얼마간의 버퍼 양)로 설정할 수 있다.
이동 평균을 사용하여 애플리케이션에 대한 평균 자원 사용량을 획득하는 전술한 방법은 도 5의 플로우차트(500)에 도시되어 있다. 도 5에 도시된 바와 같이, 플로우차트(500)의 방법은 자원 관리자(132)가 단계(202) 동안 획득된 제1 양(즉, 가장 최근에 관찰된 자원 사용량)을 제1 가중 인자와 곱하는 단계(502)에서 시작된다. 단계(504) 동안, 자원 관리자(132)는, 제2 곱을 획득하기 위해, 적어도 하나 이상의 이전에 결정된 양들(즉, 이전에 관찰된 자원 사용량들)에 기초하여 획득된 이동 평균 자원 사용량을 제2 가중 인자와 곱한다. 단계(506)에서, 자원 관리자(132)는 새로운 평균 자원 사용량을 획득하기 위해 제1 곱과 제2 곱을 합산한다.
도 2를 참조하여 앞서 살펴본 바와 같이, 플로우차트(200)의 단계(208)에서, 자원 관리자(132)는 제1 예측된 자원 사용량에 적어도 기초하여 컴퓨팅 디바이스(100)에 의해 실행될 애플리케이션의 제2 인스턴스에 할당될 자원(예컨대, 시스템 메모리)의 제2 양을 결정한다. 제2 양이 예측 알고리즘에 기초한 추정치이기 때문에, 애플리케이션의 제2 인스턴스가 할당된 제2 양보다 더 많이 소비할지도 모르는 것이 항상 가능하다. 이 시나리오를 해결하기 위해, 자원 관리자(132)는 애플리케이션의 제2 인스턴스가 그의 자원 할당량보다 많이 소비하고 있는 것으로 결정하도록 구성될 수 있고, 그에 응답하여, 자원들을 해제시키기 위해 컴퓨팅 디바이스(100) 상에서 동시에 실행 중인 다른 프로세스들을 종료시킬 수 있다. 예를 들어, 자원 관리자(132)는 프로세스 우선순위 방식에 따라 애플리케이션보다 낮은 우선순위를 배정받은 특정 프로세스들이 종료되게 할 수 있다.
이 프로세스는 도 6의 플로우차트(600)에 나타내어져 있다. 상세하게는, 도 6에 도시된 바와 같이, 플로우차트(600)의 방법은 자원 관리자(132)가 컴퓨팅 디바이스(100)에 의해 실행되고 있는 동안 애플리케이션의 제2 인스턴스에 의해 사용되는 자원의 양이 제2 양을 초과하는 것으로 결정하는 단계(602)에서 시작된다. 이 결정에 응답하여, 단계(604)에서, 자원 관리자(132)는 컴퓨팅 디바이스 상에서 동시에 실행 중인 하나 이상의 프로세스들을 종료시킨다. 그에 부가하여 또는 대안적으로, 자원 관리자(132)는 컴퓨팅 디바이스(100) 상에서 동시에 실행 중인 하나 이상의 프로세스들과 통신하고 그 프로세스들에게 그들의 자원 소비를 줄이라고 지시할 수 있다.
자원 관리자(132)가 메모리 관리자(122)와의 통신 또는 어떤 다른 수단을 통해 애플리케이션의 제2 인스턴스에 할당될 자원의 제2 양이 현재 이용 가능하지 않은 것으로 결정할 수 있는 것이 또한 가능하다. 이 경우에, 자원 관리자(132)는 애플리케이션의 제2 인스턴스의 실행을 방지할 수 있다.
이 프로세스는 도 7의 플로우차트(700)에 나타내어져 있다. 상세하게는, 도 7에 도시된 바와 같이, 플로우차트(700)의 방법은 자원 관리자(132)가 자원의 제2 양이 현재 이용 가능하지 않은 것으로 결정하는 단계(702)에서 시작된다. 이 결정에 응답하여, 단계(704)에서, 자원 관리자(132)는 애플리케이션의 제2 인스턴스의 실행을 방지한다.
자원 관리자(132)가 애플리케이션의 제2 인스턴스에 할당될 자원의 제2 양이 현재 이용 가능하지 않은 것으로 결정하는 경우에, 자원 관리자(132)는 또한, 자원을 해제시키기 위해, 컴퓨팅 디바이스(100) 상에서 현재 실행 중인 하나 이상의 프로세스들을 종료시킬 수 있다. 예를 들어, 자원 관리자(132)는 프로세스 우선순위 방식에 따라 애플리케이션보다 낮은 우선순위를 배정받은 특정 프로세스들이 종료되게 할 수 있다. 이러한 다른 프로세스들에 의한 자원 소비가 감소된 후에, 자원 관리자(132)는 이어서 애플리케이션의 제2 인스턴스가 실행되도록 허용할 수 있다.
이 프로세스는 도 8의 플로우차트(800)에 나타내어져 있다. 상세하게는, 도 8에 도시된 바와 같이, 플로우차트(800)의 방법은 자원 관리자(132)가 자원의 제2 양이 현재 이용 가능하지 않은 것으로 결정하는 단계(802)에서 시작된다. 이 결정에 응답하여, 단계(804)에서, 자원 관리자(132)는 컴퓨팅 디바이스(100) 상에서 현재 실행 중인 하나 이상의 프로세스들을 종료시킨다. 그에 부가하여 또는 대안적으로, 자원 관리자(132)는 컴퓨팅 디바이스(100) 상에서 현재 실행 중인 하나 이상의 프로세스들과 통신하고 그 프로세스들에게 그들의 자원 소비를 줄이라고 지시할 수 있다.
스마트폰과 같은, 많은 컴퓨팅 디바이스들의 경우, 전형적인 사용 모델은 컴퓨팅 디바이스당 한 명의 사용자이다. 이 경우에, 컴퓨팅 디바이스에 대한 자원 사용 프로파일들을 저장하는 것은 특정의 사용자에 대한 자원 사용 프로파일들을 저장하는 것과 본질적으로 동일하다. 그렇지만, 컴퓨팅 디바이스들이 또한 다수의 사용자들을 지원하기 위해 사용될 수 있다. 예를 들어, 동일한 가정의 다수의 상이한 구성원들 각각이 애플리케이션들을 실행하기 위해 동일한 태블릿 컴퓨터, 데스크톱 컴퓨터, 또는 게임 콘솔을 사용할 수 있다. 이 사용자들 각각이 상이한 애플리케이션들을 사용할 수 있거나, 동일한 애플리케이션을 상이한 방식들로 사용할 수 있고, 그 결과 다양한 레벨의 자원 소비가 있게 된다. 이 시나리오를 해결하기 위해, 특정 실시예들은 애플리케이션 및 사용자 둘 다에 의한 컴퓨팅 디바이스 상에서의 자원 사용 프로파일들을 저장하고, 따라서 자원의 예측 할당이 컴퓨팅 디바이스를 현재 사용하고 있는 특정의 사용자에 맞춰 조정될 수 있다. 이 자원 사용 프로파일들은 (이전에 기술된 디바이스 특유의 자원 사용 프로파일과 달리) 사용자 특유의 자원 사용 프로파일로서 생각될 수 있다.
도 9는 일 실시예에 따른, 사용자 특유의 자원 사용 프로파일에 따라 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법의 플로우차트(900)를 나타낸 것이다. 플로우차트(900)의 방법이 이제부터 도 1을 참조하여 앞서 기술된 바와 같은 컴퓨팅 디바이스(100)의 콤포넌트들을 계속 참조하면서 기술될 것이다. 그렇지만, 본 방법이 그 실시예로 제한되지 않는다.
도 9에 도시된 바와 같이, 플로우차트(900)의 방법은 자원 관리자(132)가 제1 사용자를 위해 컴퓨팅 디바이스(100)에 의해 실행되고 있는 동안 애플리케이션의 제1 인스턴스에 의해 사용되는 자원의 제1 양을 결정하는 단계(902)에서 시작된다. 예를 들어, 자원 관리자(132)는, 애플리케이션(102)의 제1 인스턴스가 제1 사용자를 위해 컴퓨팅 디바이스(100)에 의해 실행되고 있는 동안, 애플리케이션(102)의 제1 인스턴스에 의해 사용되고 있는 시스템 메모리의 제1 양을 결정할 수 있다. 애플리케이션(102)의 제1 인스턴스가 제1 사용자를 위해 실행되고 있다는 사실이 아주 다양한 방식들 중 임의의 방식으로 결정될 수 있다. 사용자가 컴퓨팅 디바이스(100)에 로그인할 수 있는 일 실시예에서, 그 결정을 하기 위해 현재 로그인 정보가 사용될 수 있다. 그렇지만, 이 예는 제한하는 것으로 의도되어 있지 않으며, 컴퓨팅 디바이스의 사용자의 ID(identity)를 결정하는 임의의 적당한 방법이 사용될 수 있다.
단계(904)에서, 자원 관리자(132)는 제1 양에 적어도 기초하여 애플리케이션 및 제1 사용자에 대한 제1 예측된 자원 사용량을 계산한다. 예를 들어, 자원 관리자(132)는 제1 양에 적어도 기초하여 애플리케이션(102) 및 제1 사용자에 대한 제1 예측된 시스템 메모리 사용량을 계산할 수 있다. 이 단계가 어떻게 수행될 수 있는지를 설명하기 위해 다양한 예시적인 알고리즘들이 이전에 제공되었다.
단계(906)에서, 자원 관리자(132)는 제1 예측된 자원 사용량을 데이터 저장소(106)에 저장한다. 예를 들어, 자원 관리자(132)는 애플리케이션(102) 및 제1 사용자에 대한 제1 예측된 시스템 메모리 사용량을 데이터 저장소(106)에 저장할 수 있다.
단계(906)의 수행으로부터 얼마 후에, 자원 관리자(132)는 애플리케이션의 제2 인스턴스가 제1 사용자를 위해 컴퓨팅 디바이스(100) 상에서 실행되어야 한다는 것을 통지받는다. 단계(908)에서, 자원 관리자(132)는 데이터 저장소(106)에 저장된 제1 예측된 자원 사용량에 적어도 기초하여 애플리케이션의 제2 인스턴스에 할당될 자원의 제2 양을 결정한다. 예를 들어, 자원 관리자(132)는 애플리케이션(102) 및 제1 사용자에 대해 데이터 저장소(106)에 저장된 제1 예측된 시스템 메모리 사용량에 적어도 기초하여 애플리케이션(102)의 제2 인스턴스에 할당될 시스템 메모리의 제2 양을 결정할 수 있다. 시스템 메모리의 제2 양을 결정하는 것은, 예를 들어, 시스템 메모리의 제2 양을 제1 예측된 시스템 메모리 사용량으로 설정하는 것을 포함할 수 있다.
단계(910)에서, 자원 관리자(132)는 제2 사용자를 위해 컴퓨팅 디바이스(100)에 의해 실행되고 있는 동안 애플리케이션의 제3 인스턴스에 의해 사용되는 자원의 제3 양을 결정하고, 여기서 제2 사용자는 제1 사용자와 상이하다. 예를 들어, 자원 관리자(132)는, 애플리케이션(102)의 제3 인스턴스가 제2 사용자를 위해 컴퓨팅 디바이스(100)에 의해 실행되고 있는 동안, 애플리케이션(102)의 제3 인스턴스에 의해 사용되고 있는 시스템 메모리의 제3 양을 결정할 수 있다. 애플리케이션(102)의 제3 인스턴스가 제2 사용자를 위해 실행되고 있다는 사실이 아주 다양한 방식들 중 임의의 방식으로 결정될 수 있다. 사용자가 컴퓨팅 디바이스(100)에 로그인할 수 있는 일 실시예에서, 그 결정을 하기 위해 현재 로그인 정보가 사용될 수 있다. 그렇지만, 이 예는 제한하는 것으로 의도되어 있지 않으며, 컴퓨팅 디바이스의 사용자의 ID(identity)를 결정하는 임의의 적당한 방법이 사용될 수 있다.
단계(912)에서, 자원 관리자(132)는 제3 양에 적어도 기초하여 애플리케이션 및 제2 사용자에 대한 제2 예측된 자원 사용량을 계산한다. 예를 들어, 자원 관리자(132)는 제3 양에 적어도 기초하여 애플리케이션(102) 및 제2 사용자에 대한 제2 예측된 시스템 메모리 사용량을 계산할 수 있다. 이 단계가 어떻게 수행될 수 있는지를 설명하기 위해 다양한 예시적인 알고리즘들이 이전에 제공되었다.
단계(914)에서, 자원 관리자(132)는 제2 예측된 자원 사용량을 데이터 저장소(106)에 저장한다. 예를 들어, 자원 관리자(132)는 애플리케이션(102) 및 제2 사용자에 대한 제2 예측된 시스템 메모리 사용량을 데이터 저장소(106)에 저장할 수 있다.
단계(914)의 수행으로부터 얼마 후에, 자원 관리자(132)는 애플리케이션의 제4 인스턴스가 제2 사용자를 위해 컴퓨팅 디바이스(100) 상에서 실행되어야 한다는 것을 통지받는다. 단계(916)에서, 자원 관리자(132)는 데이터 저장소(106)에 저장된 제2 예측된 자원 사용량에 적어도 기초하여 애플리케이션의 제4 인스턴스에 할당될 자원의 제4 양을 결정한다. 예를 들어, 자원 관리자(132)는 애플리케이션(102) 및 제2 사용자에 대해 데이터 저장소(106)에 저장된 제2 예측된 시스템 메모리 사용량에 적어도 기초하여 애플리케이션(102)의 제4 인스턴스에 할당될 시스템 메모리의 제4 양을 결정할 수 있다. 시스템 메모리의 제4 양을 결정하는 것은, 예를 들어, 시스템 메모리의 제4 양을 제2 예측된 시스템 메모리 사용량으로 설정하는 것을 포함할 수 있다.
도 10은 일 실시예에 따른, 디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 따라 애플리케이션의 시작을 관리하는 방법의 플로우차트(1000)를 나타낸 것이다. 플로우차트(1000)의 방법이 이제부터 도 1을 참조하여 앞서 기술된 바와 같은 컴퓨팅 디바이스(100)의 콤포넌트들을 계속 참조하면서 기술될 것이다. 그렇지만, 본 방법이 그 실시예로 제한되지 않는다.
도 10에 도시된 바와 같이, 플로우차트(1000)의 방법은 애플리케이션을 시작하라는 요청이 수신되는 단계(1002)에서 시작된다. 예를 들어, 애플리케이션(102)을 시작하라는 요청이, 예를 들어, 시스템 서비스들(130)에 의해 그리고/또는 자원 관리자(132)에 의해 수신될 수 있다.
단계(1004)에서, 자원 관리자(132)는 애플리케이션에 대한 예측된 자원 사용량을 획득한다. 예를 들어, 자원 관리자(132)는 애플리케이션(102)에 대한 예측된 자원 사용량을 획득할 수 있다. 예측된 자원 사용량은 컴퓨팅 디바이스(100)에 의한 애플리케이션의 하나 이상의 이전 실행들 동안 컴퓨팅 디바이스(100)의 자원의 사용의 모니터링에 기초한다. 예측된 자원 사용량 또는 이러한 예측된 자원 사용량을 계산하는 데 필요한 정보는, 데이터 저장소(106)에 저장되어 있을 수 있는 애플리케이션에 대한 자원 사용 프로파일로부터 획득될 수 있다. 자원은 휘발성 또는 비휘발성 메모리 자원, CPU 자원, I/O 자원, 네트워크 자원, 전원 자원, 및 센서 자원 중 하나를 포함할 수 있다. 예측된 자원 사용량은 애플리케이션과 연관된 포그라운드 프로세스 및 애플리케이션과 연관된 하나 이상의 백그라운드 작업들 둘 다에 의한 컴퓨팅 디바이스(100)의 자원의 사용을 모니터링하는 것에 기초할 수 있다.
결정 단계(1006)에서, 자원 관리자(132)는 예측된 자원 사용량을 현재 이용 가능한 자원의 양과 비교하는 것에 의해 자원의 충분한 양이 이용 가능한지를 결정한다. 예를 들어, 자원이 시스템 메모리인 일 실시예에서, 자원 관리자(132)는 메모리 관리자(122)로부터 현재 이용 가능한 시스템 메모리의 양을 획득할 수 있고, 이어서 시스템 메모리의 충분한 양이 이용 가능한지를 결정하기 위해 애플리케이션에 대한 예측된 시스템 메모리 사용량을 현재 이용 가능한 시스템 메모리와 비교할 수 있다.
자원 관리자(132)가 자원의 충분한 양이 이용 가능한 것으로 적어도 결정하는 경우, 단계(1008)에 도시된 바와 같이, 자원 관리자(132)는 애플리케이션이 시작되도록 허용할 것이다. 예를 들어, 자원 관리자(132)가 충분한 시스템 메모리가 이용 가능한 것으로 적어도 결정하는 경우, 자원 관리자(132)는 애플리케이션(102)이 시작되도록 허용할 것이다. 유의할 점은 자원 관리자(132)가 애플리케이션이 시작되도록 허용하기 위해 충족되어야만 하는 다른 조건들이 있을 수 있다는 것이다.
자원 관리자(132)가 자원의 충분한 양이 이용 가능하지 않은 것으로 결정하는 경우, 단계(1010)에 도시된 바와 같이, 자원 관리자(132)는 애플리케이션이 시작되도록 허용하지 않을 것이다. 예를 들어, 자원 관리자(132)가 충분한 시스템 메모리가 이용 가능하지 않은 것으로 결정하는 경우, 자원 관리자(132)는 애플리케이션(102)이 시작되도록 허용하지 않을 것이다. 그에 부가하여, 자원 관리자(132)는 하나 이상의 현재 실행 중인 프로세스들이 종료되게 하거나 그의 자원 사용을 다른 방식으로 감소시키게 하는 것에 의해 자원을 해제시키려고 할 수 있다.
일 실시예에서, 자원 관리자(132)는 또한, 특정의 자원 사용 행태와 연관된 때, 장소, 및 이벤트와 같은, 애플리케이션 및/또는 사용자에 의한 자원 사용에 관련된 다른 정보를 추적할 수 있다. 이러한 정보는 유리하게도, 심지어 사용자가 애플리케이션을 시작하려고 시도하기 전에도, 컴퓨팅 디바이스의 자원을 애플리케이션에 예측하여 할당하기 위해 사용될 수 있다. 게다가, 애플리케이션들 및/또는 애플리케이션 데이터가 사용자가 그들에 액세스할 것으로 예상되기 전의 시점에서 메모리에 로딩될 수 있다.
예를 들어, 사용자가 특정의 때에, 특정의 장소에서, 또는 특정의 이벤트와 관련하여 특정의 애플리케이션을 시작할 가능성이 있는 것으로 결정될 수 있는 경우, 자원 관리자(132)는 사용자가 애플리케이션을 시작할 것으로 예상되기 전에 그리고 어쩌면 그 직전에 충분한 자원이 애플리케이션에 할당되기 위해 이용 가능하도록 하기 위해 동작할 수 있다. 게다가, 사용자가 애플리케이션 및 그의 특징들에의 즉각적인 액세스를 달성할 수 있도록, 이러한 예측 분석이 애플리케이션 또는 애플리케이션 콘텐츠를 시스템 메모리에 로딩하기 위해 실제로 사용될 수 있다.
이것을 설명하는 데 도움을 주기 위해, 도 11은 자원을 프로세스들에 예측하여 할당하기 위해 컴퓨팅 디바이스의 자원과 관련한 사용자의 모니터링된 자원 사용 패턴들 및 그로부터 도출된 정보를 사용하는 방법의 플로우차트(1100)를 나타낸 것이다. 플로우차트(1100)의 방법이 이제부터 도 1을 참조하여 앞서 기술된 바와 같은 컴퓨팅 디바이스(100)의 콤포넌트들을 계속 참조하면서 기술될 것이다. 그렇지만, 본 방법이 그 실시예로 제한되지 않는다.
도 11에 도시된 바와 같이, 플로우차트(1100)의 방법은 자원 관리자(132)가 애플리케이션 및/또는 사용자에 의한 컴퓨팅 디바이스(100)의 적어도 하나의 자원의 사용 패턴을 모니터링하는 단계(1102)에서 시작된다. 앞서 논의된 바와 같이, 사용 패턴을 모니터링하는 것은 애플리케이션 및/또는 사용자에 의한 자원 사용을 모니터링하는 것은 물론, 특정의 자원 사용 행태와 연관된 때, 장소, 및 이벤트와 같은, 이러한 자원 사용과 연관된 다른 정보를 모니터링하는 것을 수반할 수 있다.
단계(1104)에서, 자원 관리자(132)는 사용 패턴과 연관된 정보를 저장한다. 자원 관리자(132)는 이러한 정보를, 예를 들어, 데이터 저장소(106)에 저장할 수 있다.
단계(1106)에서, 자원 관리자(132)는 컴퓨팅 디바이스(100)에 의한 적어도 하나의 프로세스의 실행 이전에 적어도 하나의 자원의 적어도 일부분을 적어도 하나의 프로세스에 예측하여 할당하기 위해 저장된 정보를 사용한다. 하나의 예시적인 실시예에서, 단계(1106) 동안, 자원 관리자(132)는 컴퓨팅 디바이스(100)의 사용자 또는 임의의 다른 엔티티가 애플리케이션을 시작하기 전에 자원의 적어도 일부분을 애플리케이션에 예측하여 할당한다. 적어도 하나의 자원이 시스템 메모리를 포함하는 다른 예시적인 실시예에서, 자원 관리자(132)는 컴퓨팅 디바이스(100)의 사용자 또는 임의의 다른 엔티티가 애플리케이션을 시작하기 전에 애플리케이션의 적어도 일부분 또는 애플리케이션과 연관된 데이터를 예측하여 할당된 시스템 메모리에 로딩할 수 있다. 이 예들은 단지 예시로서 제공되고 제한하는 것으로 의도되어 있지 않다. 관련 기술 분야(들)의 통상의 기술자는 부가의 자원 관리 작업들을 수행하는 데 자원 사용 패턴 정보를 이용하기 위해 또 다른 기법들이 사용될 수 있다는 것을 잘 알 것이다.
III. 멀티 프로세스 애플리케이션에 대한 동적 자원 관리를 위한 예시적인 시스템 및 방법
일 실시예에서, 도 1의 컴퓨팅 디바이스(100)는 그 상에서 실행 중인 애플리케이션(예컨대, 애플리케이션(102))이 컴퓨팅 디바이스(100)의 자원의 할당된 부분이 애플리케이션과 연관된 다수의 프로세스들 간에 어떻게 분배되어야 하는지를 동적으로 제어할 수 있게 한다. 예를 들어, 컴퓨팅 디바이스(100) 상에서 실행 중인 애플리케이션(102)은 컴퓨팅 디바이스(100)의 자원의 할당된 부분이 애플리케이션과 연관된 포그라운드 프로세스 및 애플리케이션과 연관된 하나 이상의 백그라운드 프로세스들 간에 어떻게 분배되어야 하는지를 동적으로 제어하기 위해 자원 관리자(132)와 상호작용할 수 있다. 이와 같이 할 수 있는 애플리케이션을 제공하는 것에 의해, 본원에 기술되는 실시예들은 유리하게도 애플리케이션들이 변하는 자원 할당에 적응하고 컴퓨팅 디바이스 상에서 실행 중일 수 있는 다른 프로세스들과 더 잘 공존할 수 있게 함으로써, 아주 다양한 멀티태스킹 시나리오들을 더 잘 가능하게 한다.
애플리케이션(102) 및 자원 관리자(132)가 이러한 동적 자원 관리를 수행하기 위해 상호작용할 수 있는 하나의 방식이 이제부터 도 12의 플로우차트(1200)를 참조하여 기술될 것이다. 도 12에 도시된 바와 같이, 플로우차트(1200)의 방법은 자원 관리자(132)가 애플리케이션이 포그라운드에서 실행 중이라는 통지를 애플리케이션(102)과 연관된 포그라운드 프로세스로 송신하는 단계(1202)에서 시작된다.
단계(1204)에서, 자원 관리자(132)는 포그라운드 프로세스에 할당되어야 하는 제1 자원 사용 버짓(resource usage budget)의 제1 부분 및 애플리케이션과 연관된 적어도 하나의 백그라운드 작업에 할당되어야 하는 제1 자원 사용 버짓의 제2 부분을 명시하는 적어도 하나의 메시지를 포그라운드 프로세스로부터 수신한다.
단계(1206)에서, 자원 관리자(132)는 제1 자원 사용 버짓의 제1 부분에 상당하는 자원의 일부분을 포그라운드 프로세스에 할당하고, 제1 자원 사용 버짓의 제2 부분에 상당하는 자원의 일부분을 적어도 하나의 백그라운드 작업에 할당한다. 자원은, 제한이 아닌 예로서, 휘발성 또는 비휘발성 메모리, CPU, I/O 자원, 네트워크 자원, 전원 자원, 센서 자원을 포함할 수 있다.
단계(1208)에서, 자원 관리자(132)는 애플리케이션이 일시 중단되거나 종료될 것이라는 통지를 포그라운드 프로세스로 송신한다.
단계(1210)에서, 자원 관리자(132)는 포그라운드 프로세스에 할당되어야 하는 제2 자원 사용 버짓의 제1 부분 및 애플리케이션과 연관된 적어도 하나의 백그라운드 작업에 할당되어야 하는 제2 자원 사용 버짓의 제2 부분을 명시하는 적어도 하나의 메시지를 포그라운드 프로세스로부터 수신한다. 제2 자원 사용 버짓은 제1 자원 사용 버짓보다 더 작을 수 있다.
단계(1212)에서, 자원 관리자(132)는 제2 자원 사용 버짓의 제1 부분에 상당하는 자원의 일부분을 포그라운드 프로세스에 할당하고, 제2 자원 사용 버짓의 제2 부분에 상당하는 자원의 일부분을 적어도 하나의 백그라운드 작업에 할당한다. 미리 결정된 기간 후에, 자원 관리자(132)는 이어서 포그라운드 프로세스에 의해 사용되고 있는 자원의 양과 적어도 하나의 백그라운드 프로세스에 의해 사용되고 있는 자원의 양의 합이 제2 자원 사용 버짓을 초과하는지를 결정할 수 있다. 합이 제2 자원 사용 버짓을 초과하는 것으로 결정한 것에 응답하여, 자원 관리자(132)는 포그라운드 프로세스 및 적어도 하나의 백그라운드 프로세스 중 하나 이상이 종료되게 할 수 있다.
하나의 실시예에서, 전술한 방법에서 자원 관리자(132)와 포그라운드 프로세스 간에 교환되는 통신은 공유 API를 통해 교환된다. 이러한 API는 애플리케이션들의 개발자들에게 노출될 수 있고, 따라서 이러한 개발자들은 이 특징들을 이용할 수 있는 애플리케이션들을 개발할 수 있다.
도 13은 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션이 컴퓨팅 디바이스의 자원을 애플리케이션과 연관된 포그라운드 프로세스 및 하나 이상의 백그라운드 작업들에 할당하는 것을 관리하는 데 도움을 줄 수 있게 하는 다른 방법의 플로우차트(1300)를 나타낸 것이다.
도 13에 도시된 바와 같이, 플로우차트(1300)는 자원 관리자(132)가 자원 사용 버짓을 나타내는 적어도 하나의 메시지를 애플리케이션과 연관된 포그라운드 프로세스로 송신하는 단계(1302)에서 시작된다.
단계(1304)에서, 자원 관리자(132)는 포그라운드 프로세스에 할당되어야 하는 자원 사용 버짓의 제1 부분 및 애플리케이션과 연관된 적어도 하나의 백그라운드 작업에 할당되어야 하는 자원 사용 버짓의 제2 부분을 명시하는 적어도 하나의 메시지를 포그라운드 프로세스로부터 수신한다.
단계(1306)에서, 자원 관리자(132)는 자원 사용 버짓의 제1 부분에 상당하는 자원의 일부분을 포그라운드 프로세스에 할당하고 자원 사용 버짓의 제2 부분에 상당하는 자원의 일부분을 적어도 하나의 백그라운드 작업에 할당한다.
일 실시예에서, 포그라운드 프로세스로 송신되는 적어도 하나의 메시지 및 자원 관리자로 송신되는 적어도 하나의 메시지가 공유 API를 통해 송신된다.
다른 실시예에서, 자원 사용 버짓은 포그라운드에서 실행 중인 애플리케이션에 대한 자원 사용 버짓을 포함하고, 자원 사용 버짓을 나타내는 적어도 하나의 메시지는 애플리케이션이 포그라운드에서 실행 중이라는 통지를 포함한다.
또 다른 실시예에서, 자원 사용 버짓은 일시 중단되거나 종료되는 애플리케이션에 대한 자원 사용 버짓을 포함하고, 자원 사용 버짓을 나타내는 적어도 하나의 메시지는 애플리케이션이 일시 중단되거나 종료될 것이라는 통지를 포함한다.
추가의 실시예에서, 자원 관리자(132)는, 미리 결정된 기간 후에, 포그라운드 프로세스에 의해 사용되고 있는 자원의 양과 적어도 하나의 백그라운드 프로세스에 의해 사용되고 있는 자원의 양의 합이 자원 사용 버짓을 초과하는지를 결정하고, 합이 자원 사용 버짓을 초과하는 것으로 결정한 것에 응답하여, 포그라운드 프로세스 및 적어도 하나의 백그라운드 프로세스 중 하나 이상이 종료되게 한다.
IV. 예시적인 모바일 디바이스 구현
도 14는 본원에 기술되는 실시예들을 구현할 수 있는 예시적인 모바일 디바이스(1402)의 블록도이다. 도 14에 도시된 바와 같이, 모바일 디바이스(1402)는 각종의 선택적인 하드웨어 및 소프트웨어 콤포넌트들을 포함한다. 모바일 디바이스(1402) 내의 임의의 콤포넌트는 임의의 다른 콤포넌트와 통신할 수 있지만, 예시의 편의를 위해 연결들 모두가 도시되어 있지는 않다. 모바일 디바이스(1402)는 각종의 컴퓨팅 디바이스들(예컨대, 휴대폰, 스마트폰, 핸드헬드 컴퓨터, PDA(Personal Digital Assistant) 등) 중 임의의 것일 수 있고, 셀룰러 또는 위성 네트워크와 같은, 하나 이상의 이동 통신 네트워크들(1404)과의 또는 LAN(local area network) 또는 WAN(wide area network)과의 무선 양방향 통신을 가능하게 할 수 있다.
예시된 모바일 디바이스(1402)는 신호 코딩, 데이터 처리, 입출력 처리, 전력 제어, 및/또는 다른 기능들과 같은 작업들을 수행하기 위한 제어기 또는 프로세서(1410)(예컨대, 신호 프로세서, 마이크로프로세서, ASIC, 또는 다른 제어 및 처리 논리 회로부)를 포함할 수 있다. 운영 체제(1412)는 모바일 디바이스(1402)의 콤포넌트들의 할당 및 사용을 제어하고 하나 이상의 애플리케이션 프로그램들(1414)("애플리케이션" 또는 "앱"이라고도 지칭됨)에 대한 지원을 제공할 수 있다. 애플리케이션 프로그램들(1414)은 통상의 모바일 컴퓨팅 애플리케이션들(예컨대, 이메일 애플리케이션, 달력, 연락처 관리자, 웹 브라우저, 메시징 애플리케이션) 및 임의의 다른 컴퓨팅 애플리케이션들(예컨대, 워드 프로세싱 애플리케이션, 지도 제작 애플리케이션, 미디어 플레이어 애플리케이션)을 포함할 수 있다.
예시된 모바일 디바이스(1402)는 메모리(1420)를 포함할 수 있다. 메모리(1420)는 비착탈식 메모리(1422) 및/또는 착탈식 메모리(1424)를 포함할 수 있다. 비착탈식 메모리(1422)는 RAM, ROM, 플래시 메모리, 하드 디스크, 또는 다른 널리 공지된 메모리 디바이스들 또는 기술들을 포함할 수 있다. 착탈식 메모리(1424)는 플래시 메모리 또는 SIM(Subscriber Identity Module) 카드 - GSM 통신 시스템에서 널리 공지되어 있음 -, 또는 "스마트 카드"와 같은 다른 널리 공지된 메모리 디바이스들 또는 기술들을 포함할 수 있다. 메모리(1420)는 운영 체제(1412) 및 애플리케이션들(1414)을 실행하기 위한 데이터 및/또는 코드를 저장하는 데 사용될 수 있다. 예시적인 데이터는 하나 이상의 유선 또는 무선 네트워크들을 통해 하나 이상의 네트워크 서버들 또는 다른 디바이스들로 송신되고 그리고/또는 그로부터 수신될 웹 페이지, 텍스트, 영상, 사운드 파일, 비디오 데이터, 또는 다른 데이터를 포함할 수 있다. 메모리(1420)는 IMSI(International Mobile Subscriber Identity)와 같은 가입자 식별자(subscriber identifier), 및 IMEI(International Mobile Equipment Identifier)와 같은 장비 식별자(equipment identifier)를 저장하는 데 사용될 수 있다. 이러한 식별자들은 사용자들 및 장비를 식별하기 위해 네트워크 서버로 전송될 수 있다.
모바일 디바이스(1402)는 터치 스크린(1432), 마이크로폰(1434), 카메라(1436), 물리 키보드(1438) 및/또는 트랙볼(1440)과 같은 하나 이상의 입력 디바이스들(1430), 그리고 스피커(1452) 및 디스플레이(1454)와 같은 하나 이상의 출력 디바이스들(1450)을 지원할 수 있다. 터치 스크린(1432)과 같은, 터치 스크린은 상이한 방식들로 입력을 검출할 수 있다. 예를 들어, 용량성 터치 스크린은, 물체(예컨대, 손가락 끝)가 표면을 가로질러 지나는 전류를 왜곡시키거나 차단시킬 때, 터치 입력을 검출한다. 다른 예로서, 터치 스크린은 광 센서들로부터의 빔들이 차단될 때 터치 입력을 검출하기 위해 광 센서들을 사용할 수 있다. 입력이 일부 터치 스크린들에 의해 검출되기 위해 스크린의 표면과의 물리적 접촉이 필요하지 않다.
다른 가능한 출력 디바이스들(도시되지 않음)은 압전 또는 다른 햅틱 출력 디바이스들을 포함할 수 있다. 일부 디바이스들은 하나 초과의 입출력 기능을 제공할 수 있다. 예를 들어, 터치 스크린(1432) 및 디스플레이(1454)가 단일의 입출력 디바이스에 결합될 수 있다. 입력 디바이스들(1430)은 NUI(Natural User Interface)를 포함할 수 있다.
본 기술 분야에서 널리 알려져 있는 바와 같이, 무선 모뎀(들)(1460)은 안테나(들)(도시되지 않음)에 결합될 수 있고, 프로세서(1410)와 외부 디바이스들 사이의 양방향 통신을 지원할 수 있다. 모뎀(들)(1460)은 총칭하여 도시되어 있고, 이동 통신 네트워크(1404)와 통신하기 위한 셀룰러 모뎀(1466) 및/또는 다른 무선 기반 모뎀들(예컨대, 블루투스(1464) 및/또는 Wi-Fi(1462))을 포함할 수 있다. 무선 모뎀(들)(1460) 중 적어도 하나는 전형적으로, 단일의 셀룰러 네트워크 내에서의 데이터 및 음성 통신을 위한 GSM 네트워크와 같은, 하나 이상의 셀룰러 네트워크들과의, 셀룰러 네트워크들 간의, 또는 모바일 디바이스와 PSTN(public switched telephone network) 간의 통신을 위해 구성되어 있다.
모바일 디바이스(1402)는 적어도 하나의 입출력 포트(1480), 전원(1482), GPS(Global Positioning System) 수신기와 같은, 위성 항법 시스템 수신기(satellite navigation system receiver)(1484), 가속도계(1486), 및/또는 USB 포트, IEEE 1394(Fire Wire) 포트, 및/또는 RS-232 포트일 수 있는, 물리적 커넥터(1490)를 추가로 포함할 수 있다. 본 기술 분야의 통상의 기술자라면 잘 알 것인 바와 같이, 임의의 콤포넌트들이 삭제될 수 있고 다른 콤포넌트들이 추가될 수 있기 때문에, 모바일 디바이스(1402)의 예시된 콤포넌트들이 필수적인 것도 모두 포함되는 것도 아니다.
일 실시예에서, 모바일 디바이스(1402)의 특정 콤포넌트들은 디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 기초하여 자원 관리를 수행하는 것 및 멀티 프로세스 애플리케이션들에 대한 동적 자원 관리를 가능하게 하는 것과 관련하여 본원에 기술되는 기능들을 수행하도록 구성되어 있다. 예를 들어, 하나의 실시예에서, 운영 체제(1412)는 운영 체제(104)가 디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 기초하여 자원 관리를 수행할 수 있게 하는 운영 체제(104)의 특징들을 포함한다. 추가의 예로서, 운영 체제(1412) 및 애플리케이션들(1414) 중 적어도 하나는 그 콤포넌트들이 멀티 프로세스 애플리케이션들에 대한 동적 자원 관리를 수행할 수 있게 하는 운영 체제(104) 및 애플리케이션(102)의 특징들을 포함할 수 있다. 그렇지만, 이것은 일 예에 불과하고, 상이한 기능들이 상이한 콤포넌트들에 의해 수행될 수 있다.
디바이스 특유의 자원 사용 프로파일 또는 사용자 특유의 자원 사용 프로파일에 기초하여 자원 관리를 수행하는 것과 관련하여 본원에 기술되는 기능들을 수행하는 것 및 멀티 프로세스 애플리케이션들에 대한 동적 자원 관리를 가능하게 하는 것을 위한 컴퓨터 프로그램 논리가 메모리(1420)에 저장되고 프로세서(1410)에 의해 실행될 수 있다. 이러한 컴퓨터 프로그램 논리를 실행하는 것에 의해, 프로세서(1410)로 하여금 도 1을 참조하여 앞서 기술된 바와 같이 컴퓨팅 디바이스(100)의 콤포넌트들 중 임의의 콤포넌트의 특징들 중 임의의 특징을 구현하게 할 수 있다. 또한, 이러한 컴퓨터 프로그램 논리를 실행하는 것에 의해, 프로세서(1410)로 하여금 도 2 내지 도 13에 도시된 플로우차트들 중 일부 또는 전부의 단계들 중 일부 또는 전부를 수행하게 할 수 있다.
V. 예시적인 컴퓨터 시스템 구현
도 15는 본원에 기술되는 다양한 실시예들을 구현하는 데 사용될 수 있는 예시적인 프로세서 기반 컴퓨터 시스템(1500)을 나타낸 것이다. 예를 들어, 시스템(1500)은 도 1을 참조하여 앞서 기술된 바와 같이 컴퓨팅 디바이스(100)의 콤포넌트들 중 임의의 콤포넌트를 구현하기 위해 사용될 수 있다. 시스템(1500)은 또한 도 2 내지 도 13에 도시된 플로우차트들 중 일부 또는 전부의 단계들 중 일부 또는 전부를 구현하기 위해 사용될 수 있다. 본원에서 제공되는 시스템(1500)의 설명은 예시를 위해 제공되고 제한하는 것으로 의도되어 있지 않다. 관련 기술 분야(들)의 통상의 기술자라면 잘 알 것인 바와 같이, 실시예들이 추가적인 유형의 컴퓨터 시스템들에서 구현될 수 있다.
도 15에 도시된 바와 같이, 컴퓨터(1500)는 처리 유닛(1502), 시스템 메모리(1504), 및 시스템 메모리(1504)를 비롯한 다양한 시스템 콤포넌트들을 처리 유닛(1502)에 결합시키는 버스(1506)를 포함한다. 처리 유닛(1502)은 하나 이상의 마이크로프로세서들 또는 마이크로프로세서 코어들을 포함할 수 있다. 버스(1506)는 각종의 버스 아키텍처들 중 임의의 것을 사용하는, 메모리 버스 또는 메모리 제어기, 주변기기 버스, AGP(accelerated graphics port), 및 프로세서 또는 로컬 버스를 비롯한, 몇 개의 유형의 버스 구조들의 임의의 것들 중 하나 이상을 나타낸다. 시스템 메모리(1504)는 ROM(read only memory)(1508) 및 RAM(random access memory)(1510)을 포함한다. 기본 입출력 시스템(1512)(BIOS)은 ROM(1508)에 저장되어 있다.
시스템(1500)은 또한 하드 디스크로부터 읽고 그에 쓰는 하드 디스크 드라이브(1514), 착탈식 자기 디스크(1518)로부터 읽거나 그에 쓰는 자기 디스크 드라이브(1516), 그리고 CD ROM, DVD ROM, BLU-RAY™ 또는 다른 광 매체와 같은 착탈식 광 디스크(1522)로부터 읽거나 그에 쓰는 광 디스크 드라이브(1520) 중 하나 이상을 가진다. 하드 디스크 드라이브(1514), 자기 디스크 드라이브(1516), 및 광 디스크 드라이브(1520)는, 각각, 하드 디스크 드라이브 인터페이스(1524), 자기 디스크 드라이브 인터페이스(1526), 및 광 드라이브 인터페이스(1528)에 의해 버스(1506)에 연결된다. 이 드라이브들 및 그와 연관된 컴퓨터 판독 가능 매체는 컴퓨터를 위해 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 및 다른 데이터의 비휘발성 저장을 제공한다. 하드 디스크, 착탈식 자기 디스크 및 착탈식 광 디스크가 기술되어 있지만, 플래시 메모리 카드, 디지털 비디오 디스크, RAM(random access memory), ROM(read only memory) 등과 같은, 다른 유형의 컴퓨터 판독 가능 메모리 디바이스들 및 저장 구조들이 데이터를 저장하는 데 사용될 수 있다.
다수의 프로그램 모듈들이 하드 디스크, 자기 디스크, 광 디스크, ROM, 또는 ROM에 저장될 수 있다. 이 프로그램 모듈들은 운영 체제(1530), 하나 이상의 애플리케이션 프로그램들(1532), 다른 프로그램 모듈들(1534), 및 프로그램 데이터(1536)를 포함한다. 다양한 실시예들에 따르면, 프로그램 모듈들은 도 1을 참조하여 앞서 기술된 바와 같은 컴퓨팅 디바이스(100)의 기능들 및 특징들의 일부 또는 전부를 수행하기 위해 처리 유닛(1502)에 의해 실행 가능한 컴퓨터 프로그램 논리를 포함할 수 있다. 프로그램 모듈들은 또한, 처리 유닛(1502)에 의해 실행될 때, 도 2 내지 도 13의 플로우차트들을 참조하여 도시되거나 기술된 단계들 또는 동작들 중 임의의 것을 수행하는 컴퓨터 프로그램 논리를 포함할 수 있다.
사용자는 키보드(1538) 및 포인팅 디바이스(1540)와 같은 입력 디바이스들을 통해 명령 및 정보를 시스템(1500)에 입력할 수 있다. 다른 입력 디바이스들(도시되지 않음)은 마이크로폰, 조이스틱, 게임 컨트롤러, 스캐너 등을 포함할 수 있다. 하나의 실시예에서, 사용자가 터치 스크린 상의 하나 이상의 지점들에 (예를 들어, 손가락 또는 스타일러스에 의해서와 같이) 터치를 가하는 것을 통해 사용자 입력을 제공할 수 있게 하기 위해 디스플레이(1544)와 관련하여 터치 스크린이 제공된다. 이들 및 다른 입력 디바이스들은 종종 버스(1506)에 결합되는 직렬 포트 인터페이스(1542)를 통해 처리 유닛(1502)에 연결되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은, 다른 인터페이스들에 의해 연결될 수 있다. 이러한 인터페이스들은 유선 또는 무선 인터페이스일 수 있다.
디스플레이(1544)는 또한, 비디오 어댑터(1546)와 같은, 인터페이스를 통해 버스(1506)에 연결된다. 디스플레이(1544)에 부가하여, 시스템(1500)은 스피커 및 프린터와 같은 다른 주변 출력 디바이스들(도시되지 않음)을 포함할 수 있다.
시스템(1500)은 네트워크 인터페이스 또는 어댑터(1550), 모뎀(1552), 또는 네트워크를 통한 통신을 설정하기 위한 다른 적당한 수단을 통해 네트워크(1548)(예컨대, LAN(local area network) 또는 인터넷과 같은 WAN(wide area network))에 연결된다. 내장형이거나 외장형일 수 있는 모뎀(1552)은 직렬 포트 인터페이스(1542)를 통해 버스(1506)에 연결된다.
본원에서 사용되는 바와 같이, "컴퓨터 프로그램 매체", "컴퓨터 판독 가능 매체", 및 "컴퓨터 판독 가능 저장 매체"라는 용어들은 일반적으로 하드 디스크 드라이브(1514)와 연관된 하드 디스크, 착탈식 자기 디스크(1518), 착탈식 광 디스크(1522)와 같은 메모리 디바이스들 또는 저장 구조들은 물론, 플래시 메모리 카드, 디지털 비디오 디스크, RAM(random access memory), ROM(read only memory) 등과 같은 다른 매체들과 같은 다른 메모리 디바이스들 또는 저장 구조들을 지칭하기 위해 사용된다. 이러한 컴퓨터 판독 가능 저장 매체는 통신 매체와 구별되고 그와 중복하지 않는다(통신 매체를 포함하지 않음). 통신 매체는 전형적으로 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 반송파와 같은 피변조 데이터 신호(modulated data signal)에 구현한다. "피변조 데이터 신호"라는 용어는 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정되거나 변경된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 실시예들은 또한 이러한 통신 매체에 관한 것이다.
앞서 살펴본 바와 같이, 컴퓨터 프로그램들 및 모듈들(애플리케이션 프로그램들(1532) 및 다른 프로그램 모듈들(1534)을 포함함)은 하드 디스크, 자기 디스크, 광 디스크, ROM, 또는 RAM에 저장될 수 있다. 이러한 컴퓨터 프로그램들은 또한 네트워크 인터페이스(1550), 직렬 포트 인터페이스(1542), 또는 임의의 다른 인터페이스 유형을 통해 수신될 수 있다. 이러한 컴퓨터 프로그램들은, 애플리케이션에 의해 실행되거나 로딩될 때, 컴퓨터(1500)가 본원에서 논의되는 본 발명의 실시예들의 특징들을 구현할 수 있게 한다. 그에 따라, 이러한 컴퓨터 프로그램들은 시스템(1500)의 제어기들을 나타낸다.
실시예들은 또한 임의의 컴퓨터 사용 가능 매체 상에 저장되는 소프트웨어를 포함하는 컴퓨터 프로그램 제품에 관한 것이다. 이러한 소프트웨어는, 하나 이상의 데이터 처리 디바이스들에서 실행될 때, 데이터 처리 디바이스(들)로 하여금 본원에 기술되는 바와 같이 동작하게 한다. 본 발명의 실시예들은, 현재 또는 장래에 공지되는, 임의의 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체를 이용한다. 컴퓨터 판독 가능 매체들의 예들은 RAM, 하드 드라이브, 플로피 디스크, CD ROM, DVD ROM, 집 디스크(zip disk), 테이프, 자기 저장 디바이스, 광 저장 디바이스, MEM, 나노기술 기반 저장 디바이스 등과 같은 메모리 디바이스들 및 저장 구조들(이들로 제한되지 않음)을 포함한다.
대안의 구현들에서, 시스템(1500)은 하드웨어 논리/ 전기 회로부 또는 펌웨어로서 구현될 수 있다. 추가의 실시예들에 따르면, 이 콤포넌트들 중 하나 이상은 SoC(system-on-chip)에 구현될 수 있다. SoC는 그의 기능들을 수행하기 위해 프로세서(예컨대, 마이크로컨트롤러, 마이크로프로세서, DSP(digital signal processor) 등), 메모리, 하나 이상의 통신 인터페이스들, 및/또는 추가적인 회로들 및/또는 임베디드 펌웨어(embedded firmware) 중 하나 이상을 포함하는 집적 회로 칩을 포함할 수 있다.
VI. 결론
다양한 실시예들이 앞서 기술되었지만, 그 실시예들이 제한이 아니라 단지 예로서 제시되어 있다는 것을 잘 알 것이다. 본 발명의 사상 및 범주를 벗어남이 없이 형태 및 상세에 있어서의 다양한 변경들이 그에 대해 행해질 수 있다는 것이 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다. 이와 같이, 본 발명의 폭 및 범주는 앞서 기술된 예시적인 실시예들 중 임의의 것에 의해 제한되어서는 안되고, 이하의 청구항들 및 그의 등가물들에 따라서만 한정되어야 한다.

Claims (10)

  1. 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법에 있어서,
    상기 컴퓨팅 디바이스에 의해 실행되고 있는 동안 애플리케이션의 제1 인스턴스에 의해 사용되는 상기 자원의 제1 양을 결정하는 단계 - 상기 결정하는 단계는 상기 애플리케이션의 상기 제1 인스턴스와 연관된 포그라운드 프로세스(foreground process) 및 상기 애플리케이션의 상기 제1 인스턴스와 연관된 하나 이상의 백그라운드 작업(background task)들에 의해 사용되는 상기 자원의 양을 결정하는 단계를 포함함 -;
    상기 제1 양에 적어도 기초하여 상기 애플리케이션에 대한 제1 예측된 자원 사용량을 계산하는 단계;
    상기 제1 예측된 자원 사용량을 데이터 저장소에 저장하는 단계;
    상기 데이터 저장소에 저장된 상기 제1 예측된 자원 사용량에 적어도 기초하여 상기 컴퓨팅 디바이스에 의해 실행될 상기 애플리케이션의 제2 인스턴스에 할당될 상기 자원의 제2 양을 결정하는 단계
    를 포함하는, 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법.
  2. 제1항에 있어서,
    상기 자원은,
    휘발성 또는 비휘발성 메모리 자원;
    CPU(central processing unit) 자원;
    I/O(input/output) 자원;
    네트워크 자원;
    전원 자원; 및
    센서 자원
    중 적어도 하나를 포함하는 것인, 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법.
  3. 제1항에 있어서,
    상기 제1 양에 적어도 기초하여 상기 애플리케이션에 대한 상기 제1 예측된 자원 사용량을 계산하는 단계는,
    상기 제1 양을 상기 애플리케이션의 하나 이상의 이전에 실행된 인스턴스들과 연관된 하나 이상의 이전에 결정된 양들과 비교하는 것에 의해 상기 애플리케이션에 대한 최대 자원 사용량을 획득하는 단계; 및
    상기 최대 자원 사용량에 기초하여 상기 제1 예측된 자원 사용량을 계산하는 단계
    를 포함하는 것인, 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법.
  4. 제1항에 있어서,
    상기 제1 양에 적어도 기초하여 상기 애플리케이션에 대한 상기 제1 예측된 자원 사용량을 계산하는 단계는,
    상기 제1 양 및 상기 애플리케이션의 이전에 실행된 인스턴스들과 연관된 하나 이상의 이전에 결정된 양들에 기초하여 상기 애플리케이션에 대한 평균 자원 사용량을 획득하는 단계; 및
    상기 평균 자원 사용량에 기초하여 상기 제1 예측된 자원 사용량을 계산하는 단계
    를 포함하는 것인, 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법.
  5. 제4항에 있어서,
    상기 제1 양 및 상기 애플리케이션의 이전에 실행된 인스턴스들과 연관된 상기 하나 이상의 이전에 결정된 양들에 기초하여 상기 애플리케이션에 대한 상기 평균 자원 사용량을 획득하는 단계는,
    제1 곱(first product)을 획득하기 위해 상기 제1 양을 제1 가중 인자와 곱하는 단계;
    제2 곱(second product)을 획득하기 위해 적어도 상기 하나 이상의 이전에 결정된 양들에 기초하여 획득된 이동 평균 양(running average amount)을 제2 가중 인자와 곱하는 단계; 및
    상기 제1 곱과 상기 제2 곱을 합산하는 단계
    를 포함하는 것인, 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법.
  6. 제1항에 있어서,
    상기 컴퓨팅 디바이스에 의해 실행되는 동안 상기 애플리케이션의 상기 제2 인스턴스에 의해 사용되는 상기 자원의 양이 상기 제2 양을 초과하는 것으로 결정하는 것에 응답하여, 상기 컴퓨팅 디바이스 상에서 동시에 실행 중인 하나 이상의 프로세스들을 종료시키는 단계를 추가로 포함하는, 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법.
  7. 제1항에 있어서,
    상기 자원의 상기 제2 양이 현재 이용 가능하지 않은 것으로 결정하는 것에 응답하여, 상기 애플리케이션의 상기 제2 인스턴스의 실행을 방지하는 단계를 추가로 포함하는, 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법.
  8. 제1항에 있어서,
    상기 자원의 상기 제2 양이 현재 이용 가능하지 않은 것으로 결정하는 것에 응답하여, 상기 컴퓨팅 디바이스 상에서 현재 실행 중인 하나 이상의 프로세스들을 종료시키는 단계를 추가로 포함하는, 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법.
  9. 제1항에 있어서,
    상기 결정하는 단계, 상기 계산하는 단계, 및 상기 저장하는 단계는,
    제1 사용자를 대신하여 상기 컴퓨팅 디바이스에 의해 실행되고 있는 동안 상기 애플리케이션의 상기 제1 인스턴스에 의해 사용되는 상기 자원의 상기 제1 양을 결정하는 단계;
    상기 제1 양에 적어도 기초하여 상기 애플리케이션 및 상기 제1 사용자에 대한 상기 제1 예측된 자원 사용량을 계산하는 단계;
    상기 제1 예측된 자원 사용량을 상기 데이터 저장소에 저장하는 단계; 및
    상기 데이터 저장소에 저장된 상기 제1 예측된 자원 사용량에 적어도 기초하여 상기 제1 사용자를 대신하여 상기 컴퓨팅 디바이스에 의해 실행될 상기 애플리케이션의 상기 제2 인스턴스에 할당될 상기 자원의 상기 제2 양을 결정하는 단계
    를 포함하고;
    상기 방법은,
    제2 사용자를 대신하여 상기 컴퓨팅 디바이스에 의해 실행되고 있는 동안 상기 애플리케이션의 제3 인스턴스에 의해 사용되는 상기 자원의 제3 양을 결정하는 단계;
    상기 제3 양에 적어도 기초하여 상기 애플리케이션 및 상기 제2 사용자에 대한 제2 예측된 자원 사용량을 계산하는 단계;
    상기 제2 예측된 자원 사용량을 상기 데이터 저장소에 저장하는 단계; 및
    상기 데이터 저장소에 저장된 상기 제2 예측된 자원 사용량에 적어도 기초하여 상기 제2 사용자를 대신하여 상기 컴퓨팅 디바이스에 의해 실행될 상기 애플리케이션의 제4 인스턴스에 할당될 상기 자원의 제4 양을 결정하는 단계
    를 추가로 포함하는, 컴퓨팅 디바이스의 자원을 관리하기 위해 컴퓨팅 디바이스에 의해 구현되는 방법.
  10. 컴퓨팅 디바이스 상에 구현되는 시스템에 있어서,
    적어도 하나의 프로세서, 및
    상기 적어도 하나의 프로세서에 의해 액세스 가능한 메모리
    를 포함하고,
    상기 메모리는 상기 적어도 하나의 프로세서에 의한 실행을 위한 콤포넌트들을 저장하며,
    상기 콤포넌트들은,
    애플리케이션 및 사용자 중 하나 이상에 의한 상기 컴퓨팅 디바이스의 적어도 하나의 자원의 사용 패턴을 모니터링하고, 상기 사용 패턴과 연관된 정보를 저장하며, 상기 적어도 하나의 프로세서에 의한 적어도 하나의 프로세스의 실행 이전에 상기 자원의 적어도 일부분을 상기 적어도 하나의 프로세스에 예측하여 할당하기 위해 상기 저장된 정보를 사용하기 위해 동작 가능한 자원 관리자를 포함하는 것인, 시스템.
KR1020167028068A 2014-03-10 2015-02-27 디바이스 특유의 또는 사용자 특유의 자원 사용 프로파일에 기초한 자원 관리 KR102275114B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461950620P 2014-03-10 2014-03-10
US61/950,620 2014-03-10
US14/264,838 US9871741B2 (en) 2014-03-10 2014-04-29 Resource management based on device-specific or user-specific resource usage profiles
US14/264,838 2014-04-29
PCT/US2015/017892 WO2015138152A1 (en) 2014-03-10 2015-02-27 Resource management based on device-specific or user-specific resource usage profiles

Publications (2)

Publication Number Publication Date
KR20160132439A true KR20160132439A (ko) 2016-11-18
KR102275114B1 KR102275114B1 (ko) 2021-07-07

Family

ID=54018574

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167028068A KR102275114B1 (ko) 2014-03-10 2015-02-27 디바이스 특유의 또는 사용자 특유의 자원 사용 프로파일에 기초한 자원 관리

Country Status (11)

Country Link
US (2) US9871741B2 (ko)
EP (1) EP3117317B1 (ko)
JP (1) JP6509895B2 (ko)
KR (1) KR102275114B1 (ko)
CN (1) CN106104484B (ko)
AU (1) AU2015229885B2 (ko)
BR (1) BR112016020148B1 (ko)
CA (1) CA2939568C (ko)
MX (1) MX2016011616A (ko)
RU (1) RU2683509C2 (ko)
WO (1) WO2015138152A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180084501A (ko) 2017-01-17 2018-07-25 부산대학교 산학협력단 중앙 집중식 제어 구조 서버를 갖는 포그 컴퓨팅 운용을 위한 시스템 및 그의 제어 방법
WO2019094771A1 (en) * 2017-11-10 2019-05-16 R-Stor Inc. System and method for scaling provisioned resources
WO2022154263A1 (ko) * 2021-01-13 2022-07-21 삼성전자 주식회사 전자 장치 및 전자 장치의 동작 방법

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013015835A1 (en) 2011-07-22 2013-01-31 Seven Networks, Inc. Mobile application traffic optimization
US20120149352A1 (en) 2010-07-26 2012-06-14 Ari Backholm Context aware traffic management for resource conservation in a wireless network
CN105637926B (zh) 2013-06-11 2019-06-21 七网络有限责任公司 将应用流量分载至共享通信信道进行无线网络中的信令优化用于使用专有和非专有协议的流量
CN107005869A (zh) * 2014-10-17 2017-08-01 七网络有限责任公司 在移动设备上协同管理策略
EP3062142B1 (en) 2015-02-26 2018-10-03 Nokia Technologies OY Apparatus for a near-eye display
US9983887B2 (en) * 2015-06-05 2018-05-29 Apple Inc. Memory management of data processing systems
US10275279B2 (en) * 2015-07-09 2019-04-30 International Business Machines Corporation Increasing the efficiency of scheduled and unscheduled computing tasks
US10296383B2 (en) * 2015-07-10 2019-05-21 Samsung Electronics Co., Ltd. Computing system with resource management mechanism and method of operation thereof
US9805324B2 (en) * 2015-09-16 2017-10-31 Sas Institute Inc. Computer-implemented system for modeling an allocated resource
US10552219B2 (en) * 2016-02-19 2020-02-04 Microsoft Technology Licensing, Llc Computing resource management of computing devices
EP4171105A1 (en) * 2016-03-29 2023-04-26 Huawei Technologies Co., Ltd. Resource statistics collection method and terminal
US10289347B2 (en) * 2016-04-26 2019-05-14 Servicenow, Inc. Detection and remediation of memory leaks
US10541879B2 (en) * 2016-07-29 2020-01-21 Microsoft Technology Licensing, Llc Multi-channel resource control system
CN107885591A (zh) * 2016-09-27 2018-04-06 华为技术有限公司 为应用分配系统资源的方法和终端
CN107220077B (zh) 2016-10-20 2019-03-19 华为技术有限公司 应用启动的管控方法和管控设备
US20180129537A1 (en) * 2016-11-10 2018-05-10 Microsoft Technology Licensing, Llc Managing memory usage using soft memory targets
US20180173560A1 (en) * 2016-12-21 2018-06-21 Apple Inc. Processing circuit hardware resource allocation system
US10650552B2 (en) 2016-12-29 2020-05-12 Magic Leap, Inc. Systems and methods for augmented reality
EP4300160A3 (en) 2016-12-30 2024-05-29 Magic Leap, Inc. Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light
US11171854B2 (en) * 2017-01-13 2021-11-09 International Business Machines Corporation Application workload prediction
US10318888B2 (en) 2017-03-06 2019-06-11 International Business Machines Corporation Pre-backing virtual storage using historical learned data
CN107066336B (zh) * 2017-03-30 2021-05-18 联想(北京)有限公司 一种任务处理方法及电子设备、资源管理装置
CN106850692B (zh) * 2017-03-30 2020-03-20 成都长天信息技术有限公司 一种流媒体播放模式确定方法及装置
US10445208B2 (en) * 2017-06-23 2019-10-15 Microsoft Technology Licensing, Llc Tunable, efficient monitoring of capacity usage in distributed storage systems
US10447924B2 (en) * 2017-06-30 2019-10-15 Microsoft Technology Licensing, Llc Camera usage notification
US10578870B2 (en) 2017-07-26 2020-03-03 Magic Leap, Inc. Exit pupil expander
CN107402808B (zh) * 2017-07-31 2020-03-27 Oppo广东移动通信有限公司 进程管理方法、装置、存储介质及电子设备
US10810141B2 (en) * 2017-09-29 2020-10-20 Intel Corporation Memory control management of a processor
CN109697115B (zh) * 2017-10-20 2023-06-06 伊姆西Ip控股有限责任公司 用于调度应用的方法、装置以及计算机可读介质
CN109697121B (zh) * 2017-10-20 2023-05-05 伊姆西Ip控股有限责任公司 用于向应用分配处理资源的方法、设备和计算机可读介质
US10652308B2 (en) 2017-11-08 2020-05-12 International Business Machines Corporation Cognitive storage management for a mobile computing device
US10812407B2 (en) 2017-11-21 2020-10-20 International Business Machines Corporation Automatic diagonal scaling of workloads in a distributed computing environment
US10893000B2 (en) * 2017-11-21 2021-01-12 International Business Machines Corporation Diagonal scaling of resource allocations and application instances in a distributed computing environment
US10733015B2 (en) 2017-11-21 2020-08-04 International Business Machines Corporation Prioritizing applications for diagonal scaling in a distributed computing environment
US10635501B2 (en) 2017-11-21 2020-04-28 International Business Machines Corporation Adaptive scaling of workloads in a distributed computing environment
US10721179B2 (en) 2017-11-21 2020-07-21 International Business Machines Corporation Adaptive resource allocation operations based on historical data in a distributed computing environment
US10887250B2 (en) 2017-11-21 2021-01-05 International Business Machines Corporation Reducing resource allocations and application instances in diagonal scaling in a distributed computing environment
KR102596429B1 (ko) 2017-12-10 2023-10-30 매직 립, 인코포레이티드 광학 도파관들 상의 반사―방지 코팅들
CN109947497B (zh) * 2017-12-20 2021-06-08 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
EP3729172A4 (en) 2017-12-20 2021-02-24 Magic Leap, Inc. INSERT FOR AUGMENTED REALITY VIEWING DEVICE
CN112136152A (zh) 2018-03-15 2020-12-25 奇跃公司 由观看设备的部件变形导致的图像校正
JP7114980B2 (ja) 2018-03-28 2022-08-09 株式会社リコー 情報処理システム、情報処理装置、情報処理方法及びプログラム
US11204491B2 (en) 2018-05-30 2021-12-21 Magic Leap, Inc. Compact variable focus configurations
JP7319303B2 (ja) 2018-05-31 2023-08-01 マジック リープ, インコーポレイテッド レーダ頭部姿勢位置特定
US10825424B2 (en) 2018-06-05 2020-11-03 Magic Leap, Inc. Homography transformation matrices based temperature calibration of a viewing system
EP3803545A4 (en) 2018-06-08 2022-01-26 Magic Leap, Inc. AUGMENTED REALITY VIEWER WITH AUTOMATED SURFACE SELECTION PLACEMENT AND CONTENT ALIGNMENT PLACEMENT
US11579441B2 (en) 2018-07-02 2023-02-14 Magic Leap, Inc. Pixel intensity modulation using modifying gain values
WO2020010226A1 (en) 2018-07-03 2020-01-09 Magic Leap, Inc. Systems and methods for virtual and augmented reality
US11856479B2 (en) 2018-07-03 2023-12-26 Magic Leap, Inc. Systems and methods for virtual and augmented reality along a route with markers
US10771619B1 (en) 2018-07-09 2020-09-08 Life360, Inc. Systems and methods for context-aware application and content access control
US10735258B2 (en) * 2018-07-24 2020-08-04 Avaya Inc. System for self-allocating resources
US11624929B2 (en) 2018-07-24 2023-04-11 Magic Leap, Inc. Viewing device with dust seal integration
US11598651B2 (en) 2018-07-24 2023-03-07 Magic Leap, Inc. Temperature dependent calibration of movement detection devices
EP3831058A4 (en) 2018-08-02 2022-04-20 Magic Leap, Inc. VIEWING SYSTEM WITH PUPILE DISTANCE COMPENSATION BASED ON HEAD MOVEMENT
US10795458B2 (en) 2018-08-03 2020-10-06 Magic Leap, Inc. Unfused pose-based drift correction of a fused pose of a totem in a user interaction system
CN109446048B (zh) * 2018-10-30 2023-12-22 深圳市科华通诚科技有限公司 一种后台管控方法、设备及计算机可读存储介质
CN117111304A (zh) 2018-11-16 2023-11-24 奇跃公司 用于保持图像清晰度的图像尺寸触发的澄清
WO2020133437A1 (zh) * 2018-12-29 2020-07-02 深圳市欢太科技有限公司 应用程序的管理方法、装置、存储介质及电子设备
JP2022519292A (ja) * 2019-02-06 2022-03-22 マジック リープ, インコーポレイテッド 複数のプロセッサによって発生される総熱を限定するための標的意図ベースのクロック速度の決定および調節
JP2022523852A (ja) 2019-03-12 2022-04-26 マジック リープ, インコーポレイテッド 第1および第2の拡張現実ビューア間でのローカルコンテンツの位置合わせ
CN110069328B (zh) * 2019-03-25 2021-11-09 维沃移动通信有限公司 应用关闭方法及终端设备
CN114127837A (zh) 2019-05-01 2022-03-01 奇跃公司 内容提供系统和方法
CN114174895A (zh) 2019-07-26 2022-03-11 奇跃公司 用于增强现实的系统和方法
KR20210023073A (ko) * 2019-08-22 2021-03-04 삼성전자주식회사 전자장치 및 그 제어방법
WO2021097323A1 (en) 2019-11-15 2021-05-20 Magic Leap, Inc. A viewing system for use in a surgical environment
CN111078404B (zh) * 2019-12-09 2023-07-11 腾讯科技(深圳)有限公司 一种计算资源确定方法、装置、电子设备及介质
CN113535398B (zh) * 2021-07-14 2024-02-27 广州虎牙科技有限公司 资源分配调整方法、装置、电子设备和可读存储介质
KR20230080535A (ko) * 2021-11-30 2023-06-07 삼성전자주식회사 메모리 회수 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285871A (ja) * 2005-04-04 2006-10-19 Canon Inc 情報処理装置、制御方法、プログラム、及び記憶媒体
US20100131959A1 (en) * 2008-11-26 2010-05-27 Spiers Adam Z Proactive application workload management
KR20120018608A (ko) * 2010-08-23 2012-03-05 한국전자통신연구원 이용 패턴에 따라 어플리케이션 서비스를 실행하는 모바일 단말 장치 및 그의 어플리케이션 서비스 실행 방법
US20120110582A1 (en) * 2010-10-29 2012-05-03 International Business Machines Corporation Real-time computing resource monitoring

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7313234B2 (en) * 2002-10-31 2007-12-25 Matsushita Electric Industrial Co., Ltd. Communication device, communication system, and algorithm selection method
US7284009B2 (en) * 2002-12-13 2007-10-16 Sun Microsystems, Inc. System and method for command line prediction
KR100690854B1 (ko) 2005-11-08 2007-03-09 엘지전자 주식회사 멀티태스킹이 가능한 휴대용 단말기 및 그의 멀티태스킹처리방법
WO2007071286A1 (en) 2005-12-21 2007-06-28 Real Enterprise Solutions Development B.V. Method of assigning a user session to one of a set of application servers
US8959515B2 (en) 2006-01-18 2015-02-17 International Business Machines Corporation Task scheduling policy for limited memory systems
US7673189B2 (en) * 2006-02-06 2010-03-02 International Business Machines Corporation Technique for mapping goal violations to anamolies within a system
KR100801894B1 (ko) 2006-06-15 2008-02-12 삼성전자주식회사 휴대용 단말기에서 메모리 용량을 고려한 프로그램 실행을위한 장치 및 방법
US8112755B2 (en) * 2006-06-30 2012-02-07 Microsoft Corporation Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources
US8826281B2 (en) * 2006-11-07 2014-09-02 Microsoft Corporation Managing document publication using time-driven job scheduling
US20080115141A1 (en) * 2006-11-15 2008-05-15 Bharat Welingkar Dynamic resource management
US8584131B2 (en) * 2007-03-30 2013-11-12 International Business Machines Corporation Method and system for modeling and analyzing computing resource requirements of software applications in a shared and distributed computing environment
US8042119B2 (en) * 2007-05-14 2011-10-18 Teradata Us, Inc. States matrix for workload management simplification
US20090025004A1 (en) * 2007-07-16 2009-01-22 Microsoft Corporation Scheduling by Growing and Shrinking Resource Allocation
US8139533B2 (en) * 2007-11-05 2012-03-20 Qualcomm Incorporated Division of the scheduling algorithm into background and foreground algorithms
KR20100021725A (ko) 2008-08-18 2010-02-26 삼성전자주식회사 이동통신 단말기의 메모리 재할당 장치 및 방법
WO2012031799A1 (en) 2010-09-09 2012-03-15 Siemens Aktiengesellschaft A system to manage power consumption of a processor at run time
US8635630B2 (en) 2010-10-25 2014-01-21 Microsoft Corporation Application lifetime management
JP2012094030A (ja) * 2010-10-28 2012-05-17 Hitachi Ltd 計算機システム及び処理制御方法
US8626902B2 (en) * 2010-12-03 2014-01-07 International Business Machines Corporation Modeling and reducing power consumption in large IT systems
KR20120077265A (ko) 2010-12-30 2012-07-10 주식회사 팬택 이동 단말기 및 이동 단말기의 제어 방법
US10631246B2 (en) * 2011-02-14 2020-04-21 Microsoft Technology Licensing, Llc Task switching on mobile devices
JP5783246B2 (ja) * 2011-03-19 2015-09-24 富士通株式会社 端末装置、プロセス管理方法、およびプロセス管理プログラム
EP2538327A1 (en) 2011-06-16 2012-12-26 Samsung Electronics Co., Ltd. Adaptive Termination and Pre-Launching Policy for Improving Application Startup Time
US9032413B2 (en) * 2011-09-01 2015-05-12 Microsoft Technology Licensing, Llc Decoupling background work and foreground work
US8578394B2 (en) 2011-09-09 2013-11-05 Microsoft Corporation Exempting applications from suspension
CN103024825B (zh) 2011-09-26 2015-07-01 中国移动通信集团公司 终端多应用间网络资源分配方法及其设备
DE102012217202B4 (de) * 2011-10-12 2020-06-18 International Business Machines Corporation Verfahren und System zum Optimieren des Platzierens virtueller Maschinen in Cloud-Computing-Umgebungen
US9164803B2 (en) * 2012-01-20 2015-10-20 Microsoft Technology Licensing, Llc Background task resource control
US9118520B1 (en) * 2012-04-20 2015-08-25 Symantec Corporation Systems and methods for monitoring application resource usage on mobile computing systems
US8725800B1 (en) * 2012-10-02 2014-05-13 Nextbit Systems Inc. Mobile photo application migration to cloud computing platform
US9992301B2 (en) * 2013-06-26 2018-06-05 Sap Se Prioritized throttling in a multiusage environment
US20150244645A1 (en) * 2014-02-26 2015-08-27 Ca, Inc. Intelligent infrastructure capacity management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285871A (ja) * 2005-04-04 2006-10-19 Canon Inc 情報処理装置、制御方法、プログラム、及び記憶媒体
US20100131959A1 (en) * 2008-11-26 2010-05-27 Spiers Adam Z Proactive application workload management
KR20120018608A (ko) * 2010-08-23 2012-03-05 한국전자통신연구원 이용 패턴에 따라 어플리케이션 서비스를 실행하는 모바일 단말 장치 및 그의 어플리케이션 서비스 실행 방법
US20120110582A1 (en) * 2010-10-29 2012-05-03 International Business Machines Corporation Real-time computing resource monitoring

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Feng Qian 외 5명. 'Profiling resource usage for mobile applications: a cross-layer approach'. Proceedings of the 9th international conference on MobiSys, 2011.06., pp.321-334. *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180084501A (ko) 2017-01-17 2018-07-25 부산대학교 산학협력단 중앙 집중식 제어 구조 서버를 갖는 포그 컴퓨팅 운용을 위한 시스템 및 그의 제어 방법
WO2019094771A1 (en) * 2017-11-10 2019-05-16 R-Stor Inc. System and method for scaling provisioned resources
US11531569B2 (en) 2017-11-10 2022-12-20 Core Scientific Operating Company System and method for scaling provisioned resources
WO2022154263A1 (ko) * 2021-01-13 2022-07-21 삼성전자 주식회사 전자 장치 및 전자 장치의 동작 방법

Also Published As

Publication number Publication date
US20150256476A1 (en) 2015-09-10
WO2015138152A1 (en) 2015-09-17
EP3117317A1 (en) 2017-01-18
AU2015229885A1 (en) 2016-09-08
BR112016020148A8 (pt) 2021-06-15
RU2683509C2 (ru) 2019-03-28
CA2939568C (en) 2021-11-02
RU2016136181A3 (ko) 2018-10-02
RU2016136181A (ru) 2018-03-15
KR102275114B1 (ko) 2021-07-07
US9871741B2 (en) 2018-01-16
MX2016011616A (es) 2016-11-29
US10182018B2 (en) 2019-01-15
BR112016020148A2 (pt) 2017-08-15
BR112016020148B1 (pt) 2022-08-30
CA2939568A1 (en) 2015-09-17
JP6509895B2 (ja) 2019-05-08
JP2017511940A (ja) 2017-04-27
CN106104484B (zh) 2020-04-03
US20180102981A1 (en) 2018-04-12
CN106104484A (zh) 2016-11-09
EP3117317B1 (en) 2020-11-25
AU2015229885B2 (en) 2019-09-12

Similar Documents

Publication Publication Date Title
US10182018B2 (en) Resource management based on device-specific or user-specific resource usage profiles
US9678797B2 (en) Dynamic resource management for multi-process applications
US8997171B2 (en) Policy based application suspension and termination
EP2893444B1 (en) Quota-based resource management
US9952903B2 (en) Background task resource control
US10101910B1 (en) Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager
US20120324481A1 (en) Adaptive termination and pre-launching policy for improving application startup time
JP2014517434A5 (ko)
EP3506105B1 (en) Method and device for processing a memory and storage medium
US11632315B1 (en) System and method for dynamic reporting based management
US11010190B2 (en) Methods, mediums, and systems for provisioning application services
KR20140059222A (ko) 중지된 애플리케이션 재개 및/또는 애플리케이션의 중지 면제 기법
US10289446B1 (en) Preserving web browser child processes by substituting a parent process with a stub process
EP2538327A1 (en) Adaptive Termination and Pre-Launching Policy for Improving Application Startup Time
US10248321B1 (en) Simulating multiple lower importance levels by actively feeding processes to a low-memory manager
US20230342218A1 (en) Automated dynamic resource configuration for hard provisioned virtual machines
US20230342170A1 (en) Automated analysis and dynamic resource configuration for hard provisioned virtual machines

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant