KR20120139541A - 디지털 장치에서 애플리케이션의 시동 시간을 감소하는 장치 및 방법 - Google Patents

디지털 장치에서 애플리케이션의 시동 시간을 감소하는 장치 및 방법 Download PDF

Info

Publication number
KR20120139541A
KR20120139541A KR1020120055404A KR20120055404A KR20120139541A KR 20120139541 A KR20120139541 A KR 20120139541A KR 1020120055404 A KR1020120055404 A KR 1020120055404A KR 20120055404 A KR20120055404 A KR 20120055404A KR 20120139541 A KR20120139541 A KR 20120139541A
Authority
KR
South Korea
Prior art keywords
application
memory
cold
cache memory
time
Prior art date
Application number
KR1020120055404A
Other languages
English (en)
Inventor
빙 시아
로이 킴 람
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to EP12172141A priority Critical patent/EP2538327A1/en
Publication of KR20120139541A publication Critical patent/KR20120139541A/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 디지털 장치에서 애플리케이션의 시동 시간을 감소하는 장치 및 방법에 관한 것으로, 애플리케이션 시작 동작 상태의 통계치를 트레킹하며, 상기 트레킹된 통계치를 기반으로 특정 운영 시스템 상태 하에서의 적어도 하나의 애플리케이션 동작 상태를 예측하며, 상기 특정 시스템 상태를 검출하고, 상기 예측된 애플리케이션 동작 상태와 상기 검출된 특정 시스템 상태를 기반으로 캐시 메모리에 로딩된 애플리케이션 중에서 제거될 애플리케이션을 선택하는 것을 특징으로 한다.

Description

디지털 장치에서 애플리케이션의 시동 시간을 감소하는 장치 및 방법{APPARATUS AND METHOD FOR REDUCING APPLICATION STARTUP TIME IN A DIGITAL DEVICE}
본 발명은 디지털 장치에 있어서 애플리케이션의 시동(startup) 시간을 향상하는 방법에 관한 것이다. 특히, 본 발명은 낮은 사용 가능성과 재-시작(re-launching) 비용을 가지는 애플리케이션들을 제거(killing)하고, 가까운 미래 시점에 사용할 것으로 예상되는 시동 시간이 걸리는 애플리케이션을 미리 시작(pre-starting) 시킴으로써, 애플리케이션 시동 시간을 감소시키는 장치 및 방법에 관한 것이다.
일반적으로, 스마트폰(smart phone) 또는 태블릿(tablet) 컴퓨터와 같은 휴대 단말기는 크기, 중량, 그리고 가격의 관점에서 볼 때 설치될 수 있는 메모리의 양이 한정된다. 따라서, 휴대 단말기는 이용 가능한 모든 메모리를 사용하여 애플리케이션들을 실행하려고 시도할 것이다. 리눅스(LINUX) 또는 안드로이드(Android)(리눅스 커널에 기초한 휴대폰용 오퍼레이팅 시스템)와 같은 오퍼레이팅 시스템에 있어서, 통상적인 메모리 관리기법은 정적인 프로세스 정보에 기초하여 제거(killing)할 애플리케이션들을 선택하는 것을 포함한다. 즉, 메모리 부족(Out-OF-Memory, 이하 'OOM'이라 한다) 기능은 메모리 사용 상황을 모니터하고 메모리가 다 소진되는 상황을 인식할 경우 프로세스들을 제거하는 것이다.
리눅스에서의 OOM 킬러의 역할은 그 밖에 모든 방법이 실패할 때에 대비해 시스템을 위한 메모리를 자유롭게 하기 위하여 하나 또는 다수의 프로세스들을 희생시키는 것이다.
제거하기에 가장 바람직한 대상물(후보자)을 찾기 위한 노력의 일환으로 프로세스의 점수를 매기는 기능은 badness()라고 하는데, 이러한 점수 매김 기능은 조사 대상인 각 프로세스에 대한 포인트(point)를 누적하고 그 포인트를 선택기능에 귀환시킴으로써 작동한다. 이미 스스로 메모리를 자유롭게 하는 도중에 있지 않으면, 가장 높은 포인트를 갖는 프로세스가 선택되어 제거(killed)된다.
이 점수는 시스템이 수행된 작업의 최소한의 양을 상실하고, 많은 양의 메모리를 회복하고, 많은 양의 메모리를 사용하는 임의의 무해한 프로세스는 죽이지 않고, 최소 숫자의 프로세스들을 죽인다는(가능하면, 단지 하나의 프로세스만 죽이는 것에 한정되는) 것에 기반하여 결정된다. 한 프로세스가 더 많은 메모리를 사용할수록 그 프로세스를 죽임으로써 더 많은 메모리가 자유롭게 될 수 있고, 그럼으로써 badness 점수는 더 높아진다. 프로세스가 시스템에서 더 오랫동안 살아있을수록 필요로 하거나 요구될 가능성은 더 높을 뿐만 아니라 상기 badness 점수는 더 작아진다. 제거할(죽일) 이상적인 후보 프로세스는, 그것의 차일드 프로세스(child process) 프로세스와 함께, 많은 양의 메모리를 사용하고, 우선순위가 조정된(niced task), 어떤 입출력(I/O) 장치도 갖지 않는, 최근에 시작된 비-특권적인(non-privileged) 프로세스일 것이다.
안드로이드 오퍼레이팅 시스템은 리눅스 OOM 킬러를 저-메모리 킬러(Low Memory Killer, 이하 'LMK'라 한다) 프로세스를 갖도록 확장시켰다. LMK는 제거할 프로세스를 결정할 때 애플리케이션 종류와 포그라운드 상태(foreground state)를 고려한다. 시스템 메모리가 임의의 통계적으로 정의된 기준값(threshold)에 도달할 때, LMK는 제거할 프로세스를 선택한다. 그러나 LMK는 여전히 정적 정보에 기초하고 있다.
특정한 하나의 프로세스를 제거하는 것은 다른 프로세스가 제거되기를 선호할지도 모르는 사용자들에게는 성가시거나 불편한 일이 될 것이다. 제거된 프로세스는 시스템의 관점에서는 중요한 것일지도 모른다. 일반적으로, 사용자가 원하거나 시스템이 필요로 하는 프로세스들을 제거하는 것은 가급적 피하는 것이 바람직하다. 그러나 휴대 단말기들에서 메모리 부족(OOM) 상황을 처리할 때 어떤 애플리케이션을 죽일 것인지를 결정함에 있어 사용자의 선호도는 일반적으로 중요한 인자가 아니었다.
일시적인 메모리 요구에 기초하여 어느 애플리케이션이 제거될 것인지를 결정하는 것에 더하여, 메모리에 상주하지 않는 애플리케이션을 시동하기 위해 필요한 시간에 있어서의 현저한 변화가 전형적으로 존재한다는 것은 또한 추가적인 관심사이다. 위의 OOM 킬러와 LMK는 어느 프로세스를 제거할 것인지를 결정할 때 일시적인 메모리 상황만을 고려하고, 애플리케이션들을 시동하기에 필요한 시간은 일반적으로 고려하지 않는다. 애플리케이션 시동 시간에 있어 예상치 못한 변화를 초래하는 이러한 상황은 자기가 원하는 애플리케이션을 시동하려고 하는 사용자에게는 불편하고 성가실지도 모른다.
그러므로 메모리가 제한되는 시스템들에 대하여 제거하기에 가장 바람직한 애플리케이션을 선택할 통계적 파라미터들의 일 세트를 선택하는 것은 거의 불가능하였다.
따라서, 사용자의 요구에 따라서 적응적으로 처리 프로세스들을 종료함과 아울러 애플리케이션 시동시간을 향상하기 위한 장치 및 방법을 강구할 필요성이 대두하였다.
본 발명은 로우 메모리 상태가 검출될 때 제거(killing)할 프로세스들을 적응적으로 결정하기 위한 장치 및 방법을 제공하기 위한 것이다.
그리고 본 발명은 가까운 미래에 사용될 것으로 예상되는 애플리케이션들을 미리 시작(pre-starting)시키기 위한 장치 및 방법을 제공하기 위한 것이다.
상기한 과제를 해결하기 위해, 본 발명은 디지털 장치에서 애플리케이션의 시동 시간을 감소하는 방법에 있어서, 애플리케이션 시작 동작 상태의 통계치를 트레킹하며, 상기 트레킹된 통계치를 기반으로 특정 운영 시스템 상태 하에서의 적어도 하나의 애플리케이션 동작 상태를 예측하며, 상기 특정 시스템 상태를 검출하고, 상기 예측된 애플리케이션 동작 상태와 상기 검출된 특정 시스템 상태를 기반으로 캐시 메모리에 로딩된 애플리케이션 중에서 제거될 애플리케이션을 선택하는 것을 특징으로 한다.
상기한 과제를 해결하기 위해, 본 발명은 디지털 장치에서 애플리케이션의 시동 시간을 감소하는 장치에 있어서, 애플리케이션 시작 동작 상태의 통계치를 트레킹하며, 상기 트레킹된 통계치를 기반으로 특정 운영 시스템 상태 하에서의 적어도 하나의 애플리케이션 동작 상태를 예측하며, 상기 특정 시스템 상태를 검출하고, 상기 예측된 애플리케이션 동작 상태와 상기 검출된 특정 시스템 상태를 기반으로 캐시 메모리에 로딩된 애플리케이션 중에서 제거될 애플리케이션을 선택하는 제어부를 포함하는 것을 특징으로 한다.
본 발명은 로우 메모리 상태가 검출될 때 제거(killing)할 프로세스들을 적응적으로 결정하는 효과를 가진다.
그리고 본 발명은 가까운 미래에 사용될 것으로 예상되는 애플리케이션들을 미리 시작(pre-starting)시키는 효과를 가진다.
도 1은 본 발명의 실시 예에 따른 휴대 단말기의 외형도이다.
도 2는 본 발명의 실시 예에 따른 휴대 단말기의 블록 구성도이다.
도 3은 본 발명의 실시 예에 따라 저-메모리 검출 시 제거할 프로세스를 결정하는 흐름도이다.
도 4는 본 발명의 실시 예에 따른 경험적(heuristic) 메모리 관리 방법을 예시하는 흐름도이다.
이하, 본 발명의 바람직한 실시 예들을 첨부한 도면을 참조하여 상세히 설명한다. 또한, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.
본 발명의 실시 예에 따른 휴대 단말기는 휴대가 용이하게 이동 가능한 전자기기로서, 화상전화기, 휴대폰, 스마트 폰(smart phone), IMT-2000(International Mobile Telecommunication 2000) 단말기, WCDMA 단말기, UMTS(Universal Mobile Telecommunication Service) 단말기, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), DMB(Digital Multimedia Broadcasting) 단말기, E-Book, 휴대용 컴퓨터(Notebook, Tablet 등) 또는 디지털 카메라(Digital Camera) 등이 될 수 있다.
도 1은 본 발명의 실시 예에 따른 휴대 단말기의 외형도이다.
도 1을 참조하면, 휴대 단말기(100)는 태블릿 컴퓨터 또는 스마트폰으로 구현될 수 있는데, 일반적으로 제공되는 메모리에 제한성을 갖는다. 즉, 휴대 단말기의 사용자는 해당 장치에서 설치된 메모리를 확장하거나 증대시키는 것이 불가능할 수도 있다. 각 시스템 애플리케이션과 그 장치에 저장되었거나 작동중인 사용자 애플리케이션은 메모리를 필요로 한다. 따라서, 충분한 전체 메모리를 사용하는 애플리케이션들을 운영하는 사용자는 그 장치가 추가적인 애플리케이션을 작동하기 위해 할당할 자유 메모리가 불충분하게 되는 상황을 맞이할 수도 있다. 오퍼레이팅 시스템이 이러한 방식으로 자유 메모리가 부족하게 될 때 그 장치는 제거된 프로세스가 사용하고 있었던 메모리를 이용 가능하게 만들기 위하여 제거할 애플리케이션이나 프로세스를 결정할 것이다.
도 2는 본 발명의 실시 예에 따른 휴대 단말기의 블록 구성도이다.
도 2를 참조하면, 휴대 단말기(200)는 제어부(210)와 메모리부(220)를 포함한다. 여기서, 메모리부(220)는 실행 가능한 코드와 데이터 양자를 저장한다. 실행 가능한 코드는 오퍼레이팅 시스템과 같은 시스템 소프트웨어와 유저 애플리케이션을 포함할 수 있다. 그리고 제어부(210)는 캐시 메모리(211)를 포함한다. 여기서, 캐시 메모리(211)는 애플리케이션 소프트웨어가 실행될 때 로딩되는 메모리이다. 제어부(210)는 메모리부(220)보다 훨씬 빠른 캐시 메모리(211)에 접속을 할 수 있지만, 캐시 메모리(211)는 메모리부(220)보다 훨씬 작은 용량을 갖는다.
그리고 휴대 단말기(200)는 표시부(230), 오디오 처리부(240), 입력부(250) 등을 포함하고 있다. 여기서, 입력부(250)와 표시부(230)는 하나의 장치로, 예를 들어, 터치 스크린으로 같이 결합될 수 있다. 그리고 오디오 처리부(240)는 오디오 입력을 위한 마이크로폰(MIC)와 오디오 출력을 위한 스피커(SPK)를 구비한다. 휴대 단말기는 무선 통신부(260)를 포함할 수 있다.
휴대 단말기에서 하나의 애플리케이션이 실행될 때, 실행된 애플리케이션은 그 자신이 사용하도록 할당된 캐시 메모리를 가지며, 프로그램은 그 다음에 캐시 메모리에 로딩(Loading)된다. 일반적으로, 메모리부(220) 내에 존재하는 애플리케이션들은 캐시 메모리(211)에서 이용 가능한 공간보다 훨씬 더 많은 메모리 공간을 차지한다. 따라서, 오퍼레이팅 시스템은 애플리케이션이 캐시 메모리를 필요로 할 때 캐시 메모리를 할당하기 위한 메모리 관리(Memory Management: MM) 기능을 포함하고 있다. 이러한 메모리 관리 기능은 애플리케이션이 더 이상 필요로 하지 않는 캐시 메모리를 반납하도록 하는데, 이로써 캐시 메모리는 자유롭게 되어 다른 프로그램을 위하여 이용될 수가 있다.
도 3은 본 발명의 실시 예에 따라 저-메모리 검출 시 제거할 프로세스를 결정하는 흐름도이다.
이제부터, 도 3을 참조하여, 리눅스(LINUX) 시스템에서 구현되는 메모리 부족 킬러(OOM Killer)를 수행하는 과정을 설명하고자 한다.
301 단계에서, 제어부(210)는 메모리 관리 기능(MM)을 이용하여 필요에 따라 메모리를 할당하거나 반환함으로써 메모리를 관리하고, 이용 가능한 자유로운 캐시 메모리의 양을 모니터링한 후, 303 단계로 진행한다.
그리고 303 단계에서, 특정 애플리케이션이 이용 가능한 메모리의 양보다 더 많은 캐시 메모리의 할당을 요구할 수도 있기 때문에, 제어부(210)는 메모리가 부족한지 아닌지를 검출한다. 만일, 검출 결과, 메모리가 부족한 것으로 결정되면, 제어부(210)는 305 단계로 진행하고, 그렇지 않으면, 313 단계로 진행한다.
만약에, 305 단계로 진행하면, 제어부(210)는 OOM 킬러 기능을 수행한 후, 307 단계로 진행한다. 여기서, OOM 킬러는 현재 실행 중인 프로세스들 중에서 제거(kill)할 적어도 하나 이상의 프로세스를 선택하고, 선택된 프로세스의 실행을 중단함으로써 캐시 메모리를 자유롭게 만든다. 이때, OOM 킬러는 정적(static) 정보에 기반하여 제거할 프로세스들을 선택한다.
그리고 307 단계에서, 제어부(210)는 OOM 킬러 기능을 수행한 후에, 현재 실행 중인 프로세스들 중에서 제거하기에 가장 적합한 후보자를 찾기 위해, 특정 프로세스에 대한 실제 점수(actual scoring)(Badness() 점수)를 계산한다. 여기서, Badness() 점수는 어느 프로세스가 제거되는 것이 가장 적절한 것인지를 결정하기 위한 수치적인 점수를 나타낸다. 더 높은 Badness() 점수가 부여된 프로세스가 더 낮은 Badness() 점수가 부여된 프로세스보다 제거될 가능성이 높다.
본 발명에서는 미리 지정된 조건에 의해 Badness() 점수를 계산한다. 특정 프로세스가 아래와 같은 조건을 만족하면, 그 프로세스는 더 높은 badness() 점수를 가지며, 제거될 가능성이 높은 후보자(대상물)이 될 것이다.
1) 최소한의 작업 양이 상실된다. 어느 한 프로세스를 제거한다는 것은 그것이 실행하고 있었을지도 모르는 어떤 작업이든지 상실될 것임을 의미한다.
2) 많은 양의 메모리가 회복된다. 즉, 저-메모리 조건을 해결할 확률이 더 높은 프로세스를 제거함이 바람직하다. 만일, 어느 프로세스가 많은 양의 메모리를 사용한다면, 그 프로세스를 제거함으로써 그 메모리를 자유롭게 만들어줄 것이다.
3) 많은 양의 메모리를 사용할 일이 없는 프로세스들은 제거되지 않는다. 이것은 상기 1) 및 2) 모두와 관련된다. 만일, 어느 프로세스가 많은 메모리를 사용하고 있지 않다면, 그것의 작업을 상실하는 문제는 그 프로세스를 제거하지 않음으로써 해결된다.
4) 최소한으로 필요한 수의 프로세스들이 제거된다. 바람직하게는, 단지 하나의 프로세스만이 제거된다.
5) 사용자가 제거될 것으로 예상하는 프로세스를 제거하려고 시도하는 것이 바람직하다. 이러한 상황에서 사용자는 새로운 프로세스를 위해 할당된 메모리를 필요로 하며, 오퍼레이팅 시스템이 적절하게 기능을 계속 수행하기를 기대한다. 따라서, 사용자가 상실해도 후회할 것 같지는 않을 프로세스를 제거하는 것으로 선택하는 것이 바람직하다.
위와 같은 조건을 이용하여 307 단계에서, 제어부(210)는 각 프로세스의 badness() 점수를 계산하고, 309 단계에서, 프로세스 중에서 가장 높은 badness() 점수를 갖는 프로세스를 결정한다. 그리고 311 단계에서, 제어부(210)는 프로세스 중에서 가장 높은 점수를 갖는 프로세스를 제거한다. 이러한 프로세스 제거 방식이 계속 진행되도록 제어부(210)는 303 단계로 진행할 수 있다. 만일, 메모리 부족 현상이 지속되면, 제어부(210)는 메모리 부족 현상이 완화될 때까지 위의 프로세스 제거 방식을 계속해서 반복한다.
만일 313 단계로 진행하면, 제어부(210)는 저-메모리 킬러(LMK) 기능을 실행하도록 진행한다. 그리고 315단계에서, 제어부(210)는 포그라운드(foreground: 이것은 background에 대응되는 개념임) 상태, 액티브 연결 및 애플리케이션 타입에 기반하여 각 프로세스를 클래스에 할당한다. 각 프로세스가 한 클래스에 할당된 후에, 317 단계에서, 제어부(210)는 자유 메모리 양을 각 클래스의 프로세스에 대한 정적으로 정의된 기준값(thresholds)들과 비교한다.
비교 결과, 319 단계에서, 자유 메모리 양이 상기 클래스에 대한 기준값 이하인 것으로 결정되면, 제어부(210)는 321 단계로 진행한다. 그리고 321 단계에서, 제어부(210)는 현재 클래스에서 제거할 프로세스를 선택하고, 323 단계에서, 선택된 프로세스를 제거한다. 그리고 프로세스의 제거에 의해 자유 메모리 양이 기준값 이하인지 여부를 확인하기 위해, 제어부(210)는 319 단계로 진행한다.
그리고 319 단계에서, 자유 메모리 양이 현재 클래스에 대한 기준값을 초과하면, 제어부(210)는 325 단계로 진행한다. 그리고 325 단계에서, 제어부(210)는 다른 클래스가 남아있는지 여부를 결정한다. 만일, 다른 클래스가 남아있는 것으로 결정되면, 제어부(210)는 317 단계로 진행하고, 다른 클래스가 남아있지 않은 것으로 결정되면, 제어부(210)는 프로세스 제거 동작을 종료한다.
상기 badness() 점수는 그 프로세스가 사용하고 있는 메모리의 양으로써 시작한다. 많은 차일드(child) 프로세스들로 분기되는 프로세스들은 아마도 제거하기에 바람직한 선택이기 때문에, 임의의 차일드 프로세스(커널 스레드를 제외함)의 독립적인 메모리 크기는 해당 프로세스의 badness() 점수에 추가된다. 우선순위가 조정된(niced) 프로세스들은 덜 중요할 것이므로, 우선순위가 조정된 프로세스들의 점수는 증가된다. 오랫동안 작동중인 프로세스들은 아마도 다른 프로세스보다 더 중요할 것이므로, 오랫동안 작동중인 프로세스들의 점수는 감소된다. 수퍼유저(superuser) 프로세스들은 아마도 다른 프로세스보다 더 중요할 것이므로, 수퍼유저 프로세스들의 점수는 감소된다. 하드웨어에 대해 직접적인 액세스를 하는 프로세스들은 아마 중요할 것이므로, 이러한 프로세스들을 제거하는 것은 하드웨어를 엉망으로 만들 수 있기 때문에 이러한 프로세스들의 점수는 감소한다. 따라서, 가장 이상적인 제거 후보자는, 그의 차일드 프로세스들과 함께, 많은 양의 메모리를 사용하고, 우선순위가 조정된(niced task), 어떤 원시적인 입출력(I/O)도 수행하지 않는, 최근에 시작된, 비-특권적인(non-privileged) 프로세스일 것이다.
안드로이드(Android) 운영 시스템에서는 저-메모리 상황에서 늦게까지, 즉 모든 캐시 메모리가 할당될 때까지 OOM 킬러는 효과가 나타나지 않는다는 것에 있어서 전술한 것을 수정하고자 한다. 안드로이드 운영 시스템은 저-메모리(low-memory) 드라이버를 소개하였는데, 저-메모리 드라이버는 복수의 저-메모리 기준값들을 갖는다. 저-메모리 상황에서 제1기준값이 충족되면, 백그라운드 프로세스들은 그 문제를 통지받는다. 그것들은 존재하지 않지만, 대신에 그들의 상태를 저장한다. 이것은 애플리케이션을 스위칭할 때 대기시간(latency)에 영향을 미치는데, 이는 그 애플리케이션이 활성화될 때 재로딩하는 것이 필요하기 때문이다. 추가적인 압력이 가해질 경우, 저-메모리 킬러는 그의 상태가 이전의 기준값을 충족하는 것으로 저장된 중요하지 않은 백그라운드 프로세스들을 제거하고, 그리고 최종적으로 필요하다면 포그라운드(foreground) 애플리케이션을 제거한다.
전술한 것과 같은 제거할 프로세스의 결정은 사용자의 희망에 따른 최적의 것과는 다른 프로세스를 제거하는 결과를 초래할 수도 있다. 더욱이, 전술한 바와 같이 제거할 프로세스를 결정함으로써, 사용자가 나중에 애플리케이션을 사용하기를 희망하는 결과를 초래하고, 더욱이 그 애플리케이션이 캐시 메모리에 로딩되어 있지 않고 로딩과 시동하기에 상당한 시작시간을 갖는다면, 사용자는 불만감을 가질 것이다.
도 4는 본 발명의 예시적인 실시 예에 따른 체험적인 메모리 관리 방법에 대한 흐름도이다.
도 4를 참조하면, 401 단계에서, 제어부(210)는 메모리를 관리하고, 403 단계에서, 메모리 부족 상태가 검출되는지 여부를 결정한다. 401 단계 및 403 단계는 전술한 도 3의 301 단계와 303 단계와 동일하다.
만일, 메모리 부족 상태가 검출되면, 제어부(210)는 405 단계로 진행하여 OOM 킬러 기능을 실행한 후, 403 단계로 진행한다. 405 단계는 도 3의 305 단계 내지 311 단계와 동일하다.
만일, 메모리 부족 상태가 검출되지 않으면, 제어부(210)는 407 단계로 진행하여 체험적인 메모리 관리를 실행한 후, 409 단계로 진행한다. 그리고 409 단계에서, 제어부(210)는 애플리케이션의 시작 동작 상태(launching behavior)에 대한 통계치를 추적한 후, 411 단계로 진행한다. 즉, 애플리케이션이 시동될 때, 다양한 데이터의 측정치가 기록되는데, 이것은 예를 들면 캐시 메모리에 로딩되어 있는 애플리케이션에 대한 웜-시동(warm startup) 시간, 캐시메모리에 로딩되어 있지 않은 애플리케이션에 대한 콜드-시동(cold startup) 시간, 해당 애플리케이션에 의해 사용된 메모리의 양, 얼마나 자주 그 애플리케이션이 사용되는지, 애플리케이션이 시작되는 날의 시간, 애플리케이션이 시작되는 지리적 위치, 여행할 때와 같은 GPS(Global Positioning System)로 검출된 움직임, 특정한 주변기기에 대한 블루투스(Bluetooth) 연결 중에서 적어도 하나 또는 복수 개를 포함한다. 콜드 시동시간 통계는 새로운 프로세스에서의 시작으로부터 한 애플리케이션이 사용자 상호작용 또는 외부 프로세스 통신과 같은 외부 요구들에 부응할 수 있기 위하여 걸리는 시간에 대한 정보를 포함할 수도 있다. 상기 웜-시동시간 통계는 백그라운드(background) 프로세스에서 이미 동작하고 있었던 애플리케이션이 포그라운드(foreground)로 오기 위해 걸리는 시간에 대한 정보를 포함할 수도 있다.
그리고 411 단계에서, 제어부(210)는 애플리케이션이 시작, 정지하거나, 포그라운드에 들어가거나, 또는 백그라운드에 들어가는지 여부를 검출한 후, 413 단계로 진행한다. 이때, 제어부(210)는 애플리케이션의 실행 시간이나 장소의 변화와 같은 상황관련 정보도 검출한다.
그리고 413 단계에서, 제어부(210)는 검출된 결과를 이용하여 각 애플리케이션에 대한 미리 정의된 타임 프레임(timeframe) 내에서 각 애플리케이션에 대한 사용 가능성을 예측한 후, 415 단계로 진행한다. 예를 들면, 제어부(210)는 애플리케이션이 가까운 미래에 및/또는 현재 위치에서 시작될 가능성을 나타내는 사용 가능성이 높은지 또는 낮은 지를 예측할 수 있다. 또한, 제어부(210)는 현재의 시스템 로드와 해당 애플리케이션의 종전의 동작 특성이 주어진다면, 콜드-시동과 웜-시동 간의 예상되는 스프레드(spread)를 예측할 수 있다. 여기서, 타임프레임은 운영 시스템에 의해 하나의 값으로 설정되며, 사용자는 사용자 인터페이스 설정(settings)을 이용하여 타임 프레임을 조절할 수 있다.
그리고 415 단계에서, 제어부(210)는 미리 결정된 타임프레임 내에서 사용 중인 애플리케이션들 각각의 사용 가능성(probability)을 평가한다. 이때, 제어부(210)는 현재 동작중인 또는 액티브 연결을 하고 있는 애플리케이션들이 높은 사용 가능성을 갖는 것으로 간주한다. 그리고 제어부(210)는 409 단계 및 411 단계에서 검출된 이전의 애플리케이션 이용 데이터를 분석하기 위한 패턴 인식 알고리즘을 이용하여 사용 가능성을 평가할 수 있다. 이러한 패턴 인식 알고리즘은 본 발명의 일부를 구성하는 것으로 간주하지는 않기 때문에, 패턴 인식 알고리즘에 대한 상세한 설명은 생략된다. 즉, 미리 결정된 타임프레임에서 사용되고 있는 애플리케이션들의 사용 가능성을 평가하기 위한 다양한 알고리즘들이 413 단계에서 사용될 수도 있다.
본 발명의 예시적인 실시 예에 있어서, 사용자는 특정 애플리케이션들을 위한 규칙(rule)들을 분명하게 제공하도록 선택할 수 있다. 예를 들면, 사용자는 맵스(Maps) 애플리케이션인 경우, 맵스 애플리케이션이 사무실을 이탈할 때 높은 사용 가능성을 가진다고 지정할 수도 있다. 사무실 이탈은 예를 들면, 날짜(주말이나 공휴일이 아닌), 하루 중의 시간 및 현재위치의 조합에 의해 정의될 수 있다.
만일, 미리 정의된 타임프레임 내에서 높은 사용 가능성의 애플리케이션이 존재하는 것으로 결정되면, 417 단계에서, 제어부(210)는 해당 애플리케이션이 동작 중인지의 여부를 결정한다. 만일, 해당 애플리케이션이 동작 중이면, 제어부(210)는 425 단계로 진행하여 자유 메모리가 기준 레벨을 넘는지 아닌지를 결정한다. 만일, 해당 애플리케이션이 동작하고 있지 않다면, 제어부(210)는 419 단계로 진행하여 백그라운드에 있는 애플리케이션을 미리 시작시킨 후, 403 단계로 진행한다.
만일, 미리 정의된 타임프레임 내에서 낮은 사용 가능성의 애플리케이션이 존재하는 것으로 결정되면, 제어부(210)는 423 단계로 진행하여 해당 애플리케이션 프로세스를 종료한 후, 425 단계로 진행한다.
만일 미리 정의된 타임프레임 내에서 사용될 애플리케이션의 사용 가능성이 미지수이거나 확실치 않으면, 제어부(210)는 421 단계로 진행하여 짧은 콜드 시동시간을 가지거나 콜드 시동시간과 웜 시동시간 간에 짧은 시간 갭을 가지는 애플리케이션을 선택한 후, 423 단계로 진행한다. 그리고 423 단계에서, 제어부(210)는 선택된 프로세스를 제거한다. 예를 들면, 미지수 또는 불확실한 가능성은, 불충분한 사용 데이터가 수집되었을 때 또는 수집된 데이터에서 인식되는 어떤 적용 가능한 패턴도 없을 때 발생할 수도 있다. 시동 시간이 짧은 것으로 간주되는지 아닌지를 결정하기 위해 시스템 또는 사용자에 의해 정의된 기준값이 사용될 수도 있다. 예를 들면, 1초의 기준값보다 더 빠른 콜드 시동시간은 짧은 것으로 간주할 수 있다. 만일, 백그라운드 애플리케이션이 새로운 프로세스로부터 기준값 시간 내에 시작될 수 있다면, 해당 프로세스는 제거될 후보자이다. 마찬가지로, 콜드/웜 시동시간의 차이가 기준값 미만이면, 해당 프로세스는 제거될 후보자이다.
그리고 425 단계에서, 제어부(210)는 자유 메모리 양이 기준 레벨을 초과하는지 아닌지를 결정한다. 만일, 자유 메모리가 기준 레벨을 초과하면, 제어부(210)는 프로세스 제거 동작을 종료한다. 만일, 자유 메모리가 기준 레벨 이하이면, 제어부(210)는 415 단계로 진행한다.
예를 들면, 자유 메모리 기준값이 영(zero)으로 설정되면, 포그라운드에 존재하거나 액티브 연결을 가지거나 또는 높은 사용 가능성을 가지는 적어도 하나 이상의 애플리케이션만이 메모리 내에 존재하고, 다른 애플리케이션 및 다른 애플리케이션의 프로세스는 메모리 내에서 제거될 것이다.
따라서, 본 발명에서는 애플리케이션들을 구별하기 위해 이전의 애플리케이션 동작특성(behaviors)에 대한 통계를 이용하는데, 이럼으로써, 사용자가 가까운 미래 및/또는 현재의 상황에서 사용하기를 희망할 가능성이 더 높은 애플리케이션은 사용자가 가까운 미래 및/또는 현재의 상황에서 사용하기를 희망할 가능성이 더 낮은 애플리케이션보다 더 낮은 점수를 가질 것이다.
만일, 자유 메모리가 기준 레벨 이하이면, 제어부(210)는 가까운 미래 및/또는 현재의 상황에서 상대적으로 낮은 재-시작 가능성을 가지는 애플리케이션을 제거한다.
또한, 본 발명은 애플리케이션이 캐시 메모리에 로딩되어 있을 때 시작하는 웜-시동 시간과 애플리케이션이 캐시 메모리에 로딩되어 있지 않을 때 시작하는 콜드-시동 시간 간의 시간적 스프레드를 고려한다. 이러한 스프레드가 상대적으로 작으면, 사용자는 제거되는 프로세스에 의해 불편함을 느끼지 못할 것이다. 대조적으로, 콜드-시동과 웜-시동 시간 간의 스프레드가 상대적으로 크다면, 늘어난 콜드-시동 시간은 사용자에게 상당히 부담스럽게 느껴질 것이며 성가실 수도 있다. 따라서, 본 발명은 큰 시동 시간 스프레드를 갖는 애플리케이션과 대비하여 작은 시동 시간 스프레드를 갖는 애플리케이션에 점수를 더 매긴다. 즉, 제어부(210)는 다른 애플리케이션들보다 상대적으로 더 작은 콜드 시동 시간과 웜 시동 시간 간의 스프레드를 가지는 애플리케이션을 제거한다.
마찬가지로, 어느 한 애플리케이션이 짧은 콜드 시동시간을 갖는 것으로 결정되면, 사용자는 제거되는 프로세스에 의해 불편함을 느끼지 못할 것이다. 대조적으로, 콜드 시동 시간이 상대적으로 크다면, 시동 시간만큼 오랫동안 대기하는 것은 사용자에게 상당히 부담스럽게 느껴질 것이며 성가실 수도 있다. 따라서, 전술한 본 발명은 긴 시동시간을 갖는 애플리케이션과 대비하여 짧은 시동 시간을 갖는 애플리케이션에 더 점수를 매긴다. 즉, 제어부(210)는 다른 애플리케이션들보다 상대적으로 더 작은 콜드 시동 시간을 갖는 애플리케이션을 제거한다.
본 발명은 캐시 메모리에 존재하는 프로세스들 각각에 위와 같은 조건에 따라 점수를 매기고, 가장 높은 점수를 가지는 프로세스를 선택하여 제거한다.
본 발명에서는 애플리케이션을 실행 요청하는 사용자의 습관과 시동 시의 애플리케이션들의 동작특성이 저-메모리 상황에서 제거할 프로세스에 대한 선택을 수정하기 위해 이용됨으로써 사용자가 특정한 시간 및/또는 장소에서 사용할 가능성이 더 높고 콜드 시동시간과 웜 시동시간 사이가 큰 차이를 가지는 애플리케이션이, 사용자가 특정한 시간 및/또는 장소에서 사용할 가능성이 더 낮거나 콜드 시동과 웜 시동 시간 사이가 상대적으로 더 작은 차이를 갖는 애플리케이션보다, 제거될 가능성은 더 낮을 것이다.
즉, 캐시에 로딩될 필요성이 더 높을 것 같은 애플리케이션 및 캐시에 로딩되는 것이 득이 될 가능성이 더 많은 애플리케이션은 제거되는 것으로 선택될 가능성이 아마도 더 낮을 것이다. 따라서, 본 발명은 애플리케이션을 사용하는 사용자의 이력과 애플리케이션에 대한 시동동작의 특성에 따라 저-메모리 상황에서 프로세스들을 제거하기 위한 종료 정책을 적응적으로 수정하도록 동작한다.
예를 들어, 어느 한 애플리케이션이 상대적으로 큰 웜 시동 시간과 콜드 시동 시간 간의 스프레드를 갖는 것으로 예측되거나, 빈번하게 실행되며 하루 중 가까운 미래 시간에 시작될 가능성이 높은 것으로 예측되거나, 현재의 지리적 위치에서 시작될 가능성이 높은 것으로 예측된다면, 해당 애플리케이션의 점수는 감소함으로써 해당 애플리케이션이 제거되는 것으로 선택될 가능성을 낮출 수 있다.
본 발명은 예측된 동작특성을 현재의 시간 및/또는 장소에 대한 정보와 비교한다. 만일, 어느 애플리케이션이 가까운 미래 시점에 그리고/또는 현재의 장소에서 시작될 가능성이 더 많고, 해당 애플리케이션이 웜 시동 시간과 콜드 시동 시간 사이에 상대적으로 더 큰 차이를 가질 가능성이 있다고 결정되면, 제어부(210)는 캐시 메모리에 해당 애플리케이션을 미리 로딩하려고 시도할 것이다. 만일, 캐시 메모리가 이용 가능하다면, 제어부(210)는 해당 애플리케이션을 캐시 메모리에 로딩할 것이다.
따라서, 본 발명은 애플리케이션을 사용하는 사용자의 이력과 해당 애플리케이션들에 대해 검출된 시동 시의 동작특성에 따라 캐시 메모리에 애플리케이션들을 로딩하기 위한 프리-로딩(preloading) 정책을 적응적으로 수정한다.
예를 들면, 어느 한 애플리케이션이 상대적으로 큰 웜 시동 시간과 콜드 시동 시간 간에 스프레드를 갖는 것으로 예측되거나, 빈번하게 시작되며 하루 중 가까운 미래 시간에 시작될 가능성이 높은 것으로 예측되거나, 현재의 지리적 위치에서 시작될 가능성이 높은 것으로 예측된다면, 해당 애플리케이션은 가까운 미래에 사용될 가능성이 있는 것으로 기대하여 미리 시작되는 것으로 선택될 수 있다. 해당 애플리케이션을 시작한 후의 사용자의 대기 시간은 그에 따라 상응하게 감소될 수 있으므로 사용자의 이력과 해당 장치의 현재의 동작상황에 따라서 적응적으로 결정되는 방식으로 애플리케이션들에 대한 사용자의 이용을 효과적으로 개선할 수 있다.
본 발명의 여러 측면들은 컴퓨터로 독출이 가능한 기록 매체 상에 컴퓨터로 독출 가능한 코드로서 구현될 수도 있다. 컴퓨터로 독출 가능한 기록 매체는 컴퓨터 시스템에 의해 나중에 독출될 수 있는 데이터를 저장할 수 있는 어떤 형태의 데이터 저장장치이어도 좋다. 이러한 컴퓨터로 독출 가능한 기록 매체들의 예로는 ROM, RAM. 콤팩트 디스크(CD)-ROM, 자기 테이프, 플로피 디스크, 및 광학 데이터 저장 소자를 포함한다. 전술한 컴퓨터로 독출 가능한 기록 매체는 또한 컴퓨터로 독출 가능한 코드가 저장되고 분산형으로 실행되도록 네트워크로 결합된 컴퓨터 시스템상에서 분배될 수도 있다. 또한, 본 발명의 기술분야의 숙련된 프로그래머들이라면 본 발명을 달성하기 위한 기능적 컴퓨터 프로그램들, 명령어들, 및 명령어 세그먼트들을 용이하게 해석할 수 있을 것이다.
이상 본 발명을 임의의 예시적인 실시 예를 참조하여 도시하고 설명하였으나, 당해 기술분야에서의 전문가라면 첨부된 특허 청구 범위에 정의된 본 발명 및 그 균등물들의 범위와 사상을 벗어남이 없이 형태와 상세에 있어 다양한 변경들이 이뤄질 수 있음을 이해할 것이다.

Claims (20)

  1. 디지털 장치에서 애플리케이션의 시동 시간을 감소하는 방법에 있어서,
    애플리케이션 시작 동작 상태의 통계치를 트레킹하는 과정과,
    상기 트레킹된 통계치를 기반으로 특정 운영 시스템 상태 하에서의 적어도 하나의 애플리케이션 동작 상태를 예측하는 과정과,
    상기 특정 시스템 상태를 검출하는 과정과,
    상기 예측된 애플리케이션 동작 상태와 상기 검출된 특정 시스템 상태를 기반으로 캐시 메모리에 로딩된 애플리케이션 중에서 제거될 애플리케이션을 선택하는 과정을 포함하는 것을 특징으로 하는 감소 방법.
  2. 제1항에 있어서,
    상기 애플리케이션 시작 동작 상태는, 상기 애플리케이션의 콜드 시작(cold launch)의 시동 시간을 포함하는 것을 특징으로 하는 감소 방법.
  3. 제2항에 있어서,
    상기 제거될 애플리케이션을 선택하는 과정은, 상기 애플리케이션의 콜드 시작의 시동시간이 다른 애플리케이션의 콜드방식 시동시간보다 길면, 상기 애플리케이션을 제거하는 가능성을 감소하는 과정을 포함하는 것을 특징으로 하는 감소 방법.
  4. 제3항에 있어서,
    상기 애플리케이션 시작 동작 상태는, 상기 캐시 메모리에 로딩된 상기 애플리케이션의 웜 시작의 시동 시간을 포함하는 것을 특징으로 하는 감소 방법.
  5. 제4항에 있어서,
    상기 애플리케이션 시작 동작 상태는, 현재의 시스템 로드에 따라 상기 콜드 시작의 시동 시간과 상기 웜 시작의 시동 시간 간의 스프레드를 포함하는 것을 특징으로 하는 감소 방법.
  6. 제5항에 있어서,
    상기 애플리케이션의 콜드 및 웜 방식의 시동시간의 스프레드가 다른 애플리케이션의 콜드 및 웜 방식 시동시간의 스프레드보다 상대적으로 더 길다면, 상기 애플리케이션을 제거하는 가능성을 감소하는 과정을 포함하는 것을 특징으로 하는 감소 방법.
  7. 제1항에 있어서,
    상기 애플리케이션 시작 동작 상태는, 상기 애플리케이션의 캐시 메모리 사용량 및 상기 애플리케이션의 실행 빈도 및 상기 애플리케이션의 하루 중의 시작 시각 및 상기 애플리케이션의 실행 위치 중에서 적어도 하나를 포함하는 것을 특징으로 하는 감소 방법.
  8. 제7항에 있어서,
    상기 예측하는 과정은, 상기 애플리케이션의 캐시 메모리 사용량 및 상기 애플리케이션의 실행 빈도 및 상기 애플리케이션의 하루 중의 시작 시각 및 상기 애플리케이션의 실행 위치 중에서 적어도 하나를 기반으로 상기 애플리케이션의 사용 가능성을 결정하는 과정인 것을 특징으로 하는 감소 방법.
  9. 제8항에 있어서,
    상기 제거될 애플리케이션을 선택하는 과정은, 상기 애플리케이션의 사용 가능성이 다른 애플리케이션의 사용 가능성보다 높은 경우, 상기 애플리케이션을 제거하는 가능성을 감소하는 과정을 포함하는 것을 특징으로 하는 감소 방법.
  10. 제1항에 있어서,
    상기 예측된 애플리케이션 동작 상태와 상기 검출된 특정 시스템 상태를 기반으로 캐시 메모리에 로딩될 애플리케이션을 선택하고, 상기 선택된 애플리케이션을 미리 실행하는 과정을 더 포함하는 것을 특징으로 하는 감소 방법.
  11. 디지털 장치에서 애플리케이션의 시동 시간을 감소하는 장치에 있어서,
    애플리케이션 시작 동작 상태의 통계치를 트레킹하며, 상기 트레킹된 통계치를 기반으로 특정 운영 시스템 상태 하에서의 적어도 하나의 애플리케이션 동작 상태를 예측하며, 상기 특정 시스템 상태를 검출하고, 상기 예측된 애플리케이션 동작 상태와 상기 검출된 특정 시스템 상태를 기반으로 캐시 메모리에 로딩된 애플리케이션 중에서 제거될 애플리케이션을 선택하는 제어부를 포함하는 것을 특징으로 하는 감소 장치.
  12. 제11항에 있어서,
    상기 애플리케이션 시작 동작 상태는, 상기 애플리케이션의 콜드 시작(cold launch)의 시동 시간을 포함하는 것을 특징으로 하는 감소 장치.
  13. 제12항에 있어서,
    상기 제어부는, 상기 애플리케이션의 콜드 시작의 시동시간이 다른 애플리케이션의 콜드방식 시동시간보다 길면, 상기 애플리케이션을 제거하는 가능성을 감소하는 것을 포함하는 것을 특징으로 하는 감소 장치.
  14. 제13항에 있어서,
    상기 애플리케이션 시작 동작 상태는, 상기 캐시 메모리에 로딩된 상기 애플리케이션의 웜 시작의 시동 시간을 포함하는 것을 특징으로 하는 감소 장치.
  15. 제14항에 있어서,
    상기 애플리케이션 시작 동작 상태는, 현재의 시스템 로드에 따라 상기 콜드 시작의 시동 시간과 상기 웜 시작의 시동 시간 간의 스프레드를 포함하는 것을 특징으로 하는 감소 장치.
  16. 제15항에 있어서,
    상기 제어부는, 상기 애플리케이션의 콜드 및 웜 방식의 시동시간의 스프레드가 다른 애플리케이션의 콜드 및 웜 방식 시동시간의 스프레드보다 상대적으로 더 길다면, 상기 애플리케이션을 제거하는 가능성을 감소하는 것을 특징으로 하는 감소 장치.
  17. 제11항에 있어서,
    상기 애플리케이션 시작 동작 상태는, 상기 애플리케이션의 캐시 메모리 사용량 및 상기 애플리케이션의 실행 빈도 및 상기 애플리케이션의 하루 중의 시작 시각 및 상기 애플리케이션의 실행 위치 중에서 적어도 하나를 포함하는 것을 특징으로 하는 감소 장치.
  18. 제17항에 있어서,
    상기 제어부는, 상기 애플리케이션의 캐시 메모리 사용량 및 상기 애플리케이션의 실행 빈도 및 상기 애플리케이션의 하루 중의 시작 시각 및 상기 애플리케이션의 실행 위치 중에서 적어도 하나를 기반으로 상기 애플리케이션의 사용 가능성을 결정하는 것을 특징으로 하는 감소 장치.
  19. 제18항에 있어서,
    상기 제어부는, 상기 애플리케이션의 사용 가능성이 다른 애플리케이션의 사용 가능성보다 높은 경우, 상기 애플리케이션을 제거하는 가능성을 감소하는 것을 특징으로 하는 감소 장치.
  20. 제11항에 있어서,
    상기 제어부는, 상기 예측된 애플리케이션 동작 상태와 상기 검출된 특정 시스템 상태를 기반으로 캐시 메모리에 로딩될 애플리케이션을 선택하고, 상기 선택된 애플리케이션을 미리 실행하는 것을 특징으로 하는 감소 장치.
KR1020120055404A 2011-06-16 2012-05-24 디지털 장치에서 애플리케이션의 시동 시간을 감소하는 장치 및 방법 KR20120139541A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP12172141A EP2538327A1 (en) 2011-06-16 2012-06-15 Adaptive Termination and Pre-Launching Policy for Improving Application Startup Time

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/161,703 US20120324481A1 (en) 2011-06-16 2011-06-16 Adaptive termination and pre-launching policy for improving application startup time
US13/161,703 2011-06-16

Publications (1)

Publication Number Publication Date
KR20120139541A true KR20120139541A (ko) 2012-12-27

Family

ID=47354835

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120055404A KR20120139541A (ko) 2011-06-16 2012-05-24 디지털 장치에서 애플리케이션의 시동 시간을 감소하는 장치 및 방법

Country Status (2)

Country Link
US (1) US20120324481A1 (ko)
KR (1) KR20120139541A (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150121486A (ko) * 2014-04-21 2015-10-29 삼성전자주식회사 영상처리장치, 영상처리방법 및 컴퓨터 판독가능 기록매체
US9965188B2 (en) 2013-02-01 2018-05-08 Huawei Device (Dongguan) Co., Ltd. Memory cleaning method and apparatus, and terminal device
KR20180048940A (ko) * 2015-11-19 2018-05-10 구글 엘엘씨 백그라운드에서 네이티브 어플리케이션의 사전-인스턴스화
KR20180054805A (ko) * 2015-09-21 2018-05-24 알리바바 그룹 홀딩 리미티드 단말기 애플리케이션을 로딩하기 위한 방법 및 장치
KR20190045765A (ko) * 2017-10-24 2019-05-03 삼성전자주식회사 어플리케이션 프로그램을 제어하는 전자 장치 및 그 제어 방법
KR20190058610A (ko) * 2016-10-20 2019-05-29 후아웨이 테크놀러지 컴퍼니 리미티드 애플리케이션 기동 제어 방법 및 제어 장치
CN111966493A (zh) * 2020-08-07 2020-11-20 Oppo广东移动通信有限公司 进程处理方法、电子设备及存储介质
WO2022154263A1 (ko) * 2021-01-13 2022-07-21 삼성전자 주식회사 전자 장치 및 전자 장치의 동작 방법

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738868B2 (en) 2011-08-23 2014-05-27 Vmware, Inc. Cooperative memory resource management for virtualized computing devices
US9176780B2 (en) * 2011-08-23 2015-11-03 Vmware, Inc. Dynamically balancing memory resources between host and guest system based on relative amount of freeable memory and amount of memory allocated to hidden applications
US8578394B2 (en) 2011-09-09 2013-11-05 Microsoft Corporation Exempting applications from suspension
US20130174096A1 (en) * 2011-12-30 2013-07-04 Research In Motion Limited Method and apparatus pertaining to the presentation of icons
US9170859B2 (en) * 2012-06-07 2015-10-27 Apple Inc. Targeted memory pressure event notifications
US9052896B2 (en) * 2012-07-20 2015-06-09 Facebook, Inc. Adjusting mobile device state based on user intentions and/or identity
US20140031026A1 (en) * 2012-07-30 2014-01-30 Tencent Technology (Shenzhen) Company Limited Method and device for performing a cleaning process on a portable electronic device
US9250958B2 (en) * 2012-11-19 2016-02-02 Qualcomm Innovation Center, Inc. System, method, and apparatus for improving application-launch latencies
CN102946486A (zh) * 2012-11-20 2013-02-27 惠州Tcl移动通信有限公司 一种基于手机的后台应用自动清理方法及手机
CN104063288B (zh) * 2013-03-22 2016-05-25 腾讯科技(深圳)有限公司 进程管理方法及装置
US10656800B2 (en) 2013-03-29 2020-05-19 Microsoft Technology Licensing, Llc Visual configuration and activation
US10452222B2 (en) 2013-05-29 2019-10-22 Microsoft Technology Licensing, Llc Coordination of system readiness tasks
US9508040B2 (en) * 2013-06-12 2016-11-29 Microsoft Technology Licensing, Llc Predictive pre-launch for applications
US9588897B2 (en) 2013-07-19 2017-03-07 Samsung Electronics Co., Ltd. Adaptive application caching for mobile devices
US20150067238A1 (en) * 2013-08-29 2015-03-05 Sandisk Technologies Inc. Computing Device and Method for Predicting Low Memory Conditions
US9575746B2 (en) * 2013-09-16 2017-02-21 Bank Of America Corporation Computer application maturity illustration system
CN103500121A (zh) * 2013-09-29 2014-01-08 深圳Tcl新技术有限公司 一种进程管理方法及装置
US9411638B2 (en) 2013-12-19 2016-08-09 International Business Machines Corporation Application startup page fault management in a hardware multithreading environment
US9678797B2 (en) 2014-03-10 2017-06-13 Microsoft Technology Licensing, Llc Dynamic resource management for multi-process applications
US9710198B2 (en) 2014-05-07 2017-07-18 Sandisk Technologies Llc Method and computing device for controlling bandwidth of swap operations
US9633233B2 (en) 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
US9665296B2 (en) * 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US9928169B2 (en) 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US11516309B2 (en) 2014-07-16 2022-11-29 Tensera Networks Ltd. Transparent pre-loading of user applications
US11483415B2 (en) 2014-07-16 2022-10-25 Tensera Networks Ltd. Background pre-rendering of user applications
US11095743B2 (en) 2014-07-16 2021-08-17 Tensera Networks Ltd. Optimized content-delivery network (CDN) for the wireless last mile
US10320704B2 (en) * 2014-10-22 2019-06-11 Tata Consultancy Services Limited User driven smartphone scheduling enhancement for running data analytics application
US9760399B1 (en) * 2015-03-17 2017-09-12 Amazon Technologies, Inc. Dynamic process management
US10706187B1 (en) * 2015-10-01 2020-07-07 Comsol Ab Systems and methods for reducing application startup times for physics modeling applications
KR102401772B1 (ko) * 2015-10-02 2022-05-25 삼성전자주식회사 전자 장치에서 어플리케이션 실행 장치 및 방법
US10354609B2 (en) 2016-03-02 2019-07-16 Samsung Electronics Co., Ltd. Functional mode aware resource management
CN107193577B (zh) * 2016-03-15 2021-08-03 斑马智行网络(香港)有限公司 一种应用启动方法、装置和智能终端
CN107291549B (zh) * 2016-03-31 2020-11-24 阿里巴巴集团控股有限公司 一种管理应用程序的方法及装置
US10552320B2 (en) * 2016-04-01 2020-02-04 Intel Corporation Using a projected out of memory score to selectively terminate a process without transitioning to a background mode
CN105930058A (zh) * 2016-04-21 2016-09-07 青岛海信移动通信技术股份有限公司 一种移动终端应用启动方法、装置及移动终端
CN105939416A (zh) * 2016-05-30 2016-09-14 努比亚技术有限公司 移动终端及其应用预启动方法
CN106020962B (zh) * 2016-05-31 2019-05-21 Oppo广东移动通信有限公司 一种进程控制方法及终端设备
US10520979B2 (en) 2016-06-10 2019-12-31 Apple Inc. Enhanced application preview mode
US10747467B2 (en) 2016-06-10 2020-08-18 Apple Inc. Memory management for application loading
US10725761B2 (en) 2016-06-10 2020-07-28 Apple Inc. Providing updated application data for previewing applications on a display
US10635337B2 (en) 2016-06-27 2020-04-28 Intel Corporation Dynamic configuration of compressed virtual memory
CN105912395B (zh) * 2016-06-29 2019-03-15 中科创达软件股份有限公司 一种进程管理方法及装置
US11113170B2 (en) 2016-07-26 2021-09-07 Intel Corporation Technologies for managing memory on compute device
CN106250222A (zh) * 2016-07-28 2016-12-21 北京金山安全软件有限公司 一种管理应用程序的方法、装置及电子设备
CN107678791A (zh) * 2016-08-02 2018-02-09 中兴通讯股份有限公司 一种信息处理的方法和装置
CN112882804A (zh) * 2016-08-17 2021-06-01 华为技术有限公司 一种启动应用的方法及装置
CN107885591A (zh) 2016-09-27 2018-04-06 华为技术有限公司 为应用分配系统资源的方法和终端
CN106484472B (zh) * 2016-09-29 2021-06-15 华为技术有限公司 一种内存回收方法及终端
US20180129537A1 (en) * 2016-11-10 2018-05-10 Microsoft Technology Licensing, Llc Managing memory usage using soft memory targets
US10445126B2 (en) * 2017-02-21 2019-10-15 Red Hat, Inc. Preloading enhanced application startup
WO2018191888A1 (zh) * 2017-04-19 2018-10-25 广东欧珀移动通信有限公司 应用程序加速启动方法、装置及终端
CN107301086A (zh) * 2017-06-21 2017-10-27 深圳市万普拉斯科技有限公司 进程处理方法、装置、移动终端及计算机可读取存储介质
CN110914802A (zh) * 2017-06-30 2020-03-24 Oppo广东移动通信有限公司 应用控制方法、装置、存储介质及电子设备
WO2019019194A1 (zh) * 2017-07-28 2019-01-31 华为技术有限公司 应用管理方法及终端
US11604680B2 (en) * 2017-09-18 2023-03-14 Arris Enterprises Llc Low system memory detection
CN109766138A (zh) * 2017-11-08 2019-05-17 广东欧珀移动通信有限公司 应用程序预测模型建立、预加载方法、装置、介质及终端
CN109814937A (zh) * 2017-11-20 2019-05-28 广东欧珀移动通信有限公司 应用程序预测模型建立、预加载方法、装置、介质及终端
CN109947497B (zh) * 2017-12-20 2021-06-08 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN109960539A (zh) * 2017-12-21 2019-07-02 广东欧珀移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN108076224B (zh) * 2017-12-21 2021-06-29 Oppo广东移动通信有限公司 应用程序控制方法、装置及存储介质和移动终端
CN110046030B (zh) * 2018-01-12 2021-08-31 Oppo广东移动通信有限公司 应用程序处理方法和装置、电子设备、计算机可读存储介质
CN108345478B (zh) * 2018-02-28 2020-04-21 Oppo广东移动通信有限公司 应用处理方法、装置、存储介质及电子设备
US20220179668A1 (en) * 2018-03-05 2022-06-09 Tensera Networks Ltd. Robust Application Preloading with Accurate User Experience
US11915012B2 (en) * 2018-03-05 2024-02-27 Tensera Networks Ltd. Application preloading in the presence of user actions
US11922187B2 (en) 2018-03-05 2024-03-05 Tensera Networks Ltd. Robust application preloading with accurate user experience
CN108595228B (zh) 2018-05-10 2021-03-12 Oppo广东移动通信有限公司 应用程序预测模型建立方法、装置、存储介质及移动终端
CN108595227A (zh) 2018-05-10 2018-09-28 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN108710513B (zh) 2018-05-15 2020-07-21 Oppo广东移动通信有限公司 应用程序启动方法、装置、存储介质及终端
CN108681475B (zh) * 2018-05-21 2021-11-26 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN108829456A (zh) * 2018-05-29 2018-11-16 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及终端
US11055110B2 (en) * 2018-06-05 2021-07-06 Microsoft Technology Licensing, Llc Operating system service for persistently executing programs
CN108804157A (zh) 2018-06-05 2018-11-13 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及终端
CN109067944B (zh) 2018-08-22 2020-08-25 Oppo广东移动通信有限公司 终端控制方法、装置、移动终端以及存储介质
WO2020045925A1 (en) 2018-08-27 2020-03-05 Samsung Electronics Co., Ltd. Methods and systems for managing an electronic device
CN109684090A (zh) * 2018-12-19 2019-04-26 三星电子(中国)研发中心 一种资源分配方法和装置
CN109885340B (zh) * 2019-01-10 2022-06-10 北京字节跳动网络技术有限公司 一种应用程序冷启动加速方法、装置、电子设备
US10536857B1 (en) * 2019-06-24 2020-01-14 Bank Of America Corporation Systems and methods for pre-authenticating a user on a mobile device
EP4004767A4 (en) * 2019-07-30 2023-03-08 Tensera Networks Ltd. PRE-RENDERING APPLICATION USER INTERFACES INTO USER DEVICES
EP3812902B1 (en) * 2019-10-25 2022-07-27 Thomson Licensing Method for controlling memory resources in an electronic device, device for controlling memory resources, electronic device and computer program
US20210240801A1 (en) * 2020-02-03 2021-08-05 Arris Enterprises Llc Digital rights management system resource manager
WO2021208626A1 (zh) * 2020-04-13 2021-10-21 华为技术有限公司 一种应用保活方法、装置和电子设备
CN112363841B (zh) * 2020-11-27 2022-11-04 Oppo(重庆)智能科技有限公司 应用进程的查杀方法、装置、电子设备及存储介质
CN116670646A (zh) 2020-12-03 2023-08-29 腾赛拉网络有限公司 预加载具有现有任务的应用
WO2022170772A1 (zh) * 2021-02-09 2022-08-18 荣耀终端有限公司 一种应用程序运行加速的方法及设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926404A (en) * 1995-05-23 1999-07-20 Dell Usa, L.P. Computer system with unattended operation power-saving suspend mode
US6763458B1 (en) * 1999-09-27 2004-07-13 Captaris, Inc. System and method for installing and servicing an operating system in a computer or information appliance
US7058691B1 (en) * 2000-06-12 2006-06-06 Trustees Of Princeton University System for wireless push and pull based services
US7017037B2 (en) * 2002-06-27 2006-03-21 Microsoft Corporation Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time
US20050071564A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation Reduction of cache miss rates using shared private caches
US20050240699A1 (en) * 2004-03-31 2005-10-27 Yoder Michael E Safe process deactivation
US20070234028A1 (en) * 2005-09-15 2007-10-04 Rothman Michael A Method and apparatus for quickly changing the power state of a data processing system
US20070300239A1 (en) * 2006-06-23 2007-12-27 International Business Machines Corporation Dynamic application instance placement in data center environments

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9965188B2 (en) 2013-02-01 2018-05-08 Huawei Device (Dongguan) Co., Ltd. Memory cleaning method and apparatus, and terminal device
KR20150121486A (ko) * 2014-04-21 2015-10-29 삼성전자주식회사 영상처리장치, 영상처리방법 및 컴퓨터 판독가능 기록매체
KR20180054805A (ko) * 2015-09-21 2018-05-24 알리바바 그룹 홀딩 리미티드 단말기 애플리케이션을 로딩하기 위한 방법 및 장치
KR20180048940A (ko) * 2015-11-19 2018-05-10 구글 엘엘씨 백그라운드에서 네이티브 어플리케이션의 사전-인스턴스화
KR20190058610A (ko) * 2016-10-20 2019-05-29 후아웨이 테크놀러지 컴퍼니 리미티드 애플리케이션 기동 제어 방법 및 제어 장치
US11474831B2 (en) 2016-10-20 2022-10-18 Huawei Technologies Co., Ltd. Application startup control method and control device
KR20190045765A (ko) * 2017-10-24 2019-05-03 삼성전자주식회사 어플리케이션 프로그램을 제어하는 전자 장치 및 그 제어 방법
CN111966493A (zh) * 2020-08-07 2020-11-20 Oppo广东移动通信有限公司 进程处理方法、电子设备及存储介质
CN111966493B (zh) * 2020-08-07 2023-07-21 Oppo广东移动通信有限公司 进程处理方法、电子设备及存储介质
WO2022154263A1 (ko) * 2021-01-13 2022-07-21 삼성전자 주식회사 전자 장치 및 전자 장치의 동작 방법

Also Published As

Publication number Publication date
US20120324481A1 (en) 2012-12-20

Similar Documents

Publication Publication Date Title
KR20120139541A (ko) 디지털 장치에서 애플리케이션의 시동 시간을 감소하는 장치 및 방법
EP2538327A1 (en) Adaptive Termination and Pre-Launching Policy for Improving Application Startup Time
KR102275114B1 (ko) 디바이스 특유의 또는 사용자 특유의 자원 사용 프로파일에 기초한 자원 관리
US9471378B2 (en) Adaptive resource management of a data processing system
US10101910B1 (en) Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager
US9250958B2 (en) System, method, and apparatus for improving application-launch latencies
US9626295B2 (en) Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring
US9678797B2 (en) Dynamic resource management for multi-process applications
EP3508974B1 (en) Method and terminal for allocating system resource to application
KR101799253B1 (ko) 다중 클러스터 이종 프로세서 아키텍처에서 동적 캐시 확장을 제공하기 위한 시스템 및 방법
EP3506105B1 (en) Method and device for processing a memory and storage medium
US10289446B1 (en) Preserving web browser child processes by substituting a parent process with a stub process
CN104662487A (zh) 根据应用程序活动来预测用户意图和未来交互
EP3506114B1 (en) Memory processing method and device and storage medium
US10649889B2 (en) Method and apparatus for managing kernel memory of data processing systems
US20220035655A1 (en) Method and Device for Anonymous Page Management, Terminal Device, and Readable Storage Medium
US10248321B1 (en) Simulating multiple lower importance levels by actively feeding processes to a low-memory manager
JP6217008B2 (ja) 電子機器、制御方法、及び、プログラム
US20200081741A1 (en) Information processing apparatus and memory management method
KR20240014742A (ko) 성능 정보를 고려하는 메모리 관리 방법 및 장치
JP2019212274A (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
CN116560837A (zh) 缓存资源调整方法、装置、电子设备和可读存储介质
WO2022203532A1 (en) Method for virtual memory management in a computer

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid