KR20160145116A - 토큰 버킷을 사용하는 통신들의 배터리 효율적 동기화 - Google Patents

토큰 버킷을 사용하는 통신들의 배터리 효율적 동기화 Download PDF

Info

Publication number
KR20160145116A
KR20160145116A KR1020167031614A KR20167031614A KR20160145116A KR 20160145116 A KR20160145116 A KR 20160145116A KR 1020167031614 A KR1020167031614 A KR 1020167031614A KR 20167031614 A KR20167031614 A KR 20167031614A KR 20160145116 A KR20160145116 A KR 20160145116A
Authority
KR
South Korea
Prior art keywords
email
token
token bucket
tokens
synchronization
Prior art date
Application number
KR1020167031614A
Other languages
English (en)
Other versions
KR102317693B1 (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 KR20160145116A publication Critical patent/KR20160145116A/ko
Application granted granted Critical
Publication of KR102317693B1 publication Critical patent/KR102317693B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • H04L67/325
    • 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
    • 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
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/107Computer-aided management of electronic mailing [e-mailing]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/215Flow control; Congestion control using token-bucket
    • H04L51/22
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/226Delivery according to priorities
    • H04L51/26
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/42Mailbox-related aspects, e.g. synchronisation of mailboxes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • Y02B60/144
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Resources & Organizations (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

이메일 동기화를 위한 시스템들 및 방법들은 토큰 버킷을 갖는 컴퓨팅 디바이스를 포함할 수도 있다. 토큰 버킷은 토큰들의 일시적인 저장을 허용하고, 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가한다. 디바이스는 적어도 하나의 이메일 애플리케이션에 의해 관리되고 이메일 서버에 의해 호스팅된 이메일 계정과 연관된 수신된 이메일 통신들의 빈도를 결정할 수도 있다. 결정하는 것은 토큰 버킷과 연관된 하나 이상의 특성들에 기초할 수도 있다. 결정된 빈도는 문턱 값과 비교될 수도 있다. 결정된 빈도가 문턱 값 이하일 때, 푸시 통신 채널은 이메일 서버와 확립될 수도 있고, 푸시 통신 채널은 서버 개시된(server-initiated) 이메일 푸시 통신들을 수신하기 위한 것이다. 적어도 하나의 이메일 애플리케이션은 푸시 통신 채널을 사용하여 푸시 통신들을 수신함으로써, 이메일 계정과 동기화될 수도 있다.

Description

토큰 버킷을 사용하는 통신들의 배터리 효율적 동기화{BATTERY EFFICIENT SYNCHRONIZATION OF COMMUNICATIONS USING A TOKEN BUCKET}
컴퓨팅 기술이 발전함에 따라, 점점 더 강력한 이동 디바이스들이 이용가능하게 되었다. 예를 들어, 스마트폰들이 흔하게 되었다. 이러한 디바이스들의 이동성은 이메일 관련(email-related) 기능성들 및 배터리 절감(battery-saving) 기능성들과 같은 상이한 타입들의 기능성이 개발되는 것으로 귀착되었다. 메모리 및 디스플레이들을 포함하는 이동 디바이스 칩셋들은 과거 몇 년에 비해 효율에 있어서 모두 상당히 개선되었다. 그러나, 배터리 기술은 이러한 이동 디바이스 컴포넌트(component)들의 발전을 따라 잡지 못하였다. 훨씬 더 강력한 칩셋들 및 더 대형의 스크린들로, 에너지에 대한 이동 디바이스들의 수요는 계속 증가하는 반면, 배터리 용량 성장은 뒤떨어졌다.
이동 디바이스 상에서 이메일을 사용하는 것은 스마트폰을 사용하는 것과 지금은 동의어이다. 사용자들은 이메일들이 서버 상에 도달하자마자 자신의 이동 디바이스들 상에서 그 이메일들을 수신하는 것을 좋아한다. 이메일 관련 기능성들은 이동 디바이스 배터리 전력에 대한 주요한 전력 유출처(drain)들 중 하나이다. 이동 디바이스의 수명에 걸쳐, 이메일을 동기화하는 것은 지속적으로 배터리의 가장 큰 애플리케이션 기반 백그라운드 소비자이다.
이메일들은 푸시 타입 통신(서버가 이메일들을 이동 디바이스로 푸시함) 및 폴(poll)(또는 페치(fetch)) 타입 통신(이동 디바이스가 서버로부터 이메일들을 요청함)을 사용하여 이메일 서버로부터 수신될 수 있다. 각각의 푸시 또는 폴 동작은 디바이스 배터리로부터 에너지를 소비한다. 단일 푸시 동작은 하나 또는 몇몇 이메일들을 푸시할 때와 거의 동일한 에너지를 소비한다. 유사하게, 단일 폴 동작은 하나 또는 몇몇 이메일들을 페치할 때와 거의 동일한 에너지를 소비한다.
폴 타입 통신에서는, 이동 디바이스가 서버로부터 주기적으로(예컨대, 매 5 분) 이메일들을 요청한다. 이와 관련하여, 폴링(polling)은 수신된 이메일들의 빈도(frequency)가 높은 사례들에서 효율적일 수 있다(예컨대, 사용자가 5 분 내에 10 개의 이메일들을 수신할 경우, 서버에 대한 단일 요청은 1 개의 이메일을 수신하는 에너지 비용(energy cost)으로 모두 10 개의 이메일들을 페치할 것임). 그러나, 폴링은 이메일들의 빈도가 낮을 때에 디바이스 배터리로부터 에너지를 유출시킨다(예컨대, 사용자가 하루에 10 개의 이메일들을 수신할 경우, 이동 디바이스는 하루에 200 회를 초과하여 이메일들에 대하여 요청할 것이지만, 기껏해야 10 개의 요청들이 이메일들을 페치할 것이고, 잔여 요청들은 이메일들을 페치하지 않을 것임).
푸시 타입 통신에서는, 이메일이 서버 상에 도달하자마자, 서버가 이메일을 이동 디바이스로 푸시한다. 이 타입의 통신들은 수신된 이메일들의 빈도가 낮을 때에 효율적일 수도 있다(예컨대, 10 개의 이메일들이 이메일 서버에 도달할 경우, 이동 디바이스는 오직 10 회 통지받을 것임). 그러나, 푸시 타입 통신들은 수신된 이메일들의 빈도가 높은 사례들에서 비효율적일 수도 있고 더 많은 배터리 전력을 유출시킬 수도 있다(예컨대, 사용자가 하루에 500 개의 이메일들을 수신할 경우, 이동 디바이스는 상당한 양의 배터리 전력을 사용하여 500 회 통지받을 것임).
이와 관련하여, 디바이스 배터리 수명은 푸시 또는 폴 타입 통신들 하에서 부정적으로 영향받을 수도 있다. 사용자가 수신하는 이메일의 양에 추가하여, 이메일 서버와의 통신의 빈도에 직접적으로 비례하는, 배터리에 대한 부정적인 영향의 정도를 결정하는 많은 변수들이 있다. 오늘날 그리고 항상 최신 이메일의 시대에는, 이메일이 이동 디바이스의 배터리에 가질 수 있는 부정적인 영향이 상당할 수 있다.
이 개요는 상세한 설명에서 이하에 추가로 설명되는 개념들의 선택을 간략화된 형태로 소개하기 위하여 제공된다. 이 개요는 청구된 발명 요지의 핵심 특징들 또는 필수적인 특징들을 식별하도록 의도된 것도 아니고, 청구된 발명 요지의 범위를 제한하기 위하여 사용되도록 의도된 것도 아니다.
하나 이상의 양태들에 따르면, 이메일 동기화를 위한 방법은 토큰 버킷(token bucket)을 갖는 컴퓨팅 디바이스를 포함할 수도 있다. 토큰 버킷은 토큰들의 일시적인 저장을 허용하고, 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가한다. 디바이스는 적어도 하나의 이메일 애플리케이션에 의해 관리되고 이메일 서버에 의해 호스팅된 이메일 계정과 연관된 수신된 이메일 통신들의 빈도를 결정할 수도 있다. 결정하는 것은 토큰 버킷과 연관된 하나 이상의 특성들에 기초할 수도 있다. 결정된 빈도는 문턱 값과 비교될 수도 있다. 결정된 빈도가 문턱 값 이하일 때, 푸시 통신 채널은 이메일 서버와 확립될 수도 있고, 푸시 통신 채널은 서버 개시된(server-initiated) 이메일 푸시 통신들을 수신하기 위한 것이다. 적어도 하나의 이메일 애플리케이션은 푸시 통신 채널을 사용하여 푸시 이메일 통신들을 수신함으로써, 이메일 계정과 동기화될 수도 있다. 결정된 빈도가 문턱 값보다 더 클 때, 푸시 통신 채널은 폐쇄될 수도 있다. 다음으로, 적어도 하나의 이메일 애플리케이션은 컴퓨팅 디바이스에 의해 개시된 이메일 풀 요청(pull request)을 사용하여 이메일 계정과 동기화될 수도 있다. 수신된 이메일들의 빈도는 (예컨대, 디바이스 또는 서버에 의해) 자동으로 모니터링될 수도 있고, 푸시와 폴(또는 페치) 사이의 전환은 빈도가 문턱 값 미만인지 또는 초과하는지 여부에 기초하여 자동으로 수행될 수도 있다.
하나 이상의 양태들에 따르면, 이메일 동기화를 위한 방법은 토큰 버킷을 갖는 컴퓨팅 디바이스를 포함할 수도 있다. 토큰 버킷은 토큰들의 일시적인 저장을 허용할 수도 있고, 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가할 수도 있다. 디바이스는 토큰들 중 적어도 하나가 토큰 버킷에서 이용가능한지 여부를 결정할 수도 있다. 토큰들 중 적어도 하나가 토큰 버킷에서 이용가능할 때, 적어도 하나의 이메일 애플리케이션을 대응하는 이메일 계정과 동기화하기 위한 요청이 생성될 수도 있다. 요청에 응답하여, 대응하는 이메일 계정으로부터의 하나 이상의 이메일 통신들은 적어도 하나의 이메일 애플리케이션을 동기화하기 위하여 수신될 수도 있다. 동기화를 위한 요청은 예를 들어, 대응하는 이메일 계정을 호스팅하는 이메일 서버와의 스케줄링된 이메일 동기화와 연관될 수도 있다.
하나 이상의 양태들에 따르면, 컴퓨터 판독가능(computer-readable) 저장 매체는 컴퓨팅 디바이스로 하여금, 이메일 동기화를 위한 방법을 수행하게 하도록 동작가능한 컴퓨터 실행가능(computer-executable) 명령들을 저장하였을 수도 있다. 방법은 컴퓨팅 디바이스에서, 토큰들의 초기 세트로 토큰 버킷을 재설정하는 것을 포함할 수도 있다. 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가할 수도 있다. 토큰들의 초기 세트는 컴퓨팅 디바이스와 연관된 하나 이상의 디바이스 사용 통계에 기초하여 결정될 수도 있다. 컴퓨팅 디바이스에 의해 개시된 이메일 풀 요청에 응답하여, 토큰 버킷과 연관된 현재의 토큰 카운트는 그것이 포지티브(positive)인 것(즉, 토큰 버킷이 비어 있지 않음)으로 검증될 수도 있다. 현재의 토큰 카운트가 포지티브일 때, 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션은 이메일 서버에서 호스팅된 이메일 계정과 동기화될 수도 있다. 다음으로, 현재의 토큰 카운트는 동기화에 기초하여 감소될 수도 있다.
하나 이상의 양태들에 따르면, 컴퓨팅 디바이스는 프로세서, 메모리, 및 토큰 버킷을 갖는 동기화 서비스를 포함할 수도 있다. 토큰 버킷은 토큰들의 일시적인 저장을 허용할 수도 있고, 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가할 수도 있다. 동기화 서비스는 토큰들의 초기 세트로 토큰 버킷을 재설정하는 것을 포함하는, 이메일 동기화를 위한 동작들을 수행하도록 구성될 수도 있다. 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션과, 이메일 서버에 의해 호스팅된 대응하는 이메일 계정과의 동기화를 허가할 수도 있다. 푸시 통신 채널은 이메일 서버와 확립될 수도 있다. 푸시 통신 채널은 (예컨대, 토큰 버킷이 비어 있지 않은 사례들에서) 서버 개시된 이메일 푸시 통신들을 수신하기 위하여 사용될 수도 있다. 동기화 서비스는 토큰들 중 적어도 하나가 토큰 버킷에서 이용가능한지 여부를 결정할 수도 있다. 토큰들 중 적어도 하나가 토큰 버킷에서 이용가능하지 않을 경우, 푸시 통신 채널은 폐쇄될 수도 있다(그리고 토큰 버킷에서 이용가능한 적어도 하나의 토큰이 있을 때, 추후에 재개방될 수도 있음).
본원에서 설명된 바와 같이, 다양한 다른 특징들 및 장점들이 희망하는 대로 기술들 내로 편입될 수 있다.
도 1은 개시물의 일 예의 실시형태에 따라, 토큰 버킷을 사용한 이메일 동기화가 구현될 수 있는 일 예의 시스템을 예시한다.
도 2는 개시물의 일 예의 실시형태에 따라, 토큰 버킷 기반 이메일 동기화와 함께 사용될 수 있는 토큰 버킷 설정 모듈의 블록도이다.
도 3은 개시물의 일 예의 실시형태에 따라, 일 예의 토큰 버킷 셋업(setup) 프로세스를 예시하는 흐름도이다.
도 4는 개시물의 일 예의 실시형태에 따라, 토큰 버킷을 사용한 일 예의 이메일 동기화 프로세스를 예시하는 흐름도이다.
도 5는 개시물의 일 예의 실시형태에 따라, 토큰 버킷과의 이메일 동기화 서비스를 사용하는 컴퓨팅 디바이스를 갖는 일 예의 시스템의 블록도이다.
도 6a 내지 도 6b는 개시물의 일 예의 실시형태에 따라, 토큰 버킷을 사용한 이메일 동기화를 위한 일 예의 프로세스들을 예시하는 흐름도이다.
도 7은 개시물의 일 예의 실시형태에 따라, 토큰 버킷을 사용한 이메일 동기화를 위한 또 다른 예의 프로세스를 예시하는 흐름도이다.
도 8은 개시물의 일 예의 실시형태에 따라, 토큰 버킷을 사용한 이메일 동기화를 위한 또 다른 예의 프로세스를 예시하는 흐름도이다.
도 9는 일부 설명된 실시형태들이 구현될 수 있는 일 예의 컴퓨팅 시스템의 도면이다.
도 10은 설명된 실시형태들, 기법들, 및 기술들이 구현될 수도 있는 적당한 클라우드 지원된(cloud-supported) 환경의 일반화된 예를 예시한다.
도 11은 본원에서 설명된 기술들과 함께 사용될 수 있는 일 예의 이동 디바이스이다.
항상 최신 이메일은 새로운 메시지(예컨대, 서버 개시된 푸시 통신들)가 있을 때에 이동 디바이스에 통지하기 위하여 이메일 서버들에 의존한다. 이 타입의 아키텍처에서, 이동 디바이스는 일정한 "청취(listening)" 상태(예컨대, 다음 통지를 대기함)에 있고, 모든 착신 통지는 디바이스 라디오(device radio)가 웨이크업(wake up)하게 한다. 이와 관련하여, 이동 디바이스는 사용자의 표준 이메일 통신들로부터 기인하거나, 악의적인 의도를 갖는 통신들(예컨대, 해킹된 이메일 계정)에 기초하여 새로운 메일 통지들이 쇄도됨으로써(예컨대, 몇 시간의 진행 동안에 분 당 2 회) 몇 일의 배터리 수명을 가지는 것으로부터 2 시간의 배터리 수명으로 신속하게 퇴화할 수 있다.
빈번하게 업데이트된 이메일로 인한 이동 디바이스들 상에서의 전력 소비의 문제는 능동적인 사용자 개입 없이 아직 성공적으로 해결되지 않았다. 하나의 해결책은, 사용자가 적절한 동기화 파라미터들을 선택할 수 있고, 시간 경과에 따른 에너지 사용량에 대해 가장 큰 영향을 가지는 파라미터가 동기화의 빈도가 되도록, 사용자 선택가능한 설정들을 제공하는 것이다. 그러나, 이 설정은 대부분의 사용자들을 위하여 충분하지 않으며, 그것은 이 설정이 예를 들어, 평일, 저녁, 야간, 및 주말 동안의 개인의 이메일 사용량에 걸쳐 통상적으로 최적이 아니기 때문이다. 그 개별적인 필요성들을 위한 적당한 설정을 결정하는 것이 어려워질 수도 있으므로, 대부분의 사용자들은 동기화 설정들을 드물게 업데이트한다.
본원에서 설명된 바와 같이, 다양한 기법들 및 해결책들은 토큰 버킷을 사용한 통신들의 배터리 효율적 동기화를 위하여 적용될 수 있고, 이것은 기존의 동기화(예컨대, 이메일 동기화)의 단점들을 개선시킨다. 더욱 구체적으로, 이메일 동기화의 토큰 버킷 기반 스로틀링(throttling)이 수행될 수도 있음으로써, 이메일 동기화를 제어하고 관리하기 위하여 사용자 친화적 경험을 제공하면서, 가장 제한된 자원(즉, 배터리 전력)으로 가장 많은 에너지를 요구하는 디바이스 애플리케이션(즉, 이메일 동기화) 중 하나를 최적화할 수도 있다. 일 예의 실시형태에서, 이메일 통신들의 빈도는 토큰 버킷(즉, 토큰 버킷 알고리즘)을 사용하여 결정될 수도 있다. 이메일 동기화는 푸시 타입과 폴 타입 동기화 사이에서 자동으로 전환함으로써 수행될 수도 있다. 예를 들어, 푸시 타입 동기화는 이메일 빈도(즉, 사용자 이메일 계정에 대한 수신된 이메일들의 빈도)가 낮을(예컨대, 미리 결정된 문턱 빈도 값 미만) 때에 사용될 수도 있고, 폴 타입 통신들은 이메일 빈도가 문턱 빈도 값을 초과할 때에 사용될 수도 있다. 이동 디바이스가 푸시와 폴 사이에서 전환하는 문턱 빈도 값은 토큰 버킷 알고리즘과 연관된 하나 이상의 파라미터들에 기초하여 결정될 수도 있다.
컴퓨팅 디바이스 이메일 동기화 서비스는 푸시 스타일 이메일 통지들 및/또는 디바이스 개시된 페치 스타일 통지들의 "피크 사용량(peak usage)"을 제한하기 위하여 토큰 버킷 알고리즘을 사용할 수도 있다. 단일 토큰은 매 단위 시간 T 당 적립(deposit)될 수도 있고, 토큰은 각각의 이메일 동기화(페치 및/또는 푸시 타입 이메일 통신들)를 위하여 사용될 수도 있고, 각각의 싱크(sync)는 다수의 전송되고 및/또는 수신된 이메일들을 포함한다. 이 접근법은 효과적으로, 이메일 기반 계정이 시간 주기 당 특정된 수의 횟수를 동기화하도록 한다. 사용되지 않은 토큰들은 수집될 수도 있고 더 이후의 시간에서의 사용을 위하여 저장될 수도 있으며, 수집될 수 있는 최대 수의 토큰들은 토큰 버킷 "크기(size)"에 종속된다. 토큰들은 재순환될 수도 있으므로, 수집은 무한하지 않다(예컨대, 전체 토큰 버킷들은 매 24 시간에 초기 설정들로 재설정될 수도 있고 재초기화될 수도 있음). 토큰들이 짧은 시구간(period of time) 동안에 너무 많은 이메일 통지들로 인해 고갈될 경우, 이메일 동기화는 토큰이 다음 단위 시간 T에 이용가능하게 될 때가지 중단될 수도 있다. 예를 들어, 토큰 카운트가 제로(zero)로 하락할 때, 이메일 동기화는 푸시 기반 접근법을 사용하는 것으로부터 폴 기반 접근법을 사용하는 것으로 전환될 수도 있다. 토큰 카운트가 비제로(non-zero)로 갈 때, 이메일 동기화는 폴 기반 접근법을 사용하는 것으로 푸시 기반 접근법으로 다시 전환될 수도 있다.
토큰 버킷은 또한, 디바이스 사용자가 토큰의 비용을 초래하지 않으면서 그 이메일을 동기화할 수 있는 "무료 싱크들"을 허용할 수도 있다. 예를 들어, 이러한 "무료 싱크"는, 디바이스 스크린이 ON으로 되고 사용자가 데이터를 위하여 디바이스를 능동적으로 사용하고 있을 때(즉, 디바이스 라디오들이 저전력 모드에 있지 않음)에 허용될 수도 있다.
본원에서 설명된 기법들이 이메일 동기화를 사용하고 있더라도, 개시물은 이와 관련하여 제한되지 않을 수도 있고, 다른 타입들의 개인 정보 관리(Personal Information Management; PIM) 데이터가 또한, 이러한 기법들을 사용하여 동기화될 수도 있다. 예를 들어, 캘린더 엔트리(calendar entry)들, 연락처 관리기들로부터의 하나 이상의 연락처 엔트리들, 웹 브라우저들 북마크(web browsers bookmark)들, 메모(note)들, 메시징 애플리케이션으로부터의 하나 이상의 메시지들 등등과 같은 다른 PIM 데이터는 또한, 본원에서 설명된 바와 같은 토큰 버킷을 사용하여 동기화될 수도 있다.
본원에서 사용된 바와 같이, 용어 "토큰 버킷"은 디바이스 운영 체제(operating system)의 일부로서 구현될 수 있거나 전용 모듈의 일부로서 코딩될 수 있는 토큰 버킷 알고리즘을 지칭한다. 이메일 동기화에 적용된 바와 같은 토큰 버킷 알고리즘의 설정들 및 사용은 이하의 본원에서 논의된다.
본원에서 사용된 바와 같이, 용어들 "클라이언트 시된 풀", "디바이스 개시된 풀", "이메일 폴", 또는 "디바이스 개시된 폴"은 페치 타입 통신을 사용한 이메일 동기화를 지칭한다. 예를 들어, 컴퓨팅 디바이스(예컨대, 또 다른 이메일 클라이언트)는 이메일 서버에 의해 호스팅된 이메일 통신들의 "풀"을 개시한다. 바꾸어 말하면, 컴퓨팅 디바이스는 (예컨대, 컴퓨팅 디바이스에서 작동되는 이메일 애플리케이션을 통해) 이메일 동기화를 개시하고, 이메일 서버에서 호스팅된 이메일 계정과 연관된 이메일들을 "페치"한다.
본원에서 사용된 바와 같이, 용어들 "서버 개시된 푸시" 또는 "이메일 푸시"는 푸시 타입 통신들을 사용한 이메일 동기화를 지칭한다. 예를 들어, 이메일 통신 채널은 컴퓨팅 디바이스에 의해 확립(그리고 제어됨)될 수도 있어서, 컴퓨팅 디바이스를 이메일 서버와 통신가능하게 결합할 수도 있다. 채널은 디바이스에 의해 활성으로 유지될 수도 있고, 서버는 이러한 이메일 통신들이 서버에 도달할 때, 서버에 의해 호스팅된 사용자 계정에서 수신된 이메일 통신들을 푸시함으로써 이메일 동기화를 개시할 수도 있다.
본원에서 사용된 바와 같이, 용어 "싱크"는 "동기화"와 동의어이고, 이메일 동기화를 지칭한다. 본원에서 사용된 바와 같이, 용어 "앱(app)"은 "애플리케이션"과 동의어이고, 컴퓨팅 디바이스에서 설치된(그리고 그 상에서 작동됨) 하나 이상의 애플리케이션들을 지칭한다.
도 1은 개시물의 일 예의 실시형태에 따라, 토큰 버킷을 사용하는 이메일 동기화가 구현될 수 있는 일 예의 시스템을 예시한다. 도 1을 참조하면, 시스템(100)은 컴퓨팅 디바이스(102) 및 이메일 서버(104)를 포함할 수도 있다. 컴퓨팅 디바이스(102)는 셀 전화, 스마트폰, 핸드헬드 컴퓨터, 개인 정보 단말(Personal Digital Assistant; PDA), 태블릿 디바이스, 데스크톱 컴퓨터, 랩톱 또는 노트북 등을 포함하는, 이동식 또는 그 반대인 다양한 컴퓨팅 디바이스들 중 임의의 것일 수 있다. 서버(104)는 컴퓨팅 디바이스(102)에 통신가능하게 결합된 전용 이메일 서버 컴퓨터를 포함하는 다양한 서버 컴퓨터들 중 임의의 것일 수도 있다. 도 1은 컴퓨팅 디바이스(102) 및 이메일 서버(104)를 위한 몇몇 컴포넌트들만을 예시하더라도, 다른 컴포넌트들은 또한, 예를 들어, 도 5에서 예시된 바와 같이 구현될 수도 있다.
컴퓨팅 디바이스(102)는, 디바이스(102)의 운영 체제의 일부, 또는 디바이스(102) 상에서 작동되는 하나 이상의 애플리케이션들(또는 앱들)의 일부일 수도 있는 동기화 서비스(107)를 포함할 수도 있다. 동기화 서비스(107)는 적당한 로직, 회로부, 인터페이스들, 및/또는 코드를 포함할 수도 있고, 디바이스(102)의 사용자와 연관되고 예컨대, 이메일 서버(104)에 의해 호스팅된 하나 이상의 사용자 이메일 계정들(134, ..., 135)과 관련하여 이메일 동기화를 수행하도록 동작가능할 수도 있다. 싱크 서비스(107)는 또한, 예를 들어, 클라이언트 개시된 풀 및/또는 서버 개시된 푸시 타입의 이메일 동기화와 관련하여 사용될 수도 있는 토큰 버킷 이메일 동기화(token bucket email synchronization; TBES) 서비스(106)를 포함할 수도 있다.
TBES 서비스(106)는 적당한 로직, 회로부, 인터페이스들, 및/또는 코드를 포함할 수도 있고, 클라이언트 개시된 풀 및/또는 서버 개시된 푸시 타입의 이메일 동기화와 관련하여 토큰 버킷 알고리즘을 구현하도록 동작가능할 수도 있다. 더욱 구체적으로, TBES 서비스(106)는 설정 모듈(118), 토큰 생성기(108), 토큰 버킷(110), 및 토큰 소비 제어기(112)를 포함할 수도 있다. 설정 모듈(118)은 토큰 버킷 셋업 설정들(122), 토큰 생성에 관련된 설정들(120), 및 토큰 소비에 관련된 설정들(124)과 같은, TBES 서비스(106)와 연관된 다양한 타입의 설정들을 포함할 수도 있다. 설정들(120 내지 124)은 도 2를 참조하여 이하에서 더욱 상세하게 논의된 바와 같이, 구성 입력(126)을 사용하여 구성될 수도 있다.
토큰 생성기(108)는 적당한 로직, 회로부, 인터페이스들, 및/또는 코드를 포함할 수도 있고, 토큰 버킷(110)에서의 저장을 위한 하나 이상의 토큰들(114)을 생성하도록 동작가능할 수도 있다. 예를 들어, 토큰 생성기는 주어진 크기를 갖는 토큰 버킷(110)을 생성할 수도 있고, (예컨대, 토큰 버킷 셋업 설정들(122)에 기초하여) 결정된 시간 주기에서, 새로운 토큰(예컨대, 114)을 주기적으로 생성할 수도 있고 적립할 수도 있다.
토큰 소비 제어기(112)는 적당한 로직, 회로부, 인터페이스들, 및/또는 코드를 포함할 수도 있고, 이메일 동기화들(128)이 발생할 때, 토큰 버킷(110) 내에 저장된 토큰들의 토큰 소비를 제어하도록 동작가능할 수도 있다. 예를 들어, 토큰들(116)이 소비될 때(예컨대, 소비된 토큰들의 각각은 사용자 이메일 계정들(134, ..., 135) 중 하나 이상에서의 이메일들 1, ..., N 중 임의의 하나 이상에 대한 이메일 동기화들(128) 중 대응하는 하나와 연관됨), 토큰 소비 제어기(112)는 토큰 버킷(110) 내에 저장된 토큰들의 총 수로부터 소비된 토큰들의 수를 공제(deducting)할 수도 있다. 이와 관련하여, 토큰 소비 제어기(112)는 이용가능한 토큰들의 현재의 토큰 카운트를 토큰 버킷(110) 내에 저장할 수도 있다. 추가적으로, 토큰 소비 제어기(112)는 토큰 버킷(110)에서의 이용가능한 토큰들의 현재의 카운트에 기초하여 이메일 동기화를 중단할 수도 있거나 재개할 수도 있다. 토큰 버킷(110)과 연관된 토큰들의 생성 및 소비는 토큰 생성 설정들(120) 및 토큰 소비 설정들(124)에 추가로 종속적일 수도 있다.
일 예의 클라이언트 개시된 풀 동작에서, TBES 서비스(106)는 토큰 버킷(110) 내에 적어도 하나의 토큰이 있다는 것(즉, 토큰 버킷(110)에서의 현재의 토큰 카운트가 포지티브임)을 검증할 수도 있고, 토큰 버킷(110) 내에 적어도 하나의 이용가능한 토큰이 있다는 것을 확인한 후에 이메일 동기화 요청(130)을 주기적으로 생성할 수도 있다. 다음으로, 이메일 동기화들(128)은, 토큰 버킷(110)으로부터 토큰들(116) 중 하나 이상을 소비하는 하나 이상의 이메일 통신들(예컨대, 사용자 이메일 계정(134)에서의 이메일들 중 하나 이상)을 수신함으로써 발생할 수도 있다. 예를 들어, 사용자 계정(134)에서의 이메일들 1 및 2는 (예컨대, 이전의 클라이언트 개시된 풀 후에 도달하는) 새로운 이메일들일 수도 있다. 다음 이메일 동기화 요청(130)이 이메일 서버(104)에 의해 수신된 후, 이메일들 1 및 2의 이메일 동기화(128)가 발생할 수도 있어서, 토큰들(116) 중 하나를 소비할 수도 있다(즉, 이메일 서버(104)에 의해 호스팅된 하나 이상의 이메일 계정들(134, ..., 135)과의 이메일 동기화 당 하나의 토큰이 소비됨).
일 예의 서버 개시된 푸시 동작에서, TBES 서비스(106)(또는 싱크 서비스(107))는, 서버 개시된 푸시(및/또는 클라이언트 개시된 풀) 타입 이메일 동기화 동안에 이메일들의 통신을 위하여 사용될 수도 있는 이메일 통신 채널(email communication channel; ECC)(132)을 생성할 수도 있다. TBES 서비스(106)(또는 디바이스(102) 내의 또 다른 서비스)는 ECC 제어 신호(136)를 사용하여 ECC(132)를 제어(예컨대, 폐쇄/중단 또는 개방/재확립)할 수도 있다. 예를 들어, TBES 서비스(106)(예컨대, 토큰 소비 제어기(112))는 토큰 버킷(110)이 비어 있다는 것을 검출할 수도 있고, ECC 채널(132)을 폐쇄하거나 중단하기 위하여 ECC 제어 신호(136)를 생성할 수도 있다. 이와 관련하여, 임의의 서버 개시된 푸시 통신들은 또한, ECC 채널이 이용가능하지 않을 때에 중단될 것이다. 토큰 생성기(108)가 토큰 버킷(110) 내로 적립되는 하나 이상의 새로운 토큰들(114)을 생성한 후, 토큰 소비 제어기는 현재의 토큰 카운트가 포지티브인 것(즉, 적어도 하나의 이용가능한 토큰이 있음)을 검출할 수도 있고, ECC 채널(132)의 개방 또는 재확립을 위한 새로운 ECC 제어 신호(136)를 생성할 수도 있다.
개시물의 일 예의 실시형태에 따르면, 토큰 버킷(110)에서의 토큰 카운트는 서버 개시된 푸시 또는 디바이스 개시된 풀이 이메일 동기화를 위하여 사용될 수도 있는지 여부를 결정하기 위하여 사용될 수도 있다. 예를 들어, 토큰 버킷(110)이 비어 있을 경우(즉, 버킷에서의 토큰 카운트가 0임), 푸시 또는 풀 통신들이 허용되지 않을 수도 있다. 토큰 카운트가 증가할 때(예컨대, 1이 됨), 풀은 디스에이블(disable)될 수도 있고 서버 개시된 푸시는 인에이블(enable)될 수도 있다. 서버 개시된 푸시는 토큰 버킷(110)이 다시 비워질 때에 디스에이블될 수도 있다.
도 2는 개시물의 일 예의 실시형태에 따라, 토큰 버킷 기반 이메일 동기화와 함께 사용될 수 있는 토큰 버킷 설정 모듈의 블록도이다. 도 1 내지 도 2를 참조하면, 설정 모듈(118)은 토큰 버킷 셋업 설정들(122), 토큰 생성에 관련된 설정들(120), 및 토큰 소비에 관련된 설정들(124)과 같은, TBES 서비스(106)와 연관된 다양한 타입의 설정들을 포함할 수도 있다.
토큰 버킷 셋업 설정들(122)은 초기 토큰 카운트(202), 버킷 크기(204), (예컨대, 분(minute) 인) 재충전 간격 주기(206), 및 재충전 토큰 카운트(208)를 포함할 수도 있다. 설정 값들(202 내지 208)은 모두 정수 값들일 수도 있고, 예를 들어, InitialTokenCount, BucketSize, RefilllntervallnMinutes, 및 RefillTokenCount로서 각각 지정될 수도 있다. 초기 토큰 카운트(202)는 토큰 버킷(204)의 초기화/재설정 시에 적립된 토큰들의 초기 수를 표시한다. 버킷 크기(204)는 토큰 버킷(110)이 보유할 수 있는 토큰들의 최대 수를 표시할 수도 있다. (예컨대, 분 인) 재충전 간격 주기(206)는 새로운 토큰(또는 토큰들)의 주기적인 생성을 위하여 사용된 재충전 시간 주기를 표시한다. 재충전 토큰 카운트(208)는 각각의 재충전 주기에서 생성된 토큰들의 수를 표시한다.
토큰 생성 설정들(120)은 토큰 생성기(108)에 의한 토큰들(114)의 생성과 연관된 하나 이상의 설정들(또는 이벤트들)을 특정할 수도 있다. 예를 들어, 토큰 생성 설정들(120)은 사용자 상호작용 이벤트(210), 재충전 간격 증가 이벤트(212), 및 재충전 간격 감소 이벤트(214)를 포함할 수도 있다. 사용자 상호작용 이벤트(210)는 하나 이상의 사용자 상호작용 이벤트들(예컨대, 사용자가 디바이스(102)를 ON으로 하여, 디바이스 스크린을 또한 활성화함)을 특정할 수도 있다. 토큰 생성기(108)에 의한 사용자 상호작용 이벤트(210)의 검출은 "무료 토큰"의 발행/생성으로 귀착될 수도 있다(즉, 무료 토큰의 생성이 규칙적/주기적 재충전 간격의 외부에서 발생함).
재충전 간격 증가 이벤트(212)는 재충전 간격(206)에서의 증가를 야기시킬 수도 있는 하나 이상의 이벤트들을 특정할 수도 있다. 예를 들어, 이러한 이벤트들은 오프 피크(off-peak) 시간들에서 디바이스(102)를 동작시키는 것을 포함할 수도 있다. 재충전 간격 감소 이벤트(214)는 재충전 간격(206)에서의 감소를 야기시킬 수도 있는 하나 이상의 이벤트들을 특정할 수도 있다. 예를 들어, 이러한 이벤트들은 디바이스가 충전하고 있을 때에 디바이스(102)를 사용하는 것을 포함할 수도 있다. 추가적으로, 재충전 간격(206)은 잔여 배터리 전력 또는 배터리 방전율(discharge rate), 셀룰러 신호 강도, 또는 디바이스(102)의 평균 사용과 연관된 배터리 방전 사이클에 관련된 더 많거나 더 적은 급속한 배터리 방전 사이클을 향하는 추세인 (디바이스 사용 통계(226)의 일부로서 이용가능할 수도 있는) 디바이스 사용 패턴들에 기초하여 변동될 수도 있다. 따라서, 재충전 간격(206)을 증가시키거나 감소시키기 위하여 사용된 이러한 이벤트들은 디바이스 사용 통계(226)를 사용하여 이벤트들(212 또는 214) 내에 각각 (예컨대, 자동 입력(222)을 통해 자동으로 또는 사용자 입력(220)에 기초하여) 포함될 수도 있다.
토큰 소비 설정들(124)은 토큰 버킷(110)으로부터의 토큰들의 소비와 연관된 하나 이상의 설정들(또는 이벤트들)을 특정할 수도 있다. 예를 들어, 단일 계정 소비 설정들(216)은 (예컨대, 이메일 계정들(134, ..., 135)로부터 선택된) 어느 이메일 계정이 토큰 버킷(110)과 연관되는지를 특정할 수도 있다. 단일 계정 소비 설정들(216)은 또한, 얼마나 많은 토큰들이 각각의 동기화를 위하여 소비되는지를 특정할 수도 있다. 다수 계정 소비 설정들(218)은 (예컨대, 이메일 계정들(134, ..., 135)로부터 선택된) 복수의 이메일 계정들이 토큰 버킷(110)과 연관된다는 것을 특정할 수도 있다. 이와 관련하여, 하나의 토큰 버킷(예컨대, 110)은 각각의 사용자 이메일 계정(134, ..., 135)을 위하여 사용될 수도 있거나, 하나의 토큰 버킷은 복수의 사용자 이메일 계정들 사이에서 공유될 수도 있다.
다수의 버킷들이 복수의 이메일 계정들을 위하여 사용될 경우, 각각의 버킷에 대한 토큰 카운트는 사용자 디바이스가 재부팅(reboot)되어야 할 경우에 (예컨대, 사용자 이메일 프로파일의 일부로서 이메일 서버(104)에서, 또는 디바이스 온 칩 메모리에서) 저장될 수도 있다. 추가적으로, 사용자는 이메일 동기화가 현재 비어 있는 또 다른 토큰 버킷을 사용하여 발생할 수도 있도록, 하나의 버킷으로부터 토큰들을 "대여"하도록 허용될 수도 있다. 토큰들의 이러한 공유(또는 "대여")는 자동으로, 또는 (예컨대, 사용자 입력(220)을 통한) 사용자에 의한 지정 시에 발생할 수도 있다.
구성 입력(126)은 토큰 버킷 셋업 설정들(122), 토큰 생성에 관련된 설정들(120), 및 토큰 소비에 관련된 설정들(124) 중 하나 이상을 구성/특정하기 위하여 사용될 수도 있다. 일 예의 실시형태에서, 구성 입력(126)은 사용자 입력(220)에 의해 제공될 수도 있다. 예를 들어, 하나 이상의 사용자 인터페이스들은 컴퓨팅 디바이스(102)에 의해 제공될 수도 있어서, 디바이스의 사용자가 구성 입력(126)을 기입하는 것을 가능하게 할 수도 있다. 또 다른 예의 실시형태에서, 구성 입력(126)은 예컨대, 자동 입력(222)에 의해 자동으로 제공될 수도 있다. 자동 입력(222)은 예를 들어, 디바이스 특성들(224)(예컨대, 잔여 배터리 용량, 총 배터리 용량, 배터리 방전율, 배터리 용량/잔여 수명의 백분율, 디바이스의 현재의 지오 로케이션(geo-location) 등등) 또는 디바이스 사용 통계(226)(예컨대, 사용자 상호작용 빈도, 하루의 주어진 시간 또는 일주일 중 하루 동안 수신된 이메일들의 총량, 디바이스 스크린이 ON으로 되는 주어진 시간 주기에서의 횟수 등등)에 기초할 수도 있다.
도 3은 개시물의 일 예의 실시형태에 따라, 일 예의 토큰 버킷 셋업(setup) 프로세스를 예시하는 흐름도이다. 도 1 내지 도 3을 참조하면, 일 예의 프로세스(300)는 302에서 시작할 수도 있고, 이때, 토큰 버킷(예컨대, 110)이 재설정될 수도 있다. 재설정(302) 동안, TBES 서비스(106)는 토큰 버킷(110)을 생성할 수도 있고, InitialTokenCount는 N과 동일하고(여기서, N은 0보다 더 큰 정수임), 버킷 크기는 BucketSize(0보다 더 큰 정수)와 동일하고, 토큰 재충전 간격은 RefilllntervallnMinutes와 동일하고, 토큰들의 수는 각각의 재충전 간격으로 RefillTokenCount(0보다 더 큰 정수)에 추가된다. 추가적으로, 현재의 토큰 카운트(C)는 N(초기 토큰 카운트)으로 설정될 수도 있고, 불리언 값(Boolean value) IsTokenAvailable은 TRUE(참)으로 설정될 수도 있다(즉, 토큰이 토큰 버킷(110)에서 이용가능하다는 것을 표시함).
304에서, TBES 서비스(106)는 T=0을 설정함으로써 토큰 버킷 재충전 타이머(T)를 재설정할 수도 있다. 306에서, 1 분이 경과한 후, 토큰 버킷 재충전 타이머는 증분(increment)될 수도 있다(즉, T=T+1). 308에서는, 토큰 버킷 재충전 타이머 T가 RefilllntervallnMinutes와 동일한지 여부가 결정될 수도 있다. 토큰 버킷 재충전 타이머 T가 RefilllntervallnMinutes와 동일하지 않을 경우, 프로세싱은 306에서 재개될 수도 있다. 토큰 버킷 재충전 타이머 T가 RefilllntervallnMinutes와 동일할 경우, 프로세싱은 310에서 계속될 수도 있고, 이때, 토큰 버킷(110)은 토큰들의 RefillTokenCount 수로 재설정될 수도 있다(C = C + RefillTokenCount).
312에서는, 현재의 토큰 카운트 C가 BucketSize와 동일한지 여부가 결정될 수도 있다. 현재의 토큰 카운트 C가 BucketSize와 동일하지 않을 경우, 프로세싱은 306에서 재개될 수도 있다. 현재의 토큰 카운트 C가 BucketSize와 동일할 경우, 프로세싱은 314에서 재개될 수도 있고, 이때, 재충전 타이머 T는 (토큰 버킷(110)이 그 용량/크기까지 차 있으므로) 중단될 수도 있다. 재충전 타이머의 이러한 중단은 일시적일 수도 있고, 재충전 타이머는 토큰 버킷으로부터의 토큰의 소비 시에 재개될 수도 있다. 토큰 버킷(110)은 또한, 재설정 주기(예컨대, 24 시간)와 연관될 수도 있다. 재설정 주기가 만료한 후, 토큰 버킷에서의 토큰들은 폐기될 수도 있고, 토큰 버킷(110)은 재설정될 수도 있다. 316에서는, 이러한 토큰 버킷 재설정 주기(예컨대, 토큰 버킷이 생성된 이후로 24 시간)가 만료하였는지 여부가 결정될 수도 있다. 토큰들을 소비하는 임의의 이메일 동기화 활동이 있지 않으면, 토큰 버킷(110)은 토큰 버킷 재설정 주기가 만료하였을 때가지 비활성으로 남아 있을 수도 있고, 이때, 프로세싱은 302에서 재개될 수도 있다.
도 4는 개시물의 일 예의 실시형태에 따라, 토큰 버킷을 사용한 일 예의 이메일 동기화 프로세스를 예시하는 흐름도이다. 도 1 내지 2 및 도 4 를 참조하면, 일 예의 프로세스(400)는 402에서 시작할 수도 있고, 이때, 불리언 값 IsTokenAvailable이 TRUE인지 여부(즉, 토큰 버킷(110)이 비어 있지 않은지 여부)가 결정될 수도 있다. 토큰 버킷(110)이 비어 있지 않고 IsTokenAvailable이 TRUE일 경우, 프로세싱은 416에서 계속될 수도 있다. 토큰 버킷(110)이 비어 있을 경우(즉, IsTokenAvailabe이 FALSE(거짓)임), 404에서, ECC(132)는 폐쇄/중단될 수도 있다. 414에서는, 토큰이 토큰 버킷(110)에 추가되었는지 여부가 결정될 수도 있다(즉, "무료" 토큰 또는 규칙적인 재충전 간격 동안에 추가된 토큰). 토큰이 토큰 버킷(110)에 추가된 후, 프로세싱은 단계(402)에서 재개될 수도 있다.
416에서는, 통신 채널(ECC)(132)이 개방되어 있는지가 결정될 수도 있다. 채널은 개방되어 있지 않을 경우, 417에서, ECC(132)는 재개방될 수도 있다. 406에서, 토큰 소비 제어기(112)는 이메일 동기화 동안의 사용을 위하여 토큰 버킷(110)으로부터 토큰을 페치할 수도 있다(즉, 함수 FetchToken이 호출될 수도 있고 현재의 토큰 카운트 C가 1만큼 감소될 수도 있음). 408에서는, 이메일 동기화가 발생할 수도 있다(예컨대, ECC(132)를 사용한 서버 개시된 푸시 또는 클라이언트 개시된 풀 이메일 동기화). 410에서는, 현재의 토큰 카운트 C가 0과 동일한지 여부(즉, 토큰 버킷(110)이 비어 있는지 여부)가 결정될 수도 있다. 현재의 토큰 카운트가 0이 아닐 경우, 프로세싱은 402에서 재개될 수도 있다. 현재의 토큰 카운트가 제로와 동일할 경우(즉, 노큰 버킷(110)이 비어 있음), 불리언 값 IsTokenAvailable이 FALSE로 설정될 수도 있고, 프로세싱은 402에서 계속될 수도 있다.
도 5는 개시물의 일 예의 실시형태에 따라, 토큰 버킷과의 이메일 동기화 서비스를 사용하는 컴퓨팅 디바이스를 갖는 일 예의 시스템의 블록도이다. 도 5를 참조하면, 일 예의 아키텍처(500)는 컴퓨팅 디바이스(102) 및 이메일 서버(104)를 포함할 수도 있다.
컴퓨팅 디바이스(102)는 핸드셋, 스마트폰, 태블릿, 랩톱, 및/또는 또 다른 핸드헬드 또는 휴대용 디바이스를 포함할 수도 있다. 추가적으로, 컴퓨팅 디바이스(102)는 예를 들어, 메인 프로세서(502a), 시스템 메모리(504a), 통신 서브시스템(506a), 센서류 서브시스템(508a), 입력/출력(input/output; IO) 서브시스템(510a), 운영 체제(501), 디바이스(102) 상에서 작동되는 하나 이상의 애플리케이션들(또는 앱들)(520a, 522a), TBES 서비스를 갖는 동기화 서비스(512a), 및 디스플레이(517)를 포함할 수도 있다.
TBES 서비스를 포함하는 동기화 서비스(512a)는 위에서 설명된 (TBES 서비스(106)를 갖는) 동기화 서비스(107)의 기능성들과 유사한 기능성들을 가질 수도 있다. 추가적으로, (TBES 서비스를 포함하는) 동기화 서비스(512a)는 (예컨대, TBES 코드(503)를 사용하여) 운영 체제(501)의 일부로서 구현될 수도 있다. 이메일 애플리케이션(예컨대, 520a)은 본원에서 개시된 이메일 동기화 기능성들을 수행할 목적들을 위한 이메일 클라이언트를 구현하기 위하여 사용될 수도 있다.
메인 프로세서(502a)는, 데이터, 및/또는 컴퓨팅 디바이스(102)의 제어 및/또는 관리 동작들, 및/또는 동기화 서비스(512a)와 관련하여 그 안에서 수행된 태스크들 및/또는 애플리케이션들과, 본원에서 설명된 연관된 토큰 버킷 이메일 동기화 기능성들을 프로세싱하도록 동작가능할 수도 있는 적당한 로직, 회로부, 인터페이스들, 및/또는 코드를 포함할 수도 있다. 이와 관련하여, 메인 프로세서(502a)는 예를 들어, 하나 이상의 제어 신호들을 사용함으로써, 컴퓨팅 디바이스(102)의 다양한 컴포넌트들 및/또는 서브시스템들의 동작들을 구성하고 및/또는 제어하도록 동작가능할 수도 있다. 메인 프로세서(502a)는 예를 들어, 시스템 메모리(504a) 내에 저장될 수도 있는 애플리케이션들(예컨대, 520a, ..., 522a), 프로그램들 및/또는 코드의 작동 및/또는 실행을 가능하게 한다. 일부 사례들에서, 컴퓨팅 디바이스(102) 상에서 작동되고 및/또는 실행되는 애플리케이션들(520a, ..., 522a) 중 하나 이상은 디스플레이(517)를 통해 렌더링될 수도 있는 비디오 컨텐츠를 생성하고 및/또는 업데이트할 수도 있다. 대안적으로, 하나 이상의 전용 애플리케이션 프로세서들은 컴퓨팅 디바이스(102)에서 애플리케이션들(또는 프로그램들)(예컨대, 애플리케이션들(520a, ..., 522a) 중 하나 이상)을 작동시키고 및/또는 실행하기 위하여 사용될 수도 있다.
시스템 메모리(504a)는, 사용될 수도 있고, 소비될 수도 있고, 및/또는 프로세싱될 수도 있는 데이터, 코드 및/또는 다른 정보의 영구적 및/또는 비영구적 저장, 버퍼링, 및/또는 페치를 가능하게 할 수도 있는 적당한 로직, 회로부, 인터페이스들, 및/또는 코드를 포함할 수도 있다. 이와 관련하여, 시스템 메모리(504a)는 예를 들어, 판독 전용 메모리(read-only memory; ROM), 랜덤 액세스 메모리(random access memory; RAM), 플래시 메모리(Flash memory), 솔리드 스테이트 드라이브(solid-state drive; SSD), 및/또는 필드 프로그래밍가능 게이트 어레이(field-programmable gate array; FPGA)를 포함하는 상이한 메모리 기술들을 포함할 수도 있다. 시스템 메모리(504a)는 예를 들어, 소프트웨어 및/또는 펌웨어(예컨대, 운영 체제(501) 및/또는 애플리케이션들(520a, ..., 522a) 중 하나 이상)를 포함하는, 파라미터들 및/또는 코드를 포함할 수도 있는 구성 데이터를 저장할 수도 있다.
통신 서브시스템(506a)은 예컨대, 하나 이상의 유선 및/또는 무선 접속들(514)을 통해, 컴퓨팅 디바이스(102)로부터 및/또는 컴퓨팅 디바이스(102)로 데이터를 통신하도록 동작가능한 적당한 로직, 회로부, 인터페이스들, 및/또는 코드를 포함할 수도 있다. 통신 서브시스템(506a)은 하나 이상의 유선 프로토콜들(예컨대, 이더넷(Ethernet) 표준들, MOCA 등) 및/또는 무선 프로토콜들 또는 인터페이스들(예컨대, CDMA, WCDMA, TDMA, GSM, GPRS, UMTS, EDGE, EGPRS, OFDM, TD-SCDMA, HSDPA, LTE, WiMAX, WiFi, 블루투스(Bluetooth), 및/또는 임의의 다른 이용가능한 무선 프로토콜/인터페이스)을 지원하도록 구성될 수도 있어서, 컴퓨팅 디바이스(102)로 및/또는 컴퓨팅 디바이스(102)로부터의 신호들의 송신 및/또는 수신, 및/또는 적용가능한 유선 또는 무선 프로토콜들에 따른 송신되거나 수신된 신호들의 프로세싱을 용이하게 할 수도 있다. 이와 관련하여, 신호 프로세싱 동작들은 필터링, 증폭, 아날로그 대 디지털 변환 및/또는 디지털 대 아날로그 변환, 기저대역 신호들의 상향 변환/하향 변환, 인코딩/디코딩, 암호화/복호화, 및/또는 변조/복조를 포함할 수도 있다.
센서류 서브시스템(508a)은 대응하는 컴퓨팅 디바이스(102), 그 사용자(들), 및/또는 그 환경에 관련될 수도 있는 센서류 정보를 획득하고 및/또는 생성하기 위한 적당한 로직, 회로부, 인터페이스들, 및/또는 코드를 포함할 수도 있다. 예를 들어, 센서류 서브시스템들(508a)은 위치 또는 로케이션 센서들(예컨대, GPS 또는 다른 GNSS 기반 센서들), 주변 상태들(예컨대, 온도, 습도, 또는 광) 센서들, 및/또는 모션 관련 센서들(예컨대, 가속도계, 자이로스코프(gyroscope), 보수계(pedometer)들, 및/또는 고도계(altimeter)들)을 포함할 수도 있다.
I/O 서브시스템(510a)은, 컴퓨팅 디바이스(102)와의 사용자 상호작용들을 가능하게 하기 위한 적당한 로직, 회로부, 인터페이스들, 및/또는 코드를 포함할 수도 있어서, 사용자(들)로부터 입력을 획득하는 것 및/또는 출력을 사용자(들)에게 제공하는 것을 가능하게 할 수도 있다. I/O 서브시스템들(510a)은 예를 들어, 비디오, 오디오, 및/또는 텍스트를 포함하는 다양한 타입들의 입력들 및/또는 출력들을 지원할 수도 있다. 이와 관련하여, 컴퓨팅 디바이스(102)에 외부에 있거나 그 내부에 통합된 전용 I/O 디바이스들 및/또는 컴포넌트들은 (예컨대, 사용자 입력(220)을 수신하기 위한) I/O 서브시스템(510a)의 동작들 동안에 데이터를 입력하고 및/또는 출력하기 위하여 사용될 수도 있다. 예시적인 I/O 디바이스들은 하나 이상의 내장된 카메라들(예컨대, 전방 대면 및/또는 후방 대면 카메라), 하나 이상의 디스플레이들, 마우스들, 키보드들, 터치스크린들, 음성 입력 인터페이스들, 및 다른 입력/출력 인터페이스들 또는 디바이스들을 포함할 수도 있다. 비디오 출력들에 대하여, I/O 서브시스템(510a)은 비디오 컨텐츠, 그래픽, 및/또는 텍스트 데이터를 생성하고 및/또는 프로세싱하고, 및/또는 예를 들어, 디스플레이(517)를 통해, 디스플레이를 위한 것에 기초하여 비디오 프레임들을 생성하도록 각각 동작가능할 수도 있다.
디스플레이(517)는 I/O 서브시스템(510a)을 통해 취급되고 및/또는 프로세싱될 수도 있는 비디오 컨텐츠를 디스플레이하는 것을 가능하게 할 수도 있는 적당한 로직, 회로부, 인터페이스들, 및/또는 코드들을 포함할 수도 있다.
이메일 서버(104)는 또한, 컴퓨팅 디바이스(102)에서의 대응하는 모듈들의 상기 설명된 기능성들과 유사한 기능성들을 가질 수도 있는 메인 프로세서(502b), 시스템 메모리(504b), 통신 서브시스템(506b), 센서류 서브시스템(508b), 입력/출력(I/O) 서브시스템(510b), 및 운영 체제(515)를 포함할 수도 있다.
TBES 기능성들을 갖는 동기화 서비스가 컴퓨팅 디바이스(즉, 이메일 클라이언트)에서 구현되는 것으로서 설명되더라도, 개시물은 이와 관련하여 제한되지 않을 수도 있다. 개시물의 일 예의 실시형태에 따르면, TBES 기능성들을 갖는 동기화 서비스는 또한, 이메일 서버(104)의 일부로서 (예컨대, 512b로서) 구현될 수도 있다. 추가적으로, 이메일 서버(104)는 또한, 본원에서 설명된 TBES 기능성들과 관련하여 이메일 동기화를 위하여 사용될 수도 있는 하나 이상의 사용자 이메일 계정들(513a, ... , 513n)을 구현할 수도 있다.
도 6a 내지 도 6b는 개시물의 일 예의 실시형태에 따라, 토큰 버킷을 사용한 이메일 동기화를 위한 일 예의 프로세스들을 예시하는 흐름도들이다.
도 1 내지 도 2, 도 5, 및 도 6a를 참조하면, 이메일 동기화를 위한 일 예의 방법(600a)은 예를 들어, 토큰 버킷(예컨대, 110)을 갖는 TBES 서비스(예컨대, 106)를 갖는 컴퓨팅 디바이스(예컨대, 102)에 의해 수행될 수도 있다. 토큰 버킷(110)은 토큰들(예컨대, 토큰 생성기(108)에 의해 생성된 토큰들(114))의 일시적인 저장을 허용할 수도 있다. 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션(예컨대, 520a)의 동기화를 허가할 수도 있다. 방법(600a)은 602a에서 시작할 수도 있고, 이때, 컴퓨팅 디바이스(102)(예컨대, 동기화 서비스(107))는 적어도 하나의 이메일 애플리케이션(520a)에 의해 관리되고 이메일 서버(104)에 의해 호스팅된 이메일 계정(134, 135 또는 513a, 513n)과 연관된 수신된 이메일 통신들의 빈도를 결정할 수도 있다. 결정하는 것은 토큰 버킷(예컨대, 202 내지 218)과 연관된 하나 이상의 특성들에 기초할 수도 있다. 604a에서, 결정된 빈도는 문턱 값과 비교될 수도 있다. 문턱 값은 디바이스의 사용자/관리자에 의해 설정될 수도 있거나, 그것은 (예컨대, 디바이스 사용 통계에 기초하여) 자동으로 설정될 수도 있다.
606a에서, 결정된 빈도가 문턱 값 이하일 때, 푸시 통신 채널(예컨대, ECC(132))은 이메일 서버(104)와 확립될 수도 있고, 푸시 통신 채널은 서버 개시된 이메일 푸시 통신들을 수신하기 위한 것이다. 다음으로, 적어도 하나의 이메일 애플리케이션은 확립된 푸시 통신 채널을 사용하여 푸시 이메일 통신들을 수신함으로써, 이메일 계정과 동기화될 수도 있다. 608a에서, 결정된 빈도가 문턱 값보다 더 클 때, 푸시 통신 채널은 폐쇄될 수도 있다. 다음으로, 적어도 하나의 이메일 애플리케이션은 컴퓨팅 디바이스(102)에 의해 개시된 이메일 풀 요청을 사용하여 이메일 계정(134, 135 또는 513a, 513n)과 동기화될 수도 있다.
도 1 내지 도 2, 도 5, 및 도 6b를 참조하면, 이메일 동기화를 위한 일 예의 방법(600b)은 예를 들어, 토큰 버킷(예컨대, 110)을 갖는 TBES 서비스(예컨대, 106)를 갖는 컴퓨팅 디바이스(예컨대, 102)에 의해 수행될 수도 있다. 토큰 버킷(110)은 토큰들(예컨대, 토큰 생성기(108)에 의해 생성된 토큰들(114))의 일시적인 저장을 허용할 수도 있다. 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션(예컨대, 520a)의 동기화를 허가할 수도 있다. 방법(600b)은 602b에서 시작할 수도 있고, 이때, 컴퓨팅 디바이스(102)(예컨대, 동기화 서비스(107))는 토큰들(114) 중 적어도 하나가 토큰 버킷(110)에서 이용가능한지 여부를 결정할 수도 있다. 604b에서, 토큰들 중 적어도 하나가 토큰 버킷(110)에서 이용가능할 경우, 토큰 생성기(108)(또는 동기화 서비스(107))는 적어도 하나의 이메일 애플리케이션(520a)을 대응하는 이메일 계정(예컨대, 134)과 통기화하기 위한 요청(예컨대, 130)을 생성할 수도 있다.
606b에서, 요청에 응답하여, TBES 서비스(106)는 적어도 하나의 이메일 애플리케이션(520a)을 동기화하기 위하여, 대응하는 이메일 계정으로부터 하나 이상의 이메일 통신들(예컨대, 128)을 수신할 수도 있다(또는 하나 이상의 발신 이메일 통신들을 송출할 수도 있음). 동기화하기 위한 요청(130)은 대응하는 이메일 계정(134)을 호스팅하는 이메일 서버(104)와의 스케줄링된 이메일 동기화와 연관될 수도 있다. 스케줄링된 이메일 동기화는 컴퓨팅 디바이스(102)에 의해 개시된 이메일 풀 요청(예컨대, 130)에 기초할 수도 있다.
토큰 버킷(110)이 비어 있을 경우, 동기화하기 위한 요청(130)은 중단될 수도 있다. 토큰 소비 제어기(112)는 토큰들 중 적어도 또 다른 하나가 토큰 버킷(110)에서 이용가능한지를 검출할 수도 있다. 토큰들 중 적어도 또 다른 하나가 토큰 버킷(110)에서 이용가능할 경우, 적어도 하나의 이메일 애플리케이션을 대응하는 이메일 계정과 동기화하기 위한 요청(130)의 주기적인 생성이 재개될 수도 있다.
동기화 서비스(107)(또는 디바이스(102) 내의 임의의 다른 모듈)는, 초기 토큰 카운트 값(202), 토큰 버킷 크기 값(204), 토큰 버킷 재충전 간격 값(206), 및 토큰 버킷과 연관된 재충전 토큰 카운트 값(208) 중 하나 이상을 선택함으로써, 토큰 버킷(110)의 초기 셋업을 수행할 수도 있다. 토큰들의 수는 토큰 버킷 재충전 간격 값과 동일한 기간을 갖는 시간 간격으로 토큰 버킷(110)에서 주기적으로 적립될 수도 있고, 토큰들의 적립된 수는 재충전 토큰 카운트 값과 동일할 수도 있다.
동기화 서비스(107)는, (도 2에서 보이는 바와 같이) 초기 토큰 카운트 값, 토큰 버킷 크기 값, 토큰 버킷 재충전 간격 값, 및 재충전 토큰 카운트 값 중 하나 이상을 선택하는 사용자 입력(예컨대, 220)을 수신할 수도 있다. 토큰 버킷(110)의 초기 셋업(예컨대, 122)은 컴퓨팅 디바이스의 하드웨어 특성들(예컨대, 디바이스 특성들(224) 중 하나 이상), 및/또는 컴퓨팅 디바이스(102)와 연관된 사용 통계(예컨대, 226)에 기초할 수도 있다. 사용 통계(224)는 컴퓨팅 디바이스와의 사용자 상호작용의 빈도, 시간 주기 동안의 수신된 이메일들의 수, 컴퓨팅 디바이스의 스크린이 온 되는 횟수, 및 컴퓨팅 디바이스의 지오 로케이션 중 적어도 하나를 포함할 수도 있다.
도 7은 개시물의 일 예의 실시형태에 따라, 토큰 버킷을 사용한 이메일 동기화를 위한 또 다른 예의 프로세스를 예시하는 흐름도이다. 도 1 내지 도 2, 및 도 7을 참조하면, 이메일 동기화를 위한 일 예의 방법(700)은 예를 들어, 토큰 버킷(예컨대, 110)을 갖는 TBES 서비스(예컨대, 106)를 갖는 컴퓨팅 디바이스(예컨대, 102)에 의해 수행될 수도 있다. 토큰 버킷(110)은 토큰들(예컨대, 토큰 생성기(108)에 의해 생성된 토큰들(114))의 일시적인 저장을 허용할 수도 있다. 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션(예컨대, 520a)의 동기화를 허가할 수도 있다. 방법(700)은 702에서 시작할 수도 있고, 이때, 토큰 버킷(110)은 토큰들의 초기 세트(예컨대, 202)로 재설정될 수도 있다. 토큰들의 초기 세트는 컴퓨팅 디바이스(102)와 연관된 하나 이상의 디바이스 사용 통계(예컨대, 226)에 기초하여 결정될 수도 있다.
704에서, 컴퓨팅 디바이스(102)에 의해 개시된 이메일 풀 요청(예컨대, 130)에 응답하여, 토큰 소비 제어기(112)(또는 디바이스(102) 내의 또 다른 모듈)는 토큰 버킷(110)과 연관된 현재의 토큰 카운트가 포지티브인 것(즉, 토큰 버킷(110)이 비어 있지 않음)을 검증할 수도 있다. 706에서, 현재의 토큰 카운트가 포지티브일 경우, TBES 서비스(106)(또는 동기화 서비스(107))는 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션(예컨대, 520a)을, 이메일 서버에서 호스팅된 이메일 계정(예컨대, 134)과 동기화할 수도 있다(예컨대, 이메일 동기화들(128)). 708에서, 토큰 소비 제어기(112)는 동기화에 기초하여 현재의 토큰 카운트를 감소시킬 수도 있다(예컨대, 동기화 당 하나의 토큰이 현재의 토큰 카운트로부터 공제될 수도 있음).
토큰 생성기(108)는 주기적인 재충전 시간 간격(refill time interval)들(예컨대, 206)로 새로운 토큰(예컨대, 114)을 토큰 버킷에 자동으로 추가할 수도 있다. 토큰 버킷(110)을 위한 현재의 토큰 카운트가 토큰 버킷의 현재의 크기(예컨대, 204)와 연관된 토큰들의 최대 수와 동일할 경우, 토큰들의 자동 추가는 중단될 수도 있다. 주기적인 재충전 시간 간격들(206)은 예를 들어, 다음: 잔여 배터리 전력, 현재의 배터리 방전율, 이용가능한 배터리의 백분율, 수신된 셀룰러 신호 강도, 현재 활성인 충전 스테이터스(status), 및 컴퓨팅 디바이스(102)와 연관된 현재 활성인 Wi-Fi 접속 중 하나 이상에 기초하여 변동될 수도 있다.
하나 이상의 디바이스 사용 통계(226)는 컴퓨팅 디바이스와의 사용자 상호작용의 빈도, 시간 주기 동안의 수신된 이메일들의 수, 컴퓨팅 디바이스의 스크린이 온 되는 횟수, 및/또는 컴퓨팅 디바이스의 지오 로케이션 중 적어도 하나를 포함할 수도 있다. 디바이스의 지오 로케이션은 사용자가 집에 있는지 또는 작업 장소에 있는지 여부를 결정하기 위하여 사용될 수도 있어서, 이러한 로케이션을 이메일 사용의 알려진 패턴 및 이메일 동기화(예컨대, 각각의 로케이션에서의 수신된 이메일들의 수, 디바이스 각각의 로케이션에서 활성화되는 횟수, 등등)과 연관시킬 수도 있다.
토큰 버킷(110)에서의 현재의 토큰 카운트가 제로와 동일할 경우(즉, 토큰 버킷이 비어 있음), 이메일 풀 요청에 기초한 이메일 동기화는 중단될 수도 있다. 토큰 소비 제어기(112)(또는 디바이스(102) 내의 또 다른 모듈)는 새로운 토큰이 토큰 버킷(110)에서 적립되는지를 결정할 수도 있다. 새로운 토큰이 토큰 버킷(110)에서 적립될 경우, TBES 서비스(106)를 사용한 이메일 동기화는 이메일 풀 요청(예컨대, 130)을 사용하여 재개될 수도 있다.
적어도 하나의 이메일 애플리케이션(예컨대, 520a)은 하나 이상의 사용자 이메일 계정들(예컨대, 134, ..., 135 중 하나 이상)과 연관될 수도 있다. 토큰 버킷(110)은 복수의 이메일 계정들과 연관된 이메일들을 동기화하기 위하여 공유될 수도 있다(즉, 토큰 버킷(110)은 이메일 계정들(134, 135) 사이에서 공유될 수도 있음). 토큰 버킷(110)은 또한, 다수의 디바이스들 사이에서 공유될 수도 있다(즉, 사용자는 하나 이상의 사용자 이메일 계정들을 관리하기 위하여 각각의 디바이스 상의 이메일 클라이언트들을 사용할 수도 있음). 이와 관련하여, 사용자 디바이스들 중 하나가 사용자 이메일 계정들 중 하나를 검사하기 위하여 ON으로 될 때, 잔여 사용자 이메일 계정들은 공유된 토큰 버킷에서 적립된 "무료" 토큰을 각각 얻을 수도 있어서, 잔여 사용자 이메일 계정들의 각각에 대한 이메일 싱크를 허용할 수도 있다.
이메일 풀 요청이 컴퓨팅 디바이스(102)의 사용자에 의해 개시될 경우, 토큰 생성기(108)는 토큰 버킷(110)에서 새로운 토큰(예컨대, 114)을 적립할 수도 있다(즉, 사용자가 디바이스(102)를 활성화하고 이메일 동기화를 요청할 경우, "무료" 토큰이 토큰 버킷(110)에서 적립됨). 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션(예컨대, 520a)은 새로운 적립된 토큰에 적어도 부분적으로 기초하여 이메일 서버(104)에서 호스팅된 이메일 계정(134, 135 중 하나 이상)과 동기화될 수도 있다(즉, 새롭게 적립된 "무료" 토큰은 이메일 동기화를 수행하기 위하여 사용될 수도 있음).
도 8은 개시물의 일 예의 실시형태에 따라, 토큰 버킷을 사용한 이메일 동기화를 위한 또 다른 예의 프로세스를 예시하는 흐름도이다. 도 1 내지 도 2, 및 도 8을 참조하면, 이메일 동기화를 위한 일 예의 방법(800)은 예를 들어, 토큰 버킷(예컨대, 110)을 갖는 동기화 서비스(예컨대, 107) 및 TBES 서비스(예컨대, 106)를 갖는 컴퓨팅 디바이스(예컨대, 102)에 의해 수행될 수도 있다. 토큰 버킷(110)은 토큰들(예컨대, 토큰 생성기(108)에 의해 생성된 토큰들(114))의 일시적인 저장을 허용할 수도 있다. 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션(예컨대, 520a)과, 이메일 서버(104)에 의해 호스팅된 대응하는 이메일 계정(134, 135 중 하나 이상)과의 동기화를 허가할 수도 있다. 동기화 서비스(107)는 이메일 동기화를 위한 방법(800)을 수행하도록 구성될 수도 있다. 방법(800)은 802에서 시작할 수도 있고, 이때, 토큰 버킷(110)은 토큰들의 초기 세트로 재설정될 수도 있고, 여기서, 토큰 버킷에서의 각각의 토큰은 컴퓨팅 디바이스(102) 상에서 작동되는 적어도 하나의 이메일 애플리케이션(520a)의 동기화를 허가할 수도 있다.
804에서, 이메일 서버(104)와의 푸시 통신 채널(예컨대, 132)이 확립될 수도 있고, 푸시 통신 채널(132)은 서버 개시된 이메일 푸시 통신들(예컨대, 서버(104)에 의해 개시된 푸시 통신들)을 수신하기 위하여 구성될 수도 있다. 806에서, 토큰 소비 제어기(112)(또는 디바이스(102) 내의 또 다른 모듈)는 토큰들 중 적어도 하나가 토큰 버킷(110)에서 이용가능한지 여부를 결정할 수도 있다. 토큰들 중 적어도 하나가 토큰 버킷(110)에서 이용가능하지 않을 경우, 푸시 통신 채널(132)은 (예컨대, ECC 제어 신호(136)를 사용함으로써) 폐쇄될 수도 있다. 토큰들 중 적어도 하나가 토큰 버킷(110)에서 이용가능할 경우, 적어도 하나의 이메일 애플리케이션(520a)은 푸시 통신 채널(132)을 사용하여 푸시 이메일 통신들(예컨대, 128)을 수신함으로써 대응하는 이메일 계정(예컨대, 134, 135 중 하나 이상)과 동기화될 수도 있다. 푸시 통신 채널(132)이 폐쇄될 경우, 토큰 소비 제어기(112)(또는 디바이스(102) 내의 또 다른 모듈)는 토큰들 중 적어도 또 다른 하나가 토큰 버킷에서 이용가능한지를 검출할 수도 있다(즉, 언제 새로운 토큰이 적립되고 토큰 버킷(110)이 더 이상 비어 있지 않는지를 검출할 수도 있음). 토큰들 중 적어도 또 다른 하나가 토큰 버킷에서 이용가능할 경우, 이메일 서버와의 푸시 통신 채널(132)은 재개방/재확립될 수도 있다.
일 예의 실시형태에서, 윈도우즈 푸시 통지 서비스(Windows Push Notification Service; WNS)와 같은 통지 서비스는 서버 상에서의 변경(예컨대, 이메일 서버(104)에서 수신된 새로운 이메일)의 (예컨대, 컴퓨팅 디바이스(102)에 의한) 통지들을 수신할 목적들을 위하여, 본원에서 개시된 토큰 버킷 기능성들과 관련하여 사용될 수도 있다. 더욱 구체적으로, WNS를 사용한 토큰 버킷 구현을 위하여, 싱크 서비스(107)는 WNS 통지가 수신될 때에 서버(104)로의 디바이스 개시된 풀 타입 동기화를 수행할 수도 있다. 토큰 버킷(110)이 비어 있을 경우, 싱크 서비스(107)는 통지들을 수신하는 것을 정지시키기 위하여 WNS로부터 등록해제할 수도 있다. 일단 토큰이 토큰 버킷(107)에서 적립되면, 싱크 서비스(107)는 그 통지들을 위하여 재등록할 수 있다.
도 9는 일부 설명된 실시형태들이 구현될 수 있는 일 예의 컴퓨팅 시스템의 도면이다. 혁신들은 다양한 범용 또는 특수 목적 컴퓨팅 시스템들에서 구현될 수도 있으므로, 컴퓨팅 시스템(900)은 사용 또는 기능성의 범위에 대한 임의의 제한을 제안하도록 의도된 것이 아니다.
도 9를 참조하면, 컴퓨팅 시스템(900)은 하나 이상의 프로세싱 유닛들(910, 915) 및 메모리(920, 925)를 포함한다. 도 9에서, 이 기본적인 구성(930)은 파선 내에 포함된다. 프로세싱 유닛들(910, 915)은 컴퓨터 실행가능 명령들을 실행한다. 프로세싱 유닛은 범용 중앙 프로세싱 유닛(CPU), 애플리케이션 특정 집적 회로(ASIC) 내의 프로세서, 또는 임의의 다른 타입의 프로세서일 수 있다. 멀티 프로세싱 시스템에서, 다수의 프로세싱 유닛들은 프로세싱 파워를 증가시키기 위하여 컴퓨터 실행가능 명령들을 실행한다. 예를 들어, 도 9는 중앙 프로세싱 유닛(910) 뿐만 아니라, 그래픽 프로세싱 유닛 또는 코 프로세싱(co-processing) 유닛(915)을 도시한다. 유형(tangible)의 메모리(920, 925)는 프로세싱 유닛(들)에 의해 액세스가능한, 휘발성 메모리(예컨대, 레지스터들, 캐시, RAM), 비휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등), 또는 2 개의 일부의 조합일 수도 있다. 메모리(920, 925)는 프로세싱 유닛(들)에 의한 실행을 위하여 적당한 컴퓨터 실행가능 명령들의 형태로, 본원에서 설명된 하나 이상의 혁신들을 구현하는 소프트웨어(980)를 저장한다.
컴퓨팅 시스템은 또한, 추가적인 특징들을 가질 수도 있다. 예를 들어, 컴퓨팅 시스템(900)은 저장장치(940), 하나 이상의 입력 디바이스들(950), 하나 이상의 출력 디바이스들(960), 및 하나 이상의 통신 접속들(970)을 포함한다. 버스, 제어기, 또는 네트워크와 같은 상호접속 메커니즘(도시되지 않음)은 컴퓨팅 시스템(900)의 컴포넌트들을 상호접속한다. 전형적으로, 오프레이팅 시스템 소프트웨어(도시되지 않음)는 컴퓨팅 시스템(900)에서 실행되는 다른 소프트웨어를 위한 동작 환경을 제공하고, 컴퓨팅 시스템(900)의 컴포넌트들의 활동들을 조정한다.
유형의 저장장치(940)는 분리가능 또는 비분리가능일 수도 있고, 자기 디스크들, 자기 테이프들 또는 카세트들, CD-ROM들, DVD들, 또는 정보를 저장하기 위하여 사용될 수 있고 컴퓨팅 시스템(900) 내에서 액세스될 수 있는 임의의 다른 매체를 포함한다. 저장장치(940)는 본원에서 설명된 하나 이상의 혁신들을 구현하는 소프트웨어(980)를 위한 명령들을 저장한다.
입력 디바이스(들)(950)는 키보드, 마우스, 펜, 또는 트랙볼과 같은 터치 입력 디바이스, 음성 입력 디바이스, 스캐닝 디바이스, 또는 입력을 컴퓨팅 시스템(900)에 제공하는 또 다른 디바이스일 수도 있다. 출력 디바이스(들)(960)는 디스플레이, 프린터, 스피커, CD 기록기, 또는 컴퓨팅 시스템(900)으로부터의 출력을 제공하는 또 다른 디바이스일 수도 있다.
통신 접속(들)(970)은 또 다른 컴퓨팅 엔티티로의 통신 매체 상에서의 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 명령들, 오디오 또는 비디오 입력 또는 출력, 또는 변조된 데이터 신호에서의 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는, 신호에서 정보를 인코딩하기 위한 그러한 방식으로 설정되거나 변경된 그 특성들 중 하나 이상을 가지는 신호이다. 제한이 아니라 예로서, 통신 매체들은 전기적, 광학적, RF, 또는 다른 반송파를 사용할 수 있다.
혁신들은 타겟인 실제 또는 가상의 프로세서 상의 컴퓨팅 시스템에서 실행되는, 프로그램 모듈들 내에 포함된 것들과 같은 컴퓨터 실행가능 명령들의 일반적인 문맥에서 설명될 수 있다. 일반적으로, 프로그램 모듈들은, 특정한 태스크들을 수행하거나 특정한 추상 데이터 타입(abstract data type)들을 구현하는 루틴들, 프로그램들, 라이브러리들, 오브젝트들, 클래스들, 컴포넌트들, 데이터 구조들 등을 포함한다. 프로그램 모듈들의 기능성은 다양한 실시형태들에서 희망하는 대로 프로그램 모듈들 사이에서 조합될 수도 있거나 분할될 수도 있다. 프로그램 모듈들을 위한 컴퓨터 실행가능 명령들은 로컬 또는 분산된 컴퓨팅 시스템 내에서 실행될 수도 있다.
용어들 "시스템" 및 "디바이스"는 본원에서 상호 교환가능하게 사용된다. 문맥이 명확하게 반대로 표시하지 않으면, 용어는 컴퓨팅 시스템 또는 컴퓨팅 디바이스의 타입에 대한 임의의 제한을 암시하지도 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 디바이스는 로컬 또는 분산될 수 있고, 본원에서 설명된 기능성을 구현하는 소프트웨어를 갖는 특수 목적 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
제시를 위하여, 상세한 설명은 컴퓨팅 시스템에서 컴퓨터 동작들을 설명하기 위하여 "결정" 및 "사용"과 같은 용어들을 사용한다. 이 용어들은 컴퓨터에 의해 수행된 동작들에 대한 하이 레벨 추상화들이고, 인간에 의해 수행된 액트들과 혼동되지 않아야 한다. 이 용어들에 대응하는 실제적인 컴퓨터 동작들은 구현예에 따라 변동된다.
도 10은 설명된 실시형태들, 기법들, 및 기술들이 구현될 수도 있는 적당한 클라우드 지원된 환경(1000)의 일반화된 예를 예시한다. 일 예의 환경(1000)에서, 다양한 타입들의 서비스들(예컨대, 컴퓨팅 서비스들)은 클라우드(1010)에 의해 제공된다. 예를 들어, 클라우드(1010)는 클라우드 기반 서비스들을 인터넷과 같은 네트워크를 통해 접속된 다양한 타입들의 사용자들 및 디바이스들에 제공하는, 중앙집중식으로 또는 분산되어 위치될 수도 있는 컴퓨팅 디바이스들의 집합을 포함할 수 있다. 구현 환경(1000)은 컴퓨팅 태스크들을 달성하기 위하여 상이한 방법들로 사용될 수 있다. 예를 들어, 일부 태스크들(예컨대, 사용자 입력을 프로세싱하고 사용자 인터페이스를 제시함)은 로컬 컴퓨팅 디바이스들(예컨대, 접속된 디바이스들(1030, 1040, 1050)) 상에서 수행될 수 있는 반면, 다른 태스크들(예컨대, 후속 프로세싱에서 사용되어야 할 데이터의 저장)은 클라우드(1010)에서 수행될 수 있다.
일 예의 환경(1000)에서, 클라우드(1010)는 다양한 스크린 능력들을 갖는 접속된 디바이스들(1030, 1040, 1050)을 위한 서비스들을 제공한다. 접속된 디바이스(1030)는 컴퓨터 스크린(1035)(예컨대, 중간 크기 스크린)을 갖는 디바이스를 나타낸다. 예를 들어, 접속된 디바이스(1030)는 데스크톱 컴퓨터, 랩톱, 노트북, 넷북 등과 같은 개인용 컴퓨터일 수 있다. 접속된 디바이스(1040)는 이동 디바이스 스크린(1045)(예컨대, 소형 크기 스크린)을 갖는 디바이스를 나타낸다. 예를 들어, 접속된 디바이스(1040)는 이동 전화, 스마트폰, 개인 정보 단말, 태블릿 컴퓨터 등등일 수 있다. 접속된 디바이스(1050)는 대형 스크린(1055)을 갖는 디바이스를 나타낸다. 예를 들어, 접속된 디바이스(1050)는 텔레비전 스크린(예컨대, 스마트 텔레비전), 또는 텔레비전(예컨대, 셋톱 박스 또는 게임용 콘솔) 등등에 접속된 또 다른 디바이스일 수 있다.
접속된 디바이스들(1030, 1040, 및/또는 1050) 중 하나 이상은 터치스크린 능력들을 포함할 수 있다. 터치스크린들은 입력을 상이한 방법들로 받아들일 수 있다. 예를 들어, 용량성 터치스크린들은 물체(예컨대, 손가락 끝 또는 스타일러스)가 표현을 가로질러 흐르는 전기적 전류를 왜곡하거나 차단할 때에 터치 입력을 검출한다. 또 다른 예로서, 터치스크린들은 광학 센서들로부터의 빔들이 차단될 때에 터치 입력을 검출하기 위하여 광학 센서들을 사용할 수 있다. 스크린의 표면과의 물리적 접촉은 입력이 일부 터치스크린들에 의해 검출되기 위하여 필요하지 않다. 스크린 능력들을 갖지 않는 디바이스들이 또한 일 예의 환경(1000)에서 사용될 수 있다. 예를 들어, 클라우드(1010)는 디스플레이들을 갖지 않는 하나 이상의 컴퓨터들(예컨대, 서버 컴퓨터들)을 위한 서비스들을 제공할 수 있다.
서비스들은 서비스 제공자들(1020)을 통해, 또는 온라인 서비스들의 다른 제공자들(도시되지 않음)을 통해 클라우드(1010)에 의해 제공될 수 있다. 예를 들어, 클라우드 서비스들은 특정한 접속된 디바이스(예컨대, 접속된 디바이스들(1030, 1040, 및/또는 1050)의 스크린 크기, 디스플레이 능력, 및/또는 터치스크린 능력에 맞춤화될 수 있다.
일 예의 환경(1000)에서, 클라우드(1010)는 적어도 부분적으로, 서비스 제공자들(1020)을 사용하여, 본원에서 설명된 기술들 및 해결책들 중 하나 이상을 다양한 접속된 디바이스들(1030, 1040, 및/또는 1050)에 제공한다. 예를 들어, 서비스 제공자들(1020)은 다양한 클라우드 기반 서비스들을 위한 중앙집중화된 해결책을 제공할 수 있다. 서비스 제공자들(1020)은 사용자들 및/또는 디바이스들을 위한(예컨대, 접속된 디바이스들(1030, 1040, 1050) 및/또는 그 개개의 사용자들을 위한) 서비스 가입들을 관리할 수 있다.
도 11은 본원에서 설명된 기술들과 함께 사용될 수 있는 일 예의 이동 디바이스이다. 도 11을 참조하면, 일 예의 이동 디바이스(1100)는 1102로 전반적으로 도시된, 다양한 임의적인 하드웨어 및 소프트웨어 컴포넌트들을 포함할 수도 있다. 이동 디바이스(1100)에서의 임의의 컴포넌트들(1102)은 임의의 다른 컴포넌트와 통신할 수 있지만, 예시의 용이함을 위하여, 모든 접속들이 도시된 것은 아니다. 이동 디바이스(1100)는 다양한 컴퓨팅 디바이스들(예컨대, 셀 전화, 스마트폰, 핸드헬드 컴퓨터, 개인 정보 단말(PDA) 등) 중 임의의 것일 수 있고, 셀룰러, 위성, 또는 다른 네트워크와 같은 하나 이상의 이동 통신 네트워크들(1104)과의 무선 양방향 통신들을 허용할 수 있다.
예시된 이동 디바이스(1100)는 신호 코딩, 데이터 프로세싱, 입력/출력 프로세싱, 전력 제어, 및/또는 다른 기능들과 같은 태스크들을 수행하기 위한 제어기 또는 프로세서(1110)(예컨대, 신호 프로세서, 마이크로프로세서, ASIC, 또는 다른 제어 및 프로세싱 로직 회로부)를 포함할 수 있다. 운영 체제(1112)는 컴포넌트들(1102)의 할당 및 사용량과, 하나 이상의 애플리케이션 프로그램들(1114)을 위한 지원을 제어할 수 있다. 애플리케이션 프로그램들(1114)은 통상의 이동 컴퓨팅 애플리케이션들(예컨대, 이메일 클라이언트 애플리케이션들, 캘린더들, 연락처 관리기들, 웹 브라우저들, 메시징 애플리케이션들), 또는 임의의 다른 컴퓨팅 애플리케이션을 포함할 수 있다.
운영 체제(1112)는 (예컨대, 도 1 내지 도 2에 대하여 설명된 서비스들(106 및 107)을 참조하여) 본원에서 설명된 바와 같이, TBES(1111)를 갖는 동기화 서비스를 추가로 구현할 수도 있다. 추가적으로, (도 11에서 1111로서 예시된) 동기화 서비스(107) 및 TBES 서비스(106)가 이메일 동기화에 대하여 본원에서 설명되더라도, 본 개시물은 이와 관련하여 제한되지 않을 수도 있다. 이전에 언급된 바와 같이, 일부 사례들에서, 동기화 서비스(107) 및 TBES 서비스(106)는 캘린더 엔트리들, 연락처 관리기들로부터의 하나 이상의 연락처 엔트리들, 웹 브라우저들 북마크들, 메시징 애플리케이션으로부터의 하나 이상의 메시지들 등등과 같은 PIM 데이터의 동기화를 수행하기 위하여 사용될 수도 있다.
예시된 이동 디바이스(1100)는 메모리(1120)를 포함할 수 있다. 메모리(1120)는 비 분리가능 메모리(1122) 및/또는 분리가능 메모리(1124)를 포함할 수 있다. 비 분리가능 메모리(1122)는 RAM, ROM, 플래시 메모리, 하드 디스크, 또는 다른 잘 알려진 메모리 저장 기술들을 포함할 수 있다. 분리가능 메모리(1124)는 플래시 메모리, 또는 GSM 통신 시스템들에서 잘 알려져 있는 가입자 식별 모듈(Subscriber Identity Module; SIM) 카드, 또는 "스마트 카드들"과 같은 다른 잘 알려진 메모리 저장 기술들을 포함할 수 있다. 메모리(1120)는 운영 체제(1112) 및 애플리케이션들(1114)을 작동시키기 위한 데이터 및/또는 코드를 저장하기 위하여 사용될 수 있다. 일 예의 데이터는 하나 이상의 유선 또는 무선 네트워크들을 통해 하나 이상의 네트워크 서버들 또는 다른 디바이스들로 전송되어야 하고 및/또는 이로부터 수신되어야 할 웹 페이지들, 텍스트, 이미지들, 사운드 파일들, 비디오 데이터, 또는 다른 데이터 세트들을 포함할 수 있다. 메모리(1120)는 국제 이동 가입자 식별정보(International Mobile Subscriber Identity; IMSI)와 같은 가입자 식별자와, 국제 이동 장비 식별자(International Mobile Equipment Identifier; IMEI)와 같은 장비 식별자를 저장하기 위하여 사용될 수 있다. 이러한 식별자들은 사용자들 및 장비를 식별하기 위하여 네트워크 서버로 송신될 수 있다.
이동 디바이스(1100)는 터치스크린(1132), 마이크로폰(1134), 카메라(1136), 물리적 키보드(1138), 및/또는 트랙볼(1140)과 같은 하나 이상의 입력 디바이스들(1130)과, 스피커(1152) 및 디스플레이(1154)와 같은 하나 이상의 출력 디바이스들(1150)을 지원할 수 있다. 다른 가능한 출력 디바이스들(도시되지 않음)은 압전(piezoelectric) 또는 다른 햅틱(haptic) 출력 디바이스들을 포함할 수 있다. 일부 디바이스들은 하나를 초과하는 입력/출력 기능을 서빙할 수 있다. 예를 들어, 터치스크린(1132) 및 디스플레이(1154)는 단일 입력/출력 디바이스 내에 조합될 수 있다.
입력 디바이스들(1130)은 내츄럴 사용자 인터페이스(Natural User Interface; NUI)를 포함할 수 있다. NUI는 마우스들, 키보드들, 원격 제어들 등과 같은 입력 디바이스들에 의해 부과된 인공적인 제약들이 없는 "내츄럴한" 방식으로, 사용자가 디바이스와 상호작용하는 것을 가능하게 하는 임의의 인터페이스 기술이다. NUI 방법들의 예들은 스피치 인식, 터치 및 스타일러스 인식, 스크린 상에서 그리고 스크린에 인접한 양자에서의 제스처 인식, 공기 제스처들, 머리 및 시선 추적, 음성 및 스피치, 시각, 터치, 제스처들, 및 머신 지능에 의존하는 것들을 포함한다. NUI의 다른 예들은, 가속도계들/자이로스코프들, 얼굴 인식, 3D 디스플레이들, 머리, 시선, 및 응시 추적, 더욱 내츄럴한 인터페이스 뿐만 아니라, 전기장 감지 전극(electric field sensing electrode)들(EEG 및 관련된 방법들)을 사용하여 두뇌 활동을 감지하기 위한 기술들을 모두 제공하는 몰입형 증강 현실 및 가상 현실 시스템들을 사용한 모션 제스처 검출을 포함한다. 이에 따라, 하나의 특정 예에서, 운영 체제(1112) 및 애플리케이션들(1114)은, 사용자가 음성 커맨드들을 통해 디바이스(1100)를 동작시키도록 하는, 음성 사용자 인터페이스의 일부로서의 스피치 인식 소프트웨어를 포함할 수 있다. 또한, 디바이스(1100)는 입력을 게임용 애플리케이션에 제공하기 위하여 제스처들을 검출하고 해독하는 것과 같은, 사용자의 공간적 제스처들을 통한 사용자 상호작용을 허용하는 입력 디바이스들 및 소프트웨어를 포함할 수 있다.
무선 모뎀(1160)은 안테나(도시되지 않음)에 결합될 수 있고, 당해 분야에서 양호하게 이해되는 바와 같이, 프로세서(1110)와 외부 디바이스들 사이의 양방향 통신들을 지원할 수 있다. 모뎀(1160)은 총칭하여 도시되어 있고, 이동 통신 네트워크(1104)와 통신하기 위한 셀룰러 모뎀 및/또는 다른 라디오 기반 모뎀들(예컨대, 블루투스(1164) 또는 Wi-Fi(1162))을 포함할 수 있다. 무선 모뎀(1160)은 단일 셀룰러 네트워크 내에서, 셀룰러 네트워크들 사이에서, 또는 이동 디바이스와 공중 교환 전화 네트워크(public switched telephone network; PSTN) 사이에서의 데이터 및 음성 통신들을 위한 GSM 네트워크와 같은 하나 이상의 셀룰러 네트워크들과의 통신을 위하여 전형적으로 구성된다.
이동 디바이스는 적어도 하나의 입력/출력 포트(1180), 전력 공급 장치(1182), 글로벌 위치확인 시스템(Global Positioning System; GPS) 수신기와 같은 위성 내비게이션 시스템 수신기(1184), 가속도계(1186), 및/또는 USB 포트, IEEE 1394(파이어 와이어(Fire Wire)) 포트, 및/또는 RS-232 포트일 수 있는 물리적 커넥터(1190)를 더 포함할 수 있다. 임의의 컴포넌트들이 검출될 수 있고 다른 컴포넌트들이 추가될 수 있으므로, 예시된 컴포넌트들(1102)이 요구되거나 모두 포함되는 것은 아니다.
개시된 방법들의 일부에 대한 동작들이 편리한 제시를 위한 특정한 순차적인 순서로 설명되지만, 특정한 순서화가 이하에서 기재된 특정 언어에 의해 요구되지 않으면, 이 설명 방식은 재배열을 망라한다는 것을 이해해야 한다. 예를 들어, 순차적으로 설명된 동작들은 일부 경우들에는 재배열될 수도 있거나 동시에 수행될 수도 있다. 또한, 간략함을 위하여, 첨부된 도면들은 개시된 방법들이 다른 방법들과 함께 사용될 수 있는 다양한 방법들을 도시하지 않을 수도 있다.
개시된 방법들 중 임의의 것은 하나 이상의 컴퓨터 판독가능 저장 매체들 상에서 저장되고 컴퓨팅 디바이스(예컨대, 컴퓨팅 하드웨어를 포함하는 스마트폰들 또는 다른 이동 디바이스들을 포함하는 임의의 이용가능한 컴퓨팅 디바이스) 상에서 실행된 컴퓨터 실행가능 명령들 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 컴퓨터 판독가능 저장 매체들은 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용가능한 유형의 매체들(예컨대, DVD 또는 CD와 같은 하나 이상의 광학 매체들 디스크들, (DRAM 또는 SRAM과 같은) 휘발성 메모리 컴포넌트들, (플래시 메모리 또는 하드 드라이브들과 같은) 비휘발성 메모리 컴포넌트들)이다. 예로서, 그리고 도 9 를 참조하면, 컴퓨터 판독가능 저장 매체들은 메모리(920 및 925) 및 저장장치(940)를 포함한다. 예로서, 그리고 도 11을 참조하면, 컴퓨터 판독가능 저장 매체들은 메모리 및 저장장치(1120, 1122, 및 1124)를 포함할 수도 있다. 용어 "컴퓨터 판독가능 저장 매체들"은 신호들 및 반송파들을 포함하지 않는다. 게다가, 용어 "컴퓨터 판독가능 저장 매체들"은 통신 접속들(예컨대, 970, 1160, 1162, 및 1164)을 포함히자 않는다.
개시물의 일 예의 실시형태에 따르면, 방법은 토큰 버킷을 갖는 컴퓨팅 디바이스를 사용할 수도 있다. 토큰 버킷은 토큰들의 일시적인 저장을 허용할 수도 있고, 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가할 수도 있다. 적어도 하나의 이메일 애플리케이션을 대응하는 이메일 계정과 동기화하기 위한 요청은 컴퓨팅 디바이스에서 수신될 수도 있다. 디바이스는 토큰들 중 적어도 하나가 토큰 버킷에서 이용가능한지 여부를 결정할 수도 있다. 토큰들 중 적어도 하나가 토큰 버킷에서 이용가능할 경우, 적어도 하나의 이메일 애플리케이션은 대응하는 이메일 계정과 동기화될 수도 있다. 토큰 버킷이 비어 있을 경우, 적어도 하나의 이메일 애플리케이션을 대응하는 이메일 계정과 동기화하는 것이 중단될 수도 있다.
개시물의 또 다른 예의 실시형태에 따르면, 컴퓨터 판독가능 저장 매체는 컴퓨팅 디바이스로 하여금, 이메일 동기화를 위한 방법을 수행하게 하도록 동작가능한 컴퓨터 실행가능 명령들을 그 상에 저장하였을 수도 있다. 방법은 컴퓨팅 디바이스에서, 토큰들의 초기 세트로 토큰 버킷을 재설정하는 것을 포함할 수도 있다. 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가할 수도 있다. 토큰들의 초기 세트는 컴퓨팅 디바이스와 연관된 하나 이상의 디바이스 사용 통계에 기초하여 결정될 수도 있다. 컴퓨팅 디바이스에 의해 개시된 이메일 풀 요청에 응답하여, 토큰 버킷과 연관된 현재의 토큰 카운트는 그것이 포지티브인 것이 검증될 수도 있다. 현재의 토큰 카운트가 포지티브일 경우, 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션은 이메일 서버에서 호스팅된 이메일 계정과 동기화될 수도 있다. 다음으로, 현재의 토큰 카운트는 동기화에 기초하여 감소될 수도 있다.
개시물의 또 다른 예의 실시형태에 따르면, 이동 컴퓨팅 디바이스는 프로세서, 메모리, 디스플레이, 및 토큰 버킷을 갖는 동기화 서비스를 포함할 수도 있다. 토큰 버킷은 토큰들의 일시적인 저장을 허용할 수도 있고, 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가할 수도 있다. 동기화 서비스는 토큰들의 초기 세트로 토큰 버킷을 재설정하는 것을 포함하는, 이메일 동기화를 위한 동작들을 수행하도록 구성될 수도 있다. 각각의 토큰은 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션과, 이메일 서버에 의해 호스팅된 대응하는 이메일 계정과의 동기화를 허가할 수도 있다. 푸시 통신 채널은 이메일 서버와 확립될 수도 있다. 푸시 통신 채널은 서버 개시된 이메일 푸시 통신들을 수신하기 위하여 사용될 수 있다. 동기화 서비스는 토큰들 중 적어도 하나가 토큰 버킷에서 이용가능한지 여부를 결정할 수도 있다. 토큰들 중 적어도 하나가 토큰 버킷에서 이용가능하지 않을 경우, 푸시 통신 채널은 폐쇄될 수도 있다.
개시된 기법들을 구현하기 위한 컴퓨터 실행가능 명령들뿐만 아니라, 개시된 실시형태들의 구현 동안에 생성되고 사용된 임의의 데이터 중 임의의 것은 하나 이상의 컴퓨터 판독가능 저장 매체들 상에 저장될 수 있다. 컴퓨터 실행가능 명령들은 예를 들어, 전용 소프트웨어 애플리케이션, 또는 웹 브라우저 또는 (원격 컴퓨팅 애플리케이션과 같은) 다른 소프트웨어 애플리케이션을 통해 액세스되거나 다운로드되는 소프트웨어 애플리케이션의 일부일 수 있다. 이러한 소프트웨어는 예를 들어, 단일 로컬 컴퓨터(예컨대, 임의의 적당한 상업적으로 입수가능한 컴퓨터) 상에서, 또는 하나 이상의 네트워크 컴퓨터들을 사용하는 (예컨대, 인터넷, 광역 네트워크 로컬 영역 네트워크, (클라우드 컴퓨팅 네트워크와 같은) 클라이언트 서버 네트워크, 또는 다른 이러한 네트워크를 통해) 네트워크 환경에서 실행될 수 있다.
간략함을 위하여, 소프트웨어 기반 구현에들의 어떤 선택된 양들만이 설명된다. 당해 분야에서 양호하게 알려진 다른 세부사항들은 생략된다. 예를 들어, 개시된 기술은 임의의 특정 컴퓨터 언어 또는 프로그램으로 제한되지는 않는다는 것을 이해해야 한다. 예를 들어, 개시된 기술은 C++, 자바(Java), 펄(Perl), 자바스크립트(JavaScript), 아도비 플래시(Adobe Flash), 또는 임의의 다른 적당한 프로그래밍 언어로 기록된 소프트웨어에 의해 구현될 수 있다. 마찬가지로, 개시된 기술은 임의의 특정한 컴퓨터 또는 타입의 하드웨어로 제한되지는 않는다. 적당한 컴퓨터들 및 하드웨어의 어떤 세부사항들은 양호하게 알려져 있고, 이 개시물에서 상세하게 기재될 필요가 없다.
또한, (예를 들어, 컴퓨터로 하여금, 개시된 방법들 중 임의의 것을 수행하게 하기 위한 컴퓨터 실행가능 명령들을 포함하는) 소프트웨어 기반 실시형태들 중 임의의 것은 적당한 통신 수단을 통해 업로드될 수 있거나, 다운로드될 수 있거나, 또는 원격으로 액세스될 수 있다. 이러한 적당한 통신 수단은 예를 들어, 인터넷, 월드 와이드 웹(World Wide Web), 인트라넷, 소프트웨어 애플리케이션들, (광섬유 케이블을 포함하는) 케이블, 자기 통신들, (RF, 마이크로파, 및 적외선 통신들을 포함하는) 전자기 통신들, 전자 통신들, 또는 다른 이러한 통신 수단을 포함한다.
개시된 방법들, 장치, 및 시스템들은 여하튼 제한하는 것으로서 해석되지 않아야 한다. 그 대신에, 본 개시물은 단독으로, 그리고 서로와의 다양한 조합들 및 하위 조합들로, 다양한 개시된 실시형태들의 모든 신규하고 비자명한 특징들 및 양태들에 대한 것이다. 개시된 방법들, 장치, 및 시스템들은 임의의 특정 양태 또는 특징 또는 그 조합으로 제한되지도 않고, 개시된 실시형태들은 임의의 하나 이상의 특정 장점들이 존재하거나 문제들이 해결되는 것을 요구하지도 않는다.
임의의 예로부터의 기술들은 다른 예들 중 임의의 하나 이상에서 설명된 기술들과 조합될 수 있다. 개시된 기술의 원리들이 적용될 수도 있는 많은 가능한 실시형태들을 고려하면, 예시된 실시형태들은 개시된 기술의 예들이고 개시된 기술의 범위에 대한 제한으로서 취해지지 않아야 한다는 것을 인식해야 한다. 오히려, 개시된 기술의 범위는 다음의 청구항들의 범위 및 사상에 의해 커버되는 것을 포함한다.

Claims (15)

  1. 이메일 동기화를 위한 방법에 있어서,
    토큰 버킷(token bucket)을 포함하는 컴퓨팅 디바이스 - 상기 토큰 버킷은 토큰들의 일시적인 저장을 허용하고, 각각의 토큰은 상기 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가함 - 에 의한 방법으로서,
    상기 적어도 하나의 이메일 애플리케이션에 의해 관리되고 이메일 서버에 의해 호스팅되는 이메일 계정과 연관된, 수신된 이메일 통신들의 빈도(frequency)를 결정하는 단계로서, 상기 수신된 이메일 통신들의 빈도를 결정하는 단계는 상기 토큰 버킷과 연관된 하나 이상의 특성들에 기초하는, 상기 빈도를 결정하는 단계;
    상기 결정된 빈도를 문턱 값과 비교하는 단계;
    상기 결정된 빈도가 상기 문턱 값 이하일 때,
    상기 이메일 서버와의 푸시 통신 채널을 확립하는 단계로서, 상기 푸시 통신 채널은 서버 개시된(server-initiated) 이메일 푸시 통신들을 수신하기 위한 것인, 상기 푸시 통신 채널을 확립하는 단계; 및
    상기 푸시 통신 채널을 사용하여 푸시 이메일 통신들을 수신함으로써, 상기 적어도 하나의 이메일 애플리케이션을 상기 이메일 계정과 동기화하는 단계; 및
    상기 결정된 빈도가 상기 문턱 값보다 더 클 때,
    상기 푸시 통신 채널을 폐쇄하는 단계; 및
    상기 컴퓨팅 디바이스에 의해 개시된 이메일 풀 요청(pull request)을 사용하여 상기 적어도 하나의 이메일 애플리케이션을 상기 이메일 계정과 동기화하는 단계
    를 포함하는, 이메일 동기화를 위한 방법.
  2. 제 1 항에 있어서,
    상기 토큰들 중 적어도 하나가 상기 토큰 버킷 내에서 이용가능할 때에 상기 푸시 이메일 통신들을 수신함으로써 상기 적어도 하나의 이메일 애플리케이션을 상기 이메일 계정과 동기화하는 단계를 포함하는, 이메일 동기화를 위한 방법.
  3. 제 1 항에 있어서,
    상기 푸시 이메일 통신들의 각각의 동기화를 위하여, 상기 토큰 버킷 내에 저장된 토큰들로부터 하나의 토큰을 공제하는(deducting) 단계; 및
    상기 토큰 버킷이 비어 있을 때,
    상기 푸시 통신 채널을 폐쇄하는 단계; 및
    상기 컴퓨팅 디바이스에 의해 개시된 상기 이메일 풀 요청을 사용하여 상기 적어도 하나의 이메일 애플리케이션을 상기 이메일 계정과 동기화하는 단계
    를 포함하는, 이메일 동기화를 위한 방법.
  4. 제 1 항에 있어서,
    시구간(period of time) 동안 상기 토큰 버킷으로부터 소비된 토큰들의 수에 기초하여, 수신된 이메일 통신들의 빈도를 결정하는 단계를 포함하는, 이메일 동기화를 위한 방법.
  5. 컴퓨팅 디바이스로 하여금, 이메일 동기화를 위한 방법을 수행하게 하도록 동작가능한 컴퓨터 실행가능 명령어들을 저장하는 컴퓨터 판독가능 저장 매체에 있어서,
    상기 방법은,
    상기 컴퓨팅 디바이스에서, 토큰들의 초기 세트로 토큰 버킷을 재설정하는 단계로서,
    각각의 토큰은 상기 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가하고; 그리고
    상기 토큰들의 초기 세트는 상기 컴퓨팅 디바이스와 연관된 하나 이상의 디바이스 사용 통계에 기초하여 결정되는, 상기 토큰들의 초기 세트로 토큰 버킷을 재설정하는 단계;
    상기 컴퓨팅 디바이스에 의해 개시된 이메일 풀 요청에 응답하여, 상기 토큰 버킷과 연관된 현재의 토큰 카운트가 포지티브인 것을 검증하는 단계; 및
    상기 현재의 토큰 카운트가 포지티브일 때,
    상기 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션을 이메일 서버에서 호스팅된 이메일 계정과 동기화하는 단계; 및
    상기 동기화에 기초하여 상기 현재의 토큰 카운트를 감소시키는 단계
    를 포함하는, 컴퓨터 판독가능 저장 매체.
  6. 제 5 항에 있어서,
    주기적인 재충전 시간 간격(refill time interval)들에서 새로운 토큰을 상기 토큰 버킷에 자동으로 추가하는 단계; 및
    상기 토큰 버킷을 위한 상기 현재의 토큰 카운트가 상기 토큰 버킷의 현재의 크기(size)와 연관된 토큰들의 최대 수와 동일할 때, 토큰들의 상기 자동 추가 단계를 중지시키는(ceasing) 단계
    를 포함하는, 컴퓨터 판독가능 저장 매체.
  7. 제 6 항에 있어서,
    상기 주기적인 재충전 시간 간격들을, 잔여 배터리 전력, 현재의 배터리 방전율(discharge rate), 이용가능한 배터리의 백분율, 수신된 셀룰러 신호 강도, 현재 활성인 충전 스테이터스(status), 및 현재 활성인 Wi-Fi 접속 중 하나 이상에 기초하여 변동시키는(varying) 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  8. 제 6 항에 있어서,
    상기 토큰 버킷을 위한 상기 현재의 토큰 카운트가 상기 토큰 버킷의 현재의 크기와 연관된 토큰들의 상기 최대 수 아래로 떨어졌을 때, 토큰들의 상기 자동 추가 단계를 재개하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  9. 이동 컴퓨팅 디바이스에 있어서,
    프로세서;
    메모리; 및
    토큰 버킷을 갖는 동기화 서비스를 포함하고,
    상기 토큰 버킷은 토큰들의 일시적인 저장을 허용하고, 각각의 토큰은 상기 컴퓨팅 디바이스 상에서 작동되는 적어도 하나의 이메일 애플리케이션의 동기화를 허가하며, 상기 동기화 서비스는 이메일 동기화를 위한 동작들을 수행하도록 구성되고, 상기 동작들은,
    토큰들의 초기 세트로 상기 토큰 버킷을 재설정하는 단계로서, 각각의 토큰은 상기 컴퓨팅 디바이스 상에서 작동되는 상기 적어도 하나의 이메일 애플리케이션과, 이메일 서버에 의해 호스팅된 대응하는 이메일 계정과의 동기화를 허가하는, 상기 토큰 버킷을 재설정하는 동작;
    상기 이메일 서버와의 푸시 통신 채널을 확립하는 단계로서, 상기 푸시 통신 채널은 서버 개시된 이메일 푸시 통신들을 수신하기 위한 것인, 상기 푸시 통신 채널을 확립하는 동작;
    상기 토큰들 중 적어도 하나가 상기 토큰 버킷 내에서 이용가능한지 여부를 결정하는 동작; 및
    상기 토큰들 중 적어도 하나가 상기 토큰 버킷 내에서 이용가능하지 않을 때, 상기 푸시 통신 채널을 폐쇄하는 동작
    을 포함하는, 이동 컴퓨팅 디바이스.
  10. 제 9 항에 있어서,
    상기 동작들은,
    상기 토큰들 중 적어도 하나가 상기 토큰 버킷 내에서 이용가능하면, 상기 푸시 통신 채널을 사용하여 푸시 이메일 통신들을 수신함으로써 상기 적어도 하나의 이메일 애플리케이션을 상기 대응하는 이메일 계정과 동기화하는 동작을 더 포함하는, 이동 컴퓨팅 디바이스.
  11. 제 5 항에 있어서,
    상기 현재의 토큰 카운트가 제로일 때, 상기 이메일 풀 요청에 기초하여 이메일 동기화를 중단하는(suspending) 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  12. 제 11 항에 있어서,
    새로운 토큰이 상기 토큰 버킷 내에 적립(deposit)되는지를 결정하는 단계; 및
    상기 새로운 토큰이 상기 토큰 버킷 내에 적립될 때, 상기 이메일 풀 요청에 기초하여 이메일 동기화를 재개하는 단계
    를 포함하는, 컴퓨터 판독가능 저장 매체.
  13. 제 5 항에 있어서,
    상기 적어도 하나의 이메일 애플리케이션은 상기 이메일 서버에 의해 호스팅된 복수의 사용자 이메일 계정들과 연관되고; 그리고
    상기 토큰 버킷은 상기 복수의 이메일 계정들과 연관된 이메일들을 동기화하기 위해 공유되는, 컴퓨터 판독가능 저장 매체.
  14. 제 5 항에 있어서,
    상기 이메일 풀 요청이 상기 컴퓨팅 디바이스의 사용자에 의해 개시되면, 상기 토큰 버킷 내에 새로운 토큰을 적립하는 단계; 및
    상기 새로운 적립된 토큰에 적어도 기초하여, 상기 컴퓨팅 디바이스 상에서 작동되는 상기 적어도 하나의 이메일 애플리케이션을 상기 이메일 서버에서 호스팅된 상기 이메일 계정과 동기화하는 단계
    를 포함하는, 컴퓨터 판독가능 저장 매체.
  15. 제 9 항에 있어서,
    상기 동작들은,
    상기 푸시 통신 채널이 폐쇄되면,
    상기 토큰들 중 적어도 또 다른 하나가 상기 토큰 버킷 내에서 이용가능한지 검출하는 동작; 및
    상기 토큰들 중 적어도 또 다른 하나가 상기 토큰 버킷 내에서 이용가능하면, 상기 이메일 서버와의 상기 푸시 통신 채널을 재확립하는 동작
    을 더 포함하는, 이동 컴퓨팅 디바이스.
KR1020167031614A 2014-04-14 2015-04-06 토큰 버킷을 사용하는 통신들의 배터리 효율적 동기화 KR102317693B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/252,699 US9479610B2 (en) 2014-04-14 2014-04-14 Battery efficient synchronization of communications using a token bucket
US14/252,699 2014-04-14
PCT/US2015/024416 WO2015160543A1 (en) 2014-04-14 2015-04-06 Battery efficient synchronization of communications using a token bucket

Publications (2)

Publication Number Publication Date
KR20160145116A true KR20160145116A (ko) 2016-12-19
KR102317693B1 KR102317693B1 (ko) 2021-10-25

Family

ID=53039602

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167031614A KR102317693B1 (ko) 2014-04-14 2015-04-06 토큰 버킷을 사용하는 통신들의 배터리 효율적 동기화

Country Status (5)

Country Link
US (2) US9479610B2 (ko)
EP (1) EP3132328A1 (ko)
KR (1) KR102317693B1 (ko)
CN (1) CN106233674B (ko)
WO (1) WO2015160543A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016128885A1 (en) * 2015-02-09 2016-08-18 Laurus Labs Private Limited A process for preparation of cobicistat
US9407585B1 (en) * 2015-08-07 2016-08-02 Machine Zone, Inc. Scalable, real-time messaging system
JP6640776B2 (ja) 2017-03-17 2020-02-05 キオクシア株式会社 メモリシステム
WO2020204899A1 (en) 2019-03-29 2020-10-08 Hewlett-Packard Development Company, L.P. Separation of objects for additive manufacturing
CN112311597B (zh) * 2020-10-28 2023-01-31 南京尚网网络科技有限公司 消息推送方法和装置
US11868287B2 (en) 2020-12-17 2024-01-09 Micron Technology, Inc. Just-in-time (JIT) scheduler for memory subsystems
US20220197563A1 (en) * 2020-12-17 2022-06-23 Micron Technology, Inc. Qos traffic class latency model for just-in-time (jit) schedulers
CN114679469B (zh) * 2022-05-26 2022-09-02 天津联想协同科技有限公司 一种数据处理方法、装置及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5373106B2 (ja) * 2008-11-11 2013-12-18 クゥアルコム・インコーポレイテッド LTEにおける効率的なUEQoS/ULパケット構築
JP5405870B2 (ja) * 2009-03-26 2014-02-05 京セラ株式会社 通信機器
KR101368553B1 (ko) * 2008-02-01 2014-03-06 인터디지탈 패튼 홀딩스, 인크 토큰 버킷들을 초기화, 유지 및 재구성하는 방법 및 장치

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263438A (ja) * 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
US6963859B2 (en) * 1994-11-23 2005-11-08 Contentguard Holdings, Inc. Content rendering repository
US7657628B1 (en) * 2000-11-28 2010-02-02 Verizon Business Global Llc External processor for a distributed network access system
US7725093B2 (en) 2006-03-29 2010-05-25 Intel Corporation Method and apparatus for a power-efficient framework to maintain data synchronization of a mobile personal computer to simulate a connected scenario
US7710975B2 (en) 2006-05-12 2010-05-04 International Business Machines Corporation Synchronization technique for exchanging data with a mobile device that conserves the resources of the mobile device
US8121585B2 (en) 2006-08-25 2012-02-21 International Business Machines Corporation Technique for synchronizing data with a mobile device based on a synchronization context
DE102007016117A1 (de) * 2007-04-03 2008-10-16 Siemens Ag Verfahren und System zum Bereitstellen eines REL-Tokens
US20110125856A1 (en) * 2009-11-25 2011-05-26 Lg Electronics Inc. Mobile terminal and method of providing email services in the mobile terminal
US8463859B2 (en) 2010-07-02 2013-06-11 Research In Motion Limited Email system including synchronization server(s) providing synchronization based upon synchronization indicators stored on mobile devices and related methods
US8676906B2 (en) * 2011-02-25 2014-03-18 Qualcomm Incorporated Email access manager for a wireless communication device
CN102118314A (zh) * 2011-02-28 2011-07-06 华为技术有限公司 流量管理的方法和管理装置
US20130205001A1 (en) 2012-02-02 2013-08-08 Motorola Mobility, Inc. Modifying application data synchronization based on application usage frequency
US9226230B2 (en) 2012-02-23 2015-12-29 Htc Corporation Handheld device and power saving control method thereof
US20130311581A1 (en) * 2012-05-18 2013-11-21 Andrew Milburn Transmission of command execution messages for providing a shared experience to both internal, at-venue participants, and external, networked participants
EP2685698A1 (en) 2012-07-12 2014-01-15 Samsung Electronics Co., Ltd Smart Scheduled Sync Method for Sync Applications
US20140289428A1 (en) * 2013-03-20 2014-09-25 Microsoft Corporation Dynamic Intervals for Synchronizing Data
US9787769B2 (en) * 2014-08-04 2017-10-10 Oracle International Corporation Power and network traffic optimization in communication synchronization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101368553B1 (ko) * 2008-02-01 2014-03-06 인터디지탈 패튼 홀딩스, 인크 토큰 버킷들을 초기화, 유지 및 재구성하는 방법 및 장치
JP5373106B2 (ja) * 2008-11-11 2013-12-18 クゥアルコム・インコーポレイテッド LTEにおける効率的なUEQoS/ULパケット構築
JP5405870B2 (ja) * 2009-03-26 2014-02-05 京セラ株式会社 通信機器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
비특허1 *

Also Published As

Publication number Publication date
EP3132328A1 (en) 2017-02-22
CN106233674A (zh) 2016-12-14
CN106233674B (zh) 2019-10-25
US9479610B2 (en) 2016-10-25
WO2015160543A1 (en) 2015-10-22
US20150296049A1 (en) 2015-10-15
US10356030B2 (en) 2019-07-16
KR102317693B1 (ko) 2021-10-25
US20170012918A1 (en) 2017-01-12

Similar Documents

Publication Publication Date Title
KR102317693B1 (ko) 토큰 버킷을 사용하는 통신들의 배터리 효율적 동기화
KR102673368B1 (ko) 네트워크 선택 방법 및 그 장치
US20200034725A1 (en) Methods and system for managing predictive models
EP2977854B1 (en) Method, apparatus, and user terminal for removing malicious power consuming application
KR101882469B1 (ko) 피어 이벤트 데이터에 기초한 모바일 디바이스의 동적 조정
US9781542B2 (en) Techniques for predictive power management of a mobile device
EP3391634B1 (en) Electronic device and method for controlling application and component
US10117047B1 (en) Location and time based application management
US11394775B2 (en) Mechanism for facilitating dynamic storage management for mobile computing devices
TW201631473A (zh) 用於背景工作管理的方法、計算裝置及可讀取媒體
KR20160132432A (ko) 멀티 프로세스 애플리케이션들을 위한 동적 자원 관리
KR102151135B1 (ko) 전력 관리 방법 및 그 방법을 처리하는 전자 장치
JP2020537213A (ja) 端末の電力消費を低減するための方法、および端末
US20230267133A1 (en) Systems and methods for providing predictions to applications executing on a computing device
WO2019032169A1 (en) CONTEXTUAL EXPERIENCE BASED ON LOCATION
WO2019024646A1 (zh) 应用管控方法、装置及电子设备
JP7272694B2 (ja) 端末の電力消費を低減するための方法、および端末
US8417222B1 (en) Systems and methods for delivering messages based on a device radio status
WO2019024643A1 (zh) 数据同步管控方法、装置及电子设备
US20210303056A1 (en) Background process management for a device
CN107436674A (zh) 终端控制方法、装置及非临时性计算机可读介质
KR20160034029A (ko) 알람 제어 방법 및 이를 지원하는 전자 장치
CN107545198B (zh) 一种按键管理方法和装置
CN108885558B (zh) 通过事件触发器合并来降低***能耗
CN117112243A (zh) 一种动态线程池管理方法和相关装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant