KR20140059222A - 중지된 애플리케이션 재개 및/또는 애플리케이션의 중지 면제 기법 - Google Patents
중지된 애플리케이션 재개 및/또는 애플리케이션의 중지 면제 기법 Download PDFInfo
- Publication number
- KR20140059222A KR20140059222A KR1020147005949A KR20147005949A KR20140059222A KR 20140059222 A KR20140059222 A KR 20140059222A KR 1020147005949 A KR1020147005949 A KR 1020147005949A KR 20147005949 A KR20147005949 A KR 20147005949A KR 20140059222 A KR20140059222 A KR 20140059222A
- Authority
- KR
- South Korea
- Prior art keywords
- application
- computing device
- request
- operating system
- applications
- 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/46—Multiprogramming arrangements
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
임의의 주어진 시간에는 컴퓨팅 장치 상에서 특정한 개수의 애플리케이션만이 활성화되고, 나머지 애플리케이션들은 중지된다. 정책(policy)에 따라 어떤 애플리케이션이 중지될지 결정한다. 그러나, 운영 체제 컴포넌트는 (예를 들어, 특정 애플리케이션에 의해 수행되고 있는 동작을 이유로) 그 특정 애플리케이션이 중지되지 않도록 면제할 수 있다. 또한, 운영 체제 컴포넌트는 (예컨대, 다른 애플리케이션이 중지된 애플리케이션과의 통신하는 경우) 중지된 애플리케이션을 재개할 수도 있다.
Description
본 발명은 중지된 애플리케이션을 재개하거나, 애플리케이션이 중지되지 않도록 면제하는 기법에 관한 것이다.
많은 컴퓨팅 장치들이 복수의 프로그램을 동시에 실행하는데, 일부는 사용자에 의해 사용되고, 다른 것들은 백그라운드에서 실행되거나 사용자에 의해 사용될 준비를 하게 된다. 동시에 복수의 프로그램을 실행하게 되면 통상적으로 사용자는 자신이 사용하고자 하는 프로그램들 사이에서 신속한 전환이 가능하지만, 몇 가지 문제점이 생기게 된다. 그 중 하나는 사용자에게 거의 쓸모가 없는 백그라운드에서 실행되어 사용자에 의해 조만간 사용될 가능성이 낮은 프로그램들이 이러한 복수에 프로그램에 포함되는 경우가 잦다는 것이다. 이들 프로그램은 상당한 양의 (프로세서 시간, 메모리 등과 같은) 리소스를 사용할 수 있어, 불필요하게 에너지를 사용하고 컴퓨팅 장치에 전원을 공급하는 배터리의 수명을 감소시킬 수도 있다. 그러나, 복수의 프로그램이 동시에 실행되지 않도록 한다면 프로그램을 재시작해야 하기 때문에 사용자가 기대하는 응답성과 기능성이 저하되게 될 것이다.
본 요약은 이하의 상세한 설명에서 보다 자세히 설명될 개념들 중 선택된 것들을 단순화된 형태로 소개하고자 제공된다. 본 요약은 청구 대상의 필수 특성 또는 핵심 특성을 나타내고자 하는 것이 아니며, 청구 대상의 범위를 한정하기 위해 사용되는 것도 아니다.
본 발명의 하나 이상의 특징에 따르면, 컴퓨팅 장치 상에서 실행되는 복수의 애플리케이션이 정책을 충족시키지 않음을 이유로 중지되어야 하는 경우, 이 복수의 애플리케이션 중 하나의 애플리케이션은 중지를 면제하도록 하는 요청이 수신된다. 이 요청은 컴퓨팅 장치 상에서 실행되는 운영 체제 컴포넌트로부터 수신된다. 그 요청에 응답하여, 그 하나의 애플리케이션은 컴퓨팅 장치 상에서 중지되지 않도록 면제된다.
본 발명의 하나 이상의 특징에 따르면, 컴퓨팅 장치가 어떤 애플리케이션을 위한 사용자 인터페이스를 더 이상 디스플레이하지 않음을 이유로 그 애플리케이션이 중지된 경우, 그 애플리케이션의 실행을 재개하도록 하는 요청이 수신된다. 이 요청은 컴퓨팅 장치 상에서 실행되는 운영 체제 컴포넌트로부터 수신된다. 그 요청에 응답하여, 그 애플리케이션이 재개된다.
도면 전반에 걸쳐 동일한 참조부호는 동일한 구성요소를 참조하기 위해 사용된다.
도 1은 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 예시적인 컴퓨팅 장치를 나타내는 블럭도이다.
도 2는 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 예시적인 시스템을 도시한다.
도 3은 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 장치를 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 4는 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 장치를 위한 또 다른 예시적인 프로세스를 보여주는 흐름도이다.
도 5는 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치를 도시한다.
도 1은 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 예시적인 컴퓨팅 장치를 나타내는 블럭도이다.
도 2는 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 예시적인 시스템을 도시한다.
도 3은 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 장치를 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 4는 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 장치를 위한 또 다른 예시적인 프로세스를 보여주는 흐름도이다.
도 5는 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치를 도시한다.
중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제 기법이 본 명세서에서 논의된다. 복수의 애플리케이션이 동시에 컴퓨팅 장치 상에서 시작되고 메모리에 로딩될 수 있지만, 이들 중 특정 개수(예를 들어, 한두 개)의 애플리케이션만이 주어진 시간에 활성화된다. 활성화되지 않은 애플리케이션들은 중지되는데, 이는 이들 애플리케이션이 프로세서를 사용할 수 없음을 의미한다. 어떤 애플리케이션이 중지되어야 할지를 결정하기 위해서는 소정 정책(policy)이 적용된다. 그러나, 운영 체제 컴포넌트는 특정 애플리케이션이 (예컨대, 그 애플리케이션에 의해 실행되고 있는 동작 때문에) 중지되지 않도록 면제할 수 있다. 또한, 운영 체제 컴포넌트는 중지된 애플리케이션을 (이를테면, 다른 애플리케이션이 그 중지된 애플리케이션과의 통신을 필요로 한다는 이유로) 재개할 수도 있다.
애플리케이션을 종료하지 않고 중지함으로써 백그라운드에서 실행되는 불필요한 애플리케이션들과 관련된 여러 문제들을 해결할 수 있다. 프로그램을 재시작하는 것보다 중지 해제하는 것이 훨씬 빠르고 효율적인 경우가 많지만, 중지되어 있는 동안에는 애플리케이션이 실행되거나, 에너지를 소모하거나, 사용자가 사용하고 있는 다른 애플리케이션에 개입할 수 없게 된다. 그러나, 어떤 애플리케이션을 중지해도 무방한지, 그리고 어떤 애플리케이션을 중지하는 대신 종료해야 할지를 결정함에 있어서는 기술적 어려움이 남아 있다. 이러한 결정은 특정 애플리케이션 및/또는 애플리케이션들의 클래스에 대해 시스템이 유지하고 있는 정책을 관찰하고 수정하는 것에 의해 부분적으로 내려질 수 있다.
도 1은 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 중지 면제를 구현하는 예시적인 컴퓨팅 장치(100)를 도시하는 블럭도이다. 컴퓨팅 장치(100)는 다양한 유형의 장치일 수 있다. 예컨대, 컴퓨팅 장치(100)는 랩탑이나 넷북 컴퓨터, 태블릿 또는 노트패드 컴퓨터, 데스크탑 컴퓨터, 서버 컴퓨터, 모바일 스테이션, 엔터테인먼트 장치, 디스플레이 장치에 통신가능하게 결합된 셋탑박스, 텔레비전이다 기타 디스플레이 장치, 셀룰러 또는 기타 무선 전화, 게임 콘솔, 오토모티브 컴퓨터 등이 될 수 있다. 따라서, 컴퓨팅 장치(100)는 상당한 메모리와 프로세서 리소스를 구비한 풀 리소스 장치(예를 들어, 퍼스널 컴퓨터나 게임 콘솔)일 수도 있고, 제한된 메모리 및/또는 프로세싱 리소스를 갖는 저사양 장치(예컨대, 통상적인 셋탑 박스, 휴대용 게임 콘솔)일 수도 있다.
컴퓨팅 장치(100)는 운영 체제(102)와 하나 이상의 애플리케이션(104)을 포함한다. 동작 중에 운영 체제(102)와 애플리케이션(104)은 컴퓨팅 장치(100) 상에서 실행되며, 운영 체제(102)가 애플리케이션(104)을 관리한다. 애플리케이션(104)의 관리는 이하에서 보다 상세히 논의되는 바와 같이 하나 이상의 애플리케이션을 자동으로 종료하는 것을 포함할 수 있다.
운영 체제(102)는 애플리케이션 관리 모듈(114), 시스템 응답도 분석 모듈(116), 애플리케이션 수명 관리 모듈(118), 애플리케이션 종료 모듈(120), 정책 평가 모듈(122), 애플리케이션 중지 모듈(124)을 포함한다. 도면에는 모듈들(114 ~ 124)이 운영 체제(102)의 일부인 것으로 도시되어 있지만, 하나 이상의 모듈들(114 ~ 124)이 운영 체제(102)와 분리되어 구현될 수 있다. 또한, 하나 이상의 모듈들(114 ~ 124)이 제공하는 기능이 복수의 모듈들로 분리될 수도 있고, 둘 이상의 모듈들(114 ~ 124)이 제공하는 기능 중 적어도 일부가 하나의 모듈로 결합될 수도 있다는 점에 유의해야 한다. 나아가, 모듈들(114 ~ 124)이 도시되어 있지만, 운영 체제(102)는 다양한 추가 기능을 제공하는 다양한 추가 모듈들을 포함할 수 있다는 점도 이해해야 한다.
본 명세서에서 논의되는 운영 체제(102)의 다양한 모듈들은 서로 다양한 통지나 정보를 주고 받는다. 이러한 통지나 통신은 다양한 형태로 일어날 수 있다. 예를 들어, 한 모듈이 다른 모듈의 애플리케이션 프로그래밍 인터페이스(API)를 호출할 수 있고, 한 모듈이 수신하도록 등록된 이벤트를 다른 모듈이 보고할 수도 있으며, 한 모듈이 어떤 위치에 데이터나 기타 정보를 저장하면 다른 모듈이 이로부터 데이터나 정보를 검색할 수도 있다.
애플리케이션 관리 모듈(114)은 임의의 주어진 시간에 컴퓨팅 장치(100) 상에서 애플리케이션(104)들 중 어느 것이 실행되고 있고, 활성화 또는 비활성화되어 있는지를 모니터링하거나 알고 있다. 활성화 애플리케이션이란 컴퓨팅 장치(100)의 하나 이상의 프로세서에 의해 실행되도록 현재 스케쥴링되어 있는 애플리케이션을 가리키며, 실행을 위해 프로세서 시간이 할당되어 있다. 비활성화 애플리케이션은 컴퓨팅 장치(100)의 하나 이상의 프로세서에 의해 실행되도록 현재 스케쥴링되어 있지 않은 애플리케이션을 가리키며, 실행을 위한 프로세서 시간도 할당되어 있지 않다. 애플리케이션(104)은 컴퓨팅 장치(100)의 메모리로 로딩될 수 있지만, 이하에서 상세히 설명할 바와 같이 비활성화 애플리케이션이다.
애플리케이션 관리 모듈(114)은 임의의 주어진 시간에 어느 애플리케이션(104)이 사용되고 있는지를 모니터링하거나 알고 있다. 일반적으로, 애플리케이션(104)은 그 애플리케이션을 위한 사용자 인터페이스가 특정 시간에 컴퓨팅 장치(100)에 의해 디스플레이되거나 제공되고 있거나, 컴퓨팅 장치(100)의 사용자가 특정 시간에 그 애플리케이션에 입력을 제공하고 있는 경우, 그 특정 시간에 사용되고 있는 것이다. 모듈(114)은 다양한 방식으로 임의의 주어진 시간에 어느 애플리케이션(104)이 사용되고 있는지 판단할 수 있다. 예컨대, 컴퓨팅 장치(100)에 결합되거나 그 일부를 이루는 디스플레이 장치 상에 어떤 애플리케이션이 사용자 인터페이스를 디스플레이하는 윈도우가 현재 디스플레이되고 있거나, 컴퓨팅 장치(100)에 결합되거나 그 일부를 이루는 디스플레이 장치 상에 어떤 애플리케이션이 사용자 인터페이스를 디스플레이하는 윈도우가 최상 레벨 윈도우로서 디스플레이되고 있거나, 어떤 애플리케이션이 사용자 인터페이스를 디스플레이하는 윈도우가 최소화되어 있지 않은 경우, 모듈(114)은 그 애플리케이션(104)이 현재 사용 중이라고 판단할 수 있다. 또한, 특정 시간에 사용되고 있는 다른 애플리케이션이 어떤 애플리케이션과의 통신을 필요로 한다면, 그 어떤 애플리케이션은 그 특정 시간에 사용 중인 것으로 판단된다. 이를테면, 모듈(114)은 컴퓨팅 장치(100)에 결합되거나 그 일부를 이루는 디스플레이 장치 상에 디스플레이되는 최상 레벨 윈도우인 사용자 인터페이스를 디스플레이하는 다른 애플리케이션(104)과 어떤 애플리케이션(104)이 통신하고 있다면, 그 어떤 애플리케이션(104)이 현재 사용 중인 것으로 판단할 수 있다.
하나 이상의 실시예에서, 운영 체제(102)는 임의의 주어진 시간에 특정 개수(예를 들어, 한두 개)의 윈도우만 디스플레이되도록 할 수 있다. 애플리케이션(104)은 그러한 윈도우 내에 자신의 사용자 인터페이스를 디스플레이하므로, 임의의 주어진 시간에는 그 특정 개수의 애플리케이션(104)만이 자신의 사용자 인터페이스를 디스플레이할 수 있다. 임의의 주어진 시간에 어떤 애플리케이션(104)이 컴퓨팅 장치(100)에 결합되거나 그 일부인 디스플레이 장치 상에 사용자 인터페이스를 디스플레이하고 있다면, 그 애플리케이션은 그 특정 시간에 컴퓨팅 장치(100)의 사용자에 의해 현재 사용되고 있는 애플리케이션(104)인 것으로 판단된다. 그리고, 컴퓨팅 장치(100)에 결합되거나 그 일부인 디스플레이 장치 상에 사용자 인터페이스를 디스플레이하고 있지 않은 애플리케이션(104)은 그 특정 시간에 컴퓨팅 장치(100)의 사용자에 의해 현재 사용되고 있지 않은 애플리케이션(104)인 것으로 판단된다.
애플리케이션 수명 관리 모듈(118)은 어느 애플리케이션(104)을 실행할지를 결정하기 위해 운영 체제(102)가 적용하는 정책을 제어한다. 이 정책은 임의의 주어진 순간에 어떤 애플리케이션(104)이 활성화인지 비활성화인지를 판단하는 방법, 어느 애플리케이션(104)을 종료해야 하는지 판단하는 방법, 임의의 주어진 시간에 몇 개의 윈도우를 디스플레이할 수 있는지 여부 등을 나타낼 수 있다. 모듈(118)은 정책을 이용하여 사전 설정되거나, 컴퓨팅 장치(100)의 사용자로부터 (예컨대, 다양한 선호도 또는 설정 세팅을 통해) 정책을 수신하거나, 컴퓨팅 장치(100)의 다른 모듈 또는 다른 컴퓨팅 장치로부터 정책을 수신하거나, 네트워크로부터 (예를 들어, 네트워크를 통해 다른 장치나 서비스로부터) 정책을 수신하는 등, 다양한 방식으로 정책을 획득할 수 있다.
정책 평가 모듈(122)은 운영 체제(102)가 적용하는 정책이 애플리케이션(104)에 의해 충족되고 있는지 여부를 판단한다. 정책 평가 모듈(122)은 임의의 주어진 시간에 어느 애플리케이션(104)이 사용되고 있는지 판단하기 위해 애플리케이션 관리 모듈(114)과 통신한다. 이 판단 및 정책에 기초하여, 모듈(122)은 정책이 애플리케이션(104)에 의해 충족되고 있는지 여부를 판단한다. 예를 들어, 사용되고 있지 않은 애플리케이션들이 비활성화 상태라고 정책이 나타내고, 컴퓨팅 장치(100)의 사용자에 의해 사용되고 있지 않은 하나 이상의 애플리케이션이 특정 시간에 활성화되어 있으면, 모듈(122)은 그 특정 시간에 그 정책이 애플리케이션(104)에 의해 충족되지 않고 있다고 판단한다.
애플리케이션(104)이 정책을 충족시키지 못한다고 판단되면, 정책 평가 모듈(122)은 애플리케이션(104)이 정책을 충족시키도록 하기 위해 중지할 하나 이상의 애플리케이션(104)을 결정한다. 애플리케이션을 중지한다는 것은 그 애플리케이션을 비활성화 상태로 만드는 것을 의미한다. 정책 평가 모듈(122)은 어느 애플리케이션(104)이 사용되고 있는지에 대한 판단 및 정책에 기초하여, 애플리케이션(104) 중 어느 것을 중지할지를 결정한다. 이를테면, 정책이 사용되고 있지 않은 애플리케이션이 비활성화 상태임을 나타내고, 사용되고 있지 않은 하나 이상의 애플리케이션이 특정 시간에 활성화이면, 사용되고 있지 않지만 활성화 상태인 애플리케이션(104)을 중지해야 한다고 모듈(122)이 결정한다.
애플리케이션 중지 모듈(124)은 정책 평가 모듈(122)로부터 중지할 하나 이상의 애플리케이션(104)을 나타내는 표지를 수신한다. 하나 이상의 애플리케이션(104)을 중지하라는 표지에 응답하여, 애플리케이션 중지 모듈(124)은 표시된 하나 이상의 애플리케이션(104)을 중지한다. 애플리케이션의 중지는 그 애플리케이션이 중지될 것이라는 사실을 통보함으로써 이루어진다. 선택적으로 애플리케이션이 중지되기 전에 저장해야 할 데이터 및/또는 상태 정보를 저장하도록 소정 시간(예를 들어, 1초 또는 4초)이 주어질 수도 있다. 애플리케이션은 데이터 및/또는 상태 정보를 비휘발성 또는 기타 영구 저장 장치에 저장하여, (애플리케이션이 종료되더라도) 데이터 및/또는 상태 정보가 추후 이용될 수 있도록 한다. 애플리케이션을 중지한다는 것은 애플리케이션을 활성화 상태로부터 비활성화 상태로 변경하는 것을 의미한다. 비활성화 애플리케이션(즉, 중지된 애플리케이션)은 전술한 바와 같이 컴퓨팅 장치(100)의 프로세서에 의해 실행되지 않는다. 애플리케이션을 중지하기 위한 운영 체제(102)의 API를 호출하는 등 다양한 방식으로 애플리케이션을 중지할 수 있다.
애플리케이션은 중지된 후 후속적으로 활성화될 수 있다는 점에 유의해야 한다. 예를 들어, 사용자가 애플리케이션을 사용하고자 함을 나타내는 사용자 입력이 그 사용자로부터 수신될 수 있다. 그 애플리케이션이 비활성화 상태인 경우, 애플리케이션은 그 애플리케이션을 사용하고자 하는 사용자 요청에 응답하여 활성화 상태로 될 수 있고, 그 애플리케이션은 컴퓨팅 장치(100)의 하나 이상의 프로세서에 의해 실행된다. 중지된 애플리케이션을 활성화 애플리케이션으로 만드는 것을 애플리케이션의 재개라고도 한다. 다시 활성화되고 나면 애플리케이션은 실행을 재개하여, 애플리케이션에 적절하도록 저장된 상태를 복원한다.
시스템 응답성 분석 모듈(116)은 메모리 사용에 관한 하나 이상의 다양한 측정치를 사용하여 하나 이상의 애플리케이션(104)의 종료 여부를 결정한다. 이를테면, 시스템 응답성 분석 모듈(116)은 애플리케이션(104)에 할당된 메모리 양을 나타내는 메모리 로드 측정치나, 임의의 주어진 시간에 이용가능한 물리적인 메모리 양을 나타내는 이용가능한 물리적 메모리 측정치나, 페이지들이 저장된 저장 장치 상의 이용가능한 저장 공간의 양을 나타내는 이용가능한 페이지 파일 공간 측정치나, 운영 체제(102)의 메모리 관리자에 의해 유지되는 대기 리스트 상의 페이지들의 평균 수명을 나타내는 대기 리스트 상의 평균 수명 측정치 등에 기초하여 하나 이상의 애플리케이션(104)이 종료되어야 한다고 결정할 수 있다. 시스템 응답성 분석 모듈(116)은 하나 이상의 애플리케이션(104)이 종료되어야 한다는 결정에 응답하여, 애플리케이션 종료 모듈(120)에 하나 이상의 애플리케이션(104)을 종료하도록 통지한다.
애플리케이션 종료 모듈(120)은 시스템 응답성 분석 모듈(116)로부터의 하나 이상의 애플리케이션(104)을 종료하라는 통지에 응답하여, 종료할 하나 이상의 애플리케이션(104)을 결정한다. 애플리케이션은 그 애플리케이션을 종료하기 위한 운영 체제(102)의 API를 호출하는 등의 다양한 방식으로 종료될 수 있다. 하나 이상의 실시예에서, 모듈(120)은 중지되어 있는 하나 이상의 애플리케이션(104)을 종료하도록 선택하고, 선택된 하나 이상의 애플리케이션(104)을 종료한다. 애플리케이션 종료 모듈(120)은 각 애플리케이션(104)이 얼마나 최근에 사용되었는지, 각 애플리케이션(104)이 얼마나 자주 사용되는지, 애플리케이션(104)에 의해 사용되는 메모리의 양은 어떠한지 등에 기초하여 애플리케이션(104) 중 어느 것을 종료할지 결정한다.
이와는 달리, 애플리케이션을 종료하는 대신, 애플리케이션 종료 모듈(120)은 애플리케이션을 하드 디스크와 같은 1차 메모리로부터 플래쉬 저장 장치와 같은 2차 메모리로 애플리케이션을 옮길 수도 있다. 모듈(120)은 전술한 것과 같이 어느 애플리케이션(104)을 종료할지 결정하는 것과 유사한 방식으로 어느 애플리케이션(104)을 옮길지 결정할 수 있다. 애플리케이션(104)은 그 애플리케이션을 옮기기 위한 운영 체제(102)의 API를 호출하거나, 그 애플리케이션에 의해 사용되는 메모리의 페이지들을 2차 저장 장치로 복사하는 등의 다양한 방식으로 옮길 수 있다.
애플리케이션 수명 관리 모듈(118)은 운영 체제(102)의 다른 모듈이나 컴포넌트로부터 애플리케이션(104)의 중지 면제 요청을 수신할 수 있다. 그러한 요청은, 예를 들어, 그 애플리케이션(104)에 의해 수행되고 있는 동작(예컨대, 오디오 컨텐트의 재생, 문서의 인쇄 등)이 아직 완료되지 않았음을 알고 있는 운영 체제(102)의 모듈이나 컴포넌트에 의해 만들어진다. 특정 애플리케이션에 대한 중지 면제 요청에 응답하여, 애플리케이션 수명 관리 모듈(118)은 하나 이상의 애플리케이션(104) 중 중지할 애플리케이션을 결정할 때 그 특정 애플리케이션은 중지하지 말라고 정책 평가 모듈(122)에 통지한다. 애플리케이션의 중지 면제란 그 애플리케이션이 중지되지 않도록 하는 것을 나타내며, 만일 그 애플리케이션이 (그 애플리케이션에 대한 중지 면제 요청이 없다면) 중지되어야 하는 경우, 그 애플리케이션에 대한 중지 면제 요청은 그 애플리케이션이 중지되는 것을 방지한다.
애플리케이션 수명 관리 모듈(118)은 운영 체제(102)의 다른 모듈이나 컴포넌트로부터 중지된 애플리케이션(104)의 실행을 재개하라는 요청을 수신할 수 있다. 이러한 요청은, 예컨대, 중지된 애플리케이션과 통신하고자 하는 애플리케이션(104)을 알고 있는 운영 체제(102)의 모듈이나 컴포넌트에 의해 만들어진다. 중지된 애플리케이션의 실행을 재개하라는 요청에 응답하여, 애플리케이션 수명 관리 모듈(118)은 애플리케이션을 재개한다. 애플리케이션은 그 애플리케이션을 재개하기 위한 운영 체제(102)의 API를 호출하는 등의 다양한 방식을 통해 재개될 수 있다. 애플리케이션 수명 관리 모듈(118)은 애플리케이션을 재시작하기 위한 운영 체제(102)의 API를 호출하고 애플리케이션을 재개함으로써 종료된 애플리케이션을 재개할 수도 있다.
도 2는 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 예시적인 시스템(200)을 도시한다. 시스템(200)은 예컨대 도 1의 컴퓨팅 장치(100)를 이용하여 구현할 수 있다. 시스템(200)은 도 1의 애플리케이션 수명 관리 모듈(118)일 수 있는 애플리케이션 수명 관리 모듈(202)을 포함한다. 시스템(200)은 통신 층(204), 하나 이상의 운영 체제 (OS) 컴포넌트(206), 하나 이상의 운영 체제 (OS) 컴포넌트(208), 하나 이상의 애플리케이션(210)을 포함한다. 애플리케이션은 예를 들어 도 1의 애플리케이션(104)일 수 있다. OS 컴포넌트(206, 208)는 (예컨대 도 1의 운영 체제(102)와 같은) 다양한 운영 체제 컴포넌트 또는 모듈이다. 통신 층(204)은 운영 체제 컴포넌트(206, 208)가 애플리케이션 수명 관리 모듈(202)로 요청을 통신하도록 한다. 이 요청은 중지된 애플리케이션의 실행을 재개하라는 요청과 애플리케이션의 중지를 면제하라는 요청을 포함한다. 통신 층(204)은 수명 인터페이스 API(212) 또는 비동기식 통신 메커니즘(214)으로서 도시되었지만 다른 통신 메커니즘을 사용할 수도 있다. 통신 층(204)은 통상적으로 운영 체제 컴포넌트(206, 208)에 노출되지만 애플리케이션(210)에는 노출되지 않는다는 점에 유의해야 한다. 따라서, 운영 체제 컴포넌트(206, 208)는 애플리케이션의 요청이나 동작에 따라 통신 층(204)을 통해 모듈(202)로 요청을 제출할 수 있지만, 애플리케이션(210) 자신이 통신 층(204)을 통해 모듈(202)과 직접 통신할 수는 없다.
어떤 OS 컴포넌트(206)는 수명 인터페이스 API(212)를 이용하여 모듈(202)과 통신하고, 다른 OS 컴포넌트(208)는 비동기신 통신 메커니즘(214)을 이용하여 모듈(202)과 통신한다. OS 컴포넌트가 모듈(202)과 통신하는 방식은 여러 가지가 있으며, OS 컴포넌트의 개발자가 선택할 수 있다. 하나 이상의 실시예에서, 운영 체제 컴포넌트가 모듈(202)과 통신하는 방식은 그 운영 체제 컴포넌트가 사용자 모드에서 실행되는지 커널 모드에서 실행되는지에 따라 결정된다. 예컨대, 운영 체제 컴포넌트가 커널 모드에서 실행되고 있으면, 그 운영 체제는 비동기식 통신 메커니즘(214)을 이용하여 모듈(202)과 통신하고, 운영 체제가 사용자 모드에서 실행되고 있으면, 그 운영 체제는 수명 인터페이스 API(212)를 이용하여 모듈(202)과 통신한다.
수명 인터페이스 API(212)는 운영 체제 컴포넌트(206)에 의해 호출될 수 있는 하나 이상의 방법을 노출시킨다. API(212)의 방법은 운영 체제 컴포넌트(206)에 의해 호출될 수 있는데, 애플리케이션(210)의 식별자를 파라미터로서 제공한다. 다양한 애플리케이션의 식별자들을 이용하여 애플리케이션(210)을 서로 구별할 수 있다. 이를테면, 애플리케이션(210)의 식별자는 (예컨대, 애플리케이션의 이름의 조합, 패키지의 발행자의 이름, 애플리케이션이 동작하도록 설계된 아키텍쳐의 표지, 패키지의 버전 번호 및/또는 패키지의 다양한 기타 특성과 같은) 그 애플리케이션을 포함하는 패키지의 식별자일 수 있다. 운영 체제 컴포넌트(206)는 면제 클래스(exemption class)나 재개 클래스(resumption class)를 파라미터로서 제공할 수도 있다. 면제 클래스나 재개 클래스는 운영 체제 컴포넌트(206)가 요청을 만드는 이유를 나타내고, 이하 설명하는 다양한 방식으로 사용될 수 있다. 면제 클래스 또는 재개 클래스는 API(2112)의 방법을 호출할 때 파라미터로서 식별될 수도 있고, 호출된 방법 내에 고유한 것일 수도 있다 (예를 들어, 서로 다른 면제 및/또는 재개 클래스에 대해 서로 다른 방법들이 노출될 수 있다). 요청의 유형(이를테면, 중지된 애플리케이션의 실행 재개 요청 또는 애플리케이션의 중지 면제 요청)은 API(212)의 방법을 호출할 때 파라미터로서 식별될 수도 있고, 요청은 호출된 방법 내에 고유한 것일 수도 있다 (예컨대, 서로 다른 유형의 요청에 대해 서로 다른 방법들이 호출될 수 있다).
비동기식 통신 메커니즘(214)은 다양한 운영 체제 컴포넌트(208)로부터 통지를 수신할 수 있는 모듈이나 컴포넌트를 포함한다. (애플리케이션 수명 관리 모듈(202)과 같은) 다른 컴포넌트 또는 모듈이 이들 통지를 수신하도록 구독신청할 수 있다. 따라서, 운영 체제 컴포넌트(208)가 메커니즘(214)으로 통지를 제공할 때마다, 메커니즘(214)이 그 통지를 모듈(202)로 제공한다. 이 통지는 (전술한 것과 같이 다양한 형태를 취할 수 있는) 애플리케이션(210)의 식별자, 요청에 대한 면제 클래스나 재개 클래스, 및/또는 요청 타입을 나타내는 표지(예를 들어, 요청이 중지된 애플리케이션의 실행 재개 요청인지 애플리케이션의 중지 면제 요청인지)와 같은 다양한 정보를 포함할 수 있다.
애플리케이션에 대한 중지 면제 요청에 응답하여, 애플리케이션 수명 관리 모듈(202)은 요청을 만든 운영 체제 컴포넌트(206, 208)가 적절한 이유로 그러한 요청을 만든다고 신뢰한다. 따라서, 모듈(202)은 하나 이상의 애플리케이션(104) 중 어느 애플리케이션을 중지할지 결정함에 있어서 식별된 해당 애플리케이션은 중지하지 말라고 평가 모듈에 통지함으로써, 해당 애플리케이션이 중지되는 것을 방지한다.
운영 체제 컴포넌트(206, 208)는 다양한 이유로 애플리케이션의 중지를 면제하도록 요청할 수 있고, 서로 다른 운영 체제 컴포넌트(206, 208)는 서로 다른 이유로 애플리케이션이 중지되도록 요청할 수 있다. 통상적으로, 운영 체제 컴포넌트(206, 208)는 지속하도록 허용되어 있으나 애플리케이션(210)이 중지되면 지속할 수 없는 동작을 애플리케이션(210)이 수행하고 있다고 운영 체제 컴포넌트(206, 208)가 판단하면 해당 애플리케이션(210)의 중지를 면제하도록 요청한다. 예를 들어, 애플리케이션(210)은 문서를 인쇄하기 위해 페이지 당 데이터를 제공하는 것과 관련된 인쇄 동작을 수행하고 있을 수 있다. 애플리케이션(210)이 문서 인쇄 완료 전에 중지되면 문서 인쇄가 완료되지 못하기 때문에 (예컨대, 인쇄 스풀러인) 운영 체제 컴포넌트(206, 208)는 해당 애플리케이션(210)의 중지를 면하도록 요청한다. 다른 예로서, 애플리케이션(210)은 (이를테면, 노래나 노래들의 재생 목록과 같은) 오디오 컨텐트를 재생하는 오디오 재생기 애플리케이션일 수 있다. 애플리케이션(210)이 중지되면 오디오 컨텐트의 재생이 멈출 것이므로 운영 체제(206, 208)는 해당 애플리케이션(210)의 중지를 면제하도록 요청한다.
또 다른 예로서, 애플리케이션은 장치 드라이버인 운영 체제 컴포넌트(206, 208)를 통해 (예컨대, 카메라, 네트워크 인터페이스 카드, 무선 장치 등과 같은) 장치와 통신하고 있을 수 있다. (예를 들어, 애플리케이션(210)과 장치 사이의 입/출력 (I/O) 과 같이) 통신이 적어도 소정 기준 레이트로 일어나고 있다면, 운영 체제 컴포넌트(206, 208)는 그 애플리케이션이 해당 장치를 능동적으로 사용하고 있다고 판단하고, 그 애플리케이션이 그 장치를 능동적으로 사용하고 있다면 해당 애플리케이션(210)의 중지를 면제하라고 요청한다. 또 다른 예로서, 애플리케이션(210)은 공유 동작의 일환으로 다른 애플리케이션과 (예컨대, 잘 정의된 인터페이스를 통해) (사진, 음악, 비디오 등)의 정보를 공유하고 있을 수 있다. 공유 동작이 수행 중이면, (예를 들어 그 공유 동작을 촉진하거나 알고 있는) 운영 체제 컴포넌트(206, 208)는 공유 동작이 완료될 수 있도록 그 애플리케이션(210)의 중지를 면제해달라고 요청한다. 운영 체제 컴포넌트가 애플리케이션의 중지를 면제하도록 요청하게 만드는 다양한 다른 동작들이 있는데, 그 예로서 (이를테면 LAN 상이나 인터넷을 통해) 다른 장치와 데이터를 주고 받는 애플리케이션, (예컨대 하드 드라이브를 백업하거나, 멀웨어(malware)를 체크하는 등의) 소정 장치 유틸리티 동작을 수행하는 애플리케이션 등이 있다.
애플리케이션의 중지를 면제하라는 요청은 면제 클래스를 나타내기도 한다. 다양한 면제 클래스가 사용될 수 있고, 각 면제 클래스는 그 애플리케이션의 중지 면제를 요청하는 이유를 나타낸다. 예를 들어, 면제 클래스는 인쇄, 오디오, 디바이스 I/O 등일 수 있다.
이와는 달리, 면제 클래스를 밝히는 대신, 애플리케이션의 중지 면제가 요청되는 이유를 애플리케이션 수명 관리 모듈(202)이 추론할 수도 있다. 이를테면, 각 운영 체제 컴포넌트(206, 208)는 각각이 애플리케이션의 중지 면제를 요청하는 특정한 이유를 갖고 있을 수 있다. 따라서, 모듈(202)은 요청이 수신된 운영 체제 컴포넌트(206, 208)에 기초하여 애플리케이션의 중지 면제가 요청되는 이유를 파악할 수 있게 된다.
애플리케이션 수명 관리 모듈(202)은 애플리케이션의 중지를 무기한 면제할 수도 있고 소정 이벤트가 발생하거나 소정 시간이 경과할 때까지만 면제할 수도 있다. 그러한 이벤트의 예로는 (예를 들어 문서 인쇄가 종료되었거나, 사용자가 적어도 소정 임계 시간(예컨대, 2분) 동안 오디오 컨텐트의 재생을 멈추었거나 등의 이유로) 애플리케이션에 대한 중지가 더 이상 면제되지 않게 되어, 그 애플리케이션의 중지 면제를 요청했던 운영 체제 컴포넌트가 모듈(202)에 이를 알리는 경우가 있을 수 있다. 다른 예로서, 모듈(202)은 애플리케이션의 특정 시간(예컨대 5분, 1시간 등) 동안만 중지가 면제되도록 할 수도 있다. 이 특정 시간은 여러 가지 방식으로 결정될 수 있는데, 이는 애플리케이션에 대한 중지 면제가 요청되는 이유 (이를테면, 운영 체제가 제공하는 요청에 대한 면제 클래스에 따라 특정 시간도 달라질 수 있음)에 기초할 수도 있고, 모듈(202)의 디폴트 설정에 기초할 수도 있으며, 모듈(202)로부터의 요청의 파라미터로서 수신된 특정 시간을 나타내는 표시자에 기초할 수도 있다. 이 특정 시간은 예컨대 애플리케이션의 중지를 면제하라는 하나 이상의 추가 요청을 보냄으로써, 운영 체제 컴포넌트에 의해 선택적으로 연장될 수도 있다. 그러한 이벤트 또는 시간 경과에 응답하여, 애플리케이션은 더 이상 중지가 면제되지 않는다. 따라서, 모듈(202)은 정책 평가 모듈(예컨대, 도 1의 정책 평가 모듈(122))을 호출하여 애플리케이션을 중지시키거나, 전술한 바와 같이 운영 체제가 적용하는 정책이 애플리케이션(210)에 의해 충족되는지 여부를 판정할 수도 있다.
애플리케이션의 중지가 면제되는 이유(예를 들어, 운영 체제 컴포넌트에 의해 제공되는 요청의 면제 클래스)는 다른 방식으로 사용될 수도 있다. 이를테면, 애플리케이션 수명 관리 모듈(202)은 어느 모듈(206, 208)이 애플리케이션의 중지 면제를 요청했는지, 왜 운영 체제 컴포넌트가 애플리케이션의 중지 면제를 요청했는지, 어느 애플리케이션의 중지가 면제됐는지에 대한 기록(record)을 보관하는 기능을 포함하거나 그러한 기능을 포함하는 다른 모듈을 호출할 수 있다. 이 기록은 다양한 방식으로 사용될 수 있는데, 중지 면제 요청의 잠재적인 남용을 밝히거나, 애플리케이션의 중지 면제 요청이 수신되는 빈도를 밝힐 수 있다.
중지된 애플리케이션의 실행을 재개하라는 요청에 응답하여, 애플리케이션 수명 관리 모듈(202)은 그 요청을 만든 운영 체제 컴포넌트(206, 208)는 적절한 이유에서 그러한 요청을 만들었다고 신뢰한다. 따라서, 모듈(202)은 중지된 애플리케이션을 재개하기 위한 운영 체제(102)의 API를 호출함으로써 중지된 애플리케이션을 재개한다.
운영 체제 컴포넌트(206, 208)는 다양한 이유로 애플리케이션의 재개를 요청할 수 있고, 서로 다른 운영 체제 모듈(206, 208)은 서로 다른 이유로 애플리케이션의 재개를 요청할 수 있다. 통상적으로, 운영 체제 컴포넌트(206, 208)는 다른 애플리케이션, 컴포넌트, 또는 모듈이 중지된 애플리케이션과 통신하고자 하는 것에 응답하여 애플리케이션의 재개를 요청한다. 예를 들어, 애플리케이션(210)은 다양한 통상적인 프로세스간 통신 기법(inter-process communication techniques)을 사용하여 다른 애플리케이션(210)과의 통신을 요구할 수 있다. 운영 체제 컴포넌트(206, 208)는 다른 애플리케이션(210)이 중지되면 (중지된 애플리케이션은 실행을 위해 스케쥴링될 수 없어서) 그 애플리케이션과 통신할 수 없기 때문에, 다른 애플리케이션(210)의 재개를 요청한다. 다른 예로서, 애플리케이션(210)은 다른 애플리케이션(210)에 의해 수신된 사용자 요청(예컨대, 다른 애플리케이션(210)으로부터 복사된 데이터를 붙여 넣으라는 요청)에 응답하여 그 다른 애플리케이션(210)으로부터 데이터를 획득하고자 할 수 있다. 운영 체제 컴포넌트(206, 208)는 그 다른 애플리케이션(210)이 중지되면 그로부터 데이터를 획득할 수 없기 때문에, 그 다른 애플리케이션의 재개를 요청한다.
또 다른 예로서, 운영 체제 컴포넌트(206, 208) 자신이 (예를 들어, 중지된 애플리케이션으로부터 정보나 데이터를 획득하거나 수집하기 위해) 중지된 애플리케이션과 통신하고자 할 수도 있다. 운영 체제 컴포넌트는 애플리케이션(210)이 중지되면 그와 통신할 수 없기 때문에 애플리케이션(210)의 재개를 요청한다. 이들은 운영 체제 컴포넌트(206, 208)가 중지된 애플리케이션(210)의 재개를 요청할 수 있는 예시적인 이유들이며, 운영 체제 컴포넌트(206, 208)는 다양한 다른 이유로 인해 애플리케이션(210)의 재개를 요청할 수 있다.
중지된 애플리케이션의 실행을 재개하라는 요청은 그 요청에 대한 재개 클래스를 나타낼 수도 있다. 다양한 다른 재개 클래스들이 사용될 수 있으며, 각 재개 클래스는 그 애플리케이션의 재개가 요청되는 이유를 나타낸다. 예를 들어, 재개 클래스는 프로세스간 통신, 사용자 요청, 운영 체제 컴포넌트의 요구 등일 수 있다.
이와는 달리, 재개 클래스를 밝히는 대신, 애플리케이션의 재개가 요청되는 이유를 애플리케이션 수명 관리 모듈(202)이 추론할 수도 있다. 이를테면, 각 운영 체제 컴포넌트(206, 208)는 자신이 애플리케이션의 재개를 요청하는 특정한 이유를 가질 수 있다. 따라서, 모듈(202)은 요청을 수신한 운영 체제 컴포넌트(206, 208)에 기초하여 애플리케이션의 재개가 요청되는 이유를 알아낼 수도 있다.
애플리케이션이 재개되면, 애플리케이션 수명 관리 모듈(202)은 그 애플리케이션의 중지를 면제한다. 이 면제는 중지된 애플리케이션의 실행을 재개하라는 요청에 응답하여 수행된다는 점을 제외하고는 전술한 것과 유사하다. 전술한 것과 마찬가지로, 애플리케이션은 무기한 중지가 면제될 수도 있고, 소정 이벤트가 발생하거나, 소정 시간이 경과할 때까지만 면제될 수도 있다. 예컨대, 애플리케이션 수명 관리 모듈(202)은 특정 시간 (예를 들어, 2분, 10초 등) 동안 애플리케이션의 중지를 면제할 수 있으며, 이 특정 시간은 애플리케이션의 재개가 요청되는 이유에 기초하여 정해질 수 있다. 다른 예로서, 애플리케이션 수명 관리 모듈(202)은 애플리케이션의 재개를 요청한 이유가 더 이상 존재하지 않는다는 통지를 운영 체제 컴포넌트로부터 수신할 때까지 애플리케이션의 중지를 면제할 수 있다. 그러한 통지에 응답하여, 모듈(202)은 (도 1의 정책 평가 모듈(122)과 같은) 정책 평가 모듈을 호출하여, 애플리케이션을 중지할 수도 있고, 전술한 것과 같이 운영 체제에 의해 적용되는 정책이 그 애플리케이션(210)에 의해 충족되고 있는지 여부를 판단할 수도 있다.
하나 이상의 실시예에서, 중지된 애플리케이션의 실행 재개를 요청하는 운영 체제 컴포넌트(206, 208)는 몇 개의 애플리케이션(또는 운영 체제 컴포넌트)이 그러한 요청을 만드는 것을 트리거하는 액션(운영 체제 컴포넌트로 하여금 중지된 애플리케이션의 실행 재개 요청을 만들도록 한 액션)을 요청했는지에 대한 카운터 또는 기록을 관리한다. 서로 다른 이유에 대해 서로 다른 카운터나 기록이 관리될 수 있다. 예를 들어, 세 개의 서로 다른 애플리케이션이 프로세스간 통신 기법을 사용하여 중지된 애플리케이션과의 통신하고자 요청한다면, 운영 체제 컴포넌트(206, 208)는 세 개의 애플리케이션이 그 요청을 만들도록 트리거할 액션을 요청했음을 나타내는 카운터 또는 기록을 유지한다. 추가 애플리케이션이 프로세스간 통신 기법을 사용하여 중지된 애플리케이션과 통신하고자 한다면, 카운터를 증가시키거나 기록을 갱신하여 네 개의 애플리케이션이 그 요청을 만들도록 트리거할 액션을 요청했음을 나타내도록 한다. 또는, (중지된 애플리케이션이 재개된 후) 애플리케이션 중 하나가 프로세스간 통신을 완료하면, 카운터를 감소시키거나 기록을 갱신하여 두 개의 애플리케이션이 그 요청을 만들도록 트리거할 액션을 요청했음을 나타내도록 한다.
영(0) 개의 애플리케이션이 요청을 만들도록 트리거할 액션을 요청한 것으로부터 한 개의 애플리케이션이 요청을 만들도록 트리거할 액션을 요청한 것으로 카운터나 기록이 변경되면, 운영 체제 컴포넌트는 중지된 애플리케이션의 실행 재개를 요청한다. 하나 이상의 애플리케이션이 요청을 트리거할 액션을 요청했다고 나타내도록 카운터나 기록이 추가로 변경된 경우는, 그 요청이 이미 만들어졌기 때문에 운영 체제 컴포넌트가 중지된 애플리케이션의 실행 재개를 요청하지는 않는다. 한 개의 애플리케이션이 요청을 만들도록 트리거할 액션을 요청한 것으로부터 영(0) 개의 애플리케이션이 요청을 만들도록 트리거할 액션을 요청한 것으로 카운터나 기록이 변경되면, 운영 체제 컴포넌트가 애플리케이션 수명 관리 모듈(202)에 통지를 보내, 정책 평가 모듈이 운영 체제에 의해 적용되는 정책이 애플리케이션들에 의해 충족되고 있는지 여부를 판단하도록 한다. (예컨대, 다른 OS 컴포넌트(206, 208)로부터의 요청에 의해) 재개된 애플리케이션이 더 이상 중지 면제되지 않게 되면, 정책에 따라 재개된 애플리케이션을 중지할 수 있다. 여전히 하나 이상의 애플리케이션이 요청을 만들도록 트리거할 액션을 요청했다고 나타내도록 카운터나 기록을 추가로 변경해도, 운영 체제 컴포넌트가 모듈(202)에 통지를 보내 정책 평가 모듈로 하여금 운영 체제가 적용하는 정책이 애플리케이션들에 의해 충족되고 있는지 여부를 판단하도록 하지는 않는데, 이는 적어도 하나의 애플리케이션이 중지된 애플리케이션의 실행 재개 요청을 만들도록 트리거할 액션을 여전히 요청하기 때문이다.
도 3은 하나 이상의 실시예에 따라 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 장치를 위한 예시적인 프로세스(300)를 나타내는 흐름도이다. 프로세스(300)는 도 1의 장치(100)와 같은 장치에 의해 수행되는데, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합에 의해 구현될 수 있다. 프로세스(300)가 다양한 단계들의 세트로 도시되어 있지만, 그 다양한 단계들을 수행함에 있어서 도시된 순서로 제한되지는 않는다. 프로세스(300)는 중지된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 예시적인 프로세스이며, 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 추가적인 논의는 다른 도면을 참조로 본 명세서에 포함되어 있다.
프로세스(300)에서 애플리케이션의 중지를 면제하라는 요청이 수신된다 (단계 302). 이 요청은 운영 체제 컴포넌트로부터 수신되므로, 전술한 바와 같이 신뢰된다.
단계(302)에서 수신된 요청에 응답하여, 애플리케이션의 중지가 면제된다 (단계 304). 요청에 따라 면제함으로써, 전술한 바와 같이 컴퓨팅 장치 상에서 실행되는 하나 이상의 애플리케이션이 정책을 충족시키지 못함을 이유로 애플리케이션이 중지될 수도 있음에도 불구하고, 그 애플리케이션은 중지되지 않는다. 전술한 바와 같이, 애플리케이션은 무기한 중지가 면제될 수도 있고 소정 이벤트가 발생하거나 소정 시간이 경과할 때까지만 면제될 수도 있다.
도 4는 하나 이상의 실시예에 따라 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 장치를 위한 예시적인 프로세스(400)를 나타내는 흐름도이다. 프로세스(400)는 도 1의 장치(100)와 같은 장치에 의해 수행되는데, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합에 의해 구현될 수 있다. 프로세스(400)는 단계들의 세트로 도시되어 있지만, 이들 단계를 위한 동작들을 수행함에 있어 도시된 순서를 따를 필요는 없다. 단계(400)는 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하는 예시적인 프로세스로서, 애플리케이션이 재개 및/또는 애플리케이션의 중지 면제를 구현하는 추가 논의는 다른 도면들을 참조하여 본 명세서에 포함되어 있다.
프로세스(400)에서, 중지된 애플리케이션의 실행을 재개하라는 요청이 수신된다 (단계 402). 요청은 운영 체제 컴포넌트로부터 수신되며, 전술한 바와 같이 신뢰된다. 애플리케이션은 예컨대 전술한 바와 같이 컴퓨팅 장치가 그 애플리케이션에 대한 사용자 인터페이스를 더 이상 디스플레이하지 않음을 이유로 중지된 것일 수 있다.
요청에 응답하여, 애플리케이션의 실행이 재개된다 (단계 404). 애플리케이션은 컴퓨팅 장치 상에서 중지가 무기한 면제될 수도 있고, 전술한 바와 같이 소정 이벤트가 발생하거나 소정 시간이 경과할 때까지만 면제될 수도 있다.
그러므로, 본 명세서에서 논의되는 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제는 다양한 사용 시나리오를 지원한다. 사용되고 있지 않은 애플리케이션들을 중지하기 위해 정책이 적용되어, 사용자 인터페이스를 디스플레이하고 있지 않은 애플리케이션이 중지되도록 할 수 있다. 그러나, 어떤 애플리케이션이 운영 체제 컴포넌트에 의해 지속하도록 허용된 동작(예를 들어, 인쇄, 오디오 컨텐트 재생 등)을 수행하고 있다면, 그 애플리케이션은 중지가 면제될 수 있다. 또한, 중지된 애플리케이션과의 통신이 필요한 경우, 운영 체제 컴포넌트가 그 중지된 애플리케이션의 실행을 재개할 수 있다. 중지된 애플리케이션과의 통신이 완료된 후, 운영 체제 컴포넌트는 (그 애플리케이션이 중지되어서는 안 된다고 정책이 나타내지 않는 한) 그 애플리케이션을 다시 중지시킬 수 있다.
도 5는 하나 이상의 실시예에 따라 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제를 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치(500)를 도시한다. 컴퓨팅 장치(500)는 예컨대 도 1의 컴퓨팅 장치(100)일 수 있다.
컴퓨팅 장치(500)는 하나 이상의 프로세서나 프로세싱 유닛(502), 하나 이상의 메모리 및/또는 저장 컴포넌트(506)를 포함할 수 있는 하나 이상의 컴퓨터 판독가능 매체(504), 하나 이상의 입/출력 (I/O) 장치(508), 다양한 컴포넌트들과 장치들이 서로 통신할 수 있도록 하는 버스(510)를 포함한다. 컴퓨터 판독가능 매체(504) 및/또는 하나 이상의 I/O 장치(508)는 컴퓨팅 장치(500)의 일부로서 포함될 수도 있고 컴퓨팅 장치(500)에 연결될 수도 있다. 프로세서(502), 컴퓨터 판독가능 매체(504), 하나 이상의 장치(508) 및/또는 버스(510)는 단일 컴포넌트나 칩(이를테면 시스템 온 칩)으로 구현될 수도 있다. 버스(510)는 몇 가지 유형의 버스 구조 중 하나 이상일 수 있는데, 버스 메모리나 메모리 제어기, 주변형 버스, 고속 그래픽 포트, 프로세서나 로컬 버스 등 다양한 버스 아키텍쳐를 이용하는 것을 포함할 수 있다. 버스(510)는 유선 및/또는 무선 버스를 포함할 수 있다.
메모리/저장 컴포넌트(506)는 하나 이상의 컴퓨터 저장 매체를 나타낸다. 컴포넌트(506)는 (RAM과 같은) 휘발성 메모리 및/또는 (ROM, 플래쉬 메모리, 광학 디스크, 자기 디스크 등과 같은) 비휘발성 메모리를 포함할 수 있다. 컴포넌트(506)는 (RAM, ROM, 고정식 하드 드라이브 등과 같은) 고정식 매체나 (플래쉬 메모리 드라이브, 착탈가능 하드 드라이브, 광학 디스크 등과 같은) 착탈가능 매체를 포함할 수도 있다.
전술한 기법들은 소프트웨어로 구현될 수 있으며, 명령어들은 하나 이상의 프로세싱 유닛(502)에 의해 실행될 수 있다. 프로세싱 유닛(502), 프로세싱 유닛(502)의 다양한 캐시 메모리, 장치(500)의 다른 캐쉬 메모리(도시하지 않음), 다른 컴퓨터 판독가능 매체 등과 같이 컴퓨팅 장치(500)의 다양한 컴포넌트에 서로 다른 명령어들을 저장할 수 있다는 것을 이해해야 한다. 또한, 컴퓨팅 장치(500) 내에 명령어들이 저장되는 위치는 시간의 흐름에 따라 변할 수 있다는 점도 이해해야 한다.
하나 이상의 입력/출력 장치(508)가 사용자로 하여금 컴퓨팅 장치(500)에 코맨드나 정보를 입력하도록 할 수 있고, 정보가 사용자 및/또는 다른 컴포넌트나 장치로 제공되도록 할 수 있다. 입력 장치의 예로는 키보드, 커서 제어 장치(예컨대, 마우스), 마이크로폰, 스캐너 등이 있다. 출력 장치의 예로는 (모니터나 프로젝터와 같은) 디스플레이 장치, 스피커, 프린터, 네트워크 카드 등이 있다.
본 명세서에서 기술된 다양한 기법들은 일반적인 소프트웨어나 프로그램 모듈의 맥락에서 설명될 수 있다. 일반적으로 소프트웨어는 루틴, 프로그램, 애플리케이션, 객체, 컴포넌트, 데이터 구조 등 특정 태스크를 실행하거나 특정한 추상적 데이터 유형을 구현하는 것을 포함한다. 이들 모듈과 기법의 구현은 소정 형태의 컴퓨터 판독가능 매체 상에 저장되거나 그러한 매체를 통해 전송될 수 있다. 컴퓨터 판독가능 매체란 컴퓨팅 장치가 액세스할 수 있는 임의의 입수가능한 매체(들)를 의미한다. 예로서, 컴퓨터 판독가능 매체는 "컴퓨터 저장 매체"와 "통신 매체"를 포함할 수 있으나, 이에 제한되지는 않는다.
"컴퓨터 저장 매체"는 컴퓨터 판독가능 명령어, 데이터 구조체, 프로그램 모듈 등과 같은 정보를 저장하는 임의의 방법이나 기법에 의해 구현되는 휘발성 및 비휘발성, 착탈가능형 및 비-착탈가능형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리나 기타 다른 메모리 기법, CD-ROM, DVD나 기타 다른 광학적 저장부, 자기 카세트, 자기 테이프, 자기 디스크 저장부나 기타 다른 자기적 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터가 접속할 수 있는 임의의 다른 매체를 포함하는데, 본 발명은 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 단순한 신호 전송, 반송파, 신호 그 자체와는 달리 정보의 저장을 위한 매체를 가리킨다. 그러므로, 컴퓨터 저장 매체는 비-신호 함유 매체(non-signal bearing media)를 가리키며 통신 매체는 아니다.
"통신 매체"란 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조체, 프로그램 모듈, 반송파나 기타 전송 매커니즘과 같은 변조된 데이터 신호 내의 데이터를 구현한다. 통신 매체는 정보 전달 매체도 포함한다. "변조된 데이터 신호"란 신호 내의 정보가 인코딩되도록 자신의 특성 세트(characteristic set) 하나 이상이 설정되거나 변경된 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크나 직접-유선 접속과 같은 유선 매체, 어쿠스틱, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함하지만, 이에 한정되지는 않는다. 전술한 것들의 임의의 조합 역시 컴퓨터 판독가능 매체의 범주 안에 포함된다.
일반적으로, 본 명세서에 기술된 작용이나 기법은 소프트웨어, 펌웨어, 하드웨어(예를 들어 고정식 로직 회로), 수동 프로세싱(manual processing), 이들의 조합을 이용하여 구현될 수 있다. 본 명세서에서 사용된 "모듈" 및 "컴포넌트"라는 용어는 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 소프트웨어 구현의 경우, 모듈이나 컴포넌트는 프로세서(CPU나 CPU들) 상에서 수행될 때 특정 작업을 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독가능 메모리 장치에 저장될 수 있는데, 이에 대한 추가 설명은 도 5를 참조하면 된다. 하드웨어 구현의 경우, 모듈이나 컴포넌트는 기능적 블럭 또는 특정 작업을 수행하는 다른 하드웨어를 나타낸다. 이를테면, 하드웨어 구현에서 모듈이나 컴포넌트는 ASIC(application-specific integrated circuit), FPGA(filed-programmable gate array), CPLD(complex programmable logic device) 등일 수 있다. 본 명세서에서 설명된 애플리케이션의 재개 및/또는 애플리케이션의 중지 면제 기법은 플랫폼-독립형으로서, 이 기법들은 다양한 프로세서들을 갖는 다양한 상용화된 컴퓨팅 플랫폼 상에서 구현될 수 있다.
본 발명이 구조적 특징 및/또는 방법적 동작에 특유한 표현을 사용하여 설명되었지만, 첨부하는 특허청구범위에 정의된 청구 대상이 전술한 특정 특징이나 동작들로 국한될 필요는 없다. 오히려, 전술한 특정 특징과 동작은 청구항들을 구현하는 예시적인 형태로서 개시된 것이다.
100: 컴퓨팅 장치 102: 운영 체제
104: 애플리케이션 114: 애플리케이션 관리 모듈
116: 시스템 응답성 분석 모듈 118: 애플리케이션 수명 관리 모듈
120: 애플리케이션 종료 모듈 122: 정책 평가 모듈
124: 애플리케이션 중지 모듈
104: 애플리케이션 114: 애플리케이션 관리 모듈
116: 시스템 응답성 분석 모듈 118: 애플리케이션 수명 관리 모듈
120: 애플리케이션 종료 모듈 122: 정책 평가 모듈
124: 애플리케이션 중지 모듈
Claims (10)
- 컴퓨팅 장치 상에서 실행되는 복수의 애플리케이션이 정책(policy)을 충족시키지 못하여 상기 복수의 애플리케이션이 중지(suspend)되는 경우, 상기 복수의 애플리케이션 중 하나의 애플리케이션은 중지를 면제(exempt)하라는 요청을 상기 컴퓨팅 장치 상에서 실행되는 운영 체제 컴포넌트로부터 수신하는 단계와,
상기 요청에 응답하여, 상기 하나의 애플리케이션은 상기 컴퓨팅 장치 상에서 중지를 면제하는 단계
를 포함하는 방법.
- 제 1 항에 있어서,
상기 하나의 애플리케이션이 지속하도록 허용되는 동작을 수행하고 있다고 상기 운영 체제 컴포넌트가 판단하는 것에 응답하여 상기 요청이 수신되는
방법.
- 제 1 항에 있어서,
상기 중지를 면제하는 단계는 상기 하나의 애플리케이션에 대해 소정 시간(an amount of time) 동안 중지를 면제하고, 상기 소정 시간이 경과한 후에는 상기 하나의 애플리케이션을 중지하는 단계를 포함하는
방법.
- 제 3 항에 있어서,
상기 소정 시간은 상기 요청의 면제 클래스(exemption class)에 의해 결정되며, 서로 다른 면제 클래스는 서로 다른 소정 시간을 갖는
방법.
- 제 1 항에 있어서,
소정 이벤트의 발생에 응답하여 상기 하나의 애플리케이션이 중지되도록 허용하는 단계
를 더 포함하는 방법.
- 컴퓨팅 장치로서,
하나 이상의 프로세서와,
복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
를 포함하되,
상기 명령어는 상기 하나 이상의 프로세서에 의해 실행되어 상기 하나 이상의 프로세서로 하여금 소정 동작을 수행하도록 하고, 상기 소정 동작은
애플리케이션을 위한 사용자 인터페이스를 상기 컴퓨팅 장치가 더 이상 디스플레이하지 않음을 이유로 상기 애플리케이션의 실행이 중지된 경우, 상기 애플리케이션의 실행을 재개하라는 요청을 상기 컴퓨팅 장치 상에서 실행되는 운영 체제 컴포넌트로부터 수신하는 동작과,
상기 요청에 응답하여, 상기 애플리케이션의 실행을 재개하는 동작
을 포함하는
컴퓨팅 장치.
- 제 6 항에 있어서,
상기 애플리케이션과의 통신이 필요하다고 상기 운영 체제 컴포넌트가 판단하는 것에 응답하여 상기 요청이 수신되는
컴퓨팅 장치.
- 제 6 항에 있어서,
상기 소정 동작은 상기 요청에 응답하여 상기 애플리케이션이 상기 컴퓨팅 장치 상에서 중지되는 것을 면제하는 동작을 포함하는
컴퓨팅 장치.
- 제 8 항에 있어서,
상기 면제하는 동작은 상기 애플리케이션의 실행 재개를 요청할 이유가 더 이상 존재하지 않음을 나타내는 통지(notification)를 상기 운영 체제 컴포넌트로부터 수신할 때까지 상기 애플리케이션의 중지를 면제하고, 상기 통지에 응답하여 상기 애플리케이션을 중지하도록 허용하는 동작을 포함하는
컴퓨팅 장치.
- 제 8 항에 있어서,
상기 면제하는 동작은 소정 시간 동안 상기 애플리케이션을 면제하고, 상기 소정 시간의 경과 후에는 상기 애플리케이션이 중지되도록 허용하는 동작을 포함하는
컴퓨팅 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/229,574 US8578394B2 (en) | 2011-09-09 | 2011-09-09 | Exempting applications from suspension |
US13/229,574 | 2011-09-09 | ||
PCT/US2012/053679 WO2013036486A1 (en) | 2011-09-09 | 2012-09-04 | Resuming applications and/or exempting applications from suspension |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140059222A true KR20140059222A (ko) | 2014-05-15 |
KR101933246B1 KR101933246B1 (ko) | 2018-12-27 |
Family
ID=47831065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147005949A KR101933246B1 (ko) | 2011-09-09 | 2012-09-04 | 중지된 애플리케이션 재개 및/또는 애플리케이션의 중지 면제 기법 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8578394B2 (ko) |
EP (1) | EP2754042A4 (ko) |
JP (1) | JP6073323B2 (ko) |
KR (1) | KR101933246B1 (ko) |
CN (1) | CN103049339A (ko) |
WO (1) | WO2013036486A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170005859A (ko) * | 2014-05-19 | 2017-01-16 | 삼성전자주식회사 | 이동 통신 단말에 설치된 어플리케이션 패키지를 관리하는 방법 및 장치 |
Families Citing this family (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2873127B1 (fr) | 2004-07-13 | 2008-08-29 | Omya Development Ag | Procede de fabrication de particules pigmentaires autoliantes, seches ou en suspension ou dispersion aqueuses, contenant des matieres inorganiques et des liants |
US8997171B2 (en) | 2011-08-19 | 2015-03-31 | Microsoft Technology Licensing, Llc | Policy based application suspension and termination |
US9032413B2 (en) | 2011-09-01 | 2015-05-12 | Microsoft Technology Licensing, Llc | Decoupling background work and foreground work |
US9063775B2 (en) | 2011-09-01 | 2015-06-23 | Microsoft Technology Licensing, Llc | Event aggregation for background work execution |
US8578394B2 (en) | 2011-09-09 | 2013-11-05 | Microsoft Corporation | Exempting applications from suspension |
US9164803B2 (en) | 2012-01-20 | 2015-10-20 | Microsoft Technology Licensing, Llc | Background task resource control |
US8990534B2 (en) | 2012-05-31 | 2015-03-24 | Apple Inc. | Adaptive resource management of a data processing system |
US8997104B2 (en) * | 2012-06-29 | 2015-03-31 | Time Warner Cable Enterprises Llc | System and method for managing performance of a mobile device |
US9489236B2 (en) | 2012-10-31 | 2016-11-08 | Microsoft Technology Licensing, Llc | Application prioritization |
US9658747B2 (en) | 2013-10-01 | 2017-05-23 | Microsoft Technology Licensing, Llc | Virtual tabs supporting web content suspension |
US20190026212A1 (en) * | 2013-10-04 | 2019-01-24 | Verto Analytics Oy | Metering user behaviour and engagement with user interface in terminal devices |
US9871741B2 (en) | 2014-03-10 | 2018-01-16 | Microsoft Technology Licensing, Llc | Resource management based on device-specific or user-specific resource usage profiles |
US9690685B2 (en) * | 2014-05-30 | 2017-06-27 | Apple Inc. | Performance management based on resource consumption |
US9146764B1 (en) | 2014-09-30 | 2015-09-29 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US9715402B2 (en) | 2014-09-30 | 2017-07-25 | Amazon Technologies, Inc. | Dynamic code deployment and versioning |
US10048974B1 (en) | 2014-09-30 | 2018-08-14 | Amazon Technologies, Inc. | Message-based computation request scheduling |
US9323556B2 (en) | 2014-09-30 | 2016-04-26 | Amazon Technologies, Inc. | Programmatic event detection and message generation for requests to execute program code |
US9678773B1 (en) | 2014-09-30 | 2017-06-13 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US9830193B1 (en) | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US9600312B2 (en) | 2014-09-30 | 2017-03-21 | Amazon Technologies, Inc. | Threading as a service |
US9537788B2 (en) | 2014-12-05 | 2017-01-03 | Amazon Technologies, Inc. | Automatic determination of resource sizing |
EP3241112A1 (en) * | 2014-12-31 | 2017-11-08 | Servicenow, Inc. | Classification based automated instance management |
US9733967B2 (en) | 2015-02-04 | 2017-08-15 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US9588790B1 (en) | 2015-02-04 | 2017-03-07 | Amazon Technologies, Inc. | Stateful virtual compute system |
US9785476B2 (en) | 2015-04-08 | 2017-10-10 | Amazon Technologies, Inc. | Endpoint management system and virtual compute system |
US9930103B2 (en) | 2015-04-08 | 2018-03-27 | Amazon Technologies, Inc. | Endpoint management system providing an application programming interface proxy service |
US9910685B2 (en) * | 2015-08-13 | 2018-03-06 | Samsung Electronics Co., Ltd. | System and method for identifying, indexing, and navigating to deep states of mobile applications |
CN105204844A (zh) * | 2015-08-20 | 2015-12-30 | 上海斐讯数据通信技术有限公司 | 一种应用界面保存恢复方法、系统、以及一种电子设备 |
US10042660B2 (en) | 2015-09-30 | 2018-08-07 | Amazon Technologies, Inc. | Management of periodic requests for compute capacity |
US10754701B1 (en) | 2015-12-16 | 2020-08-25 | Amazon Technologies, Inc. | Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions |
US10013267B1 (en) | 2015-12-16 | 2018-07-03 | Amazon Technologies, Inc. | Pre-triggers for code execution environments |
US9811434B1 (en) | 2015-12-16 | 2017-11-07 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US10067801B1 (en) | 2015-12-21 | 2018-09-04 | Amazon Technologies, Inc. | Acquisition and maintenance of compute capacity |
US10002026B1 (en) | 2015-12-21 | 2018-06-19 | Amazon Technologies, Inc. | Acquisition and maintenance of dedicated, reserved, and variable compute capacity |
US9910713B2 (en) | 2015-12-21 | 2018-03-06 | Amazon Technologies, Inc. | Code execution request routing |
US10891145B2 (en) | 2016-03-30 | 2021-01-12 | Amazon Technologies, Inc. | Processing pre-existing data sets at an on demand code execution environment |
US11132213B1 (en) | 2016-03-30 | 2021-09-28 | Amazon Technologies, Inc. | Dependency-based process of pre-existing data sets at an on demand code execution environment |
US10162672B2 (en) | 2016-03-30 | 2018-12-25 | Amazon Technologies, Inc. | Generating data streams from pre-existing data sets |
CN107301059A (zh) * | 2016-04-14 | 2017-10-27 | 中兴通讯股份有限公司 | 一种清理进程的方法及装置 |
WO2018005500A1 (en) * | 2016-06-28 | 2018-01-04 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
US10282229B2 (en) | 2016-06-28 | 2019-05-07 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
US10102040B2 (en) | 2016-06-29 | 2018-10-16 | Amazon Technologies, Inc | Adjusting variable limit on concurrent code executions |
US10277708B2 (en) | 2016-06-30 | 2019-04-30 | Amazon Technologies, Inc. | On-demand network code execution with cross-account aliases |
US10203990B2 (en) | 2016-06-30 | 2019-02-12 | Amazon Technologies, Inc. | On-demand network code execution with cross-account aliases |
US10884787B1 (en) | 2016-09-23 | 2021-01-05 | Amazon Technologies, Inc. | Execution guarantees in an on-demand network code execution system |
US10061613B1 (en) | 2016-09-23 | 2018-08-28 | Amazon Technologies, Inc. | Idempotent task execution in on-demand network code execution systems |
US11119813B1 (en) | 2016-09-30 | 2021-09-14 | Amazon Technologies, Inc. | Mapreduce implementation using an on-demand network code execution system |
US10564946B1 (en) | 2017-12-13 | 2020-02-18 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10303492B1 (en) | 2017-12-13 | 2019-05-28 | Amazon Technologies, Inc. | Managing custom runtimes in an on-demand code execution system |
US10733085B1 (en) | 2018-02-05 | 2020-08-04 | Amazon Technologies, Inc. | Detecting impedance mismatches due to cross-service calls |
US10572375B1 (en) | 2018-02-05 | 2020-02-25 | Amazon Technologies, Inc. | Detecting parameter validity in code including cross-service calls |
US10353678B1 (en) | 2018-02-05 | 2019-07-16 | Amazon Technologies, Inc. | Detecting code characteristic alterations due to cross-service calls |
US10831898B1 (en) | 2018-02-05 | 2020-11-10 | Amazon Technologies, Inc. | Detecting privilege escalations in code including cross-service calls |
US10725752B1 (en) | 2018-02-13 | 2020-07-28 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10776091B1 (en) | 2018-02-26 | 2020-09-15 | Amazon Technologies, Inc. | Logging endpoint in an on-demand code execution system |
CN110294372B (zh) * | 2018-03-23 | 2023-02-28 | 奥的斯电梯公司 | 一种无线信号装置、电梯服务请求系统和方法 |
US10853115B2 (en) | 2018-06-25 | 2020-12-01 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
US10649749B1 (en) | 2018-06-26 | 2020-05-12 | Amazon Technologies, Inc. | Cross-environment application of tracing information for improved code execution |
US11146569B1 (en) | 2018-06-28 | 2021-10-12 | Amazon Technologies, Inc. | Escalation-resistant secure network services using request-scoped authentication information |
US10949237B2 (en) | 2018-06-29 | 2021-03-16 | Amazon Technologies, Inc. | Operating system customization in an on-demand network code execution system |
US11099870B1 (en) | 2018-07-25 | 2021-08-24 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11099917B2 (en) | 2018-09-27 | 2021-08-24 | Amazon Technologies, Inc. | Efficient state maintenance for execution environments in an on-demand code execution system |
US11243953B2 (en) | 2018-09-27 | 2022-02-08 | Amazon Technologies, Inc. | Mapreduce implementation in an on-demand network code execution system and stream data processing system |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
US10884812B2 (en) | 2018-12-13 | 2021-01-05 | Amazon Technologies, Inc. | Performance-based hardware emulation in an on-demand network code execution system |
US11010188B1 (en) | 2019-02-05 | 2021-05-18 | Amazon Technologies, Inc. | Simulated data object storage using on-demand computation of data objects |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
US11119809B1 (en) | 2019-06-20 | 2021-09-14 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11190609B2 (en) | 2019-06-28 | 2021-11-30 | Amazon Technologies, Inc. | Connection pooling for scalable network services |
US11115404B2 (en) | 2019-06-28 | 2021-09-07 | Amazon Technologies, Inc. | Facilitating service connections in serverless code executions |
US11159528B2 (en) | 2019-06-28 | 2021-10-26 | Amazon Technologies, Inc. | Authentication to network-services using hosted authentication information |
US11263220B2 (en) | 2019-09-27 | 2022-03-01 | Amazon Technologies, Inc. | On-demand execution of object transformation code in output path of object storage service |
US11394761B1 (en) | 2019-09-27 | 2022-07-19 | Amazon Technologies, Inc. | Execution of user-submitted code on a stream of data |
US10996961B2 (en) | 2019-09-27 | 2021-05-04 | Amazon Technologies, Inc. | On-demand indexing of data in input path of object storage service |
US11656892B1 (en) | 2019-09-27 | 2023-05-23 | Amazon Technologies, Inc. | Sequential execution of user-submitted code and native functions |
US11386230B2 (en) | 2019-09-27 | 2022-07-12 | Amazon Technologies, Inc. | On-demand code obfuscation of data in input path of object storage service |
US11360948B2 (en) | 2019-09-27 | 2022-06-14 | Amazon Technologies, Inc. | Inserting owner-specified data processing pipelines into input/output path of object storage service |
US11023311B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | On-demand code execution in input path of data uploaded to storage service in multiple data portions |
US11106477B2 (en) | 2019-09-27 | 2021-08-31 | Amazon Technologies, Inc. | Execution of owner-specified code during input/output path to object storage service |
US11416628B2 (en) | 2019-09-27 | 2022-08-16 | Amazon Technologies, Inc. | User-specific data manipulation system for object storage service based on user-submitted code |
US11023416B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | Data access control system for object storage service based on owner-defined code |
US11055112B2 (en) | 2019-09-27 | 2021-07-06 | Amazon Technologies, Inc. | Inserting executions of owner-specified code into input/output path of object storage service |
US10908927B1 (en) | 2019-09-27 | 2021-02-02 | Amazon Technologies, Inc. | On-demand execution of object filter code in output path of object storage service |
US11550944B2 (en) | 2019-09-27 | 2023-01-10 | Amazon Technologies, Inc. | Code execution environment customization system for object storage service |
US11250007B1 (en) | 2019-09-27 | 2022-02-15 | Amazon Technologies, Inc. | On-demand execution of object combination code in output path of object storage service |
US11119826B2 (en) | 2019-11-27 | 2021-09-14 | Amazon Technologies, Inc. | Serverless call distribution to implement spillover while avoiding cold starts |
US10942795B1 (en) | 2019-11-27 | 2021-03-09 | Amazon Technologies, Inc. | Serverless call distribution to utilize reserved capacity without inhibiting scaling |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11188391B1 (en) | 2020-03-11 | 2021-11-30 | Amazon Technologies, Inc. | Allocating resources to on-demand code executions under scarcity conditions |
US11775640B1 (en) | 2020-03-30 | 2023-10-03 | Amazon Technologies, Inc. | Resource utilization-based malicious task detection in an on-demand code execution system |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11388210B1 (en) | 2021-06-30 | 2022-07-12 | Amazon Technologies, Inc. | Streaming analytics using a serverless compute system |
US11968280B1 (en) | 2021-11-24 | 2024-04-23 | Amazon Technologies, Inc. | Controlling ingestion of streaming data to serverless function executions |
US12015603B2 (en) | 2021-12-10 | 2024-06-18 | Amazon Technologies, Inc. | Multi-tenant mode for serverless code execution |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5375230A (en) * | 1989-12-28 | 1994-12-20 | Kabushiki Kaisha Toshiba | Portable electronic device with selectable resume and suspend operations utilizing battery power control scheme with user affirmation prompt |
US5911065A (en) * | 1995-05-05 | 1999-06-08 | Apple Computer, Inc. | System and method for providing cooperative interrupts in a preemptive task scheduling environment |
US20100122167A1 (en) * | 2008-11-11 | 2010-05-13 | Pantech Co., Ltd. | System and method for controlling mobile terminal application using gesture |
JP2011060225A (ja) * | 2009-09-14 | 2011-03-24 | Toshiba Corp | オペレーティングシステム起動方法 |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4224664A (en) | 1976-05-07 | 1980-09-23 | Honeywell Information Systems Inc. | Apparatus for detecting when the activity of one process in relation to a common piece of information interferes with any other process in a multiprogramming/multiprocessing computer system |
US5944829A (en) | 1996-09-30 | 1999-08-31 | Intel Corporation | Adjusting software characteristics by user interface based upon battery level and the amount of time the user wants the battery to last |
US6910210B1 (en) | 1998-11-24 | 2005-06-21 | Microsoft Corp. | System and method for terminating applications |
US6834386B1 (en) | 1999-07-16 | 2004-12-21 | Microsoft Corporation | Method and system for regulating background tasks using performance measurements |
US6912578B1 (en) | 2000-02-25 | 2005-06-28 | Sun Microsystems, Inc. | Method and apparatus for improving utilization of a resource on a shared client |
US7058947B1 (en) | 2000-05-02 | 2006-06-06 | Microsoft Corporation | Resource manager architecture utilizing a policy manager |
JP2001333153A (ja) * | 2000-05-23 | 2001-11-30 | Yamaha Corp | ゲーム機能付き携帯電話機における着信処理方法 |
US20030126416A1 (en) * | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
US20030187857A1 (en) | 2002-03-29 | 2003-10-02 | Ford Daniel E. | Computer resource access system and method |
US7143398B2 (en) | 2003-03-13 | 2006-11-28 | Che-An Chang | Application infa operating system |
JP4205980B2 (ja) | 2003-03-28 | 2009-01-07 | 株式会社エヌ・ティ・ティ・ドコモ | 端末装置およびプログラム |
JP4281421B2 (ja) * | 2003-06-06 | 2009-06-17 | ソニー株式会社 | 情報処理システム及びその制御方法、並びにコンピュータ・プログラム |
US7500127B2 (en) | 2003-09-18 | 2009-03-03 | Vulcan Portals Inc. | Method and apparatus for operating an electronic device in a low power mode |
US7538762B2 (en) | 2003-09-30 | 2009-05-26 | Intel Corporation | Switching display update properties upon detecting a power management event |
US8275802B2 (en) | 2004-06-17 | 2012-09-25 | International Business Machines Corporation | Optimized least recently used lookup cache |
US20060136882A1 (en) | 2004-12-17 | 2006-06-22 | Nokia Corporation | System and method for background JAVA application resource control |
CN101103617A (zh) * | 2005-01-31 | 2008-01-09 | 诺基亚公司 | 阻止由事件引起的运行中的应用的中断的方法和设备 |
JP4738412B2 (ja) | 2005-07-12 | 2011-08-03 | 富士通株式会社 | 共用管理プログラム、共用管理方法、端末装置、及び共用管理システム |
US20070245163A1 (en) | 2006-03-03 | 2007-10-18 | Yung-Hsiang Lu | Power management in computer operating systems |
US7584376B2 (en) | 2006-08-23 | 2009-09-01 | Palm, Inc. | Method and apparatus for power management |
US8954045B2 (en) | 2006-09-29 | 2015-02-10 | Qualcomm Incorporated | Method and apparatus for managing resources at a wireless device |
EP2130190A1 (en) | 2006-10-27 | 2009-12-09 | Cecure Gaming Limited | Online gaming system |
JP4595937B2 (ja) * | 2006-12-28 | 2010-12-08 | ソニー株式会社 | 情報処理装置、情報処理方法、およびプログラム |
US7827358B2 (en) | 2007-01-07 | 2010-11-02 | Apple Inc. | Memory management methods and systems |
US7853812B2 (en) | 2007-02-07 | 2010-12-14 | International Business Machines Corporation | Reducing power usage in a software application |
US7890959B2 (en) | 2007-03-30 | 2011-02-15 | Sap Ag | System and method for message lifetime management |
JP4833146B2 (ja) * | 2007-04-24 | 2011-12-07 | ソフトバンクモバイル株式会社 | 移動体通信端末 |
US9003394B2 (en) | 2007-07-10 | 2015-04-07 | Ricoh Company, Ltd. | Program determining apparatus and program determining method |
US8510743B2 (en) | 2007-10-31 | 2013-08-13 | Google Inc. | Terminating computer applications |
US8578364B2 (en) | 2008-04-25 | 2013-11-05 | Microsoft Corporation | Dynamic management of operating system resources |
US9027027B2 (en) | 2008-06-09 | 2015-05-05 | Microsoft Technology Licensing, Llc | Thread management based on device power state |
US8566565B2 (en) | 2008-07-10 | 2013-10-22 | Via Technologies, Inc. | Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications |
US8706863B2 (en) | 2008-07-18 | 2014-04-22 | Apple Inc. | Systems and methods for monitoring data and bandwidth usage |
US8510577B2 (en) | 2008-07-28 | 2013-08-13 | Microsoft Corporation | Reducing power consumption by offloading applications |
US7587718B1 (en) * | 2008-10-31 | 2009-09-08 | Synopsys, Inc. | Method and apparatus for enforcing a resource-usage policy in a compute farm |
WO2010125229A1 (en) * | 2009-04-30 | 2010-11-04 | Nokia Corporation | Apparatus and method for handling tasks within a computing device |
US8434153B2 (en) | 2009-08-24 | 2013-04-30 | Microsoft Corporation | Application display on a locked device |
US10089119B2 (en) | 2009-12-18 | 2018-10-02 | Microsoft Technology Licensing, Llc | API namespace virtualization |
US8769139B2 (en) | 2010-01-29 | 2014-07-01 | Clarendon Foundation, Inc. | Efficient streaming server |
US8869154B1 (en) | 2010-03-29 | 2014-10-21 | Crimson Corporation | Controlling processor usage on a computing device |
US20110252423A1 (en) * | 2010-04-07 | 2011-10-13 | Apple Inc. | Opportunistic Multitasking |
CN101860626A (zh) * | 2010-06-22 | 2010-10-13 | 中兴通讯股份有限公司 | 应用提供方法及移动终端 |
JP5129311B2 (ja) * | 2010-10-08 | 2013-01-30 | ノキア コーポレイション | イベントによる稼動中のアプリケーションの中断を禁止する方法及び装置 |
US8635630B2 (en) * | 2010-10-25 | 2014-01-21 | Microsoft Corporation | Application lifetime management |
US20120144331A1 (en) | 2010-12-03 | 2012-06-07 | Ari Tolonen | Method for Arranging Application Windows on a Display |
KR20120077265A (ko) * | 2010-12-30 | 2012-07-10 | 주식회사 팬택 | 이동 단말기 및 이동 단말기의 제어 방법 |
US20120324481A1 (en) | 2011-06-16 | 2012-12-20 | Samsung Electronics Co. Ltd. | Adaptive termination and pre-launching policy for improving application startup time |
US8997171B2 (en) | 2011-08-19 | 2015-03-31 | Microsoft Technology Licensing, Llc | Policy based application suspension and termination |
US9063775B2 (en) * | 2011-09-01 | 2015-06-23 | Microsoft Technology Licensing, Llc | Event aggregation for background work execution |
US8578394B2 (en) | 2011-09-09 | 2013-11-05 | Microsoft Corporation | Exempting applications from suspension |
-
2011
- 2011-09-09 US US13/229,574 patent/US8578394B2/en active Active
-
2012
- 2012-09-04 JP JP2014529801A patent/JP6073323B2/ja active Active
- 2012-09-04 KR KR1020147005949A patent/KR101933246B1/ko active IP Right Grant
- 2012-09-04 EP EP12830647.9A patent/EP2754042A4/en not_active Ceased
- 2012-09-04 WO PCT/US2012/053679 patent/WO2013036486A1/en active Application Filing
- 2012-09-07 CN CN2012103289796A patent/CN103049339A/zh active Pending
-
2013
- 2013-09-30 US US14/041,870 patent/US9361150B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5375230A (en) * | 1989-12-28 | 1994-12-20 | Kabushiki Kaisha Toshiba | Portable electronic device with selectable resume and suspend operations utilizing battery power control scheme with user affirmation prompt |
US5911065A (en) * | 1995-05-05 | 1999-06-08 | Apple Computer, Inc. | System and method for providing cooperative interrupts in a preemptive task scheduling environment |
US20100122167A1 (en) * | 2008-11-11 | 2010-05-13 | Pantech Co., Ltd. | System and method for controlling mobile terminal application using gesture |
JP2011060225A (ja) * | 2009-09-14 | 2011-03-24 | Toshiba Corp | オペレーティングシステム起動方法 |
Non-Patent Citations (1)
Title |
---|
David Quintana. 'Mobile Multitasking'. 인터넷 게시글, 2010.04.14., pp.1-5. * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170005859A (ko) * | 2014-05-19 | 2017-01-16 | 삼성전자주식회사 | 이동 통신 단말에 설치된 어플리케이션 패키지를 관리하는 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
EP2754042A1 (en) | 2014-07-16 |
JP6073323B2 (ja) | 2017-02-01 |
CN103049339A (zh) | 2013-04-17 |
KR101933246B1 (ko) | 2018-12-27 |
US8578394B2 (en) | 2013-11-05 |
US20140040917A1 (en) | 2014-02-06 |
WO2013036486A1 (en) | 2013-03-14 |
US9361150B2 (en) | 2016-06-07 |
EP2754042A4 (en) | 2016-06-08 |
US20130067494A1 (en) | 2013-03-14 |
JP2014529139A (ja) | 2014-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101933246B1 (ko) | 중지된 애플리케이션 재개 및/또는 애플리케이션의 중지 면제 기법 | |
US8997171B2 (en) | Policy based application suspension and termination | |
US8738868B2 (en) | Cooperative memory resource management for virtualized computing devices | |
CA2939568C (en) | Resource management based on device-specific or user-specific resource usage profiles | |
US10459769B2 (en) | Elastic container management system | |
EP2893444B1 (en) | Quota-based resource management | |
US9678797B2 (en) | Dynamic resource management for multi-process applications | |
US9176780B2 (en) | Dynamically balancing memory resources between host and guest system based on relative amount of freeable memory and amount of memory allocated to hidden applications | |
US10536322B2 (en) | Resource management for services | |
US20120210321A1 (en) | Dormant Background Applications on Mobile Devices | |
US20050125537A1 (en) | Method, apparatus and system for resource sharing in grid computing networks | |
WO2012112331A2 (en) | Dormant background applications on mobile devices | |
US11829740B2 (en) | System and method for deployment level management of subscription based solutions | |
US20230221997A1 (en) | System and method for subscription management using composed systems | |
US11861577B2 (en) | System and method for distributed enforcement of configuration limitations | |
JP2017528816A (ja) | ポータブルコンピューティングデバイス(pcd)内のプロセッサに関する改善されたセキュリティのためのシステムおよび方法 | |
CN107835984B (zh) | 热减轻用户体验 | |
US9021489B2 (en) | Start, suspend and resume an application program where the application program utilizes the same handle to identify a resource upon resumption | |
US10430080B2 (en) | Subsystem storage space manager | |
EP3871087B1 (en) | Managing power request during cluster operations | |
US8832708B2 (en) | Process pool of empty application hosts to improve user perceived launch time of applications | |
WO2024152602A1 (zh) | 应用程序的权限管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |