KR101739216B1 - 중앙집중식 태스크 스케줄링 - Google Patents

중앙집중식 태스크 스케줄링 Download PDF

Info

Publication number
KR101739216B1
KR101739216B1 KR1020157025350A KR20157025350A KR101739216B1 KR 101739216 B1 KR101739216 B1 KR 101739216B1 KR 1020157025350 A KR1020157025350 A KR 1020157025350A KR 20157025350 A KR20157025350 A KR 20157025350A KR 101739216 B1 KR101739216 B1 KR 101739216B1
Authority
KR
South Korea
Prior art keywords
task
background task
execution
state
importance
Prior art date
Application number
KR1020157025350A
Other languages
English (en)
Other versions
KR20150120435A (ko
Inventor
다니엘 안드레아스 슈테펜
케빈 제임스 반 베흐텐
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20150120435A publication Critical patent/KR20150120435A/ko
Application granted granted Critical
Publication of KR101739216B1 publication Critical patent/KR101739216B1/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Power Sources (AREA)

Abstract

디바이스에 대한 백그라운드 태스크를 스케줄링하고 관리하는 방법 및 장치가 기술된다. 예시적인 실시예에서, 디바이스는 백그라운드 태스크를 등록하는데, 여기서 등록하는 것은 백그라운드 태스크에 대한 실행 기준을 저장하는 것을 포함한다. 실행 기준은 백그라운드 태스크들을 시작하기 위한 기준 및 디바이스의 컴포넌트 상태에 기초한 실행 기준을 나타낸다. 디바이스는 추가로 실행 기준의 발생에 대한 디바이스의 실행 상태를 모니터링한다. 실행 기준이 발생하는 경우, 디바이스는 백그라운드 태스크를 수행하기 위해 디바이스에서의 가용 헤드룸을 판정하고, 가용 디바이스 헤드룸이 백그라운드 태스크 중요도 초과인 경우에 백그라운드 태스크를 시작하는데, 여기서 백그라운드 태스크 중요도는 디바이스가 백그라운드 태스크를 실행하는 데 얼마나 중요한지의 척도이다.

Description

중앙집중식 태스크 스케줄링{CENTRALIZED TASK SCHEDULING}
관련 출원
출원인은 2013년 2월 15일자로 출원된 종래의 공계류 중인 미국 가출원 제61/765,628호의 우선권의 이익을 주장하며, 그 전체는 참고로 포함된다.
본 발명은 대체로 프로세스 관리에 관한 것이고, 더 구체적으로는 시스템 조건에 기초하여 태스크들을 스케줄링하는 것에 관한 것이다.
백그라운드 태스크는 백그라운드에서 사용자 개입없이 실행되는 디바이스의 프로세스이다. 이들 백그라운드 태스크들은 사용자 개입이 요구되지 않는 행동들을 수행하는 프로세스들에 이용될 수 있다. 예를 들어, 백그라운드 태스크는 로그하기, 시스템 모니터링, 디바이스 유지보수, 소프트웨어 업데이트, 미디어 및/또는 애플리케이션 다운로드들, 또는 사용자 개입을 요구하지 않는 기타 행동들에 이용될 수 있다.
백그라운드 태스크가 사용자 개입을 요구하지 않기 때문에, 디바이스는 이러한 태스크를 요구 시에 실행할 수 있거나 또는 향후 언젠가 백그라운드 태스크를 수행하도록 스케줄링될 수 있다. 향후 태스크를 수행하는 한 가지 방식은 이러한 태스크를 스케줄링하여 향후 스케줄링된 정해진 시간에 태스크가 수행되게 하는 것이다. 이는 한 번 수행될 백그라운드 태스크 또는 정해진 시간 스케줄에 주기적으로 수행되는 순환 태스크에 이용될 수 있다.
백그라운드 태스크 실행의 정해진 스케줄링에서의 문제는 디바이스 동작 조건들이 백그라운드 태스크 행동들에 적합하지 않을 수 있다는 것이다. 예를 들어, 서버로부터의 다운로드 가용성을 주기적으로 확인하는 백그라운드 태스크는 백그라운드 태스크가 성공적으로 실행되도록 하기 위해 이러한 서버와의 네트워크 접속성을 요구할 것이다. 이러한 태스크를 정해진 시간에 실행하도록 스케줄링하는 것에 의하면, 디바이스가 백그라운드 태스크를 실행할 때 백그라운드 태스크가 적절한 시스템 조건들을 가질 것인지 여부는 알려지지 않는다. 추가로, 부적절한 시간에서의 백그라운드 태스크의 실행은 디바이스와의 사용자 상호작용뿐만 아니라 다른 실행 프로세스들을 열화시킬 수 있다.
디바이스에 대한 백그라운드 태스크를 스케줄링하고 관리하는 방법 및 장치가 기술된다. 예시적인 실시예에서, 디바이스는 백그라운드 태스크를 등록하는데, 여기서 등록하는 것은 백그라운드 태스크에 대한 실행 기준을 저장하는 것을 포함한다. 실행 기준은 백그라운드 태스크를 시작하기 위한 기준 및 디바이스의 컴포넌트 상태에 기초한 실행 기준을 나타낸다. 디바이스는 추가로 실행 기준의 발생에 대한 디바이스의 실행 상태를 모니터링한다. 실행 기준이 발생하는 경우, 디바이스는 백그라운드 태스크를 수행하기 위해 디바이스에서의 가용 헤드룸(available headroom)을 판정하고, 가용 디바이스 헤드룸이 백그라운드 태스크 중요도 초과인 경우에 백그라운드 태스크를 시작하는데, 여기서 백그라운드 태스크 중요도는 디바이스가 백그라운드 태스크를 실행하는 것이 얼마나 중요한지에 대한 척도이다.
다른 실시예에서, 디바이스는 백그라운드 태스크에 대한 시간 의존적 태스크 중요도를 판정하는데, 여기서 시간 의존적 태스크 중요도는 백그라운드 태스크가 초기에 실행을 위해 이용가능해진 이래로 경과한 시간에 기초한다. 디바이스는 추가로 백그라운드 태스크를 실행하도록 하기 위해 디바이스에 대한 가용 헤드룸을 판정하고, 이러한 시스템 비용을 시간 의존적 태스크 중요도와 비교한다. 가용 디바이스 헤드룸이 시간 의존적 태스크 중요도 초과인 경우, 디바이스는 백그라운드 태스크를 실행한다.
다른 방법들 및 장치들이 또한 기술된다.
본 발명이 첨부 도면의 도면들에 제한이 아닌 예로서 도시되며, 도면에서 동일한 참조 부호들은 유사한 요소들을 나타낸다.
도 1은 백그라운드 태스크 스케줄러를 갖는 디바이스의 일 실시예의 블록 다이어그램이다.
도 2는 태스크 중요도 곡선의 일 실시예의 도면이다.
도 3은 태스크를 스케줄링하고 관리하는 프로세스의 일 실시예의 흐름도이다.
도 4는 태스크에 대한 상이한 상태들의 상태 다이어그램의 일 실시예의 도면이다.
도 5는 태스크 중요도와 가용 디바이스 헤드룸을 비교하는 프로세스의 일 실시예의 흐름도이다.
도 6은 태스크를 스케줄링하고 관리하는 백그라운드 태스크 스케줄러의 일 실시예의 블록 다이어그램이다.
도 7은 태스크 중요도와 가용 디바이스 헤드룸을 비교하는 태스크 중요도 모듈의 일 실시예의 블록 다이어그램이다.
도 8은 본 명세서에 기술되는 실시예들과 관련하여 사용될 수 있는 전형적인 컴퓨터 시스템의 일례를 도시한다.
도 9는 본 발명의 일 실시예에서 사용될 수 있는 데이터 프로세싱 시스템의 일례를 도시한다.
디바이스에 대한 백그라운드 태스크를 스케줄링하고 관리하는 방법 및 장치가 기술된다. 하기의 설명에서, 많은 구체적인 세부사항들이 본 발명의 실시예의 완벽한 설명을 제공하기 위해 기재된다. 그러나, 본 발명의 실시예들이 이들 구체적인 세부사항들 없이도 실시될 수 있다는 것은 당업자에게 자명할 것이다. 다른 경우에, 주지되어 있는 컴포넌트들, 구조들, 및 기법들은 본 설명의 이해를 어렵게 하지 않도록 하기 위해 상세히 나타내지 않았다.
본 명세서에서의 "하나의 실시예" 또는 "일 실시예"에 대한 언급은, 그 실시예와 관련하여 기술된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있다는 것을 의미한다. 본 명세서 내의 여러 곳에서의 문구 "일 실시예에서"의 출현들은 반드시 모두 동일한 실시예를 언급하는 것은 아니다.
하기의 설명 및 청구범위에서, "커플링된" 및 "접속된"이라는 용어들은 그들의 파생어와 함께 사용될 수 있다. 이들 용어들은 서로에 대한 동의어인 것으로 의도되는 것은 아니라는 것을 이해해야 한다. "커플링된"은 서로 직접적인 물리적 또는 전기적 접촉 상태에 있을 수 있거나 또는 그러한 상태에 있지 않을 수 있는 두 개 이상의 요소들이 서로 협력하거나 또는 서로 상호작용한다는 것을 나타내는 데 사용된다. "접속된"은 서로 커플링된 두 개 이상의 요소들 사이에서의 통신의 확립을 나타내는 데 사용된다.
뒤따르는 도면에 도시된 프로세스들은 하드웨어(예컨대, 회로, 전용 로직 등), (범용 컴퓨터 시스템 또는 전용 기계 상에서 실행되는 것과 같은) 소프트웨어, 또는 둘 모두의 조합을 포함하는 프로세싱 로직에 의해 수행된다. 프로세스들이 몇 개의 순차적 동작들의 관점에서 하기에 기술되지만, 기술되는 동작들 중 일부는 상이한 순서로 수행될 수 있다는 것을 이해해야 한다. 더욱이, 일부 동작들은 순차적으로보다는 병행하여 수행될 수 있다.
"서버", "클라이언트", 및 "디바이스"라는 용어들은, 서버, 클라이언트, 및/또는 디바이스에 대한 특정 폼 팩터(form factor)를 구체적으로 지칭하기보다는 대체로 데이터 프로세싱 시스템들을 지칭하는 것으로 의도된다.
디바이스에 대한 백그라운드 태스크를 스케줄링하고 관리하는 방법 및 장치가 기술된다. 일 실시예에서, 디바이스는 나중에 실행될 백그라운드 태스크를 등록하는데, 여기서 이러한 태스크는 디바이스가 태스크를 실행하는 데 적합한 시간이 언제인지 판정하는 데 이용되는 하나 이상의 기준을 포함한다. 일 실시예에서, 기준들의 각각은 디바이스 전력 상태, 중앙 프로세싱 유닛 상태, 디스플레이 상태, 저장 시스템 상태, 또는 네트워크 접속성과 같은 컴포넌트 상태에 기초할 수 있다. 예를 들어, 그리고 일 실시예에서, 기준은 전력 상태(예컨대, 디바이스가 배터리로 구동 중인지 아니면 교류(A/C) 전원에 플러그인되어 있는지 여부), 시스템 부하(예컨대, 중앙 프로세싱 유닛(CPU)(들)이 유휴 상태인지, 아니면 비지(busy) 상태인지, 아니면 소정 퍼센트 부하 하에 있는지 여부), 및/또는 다른 고급 기준들(예컨대, (대체로, 또는 특정 서버 또는 서비스에 접속되는) 네트워크 접속성, 디바이스의 스크린이 슬립 상태인지 여부, (예컨대, 하드 디스크 드라이브(HDD) 스피닝을 갖는) 저장 활성도, 특정 전력 상태의 요구(예컨대, A/C 단독, 소정 임계치의 배터리, 소정 임계치 초과의 배터리, 소정 임계치 미만의 배터리 등))일 수 있다.
일 실시예에서, 이들 기준들이 디바이스 동작 중의 소정 시간에 충족되는 경우, 디바이스는 백그라운드 태스크가 실행되어야 하는지 여부를 판정한다. 디바이스는 가용 디바이스 헤드룸을 판정하고, 이러한 가용 디바이스 헤드룸을 태스크 중요도와 비교한다. 일 실시예에서, 가용 디바이스 헤드룸은 태스크를 실행하는 데 이용가능한 디바이스 리소스들의 양이다. 가용 디바이스 헤드룸이 태스크 중요도 이상인 경우, 디바이스는 태스크를 실행한다. 반대로, 가용 디바이스 헤드룸이 태스크 중요도 미만인 경우, 디바이스는 태스크를 실행할 후속 시간을 기다린다. 이러한 후속 시간에, 디바이스는 디바이스 조건들을 재평가하여 태스크 기준들이 여전히 충족되는지 여부를 판정한다. 태스크 기준들이 여전히 충족되는 경우, 디바이스는 가용 디바이스 헤드룸과 태스크 중요도의 비교를 수행한다. 일 실시예에서, 태스크 중요도는 태스크 기준들이 초기에 충족된 이래로 경과한 시간에 따라 변화한다. 태스크 기준들이 초기에 충족되는 경우, 태스크 중요도는 낮다. 시간이 경과함에 따라, 태스크 중요도는 태스크의 유예 기간(grace period)이 만료할 때까지 증가한다. 이러한 태스크의 유예 기간의 만료 시, 태스크 중요도가 증가하여 태스크가 실행될 가능성이 더 크다. 일 실시예에서, 디바이스는 태스크에 대응하는 애플리케이션에 태스크가 실행될 준비가 되었다는 통지를 전송함으로써 태스크를 실행한다. 일 실시예에서, 태스크는 더 큰 애플리케이션의 일부분이다(예컨대, 이메일 애플리케이션의 경우, 태스크가 새로운 이메일을 확인할 수 있다).
일단 디바이스가 태스크를 실행하면, 디바이스는 태스크 기준들을 모니터링하여 태스크 기준들이 태스크의 실행 동안에 충족되는지 여부를 판정한다. 태스크의 실행 동안에 태스크 기준들이 충족되지 않는 경우, 디바이스는 태스크의 실행을 계속할 것인지 여부를 판정한다. 태스크가 연기되어야 하는 경우, 디바이스는 태스크를 중단한다. 일 실시예에서, 디바이스는 태스크의 실행을 중단하는 태스크에 대응하는 애플리케이션에 의해 태스크를 중단한다. 후속 시간에, 태스크 기준들이 이어서 재충족되는 경우, 디바이스는 태스크의 실행을 재시작할 수 있다. 태스크가 이행됨에 따라, 디바이스는 태스크가 순환 태스크인지 여부를 판정하며, 이 경우에 디바이스는 이러한 태스크의 다른 인스턴스를 스케줄링한다.
도 1은 백그라운드 태스크 스케줄러(108)를 갖는 디바이스(100)의 일 실시예의 블록 다이어그램이다. 일 실시예에서, 디바이스(100)는 개인 컴퓨터, 랩톱, 서버, 모바일 디바이스(예컨대, 스마트폰, 랩톱, 개인 디지털 어시스턴트, 음악 재생 디바이스, 게이밍 디바이스 등), 네트워크 요소(예컨대, 라우터, 스위치, 게이트웨이 등), 및/또는 다수의 프로세스들을 실행할 수 있고 슬립 모드를 가질 수 있는 임의의 디바이스일 수 있다. 일 실시예에서, 디바이스는 물리적 또는 가상의 디바이스일 수 있다. 도 1에서, 디바이스(100)는 디바이스의 하드웨어 리소스들을 관리하는 데 사용되는 소프트웨어의 세트인 운영 체제(102)를 포함하고, 애플리케이션 프로그램들과 같은 디바이스의 프로그램들을 달리 실행하기 위한 공통 서비스들을 제공한다. 일 실시예에서, 운영 체제(102)는 디바이스(100)의 프로세서가 각각의 실행 프로세스를 실행하는 경우에 시간 스케줄링에 의해 상이한 실행 프로세스들을 관리한다. 일 실시예에서, 프로세스는 실행되고 있는 컴퓨터 프로그램의 인스턴스이다. 이러한 실시예에서, 프로세스는 사용자 입력의 결과로서 실행 중인 사용자 애플리케이션(104)일 수 있다. 사용자 프로세스들의 예들은 웹 서핑, 워드 프로세싱, 이메일, 소셜 미디어, 미디어 프로세싱 등이다. 프로세스의 다른 예는 사용자 애플리케이션에 하나 이상의 서비스들을 제공하는 시스템 프로세스(106), 다른 프로세스 등이다. 일 실시예에서, 시스템 프로세스는 시스템 유지보수 또는 다른 유형들의 단일 또는 순환 태스크들을 수행하는 데몬(daemon)이다.
일 실시예에서, 운영 체제(102)는 프로세스들을 시작하는 시작 데몬(112)을 포함한다. 이러한 실시예에서, 시작 데몬은 백그라운드 태스크를 스케줄링하고 관리하는 백그라운드 태스크 스케줄러(108)를 포함한다. 추가로, 운영 체제(102)는 하나 이상의 스케줄링된 태스크들(110)을 포함한다. 일 실시예에서, 백그라운드 태스크는 백그라운드에서 사용자 개입없이 실행되는 태스크이다. 백그라운드 태스크는 단일 목적 태스크(예컨대, 원격 다운로드들, 사용자 행동 또는 원격 트리거 후에 시작되는 지연가능한 긴 실행 활성도(예컨대, (사용자-트리거 데이터베이스 업데이트 후에 시작되는) 온-디스크 데이터베이스(on disk database)에의 저장을 최적화함), 예컨대 URL(Uniform Resource Locator) 블랙리스트 및/또는 화이트리스트에 대한 업데이트의 서버-시작(푸시) 다운로드, (사용자에 의한 저품질 자산의 첫 번째 사용에 대해 트리거된) 디폴트에 의해 시스템에 이동되는 것보다 더 높은 품질의 미디어 자산(이미지/영화/음성)의 다운로드 등)일 수 있거나, 또는 행동을 주기적으로 수행하는 순환 태스크(예컨대, 백업, 시스템 유지보수, 소프트웨어 업데이트의 확인, 메일 불러오기, 캘린더 리프레시, 시스템 및/또는 제3자 애플리케이션 업데이트의 다운로드(뿐만 아니라 서버 상에서의 그러한 업데이트의 존재의 확인), 사용자 문서들 및/또는 설정들과 서버의 동기화, 디바이스에 관한 진단 정보 및/또는 디바이스 상의 애플리케이션들의 서버로의 업로딩 등)일 수 있다. 일 실시예에서, 백그라운드 태스크 스케줄러(108)는 시스템 조건들이 스케줄링된 태스크를 실행시키기에 적합한 시간에 태스크가 실행되도록 스케줄링한다. 일 실시예에서, 백그라운드 태스크 스케줄러(108)는 실행하도록 스케줄링될 태스크에 대한 메시지를 이러한 태스크에 대응하는 애플리케이션으로부터 수신한다. 일 실시예에서, 태스크는 더 큰 애플리케이션의 일부분이다(예컨대, 이메일 애플리케이션의 경우, 태스크가 새로운 이메일을 확인할 수 있다). 예를 들어, 그리고 일 실시예에서, 소프트웨어 업데이트 데몬은 백그라운드 태스크 스케줄러(108)에 업데이트 확인 태스크를 등록하는데, 여기서 업데이트 확인 태스크는 디바이스(100) 상에 다운로드 및 인스톨하는 데 이용가능한 업데이트가 존재하는지 여부를 알기 위해 확인하는 태스크이다. 다른 예로서, 그리고 다른 실시예에서, 백업 서비스 애플리케이션이 백그라운드 태스크 스케줄러(108)에 백업 유지보수 태스크를 등록한다.
일 실시예에서, 시스템 조건들에 기초하여 태스크들을 실행함으로써, 백그라운드 태스크 스케줄러(108)는 배터리 수명 및 디바이스 응답성을 개선할 수 있고, 충족되지 않는 요건들로 인해 즉시 종료되는 서비스들을 시작하는 비용을 제거할 수 있고, 백그라운드 태스크 스케줄러(108)로 디바이스(100) 웨이크(wake)/냅(nap) 전력 관리 태스크들을 위한 로직을 중앙집중화할 수 있다. 이러한 실시예에서, 백그라운드 태스크 스케줄러(108)는 사용자 프로세스(104) 또는 시스템 프로세스(106)와 같은 다른 프로세스로부터의 요청에 기초하여 태스크를 등록한다. 일 실시예에서, 태스크는 반복하는 것일 수 있거나 또는 반복하지 않는 것일 수 있다. 태스크는 애플리케이션에 의해 동적으로, 또는 시스템 프로세스(106)의 구성에 기초하여 정적으로 등록될 수 있다. 일 실시예에서, 각각의 태스크는 태스크 실행 기준들(예컨대, 태스크를 실행할 것인지 여부를 결정할 때 시스템이 고려해야 하는 다양한 고려사항들), 현재 실행 상태(그것이 실행 중인가 아니면 실행 중이 아닌가), 및 태스크의 상태가 변화할 때 호출(invoke)되는 핸들러를 기재한 딕셔너리(dictionary)를 갖는다.
일 실시예에서, 애플리케이션은 백그라운드 태스크 스케줄러(108)와 통신하는 데 사용되는 애플리케이션 플러그인에 태스크를 등록한다. 추가로, 일단 태스크 기준들이 충족되고 시간이 태스크가 실행되는 데 적합한 시간이면, 백그라운드 태스크 스케줄러(108)는 프로세스간 통신 메시지(예컨대, 프로세스간 통신(IPC) 메시지들, 기계 메시지들, 신호들, 파일 기술자에 기록하기, "수기 신호" 파일의 작성 등)를 이용하여 애플리케이션에 태스크가 실행될 수 있다는 통지를 전송한다. 일 실시예에서, 백그라운드 태스크 스케줄러(108)는 등록된 태스크에 응답하여 슬립 상태 애플리케이션을 웨이크업하라는 통지를 전송한다. 이러한 실시예는 슬립 모드에 있는 애플리케이션들이 자동으로 웨이크업되어 등록된 태스크에 응답하게 한다. 게다가, 이러한 실시예는 또한 등록된 태스크에 응답하여 요구 시에 시스템 프로세스(들)(106)(예컨대, 데몬들)가 시작되게 한다. 다른 실시예에서, 데몬들은 유휴 상태 종료에 참여하고, 태스크들이 실행되기를 기다리는 동안에 성공적으로 유휴 상태를 종료한다. 이러한 실시예에서, 데몬은 태스크가 실행가능하게 되는 것에 응답하여 자동으로 재시작될 것이다.
일 실시예에서, 일단 태스크가 등록되면, 백그라운드 태스크 스케줄러(108)는 다수의 가능성있는 기준들에 기초하여 이러한 태스크를 실행한다. 일 실시예에서, 상이한 기준들은: 반복가능성, 지연, 유예 기간, 및 우선순위일 수 있다. 일 실시예에서, 반복가능성은 태스크가 이행되었을 때 그것이 자동으로 다시 스케줄링될 것인지 여부이다. 지연은 태스크를 시작하기 전에 기다리는 기간이다. 일 실시예에서, 태스크는 태스크에 대한 실행 기준의 하나이다. 이러한 실시예에서, 지연이 충족되지 않는 경우, 다른 실행 기준들은 충족도를 확인받지 않을 것이다. 유예 기간은, 태스크가 기일(due)을 지나게 되고 시스템이 태스크를 스케줄링하려고 더 적극적으로 시도하게 된 후의 기간이다. 추가로, 백그라운드 태스크 스케줄러(108)는 상이한 우선순위 기준들을 이용하여 태스크를 실행할 수 있다. 일 실시예에서, 상이한 우선순위들은, 사용자가 볼 수 없는 태스크들에 사용되며 태스크가 기일을 지날 때까지 배터리로 실행되는 것을 회피시키는 유지보수 태스크, 및 사용자가 볼 수 있는 태스크들에 사용되며 배터리로 실행될 수 있는 유틸리티 태스크에 대한 것일 수 있다. 일 실시예에서, 백그라운드 태스크는 감소된 전력 소비 모드에서 실행될 수 있다.
상이한 기준들 및 우선순위를 이용함으로써, 백그라운드 태스크 스케줄러(108)는 각각의 태스크의 기준을 평가하여 태스크가 실행되기에 적합한지 여부를 판정한다. 일 실시예에서, 백그라운드 태스크 스케줄러(108)는 배터리 대신에 A/C 전력에 의할 때 태스크들을 실행하고자 하는 경향이 있을 것이고, 웨이크 상태일 때 대신 파워냅(power nap) 동안에 태스크들을 실행하는 경향이 있으며, 시스템이 비지 상태 대신에 유휴 상태일 때 태스크들을 실행하는 경향이 있다. 일 실시예에서, 파워냅은 디바이스(100)가 미디어 동기화 및 인덱싱 탐색과 같은 태스크들을 조용히 수행하게 하는 슬립 모드이다. 이러한 실시예에서, 저에너지의 태스크들은 배터리 전력을 사용할 때 수행되고, 반면에 더 높은 에너지의 태스크들은 A/C 전력으로 수행된다. 파워냅은 디바이스에 또는 하나 이상의 개별 애플리케이션들에 적용될 수 있다.
일 실시예에서, 상이한 유형들의 태스크들은 실행을 위해 태스크가 이용가능하게 되는 상이한 유형들의 기준들을 가질 수 있다. 예를 들어, 그리고 일 실시예에서, 유지보수 적격 태스크가 공칭 기간(nominal time period) 동안에 A/C 파워냅 및 A/C 유휴 상태 중에 실행될 수 있고, 태스크가 기일을 지나친 경우에 A/C 파워냅, A/C 유휴 상태, A/C 비지 상태, 배터리 파워냅, 배터리 유휴 상태, 및 배터리 비지 상태 중에 실행될 수 있다. 이러한 실시예에서, 비지 상태 및 유휴 상태는 시스템 부하를 지칭하고, 배터리 및 A/C는 디바이스(100)가 전력으로 디바이스(100)의 배터리를 사용하는 중인지 아니면 플러그인되어 A/C 전력을 사용하는 중인지를 지칭한다. 파워냅은 디바이스(100)가 파워냅 슬립 모드에 있는 것을 지칭한다. 다른 예에서, 그리고 다른 실시예에서, 유틸리티 태스크는 공칭 기간 동안에 A/C 파워냅, A/C 유휴 상태, 및 배터리 유휴 상태 중에 실행될 수 있고, 태스크가 기일을 지나친 경우에 A/C 파워냅, A/C 유휴 상태, A/C 비지 상태, 배터리 파워냅, 배터리 유휴 상태, 및 배터리 비지 상태 중에 실행될 수 있다.
일 실시예에서, 전술한 기준들 외에도, 백그라운드 태스크 스케줄러(108)는 고급 기준들을 이용하여 등록된 태스크를 언제 실행할 것인지 판정할 수 있다. 일 실시예에서, 이들 고급 기준들은 단독으로 이용될 수 있거나, 또는 전술한 일반적인 슬립 모드, 전력 상태, 및 시스템 부하 기준들에 더하여 이용될 수 있다. 일 실시예에서, 고급 기준들은: 네트워크 기준들, A/C 단독, 스크린 슬립, 배터리 레벨, 하드 디스크 드라이브(HDD) 스피닝, 파워냅 적격성, 네트워킹의 유형(무선(Wi-Fi 또는 셀룰러), 유선 등), 로밍 상태에서의 네트워킹, 이용가능한 셀룰러 음성 통화 등이다. 일 실시예에서, 네트워크 기준은 적격이 되도록 하기 위해 특정 호스트로의 접속성 또는 일반 네트워크 접속성을 요구할 수 있는 태스크들에 이용된다. 요청된 접속은 그러한 태스크를 시작하기 전에 시도될 것이다. 확립된 접속은 태스크로부터 검색될 수 있다(예컨대, 통신 핸들은 태스크 딕셔너리에 저장될 수 있다). A/C 단독 기준들은 기일을 지나친 경우에도 A/C 전력을 요구할 수 있는 태스크들에 이용될 수 있다. 스크린 슬립 기준들은 스크린 슬립 상태를 요구할 수 있는 태스크들에 이용될 수 있다. 배터리 레벨 기준은 최소 배터리 레벨(%)을 요구할 수 있는 태스크들에 이용된다. 예를 들어, 그리고 일 실시예에서, 다운로드 태스크는 높은 배터리 퍼센트 레벨(예컨대, > 90%)을 요구할 수 있고, 상태 확인은 더 작은 배터리 퍼센트 레벨(예컨대, > 25%)을 요구할 수 있다. 일 실시예에서, HDD 스피닝 기준들은 HDD가 스피닝하고 있을 것을 요구하는 태스크들에 이용될 수 있다.
일 실시예에서, 일단 등록된 태스크에 대한 기준이 충족되면, 백그라운드 태스크 스케줄러(108)는 등록된 태스크의 중요도를 디바이스에 대한 가용 헤드룸과 비교한다. 일 실시예에서, 가용 디바이스 헤드룸은 태스크를 실행하는 데 이용가능한 디바이스 리소스들의 양이다. 이러한 실시예에서, 가용 디바이스 헤드룸은 디바이스가 어떤 유형의 부하 또는 사용량을 경험하고 있는지 측정하는 하나 이상의 상이한 인자들에 기초하여 판정된다. 예를 들어, 그리고 일 실시예에서, 가용 디바이스 헤드룸은 디바이스 온도, CPU % 활용도, 디바이스가 배터리로 구동 중인지 아니면 AC로 구동 중인지 여부, 배터리 용량, 메모리 사용량, 사용자 활동도(예컨대, 얼마나 최근에 사용자가 디바이스와 적극적으로 상호작용해 오고 있는가), 현재 디바이스 용량 또는 부하를 측정하는 다른 유형의 인자, 및/또는 이들의 조합에 기초할 수 있다. 일 실시예에서, 디바이스 헤드룸은 하나 이상의 인자들의 함수에 기초한다. 예를 들어, 그리고 일 실시예에서, 인자들 중 하나가 그 인자에 대한 임계치를 초과하는 경우, 가용 디바이스 헤드룸은 작다. 다른 예에서, 인자들 중 하나 이상에 대한 값들의 다항식이 사용되어 가용 디바이스 헤드룸을 판정하게 할 수 있다(예컨대, 인자들의 제곱의 합의 제곱근, 각각의 인자는 0 내지 1로 정규화됨).
일 실시예에서, 각각의 등록된 태스크는 하기의 상태들을 갖는다: 체크인 대기, 실행, 지연, 계속, 완료. 일 실시예에서, 체크인 상태는 데몬들에 의해 이용되어 백그라운드 태스크 스케줄러(108)에 체크인하도록 하는 선택적 상태이다. 일 실시예에서, 기준들이 아직 충족되지 않은 태스크는 대기 상태에 있다. 이러한 상태는 태스크가 실행되기 전에 시스템 기준들이 충족되기를 기다리고 있는 태스크에 이용된다. 일 실시예에서, 일단 태스크의 기준들이 충족되면, 백그라운드 태스크 스케줄러(108)는 태스크를 실행 상태로 전이시키고, 태스크를 위한 핸들러를 호출한다. 실행 과정 동안, 애플리케이션은 태스크에 대한 기준들이 여전히 충족되는지 여부를 테스트할 수 있다. 이어서, 애플리케이션은 선택적으로 일찌기 핸들러로부터 반환될 수 있고, 태스크를 지연 상태에 둠으로써 더 적절한 시간까지 작업을 지연시킬 수 있다. 예를 들어, 그리고 일 실시예에서, 백그라운드 태스크 스케줄러(108)는 시스템 부하에 대해 태스크를 실제로 실행시킨 영향을 관찰하고, 그 태스크를 다시 실행할 것인지 여부 또는 심지어 현재 실행 중인 태스크를 중지하고 그것을 지연할 것인지 여부에 관한 향후 결정 시에 그 정보를 고려한다. 예를 들어, 백팩 내의 랩톱에서, 파워냅에서 태스크를 실행한 열적 영향은 너무 높아서 그것이 조기에 중지될 필요가 있을 수 있지만, 그 동일한 슬립 상태 랩톱이 데스크 상에 놓인 경우, 파워냅에서의 그 동일한 태스크는 단지 바람직할 수 있다.
백그라운드 태스크 스케줄러(108)는 태스크에 대한 기준들이 또 다시 충족되는 경우에 핸들러를 재호출할 수 있다. 대안적으로, 애플리케이션은 상태를 계속 상태로 설정함으로써 핸들러로부터 비동기식으로 작업을 계속할 것을 요청할 수 있는데, 이러한 경우에 백그라운드 태스크 스케줄러(108)는 상태를 지연 또는 완료 중 어느 하나로 나중에 업데이트해야 한다. 마지막으로, 애플리케이션은 태스크가 완료 상태임을 나타낼 수 있다. 일단 태스크가 완료되면 비반복 태스크는 백그라운드 태스크 스케줄러에 등록되지 않고, 반복 태스크는 백그라운드 태스크 스케줄러에 재등록되어 이러한 태스크가 스케줄링된 시간에 반복될 수 있게 된다.
전술한 바와 같이, 일단 태스크에 대한 태스크 기준들이 충족되었으면, 디바이스(100)는 태스크 중요도 곡선을 이용하여 태스크를 실행할 것인지 여부를 판정한다. 도 2는 하나의 태스크에 대한 태스크 중요도 곡선(206)의 일 실시예의 도면이다. 일 실시예에서, 태스크 중요도 곡선은 하나의 태스크를 대표하고, 다른 태스크들은 상이하게 형상화된 태스크들(예컨대, 더 짧거나 더 긴 유예 기간들, 비선형 곡선들 또는 초기의 스케줄링 지점과 유예 기간이 만료하는 지점 사이의 더 크거나 더 작은 기울기를 갖는 선형 곡선 등)을 가질 수 있다. 일 실시예에서, 태스크 중요도 곡선(206)은 백그라운드 태스크 스케줄러(108)에 등록된 하나의 태스크에 대한 요구되는 디바이스 헤드룸(202) 대 시간(204)의 구상된 곡선이다. 일 실시예에서, 디바이스 헤드룸이 주어진 시점에 대해 태스크 중요도 곡선(206) 이하인 경우, 백그라운드 태스크 스케줄러(108)는 태스크를 실행하기를 지연시킨다. 요구되는 디바이스 헤드룸이 특정 시점에서의 태스크 중요도 곡선(206) 이상인 경우, 백그라운드 태스크 스케줄러(108)는 태스크를 실행한다. 일 실시예에서, 태스크 중요도 곡선(206)은 시간(204) 동안에 시간이 증가함에 따라 요구되는 디바이스 헤드룸(202)이 감소한다. 따라서, 태스크 중요도는 시간 의존적인데, 그 이유는 유예 기간이 만료하기 전의 시간을 포함하는 시간 경과에 따라 태스크 중요도의 값이 변화하기 때문이다. 이러한 실시예에서, 태스크 중요도 곡선(206)은 태스크가 실행을 위해 초기에 스케줄링될 수 있을 때 최고 지점(210)에 있다. 높은 지점에 있다는 것은, 가용 디바이스 헤드룸이 높은 경우에 태스크가 실행될 수 있다는 것을 의미한다. 일 실시예에서, 초기 지점(210) 이래로 시간이 증가함에 따라, 태스크 중요도는 시간이 증가함에 따라 태스크 중요도 곡선(206) 상에서 낮아진다. 이러한 실시예에서, 태스크가 실행될 수 있는 초기 지점 이래로 시간이 증가함에 따라, 백그라운드 태스크 스케줄러(108)는 태스크가 더 작은 가용 디바이스 헤드룸으로 실행되게 할 수 있다. 이러한 점진적인 비용 임계치 감소는 태스크의 유예 기간(208)이 끝날 때 끝난다. 일 실시예에서, 각각의 태스크는 유예 기간을 갖는다. 이러한 유예 기간 중에 태스크가 실행될 수 있는데, 이 경우에 조건들이 태스크를 실행하는 데 더 최적이다. 일 실시예에서, 일단 유예 기간이 만료하면, 태스크가 실행되도록 더 낮게 요구되는 디바이스 헤드룸이 발생할 수 있다. 이는 태스크가 훨씬 더 다양한 시나리오들에서 실행되게 한다. 예를 들어, 그리고 일 실시예에서, 높은 시스템 활용도의 시간 동안에 실행될 태스크는 태스크의 중요도가 태스크를 실행시킬 수 있는 지점으로 증가한 시간까지 지연될 것이다. 일 실시예에서, 유예 기간이 끝난 후, 태스크는 태스크가 실행될 수 있는 그러한 시간까지 "긴급 상태"로 유지된다. 이러한 실시예에서, 태스크는 실행될 수 없는데, 그 이유는 디바이스가 바로 비지 상태이고 태스크를 실행시킬 헤드룸이 없기 때문이다. 일 실시예에서, 유예 기간 후, 태스크에 대한 요구되는 디바이스 헤드룸은 0이 아니거나 0인 일정한 값일 수 있다. 0이 아닌 경우는 태스크가 실행되지 않는 조건이 존재할 수 있다는 것을 의미한다(예컨대, 디바이스의 온도가 높은 경우, 태스크가 실행되지 않는다). 다른 실시예에서, 태스크 중요도 곡선(206)의 구획은 일정하지 않다(예컨대, 점근적으로 0을 향해 간다).
전술한 바와 같이, 디바이스(100)의 백그라운드 태스크 스케줄러(108)는 태스크들을 스케줄링하고, 태스크를 언제 실행할지를 판정하고, 태스크의 실행을 관리한다. 도 3은 태스크를 스케줄링하고 관리하는 프로세스(300)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(300)는 백그라운드 태스크 스케줄러, 예컨대 전술한 바와 같은 도 1의 백그라운드 태스크 스케줄러(108)에 의해 수행되어 태스크를 스케줄링하고 관리한다. 도 3에서, 프로세스(300)는 블록(302)에서 스케줄링될 태스크를 수신함으로써 시작된다. 일 실시예에서, 프로세스(300)는 정적 구성 파일(예컨대, 요구 시 시작 태스크들)을 통해 사용자 프로세스, 시스템 프로세스, 등으로부터 스케줄링될 태스크를 수신한다. 예를 들어, 그리고 일 실시예에서, 사용자 프로세스는 태스크를 이용하여 사용자를 위해 다운로드할 이용가능 미디어가 존재하는지 여부를 판정하는 미디어 관리 애플리케이션, 태스크를 이용하여 메일을 불러올 수 있는 메일 애플리케이션, 캘린더를 리프레시할 캘린더 애플리케이션 등일 수 있다. 다른 예로서, 시스템 프로세스는 태스크를 이용하여 탐색 인덱스를 업데이트하는 탐색 시스템, 태스크를 이용하여 백업 유지보수 작업을 수행하는 백업 애플리케이션, 태스크를 이용하여 파일 캐시를 업데이트하는 파일 뷰잉 애플리케이션, 태스크를 이용하여 이용가능 업데이터를 확인할 수 있는 소프트웨어 업데이트 프로그램, 태스크를 이용하여 애플리케이션 다운로드 및/또는 업데이트가 존재하는지 여부를 판정할 수 있는 애플리케이션 저장 애플리케이션 등일 수 있다. 프로세스(300)는 블록(304)에서 태스크를 스케줄링한다. 일 실시예에서, 프로세스(300)는 태스크가 실행될 수 있는 경우의 하나 이상의 기준들을 이용하여 태스크를 스케줄링한다. 일 실시예에서, 이들 실행 기준들은 스케줄링된 태스크에 대한 딕셔너리에 저장된다. 예를 들어, 그리고 일 실시예에서, 태스크를 실행하는 시스템이 A/C 전력을 갖고 시스템이 유휴 상태 또는 파워냅인 경우에 유지보수 유형의 태스크는 이러한 태스크에 대해 유예 기간이 끝나기 전에 가능성있게 실행되도록 스케줄링될 수 있다. 이러한 실시예에서, 유예 기간이 끝난 후, 유지보수 유형의 태스크는 시스템이 A/C 전력 또는 배터리 전력 중 어느 하나를 이용하는 경우에 실행될 수 있다. 이러한 실시예에서, A/C 파워냅, A/C 유휴 상태, A/C 비지 상태, 배터리 파워냅, 배터리 파워냅, 배터리 유휴 상태, 및 배터리 비지 상태의 기준들이 충족되는 경우, 이를 위해 유예 기간 후의 유지보수 유형의 태스크가 만료한다. 일 실시예에서, 유예 기간은, 태스크가 기일(due)을 지나게 되고 시스템이 태스크를 더 적극적으로 스케줄링하려고 시도하게 된 후의 기간이다.
블록(306)에서, 프로세스(300)는 시스템을 모니터링하여 스케줄링된 태스크에 대한 기준들이 충족되었는지 여부를 판정한다. 일 실시예에서, 프로세스(300)는 시스템의 전력 상태(예컨대, A/C 전력으로 또는 배터리로) 및/또는 시스템 부하(예컨대, 유휴, 비지, 또는 파워냅)를 모니터링한다. 추가로, 프로세스(300)는 고급 기준 조건들, 예컨대 네트워크 기준들, A/C 단독, 스크린 슬립, 배터리 레벨, 하드 디스크 드라이브(HDD) 스피닝 등을 모니터링할 수 있다. 프로세스(300)는 블록(308)에서 태스크 기준들이 충족되었는지 여부를 판정한다. 일 실시예에서, 프로세스(300)는 각각의 현재 등록된 태스크들에 대한 실행 기준들을 기본으로 하는 조건들의 전체 세트에 대해 시스템 변화 통지들을 설정함으로써 그리고 시스템이 프로세스(300)에 모니터링된 기준들 중 하나에 대한 기본 시스템 조건이 변화했다는 것을 통지할 때 각각의 태스크의 실행 기준들의 세트를 평가함으로써 태스크의 실행 기준들이 충족되는 것으로 판정한다. 일 실시예에서, 기준들이 아직 충족되지 않은 태스크는 대기 상태에 있다. 이러한 상태는 태스크가 실행되기 전에 시스템 기준들이 충족되기를 기다리고 있는 태스크에 이용된다.
태스크 기준들이 충족되지 않은 경우, 실행은 위의 블록(306)으로 진행한다. 태스크 기준들이 충족된 경우, 프로세스(300)은 블록(310)에서 가용 디바이스 헤드룸을 판정한다. 일 실시예에서, 프로세스(300)는 도 1을 참조하여 전술한 바와 같이 디바이스의 하나 이상의 인자들을 평가함으로써 가용 디바이스 헤드룸을 판정한다. 블록(312)에서, 프로세스(300)는 태스크에 대한 태스크 중요도가 태스크에 대한 시스템 비용 미만(또는 그와 동일)인지 여부를 판정한다. 일 실시예에서, 프로세스(300)는 태스크 중요도 곡선 및 태스크에 대한 기준들이 처음 충족된 이래로 경과한 시간에 기초하여 태스크 중요도를 계산한다. 태스크 중요도가 가용 디바이스 헤드룸 미만(또는 그와 동일)인지 여부를 판정하는 것은 하기의 도 5에서 추가로 기술된다. 태스크 중요도가 가용 디바이스 헤드룸 미만이 아닌 경우, 실행은 위의 블록(306)으로 진행한다.
태스크 중요도가 가용 디바이스 헤드룸 미만(또는 그와 동일)인 경우, 프로세스(300)는 블록(314)에서 태스크를 실행한다. 일 실시예에서, 프로세스(300)는 태스크에 대응하는 애플리케이션에 태스크가 실행될 준비가 되어 있다는 것을 통지한다. 일 실시예에서, 일단 태스크의 기준들이 충족되면, 프로세스(300)는 태스크를 실행 상태로 전이시키고, 태스크를 위한 핸들러를 호출한다. 예를 들어, 그리고 일 실시예에서, 미디어 관리 애플리케이션을 위한 미디어 다운로드 확인 태스크에 대한 기준들이 충족되고 이러한 태스크가 실행될 준비가 되어 있는 경우, 프로세스(300)는 애플리케이션에 태스크가 실행될 준비가 되어 있다는 통지를 전송한다. 이러한 실시예에서, 프로세스(300)는 핸들러를 직접적으로 호출하지 않거나 "태스크를 실행한다". 프로세스(300)는 애플리케이션 또는 데몬에 태스크가 태스크의 핸들러 실행을 트리거하도록 등록했다는 메시지를 전송한다. 요구 시 시작가능 또는 유휴 상태 종료 데몬의 경우, 이러한 메시지는 또한 먼저 해당 데몬을 시작시킬 것이다.
블록(316)에서, 태스크에 대한 애플리케이션 또는 데몬은 태스크가 지연되어야 하는지 여부를 판정한다. 일 실시예에서, 태스크가 실행되고 있는 동안, 태스크를 실행하는 애플리케이션은 태스크에 대한 기준들이 여전히 충족되는지 여부를 테스트할 수 있다. 이어서, 애플리케이션은 일찌기 핸들러로부터 반환될 수 있고, 더 적절한 시간까지 작업을 지연시킬 수 있다. 태스크가 지연되어야 하는 경우, 블록(326)에서, 태스크에 대한 애플리케이션 또는 데몬은 태스크의 실행을 지연시키고 태스크를 지연 상태에 둔다. 일 실시예에서, 이러한 상태에 있는 경우, 태스크는 그의 현재 상태에서 유예된다. 블록(328)에서, 프로세스(300)는 태스크 실행이 재시작되어야 하는지 여부를 판정한다. 태스크 실행이 재시작되어야 하는 경우, 실행은 위의 블록(314)으로 진행한다. 일 실시예에서, 프로세스(300)는 이러한 태스크에 대한 애플리케이션 또는 데몬에 태스크에 대한 기준들이 또 다시 충족되는 경우에 핸들러가 재호출될 수 있다는 것을 통지할 수 있다. 대안적으로, 애플리케이션은 핸들러로부터 비동기식으로 작업을 계속할 것을 요청할 수 있는데, 이러한 경우에 태스크에 대한 애플리케이션 또는 데몬은 태스크의 상태를 지연 또는 완료 중 어느 하나로 나중에 업데이트한다. 태스크 실행이 재시작되어서는 안 되는 경우, 실행은 위의 블록(326)으로 진행한다.
태스크 실행이 위의 블록(316)에서 지연되어서는 안 되는 경우, 태스크에 대한 애플리케이션 또는 데몬은 블록(318)에서 태스크가 이행되었는지 여부를 판정한다. 블록(320)에서, 프로세스(300)는 태스크를 이행된 것으로 표시한다. 일 실시예에서, 프로세스(300)는 태스크가 이행된 경우에 태스크를 완료 상태에 둔다. 블록(322)에서, 프로세스(300)는 태스크가 순환 태스크인지 여부를 판정한다. 일 실시예에서, 순환 태스크는 반복되는 스케줄링된 서버를 수행하도록 주기적으로 실행되는 것이다. 예를 들어, 그리고 일 실시예에서, 순환 태스크는 서버로부터의 다운로드(예컨대, 메일 불러오기, 캘린더 리프레시, 미디어 다운로드 서비스, 애플리케이션 다운로드 등)를 주기적으로 확인하는 것일 수 있다. 이러한 실시예에서, 일단 다운로드 태스크가 이행되면, 프로세스(300)는 향후 실행을 위해 이러한 태스크의 다른 인스턴스를 스케줄링할 것이다. 태스크가 순환 태스크인 경우, 실행은 블록(304)으로 진행하는데, 여기서 프로세스(300)은 태스크의 다음 인스턴스를 스케줄링한다. 태스크가 순환 태스크가 아닌 경우, 블록(324)에서, 프로세스(300)는 태스크의 실행을 완료로 표시한다.
도 4는 태스크에 대한 상이한 상태들의 상태 다이어그램(400)의 일 실시예의 도면이다. 일 실시예에서, 백그라운드 태스크 스케줄러(108) 및/또는 태스크를 처리하는 애플리케이션은 이러한 상태 다이어그램(400)에 따라 태스크의 상태를 업데이트한다. 상태 다이어그램(400)은 지원되는 상태 전이들을 도시한다. 일 실시예에서, 실선은 핸들러로부터의 반환 시에 시스템에 의해 이루어지는 상태 진전을 나타낸다. 애플리케이션에 의한 상태의 수동 진전은 선택적이며, 지연, 계속, 및 완료 상태들로 적용된다. 굵은 점선은 반복 태스크들에 적용된다. 얇은 선들은 "지연, 계속, 및 체크인 상태들에 적용하는…" 애플리케이션에 의한 선택적 상태 진전을 나타낸다.
일 실시예에서, 각각의 등록된 태스크들은 정적 구성 파일에 기초하여 스케줄러에 의해, 또는 애플리케이션 또는 데몬에 의해 생성됨으로써 시작된다. 일 실시예에서, 각각의 등록된 태스크는 하기의 상태들을 갖는다: 생성/시작(402), 체크인(404), 대기(406), 실행(408), 지연(410), 계속(412), 및 완료(414). 일 실시예에서, 체크인 상태(404)는 데몬들에 의해 이용되어 백그라운드 태스크 스케줄러(108)에 체크인하도록 하는 선택적 상태이다. 일 실시예에서, 체크인 상태는 요구 시 시작 데몬들에 의해 이용되어 정적 구성 파일들에서 특정된 적격성 기준들을 검색하여 잠재적으로 변형하게 한다. 상태는 체크인 상태에 대한 핸들러의 반환 시에 자동으로 대기로 진전된다. 다른 실시예에서, 백그라운드 태스크 스케줄러는 생성으로부터 대기로 자동으로 진전함으로써 생성/시작 상태(402)로부터 태스크를 전이시키고, 활동도가 (상태가 실행 상태로 진전되는 지점에서) 실행에 적격일 때까지 그 상태로 유지한다.
일 실시예에서, 기준들이 아직 충족되지 않은 태스크가 대기 상태(406)에 있다. 이러한 상태는 태스크가 실행되기 전에 시스템 기준들이 충족되기를 기다리고 있는 태스크에 이용된다. 예를 들어, 그리고 일 실시예에서, 스크린 슬립을 요구하는 유지보수 태스크는 부탁을 실행할 디바이스의 스크린이 슬립 상태로 될 때까지 실행될 수 없을 것이다. 일 실시예에서, 일단 태스크의 기준들이 충족되면, 백그라운드 태스크 스케줄러는 태스크를 실행 상태(408)로 전이시키고, 태스크를 위한 핸들러를 호출한다. 일 실시예에서, 애플리케이션의 핸들러는 태스크를 시작하고 태스크 동작들을 수행하도록 실행될 코드의 블록이다.
일 실시예에서, 태스크가 실행 상태(408)로 되는 과정 동안, 애플리케이션은 태스크에 대한 기준들이 여전히 충족되는지 여부를 테스트할 수 있다. 예를 들어, 그리고 일 실시예에서, 태스크가 특정 서비스에 대한 네트워크 접속에 의존하고 이러한 서비스가 현재 이용가능하지 않은 경우, 이러한 태스크에 대응하는 애플리케이션은 태스크 상태를 지연(410)으로 전이시킨다. 일 실시예에서, 태스크(예컨대, 애플리케이션)는 스케줄러에 그것이 실행을 지연시켜야 하는지 테스트할 것을 질의할 수 있다. 응답이 "예"인 경우, 애플리케이션은 태스크 상태를 지연으로 설정함으로써 지연을 승인확인할 수 있다(그렇지 않으면, 태스크는 실행 상태로 유지되거나, 또는 핸들러가 상태를 변화시키지 않고 반환하는 경우에 완료 상태로 이동한다). 일 실시예에서, 기준들이 실행 중인 태스크에 대해 현재 충족되지 않는 경우, 애플리케이션은 핸들러로부터 반환될 수 있고, 태스크에 대한 기준들이 충족되는 시간까지 작업을 지연시킬 수 있다. 일 실시예에서, 백그라운드 태스크 스케줄러(108)는 태스크에 대한 기준들이 또 다시 충족되는 경우에 핸들러를 재호출할 것이다. 대안적으로, 애플리케이션은 핸들러로부터 비동기식으로 작업을 계속(412)할 것을 요청할 수 있는데, 이러한 경우에 백그라운드 태스크 스케줄러는 상태를 지연(410) 또는 완료(414) 중 어느 하나로 나중에 업데이트한다. 일 실시예에서, 계속 상태는 핸들러가 실행 상태에 대해 반환한 후에 태스크의 "실행"이 계속될 필요가 있는 경우에 이용되는데, 여기서 실행으로부터 완료로의 자동 상태 전이가 발생하는 것은 아니다. 상태가 계속으로 설정되는 경우, 태스크는 애플리케이션이 상태를 완료 또는 지연 중 어느 하나로 수동으로 설정할 때까지 "실행 중"인 것으로 간주된다.
일 실시예에서, 애플리케이션은 태스크를 완료 상태(414)로 둠으로써 태스크가 완료되었음을 나타낼 수 있다. 이러한 실시예에서, 일단 태스크가 완료되면 비반복 태스크는 백그라운드 태스크 스케줄러에 등록되지 않고, 반복 태스크는 백그라운드 태스크 스케줄러에 재등록되어 이러한 태스크가 스케줄링된 시간에 반복될 수 있게 된다. 일 실시예에서, 완료로의 전이는 또한 핸들러가 상태를 변화시키지 않은 채 (실행 상태로의 전이에 의해 호출된 후에) 반환하는 경우에 자동으로 발생한다.
전술한 바와 같이, 백그라운드 태스크 스케줄러는 태스크에 대한 실행 기준들이 충족되는 경우에 태스크를 자동으로 실행하지 않을 수 있다. 대신, 백그라운드 태스크 스케줄러는 태스크 중요도를 가용 디바이스 헤드룸과 비교하여 태스크를 실행할지 여부를 판정한다. 도 5는 태스크 중요도와 가용 디바이스 헤드룸을 비교하는 프로세스(500)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(500)는 위의 도 3의 블록(312)에서 프로세스(300)에 의해 수행되어 태스크 중요도와 가용 디바이스 헤드룸을 비교한다. 도 5에서, 프로세스(500)는 블록(502)에서 가용 디바이스 헤드룸을 수신함으로써 시작된다. 일 실시예에서, 가용 디바이스 헤드룸은 도 1을 참조하여 전술한 바와 같이 디바이스의 하나 이상의 인자들을 평가함으로써 판정된다. 블록(504)에서, 프로세스(500)는 태스크 중요도를 판정한다. 일 실시예에서, 프로세스(500)는 태스크 중요도 곡선, 예컨대 위의 도 2에서 기술된 바와 같은 태스크 중요도 곡선(206)을 이용함으로써 태스크 중요도를 판정한다. 이러한 실시예에서, 프로세스(500)는 태스크의 기준들이 초기에 충족된 이래로 경과한 시간을 판정한다. 이러한 시간을 이용하여, 프로세스(500)는 도 2를 참조하여 전술한 바와 같은 태스크 중요도 곡선과 함께 경과 시간을 이용하여 태스크 중요도를 판정할 수 있다. 예를 들어, 그리고 일 실시예에서, 태스크 중요도는 태스크 기준들이 충족되는 초기 지점에서 비교적 낮다. 이러한 태스크 중요도는 이러한 태스크에 대해 유예 기간이 만료할 때까지 증가한다. 이러한 지점에서, 태스크 중요도는 크게 증가하는데, 그 이유는 백그라운드 태스크 스케줄러가 태스크를 실행하려고 더 적극적으로 시도할 것이기 때문이다. 다른 실시예에서, 프로세스(500)는 태스크 기준들이 초기에 충족된 이래로 경과한 시간에 기초하여 태스크 중요도를 관련짓는 수학식을 이용하여 태스크 중요도를 계산한다.
블록(506)에서, 프로세스(500)는 태스크의 태스크 중요도가 가용 디바이스 헤드룸 미만(또는 그와 동일)인지 여부를 판정한다. 태스크 중요도가 가용 디바이스 헤드룸 미만(또는 그와 동일)인 경우, 시스템은 태스크를 실행할 수 있고, 블록(508)에서 "예"를 반환한다. 그렇지 않은 경우, 시스템은 나중까지 태스크의 실행을 지연하고, 블록(510)에서 "아니오"를 반환한다.
도 6은 태스크를 스케줄링하고 관리하는 백그라운드 태스크 스케줄러(108)의 일 실시예의 블록 다이어그램이다. 일 실시예에서, 백그라운드 태스크 스케줄러(108)는 태스크 수신 모듈(602), 태스크 스케줄링 모듈(604), 시스템 모니터링 모듈(606), 시스템 기준 모듈(608), 가용 디바이스 헤드룸 판정 모듈(610), 태스크 중요도 모듈(612), 태스크 실행 모듈(614), 태스크 지연 판정 모듈(616), 태스크 지연 모듈(618), 태스크 재시작 모듈(620), 태스크 이행 판정 모듈(622), 태스크 이행 모듈(624), 태스크 순환 모듈(626), 및 태스크 완료 모듈(628)을 포함한다. 일 실시예에서, 태스크 수신 모듈(602)은 위의 도 3, 블록(302)에서 기술한 바와 같이 태스크를 수신한다. 태스크 스케줄링 모듈(604)은 위의 도 3, 블록(304)에서 기술한 바와 같이 태스크를 스케줄링한다. 시스템 모니터링 모듈(606)은 위의 도 3, 블록(306)에서 기술한 바와 같이 태스크 기준들에 대한 시스템을 모니터링한다. 시스템 기준 모듈(608)은 위의 도 3, 블록(308)에서 기술한 바와 같이 태스크에 대한 기준들이 충족되는지 여부를 판정한다. 가용 디바이스 헤드룸 판정 모듈(610)은 위의 도 3, 블록(310)에서 기술한 바와 같이 가용 디바이스 헤드룸을 판정한다. 태스크 중요도 모듈(612)은 위의 도 3, 블록(312)에서 기술한 바와 같이 태스크 중요도와 시스템 비용을 비교한다. 태스크 실행 모듈(614)은 위의 도 3, 블록(314)에서 기술한 바와 같이 태스크를 실행한다. 태스크 지연 판정 모듈(616)은 위의 도 3, 블록(316)에서 기술한 바와 같이 태스크를 지연할 것인지 여부를 판정한다. 태스크 지연 모듈(618)은 위의 도 3, 블록(326)에서 기술한 바와 같이 태스크의 실행을 지연한다. 태스크 재시작 모듈(620)은 위의 도 3, 블록(328)에서 기술한 바와 같이 태스크의 실행을 재시작한다. 태스크 이행 판정 모듈(622)은 위의 도 3, 블록(318)에서 기술한 바와 같이 태스크 실행이 이행되었는지 여부를 판정한다. 태스크 이행 모듈(624)은 위의 도 3, 블록(320)에서 기술한 바와 같이 태스크를 이행으로 표시한다. 태스크 순환 모듈(626)은 위의 도 3, 블록(322)에서 기술한 바와 같이 태스크가 순환 중인지 여부를 판정한다. 태스크 완료 모듈(628)은 위의 도 3, 블록(324)에서 기술한 바와 같이 태스크의 실행을 완료로 표시한다.
도 7은 태스크 중요도와 가용 디바이스 헤드룸을 비교하는 태스크 중요도 모듈(612)의 일 실시예의 블록 다이어그램이다. 일 실시예에서, 태스크 중요도 모듈(612)은 가용 디바이스 헤드룸 수신 모듈(702), 태스크 중요도 계산 모듈(704), 중요도와 헤드룸의 비교 모듈(706), 및 결과 반환 모듈(708)을 포함한다. 일 실시예에서, 가용 디바이스 헤드룸 수신 모듈(702)은 위의 도 5, 블록(502)에서 기술한 바와 같이 가용 디바이스 헤드룸을 수신한다. 태스크 중요도 계산 모듈(704)은 도 5, 블록(504)에서 기술한 바와 같이 태스크 중요도를 판정한다. 중요도와 헤드룸의 비교 모듈(706)은 도 5, 블록(506)에서 기술한 바와 같이 태스크 중요도가 태스크의 시스템 비용 초과인지 여부를 판정한다. 결과 반환 모듈(708)은 위의 도 5, 블록(508) 및 블록(510)에서 기술한 바와 같이 비교의 결과들을 반환한다.
도 8은 본 발명의 일 실시예에서 사용될 수 있는 데이터 프로세싱 시스템(800)의 일례를 도시한다. 예를 들어, 시스템(800)은 도 1에 도시된 바와 같은 디바이스(100)를 포함하여 구현될 수 있다. 도 8이 컴퓨터 시스템의 다양한 콤포넌트들을 도시하지만, 그것은 그러한 세부사항들이 본 발명과 밀접한 관련이 없기 때문에 콤포넌트들을 상호접속시키는 임의의 특정 아키텍처 또는 방식을 나타내도록 의도되지는 않는다는 것에 주목한다. 또한, 네트워크 컴퓨터들, 및 더 적은 컴포넌트들 또는 아마도 더 많은 컴포넌트들을 갖는 다른 데이터 프로세싱 시스템들 또는 다른 소비자 전자 디바이스들도 또한 본 발명에 사용될 수 있다는 것을 이해할 것이다.
도 8에 도시된 바와 같이, 데이터 프로세싱 시스템의 형태인 컴퓨터 시스템(800)은 마이크로프로세서(들)(805)와 ROM(판독 전용 메모리)(807)과 휘발성 RAM(809)과 비휘발성 메모리(811)에 커플링되는 버스(803)를 포함한다. 마이크로프로세서(805)는 메모리들(807, 809, 811)로부터 명령어들을 검색할 수 있고, 명령어들을 실행하여 전술한 동작들을 수행하게 할 수 있다. 버스(803)는 이들 다양한 컴포넌트들을 함께 상호접속시키고, 또한 이들 컴포넌트들(805, 807, 809, 811)을 디스플레이 제어기 및 디스플레이 디바이스(813)에, 그리고 마우스, 키보드, 모뎀, 네트워크 인터페이스, 프린터, 및 당업계에 주지되어 있는 기타 디바이스들일 수 있는 주변기기 디바이스들, 예컨대 입력/출력(I/O) 디바이스들에 상호접속시킨다. 전형적으로, 입력/출력 디바이스들(815)은 입력/출력 제어기들(813)을 통해 시스템에 커플링된다. 휘발성 RAM(랜덤 액세스 메모리)(809)는 전형적으로 동적 RAM(DRAM)으로서 구현되는데, 이는 메모리에서 데이터를 리프레시시키거나 유지시키기 위해 전력을 계속해서 요구한다.
대용량 저장소(811)는 전형적으로 자기 하드 드라이브, 또는 자기 광학 드라이브, 또는 광학 드라이브, 또는 DVD RAM, 또는 플래시 메모리, 또는 전력이 시스템으로부터 제거된 후에도 데이터(예컨대, 다량의 데이터)를 유지하는 다른 유형들의 메모리 시스템들이다. 전형적으로, 대용량 저장소(811)는 또한 랜덤 액세스 메모리일 것이지만, 이것이 요구되는 것은 아니다. 도 8은 대용량 저장소(811)가 데이터 프로세싱 시스템 내의 컴포넌트들 중 나머지에 직접 커플링되는 로컬 디바이스인 것으로 도시하지만, 본 발명은 시스템으로부터 떨어져 있는 비휘발성 메모리, 예컨대 모뎀, 이더넷 인터페이스, 또는 무선 네트워크와 같은 네트워크 인터페이스를 통해 데이터 프로세싱 시스템에 커플링되는 네트워크 저장 디바이스를 이용할 수 있다는 것을 이해할 것이다. 버스(803)는 당업계에 주지되어 있는 바와 같은 다양한 브리지, 제어기, 및/또는 어댑터를 통해 서로 접속되는 하나 이상의 버스들을 포함할 수 있다.
도 9는 본 발명의 일 실시예에서 사용될 수 있는 다른 데이터 프로세싱 시스템(900)의 일례를 도시한다. 예를 들어, 시스템(900)은 도 1에 도시된 바와 같은 디바이스(100)로서 구현될 수 있다. 도 9에 도시된 데이터 프로세싱 시스템(900)은 하나 이상의 마이크로프로세서들일 수 있거나 또는 시스템-온-칩 집적회로일 수 있는 프로세싱 시스템(911)을 포함하고, 시스템은 또한 프로세싱 시스템에 의한 실행을 위한 데이터 및 프로그램들을 저장하기 위한 메모리(901)를 포함한다. 시스템(900)은 또한 예를 들어 음악을 재생하기 위한, 또는 스피커 및 마이크로폰을 통해 전화 기능을 제공하기 위한 마이크로폰 및 스피커를 포함할 수 있는 오디오 입력/출력 서브시스템(905)을 포함한다.
디스플레이 제어기 및 디스플레이 디바이스(909)는 사용자에게 시각적 사용자 인터페이스를 제공하는데; 이러한 디지털 인터페이스는 OS X 운영체제 소프트웨어를 실행할 때 매킨토시(Macintosh) 컴퓨터, 또는 iOS 운영체제를 실행할 때 애플 아이폰(Apple iPhone) 등에 보여지는 것과 유사한 그래픽 사용자 인터페이스를 포함할 수 있다. 시스템(900)은 또한 하나 이상의 무선 송수신기들(903)을 포함하여 다른 데이터 프로세싱 시스템, 예컨대 도 9의 시스템(900)과 통신한다. 무선 송수신기는 WLAN 송수신기, 적외선 송수신기, 블루투스 송수신기, 및/또는 무선 셀룰러 전화 송수신기일 수 있다. 도시되지 않은 부가적인 컴포넌트들이 또한 소정 실시예들에서 시스템(900)의 부분일 수 있고, 소정 실시예들에서, 도 9에 도시된 컴포넌트들보다 더 적은 컴포넌트들이 데이터 처리 시스템에서 또한 사용될 수 있다는 것을 이해할 것이다. 시스템(900)은 하나 이상의 통신 포트들(917)을 추가로 포함하여 다른 데이터 프로세싱 시스템, 예컨대 도 8의 시스템(800)과 통신한다. 통신 포트는 USB 포트, 파이어와이어 포트, 블루투스 인터페이스 등일 수 있다.
데이터 프로세싱 시스템(900)은 또한 하나 이상의 입력 디바이스들(913)을 포함하는데, 이들은 사용자가 시스템에 입력을 제공하게 하도록 제공된다. 이들 입력 디바이스들은 키패드 또는 키보드 또는 터치 패널 또는 다중 터치 패널일 수 있다. 데이터 프로세싱 시스템(900)은 또한 도크(dock)에 대한 커넥터일 수 있는 선택적 입력/출력 디바이스(915)를 포함한다. 도시되지 않은 하나 이상의 버스들이 당업계에 주지되어 있는 바와 같은 다양한 콤포넌트들을 상호접속시키는 데 사용될 수 있다는 것을 이해할 것이다. 도 9에 도시된 데이터 프로세싱 시스템은 핸드헬드 컴퓨터 또는 개인 디지털 어시스턴트(PDA), 또는 PDA형 기능을 갖는 셀룰러 전화, 또는 셀룰러 전화 또는 미디어 플레이어, 예컨대 아이팟(iPod)을 포함하는 핸드헬드 컴퓨터, 또는 이들 디바이스들의 태양들 또는 기능들을 조합한 디바이스들, 예컨대 하나의 디바이스 또는 내장형 디바이스 또는 기타 소비자 전자 디바이스들에서 PDA 및 셀룰러 전화와 조합되는 미디어 플레이어일 수 있다. 다른 실시예들에서, 데이터 프로세싱 시스템(900)은 다른 디바이스 내의 네트워크 컴퓨터 또는 내장형 프로세싱 디바이스, 또는 도 9에 도시된 것보다 더 적은 컴포넌트들 또는 아마도 더 많은 컴포넌트들을 갖는 다른 유형들의 데이터 프로세싱 시스템들일 수 있다.
적어도 본 발명의 소정 실시예들은 디지털 미디어 플레이어, 예컨대 휴대용 음악 및/또는 비디오 미디어 플레이어의 부분일 수 있는데, 이는 미디어를 보여주는 미디어 프로세싱 시스템, 미디어를 저장하는 저장 디바이스를 포함할 수 있고, 안테나 시스템 및 미디어 프로세싱 시스템과 커프링된 무선 주파수(RF) 송수신기(예컨대, 셀룰러 전화기용 RF 송수신기)를 추가로 포함할 수 있다. 소정 실시예들에서, 원격 저장 디바이스 상에 저장된 미디어는 RF 송수신기를 통해 미디어 플레이어에 송신될 수 있다. 미디어는 예를 들어 음악 또는 기타 오디오, 정지영상, 또는 동영상 중 하나 이상일 수 있다.
휴대용 미디어 플레이어는 미디어 선택 디바이스, 예컨대 미국 캘리포니아주 쿠퍼티노 소재의 애플 인크.(Apple, Inc.)로부터의 iPod? 또는 iPod Nano? 미디어 플레이어 상의 클릭 휠 입력 디바이스, 터치 스크린 입력 디바이스, 푸시버튼 디바이스, 이동가능 포인팅 입력 디바이스, 또는 기타 입력 디바이스를 포함할 수 있다. 미디어 선택 디바이스는 저장 디바이스 및/또는 원격 저장 디바이스 상에 저장된 미디어를 선택하는 데 사용될 수 있다. 휴대용 미디어 플레이어는, 적어도 소정 실시예들에서, 미디어 프로세싱 시스템에 커플링되어 입력 디바이스를 통해 선택되고 스피커 또는 이어폰(들)을 통해, 또는 디스플레이 디바이스 상에, 또는 디스플레이 디바이스와 스피커 또는 이어폰(들) 둘 다에 의해 나타내지는 미디어의 표제들 또는 다른 표시자들을 디스플레이하는 디스플레이 디바이스를 포함할 수 있다. 휴대용 미디어 플레이어의 예들은 공개된 미국 특허 제7,345,671호 및 미국 공개 번호 제2004/0224638호에 기재되어 있으며, 둘 다는 본 명세서에 참고로 포함된다.
상기에 기술된 것들 중 일부는 전용 로직 회로와 같은 로직 회로로 구현되거나, 마이크로제어기 또는 프로그램 코드 명령어들을 실행시키는 다른 형태의 프로세싱 코어로 구현될 수 있다. 따라서, 상기 논의에 의해 교시되는 프로세스는 이들 명령어를 실행시키는 기계가 소정의 기능을 수행하게 하는 기계 실행가능 명령어들과 같은 프로그램 코드로 수행될 수 있다. 이와 관련하여, "기계"는 중간 형태(또는 "추상적") 명령어들을 프로세서 특정 명령어들(예컨대, "가상 기계"(예컨대, 자바 가상 기계(Java Virtual Machine)), 인터프리터(interpreter), 공통 언어 런타임(Common Language Runtime), 고급 언어 가상 기계 등과 같은 추상적 실행 환경)로 변환하는 기계, 및/또는 범용 프로세서 및/또는 특수 목적 프로세서와 같이 명령어들을 실행하도록 설계된 반도체 칩 상에 배치된 전자 회로(예컨대, 트랜지스터들로 구현되는 "로직 회로")일 수 있다. 상기 논의에 의해 교시되는 프로세스는 또한 (기계에 대한 대안으로 또는 기계와 조합하여) 프로그램 코드의 실행 없이 프로세스(또는 그의 일부)를 수행하도록 설계된 전자 회로에 의해 수행될 수 있다.
본 발명은 또한 본 명세서에 기술된 동작을 수행하기 위한 장치에 관한 것이다. 이러한 장치는 요구되는 목적을 위해 특별하게 구성될 수 있거나, 그것은 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 그러한 컴퓨터 프로그램은 플로피 디스크, 광 디스크, CD-ROM, 및 자기-광 디스크를 비롯한 임의의 유형의 디스크, 판독 전용 메모리(ROM), RAM, EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어들을 저장하기에 적합하고 컴퓨터 시스템 버스에 각각 연결된 임의의 유형의 매체들과 같은 - 그러나 이로 제한되지 않음 - 컴퓨터 판독가능 저장 매체에 저장될 수 있다.
기계 판독가능 매체는 기계(예컨대, 컴퓨터)에 의해 판독가능한 형태의 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 기계 판독가능 매체는 판독 전용 메모리("ROM"); 랜덤 액세스 메모리("RAM"); 자기 디스크 저장 매체들; 광학 저장 매체들; 플래시 메모리 디바이스들; 등을 포함한다.
제조 물품이 프로그램 코드를 저장하는 데 사용될 수 있다. 프로그램 코드를 저장하는 제조 물품은 하나 이상의 메모리(예컨대, 하나 이상의 플래시 메모리, 랜덤 액세스 메모리(정적, 동적 또는 기타)), 광 디스크, CD-ROM, DVD ROM, EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어들을 저장하는 데 적합한 다른 유형의 기계 판독가능 매체로서 구현될 수 있지만, 이로 제한되지는 않는다. 프로그램 코드는 또한 (예컨대, 통신 링크(예컨대, 네트워크 접속)를 통해) 전파 매체에 구현되는 데이터 신호에 의해 원격 컴퓨터(예컨대, 서버)로부터 요청 컴퓨터(예컨대, 클라이언트)로 다운로드될 수 있다.
상기의 상세한 설명은 컴퓨터 메모리 내의 데이터 비트에 대한 동작들의 알고리즘 및 심볼 표현의 관점에서 제시된다. 이들 알고리즘 설명 및 표현은 데이터 처리 분야의 당업자에 의해 사용되어 그의 작업 요지를 다른 당업자에게 가장 효과적으로 전하기 위한 툴이다. 알고리즘은 여기서 그리고 일반적으로 바람직한 결과로 이어지는 동작들의 자기-무모순 시퀀스(self-consistent sequence)인 것으로 이해된다. 그 동작들은 물리적 양들의 물리적 조작을 요구하는 것들이다. 보통, 필수적인 것은 아니지만, 이들 양은 저장, 전송, 조합, 비교, 및 달리 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 주로 공통 사용의 이유로, 이들 신호를 비트, 값, 요소, 심볼, 문자, 용어, 수 등으로 언급하는 것이 때때로 편리한 것으로 판명되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양들과 관련될 것이며 단지 이들 양에 적용되는 편리한 라벨들임을 명심해야 한다. 상기 논의로부터 자명한 바와 같이, 명시적으로 달리 언급되지 않는 한, 설명 전반에 걸쳐, "등록하는", "수신하는", "판정하는", "재개하는", "저장하는", "모니터링하는", "컴퓨팅하는", "시작하는", "지연하는", "포워딩하는", "리스케줄링하는", "표시하는" 등과 같은 용어를 사용한 논의는 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적 (전자) 양으로 표현되는 데이터를, 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 그러한 정보 저장, 전송 또는 디스플레이 디바이스 내의 물리적 양으로 유사하게 표현되는 다른 데이터로 조작 및 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 작용 및 프로세스를 지칭한다는 것을 이해한다.
본 명세서에 제시된 프로세스 및 디스플레이는 내재적으로 임의의 특정 컴퓨터 또는 다른 장치에 관련되지 않는다. 다양한 범용 시스템이 본 명세서의 교시에 따라 프로그램과 함께 사용될 수 있거나, 기술된 동작들을 수행하도록 보다 특수화된 장치를 구성하는 것이 편리한 것으로 판명될 수 있다. 다양한 이들 시스템에 요구되는 구조가 하기의 기술로부터 명백할 것이다. 추가로, 본 발명은 임의의 특정 프로그래밍 언어와 관련하여 설명되지 않는다. 다양한 프로그래밍 언어가 본 명세서에 기술된 바와 같은 본 발명의 교시를 구현하는 데 사용될 수 있음이 이해될 것이다.
전술한 논의는 단지 본 발명의 일부 예시적인 실시예들을 기술할 뿐이다. 당업자는 그러한 논의, 첨부 도면, 및 청구범위로부터 본 발명의 사상 및 범주로부터 벗어남이 없이 다양한 수정이 이루어질 수 있다는 것을 쉽게 인식할 것이다.

Claims (21)

  1. 하나 이상의 프로세싱 유닛들로 하여금 디바이스에 대한 백그라운드 태스크를 스케줄링하는 방법을 수행하게 하는 실행가능 명령어들이 기록된 기계 판독가능 매체로서,
    상기 방법은,
    상기 백그라운드 태스크를 등록하는 단계 - 상기 등록하는 단계는,
    상기 백그라운드 태스크에 대한 실행 기준을 저장하는 단계를 포함하고, 상기 실행 기준은 상기 백그라운드 태스크를 시작하기 위한 하나 이상의 기준, 및 상기 디바이스의 컴포넌트 상태에 기초한 실행 기준을 나타냄 -;
    상기 실행 기준의 발생에 대한 상기 디바이스의 실행 상태를 모니터링하는 단계;
    상기 실행 기준이 발생하는 경우,
    상기 백그라운드 태스크를 실행하기 위한 가용 디바이스 헤드룸(available device headroom)을 판정하는 단계; 및
    상기 가용 디바이스 헤드룸이 백그라운드 태스크 중요도 초과인 경우에 상기 백그라운드 태스크를 시작하는 단계 - 상기 백그라운드 태스크 중요도는 상기 디바이스가 상기 백그라운드 태스크를 실행하는 데 얼마나 중요한지의 척도이고, 상기 백그라운드 태스크 중요도는 상기 실행 기준이 발생한 이후에 시작되는 유예 기간(grace period) 동안에 복수의 상이한 값들을 가지도록 변화함 -
    를 포함하는 기계 판독가능 매체.
  2. 제1항에 있어서, 상기 컴포넌트 상태는 디바이스 전력 상태, 중앙 프로세싱 유닛 상태, 디스플레이 상태, 저장 시스템 상태, 및 네트워크 접속성으로 이루어진 그룹으로부터 선택되는, 기계 판독가능 매체.
  3. 제2항에 있어서, 상기 디바이스 전력 상태는 유휴 상태(idle), 비지 상태(busy), 및 퍼센트 레벨로 이루어진 그룹으로부터 선택되는, 기계 판독가능 매체.
  4. 제2항에 있어서, 상기 중앙 프로세싱 유닛 상태는 비지 상태, 유휴 상태, 및 퍼센트 임계치로 이루어진 그룹으로부터 선택되는, 기계 판독가능 매체.
  5. 제1항에 있어서, 상기 실행 기준은 복수의 컴포넌트 상태들의 조합인, 기계 판독가능 매체.
  6. 제1항에 있어서, 상기 백그라운드 태스크 중요도는 시간 의존적이고, 상기 실행 기준이 발생한 이래로 경과한 시간에 기초하는, 기계 판독가능 매체.
  7. 제1항에 있어서, 상기 방법은,
    상기 실행 기준이 더 이상 충족되지 않는 경우,
    상기 백그라운드 태스크의 실행을 지연하는 단계를 추가로 포함하는, 기계 판독가능 매체.
  8. 제1항에 있어서, 상기 방법은,
    상기 백그라운드 태스크가 실행을 이행한 것으로 판정하는 단계; 및
    상기 백그라운드 태스크가 순환 태스크인 경우,
    향후 실행하도록 상기 백그라운드 태스크를 리스케줄링하는 단계를 추가로 포함하는, 기계 판독가능 매체.
  9. 제1항에 있어서, 상기 백그라운드 태스크는 사용자 개입없이 애플리케이션에 의해 수행되는 태스크인, 기계 판독가능 매체.
  10. 하나 이상의 프로세싱 유닛들로 하여금 디바이스에 대한 백그라운드 태스크를 스케줄링하는 방법을 수행하게 하는 실행가능 명령어들이 기록된 기계 판독가능 매체로서,
    상기 방법은,
    상기 백그라운드 태스크에 대한 시간 의존적 태스크 중요도 - 상기 시간 의존적 태스크 중요도는 상기 백그라운드 태스크가 처음 실행될 수 있게 된 이후에 시작되는 유예 기간 동안에 복수의 상이한 값들을 가지도록 변화함 - 를 판정하는 단계;
    가용 디바이스 헤드룸을 판정하여 상기 백그라운드 태스크를 실행하는 단계; 및
    상기 시간 의존적 태스크 중요도가 상기 가용 디바이스 헤드룸 미만인 경우,
    상기 백그라운드 태스크를 시작하는 단계를 포함하는, 기계 판독가능 매체.
  11. 제10항에 있어서, 상기 시간 의존적 태스크 중요도는 상기 백그라운드 태스크에 대한 상기 유예 기간이 만료하기 전에 증가하는, 기계 판독가능 매체.
  12. 제11항에 있어서, 상기 백그라운드 태스크에 대한 상기 유예 기간은 상기 백그라운드 태스크에 대한 기간이고, 그 후에 상기 디바이스는 실행을 위해 상기 백그라운드 태스크를 더 적극적으로 스케줄링하는, 기계 판독가능 매체.
  13. 제10항에 있어서, 상기 백그라운드 태스크를 시작하는 단계는,
    상기 백그라운드 태스크에 대응하는 핸들러를 호출하는 단계를 포함하는, 기계 판독가능 매체.
  14. 하나 이상의 프로세싱 유닛들을 포함하는 디바이스에 대한 백그라운드 태스크를 스케줄링하는 방법으로서, 상기 방법은 상기 하나 이상의 프로세싱 유닛들에 의한,
    상기 백그라운드 태스크를 등록하는 단계 - 상기 등록하는 단계는,
    상기 백그라운드 태스크에 대한 실행 기준을 저장하는 단계를 포함하고, 상기 실행 기준은 상기 백그라운드 태스크를 시작하기 위한 하나 이상의 기준, 및 상기 디바이스의 컴포넌트 상태에 기초한 실행 기준을 나타냄 -;
    상기 실행 기준의 발생에 대한 상기 디바이스의 실행 상태를 모니터링하는 단계;
    상기 실행 기준이 발생하는 경우,
    가용 디바이스 헤드룸을 판정하여 상기 백그라운드 태스크를 실행하는 단계; 및
    상기 가용 디바이스 헤드룸이 백그라운드 태스크 중요도 초과인 경우에 상기 백그라운드 태스크를 시작하는 단계 - 상기 백그라운드 태스크 중요도는 상기 디바이스가 상기 백그라운드 태스크를 실행하는 데 얼마나 중요한지의 척도이고, 상기 백그라운드 태스크 중요도는 상기 실행 기준이 발생한 이후에 시작되는 유예 기간 동안에 복수의 상이한 값들을 가지도록 변화함 -
    를 포함하는 방법.
  15. 제14항에 있어서, 상기 컴포넌트 상태는 디바이스 전력 상태, 중앙 프로세싱 유닛 상태, 디스플레이 상태, 저장 시스템 상태, 및 네트워크 접속성으로 이루어진 그룹으로부터 선택되는, 방법.
  16. 제15항에 있어서, 상기 디바이스 전력 상태는 유휴 상태, 비지 상태, 및 퍼센트 레벨로 이루어진 그룹으로부터 선택되는, 방법.
  17. 제15항에 있어서, 상기 중앙 프로세싱 유닛 상태는 비지 상태, 유휴 상태, 및 퍼센트 임계치로 이루어진 그룹으로부터 선택되는, 방법.
  18. 제14항에 있어서,
    상기 백그라운드 태스크를 시작하는 단계 이후에,
    상기 실행 기준들이 여전히 충족되는지 여부를 결정하는 단계; 및
    상기 실행 기준이 더 이상 충족되지 않는 경우,
    상기 백그라운드 태스크의 실행을 지연하는 단계를 추가로 포함하는, 방법.
  19. 제14항에 있어서,
    상기 백그라운드 태스크를 시작하는 단계 이후에,
    상기 백그라운드 태스크가 실행을 이행한 것으로 판정하는 단계; 및
    상기 백그라운드 태스크가 순환 태스크인 경우,
    향후 실행하도록 상기 백그라운드 태스크를 리스케줄링하는 단계를 추가로 포함하는, 방법.
  20. 디바이스에 대한 백그라운드 태스크를 스케줄링하는 디바이스로서,
    프로세서;
    버스를 통해 상기 프로세서에 커플링되는 메모리; 및
    상기 프로세서에 의해 상기 메모리로부터 실행되어, 상기 프로세서로 하여금, 백그라운드 태스크를 등록하게 하고, 실행 기준의 발생에 대해 상기 디바이스의 실행 상태를 모니터링하게 하고, 상기 실행 기준이 발생한 경우, 가용 디바이스 헤드룸을 판정하여 상기 백그라운드 태스크를 실행하게 하고, 그리고 상기 가용 디바이스 헤드룸이 백그라운드 태스크 중요도 초과인 경우에 상기 백그라운드 태스크를 시작하게 하는 프로세스를 포함하며,
    상기 백그라운드 태스크 중요도는 상기 디바이스가 상기 백그라운드 태스크를 실행하는 데 얼마나 중요한지의 척도이고, 상기 백그라운드 태스크 중요도는 상기 실행 기준이 발생한 이후에 시작되는 유예 기간 동안에 복수의 상이한 값들을 가지도록 변화하며, 상기 등록하게 하는 것에 대해, 상기 프로세스는 추가로 상기 프로세서로 하여금 상기 백그라운드 태스크에 대한 실행 기준을 저장하게 하고, 상기 실행 기준은 상기 백그라운드 태스크를 시작하기 위한 하나 이상의 기준 및 상기 디바이스의 컴포넌트 상태에 기초한 실행 기준을 나타내는, 디바이스.
  21. 제20항에 있어서, 상기 프로세스는 추가로 상기 프로세서로 하여금 상기 실행 기준이 더 이상 충족되지 않는 경우에 상기 백그라운드 태스크의 실행을 지연하게 하는, 디바이스.
KR1020157025350A 2013-02-15 2014-02-07 중앙집중식 태스크 스케줄링 KR101739216B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361765628P 2013-02-15 2013-02-15
US61/765,628 2013-02-15
US14/174,658 US11372672B2 (en) 2013-02-15 2014-02-06 Centralized task scheduling
US14/174,658 2014-02-06
PCT/US2014/015360 WO2014126810A1 (en) 2013-02-15 2014-02-07 Centralized task scheduling

Publications (2)

Publication Number Publication Date
KR20150120435A KR20150120435A (ko) 2015-10-27
KR101739216B1 true KR101739216B1 (ko) 2017-05-23

Family

ID=51352275

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157025350A KR101739216B1 (ko) 2013-02-15 2014-02-07 중앙집중식 태스크 스케줄링

Country Status (5)

Country Link
US (1) US11372672B2 (ko)
KR (1) KR101739216B1 (ko)
CN (1) CN105190555B (ko)
TW (1) TWI606397B (ko)
WO (1) WO2014126810A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102412088B1 (ko) * 2021-11-08 2022-06-22 (주) 바우디움 상태 기계에 의하여 작업의 진행 상황을 관리하는 방법 및 이를 이용한 장치

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282014A1 (en) * 2013-03-14 2014-09-18 Apple Inc. Presenting snapshots of plug-in content in user interfaces
US9286106B1 (en) * 2013-04-16 2016-03-15 Ca, Inc. Scheduling periodic tasks with dependencies and determining improper loop dependencies between tasks placed in a waiting tasks set and in a unfinished dependent tasks set
EP3113558B1 (en) * 2014-03-21 2018-12-19 Huawei Technologies Co., Ltd. Method and user equipment for generating monitoring report
US9514639B2 (en) * 2014-06-20 2016-12-06 Ray Enterprises Inc. Universal remote control user interface for discrete control of multiple devices
US10176021B1 (en) * 2014-11-21 2019-01-08 Ca, Inc. System and method for managing actual processing capacity usage on a mainframe computer
US20160293212A1 (en) * 2015-03-31 2016-10-06 Microsoft Technology Licensing, Llc Performing processing-intensive operation on multi-tasking limited-capacity devices
US9552229B2 (en) * 2015-05-14 2017-01-24 Atlassian Pty Ltd Systems and methods for task scheduling
US9870266B2 (en) 2015-07-30 2018-01-16 Nasdaq, Inc. Background job processing framework
US10152360B2 (en) * 2016-04-22 2018-12-11 Schneider Electric Software, Llc Coordinating event-driven object execution
US10169069B2 (en) * 2017-04-06 2019-01-01 International Business Machines Corporation System level update protection based on VM priority in a multi-tenant cloud environment
US10163065B1 (en) * 2017-08-16 2018-12-25 Nmetric, Llc Systems and methods of ensuring and maintaining equipment viability for a task
CN109445927B (zh) * 2018-11-12 2021-09-17 郑州云海信息技术有限公司 一种存储集群的任务管理方法及装置
US11392411B2 (en) * 2019-11-08 2022-07-19 Sap Se Background job scheduling restrictions
CN113127158B (zh) * 2019-12-30 2023-07-14 百度在线网络技术(北京)有限公司 用于执行数据处理任务的方法及装置
US11481252B2 (en) 2020-01-27 2022-10-25 Kyocera Document Solutions Inc. Process deferral system and methods using tokens
US11507418B2 (en) 2020-01-27 2022-11-22 Kyocera Document Solutions Inc. Process deferral system and methods using a service requester
US11392365B2 (en) 2020-12-14 2022-07-19 International Business Machines Corporation Optimizing device update scheduling
US11579959B2 (en) 2021-05-26 2023-02-14 Honeywell International Inc. Systems and methods for margin based diagnostic tools for priority preemptive schedulers
CN117666755A (zh) * 2022-08-29 2024-03-08 华为技术有限公司 任务调度方法及相关设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110145761A1 (en) * 2009-12-10 2011-06-16 Denis Leon Krief Interactive task management system and method

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7451447B1 (en) * 1998-08-07 2008-11-11 Arc International Ip, Inc. Method, computer program and apparatus for operating system dynamic event management and task scheduling using function calls
US6834386B1 (en) * 1999-07-16 2004-12-21 Microsoft Corporation Method and system for regulating background tasks using performance measurements
US7010788B1 (en) 2000-05-19 2006-03-07 Hewlett-Packard Development Company, L.P. System for computing the optimal static schedule using the stored task execution costs with recent schedule execution costs
US20030061260A1 (en) * 2001-09-25 2003-03-27 Timesys Corporation Resource reservation and priority management
US7345671B2 (en) 2001-10-22 2008-03-18 Apple Inc. Method and apparatus for use of rotational user inputs
US6971034B2 (en) * 2003-01-09 2005-11-29 Intel Corporation Power/performance optimized memory controller considering processor power states
US7627343B2 (en) 2003-04-25 2009-12-01 Apple Inc. Media player system
US7206866B2 (en) 2003-08-20 2007-04-17 Microsoft Corporation Continuous media priority aware storage scheduler
US8028060B1 (en) 2007-01-05 2011-09-27 Apple Inc. Background task execution over a network based on network activity idle time
US8893130B2 (en) 2007-03-26 2014-11-18 Raytheon Company Task scheduling method and system
US8060884B2 (en) * 2007-07-10 2011-11-15 Sharp Laboratories Of America, Inc. Deterministic task scheduling in a computing device
US20100095330A1 (en) * 2008-10-15 2010-04-15 Echostar Technologies L.L.C. Satellite receiver system with rechargeable battery and antenna solar cell
KR101548134B1 (ko) 2009-10-01 2015-08-28 콘티넨탈 오토모티브 시스템 주식회사 실시간 스택 검사 시스템 및 그 방법
US8468534B2 (en) * 2010-04-05 2013-06-18 Apple Inc. Dynamic priority queuing
US8560876B2 (en) 2010-07-06 2013-10-15 Sap Ag Clock acceleration of CPU core based on scanned result of task for parallel execution controlling key word
US8843774B2 (en) 2010-08-20 2014-09-23 Qualcomm Incorporated Method and apparatus for managing battery power in response to an indication of an application being scheduled for immediate execution
CN102591754A (zh) * 2011-01-18 2012-07-18 智比特信息技术(镇江)有限公司 用于由计算机控制的电子产品的自动测试方法
US9374787B2 (en) 2011-02-10 2016-06-21 Alcatel Lucent Method and apparatus of smart power management for mobile communication terminals using power thresholds
US20120209654A1 (en) * 2011-02-11 2012-08-16 Avaya Inc. Mobile activity assistant analysis
US8886976B2 (en) 2011-04-11 2014-11-11 Microsoft Corporation Management of background tasks
CN102508701A (zh) 2011-10-18 2012-06-20 北京百纳威尔科技有限公司 自动控制应用程序运行处理方法和用户终端
US9003420B2 (en) * 2012-05-18 2015-04-07 International Business Machines Corporation Resolving RCU-scheduler deadlocks
US9071923B2 (en) * 2012-12-20 2015-06-30 Cellco Partnership Automatic archiving of an application on a mobile device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110145761A1 (en) * 2009-12-10 2011-06-16 Denis Leon Krief Interactive task management system and method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KRISHNAMURTHY 외 1명. 'Yeast: A General Purpose Event-Action System'. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL 21, NO. IO, 1995.10, pp.845-857.

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102412088B1 (ko) * 2021-11-08 2022-06-22 (주) 바우디움 상태 기계에 의하여 작업의 진행 상황을 관리하는 방법 및 이를 이용한 장치
WO2023080380A1 (ko) * 2021-11-08 2023-05-11 (주) 바우디움 상태 기계에 의하여 작업의 진행 상황을 관리하는 방법 및 이를 이용한 장치

Also Published As

Publication number Publication date
WO2014126810A1 (en) 2014-08-21
TW201443785A (zh) 2014-11-16
CN105190555B (zh) 2019-07-16
TWI606397B (zh) 2017-11-21
KR20150120435A (ko) 2015-10-27
US11372672B2 (en) 2022-06-28
CN105190555A (zh) 2015-12-23
US20140237476A1 (en) 2014-08-21

Similar Documents

Publication Publication Date Title
KR101739216B1 (ko) 중앙집중식 태스크 스케줄링
US10970085B2 (en) Resource management with dynamic resource policies
TWI559229B (zh) 用於背景工作管理的方法、行動計算裝置及可讀取媒體
US9116704B1 (en) Delaying the initiation of transitioning to a lower power mode by placing a computer system into an intermediate power mode between a normal power mode and the lower power mode
US9336068B2 (en) Throttling of application access to resources
JP5960262B2 (ja) 接続型スタンバイのためのプロセスの一時停止及び/又は制限
US8621026B2 (en) Batching notifications to optimize for battery life
JP5951771B2 (ja) 接続型スタンバイのためのプロセスの一時停止及び/又は制限
US10564708B2 (en) Opportunistic waking of an application processor
US9965220B2 (en) Forced idling of memory subsystems
JP2013527507A (ja) 保証された遷移期限で中央処理装置電力を制御するためのシステムおよび方法
JP2017510864A (ja) 情報をプッシュするための方法、端末、およびシステム
JP2015008006A (ja) 保証された定常状態期限で中央処理装置電力を制御するためのシステムおよび方法
US10338936B2 (en) Method for controlling schedule of executing application in terminal device and terminal device implementing the method
US20140237475A1 (en) Sleep/wake with suppression and donated importance
US20200183747A1 (en) User Presence Prediction Driven Device Management
US20130061239A1 (en) System and Method for Operating a Processor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant