KR20190019935A - 모바일 디바이스들에 대한 에너지 효율성을 위한 웨이크 락 인식 시스템의 와이드 작업 스케줄링 - Google Patents

모바일 디바이스들에 대한 에너지 효율성을 위한 웨이크 락 인식 시스템의 와이드 작업 스케줄링

Info

Publication number
KR20190019935A
KR20190019935A KR1020187035931A KR20187035931A KR20190019935A KR 20190019935 A KR20190019935 A KR 20190019935A KR 1020187035931 A KR1020187035931 A KR 1020187035931A KR 20187035931 A KR20187035931 A KR 20187035931A KR 20190019935 A KR20190019935 A KR 20190019935A
Authority
KR
South Korea
Prior art keywords
wake
lock
event
request
schedule
Prior art date
Application number
KR1020187035931A
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 퀄컴 인코포레이티드
Publication of KR20190019935A publication Critical patent/KR20190019935A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • 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/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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • H04W52/0261Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level
    • H04W52/0264Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level by selectively disabling software applications
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • Y02D10/24
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks
    • Y02D70/1262
    • Y02D70/142
    • Y02D70/144
    • Y02D70/162

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Sources (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Telephone Function (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

실시예들은 웨이크 락 인식 스케줄링을 구현하기 위한 장치에 의해 구현되는 컴퓨팅 디바이스들, 장치 및 방법들을 포함한다. 장치는 웨이크 락 프로파일러에 의해 웨이크 락 요청을 수신하고, 웨이크 락 요청과 연관된 웨이크 락 이벤트의 웨이크 락 정보를 포착할 수 있다. 웨이크 락 정보는 웨이크 락 시간 파라미터를 포함할 수 있다. 장치는 웨이크 락 시간 파라미터를 갖는 힌트를 전송할 수 있다. 장치는 힌트를 수신하고, 웨이크 락 이벤트 동안 준비 작업들이 실행될 수 있는지 여부를 결정하고, 그리고 웨이크 락 이벤트 동안 준비 작업들이 실행될 수 있다는 결정에 대한 응답으로, 웨이크 락 이벤트 동안의 실행을 위해 준비 작업들을 스케줄링하기 위한 허가에 대한 요청을 전송할 수 있다.

Description

모바일 디바이스들에 대한 에너지 효율성을 위한 웨이크 락 인식 시스템의 와이드 작업 스케줄링
[0001] 최신 스마트폰의 컴퓨팅 시스템의 상이한 부분들은 (주기적인 또는 비주기적인) 그들의 개별 작업들을 스케줄링한다. 애플리케이션 레벨 서비스들 및 시스템 레벨 서비스들은 사용자 공간에서 스케줄링된다. 드라이버 레벨 작업들 및 백그라운드 작업들은 커널 공간에서 스케줄링된다. 컴퓨팅 시스템의 CPU(central processing unit)는 스케줄링된 작업들을 완료하기 위해 정기적으로 웨이크 업한다. 빈번한 CPU 웨이크업들은 전체 에너지 소비를 증가시킨다. CPU는 애플리케이션들 및 서비스들의 백그라운드 활동들을 실행시키기 위해, 컴퓨팅 시스템의 스크린이 오프되는 동안에도 어웨이크 상태를 유지한다. 배터리로 전력을 공급받는 시스템들, 예컨대, 스마트폰들에서, 이것은 배터리 전력을 소비한다.
[0002] 다양한 실시예들의 방법들 및 장치들은 컴퓨팅 디바이스에 대해 웨이크 락(wake lock) 인식 스케줄링을 구현하기 위한 장치들 및 방법들을 제공한다. 다양한 실시예들은 웨이크 락 프로파일러(wake lock profiler)가, 웨이크 락 요청을 수신하는 것, 웨이크 락 요청과 연관된 웨이크 락 이벤트의 웨이크 락 정보를 포착하는 것, 및 웨이크 락 시간 파라미터를 포함하는 힌트를 전송하는 것을 포함할 수 있다. 다양한 실시예들에서, 웨이크 락 정보는 웨이크 락 시간 파라미터를 포함할 수 있다. 웨이크 락 시간 파라미터는, 웨이크 락 듀레이션, 웨이크 락 듀레이션 추정치, 웨이크 락 시작 시간 및/또는 웨이크 락 종료 시간 중 하나 또는 그 초과를 포함하는, 웨이크 락의 듀레이션의 계산을 식별하고 그리고/또는 가능하게 하는 정보를 포함할 수 있다. 일부 실시예들은, 스케줄러가 힌트를 수신하는 것, 스케줄러가, 웨이크 락 이벤트 동안 제1 준비 작업이 실행될 수 있는지 여부를 결정하는 것, 및 스케줄러가, 웨이크 락 이벤트 동안 제1 준비 작업이 실행될 수 있다는 결정에 대한 응답으로, 웨이크 락 이벤트 동안의 실행을 위해 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 것을 더 포함할 수 있다.
[0003] 일부 실시예들에서, 웨이크 락 이벤트 동안의 실행을 위해 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청은 제1 준비 작업에 대한 프로세서 사용량의 추정치를 포함할 수 있다. 일부 실시예들은, 웨이크 락 프로파일러가, 웨이크 락 이벤트 동안의 실행을 위해 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 수신하는 것, 및 제1 준비 작업을 포함하는 작업량(workload)이 총 프로세서 사용량 임계치를 초과하는지 여부를 결정하는 것을 더 포함할 수 있다. 일부 실시예들은, 웨이크 락 프로파일러가, 작업량이 총 프로세서 사용량 임계치를 초과한다는 결정에 대한 응답으로, 웨이크 락 이벤트 동안의 실행을 위해 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 거부를 전송하는 것을 더 포함할 수 있다. 일부 실시예들은, 웨이크 락 프로파일러가, 작업량이 총 프로세서 사용량 임계치를 초과하지 않는다는 결정에 대한 응답으로, 웨이크 락 이벤트 동안의 실행을 위해 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 승인을 전송하는 것을 더 포함할 수 있다.
[0004] 일부 실시예들은, 스케줄러가, 웨이크 락 이벤트 동안의 실행을 위해 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 거부를 수신하는 것, 및 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있는지 여부를 결정하는 것을 더 포함할 수 있다. 일부 실시예들은, 스케줄러가, 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있다는 결정에 대한 응답으로, 웨이크 락 이벤트 동안의 실행을 위해 제2 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 것을 더 포함할 수 있다. 일부 실시예들은, 스케줄러가, 웨이크 락 이벤트 동안의 실행을 위해 제2 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 승인을 수신하는 것, 및 웨이크 락 이벤트 동안의 실행을 위해 제2 준비 작업을 스케줄링하는 것을 더 포함할 수 있다.
[0005] 일부 실시예들은, 스케줄러가, 제1 준비 작업이 프로세서 사용량 임계치를 초과하는지 여부를 결정하는 것, 및 웨이크 락 이벤트 동안 제1 준비 작업이 실행될 수 있다는 결정에 대한 응답으로 그리고 제1 준비 작업이 프로세서 사용량 임계치를 초과하지 않는다는 결정에 대한 응답으로, 웨이크 락 이벤트 동안의 실행을 위해 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 것을 더 포함할 수 있다. 다양한 실시예들은, 스케줄러가, 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있는지 여부를 결정하는 것을 더 포함할 수 있다.
[0006] 일부 실시예들은, 웨이크 락 프로파일러가, 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하는지 여부를 결정하는 것, 및 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하지 않는다는 결정에 대한 응답으로, 웨이크 락 이벤트에 대한 웨이크 락 듀레이션 추정치를 계산하는 것을 더 포함할 수 있다. 일부 실시예들은, 웨이크 락 프로파일러가, 대응하는 웨이크 락 ID를 갖는 웨이크 락 정보 데이터 구조에 웨이크 락 듀레이션 추정치를 저장하는 것을 더 포함할 수 있다.
[0007] 일부 실시예들에서, 웨이크 락 이벤트에 대한 웨이크 락 듀레이션 추정치를 계산하는 것은 웨이크 락 이벤트에 대한 복수의 웨이크 락 듀레이션들을 사용하여 웨이크 락 이벤트에 대한 웨이크 락 듀레이션 추정치를 계산하는 것을 포함할 수 있다. 일부 실시예들에서, 복수의 웨이크 락 듀레이션들은 복수의 웨이크 락 듀레이션 추정치들, 복수의 웨이크 락 듀레이션 관측치들, 또는 복수의 웨이크 락 추정치들 및 웨이크 락 관측치들 중 하나를 포함할 수 있다.
[0008] 다양한 실시예들은 스케줄러에 통신가능하게 연결된 웨이크 락 프로파일러를 갖는 웨이크 락 인식 시스템을 포함할 수 있다. 웨이크 락 프로파일러 및 스케줄러는 위에서 요약된 실시예 방법들 중 하나 또는 그 초과의 실시예 방법들의 동작들을 수행하도록 구성될 수 있다.
[0009] 다양한 실시예들은 위에서 요약된 실시예 방법들 중 하나 또는 그 초과의 실시예 방법들의 기능들을 수행하기 위한 수단을 갖는 웨이크 락 인식 시스템을 포함할 수 있다.
[0010] 다양한 실시예들은, 컴퓨팅 디바이스의 프로세서로 하여금, 위에서 요약된 실시예 방법들 중 하나 또는 그 초과의 실시예 방법들의 동작들을 수행하게 하도록 구성된 프로세서-실행가능한 명령들이 저장된 비-일시적 프로세서-판독가능한 저장 매체를 포함할 수 있다.
[0011] 본원에 포함되며 본 명세서의 일부를 구성하는 첨부된 도면들은, 다양한 실시예들의 예시적 실시예들을 예시하며, 위에서 주어진 일반적 설명 및 아래에서 주어진 상세한 설명과 함께, 청구항들의 특징들을 설명하는 역할을 한다.
[0012] 도 1은 일 실시예를 구현하기에 적합한 컴퓨팅 디바이스를 예시하는 컴포넌트 블록 다이어그램이다.
[0013] 도 2는 일 실시예를 구현하기에 적합한 예시적 멀티-코어 프로세서를 예시하는 컴포넌트 블록 다이어그램이다.
[0014] 도 3a-도 3c는 다양한 실시예들에 따른, 웨이크 락 인식 시스템의 3가지 예들을 예시하는 컴포넌트 블록 다이어그램들이다.
[0015] 도 4는 일 실시예에 따른, 웨이크 락 정보 테이블의 예를 예시하는 블록 다이어그램들이다.
[0016] 도 5는 일 실시예에 따른, 예시적 웨이크 락 듀레이션 추정을 예시하는 그래픽 다이어그램이다.
[0017] 도 6은 일 실시예에 따른, 웨이크 락 비인식 스케줄링의 예를 예시하는 그래픽 다이어그램이다.
[0018] 도 7은 일 실시예에 따른, 웨이크 락 인식 스케줄링의 예를 예시하는 그래픽 다이어그램이다.
[0019] 도 8은 일 실시예에 따른, 웨이크 락 듀레이션 추정을 위한 방법을 예시하는 프로세스 흐름 다이어그램이다.
[0020] 도 9는 일 실시예에 따른, 웨이크 락 인식 스케줄링을 위한 방법을 예시하는 프로세스 흐름 다이어그램이다.
[0021] 도 10은 일 실시예에 따른, 웨이크 락 인식 스케줄링을 위한 방법을 예시하는 프로세스 흐름 다이어그램이다.
[0022] 도 11은 다양한 실시예들과 함께 사용하기에 적합한 예시적 모바일 컴퓨팅 디바이스를 예시하는 컴포넌트 블록 다이어그램이다.
[0023] 도 12는 다양한 실시예들과 함께 사용하기에 적합한 예시적 모바일 컴퓨팅 디바이스를 예시하는 컴포넌트 블록 다이어그램이다.
[0024] 도 13은 다양한 실시예들과 함께 사용하기에 적합한 예시적 서버를 예시하는 컴포넌트 블록 다이어그램이다.
[0025] 다양한 실시예들은 첨부된 도면들을 참조하여 상세하게 설명될 것이다. 가능한 경우마다, 동일한 참조 번호들은 동일한 또는 유사한 부분들을 지칭하기 위해 도면들 전반에 걸쳐 사용될 것이다. 특정 예들 및 구현들에 대해 이루어진 참조들은 예시를 위한 것이며, 청구항들의 범위를 제한하도록 의도되는 것은 아니다.
[0026] "컴퓨팅 디바이스" 및 "모바일 컴퓨팅 디바이스"라는 용어들은, 셀룰러 전화들, 스마트폰들, 개인용 또는 모바일 멀티-미디어 플레이어들, PDA(personal data assistant)들, 랩탑 컴퓨터들, 태블릿 컴퓨터들, 전환가능한(convertible) 랩탑들/태블릿들(2-인-1 컴퓨터들), 스마트북들, 울트라북들, 넷북들, 팜-탑(palm-top) 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 가능형 셀룰러 전화들, 모바일 게이밍 콘솔들, 무선 게이밍 제어기들, 및 메모리 및 프로그래밍가능한 프로세서를 포함하는 유사한 개인용 전자 디바이스들 중 임의의 하나 또는 전부를 지칭하기 위해 본원에서 상호 교환가능하게 사용된다. "컴퓨팅 디바이스"라는 용어는 개인용 컴퓨터들, 데스크탑 컴퓨터들, 올-인-원 컴퓨터들, 워크스테이션들, 슈퍼 컴퓨터들, 메인프레임 컴퓨터들, 임베디드 컴퓨터들, 서버들, 홈 시어터 컴퓨터들 및 게임 콘솔들을 포함하는 고정식 컴퓨팅 디바이스들을 추가로 지칭할 수 있다.
[0027] 다양한 실시예들은 웨이크 락 활동에 기반하여 보다 양호한 에너지 효율성을 위해 보다 긴/보다 깊은 프로세서 슬립 페이즈(phase)들을 가능하게 하기 위한, 컴퓨팅 디바이스들에서의 시스템 전역에(system wide) 조정된 작업 스케줄링을 시스템적으로 적응시키고 수행하기 위한 방법들, 및 그러한 방법들을 구현하는 시스템들 및 디바이스들을 포함한다. 실시예들은 웨이크 락 활동에 대한 듀레이션 추정치를 컴퓨팅하는 것, 향후(upcoming)/기존 웨이크 락 활동 시간들의 힌트들을 스케줄러들에 제공하는 것, 및 작업량이 임계치 미만으로 유지되는 한 향후/기존 웨이크 락 활동에 대한 작업들을 스케줄링하는 것을 포함할 수 있다.
[0028] 사용자 직면 컴포넌트들(안드로이드 시스템들에서 "활동들"로 지칭됨) 및 각각의 애플리케이션 내의 백그라운드 서비스들은 종종 웨이크 락들을 포착한다. 웨이크 락들은 특정 태스크들의 완료를 가능하게 하도록 특정 시간 윈도우에 대해 CPU(central processing unit)가 어웨이크 상태를 유지하게 한다. 웨이크 락들은 명시적 타임-아웃 값들로 포착될 수 있다. 예컨대, 60초의 YouTube 비디오를 재생하기 위해 또는 프로그램의 일부 특정적인 잘 정의된 코드 섹션을 실행하기 위해 웨이크 락이 획득될 수 있다. 다른 웨이크 락들의 태스크 기반 특성은 히스토리에 기반하여 일부 웨이크 락들의 평균 듀레이션을 추정하는 것을 가능하게 한다.
[0029] 다양한 태스크들을 실행하기 위해 웨이크-락들을 획득하기 위한 CPU 웨이크 업들의 수를 감소시키기 위해, 시스템의 상이한 부분들로부터의 작업들은 향후/기존 웨이크 락 시간 윈도우들에 대해 기회주의적으로 피기백(piggyback)하도록 스케줄링될 수 있다. 상이한 레벨들에서의 작업 스케줄러들은 향후/기존 웨이크 락 윈도우들에 대한 힌트들에 따라 작업들의 스케줄링을 적응시키도록 구성될 수 있다. 이것은, CPU들이, 보다 긴 듀레이션들 동안 슬립하는 것 및 슬립 상태로부터 활성 상태로의 그리고 활성 상태로부터 슬립 상태로의 트랜지션들의 수를 감소시키는 것을 가능하게 할 수 있다.
[0030] 웨이크 락의 듀레이션 및/또는 듀레이션 추정치는 오프라인 및/또는 런타임 분석에 기반하여 적합한 측정(measure), 이를테면, 평균, 중간 값, 지수 가중 이동 평균 등을 사용하여 컴퓨팅될 수 있다. 다양한 시스템들에서, 듀레이션 및/또는 듀레이션 추정치가 저장되어, 웨이크 락의 다른 파라미터들을 식별 및 특정하는 정보와 상관될 수 있다. 예컨대, 듀레이션 및/또는 듀레이션 추정치는 웨이크 락들의 글로벌 테이블에 부가되고, 안드로이드 시스템의 웨이크 락 식별자(ID)와 상관될 수 있다.
[0031] 웨이크 락 프로파일러는 듀레이션 및/또는 듀레이션 추정치를 계산하기 위해, 웨이크 락의 듀레이션 및/또는 듀레이션 추정치에 관한 힌트들을 상이한 레벨들의 스케줄러들에 제공하기 위해, 스케줄링된 작업량이 총 프로세서 사용량 임계치를 초과하는지 여부를 결정하기 위해, 그리고 작업(work) 스케줄들을 승인/거부하기 위해 시스템에 부가될 수 있다. 웨이크 락 프로파일러는 독립형 컴포넌트, 전력 매니저의 통합 컴포넌트, CPU에 의해 구현되는 소프트웨어 프로그램, 또는 CPU에 의해 구현되는 소프트웨어 프로그램과 전용 하드웨어의 조합일 수 있다.
[0032] 애플리케이션은 전력 매니저로부터 웨이크 락을 요청할 수 있다. 웨이크 락을 포착하기 위한 요청은 웨이크 락 식별자 및/또는 웨이크 락을 해제할 시점을 표시하는 타임 아웃 값을 특정하여, CPU가 활성 상태로부터 슬립 상태로 트랜지션할 수 있게 한다. 웨이크 락 프로파일러는 웨이크 락에 대한 요청을 검출, 수신 및/또는 인터셉트하고, 웨이크 락 힌트를 하나 또는 그 초과의 스케줄러들에 전달할 수 있다. 웨이크 락 힌트는 향후/기존 프로세스, 작업 또는 태스크의 실제 또는 추정된 듀레이션을 수신 스케줄러로 특정할 수 있으며, 이 듀레이션은 시작 시간 및/또는 종료 시간, 또는 웨이크 락에 대한 시작 및/또는 종료 시간들을 정의하기 위해 사용될 수 있는 프로세스/작업/태스크의 듀레이션을 포함할 수 있다.
[0033] 스케줄러는 향후/기존 웨이크 락 동안 또는 실행할 웨이크 락을 포착하기 위해 대기하는 동안 실행하기 위해 대기하는 준비 작업들의 리스트를 유지할 수 있다. 스케줄러는 상관된 웨이크 락 동안의 실행을 위해 스케줄링하기 위한, 웨이크 락 힌트에 특정된 듀레이션 동안 실행될 수 있는 준비 작업들을 선정할 수 있다. CPU 사용량이 웨이크 락 동안의 프로세서 사용량 임계치 미만, 예컨대, CPU 용량의 50% 또는 그 미만의 사용량일 것이라는 결정에 대한 응답으로 준비 작업들의 선택이 구현될 수 있다.
[0034] 각각의 스케줄러는 스케줄러들의 개개의 선택된 준비 작업들을 스케줄링하기 위해 웨이크 락 프로파일러와 협상할 수 있다. 각각의 스케줄러는 선택된 준비 작업에 대한 추정된 CPU 사용량을 웨이크 락 프로파일러에 전송할 수 있다. 웨이크 락 프로파일러는, 총 CPU 사용량, 즉, 다양한 스케줄러들로부터의 선택된 준비 작업들에 대한 추정된 CPU 사용량과 요청된 웨이크 락에 대한 스케줄링된 작업들의 CPU 사용량의 조합이 총 프로세서 사용량 임계치를 초과할 것인지(예컨대, CPU 용량의 75% 또는 그 초과의 사용량) 여부를 결정할 수 있다. 총 CPU 사용량이 총 프로세서 사용량 임계치보다 작을 것이라는 결정에 대한 응답으로, 웨이크 락 프로파일러는 선택된 준비 작업들의 스케줄링의 승인을 다양한 스케줄러들에 시그널링할 수 있다.
[0035] 총 CPU 사용량이 총 프로세서 사용량 임계치를 초과할 것이라는 결정에 대한 응답으로, 웨이크 락 프로파일러는 모든 선택된 준비 작업들의 거부를 다양한 스케줄러들에 시그널링할 수 있다. 거부의 신호에 기반하여, 스케줄러들은 보다 낮은 추정된 CPU 사용량을 갖는 준비 작업들을 선택하고, 선택된 준비 작업들에 대한 승인을 수신할 때까지 웨이크 락 프로파일러와 계속 협상할 수 있다.
[0036] 총 CPU 사용량이 총 프로세서 사용량 임계치를 초과할 것이라는 결정에 대한 응답으로, 웨이크 락 프로파일러는 총 프로세서 사용량 임계치를 초과하지 않으면서 웨이크 락 동안 실행될 수 있는 특정 준비 작업들을 선택하고, 일부 선택된 준비 작업들의 승인 및 다른 선택된 준비 작업들의 거부를 다양한 스케줄러들에 시그널링할 수 있다. 승인의 신호에 기반하여, 스케줄러들은 향후/기존 웨이크 락 동안의 실행을 위해 승인된 준비 작업들을 스케줄링할 수 있다.
[0037] 도 1은 다양한 실시예들과 함께 사용하기에 적합한 컴퓨팅 디바이스(10)를 예시한다. 컴퓨팅 디바이스(10)는 프로세서(14), 메모리(16), 통신 인터페이스(18) 및 저장 메모리 인터페이스(20)를 갖는 시스템-온-칩(SoC)(12)을 포함할 수 있다. 컴퓨팅 디바이스(10)는, 유선 또는 무선 모뎀과 같은 통신 컴포넌트(22), 저장 메모리(24) 및 무선 통신 링크를 설정하기 위한 안테나(26)를 더 포함할 수 있다. 프로세서(14)는 다양한 프로세싱 디바이스들, 예컨대, 다수의 프로세서 코어들 중 임의의 것을 포함할 수 있다.
[0038] "시스템-온-칩"(SoC)이라는 용어는 통상적으로, 그러나 배타적이지 않게, 프로세싱 디바이스, 메모리 및 통신 인터페이스를 포함하는 상호 연결된 전자 회로들의 세트를 지칭하기 위해 본원에서 사용된다. 프로세싱 디바이스는 다양한 상이한 타입들의 프로세서들(14) 및 프로세서 코어들, 이를테면, 범용 프로세서, CPU(central processing unit), DSP(digital signal processor), GPU(graphics processing unit), APU(accelerated processing unit), 보조 프로세서, 단일-코어 프로세서 및 멀티-코어 프로세서를 포함할 수 있다. 프로세싱 디바이스는 다른 하드웨어 및 하드웨어 조합들, 이를테면, FPGA(field programmable gate array), ASIC(application-specific integrated circuit), 다른 프로그래밍가능한 로직 디바이스, 이산 게이트 로직, 트랜지스터 로직, 성능 모니터링 하드웨어, 와치도그(watchdog) 하드웨어 및 시간 기준들을 추가로 구현할 수 있다. 집적 회로들은 집적 회로의 컴포넌트들이 실리콘과 같은 반도체 재료의 단일 피스 상에 상주하도록 구성될 수 있다.
[0039] SoC(12)는 하나 또는 그 초과의 프로세서들(14)을 포함할 수 있다. 컴퓨팅 디바이스(10)는 하나 초과의 SoC들(12)을 포함할 수 있으며, 그에 의해, 프로세서들(14) 및 프로세서 코어들의 수를 증가시킬 수 있다. 컴퓨팅 디바이스(10)는 또한, SoC(12)와 연관되지 않는 프로세서들(14)을 포함할 수 있다. 개별 프로세서들(14)은 도 2를 참조하여 아래에서 설명되는 바와 같은 멀티-코어 프로세서들일 수 있다. 프로세서들(14)은 각각, 컴퓨팅 디바이스(10)의 다른 프로세서들(14)과 동일하거나 또는 상이할 수 있는 특정 목적들을 위해 구성될 수 있다. 동일한 또는 상이한 구성들의 프로세서들(14) 및 프로세서 코어들 중 하나 또는 그 초과는 함께 그룹핑될 수 있다. 프로세서들(14) 또는 프로세서 코어들의 그룹은 멀티-프로세서 클러스터로 지칭될 수 있다.
[0040] SoC(12)의 메모리(16)는 프로세서(14)에 의한 액세스를 위한 데이터 및 프로세서-실행가능한 코드를 저장하기 위해 구성된 휘발성 또는 비-휘발성 메모리일 수 있다. 컴퓨팅 디바이스(10) 및/또는 SoC(12)는 다양한 목적들을 위해 구성된 하나 또는 그 초과의 메모리들(16)을 포함할 수 있다. 하나 또는 그 초과의 메모리들(16)은 휘발성 메모리들, 이를테면, RAM(random access memory) 또는 메인 메모리, 또는 캐시 메모리를 포함할 수 있다. 이러한 메모리들(16)은, 데이터 센서 또는 서브시스템으로부터 수신된 제한된 양의 데이터, 비-휘발성 메모리로부터 요청되고, 다양한 팩터들에 기반하여 향후 액세스를 예상하여 비-휘발성 메모리로부터 메모리들(16)로 로딩된 데이터 및/또는 프로세서-실행가능한 코드 명령들, 프로세서(14)에 의해 생성되고, 비-휘발성 메모리에 저장되지 않고 향후 빠른 액세스를 위해 일시적으로 저장된 중간 프로세싱 데이터 및/또는 프로세서-실행가능한 코드 명령들을 일시적으로 홀딩(hold)하도록 구성될 수 있다.
[0041] 메모리(16)는 프로세서들(14) 중 하나 또는 그 초과에 의한 액세스를 위해, 다른 메모리 디바이스, 이를테면, 다른 메모리(16) 또는 저장 메모리(24)로부터 메모리(16)로 로딩된 데이터 및 프로세서-실행가능한 코드를 적어도 일시적으로 저장하도록 구성될 수 있다. 메모리(16)로 로딩된 데이터 또는 프로세서-실행가능한 코드는 프로세서(14)에 의한 기능의 실행에 대한 응답으로 로딩될 수 있다. 기능의 실행에 대한 응답으로 메모리(16)로 데이터 또는 프로세서-실행가능한 코드를 로딩하는 것은 성공적이지 않은 또는 미스(miss)인, 메모리(16)에 대한 메모리 액세스 요청으로부터 발생할 수 있는데, 이는 요청된 데이터 또는 프로세서-실행가능한 코드가 메모리(16)에 로케이팅되지 않기 때문이다. 미스에 대한 응답으로, 다른 메모리(16) 또는 저장 메모리(24)에 대한 메모리 액세스 요청은 요청된 데이터 또는 프로세서-실행가능한 코드를 다른 메모리(16) 또는 저장 메모리(24)로부터 메모리 디바이스(16)로 로딩하도록 이루어질 수 있다. 기능의 실행에 대한 응답으로 메모리(16)로 데이터 또는 프로세서-실행가능한 코드를 로딩하는 것은 다른 메모리(16) 또는 저장 메모리(24)에 대한 메모리 액세스 요청으로부터 발생할 수 있고, 향후 액세스를 위해 데이터 또는 프로세서-실행가능한 코드가 메모리(16)로 로딩될 수 있다.
[0042] 저장 메모리 인터페이스(20) 및 저장 메모리(24)는, 컴퓨팅 디바이스(10)가, 비-휘발성 저장 매체 상에 데이터 및 프로세서-실행가능한 코드를 저장할 수 있게 하도록 함께 작동할 수 있다. 저장 메모리(24)는 메모리(16)의 실시예와 매우 유사하게 구성될 수 있으며, 여기서, 저장 메모리(24)는 프로세서들(14) 중 하나 또는 그 초과에 의해 액세스하기 위한 데이터 또는 프로세서-실행가능한 코드를 저장할 수 있다. 비-휘발성인 저장 메모리(24)는 컴퓨팅 디바이스(10)의 전력이 셧 오프된 이후에도 정보를 보유할 수 있다. 전력이 다시 턴 온되고, 컴퓨팅 디바이스(10)가 재부팅될 때, 저장 메모리(24) 상에 저장된 정보는 컴퓨팅 디바이스(10)가 이용가능할 수 있다. 저장 메모리 인터페이스(20)는 저장 메모리(24)에 대한 액세스를 제어하고, 프로세서(14)가, 저장 메모리(24)로부터 데이터를 판독하고, 저장 메모리(24)에 데이터를 기록할 수 있게 할 수 있다.
[0043] 컴퓨팅 디바이스(10)의 컴포넌트들 전부 또는 그 일부는 필요한 기능들을 여전히 서빙하면서 상이하게 배열되고 그리고/또는 조합될 수 있다. 더욱이, 컴퓨팅 디바이스(10)는 컴포넌트들 각각 중 하나로 제한되는 것은 아닐 수 있고, 각각의 컴포넌트의 다수의 사례들은 컴퓨팅 디바이스(10)의 다양한 구성들 내에 포함될 수 있다.
[0044] 도 2는 일 실시예를 구현하기에 적합한 멀티-코어 프로세서(14)를 예시한다. 멀티-코어 프로세서(14)는 복수의 동종(homogeneous) 또는 이종(heterogeneous) 프로세서 코어들(200, 201, 202, 203)을 가질 수 있다. 프로세서 코어들(200, 201, 202, 203)은, 단일 프로세서(14)의 프로세서 코어들(200, 201, 202, 203)이 동일한 목적을 위해 구성될 수 있고, 동일한 또는 유사한 성능 특성들을 가질 수 있다는 점에서 동종일 수 있다. 예컨대, 프로세서(14)는 범용 프로세서일 수 있고, 프로세서 코어들(200, 201, 202, 203)은 동종의 범용 프로세서 코어들일 수 있다. 대안적으로, 프로세서(14)는 그래픽 프로세싱 유닛 또는 디지털 신호 프로세서일 수 있고, 프로세서 코어들(200, 201, 202, 203)은 각각, 동종 그래픽 프로세서 코어들 또는 디지털 신호 프로세서 코어들일 수 있다. 참조의 용이함을 위해, "프로세서" 및 "프로세서 코어"라는 용어들은 본원에서 상호 교환가능하게 사용될 수 있다.
[0045] 프로세서 코어들(200, 201, 202, 203)은, 단일 프로세서(14)의 프로세서 코어들(200, 201, 202, 203)이 상이한 목적들을 위해 구성될 수 있고 그리고/또는 상이한 성능 특성들을 가질 수 있다는 점에서 이종일 수 있다. 그러한 이종 프로세서 코어들의 이종성은 상이한 명령 세트 아키텍처, 파이프라인들, 동작 주파수들 등을 포함할 수 있다. 그러한 이종 프로세서 코어들의 예는, 보다 느린, 저-전력 프로세서 코어들이 보다 강력하고 전력이 많이 소모되는(power-hungry) 프로세서 코어들과 커플링될 수 있는 "big.LITTLE" 아키텍처들로 알려져 있는 것을 포함할 수 있다. 유사한 실시예들에서, SoC(12)는 다수의 동종 또는 이종 프로세서들(14)을 포함할 수 있다.
[0046] 도 2에서 예시되는 예에서, 멀티-코어 프로세서(14)는 4개의 프로세서 코어들(200, 201, 202, 203)(즉, 프로세서 코어 0, 프로세서 코어 1, 프로세서 코어 2, 및 프로세서 코어 3)을 포함한다. 설명의 용이함을 위해, 본원에서의 예들은 도 2에서 예시되는 4개의 프로세서 코어들(200, 201, 202, 203)을 지칭할 수 있다. 그러나, 도 2에서 예시되고 본원에서 설명되는 4개의 프로세서 코어들(200, 201, 202, 203)은 단지 예로서 제공되며, 어떠한 방식으로도 다양한 실시예들을 4-코어 프로세서 시스템으로 제한하는 것을 의미하는 것은 아니다. 컴퓨팅 디바이스(10), SoC(12), 또는 멀티-코어 프로세서(14)는 개별적으로 또는 조합하여, 본원에서 예시되고 설명되는 4개의 프로세서 코어들(200, 201, 202, 203)보다 적거나 또는 많은 프로세서 코어들을 포함할 수 있다.
[0047] 도 3a-도 3c는 웨이크 락 인식 스케줄링 시스템(300a-300c)의 예시적 실시예들을 예시한다. 웨이크 락 인식 스케줄링 시스템(300a-300c)의 예시적 실시예들은 (도 1의 컴퓨팅 디바이스(10)와 같은) 컴퓨팅 디바이스 상에 포함될 수 있다. 웨이크 락 인식 스케줄링 시스템(300a-300c)의 예시적 실시예들 각각은 웨이크 락 프로파일러(304), 서비스 작업 스케줄러(306), 및 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러(308)를 포함할 수 있다. 웨이크 락 프로파일러(304)는 서비스 작업 스케줄러(306) 및 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러(308)에 통신가능하게 연결될 수 있다. 다양한 실시예들에서, 웨이크 락 프로파일러(304)는, (도 1 및 도 2의 프로세서(14)와 같은) 범용 하드웨어 상에서 또는 전력 매니저(302)와 같은 특수화된 하드웨어 상에서 실행되는 소프트웨어로서 구현될 수 있다. 다양한 실시예들에서, 웨이크 락 프로파일러(304)는, (도 1 및 도 2의 프로세서(14)와 같은) 범용 하드웨어의 일부로서 또는 전력 매니저(302)와 같은 특수화된 하드웨어의 일부로서 통합되는 하드웨어 컴포넌트로서 구현될 수 있다. 다양한 실시예들에서, 웨이크 락 프로파일러(304)는, 웨이크 락들을 관리하도록 구성된 소프트웨어의 소프트웨어 컴포넌트를 실행하는 프로그래밍가능한 프로세서, 이를테면, 전력 매니저(302)에 구현될 수 있다. 대안적으로, 웨이크 락 프로파일러(304)는 (도 1 및 도 2의 프로세서(14)와 같은) 범용 하드웨어/회로에 또는 특수화된 하드웨어/회로에 구현될 수 있다. 다양한 실시예들에서, 웨이크 락 프로파일러(304)는 특수화된 하드웨어 컴포넌트로서 구현될 수 있으며, 프로세서(14) 및 전력 매니저(302)에 통신가능하게 연결될 수 있다.
[0048] 웨이크 락 프로파일러(304)는 애플리케이션들로부터의 웨이크 락 요청들을 수신/검출/인터셉트하고, 다양한 웨이크 락들에 대한 웨이크 락 정보를 컴파일하기 위해 그 요청들 및/또는 웨이크 락 이벤트들 동안의 프로세서(14) 활동의 관측치들에 포함된 웨이크 락 정보를 사용하도록 구성될 수 있다. 웨이크 락 요청에 포함되고, 웨이크 락 프로파일러(304)에 의해 컴파일될 수 있는 웨이크 락 정보는 웨이크 락 식별자(ID), 사용자 ID, 프로세스 ID, 및 웨이크 락 시간 파라미터를 포함할 수 있다. 웨이크 락 시간 파라미터는, 웨이크 락 듀레이션, 웨이크 락 듀레이션 추정치, 웨이크 락 시작 시간 및/또는 웨이크 락 종료 시간 중 하나 또는 그 초과를 포함하는, 웨이크 락의 듀레이션의 계산을 식별하고 그리고/또는 가능하게 하는 정보를 포함할 수 있다. 웨이크 락 식별자(ID), 사용자 ID, 프로세스 ID 및 웨이크 락 시간 파라미터는 또한, 웨이크 락 이벤트 동안 프로세서(14)로부터 웨이크 락 프로파일러(304)에 의해 관측될 수 있다. 웨이크 락 프로파일러(304)는 또한, 웨이크 락 이벤트들 동안의 프로세서(14) 활동의 관측치들로부터 웨이크 락 듀레이션 추정치를 계산 및 컴파일하고, 웨이크 락 듀레이션 추정치를 웨이크 락 요청들로부터의 컴파일된 웨이크 락 정보와 상관시킬 수 있다. 웨이크 락 프로파일러(304)는 그들의 웨이크 락 ID들에 의해 식별된 지정된 웨이크 락에 대한 웨이크 락 정보를 상관시키도록 구성된 데이터 구조에 웨이크 락 정보를 저장할 수 있다.
[0049] 웨이크 락 프로파일러(304)는 웨이크 락 요청을 식별하고, 힌트를 서비스 작업 스케줄러(306) 및/또는 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러(308)에 전송하도록 구성될 수 있다. 힌트는 요청된 웨이크 락에 대한 힌트 웨이크 락 시간 파라미터를 포함할 수 있다. 웨이크 락 시간 파라미터는, 웨이크 락 듀레이션, 웨이크 락 듀레이션 추정치, 웨이크 락 시작 시간 및/또는 웨이크 락 종료 시간 중 하나 또는 그 초과를 포함하는, 웨이크 락의 듀레이션의 계산을 식별하고 그리고/또는 가능하게 하는 정보를 포함할 수 있다. 요청된 웨이크 락은 향후 또는 기존 웨이크 락일 수 있다. 서비스 작업 스케줄러(306) 및/또는 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러(308)는 요청된 웨이크 락의 웨이크 락 이벤트 동안 실행될 수 있는 준비 작업들을 선택하기 위해 힌트 정보를 사용할 수 있다. 서비스 작업 스케줄러(306) 및/또는 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러(308)는 선택된 준비 작업들을 스케줄링하기 위해 웨이크 락 프로파일러(304)로부터의 허가를 요청할 수 있다. 허가에 대한 요청은 프로세서 사용량 표시자 및/또는 준비 작업 식별자들을 포함할 수 있다. 프로세서 사용량 표시자는 모든 요청된 준비 작업들, 요청된 준비 작업들의 그룹들 또는 개별 요청된 준비 작업들을 스케줄링하기 위한 프로세서 사용량의 표시자일 수 있다.
[0050] 웨이크 락 프로파일러(304)는 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청들을 승인할지 그리고/또는 거부할지를 결정할 수 있다. 웨이크 락 프로파일러(304)는, 총 프로세서 사용량 임계치로 또는 그 미만으로 유지하면서, 모든 요청된 준비 작업들이 프로세서(14)에 대한 총 작업량에 부가될 수 있는지, 요청된 준비 작업들의 그룹들이 프로세서(14)에 대한 총 작업량에 부가될 수 있는지, 또는 개별 요청된 준비 작업들이 프로세서(14)에 대한 총 작업량에 부가될 수 있는지에 기반하여, 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청들을 그랜트(grant) 및/또는 거부할 수 있다. 웨이크 락 프로파일러(304)는 모든 요청된 준비 작업들, 요청된 준비 작업들의 그룹들, 또는 개별 요청된 준비 작업들의 승인 및/또는 거부를 전송할 수 있다.
[0051] 서비스 작업 스케줄러(306) 및/또는 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러(308)는 선택된 준비 작업들 전부 또는 그 일부를 스케줄링하기 위한 허가의 거부에 대한 응답으로 준비 작업들 전부 또는 그 일부의 선택들을 재구성하고, 준비 작업들의 재구성된 선택을 사용하여 선택된 준비 작업들을 스케줄링하기 위한 허가를 요청하는 프로세스를 반복할 수 있다. 선택된 준비 작업들을 스케줄링하기 위한 허가의 요청은 협상으로 지칭될 수 있다. 서비스 작업 스케줄러(306) 및/또는 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러(308)는 선택된 준비 작업들 전부 또는 그 일부를 스케줄링하기 위한 허가의 승인에 대한 응답으로 그리고 그에 따라 선택된 준비 작업들 전부 또는 그 일부를 스케줄링할 수 있다.
[0052] 도 4는 일 실시예에 따른, 웨이크 락 정보 테이블(400)의 예를 예시한다. 본원에서 설명되는 바와 같이, 웨이크 락 프로파일러는 그들의 웨이크 락 ID들에 의해 식별된 지정된 웨이크 락에 대한 웨이크 락 정보를 상관시키도록 구성된 데이터 구조에 웨이크 락 정보를 저장할 수 있다. 그러한 데이터 구조의 비-제한적 예는 웨이크 락 정보 테이블(400)을 포함할 수 있다. 웨이크 락 정보 테이블(400)은 웨이크 락 ID 칼럼(column)(402), 사용자 ID 칼럼(404), 프로세스 ID 칼럼(406), 웨이크 락 실제 듀레이션 칼럼(408) 및 웨이크 락 듀레이션 추정치 칼럼(410)을 포함하는, 지정된 타입들의 웨이크 락 정보를 저장하는 칼럼들(402-410)로서 표현되는 다수의 데이터 필드들을 포함할 수 있다. 웨이크 락 정보 테이블(400)은 웨이크 락 ID 칼럼(402)의 웨이크 락 ID에 의해 지정되는, 지정된 웨이크 락에 대한 칼럼들(402-410)의 웨이크 락 정보를 상관시키는 로우(row)들(412-416)로서 표현되는 다수의 데이터 레코드들을 포함할 수 있다.
[0053] 웨이크 락 정보 테이블(400)은, 웨이크 락 요청 및/또는 웨이크 락 이벤트들 동안의 프로세서 활동의 관측치들로부터 도출된 웨이크 락 정보로 파퓰레이팅(populate)될 수 있다. 일부 실시예들에서, 로우(412-416)에 대한 웨이크 락 ID 칼럼(402), 사용자 ID 칼럼(404), 프로세스 ID 칼럼(406), 웨이크 락 실제 듀레이션 칼럼(408)은, 웨이크 락 요청 및/또는 웨이크 락 ID와 연관된 웨이크 락에 대한 웨이크 락 이벤트 동안의 프로세서 활동의 관측치들로부터 도출된 웨이크 락 ID, 사용자 ID, 프로세스 ID, 및 웨이크 락 시간 파라미터를 사용하여 파퓰레이팅될 수 있다. 일부 실시예들에서, 웨이크 락 실제 듀레이션 칼럼(408)은 웨이크 락 시간 파라미터로서 웨이크 락 정보에 포함된 지정된 웨이크 락 듀레이션으로 파퓰레이팅될 수 있다. 일부 실시예들에서, 웨이크 락 실제 듀레이션 칼럼(408)은 웨이크 락 이벤트의 시작 시간 및/또는 종료 시간 및 웨이크 락 이벤트 동안의 프로세서 활동의 관측치들을 포함하는 웨이크 락 시간 파라미터로부터 도출된 계산된 웨이크 락 듀레이션으로 파퓰레이팅될 수 있다.
[0054] 웨이크 락 듀레이션 추정치 칼럼(410)은 웨이크 락 ID와 연관된 웨이크 락 이벤트 듀레이션의 계산된 웨이크 락 듀레이션 추정치로 파퓰레이팅될 수 있다. 다양한 실시예들에서, 웨이크 락 듀레이션 추정치는 웨이크 락 시간 파라미터가 웨이크 락 ID에 이용가능하지 않을 때 계산될 수 있다. 웨이크 락 듀레이션 추정치는 웨이크 락 ID와 연관된 웨이크 락 이벤트 동안의 프로세서 활동의 관측치들에 기반하여 계산될 수 있다. 다양한 실시예들에서, 웨이크 락 듀레이션 추정치 칼럼(410)은 웨이크 락 ID와 연관된 후속 웨이크 락 이벤트들에 적어도 부분적으로 기반하여 업데이트될 수 있다. 웨이크 락 듀레이션 추정치는 웨이크 락 ID와 연관된 다수의 웨이크 락 이벤트들에 대해 계산될 수 있고, 웨이크 락 듀레이션 추정치 칼럼(410)은 현재 웨이크 락 듀레이션 관측치/추정치 그리고 이전 웨이크 락 듀레이션 관측치들/추정치들 전부 또는 그 일부를 사용하는 웨이크 락 듀레이션 추정치의 계산을 사용하여 업데이트될 수 있다. 평균, 중간 값, 지수 가중 이동 평균 등을 포함하는 다수의 웨이크 락 듀레이션 관측치들/추정치들을 사용하여 웨이크 락 듀레이션 추정치를 계산하기 위해 다양한 계산들이 사용될 수 있다. 다양한 실시예들에서, 웨이크 락 듀레이션 추정치는 런타임 분석에 기반할 수 있다. 다양한 실시예들에서, 웨이크 락 듀레이션 추정치는 오프라인 분석에 기반할 수 있다.
[0055] 도 5는 일 실시예에 따른, 예시적 웨이크 락 듀레이션 추정을 예시한다. 동일한 웨이크 락 ID와 연관된 다양한 웨이크 락 이벤트들(500a, 500b, 500c)은 상이한 타이밍 특성들을 가질 수 있다. 다양한 웨이크 락 이벤트들(500a, 500b, 500c)의 타이밍 특성들은 웨이크 락 ID에 대한 웨이크 락 듀레이션 추정치(508)를 계산하기 위해 사용될 수 있다. 각각의 웨이크 락 이벤트(500a, 500b, 500c)는 시작 시간(502a, 502b, 502c), 듀레이션(504a, 504b, 504c) 및 종료 시간(506a, 506b, 506c)을 포함할 수 있다. 시작 시간(502a, 502b, 502c)은, 웨이크 락 요청을 수신/검출/인터셉트하고, 웨이크 락에 대한 그랜트를 표시하는 웨이크 락 포착 신호를 수신/검출/인터셉트하고, 그리고/또는 "슬립"으로부터 "활성"으로의 프로세서 상태의 변화를 관측함으로써, 웨이크 락 프로파일러에 의해 관측될 수 있다. 유사하게, 종료 시간(506a, 506b, 506c)은, 웨이크 락의 철회(revocation)를 표시하는 웨이크 락 해제 신호를 수신/검출/인터셉트하고, 그리고/또는 "활성"으로부터 "슬립"으로의 프로세서 상태의 변화를 관측함으로써, 웨이크 락 프로파일러에 의해 관측될 수 있다. 듀레이션(504a, 504b, 504c)은 시작 시간(502a, 502b, 502c) 및 종료 시간(506a, 506b, 506c)을 관측하는 것 사이에 경과된 시간을 측정 또는 계산함으로써 웨이크 락 프로파일러에 의해 측정 또는 계산될 수 있다.
[0056] 도 5에서 예시되는 예는, 웨이크 락 이벤트(500a)에 대한 듀레이션(504a)이 듀레이션들(504a, 504b, 504c) 중 가장 긴 듀레이션일 수 있고; 웨이크 락 이벤트(500b)에 대한 듀레이션(504b)은 듀레이션들(504a, 504b, 504c) 중 가장 짧은 듀레이션일 수 있고; 그리고 웨이크 락 이벤트(500c)에 대한 듀레이션(504c)은 가장 긴 웨이크 락 듀레이션(504a)과 가장 짧은 웨이크 락 듀레이션(504b) 사이임을 비교하여 도시한다. 예는, 비록 가능하더라도, 웨이크 락 듀레이션 추정치(508)가 듀레이션들(504a, 504b, 504c) 중 임의의 듀레이션과 동등할 필요가 없다는 것을 예시한다.
[0057] 도 5의 예는, 웨이크 락 듀레이션 추정치(508)가 듀레이션(504b)보다 길고, 듀레이션들(504a, 504c)보다 짧을 수 있다는 것을 예시한다. 본원에서 논의되는 바와 같이, 웨이크 락 듀레이션 추정치(508)는 다양한 계산 수단을 사용하여 계산될 수 있으며, 듀레이션들(504a, 504b, 504c), 시작 시간들(502a, 502b, 502c) 및/또는 종료 시간들(506a, 506b, 506c) 전부 또는 그 일부를 사용할 수 있다. 다양한 실시예들에서, 웨이크 락 듀레이션 추정치(508)는, 이전 웨이크 락 듀레이션 추정치, 및 듀레이션들(504a, 504b, 504c), 시작 시간들(502a, 502b, 502c) 및/또는 종료 시간들(506a, 506b, 506c) 전부 또는 그 일부를 사용하여 계산될 수 있다. 웨이크 락 듀레이션 추정치(508)는 부가적 웨이크 락 이벤트들에 따라 변화할 수 있다. 웨이크 락 듀레이션 추정치(508)는 서비스 작업 스케줄러 및 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러에 의해 준비 작업들의 스케줄링을 제어하기 위해 사용될 수 있다.
[0058] 도 6 및 도 7은 일 실시예에 따른 웨이크 락 비인식 스케줄링 및 웨이크 락 인식 스케줄링의 비교 예들을 예시한다. 도 6 및 도 7에서 예시되는 예들에서, 동일한 웨이크 락 이벤트 시리즈(600)가 예시된다. 두 예들 모두에서, 웨이크 락 이벤트 시리즈(600)는 제1 웨이크 락 이벤트(670) 및 제2 웨이크 락 이벤트(672)를 포함한다. 제1 웨이크 락 이벤트(670)는 웨이크 락 실제 듀레이션과 연관된 웨이크 락 ID를 가질 수 있고, 제2 웨이크 락 이벤트(672)는 웨이크 락 듀레이션 추정치와 연관된 웨이크 락 ID를 가질 수 있다. 제1 웨이크 락 이벤트(670)는 시작 시간(602), 실제 듀레이션(604) 및 실제 종료 시간(606)에 의해 예시될 수 있다. 제2 웨이크 락 이벤트(672)는 시작 시간(608), 추정된 듀레이션(610) 및 추정된 종료 시간(612)에 의해 예시될 수 있다.
[0059] 도 6에서 예시되는 예는 웨이크 락 비인식 서비스 작업 스케줄(620), 웨이크 락 비인식 드라이버 작업/커널 레벨 백그라운드 작업 스케줄(630), 및 프로세서 상태 시리즈(640)를 더 포함할 수 있다. 웨이크 락 비인식 서비스 작업 스케줄(620) 및 웨이크 락 비인식 드라이버 작업/커널 레벨 백그라운드 작업 스케줄(630)은, 웨이크 락 이벤트들(670, 672)의 듀레이션에 관계 없이 스케줄링될 수 있는 작업들(622, 624, 626, 632, 634)을 포함할 수 있다. 이 예에서, 작업들(622, 626, 및 632)은 웨이크 락 이벤트들(670, 672) 외부에서 스케줄링될 수 있다.
[0060] 프로세서 상태 시리즈(640)는 다양한 프로세서 상태들(680-688)을 포함할 수 있다. 프로세서 상태들(680-688)은 "활성" 상태들(680, 684, 688) 및 "슬립" 상태들(682, 686)을 포함할 수 있다. 각각의 프로세서 상태(680-688)는 트랜지션 에지(642, 646, 648, 652, 654, 658) 및 상태 듀레이션(644, 650, 656, 660, 662)에 의해 예시될 수 있다. 활성 상태들(680, 684, 688)은 웨이크 락 이벤트들(670, 672) 및/또는 스케줄링된 작업들(622-634)에 의해 트리거될 수 있다. 도 6의 예는, 웨이크 락 이벤트(670)에 대한 실제 종료 시간(606) 및 활성 상태(680)로부터 슬립 상태(682)로의 트랜지션 에지(646)가 일치하지 않을 수 있고; 웨이크 락 이벤트(672)에 대한 추정된 종료 시간(612) 및 활성 상태(684)로부터 슬립 상태(686)로의 트랜지션 에지(652)가 일치하지 않을 수 있고; 그리고 활성 상태(688)와 일치하는 웨이크 락 이벤트가 존재하지 않을 수 있다는 것을 예시한다.
[0061] 도 7에서 예시되는 예는 웨이크 락 인식 서비스 작업 스케줄(700), 웨이크 락 인식 드라이버 작업/커널 레벨 백그라운드 작업 스케줄(702), 및 프로세서 상태 시리즈(704)를 더 포함할 수 있다. 웨이크 락 인식 서비스 작업 스케줄(700) 및 웨이크 락 인식 드라이버 작업/커널 레벨 백그라운드 작업 스케줄(702)은, 도 6에서 예시되는 예로서, 동일한 작업들(622, 624, 626, 632, 634)을 포함할 수 있다. 그러나, 웨이크 락 인식 스케줄링으로 인해, 작업들(622, 624, 626, 632, 634)은, 도 7에서 예시되는 예에서, 웨이크 락 이벤트들(670, 672)의 듀레이션과 정렬되도록 스케줄링될 수 있다. 이 예에서, 작업들(622, 624, 626, 632, 634)은 웨이크 락 이벤트들(670, 672) 내에서 스케줄링될 수 있다.
[0062] 프로세서 상태 시리즈(704)는 다양한 프로세서 상태들(684, 720-724)을 포함할 수 있다. 프로세서 상태들(684, 720-724)은 "활성" 상태들(684, 720) 및 "슬립" 상태들(722, 724)을 포함할 수 있다. 각각의 프로세서 상태(684, 720-724)는 트랜지션 에지(642, 648, 652, 710) 및 상태 듀레이션(650, 708, 712, 714)에 의해 예시될 수 있다. 활성 상태들(684, 720)은 웨이크 락 이벤트들(670, 672) 및/또는 스케줄링된 작업들(622-634)에 의해 트리거될 수 있다. 도 7의 예는, 웨이크 락 이벤트(670)에 대한 실제 종료 시간(606) 및 활성 상태(720)로부터 슬립 상태(722)로의 트랜지션 에지(710)가 일치할 수 있고; 웨이크 락 이벤트(672)에 대한 추정된 종료 시간(612) 및 활성 상태(684)로부터 슬립 상태(724)로의 트랜지션 에지(652)가 일치하지 않을 수 있고; 그리고 웨이크 락 이벤트와 일치하지 않는 활성 상태가 존재하지 않을 수 있다는 것을 예시한다.
[0063] 도 6 및 도 7에서 예시되는 예들의 비교는, 웨이크 락 인식 스케줄링 대 웨이크 락 비인식 스케줄링을 사용할 때, 활성 상태 듀레이션(650, 708)이 활성 상태 듀레이션들(644, 650, 656)보다 누적적으로(cumulatively) 더 작을 수 있다는 것을 보여준다. 결과적으로, 슬립 상태 듀레이션들(722, 724)은 슬립 상태 듀레이션들(682, 686)보다 누적적으로 더 클 수 있다. 슬립 상태로부터 활성 상태(642, 648)로의 트랜지션 에지들의 수는 슬립 상태로부터 활성 상태(642, 648, 654)로의 트랜지션 에지들의 수보다 누적적으로 더 적을 수 있다. 그에 따라서, 웨이크 락 인식 스케줄링은, 활성 상태에서 프로세서가 소비하는 시간을 감소시키고, 슬립 상태에서 프로세서가 소비하는 시간을 증가시키고, 그리고 프로세서가 슬립 상태로부터 활성 상태로 행하는 트랜지션들의 수를 감소시킴으로써, 동일한 작업들(622, 624, 626, 632, 634)에 대한 웨이크 락 비인식 스케줄링에 비해 전력 이점들을 제공할 수 있다. 웨이크 락 이벤트(672)에 대한 추정된 종료 시간(612) 및 활성 상태(684)로부터 슬립 상태(724)로의 트랜지션 에지(652)가 일치하지 않을 때에도 전력 이점들은 실현될 수 있는데, 이는 작업(626)이 웨이크 락 이벤트(672) 동안 실행될 수 있어, 활성 상태(688)에 대한 필요성을 제거하기 때문이다.
[0064] 도 8은 일 실시예에 따른, 웨이크 락 듀레이션 추정을 위한 방법(800)을 예시한다. 방법(800)은, 프로세서(예컨대, 도 1, 도 2 및 도 3c의 프로세서(14))에서 실행되는 소프트웨어(예컨대, 도 3a-도 3c의 전력 매니저(302) 및 웨이크 락 프로파일러(304))로, 범용 하드웨어로, 전용 하드웨어(예컨대, 도 3a-도 3c의 전력 매니저(302) 및 웨이크 락 프로파일러(304))로, 또는 다른 개별 컴포넌트들을 포함하는 웨이크 락 인식 스케줄링 시스템 내에서 소프트웨어를 실행하는 프로세서와 같은 프로세서와 전용 하드웨어의 조합으로 컴퓨팅 디바이스에서 구현될 수 있다. 다양한 실시예들에서 가능한 대안적 구성들을 포함하기 위해, 방법(800)을 구현하는 하드웨어는 본원에서 "프로세싱 디바이스"로 지칭된다.
[0065] 블록(802)에서, 프로세싱 디바이스는 애플리케이션으로부터 웨이크 락 요청을 검출/수신/인터셉트할 수 있다. 프로세싱 디바이스는 웨이크 락 요청들에 대한 통신 경로를 모니터링하도록 구성될 수 있거나, 또는 웨이크 락 요청들에 대한 통신 경로에 로케이팅될 수 있다.
[0066] 블록(804)에서, 프로세싱 디바이스는 웨이크 락 요청과 연관된 웨이크 락에 대한 웨이크 락 정보를 포착할 수 있다. 웨이크 락 정보는 웨이크 락 ID, 사용자 ID, 프로세스 ID 및/또는 실제 듀레이션을 포함할 수 있다. 프로세싱 디바이스는, 프로세서에 대한 웨이크 락을 구현하기 위해 사용되는 메모리 디바이스, 이를테면, 캐시 레지스터들 및 버퍼들로부터, 웨이크 락 요청과 함께 전송된 웨이크 락 정보로부터 웨이크 락 정보를 리트리브(retrieve)함으로써, 웨이크 락 정보를 포착할 수 있다. 적어도 웨이크 락 ID를 리트리브한 이후에, 프로세싱 디바이스는 웨이크 락 정보 데이터 구조(예컨대, 도 4의 웨이크 락 정보 테이블(400))로부터 웨이크 락 ID와 연관된 다른 웨이크 락 정보를 리트리브할 수 있다.
[0067] 결정 블록(806)에서, 프로세싱 디바이스는 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하는지 여부를 결정할 수 있다. 따라서, 블록(806)에서, 프로세싱 디바이스는, 웨이크 락 정보가 웨이크 락 듀레이션, 이를테면, 웨이크 락 실제 듀레이션 또는 웨이크 락 시작 시간 및 웨이크 락 종료 시간 둘 모두의 계산을 식별 및/또는 가능하게 하는 정보를 포함하는지 여부를 결정할 수 있다.
[0068] 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하지 않는다는 결정(즉, 결정 블록(806) = "아니오")에 대한 응답으로, 프로세싱 디바이스는 블록(808)에서 웨이크 락 듀레이션을 측정 또는 계산할 수 있다. 프로세싱 디바이스는, 웨이크 락 시그널링의 그랜트 및 해제 및/또는 웨이크 락 요청에 대응하는 프로세서 활동을 포함하는 웨이크 락 요청의 관측치들로부터 그리고/또는 웨이크 락 시작 시간 및 웨이크 락 종료 시간 중 하나 또는 또 다른 하나를 포함하는 단일 웨이크 락 시간 파라미터로부터 웨이크 락 듀레이션을 측정 또는 계산할 수 있다. 프로세싱 디바이스는 웨이크 락 시그널링의 그랜트 및 해제, 웨이크 락 요청에 대응하는 활성 상태와 슬립 상태 사이의 프로세서의 트랜지션들, 및/또는 웨이크 락 시작 시간 또는 웨이크 락 종료 시간에 기반하여 웨이크 락 듀레이션을 측정하는 것을 시작 및 종료할 수 있다. 프로세싱 디바이스는 웨이크 락 시그널링의 그랜트 및 해제에 대한 시간들, 웨이크 락 요청에 대응하는 활성 상태와 슬립 상태 사이의 프로세서의 트랜지션들, 및/또는 웨이크 락 시작 시간 또는 웨이크 락 종료 시간에 기반하여 웨이크 락 듀레이션을 계산할 수 있다.
[0069] 블록(810)에서, 프로세싱 디바이스는 자신이 측정 또는 계산한 웨이크 락 듀레이션을 저장할 수 있다. 프로세싱 디바이스는, 다수의 웨이크 락 듀레이션들에 기반하여 웨이크 락 듀레이션을 추정하는 것과 같은 향후 리트리벌(retrieval)을 위해, 일반 또는 전용 휘발성 또는 비휘발성 메모리(예컨대, 도 1의 메모리(16, 24))에 웨이크 락 듀레이션을 저장할 수 있다.
[0070] 블록(812)에서, 프로세싱 디바이스는 저장된 웨이크 락 듀레이션들 중 다수를 사용하여 웨이크 락 듀레이션 추정치를 계산할 수 있다. 다양한 실시예들에서, 다수의 저장된 웨이크 락 듀레이션들은 이전 웨이크 락 듀레이션 추정치에 의해 구현될 수 있고, 웨이크 락 듀레이션 추정치의 계산은 이전 웨이크 락 듀레이션 추정치 및 하나 또는 그 초과의 최근 저장된 웨이크 락 듀레이션들을 사용하는 것을 포함할 수 있다. 다양한 실시예들에서, 웨이크 락 듀레이션 추정치를 계산하는 것은 평균, 중간 값, 지수 가중 이동 평균 등을 계산하는 것과 같은 계산하기 위한 다양한 기법들을 사용하는 것을 포함할 수 있다.
[0071] 블록(814)에서, 프로세싱 디바이스는 대응하는 웨이크 락 ID(즉, 대응하는 웨이크 락 이벤트의 ID)를 갖는 웨이크 락 정보 데이터 구조에 웨이크 락 듀레이션 추정치를 저장할 수 있다. 웨이크 락 듀레이션 추정치는 웨이크 락 정보 데이터 구조에 저장될 수 있다. 예컨대, 프로세싱 디바이스는, 연관된 웨이크 락 ID뿐만 아니라 사용자 ID 및/또는 프로세스 ID를 포함하는 웨이크 락 정보와 추정치를 연관시키는 방식으로, 메모리에 웨이크 락 듀레이션 추정치를 저장할 수 있다. 일부 실시예들에서, 블록들(802-814)의 동작들은 연관된 웨이크 락 ID에 대한 웨이크 락 듀레이션 추정치를 전개하기 위해 오프라인 및/또는 런타임 분석을 위해 실행될 수 있다.
[0072] 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함한다는 결정(즉, 결정 블록(806) = "예")에 대한 응답으로, 프로세싱 디바이스는, 선택적 블록(816)에서, 웨이크 락 시간 파라미터, 이를테면, 웨이크 락 시작 시간 및 웨이크 락 종료 시간으로부터의 웨이크 락 듀레이션을 선택적으로 계산할 수 있다. 웨이크 락 실제 듀레이션이 프로세싱 디바이스에 이용가능하지 않으면, 디바이스는 웨이크 락 실제 듀레이션을 결정하기 위해 웨이크 락 시작 시간 및 웨이크 락 종료 시간을 사용할 수 있다.
[0073] 블록(818)에서, 프로세싱 디바이스는 웨이크 락 실제 듀레이션을 저장할 수 있다. 다양한 실시예들에서, 프로세싱 디바이스는 웨이크 락 요청과 연관된 웨이크 락 이벤트 동안 사용하기 위해 메모리(예컨대, 도 1의 메모리(16, 24))에 웨이크 락 실제 듀레이션을 저장할 수 있다. 웨이크 락 실제 듀레이션은 대응하는 웨이크 락 ID와 함께 웨이크 락 정보 데이터 구조에 저장될 수 있다. 예컨대, 프로세싱 디바이스는, 연관된 웨이크 락 ID, 사용자 ID 및/또는 프로세스 ID를 포함하는 대응하는 웨이크 락 정보와 듀레이션을 연관시키는 방식으로, 웨이크 락 실제 듀레이션을 저장할 수 있다.
[0074] 도 9는 일 실시예에 따른, 웨이크 락 인식 스케줄링을 위한 방법(900)을 예시한다. 방법(900)은, 프로세서(예컨대, 도 1, 도 2 및 도 3c의 프로세서(14))에서 실행되는 소프트웨어(예컨대, 도 3a-도 3c의 전력 매니저(302) 및 웨이크 락 프로파일러(304))로, 범용 하드웨어로, 전용 하드웨어(예컨대, 도 3a-도 3c의 전력 매니저(302) 및 웨이크 락 프로파일러(304))로, 또는 다른 개별 컴포넌트들을 포함하는 웨이크 락 인식 스케줄링 시스템 내에서 소프트웨어를 실행하는 프로세서와 같은 프로세서와 전용 하드웨어의 조합으로 컴퓨팅 디바이스에서 구현될 수 있다. 다양한 실시예들에서 가능한 대안적 구성들을 포함하기 위해, 방법(900)을 구현하는 하드웨어는 본원에서 "프로세싱 디바이스"로 지칭된다.
[0075] 블록(902)에서, 프로세싱 디바이스는 애플리케이션으로부터 웨이크 락 요청을 검출/수신/인터셉트할 수 있다. 프로세싱 디바이스는 웨이크 락 요청들에 대한 통신 경로를 모니터링하도록 구성될 수 있거나, 또는 웨이크 락 요청들에 대한 통신 경로에 로케이팅될 수 있다.
[0076] 블록(904)에서, 프로세싱 디바이스는 웨이크 락 요청과 연관된 웨이크 락에 대한 웨이크 락 정보를 포착할 수 있다. 웨이크 락 정보는, 웨이크 락 ID, 사용자 ID, 프로세스 ID 및/또는 웨이크 락 시간 파라미터(예컨대, 웨이크 락 듀레이션, 웨이크 락 듀레이션 추정치, 웨이크 락 시작 시간 및/또는 웨이크 락 종료 시간 중 하나 또는 그 초과)를 포함할 수 있다. 프로세싱 디바이스는, 프로세서에 대한 웨이크 락을 구현하기 위해 사용되는 메모리 디바이스, 이를테면, 캐시 레지스터들 및 버퍼들로부터, 웨이크 락 요청과 함께 전송된 웨이크 락 정보로부터 웨이크 락 정보를 리트리브함으로써, 웨이크 락 정보를 포착할 수 있다. 적어도 웨이크 락 ID를 리트리브한 이후에, 프로세싱 디바이스는, 웨이크 락 정보 데이터 구조(예컨대, 도 4의 웨이크 락 정보 테이블(400))로부터 웨이크 락 ID와 연관된 다른 웨이크 락 정보(웨이크 락 듀레이션 추정치를 포함함)를 리트리브할 수 있다.
[0077] 블록(906)에서, 프로세싱 디바이스는 힌트를 하나 또는 그 초과의 스케줄러들(예컨대, 도 3a-도 3c의 서비스 작업 스케줄러(306), 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러(308))에 전송할 수 있다. 힌트는 웨이크 락 시간 파라미터 및/또는 요청된 웨이크 락에 대한 웨이크 락 듀레이션 추정치를 포함할 수 있는 힌트 웨이크 락 시간 파라미터를 포함할 수 있다. 요청된 웨이크 락은 향후 또는 기존 웨이크 락일 수 있다.
[0078] 블록(908)에서, 프로세싱 디바이스는 스케줄러로부터 준비 작업들을 스케줄링하기 위한 허가에 대한 요청을 수신할 수 있다. 준비 작업들은 웨이크 락 이벤트 동안 실행되기 위해 대기 중인 작업들을 포함할 수 있다. 힌트를 수신하면, 스케줄러는, 도 10에서 예시되는 방법(1000)을 참조하여 추가로 설명되는 바와 같이, 실행을 위한 준비 작업들을 선택하고, 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청을 전송할 수 있다. 준비 작업들을 스케줄링하기 위한 허가에 대한 요청은 선택된 준비 작업들의 각각, 그룹들 및/또는 전부의 프로세서 사용량에 대한 추정치 및/또는 선택된 준비 작업들의 각각, 그룹들 및/또는 전부에 대한 식별자를 포함할 수 있다.
[0079] 결정 블록(910)에서, 프로세싱 디바이스는, 선택된 준비 작업들을 포함하는 총 작업량이 총 프로세서 사용량 임계치를 초과하는지 여부를 결정할 수 있다.
[0080] 총 작업량이 총 프로세서 사용량 임계치를 초과하지 않는다는 결정(즉, 결정 블록(910) = "아니오")에 대한 응답으로, 프로세싱 디바이스는, 블록(912)에서, 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청의 승인을 스케줄러에 전송할 수 있다.
[0081] 총 작업량이 총 프로세서 사용량 임계치를 초과한다는 결정(즉, 결정 블록(910) = "예")에 대한 응답으로, 프로세싱 디바이스는, 선택적 블록(914)에서, 총 작업량을 총 프로세서 사용량 임계치 미만으로 감소시키는 준비 작업들의 조합을 선택할 수 있다. 프로세싱 디바이스는 준비 작업들의 조합을 선택하기 위해 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청의 정보를 사용할 수 있다.
[0082] 선택적 블록(916)에서, 프로세싱 디바이스는 프로세싱 디바이스에 의해 선택된 준비 작업들의 조합을 스케줄링하기 위한 허가의 승인을 스케줄러에 전송할 수 있다.
[0083] 블록(918)에서, 프로세싱 디바이스는 준비 작업들을 스케줄링하기 위한 허가에 대한 요청의 거부를 스케줄러에 전송할 수 있다. 다양한 실시예들에서, 준비 작업들을 스케줄링하기 위한 허가에 대한 요청의 거부는 스케줄러에 의해 선택된 준비 작업들 전부를 포함하거나 또는 준비 작업들의 조합에 대한 프로세싱 디바이스에 의해 선택되지 않은 준비 작업들만을 포함할 수 있다.
[0084] 도 10은 일 실시예에 따른, 웨이크 락 인식 스케줄링을 위한 방법(1000)을 예시한다. 방법(1000)은, 프로세서(예컨대, 도 1, 도 2 및 도 3c의 프로세서(14))에서 실행되는 소프트웨어(예컨대, 도 3a-도 3c의 서비스 작업 스케줄러(306) 및 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러(308))로, 범용 하드웨어로, 전용 하드웨어(예컨대, 도 3a-도 3c의 서비스 작업 스케줄러(306) 및 드라이버 작업/커널 레벨 백그라운드 작업 스케줄러(308))로, 또는 다른 개별 컴포넌트들을 포함하는 웨이크 락 인식 스케줄링 시스템 내에서 소프트웨어를 실행하는 프로세서와 같은 프로세서와 전용 하드웨어의 조합으로 컴퓨팅 디바이스에서 구현될 수 있다. 다양한 실시예들에서 가능한 대안적 구성들을 포함하기 위해, 방법(1000)을 구현하는 하드웨어는 본원에서 "프로세싱 디바이스"로 지칭된다.
[0085] 블록(1002)에서, 프로세싱 디바이스는 웨이크 락 프로파일러로부터 힌트를 수신할 수 있다. 힌트는 웨이크 락 시간 파라미터 및/또는 요청된 웨이크 락에 대한 웨이크 락 듀레이션 추정치를 포함할 수 있는 힌트 웨이크 락 시간 파라미터를 포함할 수 있다. 요청된 웨이크 락은 향후 또는 기존 웨이크 락일 수 있다.
[0086] 블록(1004)에서, 프로세싱 디바이스는 요청된 웨이크 락과 연관된 웨이크 락 이벤트 동안 실행될 수 있는 준비 작업들을 선택할 수 있다. 프로세싱 디바이스는, 준비 작업들이 웨이크 락 요청과 연관된 웨이크 락 이벤트의 듀레이션 동안 실행을 완료할 수 있는지 여부를 결정하기 위해, 준비 작업들의 실행을 위한 추정된 듀레이션들을 힌트와 함께 수신된 힌트 웨이크 락 시간 파라미터와 비교할 수 있다. 프로세싱 디바이스는 웨이크 락 요청과 연관된 웨이크 락 이벤트의 듀레이션 동안 실행을 완료할 수 있는 준비 작업들을 선택할 수 있다.
[0087] 결정 블록(1006)에서, 프로세싱 디바이스는, 선택된 준비 작업들이 함께 프로세서 사용량 임계치를 초과하는지 여부를 결정할 수 있다. 프로세싱 디바이스는 준비 작업들이 프로세서 사용량 임계치를 누적적으로 초과하는지 여부를 결정하기 위해 준비 작업들의 실행을 위한 추정된 프로세서 사용량을 프로세서 사용량 임계치와 비교할 수 있다.
[0088] 선택된 준비 작업들이 함께 프로세서 사용량 임계치를 초과한다는 결정(즉, 결정 블록(1006) = "예")에 대한 응답으로, 프로세싱 디바이스는, 블록(1004)에서, 요청된 웨이크 락과 연관된 웨이크 락 이벤트 동안 실행될 수 있는 준비 작업들을 선택할 수 있다. 블록(1004)의 동작들의 반복적 실행들을 통해, 프로세싱 디바이스는 선택된 준비 작업들에 대한 추정된 프로세서 사용량 전체를 추적하고, 이전의 선택된 준비 작업들로부터의 추정된 프로세서 사용량 전체를 또한 감소시키는, 요청된 웨이크 락과 연관된 웨이크 락 이벤트 동안 실행될 수 있는 준비 작업들을 선택할 수 있다. 준비 작업들의 후자의 선택은 요청된 웨이크 락과 연관된 웨이크 락 이벤트 동안의 실행을 위해 사전 선택된 준비 작업들을 포함할 수 있다.
[0089] 선택된 준비 작업들이 함께 프로세서 사용량 임계치를 초과하지 않는다는 결정(즉, 결정 블록(1006) = "아니오")에 대한 응답으로, 프로세싱 디바이스는, 블록(1008)에서, 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청을 웨이크 락 프로파일러에 전송할 수 있다. 도 9에서 예시되는 방법(900)을 참조하여 위에서 설명된 바와 같이, 웨이크 락 프로파일러는, 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청에 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청의 전체적 또는 부분적 승인 및/또는 거부로 응답할지 여부를 결정할 수 있다.
[0090] 블록(1010)에서, 프로세싱 디바이스는, 웨이크 락 프로파일러로부터, 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청에 대한 응답을 수신할 수 있다. 응답은 스케줄링하기 위한 허가가 승인 및/또는 거부되는지에 대한, 선택된 준비 작업들의 개별 작업들, 그룹들, 또는 전부의 식별을 포함할 수 있다.
[0091] 결정 블록(1012)에서, 프로세싱 디바이스는, 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청에 대한 응답이 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청의 승인 및/또는 거부를 포함하는지 여부를 결정할 수 있다. 다양한 실시예들에서, 프로세싱 디바이스는 응답이 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청의 승인, 거부, 또는 승인 및 거부를 포함하는 것으로 결정할 수 있다.
[0092] 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청에 대한 응답이 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청의 승인을 포함한다는 결정(즉, 결정 블록(1012) = "예")에 대한 응답으로, 프로세싱 디바이스는, 블록(1014)에서 웨이크 락 요청과 연관된 웨이크 락 이벤트 동안의 실행을 위해 승인된 준비 태스크들을 스케줄링할 수 있다.
[0093] 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청에 대한 응답이 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청의 거부를 포함한다는 결정(즉, 결정 블록(1012) = "아니오")에 대한 응답으로, 프로세싱 디바이스는, 블록(1004)에서, 요청된 웨이크 락과 연관된 웨이크 락 이벤트 동안 실행될 수 있는 준비 작업들의 상이한 세트를 선택할 수 있다.
[0094] 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청에 대한 응답이 선택된 준비 작업들을 스케줄링하기 위한 허가에 대한 요청의 승인 및 거부를 포함한다는 결정(즉, 결정 블록(1012) = "예" 및 "아니오")에 대한 응답으로, 프로세싱 디바이스는, 블록(1014)에서 웨이크 락 요청과 연관된 웨이크 락 이벤트 동안의 실행을 위해 승인된 준비 태스크들을 스케줄링할 수 있으며, 블록(1004)에서 요청된 웨이크 락과 연관된 웨이크 락 이벤트 동안 실행될 수 있는 준비 작업들의 상이한 세트를 선택할 수 있다.
[0095] 다양한 실시예들에서, 도 8에서 예시되는 방법(800), 도 9에서 예시되는 방법(900) 및 도 10에서 예시되는 방법(1000)은 협력적 방식으로 동시에 실행될 수 있다.
[0096] 다양한 실시예들(도 1-도 10을 참조하여 위에서 설명된 실시예들을 포함하지만, 이들로 제한되는 것은 아님)은 모바일 컴퓨팅 디바이스들을 포함하는 아주 다양한 컴퓨팅 시스템들로 구현될 수 있으며, 다양한 실시예들과 함께 사용하기에 적합한 모바일 컴퓨팅 디바이스들의 예가 도 11에서 예시된다. 모바일 컴퓨팅 디바이스(1100)는 터치스크린 제어기(1104) 및 내부 메모리(1106)에 커플링된 프로세서(1102)를 포함할 수 있다. 프로세서(1102)는 일반적 또는 특정 프로세싱 태스크들을 위해 지정된 하나 또는 그 초과의 멀티코어 집적 회로들일 수 있다. 내부 메모리(1106)는 휘발성 또는 비-휘발성 메모리일 수 있으며, 또한 보안 및/또는 암호화된 메모리, 또는 비보안 및/또는 비암호화된 메모리, 또는 이들의 임의의 조합일 수 있다. 활용될 수 있는 메모리 타입들의 예들은 DDR, LPDDR, GDDR, WIDEIO, RAM, SRAM, DRAM, P-RAM, R-RAM, M-RAM, STT-RAM 및 임베디드 DRAM을 포함하지만, 이들로 제한되는 것은 아니다. 터치스크린 제어기(1104) 및 프로세서(1102)는 또한, 저항-감지 터치스크린(resistive-sensing touchscreen), 용량-감지 터치스크린(capacitive-sensing touchscreen), 적외선 감지 터치스크린(infrared sensing touchscreen) 등과 같은 터치스크린 패널(1112)에 커플링될 수 있다. 부가적으로, 컴퓨팅 디바이스(1100)의 디스플레이는 터치 스크린 능력을 가질 필요가 없다.
[0097] 모바일 컴퓨팅 디바이스(1100)는, 서로 그리고/또는 프로세서(1102)에 커플링된, 통신들을 전송 및 수신하기 위한 하나 또는 그 초과의 라디오 신호 트랜시버들(1108)(예컨대, Peanut, Bluetooth, Zigbee, Wi-Fi, RF 라디오) 및 안테나들(1110)을 가질 수 있다. 트랜시버들(1108) 및 안테나들(1110)은 다양한 무선 송신 프로토콜 스택(wireless transmission protocol stack)들 및 인터페이스들을 구현하기 위해 위에서-언급된 회로와 함께 사용될 수 있다. 모바일 컴퓨팅 디바이스(1100)는, 셀룰러 네트워크를 통한 통신을 가능하게 하고 프로세서에 커플링된 셀룰러 네트워크 무선 모뎀 칩(1116)을 포함할 수 있다.
[0098] 모바일 컴퓨팅 디바이스(1100)는 프로세서(1102)에 커플링된 주변 디바이스 연결 인터페이스(1118)를 포함할 수 있다. 주변 디바이스 연결 인터페이스(1118)는 하나의 타입의 연결을 수용하도록 단독으로 구성될 수 있거나, 또는 USB(Universal Serial Bus), FireWire, Thunderbolt, 또는 PCIe와 같은, 공통인 또는 전용인, 다양한 타입들의 물리적 및 통신 연결들을 수용하도록 구성될 수 있다. 주변 디바이스 연결 인터페이스(1118)는 또한, 유사하게 구성된 주변 디바이스 연결 포트(도시되지 않음)에 커플링될 수 있다.
[0099] 모바일 컴퓨팅 디바이스(1100)는 또한, 오디오 출력들을 제공하기 위한 스피커들(1114)을 포함할 수 있다. 모바일 컴퓨팅 디바이스(1100)는 또한, 본원에서 설명되는 컴포넌트들 전부 또는 그 일부를 포함하기 위한, 플라스틱, 금속, 또는 재료들의 조합으로 구성된 하우징(1120)을 포함할 수 있다. 모바일 컴퓨팅 디바이스(1100)는 1회용 또는 재충전가능한 배터리와 같이, 프로세서(1102)에 커플링된 전원(1122)을 포함할 수 있다. 재충전가능한 배터리는 또한, 모바일 컴퓨팅 디바이스(1100) 외부의 소스로부터 충전 전류를 수신하기 위해 주변 디바이스 연결 포트에 커플링될 수 있다. 모바일 컴퓨팅 디바이스(1100)는 또한, 사용자 입력들을 수신하기 위한 물리적 버튼(1124)을 포함할 수 있다. 모바일 컴퓨팅 디바이스(1100)는 또한, 모바일 컴퓨팅 디바이스(1100)를 턴 온 및 턴 오프하기 위한 전력 버튼(1126)을 포함할 수 있다.
[0100] 다양한 실시예들(도 1-도 10을 참조하여 위에서 설명된 실시예들을 포함하지만, 이들로 제한되는 것은 아님)은 랩탑 컴퓨터(1200)를 포함하는 아주 다양한 컴퓨팅 시스템들로 구현될 수 있으며, 이들의 예가 도 12에서 예시된다. 다수의 랩탑 컴퓨터들은, 컴퓨터의 포인팅 디바이스로서의 역할을 하고, 따라서, 위에서 설명된 그리고 터치 스크린 디스플레이가 장착된 컴퓨팅 디바이스들 상에서 구현된 것들과 유사한 드래그(drag), 스크롤(scroll) 및 플릭(flick) 제스처들을 수신할 수 있는 터치패드 터치 표면(1217)을 포함한다. 랩탑 컴퓨터(1200)는 통상적으로, 휘발성 메모리(1212) 및 대용량 비휘발성 메모리, 이를테면, 플래시 메모리의 디스크 드라이브(1213)에 커플링된 프로세서(1211)를 포함할 것이다. 부가적으로, 컴퓨터(1200)는, 프로세서(1211)에 커플링된 셀룰러 전화 트랜시버(1216) 및/또는 무선 데이터 링크에 연결될 수 있는, 전자기 복사를 전송 및 수신하기 위한 하나 또는 그 초과의 안테나(1208)를 가질 수 있다. 컴퓨터(1200)는 또한, 프로세서(1211)에 커플링된 플로피 디스크(floppy disc) 드라이브(1214) 및 CD(compact disc) 드라이브(1215)를 포함할 수 있다. 노트북 구성에서, 컴퓨터 하우징은 프로세서(1211)에 모두 커플링된 터치패드(1217), 키보드(1218) 및 디스플레이(1219)를 포함한다. 컴퓨팅 디바이스의 다른 구성들은 다양한 실시예들과 함께 또한 사용될 수 있는, 잘 알려진 바와 같이 (예컨대, USB 입력을 통해) 프로세서에 커플링된 컴퓨터 마우스 또는 트랙볼(trackball)을 포함할 수 있다.
[0101] 다양한 실시예들(도 1-도 10을 참조하여 위에서 설명된 실시예들을 포함하지만, 이들로 제한되는 것은 아님)은 또한, 고정 컴퓨팅 시스템들, 이를테면, 다양한 상업적으로 입수가능한 서버들 중 임의의 것으로 구현될 수 있다. 예시적 서버(1300)는 도 13에서 예시된다. 그러한 서버(1300)는 통상적으로, 휘발성 메모리(1302) 및 대용량 비휘발성 메모리, 이를테면, 디스크 드라이브(1304)에 커플링된 하나 또는 그 초과의 멀티-코어 프로세서 어셈블리들(1301)을 포함한다. 도 13에서 예시되는 바와 같이, 멀티-코어 프로세서 어셈블리들(1301)은 이들을 어셈블리의 랙(rack)들 내로 삽입함으로써 서버(1300)에 부가될 수 있다. 서버(1300)는 또한, 프로세서(1301)에 커플링된 플로피 디스크 드라이브, CD(compact disc) 또는 DVD(digital versatile disc) 디스크 드라이브(1306)를 포함할 수 있다. 서버(1300)는 또한, 네트워크(1305), 이를테면, 다른 브로드캐스트 시스템 컴퓨터들 및 서버들에 커플링된 로컬 영역 네트워크, 인터넷, 공중 교환 전화 네트워크, 및/또는 셀룰러 데이터 네트워크(예컨대, CDMA, TDMA, GSM, PCS, 3G, 4G, LTE 또는 임의의 다른 타입의 셀룰러 데이터 네트워크)와의 네트워크 인터페이스 연결들을 설정하기 위한 멀티-코어 프로세서 어셈블리들(1301)에 커플링된 네트워크 액세스 포트들(1303)을 포함할 수 있다.
[0102] 다양한 실시예들의 동작들을 수행하기 위해 프로그래밍가능한 프로세서 상에서의 실행을 위한 컴퓨터 프로그램 코드 또는 "프로그램 코드"는 고급 프로그래밍 언어, 이를테면, C, C++, C#, Smalltalk, Java, JavaScript, Visual Basic, Structured Query Language(예컨대, Transact-SQL), Perl, 또는 다양한 다른 프로그래밍 언어들로 기록될 수 있다. 본 출원에서 사용되는 바와 같은 컴퓨터 판독가능한 저장 매체 상에 저장된 프로그램 코드 또는 프로그램들은 포맷이 프로세서에 의해 이해가능한 머신 언어 코드(이를테면, 오브젝트 코드)를 지칭할 수 있다.
[0103] 위의 방법 설명들 및 프로세스 흐름 다이어그램들은 단지 예시적인 예들로서만 제공되며, 다양한 실시예들의 동작들이 제시된 순서로 수행되어야 하는 것을 요구하거나 또는 내포하도록 의도되는 것이 아니다. 당업자에 의해 인식되는 바와 같이, 위의 실시예들에서의 동작들의 순서는 임의의 순서로 수행될 수 있다. "그 후", "그 다음", "다음으로" 등과 같은 단어들은 동작들의 순서를 제한하도록 의도되는 것이 아니고; 이러한 단어들은 단순히 방법들의 설명을 통해 독자를 안내하기 위해 사용된다. 추가로, 예컨대, 단수 표현들을 사용하는 단수의 청구항 엘리먼트들에 대한 임의의 참조는 엘리먼트를 단수로 제한하는 것으로 해석되지 않아야 한다. 다양한 실시예들과 관련하여 설명되는 다양한 예시적 논리 블록들, 모듈들, 회로들, 및 알고리즘 동작들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합들로서 구현될 수 있다. 하드웨어 및 소프트웨어의 이러한 상호 교환가능성을 명확하게 예시하기 위해, 다양한 예시적 컴포넌트들, 블록들, 모듈들, 회로들, 및 동작들은 일반적으로 그들의 기능성의 측면에서 위에서 설명되었다. 그러한 기능성이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지는 전체 시스템 상에 부과되는 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자들은 설명되는 기능성을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 그러한 구현 판정들이 청구항들의 범위로부터의 이탈을 야기하는 것으로 해석되지 않아야 한다.
[0104] 본원에서 개시되는 실시예들과 관련하여 설명되는 다양한 예시적 로직들, 논리 블록들, 모듈들, 및 회로들을 구현하기 위해 사용되는 하드웨어는, 범용 프로세서, DSP(digital signal processor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 또는 다른 프로그래밍가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 본원에서 설명되는 기능들을 수행하도록 설계되는 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신(state machine)일 수 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예컨대, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 또는 그 초과의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수 있다. 대안적으로, 일부 동작들 또는 방법들은 주어진 기능에 특정한 회로에 의해 수행될 수 있다.
[0105] 하나 또는 그 초과의 실시예들에서, 설명되는 기능들이 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 비-일시적 컴퓨터-판독가능한 매체 또는 비-일시적 프로세서-판독가능한 매체 상에서 하나 또는 그 초과의 명령들 또는 코드로서 저장될 수 있다. 본원에서 개시되는 방법 또는 알고리즘의 동작들은 비-일시적 컴퓨터-판독가능한 또는 프로세서-판독가능한 저장 매체 상에 상주할 수 있는 프로세서-실행가능한 소프트웨어 모듈로 구현될 수 있다. 비-일시적 컴퓨터-판독가능한 또는 프로세서-판독가능한 저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수 있는 임의의 저장 매체들일 수 있다. 제한이 아닌 예로서, 그러한 비-일시적 컴퓨터-판독가능한 또는 프로세서-판독가능한 매체들은 RAM, ROM, EEPROM, FLASH 메모리, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 희망하는 프로그램 코드를 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본원에서 사용되는 디스크(disk 및 disc)는 CD(compact disc), 레이저 디스크(disc), 광학 디스크(disc), DVD(digital versatile disc), 플로피 디스크(disk), 및 블루-레이 디스크(disc)를 포함하며, 여기서 디스크(disk)들은 통상적으로 데이터를 자기적으로 재생하는 반면, 디스크(disc)들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 위의 조합들은 또한, 비-일시적 컴퓨터-판독가능한 그리고 프로세서-판독가능한 매체들의 범위 내에 포함된다. 부가적으로, 방법 또는 알고리즘의 동작들은, 컴퓨터 프로그램 제품에 포함될 수 있는 비-일시적 프로세서-판독가능한 매체 및/또는 컴퓨터-판독가능한 매체 상에 코드들 및/또는 명령들 중 하나 또는 임의의 조합 또는 세트로서 상주할 수 있다.
[0106] 개시되는 실시예들의 이전 설명은 임의의 당업자가 청구항들을 실시하거나 또는 사용하는 것을 가능하게 하도록 제공된다. 이 실시예들에 대한 다양한 수정들은 당업자들에게 자명할 것이고, 본원에서 정의되는 일반적 원리들은 청구항들의 범위로부터 벗어나지 않으면서 다른 실시예들 및 구현들에 적용될 수 있다. 따라서, 본 개시내용은 본원에서 설명되는 실시예들 및 구현들로 제한되도록 의도되는 것이 아니라, 다음의 청구항들 및 본원에서 개시되는 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위를 따를 것이다.

Claims (30)

  1. 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하는 방법으로서,
    웨이크 락 프로파일러(wake lock profiler)가, 애플리케이션으로부터 웨이크 락 요청을 수신하는 단계;
    상기 웨이크 락 프로파일러가, 상기 웨이크 락 요청과 연관된 웨이크 락 이벤트의 웨이크 락 정보를 포착하는 단계 ― 상기 웨이크 락 정보는 상기 웨이크 락 이벤트의 듀레이션에 관한 웨이크 락 시간 파라미터를 포함함 ― ;
    상기 웨이크 락 프로파일러가, 상기 웨이크 락 시간 파라미터를 포함하는 힌트를 전송하는 단계;
    스케줄러가 상기 힌트를 수신하는 단계;
    상기 스케줄러가, 상기 웨이크 락 이벤트 동안 제1 준비 작업이 실행될 수 있는지 여부를 결정하는 단계; 및
    상기 스케줄러가, 상기 웨이크 락 이벤트 동안 상기 제1 준비 작업이 실행될 수 있다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 단계를 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하는 방법.
  2. 제1 항에 있어서,
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청은 상기 제1 준비 작업에 대한 프로세서 사용량의 추정치를 포함하고,
    상기 방법은,
    상기 웨이크 락 프로파일러가, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 수신하는 단계;
    상기 웨이크 락 프로파일러가, 상기 제1 준비 작업을 포함하는 작업량(workload)이 총 프로세서 사용량 임계치를 초과하는지 여부를 결정하는 단계;
    상기 웨이크 락 프로파일러가, 상기 작업량이 상기 총 프로세서 사용량 임계치를 초과한다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 거부를 전송하는 단계; 및
    상기 웨이크 락 프로파일러가, 상기 작업량이 상기 총 프로세서 사용량 임계치를 초과하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 승인을 전송하는 단계를 더 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하는 방법.
  3. 제2 항에 있어서,
    상기 스케줄러가, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 거부를 수신하는 단계;
    상기 스케줄러가, 상기 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있는지 여부를 결정하는 단계;
    상기 스케줄러가, 상기 웨이크 락 이벤트 동안 상기 제2 준비 작업이 실행될 수 있다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 단계;
    상기 스케줄러가, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 승인을 수신하는 단계; 및
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하는 단계를 더 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하는 방법.
  4. 제1 항에 있어서,
    상기 스케줄러가, 상기 제1 준비 작업이 프로세서 사용량 임계치를 초과하는지 여부를 결정하는 단계 ― 상기 웨이크 락 이벤트 동안 상기 제1 준비 작업이 실행될 수 있다는 결정에 대한 응답으로 그리고 상기 제1 준비 작업이 상기 프로세서 사용량 임계치를 초과하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송함 ― ; 및
    상기 스케줄러가, 상기 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있는지 여부를 결정하는 단계를 더 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하는 방법.
  5. 제1 항에 있어서,
    상기 웨이크 락 프로파일러가, 상기 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하는지 여부를 결정하는 단계;
    상기 웨이크 락 프로파일러가, 상기 웨이크 락 정보가 상기 웨이크 락 시간 파라미터를 포함하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트에 대한 웨이크 락 듀레이션 추정치를 계산하는 단계; 및
    상기 웨이크 락 프로파일러가, 상기 웨이크 락 듀레이션 추정치를 저장하는 단계를 더 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하는 방법.
  6. 제5 항에 있어서,
    상기 웨이크 락 듀레이션 추정치를 저장하는 단계는,
    상기 웨이크 락 듀레이션 추정치를 상기 웨이크 락 요청과 연관된 상기 웨이크 락 이벤트의 웨이크 락 식별자(ID)와 상관시키는 단계; 및
    대응하는 웨이크 락 ID를 갖는 웨이크 락 정보 데이터 구조에 상기 웨이크 락 듀레이션 추정치를 저장하는 단계를 포함하고,
    상기 웨이크 락 정보를 포착하는 단계는 상기 웨이크 락 정보 데이터 구조로부터 상기 웨이크 락 듀레이션 추정치를 리트리브(retrieve)하는 단계를 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하는 방법.
  7. 제5 항에 있어서,
    상기 웨이크 락 이벤트에 대한 상기 웨이크 락 듀레이션 추정치를 계산하는 단계는 상기 웨이크 락 이벤트에 대한 복수의 웨이크 락 듀레이션들을 사용하여 상기 웨이크 락 이벤트에 대한 상기 웨이크 락 듀레이션 추정치를 계산하는 단계를 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하는 방법.
  8. 제7 항에 있어서,
    상기 복수의 웨이크 락 듀레이션들은 복수의 웨이크 락 듀레이션 추정치들, 복수의 웨이크 락 듀레이션 관측치들, 또는 복수의 웨이크 락 추정치들 및 웨이크 락 관측치들 중 하나를 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하는 방법.
  9. 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템으로서,
    애플리케이션으로부터 웨이크 락 요청을 수신하는 동작;
    상기 웨이크 락 요청과 연관된 웨이크 락 이벤트의 웨이크 락 정보를 포착하는 동작 ― 상기 웨이크 락 정보는 상기 웨이크 락 이벤트의 듀레이션에 관한 웨이크 락 시간 파라미터를 포함함 ― ;
    상기 웨이크 락 시간 파라미터를 포함하는 힌트를 전송하는 동작
    을 포함하는 동작들을 수행하도록 구성된 웨이크 락 프로파일러; 및
    상기 웨이크 락 프로파일러에 통신가능하게 연결된 스케줄러를 포함하고,
    상기 스케줄러는,
    상기 힌트를 수신하는 동작;
    상기 웨이크 락 이벤트 동안 제1 준비 작업이 실행될 수 있는지 여부를 결정하는 동작; 및
    상기 웨이크 락 이벤트 동안 상기 제1 준비 작업이 실행될 수 있다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 동작
    을 포함하는 동작들을 수행하도록 구성되는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  10. 제9 항에 있어서,
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청은 상기 제1 준비 작업에 대한 프로세서 사용량의 추정치를 포함하고,
    상기 웨이크 락 프로파일러는,
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 수신하는 동작;
    상기 제1 준비 작업을 포함하는 작업량이 총 프로세서 사용량 임계치를 초과하는지 여부를 결정하는 동작;
    상기 작업량이 상기 총 프로세서 사용량 임계치를 초과한다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 거부를 전송하는 동작; 및
    상기 작업량이 상기 총 프로세서 사용량 임계치를 초과하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 승인을 전송하는 동작을 더 포함하는 동작들을 수행하도록 구성되는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  11. 제10 항에 있어서,
    상기 스케줄러는,
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 거부를 수신하는 동작;
    상기 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있는지 여부를 결정하는 동작;
    상기 웨이크 락 이벤트 동안 상기 제2 준비 작업이 실행될 수 있다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 동작;
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 승인을 수신하는 동작; 및
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하는 동작을 더 포함하는 동작들을 수행하도록 구성되는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  12. 제9 항에 있어서,
    상기 스케줄러는,
    상기 제1 준비 작업이 프로세서 사용량 임계치를 초과하는지 여부를 결정하는 동작 ― 상기 웨이크 락 이벤트 동안 상기 제1 준비 작업이 실행될 수 있다는 결정에 대한 응답으로 그리고 상기 제1 준비 작업이 상기 프로세서 사용량 임계치를 초과하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송함 ― ; 및
    상기 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있는지 여부를 결정하는 동작을 더 포함하는 동작들을 수행하도록 구성되는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  13. 제9 항에 있어서,
    상기 웨이크 락 프로파일러는,
    상기 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하는지 여부를 결정하는 동작;
    상기 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트에 대한 웨이크 락 듀레이션 추정치를 계산하는 동작; 및
    상기 웨이크 락 듀레이션 추정치를 저장하는 동작을 더 포함하는 동작들을 수행하도록 구성되는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  14. 제13 항에 있어서,
    상기 웨이크 락 프로파일러는,
    상기 웨이크 락 듀레이션 추정치를 저장하는 동작이,
    상기 웨이크 락 듀레이션 추정치를 상기 웨이크 락 요청과 연관된 상기 웨이크 락 이벤트의 웨이크 락 식별자(ID)와 상관시키는 동작; 및
    대응하는 웨이크 락 ID를 갖는 웨이크 락 정보 데이터 구조에 상기 웨이크 락 듀레이션 추정치를 저장하는 동작을 포함하도록, 그리고
    상기 웨이크 락 정보를 포착하는 동작이 상기 웨이크 락 정보 데이터 구조로부터 상기 웨이크 락 듀레이션 추정치를 리트리브하는 동작을 포함하도록, 동작들을 수행하도록 구성되는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  15. 제13 항에 있어서,
    상기 웨이크 락 프로파일러는, 상기 웨이크 락 이벤트에 대한 상기 웨이크 락 듀레이션 추정치를 계산하는 동작이 상기 웨이크 락 이벤트에 대한 복수의 웨이크 락 듀레이션들을 사용하여 상기 웨이크 락 이벤트에 대한 상기 웨이크 락 듀레이션 추정치를 계산하는 동작을 포함하도록, 동작들을 수행하도록 구성되는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  16. 제15 항에 있어서,
    상기 복수의 웨이크 락 듀레이션들은 복수의 웨이크 락 듀레이션 추정치들, 복수의 웨이크 락 듀레이션 관측치들, 또는 복수의 웨이크 락 추정치들 및 웨이크 락 관측치들 중 하나를 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  17. 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템으로서,
    애플리케이션으로부터 웨이크 락 요청을 수신하기 위한 수단;
    상기 웨이크 락 요청과 연관된 웨이크 락 이벤트의 웨이크 락 정보를 포착하기 위한 수단 ― 상기 웨이크 락 정보는 상기 웨이크 락 이벤트의 듀레이션에 관한 웨이크 락 시간 파라미터를 포함함 ― ;
    상기 웨이크 락 시간 파라미터를 포함하는 힌트를 전송하기 위한 수단;
    상기 힌트를 수신하기 위한 수단;
    상기 웨이크 락 이벤트 동안 제1 준비 작업이 실행될 수 있는지 여부를 결정하기 위한 수단; 및
    상기 웨이크 락 이벤트 동안 상기 제1 준비 작업이 실행될 수 있다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하기 위한 수단을 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  18. 제17 항에 있어서,
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청은 상기 제1 준비 작업에 대한 프로세서 사용량의 추정치를 포함하고,
    상기 웨이크 락 인식 시스템은,
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 수신하기 위한 수단;
    상기 제1 준비 작업을 포함하는 작업량이 총 프로세서 사용량 임계치를 초과하는지 여부를 결정하기 위한 수단;
    상기 작업량이 상기 총 프로세서 사용량 임계치를 초과한다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 거부를 전송하기 위한 수단; 및
    상기 작업량이 상기 총 프로세서 사용량 임계치를 초과하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 승인을 전송하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  19. 제18 항에 있어서,
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 거부를 수신하기 위한 수단;
    상기 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있는지 여부를 결정하기 위한 수단;
    상기 웨이크 락 이벤트 동안 상기 제2 준비 작업이 실행될 수 있다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하기 위한 수단;
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 승인을 수신하기 위한 수단; 및
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  20. 제17 항에 있어서,
    상기 제1 준비 작업이 프로세서 사용량 임계치를 초과하는지 여부를 결정하기 위한 수단 ― 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하기 위한 수단은 상기 웨이크 락 이벤트 동안 상기 제1 준비 작업이 실행될 수 있다는 결정에 대한 응답으로 그리고 상기 제1 준비 작업이 상기 프로세서 사용량 임계치를 초과하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하기 위한 수단을 포함함 ― ; 및
    상기 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있는지 여부를 결정하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  21. 제17 항에 있어서,
    상기 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하는지 여부를 결정하기 위한 수단;
    상기 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트에 대한 웨이크 락 듀레이션 추정치를 계산하기 위한 수단; 및
    상기 웨이크 락 듀레이션 추정치를 저장하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  22. 제21 항에 있어서,
    상기 웨이크 락 듀레이션 추정치를 저장하기 위한 수단은,
    상기 웨이크 락 듀레이션 추정치를 상기 웨이크 락 요청과 연관된 상기 웨이크 락 이벤트의 웨이크 락 식별자(ID)와 상관시키기 위한 수단; 및
    대응하는 웨이크 락 ID를 갖는 웨이크 락 정보 데이터 구조에 상기 웨이크 락 듀레이션 추정치를 저장하기 위한 수단을 포함하고,
    상기 웨이크 락 정보를 포착하기 위한 수단은 상기 웨이크 락 정보 데이터 구조로부터 상기 웨이크 락 듀레이션 추정치를 리트리브하기 위한 수단을 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  23. 제21 항에 있어서,
    상기 웨이크 락 이벤트에 대한 상기 웨이크 락 듀레이션 추정치를 계산하기 위한 수단은 상기 웨이크 락 이벤트에 대한 복수의 웨이크 락 듀레이션들을 사용하여 상기 웨이크 락 이벤트에 대한 상기 웨이크 락 듀레이션 추정치를 계산하기 위한 수단을 포함하고,
    상기 복수의 웨이크 락 듀레이션들은 복수의 웨이크 락 듀레이션 추정치들, 복수의 웨이크 락 듀레이션 관측치들, 또는 복수의 웨이크 락 추정치들 및 웨이크 락 관측치들 중 하나를 포함하는, 컴퓨팅 디바이스 상에서 웨이크 락 인식 스케줄링을 구현하도록 구성된 웨이크 락 인식 시스템.
  24. 프로세서-실행가능한 명령들을 저장한 비-일시적 프로세서-판독가능한 저장 매체로서,
    상기 프로세서-실행가능한 명령들은, 컴퓨팅 디바이스의 프로세서로 하여금,
    애플리케이션으로부터 웨이크 락 요청을 수신하는 동작;
    상기 웨이크 락 요청과 연관된 웨이크 락 이벤트의 웨이크 락 정보를 포착하는 동작 ― 상기 웨이크 락 정보는 상기 웨이크 락 이벤트의 듀레이션에 관한 웨이크 락 시간 파라미터를 포함함 ― ;
    상기 웨이크 락 시간 파라미터를 포함하는 힌트를 전송하는 동작;
    상기 힌트를 수신하는 동작;
    상기 웨이크 락 이벤트 동안 제1 준비 작업이 실행될 수 있는지 여부를 결정하는 동작; 및
    상기 웨이크 락 이벤트 동안 상기 제1 준비 작업이 실행될 수 있다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 동작을 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능한 저장 매체.
  25. 제24 항에 있어서,
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청은 상기 제1 준비 작업에 대한 프로세서 사용량의 추정치를 포함하고,
    저장된 프로세서-실행가능한 명령들은, 상기 프로세서로 하여금,
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 수신하는 동작;
    상기 제1 준비 작업을 포함하는 작업량이 총 프로세서 사용량 임계치를 초과하는지 여부를 결정하는 동작;
    상기 작업량이 상기 총 프로세서 사용량 임계치를 초과한다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 거부를 전송하는 동작; 및
    상기 작업량이 상기 총 프로세서 사용량 임계치를 초과하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 승인을 전송하는 동작을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능한 저장 매체.
  26. 제25 항에 있어서,
    상기 저장된 프로세서-실행가능한 명령들은, 프로세서로 하여금,
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 거부를 수신하는 동작;
    상기 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있는지 여부를 결정하는 동작;
    상기 웨이크 락 이벤트 동안 상기 제2 준비 작업이 실행될 수 있다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 동작;
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하기 위한 허가에 대한 요청의 승인을 수신하는 동작; 및
    상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제2 준비 작업을 스케줄링하는 동작을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능한 저장 매체.
  27. 제24 항에 있어서,
    상기 저장된 프로세서-실행가능한 명령들은, 프로세서로 하여금,
    상기 제1 준비 작업이 프로세서 사용량 임계치를 초과하는지 여부를 결정하는 동작 ― 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 동작은, 상기 웨이크 락 이벤트 동안 상기 제1 준비 작업이 실행될 수 있다는 결정에 대한 응답으로 그리고 상기 제1 준비 작업이 상기 프로세서 사용량 임계치를 초과하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트 동안의 실행을 위해 상기 제1 준비 작업을 스케줄링하기 위한 허가에 대한 요청을 전송하는 동작을 포함함 ― ; 및
    상기 웨이크 락 이벤트 동안 제2 준비 작업이 실행될 수 있는지 여부를 결정하는 동작을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능한 저장 매체.
  28. 제24 항에 있어서,
    상기 저장된 프로세서-실행가능한 명령들은, 프로세서로 하여금,
    상기 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하는지 여부를 결정하는 동작;
    상기 웨이크 락 정보가 웨이크 락 시간 파라미터를 포함하지 않는다는 결정에 대한 응답으로, 상기 웨이크 락 이벤트에 대한 웨이크 락 듀레이션 추정치를 계산하는 동작; 및
    상기 웨이크 락 듀레이션 추정치를 저장하는 동작을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능한 저장 매체.
  29. 제28 항에 있어서,
    상기 저장된 프로세서-실행가능한 명령들은, 프로세서로 하여금,
    상기 웨이크 락 듀레이션 추정치를 저장하는 동작이,
    상기 웨이크 락 듀레이션 추정치를 상기 웨이크 락 요청과 연관된 상기 웨이크 락 이벤트의 웨이크 락 식별자(ID)와 상관시키는 동작; 및
    대응하는 웨이크 락 ID를 갖는 웨이크 락 정보 데이터 구조에 상기 웨이크 락 듀레이션 추정치를 저장하는 동작을 포함하도록, 그리고
    상기 웨이크 락 정보를 포착하는 동작이 상기 웨이크 락 정보 데이터 구조로부터 상기 웨이크 락 듀레이션 추정치를 리트리브하는 동작을 포함하도록, 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능한 저장 매체.
  30. 제28 항에 있어서,
    상기 저장된 프로세서-실행가능한 명령들은, 상기 프로세서로 하여금, 상기 웨이크 락 이벤트에 대한 상기 웨이크 락 듀레이션 추정치를 계산하는 동작이 상기 웨이크 락 이벤트에 대한 복수의 웨이크 락 듀레이션들을 사용하여 상기 웨이크 락 이벤트에 대한 상기 웨이크 락 듀레이션 추정치를 계산하는 동작을 포함하도록, 동작들을 수행하게 하도록 구성되고,
    상기 복수의 웨이크 락 듀레이션들은 복수의 웨이크 락 듀레이션 추정치들, 복수의 웨이크 락 듀레이션 관측치들, 또는 복수의 웨이크 락 추정치들 및 웨이크 락 관측치들 중 하나를 포함하는, 비-일시적 프로세서-판독가능한 저장 매체.
KR1020187035931A 2016-06-18 2017-05-25 모바일 디바이스들에 대한 에너지 효율성을 위한 웨이크 락 인식 시스템의 와이드 작업 스케줄링 KR20190019935A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/186,444 US10095305B2 (en) 2016-06-18 2016-06-18 Wake lock aware system wide job scheduling for energy efficiency on mobile devices
US15/186,444 2016-06-18
PCT/US2017/034497 WO2017218160A1 (en) 2016-06-18 2017-05-25 Wake lock aware system wide job scheduling for energy efficiency on mobile devices

Publications (1)

Publication Number Publication Date
KR20190019935A true KR20190019935A (ko) 2019-02-27

Family

ID=59034904

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187035931A KR20190019935A (ko) 2016-06-18 2017-05-25 모바일 디바이스들에 대한 에너지 효율성을 위한 웨이크 락 인식 시스템의 와이드 작업 스케줄링

Country Status (8)

Country Link
US (1) US10095305B2 (ko)
EP (1) EP3472684B1 (ko)
JP (1) JP2019527867A (ko)
KR (1) KR20190019935A (ko)
CN (1) CN109313478A (ko)
BR (1) BR112018075239A8 (ko)
CA (1) CA3023479A1 (ko)
WO (1) WO2017218160A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318348B2 (en) * 2016-09-23 2019-06-11 Imagination Technologies Limited Task scheduling in a GPU
GB2554392B (en) 2016-09-23 2019-10-30 Imagination Tech Ltd Task scheduling in a GPU
WO2018099538A1 (en) 2016-11-29 2018-06-07 Telefonaktiebolaget Lm Ericsson (Publ) Distribution of resources among actor instances
US11132319B2 (en) * 2018-01-12 2021-09-28 Intel Corporation Timer control for peripheral component interconnect express components implemented with thunderbolt controllers
US11026176B2 (en) * 2018-12-11 2021-06-01 Qualcomm Incorporated Performance enhancements through wakeup optimizations
CN109947484A (zh) * 2019-02-25 2019-06-28 努比亚技术有限公司 一种唤醒锁的控制方法、终端及计算机可读存储介质
CN110737324A (zh) * 2019-10-25 2020-01-31 Oppo(重庆)智能科技有限公司 调节自动熄屏时间的方法及相关产品
US20220188152A1 (en) * 2020-12-16 2022-06-16 Marvell Asia Pte Ltd System and Method for Consumerizing Cloud Computing

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8041972B2 (en) * 2006-04-04 2011-10-18 Qualcomm Incorporated Apparatus and method for setting wakeup times in a communication device based on estimated lock on time of frequency synthesizer
GB2439104A (en) 2006-06-15 2007-12-19 Symbian Software Ltd Managing power on a computing device by minimising the number of separately activated timer events such that the device is powering up less often.
US8280456B2 (en) * 2009-08-14 2012-10-02 Google Inc. Providing a user with feedback regarding power consumption in battery-operated electronic devices
CN102103523A (zh) * 2009-12-22 2011-06-22 国际商业机器公司 锁分配控制的方法和装置
US9600059B2 (en) * 2010-09-20 2017-03-21 Apple Inc. Facilitating power management in a multi-core processor
US10013511B2 (en) * 2012-04-09 2018-07-03 Purdue Research Foundation System and method for energy usage accounting in software applications
KR20130131959A (ko) * 2012-05-25 2013-12-04 삼성전자주식회사 휴대 단말기의 휴면 모드 제어 방법 및 장치
US8943252B2 (en) * 2012-08-16 2015-01-27 Microsoft Corporation Latency sensitive software interrupt and thread scheduling
CN104166542B (zh) * 2013-05-17 2018-01-05 腾讯科技(深圳)有限公司 检测应用耗电的方法和装置
US9965014B2 (en) * 2013-09-27 2018-05-08 Intel Corporation Techniques for tracing wakelock usage
JP6209042B2 (ja) 2013-09-30 2017-10-04 ルネサスエレクトロニクス株式会社 データ処理装置
US9351254B2 (en) * 2014-01-22 2016-05-24 Seven Networks, Llc Method for power saving in mobile devices by optimizing wakelocks
US9841802B2 (en) 2014-02-20 2017-12-12 Qualcomm Incorporated Wake lock management through application monitoring
US9769756B1 (en) * 2014-03-26 2017-09-19 Amazon Technologies, Inc. Wake-up quotas and statistics generation
KR102294180B1 (ko) * 2014-10-31 2021-08-27 삼성전자주식회사 전자장치 및 전자장치의 전원제어 방법
CN105183137B (zh) * 2015-09-09 2018-06-01 厦门美图移动科技有限公司 一种移动终端及其唤醒锁控制方法和控制系统
US20170160778A1 (en) * 2015-12-07 2017-06-08 Le Holdings (Beijing) Co., Ltd. Method and device for monitoring power-consuming applications, user terminal, computer program and storage medium
KR102465543B1 (ko) * 2016-02-19 2022-11-10 삼성전자 주식회사 어플리케이션 및 컴포넌트를 제어하는 방법 및 전자장치

Also Published As

Publication number Publication date
WO2017218160A1 (en) 2017-12-21
BR112018075239A8 (pt) 2023-01-31
EP3472684B1 (en) 2020-04-08
CN109313478A (zh) 2019-02-05
US20170364136A1 (en) 2017-12-21
US10095305B2 (en) 2018-10-09
EP3472684A1 (en) 2019-04-24
JP2019527867A (ja) 2019-10-03
CA3023479A1 (en) 2017-12-21
BR112018075239A2 (pt) 2019-03-12

Similar Documents

Publication Publication Date Title
EP3472684B1 (en) Wake lock aware system wide job scheduling for energy efficiency on mobile devices
US9632569B2 (en) Directed event signaling for multiprocessor systems
US10977092B2 (en) Method for efficient task scheduling in the presence of conflicts
US10628321B2 (en) Progressive flush of cache memory
US10459517B2 (en) System and methods for scheduling software tasks based on central processing unit power characteristics
JP2018534676A5 (ko)
EP3497563B1 (en) Fine-grained power optimization for heterogeneous parallel constructs
JP2018511111A (ja) ビクティムキャッシュモードを向上させるためのプロセススケジューリング
WO2017222746A1 (en) Iteration synchronization construct for parallel pipelines
US9778951B2 (en) Task signaling off a critical path of execution
WO2024050741A1 (en) A method to detect game core threads
TW202414201A (zh) 偵測遊戲核心線程的方法
US10261831B2 (en) Speculative loop iteration partitioning for heterogeneous execution

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right