KR101557843B1 - 네트워크 액세스 요청들의 관리 - Google Patents

네트워크 액세스 요청들의 관리 Download PDF

Info

Publication number
KR101557843B1
KR101557843B1 KR1020137027548A KR20137027548A KR101557843B1 KR 101557843 B1 KR101557843 B1 KR 101557843B1 KR 1020137027548 A KR1020137027548 A KR 1020137027548A KR 20137027548 A KR20137027548 A KR 20137027548A KR 101557843 B1 KR101557843 B1 KR 101557843B1
Authority
KR
South Korea
Prior art keywords
request
mobile device
application
requests
applications
Prior art date
Application number
KR1020137027548A
Other languages
English (en)
Other versions
KR20140005298A (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
Priority claimed from US13/288,933 external-priority patent/US9264868B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20140005298A publication Critical patent/KR20140005298A/ko
Application granted granted Critical
Publication of KR101557843B1 publication Critical patent/KR101557843B1/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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3209Monitoring remote activity, e.g. over telephone lines or network connections
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephone Function (AREA)
  • Telephonic Communication Services (AREA)

Abstract

모바일 디바이스 상에 설치된 애플리케이션들로부터의 요청들을 인터셉트하기 위한 방법들, 시스템들, 및 디바이스들이 설명된다. 요청들은 모바일 디바이스에 대한 통신 채널들을 설정하는 시스템 호출들이다. 요청들은 캡쳐되어, 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것이 보류된다. 인터셉트된 요청은 다른 인터셉트된 요청들과 함께 집합화된다. 집합화된 요청들은 함께 번들링되고, 트리거링 이벤트의 검출 시에 운영 체제에 릴리즈된다. 애플리케이션들로부터의 요청들의 캡쳐, 보류 및 집합화는 모바일 디바이스가 배경 모드에 있는 경우 발생한다.

Description

네트워크 액세스 요청들의 관리{MANAGEMENT OF NETWORK ACCESS REQUESTS}
관련 출원들에 대한 상호- 참조
본 출원은 “SYSTEMS AND METHODS FOR SYNCHRONIZING DATA CONNECTION REQUESTS”라는 명칭으로 2011년 1월 19일에 출원된 미국 가특허 출원번호 제61/434,253호, “CONNECTIVITY MANAGEMENT FOR APPLICATIONS ON A USER DEVICE”라는 명칭으로 Giaretta 등에 의해 2011년 3월 18일에 출원된 미국 가특허 출원번호 제61/454,457호(Attorney Docket No. 111354P1),“Controlling Application Access to a Network”라는 명칭으로 2011년 6월 30일에 출원된 미국 가특허 출원번호 제61/503,395호 및 “SYSTEMS AND METHODS FOR SYNCHRONIZATION OF APPLICATION COMMUNICATIONS”라는 명칭의 미국 특허 출원번호 제XX/XXX,XXX호의 우선권을 35 U.S.C. §119(e)하에서 주장하며, 이들의 개시내용들은 그들 전체가 인용에 의해 여기에 명백하게 통합된다.
무선 디바이스들에 광범위한 애드-온 서비스들 및 특징들을 제공하도록 동작하는 애플리케이션들 또는 디바이스 애플릿들이 이제 이용가능하다. 예를 들어, 이제 무선 디바이스들이 디바이스 애플릿(applet)들을 다운로드 및 런치(launch)하여 쇼핑, 검색, 위치확인(position location), 드라이빙 내비게이션(driving navigation), 또는 다른 기능들의 어레이와 같은 부가가치 기능(value added function)들을 수행하는 것이 가능하다. 네트워크 및 애플리케이션 제공자들은 일반적으로 추가 비용으로 디바이스 사용자들에 이러한 디바이스 애플릿들을 공급한다. 따라서, 디바이스 애플릿들의 사용은 무선 디바이스들의 기능성(functionality ) 및 사용성(usability)을 증가시킬 수 있으며, 디바이스들 자체 상에서 원래 이용가능하지 않는 사양들 및 편의성을 디바이스 사용자들에게 공급할 수 있다.
통상적으로, 무선 디바이스는 다수의 라디오들 중 임의의 것을 사용하여 하나 이상의 통신 네트워크들과 인터페이싱한다. 예를 들어, 무선 디바이스는 셀룰러, WiFi, 블루투스, 또는 다른 타입들의 라디오 액세스 기술들을 사용하여 통신들을 제공하는 다양한 라디오들을 포함할 수 있다. 따라서, 무선 디바이스 상에서 실행하는 애플리케이션들은 통신 채널을 설정하기 위해 라디오와 인터페이싱하고, 채널은 적절한 네트워크와 통신하기 위해 애플리케이션들에 의해 사용된다.
애플리케이션들은 디바이스가 배경 모드에 있는 경우라도 통신 채널들을 설정하기 위해 무선 디바이스 상의 라디오들과 계속 인터페이싱할 수 있다. 디바이스 상에 설치되는 애플리케이션들의 수가 증가함에 따라, 디바이스의 배터리 전력은 디바이스가 활성이지 않은 동안 네트워크 통신들의 반복된 설정으로 인해 불필요하게 소모될 수 있다. 또한, 스마트폰들과 같은 무선 디바이스들의 사용 증가로, 데이터 네트워크들은 통신 채널들의 셋업과 연관된 네트워크 시그널링에 의해 오버로드될 수 있다.
모바일 디바이스 상에서 실행하는 애플리케이션 및 네트워크 사이의 접속성을 관리하기 위한 방법들, 시스템들 및 디바이스들이 설명된다. 일 예에서, 디바이스 상에서 실행하는 애플리케이션으로부터의 네트워크 액세스에 대한 요청이 인터셉트(intercept)될 수 있다. 예를 들어, 랩퍼(wrapper)는 요청을 인터셉트하기 위해 모바일 디바이스의 운영 체제 및 애플리케이션 사이에 배치될 수 있다. 요청을 인터셉트할 시에, 요청은 운영 체제의 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 스택(stack)에 도달하는 것이 보류될 수 있다. 일 예에서, 요청은 트리거링 이벤트가 발생하는 경우 운영 체제에 릴리즈될 수 있다. 요청들의 캡쳐(capturing), 보류(holding) 및 릴리즈(releasing)는 모바일 디바이스가 배경 모드에 있는 경우 발생할 수 있다.
일 구성에서, 요청은 모바일 디바이스에 대한 통신을 수행하기 위해 다른 인터셉트된 요청들과 함께 집합화될 수 있다. 애플리케이션으로부터의 요청의 인터셉트 및 다른 요청들의 인터셉트는 상이한 시간들에서 발생할 수 있다.
일 예에서, 랩퍼에 대한 명령들이 실행될 수 있다. 실행된 랩퍼는 제1 애플리케이션으로부터의 요청의 인터셉트를 수행할 수 있다. 일 구성에서 랩퍼는 모바일 디바이스의 운영 체제의 애플리케이션층 및 소켓층 사이에 위치될 수 있다.
일 구성에서, 제1 애플리케이션은 요청들을 보류하는 애플리케이션의 클래스로서 식별될 수 있다. 애플리케이션은 중요 애플리케이션 또는 비-중요 애플리케이션으로서 식별될 수 있다. 비-중요 애플리케이션들로부터의 요청들만이 보류될 수 있다.
일 실시예에서, 트리거링 이벤트는 타이머의 종료, 디스플레이의 상태 변경, 마이크로폰의 상태 변경, 스피커의 상태 변경, 모바일 디바이스의 글로벌 포지셔닝 시스템(GPS) 센서의 상태 변경, 유니버셜 직렬 버스 포트가 사용중이라는 표시, 오디오 장비가 모바일 디바이스에 접속된다는 표시, 비디오 장비가 모바일 디바이스에 접속된다는 표시, Wi-Fi 타입의 네트워크에 대한 접속이 이용가능하다는 표시, 또는 셀룰러 타입의 네트워크에 대한 라디오 접속이 개방된다는 표시 중 적어도 하나를 포함할 수 있다.
또한, 일 예에서, 제1 애플리케이션의 지연 허용오차가 결정될 수 있다. 추가로, 콜백 기능이 결정된 지연 허용 오차에 기초하여 제1 애플리케이션에 제공될 수 있다. 콜백 기능은 통신 자원들에 접속하도록 제1 애플리케이션에 명령할 수 있다.
일 구성에서, 제1 애플리케이션과 연관된 제1 타이머의 만료 시간이 결정될 수 있다. 제2 애플리케이션과 연관된 제2 타이머의 허용오차 및 만료 시간이 또한 결정될 수 있다. 제2 타이머는 제1 타이머의 만료 시간, 허용오차, 및 제2 타이머의 만료 시간에 기초하여 만료하도록 강제될 수 있다. 제1 애플리케이션으로부터의 요청 및 제2 애플리케이션으로부터의 인터셉트된 요청은 모바일 디바이스에 대한 통신을 수행하도록 릴리즈될 수 있다.
일 예에서, 기한이 애플리케이션으로부터 수신될 수 있다. 요청은 기한 이전까지 보류될 수 있다. 통신 자원들에 접속하기 위한 요청은 기한 이전에 릴리즈될 수 있다. 일 구성에서, 요청은 모바일 디바이스에 대한 통신 채널을 설정하기 위한 시스템 호출을 포함할 수 있다. 요청은 트리거링 이벤트를 검출할 시에 운영 체제의 소켓층에 릴리즈될 수 있다.
일 실시예에서, 요청의 릴리즈가 얼마나 자주 발생하는지에 관한 간격에 대한 표시가 수신될 수 있다. 간격은 네트워크에서 상태기반 인터넷 프로토콜(IP) 미들박스 내의 타임아웃 값보다 더 작을 수 있다.
무선 통신을 위해 구성되는 모바일 디바이스가 또한 설명된다. 디바이스는 프로세서 및 프로세서와 전자 통신 중인 메모리를 포함할 수 있다. 메모리는 운영 체제를 포함할 수 있다. 프로세서는 접속성 엔진을 포함할 수 있다. 엔진은 모바일 디바이스 상의 제1 애플리케이션으로부터의 요청을 인터셉트하기 위한 명령들을 실행하도록 구성될 수 있다. 요청은 모바일 디바이스에 대한 통신을 수행하기 위한 요청일 수 있다. 엔진은 요청이 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것을 보류시키고, 트리거링 이벤트를 검출할 시에 운영 체제에 요청을 릴리즈하도록 추가로 구성될 수 있다.
모바일 디바이스상의 애플리케이션들로부터의 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치가 또한 설명된다. 장치는 모바일 디바이스 상의 애플리케이션으로부터의 요청을 인터셉트하기 위한 수단을 포함한다. 요청은 모바일 디바이스에 대한 통신을 수행하기 위한 요청일 수 있다. 장치는 요청이 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것을 보류시키기 위한 수단, 및 트리거링 이벤트의 검출 시에 운영 체제에 요청을 릴리즈하기 위한 수단을 더 포함할 수 있다.
모바일 디바이스 상의 애플리케이션들로부터의 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 컴퓨터 프로그램 물건이 또한 설명된다. 물건은 비-일시적 컴퓨터-판독가능한 매체를 포함할 수 있다. 매체는 모바일 디바이스 상의 애플리케이션으로부터의 요청을 인터셉트하기 위한 코드를 포함할 수 있다. 요청은 모바일 디바이스에 대한 통신을 수행하기 위한 요청일 수 있다. 매체는 요청이 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것을 보류시키기 위한 코드, 및 트리거링 이벤트의 검출 시에 운영 체제에 요청을 릴리즈하기 위한 코드를 더 포함할 수 있다.
전술내용은 개시내용에 따른 예들의 특징들 및 기술적 양상들을 다소 넓게 개요화하였다. 추가적인 특징들이 하기에 설명될 것이다. 개시된 개념 및 특정 예들은 본 개시내용의 동일한 목적들을 수행하기 위한 다른 구조들을 수정하거나 설계하기 위한 기본서로서 용이하게 활용될 수 있다. 이러한 균등 구성들은 첨부된 청구항들의 사상 및 범위로부터 벗어나지 않는다. 그 구성 및 동작 방법 모두에 대해, 여기서 개시된 바와 같은 개념들의 특성인 것으로 간주되는 특징들은 첨부 도면들과 관련하여 고려하는 경우 후속적인 설명으로부터 더 잘 이해될 것이다. 도면들 각각은 청구항들의 제한들의 정의로서가 아니라 오직 예시 및 설명의 목적으로 제공된다.
본 발명의 속성의 추가적인 이해가 후속적인 도면들을 참조하여 실현될 수 있다. 첨부 도면들에서, 유사한 컴포넌트들 또는 특징들은 동일한 참조 라벨을 가질 수 있다. 추가로, 동일한 타입의 여러 컴포넌트들은 점선에 의한 참조 라벨 및 유사한 컴포넌트들 사이를 구별하는 제2 라벨에 따름으로써 구별될 수 있다. 오직 제1 참조 라벨이 명세서에서 사용되는 경우, 설명은 제2 참조 라벨과는 무관한 동일한 제1 참조 라벨을 가지는 유사한 컴포넌트들 중 임의의 하나에 적용가능하다.
도 1은 네트워크 환경의 블록도를 도시한다.
도 2는 모바일 디바이스에 대한 아키텍쳐를 예시하는 블록도를 도시한다.
도 3은 네트워크 액세스에 대한 요청들의 지연을 제공하는 모바일 디바이스의 블록도를 도시한다.
도 4는 네트워크 액세스에 대한 요청들을 지연시키기 위한, 모바일 디바이스 상의 아키텍쳐의 샘플 블록도를 도시한다.
도 5는 네트워크 액세스에 대한 요청들을 집합화하기 위한 예시적인 타이밍도를 도시한다.
도 6은 모바일 디바이스 상에서 구현되는 아키텍쳐의 일 예를 도시한다.
도 7은 네트워크 액세스에 대한 요청들을 지연시키기 위한 방법의 일 예를 예시하는 흐름도이다.
도 8은 애플리케이션의 분류에 기초하여 네트워크 액세스에 대한 요청들을 지연시키기 위한 방법의 일 예를 예시하는 흐름도이다.
도 9는 다수의 모바일 디바이스로부터 수신된 네트워크 액세스에 대한 요청들을 집합화하기 위한 방법의 일 예를 예시하는 흐름도이다.
도 10은 데이터 접속 요청들을 동기화하기 위한 방법의 일 예를 예시하는 흐름도이다.
도 11은 3개의 애플리케이션들이 주기적으로 접속 요청들을 개시하는 타이밍도를 예시한다.
도 12는 접속 요청들의 일부가 동기화된 도 11의 타이밍도를 예시한다.
도 13은 3개의 애플리케이션들이 주기적으로 접속 요청들을 개시하는 타이밍도를 예시한다.
도 14는 접속 요청들의 일부가 동기화된, 도 13의 타이밍도를 예시한다.
모바일 디바이스 상에 설치된 애플리케이션들로부터의 요청들을 인터셉트하기 위한 방법들, 시스템들 및 디바이스들이 설명된다. 요청들은 모바일 디바이스에 대한 통신 채널들을 설정하는 시스템 호출들일 수 있다. 용어들 "요청들" 및 "시스템 호출들"은 상호교환가능하게 사용될 수 있다. 요청들은 캡쳐되어 모바일 디바이스 상에서 실행되는 운영 체제의 TCP/IP 스택에 도달하는 것이 보류될 수 있다. 인터셉트된 요청은 다른 인터셉트된 요청들과 함께 집합화될 수 있다. 집합화된 요청들은 함께 번들링되고(bundled), 모바일 디바이스 상에서 트리거링 이벤트를 검출할 시에 거의 동일한 시간에 운영 체제에 릴리즈될 수 있다. 애플리케이션들로부터의 요청들의 캡쳐, 보류 및 집합화는 모바일 디바이스가 배경 모드에 있는 경우 발생할 수 있다.
스마트폰들, 개인 디지털 보조 단말들 등과 같은 모바일 디바이스들에서, 소프트웨어 애플리케이션들은 사용자가 활성적으로 디바이스를 사용하고 있지 않더라도 계속 동작할 수 있다. 소셜 네트워킹 애플리케이션들, 이메일 또는 다른 통신 애플리케이션들, 데이터 피드(data feed)들 등과 같은 애플리케이션들(인기 있는 예들은 Facebook®, Gmail®, Twitter® 등을 포함함)은, 사용자가 디바이스를 사용하지 않는 경우라도 데이터를 계속 송신 및 수신할 수 있다. 심지어 비활성 동작 모드 하에서도, 활성 시의 전력 소모 및 스파이크들은 심지어 디바이스가 표면상으로 사용되지 않는 경우라도, 계속 동작하는 애플리케이션들로부터 발생할 수 있다. 이들 애플리케이션들에 의한 동작은 외부 네트워크에 의해 제공되는 것과 같은 통신 자원들을 활용할 수 있다.
애플리케이션들은 배경 모드로부터 접속 모드로 모바일 디바이스에 의한 빈번한 트랜지션(transition)들을 트리거링할 수 있거나, 또는 그렇지 않은 경우 이들은 배경 모드 또는 불연속적 수신(DRX)과 같은 다른 대안적 접속 모드들에 진입하는 디바이스를 간섭할 수 있다. 사용자가 디바이스에 활성적으로 관여하지 않는 경우 애플리케이션들에 의한 라디오 활성화의 이러한 상승된 레벨들은 배터리 수명의 조기 소진, 라디오 네트워크들의 원치 않는 증가한 로드, 또는 다른 원치 않는 영향들을 초래할 수 있다.
모바일 디바이스는 디바이스의 특정 입력들이 동작하지 않거나 슬립 상태인 경우 배경 모드일 수 있다. 다시 말해, 디바이스는 사용자가 디바이스를 사용하지 않는 경우 배경 모드일 수 있다. 예를 들어, 오디오 입력들(예를 들어, 마이크로폰)이 오프인 경우, 디바이스는 배경 모드에 있는 것으로 간주될 수 있다. 추가로, 시각적 입력들(예를 들어, 디바이스의 디스플레이)이 오프인 경우, 디바이스는 배경 모드에 있는 것으로 결정될 수 있다. 하기에 설명될 바와 같이, 추가적인 입력들은, 모바일 디바이스가 배경 모드에 있는지의 여부를 결정하기 위해 사용될 수 있다.
모바일 디바이스 상에서 실행하는 애플리케이션 및 네트워크 사이의 접속성의 관리가 설명된다. 디바이스가 배경 모드일 때 모바일 디바이스 상에 설치된 다수의 애플리케이션들이 네트워크에 대한 액세스를 요청하는 경우, 불필요한 양의 네트워크 시그널링이 발생할 수 있다. 예를 들어, 제1 애플리케이션은 통신 채널을 또한 설정하기 위한 시스템 호출을 개시할 수 있고, 이후 데이터가 전송/수신된 후에, 채널이 단절될 수 있다. 제2 애플리케이션은 이후 데이터를 전송/수신하기 위한 통신 채널을 설정하기 위한 시스템 호출을 개시할 수 있다. 통신 채널이 설정될 때마다, 네트워크의 이용가능한 대역폭이 감소할 수 있도록 네트워크 시그널링의 양은 증가할 수 있다. 추가로, 디바이스가 배경 모드에 있는 동안 다수의 애플리케이션이 네트워크에 대한 액세스를 요청하는 경우, 불필요한 양의 배터리 전력이 소모될 수 있다. 통신 채널이 설정될 때마다, 모바일 디바이스가 활성 모드로 진입할 때 이용가능한 전력이 더 낮도록 배터리 전력이 감소할 수 있다. 그 결과, 본 발명의 시스템들 및 방법들은 네트워크 시그널링을 감소시키고 배터리 전력을 보존하도록 네트워크 액세스에 대한 요청들을 보류하고 집합화할 수 있다. 이전에 언급된 바와 같이, 이는 디바이스가 활성이 아닌 경우 발생할 수 있다. 추가로, 시스템 호출들의 보류 및 집합화는 디바이스의 배터리 전력이 특정 임계 양 미만으로 떨어지는 경우 발생할 수 있다. 트리거링 이벤트가 발생하는 경우(예를 들어, 디바이스가 활성 모드로 진입하는 경우), 집합화된 요청들은 네트워크 시그널링의 양을 감소시킬 뿐만 아니라 각각의 별도의 요청과 연관된 배터리 전력의 소모를 감소시키기 위해 함께 릴리즈될 수 있다.
요청들의 보류 및 집합화는 모바일 디바이스가 사용자에 의한 디바이스의 사용을 간섭하지 않기 위해 비활성 모드에 있는 경우 수행될 수 있다. 일 예에서, 사용자 디바이스 상의 애플리케이션으로부터 네트워크 액세스에 대한 요청이 인터셉트될 수 있다. 예를 들어, 랩퍼는 요청들을 인터셉트하기 위해 디바이스의 운영 체제 층 및 모바일 디바이스의 애플리케이션 층 사이에 배치될 수 있다. 일 예에서, 랩퍼는 요청들을 인터셉트하는 소프트웨어 엔티티일 수 있다. 랩퍼는 애플리케이션 층 내의 애플리케이션들 뿐만아니라 운영 체제층 내의 운영 체제에 대해 투명(transparent)할 수 있다. 요청을 인터셉트할 시에, 요청은 운영 체제에 도달하는 것이 보류되거나 지연될 수 있다. 일 구성예에서, 요청은 애플리케이션층 내의 추가적인 애플리케이션들로부터 수신되는 다른 인터셉트된 요청들과 함께 집합화될 수 있다. 트리거링 이벤트가 검출되는 경우, 집합화된 요청들은 운영 체제에 릴리즈될 수 있다. 그 결과, 랩퍼는 요청들을 투명하게 인터셉트하고 집합화하며, 이후 추가적인 프로세싱이 완료되는 경우 집합화된 요청들을 릴레이(relay)할 수 있다.
추가로, 보류된 요청들이 얼마나 자주 디바이스의 운영 체제에 대해 릴리즈되는지를 표시하는 간격이 결정될 수 있다. 간격은 하기에 설명되는 미들박스의 상태를 유지하도록 결정될 수 있다. 일 예에서, 인터넷 프로토콜(IP) 호스트들은 상태기반 미들박스들에 의해 분리될 수 있다. 상태기반 미들박스는 방화벽 및 네트워크 어드레스 번역(NAT: network address translation) 기능들을 수행할 수 있다. 방화벽의 기능은 디바이스의 어느 인바운드/아웃바운드 포트(inbound/outbound port)들이 개방되는지 또는 이용가능한지를 결정하는 것일 수 있다. NAT 기능들은 셀룰러 네트워크들 상에 지속적으로 전개되지 않을 수 있지만, LAN/WLAN 상에 계속 전개될 수 있다. 모바일 디바이스 상에서 실행하는 애플리케이션들은 셀룰러 네트워크와 Wi-Fi 네트워크 사이를 구별하지 못할 수 있으며, 그 결과, 애플리케이션들은 셀룰러 네트워크 상에서 동작가능한 NAT 기능들을 유지하기 위한 "킵-어라이브" 요청들을 발신하기 위해 타이머를 사용할 수 있다. 미들박스들의 상태는 타이머가 만료할 때까지 유지될 수 있다. 장기간(long-lived) 접속(TCP 또는 UDP)이 요구되는 경우, 미들박스들은 접속 전반에 걸쳐 자신들의 상태를 유지할 수 있다. 모바일 디바이스들(예를 들어, 스마트폰들) 상에서 실행하는 애플리케이션들은 (Wi-Fi 네트워크들에 대조적으로) 셀룰러 네트워크들에 맞추어지지 않을 수 있다. 그 결과, 이들 애플리케이션들은, 간격이 야기하는 경우와는 무관하게 피크가 셀룰러 네트워크들에 대한 시그널링인 어느 곳에서나 작용하는 킵-어라이브/재접속 간격들을 선택할 수 있다. 따라서, 후속내용은 디바이스가 배경 모드에 있는 동안 네트워크 액세스에 대해 이들 요청들을 보류하고 특정 네트워크에 의해 결정된 간격들에서 또는 특정 트리거링 이벤트가 발생한 때에 요청들을 릴리즈함으로써 네트워크 액세스에 대한 시스템 호출들의 수를 감소시킴으로써 전력을 보존하고 시그널링을 감소시키기 위한 시스템들 및 방법들을 설명한다.
후속하는 설명은 예들을 제공하며, 청구항들에서 제시된 범위, 적용범위, 또는 구성의 제한이 아니다. 본 개시내용의 사상 및 범위로부터의 이탈 없이 논의되는 엘리먼트들의 기능 및 배열에서 변경들이 이루어질 수 있다. 다양한 실시예들은 적절한 경우 다양한 프로시져들 또는 컴포넌트들을 생략하거나, 대체하거나 또는 추가할 수 있다. 예를 들어, 설명된 방법들은 설명된 것과는 상이한 순서로 수행될 수 있고, 다양한 단계들이 추가되거나, 생략되거나 또는 결합될 수 있다. 또한, 특정 실시예들에 대해 설명된 특징들은 다른 실시예들에서 결합될 수 있다.
이제 도 1을 참조하면, 블록도는 무선 네트워크 환경(100)의 예를 예시한다. 네트워크 환경(100)은 모바일 디바이스(102) 및 통신 네트워크(115)를 포함할 수 있다. 디바이스(102)는 다수의 라디오 채널들(110-a)을 사용하여 네트워크(115)와 통신할 수 있다. 예를 들어, 제어 채널(110-a-1)은 디바이스(105) 및 네트워크(115) 사이에 설정될 수 있다. 추가적으로, 다른 타입들의 채널들(110-a-2 내지 110-a-n)이 또한 설정될 수 있다. 이들 다른 타입들의 채널들은 데이터 채널들, 음성 채널들 등을 포함할 수 있다.
동작 동안, 디바이스(102)는 다수의 라디오들 중 임의의 것을 사용하여 네트워크(115)와 인터페이스할 수 있는 애플리케이션들을 실행할 수 있다. 예를 들어, 실행 애플리케이션은 네트워크(115)와의 통신들을 설정하기 위한 요청을 발행할 수 있다. 일 예에서, 요청들은 소켓층 호출과 같은 네트워킹 시스템 호출일 수 있다. 요청은 디바이스(105) 상의 운영 체제의 소켓층에 대해 의도될 수 있다. 종래의 디바이스들은 통상적으로 이러한 타입들의 요청들이 프로세싱될 운영 체제로 직접 진행하게 한다. 요청의 수신 시에, 종래의 디바이스들은 데이터 접속 셋업 프로시져를 통해 제어 채널(110-a-1)을 설정하기 위한 네트워크 시그널링 프로세스들을 시작한다. 데이터 접속 셋업 프로시져들이 모바일 디바이스(105) 상에서 실행되는 경우, 배터리 전력이 소모되고, 네트워크에 걸친 시그널링의 레벨이 증가할 수 있다. 이는 모바일 디바이스(105) 및 네트워크(115)의 효율성을 감소시킬 수 있다.
일 구성에서, 디바이스(105)는 운영 체제에 대한 요청의 릴리즈를 지연시키기 위한 아키텍쳐를 포함할 수 있다. 이러한 아키텍쳐는 애플리케이션으로부터의 네트워크 액세스에 대한 요청을 인터셉트할 수 있다. 요청을 인터셉트할 시에, 아키텍쳐는 요청이 운영 체제의 TCP/IP 스택에 도달하는 것을 보류하거나 지연시킬 수 있다. TCP/IP 스택은, 네트워크를 통해 데이터를 전송하기 위한 표준을 운영 체제에 제공하는, 운영 체제 내로 내장될 수 있는 통신 프로토콜들을 포함할 수 있다. 인터셉트된 요청은 추가적인 애플리케이션들로부터 수신된 네트워크 액세스에 대한 다른 인터셉트된 요청들과 함께 집합화될 수 있다. 집합화된 요청들은 함께 번들링되고, 네트워크 액세스에 대한 단일 요청으로서 릴리즈될 수 있다. 또다른 예에서, 집합화된 요청들은 특정 이벤트(예를 들어, 모바일 디바이스가 활성이 됨)의 발생 시에 릴리즈될 수 있다. 일 구성에서, 인터셉트, 보류 및 집합화에 관련하여 전술된 아키텍쳐는 디바이스(105)가 비활성 모드인 경우 사용될 수 있다.
도 2는 도 1의 모바일 디바이스(105)의 예일 수 있는 모바일 디바이스(105-a)의 아키텍쳐(200)의 일 예를 도시한다. 디바이스(105-a)의 아키텍쳐(200)는 접속성 엔진(225)을 포함할 수 있다. 접속성 엔진(225)은 디바이스(105-a) 상의 애플리케이션 층(220)에서 실행하는 애플리케이션이 도 1의 네트워크(115)와 같은 네트워크에 언제 액세스할 수 있는지를 관리할 수 있다. 애플리케이션층(220)은 라디오 유닛(245)의 라디오들(250-a) 중 하나 이상을 사용하여, 네트워크(115)와 같은 외부 네트워크들과 통신하고 다양한 기능들을 제공하기 위해 실행할 수 있는 애플리케이션들을 포함할 수 있다.
일 구성에서, 접속성 엔진(225)은 랩퍼(230)를 실행할 수 있다. 일 예에서, 랩퍼(230)는 애플리케이션층(220) 내의 애플리케이션으로부터 발신하는 네트워크 액세스에 대한 시스템 호출을 인터셉트할 수 있다. 랩퍼(230)는 요청이 디바이스(105-a) 상에서 실행하는 운영 체제(235)에 도달하는 것을 보류할 수 있다. 랩퍼(230)는 또한 추가적인 애플리케이션들로부터 인터셉트되는 다른 시스템 호출들과 함께, 인터셉트된 시스템 호출을 집합화할 수 있다. 랩퍼(230)는 집합화된 시스템 호출들이 운영 체제(235)의 소켓층(240)에 도달하는 것을 보류할 수 있다. 네트워크 액세스에 대한 시스템 호출이 소켓층(240)에 도달하는 경우, 라디오들(250-a) 중 하나 이상을 사용하여 통신 채널을 설정하기 위한 프로세스가 개시될 수 있다. 소켓층(240)은 요청을 프로세싱하고, 네트워크(115)와 요청을 개시했던 애플리케이션 사이에 접속을 설정하기 위한 접속 설정 프로시져를 개시할 것을 특정 라디오에 통지할 수 있다. 예를 들어, 소켓층(240)은 특정 애플리케이션과 라디오, 예를 들어, 라디오 1(250-a-1) 사이의 바인딩을 설정하기 위한 호출들(또는 요청들)을 발행할 수 있다. 라디오 1(250-a-1)는, 도 1의 제어 채널(110-a-1)의 예일 수 있는 제어 채널을 설정함으로써 접속 셋업 프로시져를 시작하기 위한 신호들을 네트워크(115)에 전송하기 시작할 수 있다.
집합화된 요청들이 소켓층(240)에 함께 릴리즈되는 경우, 소켓층 기능들은 애플리케이션이 네트워크 액세스에 대한 시스템 호출을 제공할 때마다 셋업 프로시져들을 개시한다기 보다는, 특정 라디오(250-a)와 요청들을 송신했던 애플리케이션들 사이에 접속을 설정하기 위해 한번 개시될 수 있다. 이후, 선택된 라디오들은 요청들을 발신했던 애플리케이션들 및 네트워크(115)와의 데이터 접속을 설정하기 위해 네트워크 시그널링을 시작할 수 있다.
따라서, 디바이스 아키텍쳐(200)는 디바이스(105-a) 상에서 실행하는 애플리케이션들에 의해 네트워크에 시스템 호출 액세스의 집합화를 제공한다. 집합화는 소켓층(235)에 대한 번들로서 다수의 시스템 호출들을 릴리즈함으로써 배터리 소모 및 네트워크 시그널링을 감소시키는 역할을 할 수 있다.
도 3은 네트워크 액세스에 대한 요청들의 보류 및 집합화를 구현하는 모바일 디바이스(105-b)의 블록도(300)를 도시한다. 디바이스(105-b)는 도 1 또는 도 2의 디바이스(105)의 예일 수 있다. 디바이스(105-b)는 프로세서(360), 메모리(355), 애플리케이션층(220), 랩퍼(230), 접속성 엔진(225), 운영 체제(235), 및 라디오 유닛(245)을 포함할 수 있으며, 이들 모두는 통신 버스(314)를 사용하여 통신하도록 커플링된다. 메모리(355)는 애플리케이션층(220), 랩퍼(230) 및 운영 체제(235)를 저장할 수 있다. 프로세서(360)는 접속성 엔진(225)을 포함할 수 있다. 접속성 엔진(225)은 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA) 또는 다른 프로그램가능 논리 디바이스, 이산 게이트 또는 트랜지스터 논리, 이산 하드웨어 컴포넌트들, 또는 여기서 설명된 기능들을 수행하도록 설계되는 이들의 임의의 조합으로서 구현될 수 있다. 접속성 엔진(225)은 모바일 디바이스 상의 애플리케이션으로부터의 요청을 인터셉트하기 위한 수단, 요청이 모바일 디바이스 상의 운영 체제에 도달하는 것을 보류하기 위한 수단, 및 트리거링 이벤트를 검출할 시에 운영 체제에 요청을 릴리즈하기 위한 수단을 포함할 수 있다. 또한, 접속성 엔진(225)은 모바일 디바이스(105)에 대한 통신을 수행하기 위해 다른 인터셉트된 요청들과 함께 요청을 집합화하기 위한 수단을 포함할 수 있다. 접속성 엔진(225)은 또한 도 2, 도 3 또는 도 4의 랩퍼(230)를 실행하기 위한 수단을 포함할 수 있다. 실행된 랩퍼는 애플리케이션으로부터의 요청을 인터셉트할 수 있다. 추가로, 엔진(225)은 애플리케이션을 요청들을 보류하는 애플리케이션의 클래스로서 식별하기 위한 수단을 포함할 수 있다. 또한, 접속성 엔진(225)은 애플리케이션을 중요 애플리케이션 또는 비-중요 애플리케이션으로서 식별하기 위한 수단, 및 비-중요 애플리케이션들로부터의 요청들만을 보류하기 위한 수단을 포함할 수 있다. 디바이스(105-b)가 단지 하나의 구현예이며, 다른 구현예들이 가능하다는 점에 유의해야 한다.
일 양상에서, 프로세서(360)는 중앙 처리 장치(CPU), 프로세서, 게이트 어레이, 하드웨어 로직, 메모리 엘리먼트들, 및/또는 소프트웨어를 실행하는 하드웨어 중 적어도 하나를 포함한다. 프로세서(360)는 디바이스(105-b)의 동작을 제어하도록 동작하고, 따라서, 애플리케이션층(220)에서 실행하는 애플리케이션들에 의해 개시되는 네트워크 액세스에 대한 시스템 호출들은 운영 체제(235)로부터 도달하는 것이 보류되고, 다른 시스템 호출들과 함께 집합화될 수 있다. 일 구현예에서, 프로세서(360)는 다수의 기능들 중 임의의 것을 수행하는 것과 관련된 컴퓨터-판독가능한 명령들을 실행할 수 있다. 예를 들어, 프로세서(360)는 네트워크 액세스에 대한 요청들의 인터셉트 및 집합화를 실시하기 위해 디바이스(105-b)로부터 수신되거나 통신되는 정보를 분석하도록 동작할 수 있다. 또다른 양상에서, 프로세서(360)는 다수의 애플리케이션들로부터 네트워크 액세스에 대한 시스템 호출들의 집합화를 실시하기 위해, 메모리(355), 라디오 유닛(245), 애플리케이션층(220), 랩퍼(230), 운영 체제(235), 및/또는 접속성 엔진(225)에 의해 활용될 수 있는 정보를 생성하도록 동작할 수 있다.
라디오 유닛(245)은 다수의 채널들(110-a)을 사용하는 외부 통신 네트워크들과 같은 다수의 외부 엔티티들과 디바이스(105-b)를 인터페이싱하기 위해 사용될 수 있는 다수의 라디오들/인터페이스들을 제공할 수 있는 소프트웨어를 실행하는 프로세서 및/또는 하드웨어를 포함할 수 있다. 예를 들어, 라디오 유닛(245)은 셀룰러, WiFi, 블루투스, 또는 채널들(110-a)을 사용하여 통신 네트워크들과 통신하기 위한 임의의 다른 기술들을 사용하여 통신하기 위한 라디오들/인터페이스들을 제공할 수 있다.
애플리케이션층(220)은 디바이스(105-b) 상에서 하나 이상의 애플리케이션들을 저장 및/또는 실행할 수 있는 프로세서 실행 소프트웨어 및/또는 하드웨어를 포함할 수 있다. 일 구현예에서, 애플리케이션층(220)은 애플리케이션들로 하여금 네트워킹 서비스들을 요청하기 위해, 예를 들어, 외부 네트워크 또는 시스템과 통신할 목적으로 라디오/인터페이스에 대한 접속을 요청하도록, 네트워킹 기능 호출들을 개시하게 할 수 있다.
운영 체제(235)는 소켓층을 포함할 수 있다. 소켓층은 소켓층 함수들을 수행할 수 있는 프로세서 실행 소프트웨어 및/또는 하드웨어를 포함할 수 있다. 일 구현예에서, 소켓층 함수들은 Connect(), Bind(), 및 Setsockopt()와 같은 함수들을 포함할 수 있다. Connect() 함수는 특정 라디오/인터페이스와 애플리케이션 사이에 접속을 설정하도록 동작한다. 예를 들어, 특정 라디오/인터페이스는 라디오 유닛(245)에 의해 제공되는 다수의 후보 라디오들로부터 선택될 수 있다. 일 양상에서, 소켓층은 다양한 소켓층 함수들 또는 커맨드들을 수행할 수 있다.
접속성 엔진(225)은 랩퍼로 하여금 모바일 디바이스(105-b) 상에서 실행하는 애플리케이션으로부터 네트워크 액세스에 대한 요청을 인터셉트하게 하기 위해 랩퍼(230)를 실행할 수 있는 프로세서 실행 소프트웨어 및/또는 하드웨어를 포함할 수 있다. 랩퍼(230)는 또한 인터셉트된 요청이 운영 체제(235)에 도달하는 것을 보류할 수 있다. 추가로, 랩퍼(230)는 인터셉트된 요청을 다른 인터셉트된 요청들과 함께 집합화할 수 있다. 집합화된 요청들은 트리거링 이벤트가 발생하는 경우(예를 들어, 모바일 디바이스(105-b)가 활성 모드에 진입하는 경우) 운영 체제의 소켓층으로 릴리즈될 수 있다.
접속성 엔진(225)은 랩퍼(230)로 하여금 다양한 방식들로 네트워크 액세스에 대한 요청들을 캡쳐하고, 보류하고, 집합화할 수 있게 한다. 예를 들어, 디바이스(105-b)가 배경 모드에 있는 경우, 접속성 엔진(225)은 (랩퍼(230)를 통해) 디바이스(105-a) 상에서 실행하는 다수의 애플리케이션들로부터의 다수의 요청들을 인터셉트할 수 있다. 인터셉트된 요청은 특정 트리거링 이벤트가 발생할 때까지 함께 집합화되고 보류될 수 있다. 예를 들어, 요청들은 모바일 디바이스(105-b)가 활성 상태에 진입하는 경우 릴리즈될 수 있다. 일 구성에서, 현재 보류되고 있는 집합화된 요청들은 함께 릴리즈될 수 있다. 예를 들어, 집합화된 요청들은 단일 시스템 호출로서 소켓층에 함께 번들링 및 릴리즈될 수 있다. 소켓층은 네트워크(115)와의 데이터 접속을 위한 통신 채널들을 설정하기 위한 프로시져들을 개시할 수 있다.
메모리(355)는 RAM, ROM, EEPROM, 또는 정보가 디바이스(105-b)에서 저장 및 검색되게 하도록 동작하는 임의의 다른 타입의 메모리 디바이스를 포함할 수 있다. 일 구현예에서, 메모리(355)는 프로세서(360)에 의해 실행되는 컴퓨터-판독가능한 명령들을 저장할 수 있다. 메모리(355)는 또한 프로세서(360), 라디오 유닛(245), 애플리케이션층(220), 랩퍼(230), 운영 체제(235), 및/또는 접속성 엔진(225) 중 임의의 것에 의해 생성되는 데이터를 포함하는 다수의 다른 타입들의 데이터 중 임의의 것을 저장할 수 있다. 메모리(355)는 랜덤 액세스 메모리로서, 배터리-백 메모리(battery-backed memory), 하드 디스크, 자기 테이프 등을 포함하는 다수의 상이한 구성들을 포함할 수 있다. 압축 및 자동 백업과 같은 다양한 특징들이 또한 메모리(355) 상에서 구현될 수 있다.
다양한 구현예들에서, 디바이스(105-b)는 비-일시적 컴퓨터-판독가능한 매체 상에 통합되거나 저장되는 "코드들"의 세트 또는 하나 이상의 프로그램 명령들("명령들)을 가지는 컴퓨터 프로그램 물건을 포함할 수 있다. 코드들이 적어도 하나의 프로세서, 예를 들어, 프로세서(360) 및/또는 접속성 엔진(225)에 의해 실행되는 경우, 이들의 실행은 프로세서(360) 및/또는 접속성 엔진(225)으로 하여금 여기서 설명된 집합화 아키텍쳐의 기능들을 제공하도록 디바이스(105-b)를 제어하게 할 수 있다. 예를 들어, 비-일시적 컴퓨터-판독가능한 매체는 플로피 디스크, CDROM, 메모리 카드, 플래시 메모리 디바이스, RAM, ROM, 또는 디바이스(105-b)에 대해 인터페이싱하는 임의의 다른 타입의 메모리 디바이스 또는 컴퓨터-판독가능한 매체일 수 있다. 또다른 양상에서, 코드들의 세트는 외부 디바이스 또는 통신 네트워크 자원으로부터 디바이스(105-b) 내로 다운로드될 수 있다. 코드들의 세트들은, 실행되는 경우, 여기서 설명된 시스템 호출 집합화 아키텍쳐의 양상들을 제공하도록 동작한다.
도 4는 전술된 바와 같이 네트워크 액세스에 대한 요청들을 인터셉트하고 집합화하기 위해 유용한 모바일 디바이스(105-c) 상의 아키텍쳐의 샘플 블록도(400)를 도시한다. 모바일 디바이스(105-c)는 도 1, 도 2 또는 도 3의 모바일 디바이스(105)의 예일 수 있다.
도시된 바와 같이, 블록들은 애플리케이션 프로세서(490) 및 모뎀 프로세서(495) 사이에서 분할되지만, 다양한 기능성이 도 4의 예와는 상이하게 편성될 수 있다. 애플리케이션층(220)은 소켓층(240) 및 애플리케이션 접속 엔진(APP CnE)(475)과 상호작용할 수 있다. 애플리케이션 접속 엔진(475)은 모뎀 접속 엔진(Modem CnE)(485)과 통신할 수 있다. 모뎀 접속 엔진은 그 내부의 라디오 유닛(245) 및 다수의 라디오들(250-a)과 같은 통신 자원들을 관리할 수 있다. 랩퍼(230)는 운영 체제의 소켓층(240)과 애플리케이션층(220) 사이의 애플리케이션 프로세서(490)에서 실행될 수 있다. 랩퍼(230)는 소켓층(240)과 애플리케이션층(220) 사이에서 전달되는 데이터를 캡쳐할 수 있다. 예를 들어, 랩퍼(230)는 소켓층(240)에 대해 의도되고 애플리케이션층(220)으로부터 송신되는 시스템 호출들을 인터셉트하기 위해 애플리케이션층(220)과 소켓층(240) 사이에 배치될 수 있다. 일 구성에서, 랩퍼(230)는 디바이스(105-c)에 의한 비활성 기간 동안 애플리케이션층(220)으로부터의 시스템 호출들을 인터셉트할 수 있고, 랩퍼는 소켓층(240)에 시스템 호출을 릴리즈하기 전에 트리거링 이벤트가 발생할 때까지 인터셉트된 호출을 보류할 수 있다. 시스템 호출은 라디오 유닛(245) 내의 라디오(250)를 사용하여 통신 채널을 설정하기 위한 요청일 수 있다.
또다른 예에서, 랩퍼(230)는 디바이스(105-c)에 의한 비활성 기간 동안 애플리케이션층(220)으로부터 인터셉트된 시스템 호출들을 집합화할 수 있다. 랩퍼(230)는 동작/전송을 위해 소켓층(240) 및 궁극적으로는 라디오 유닛(245)에 대해 집합화된 시스템 호출들을 릴리즈하기 전에 특정 이벤트가 발생할 때까지 인터셉트된 집합화된 호출들을 보류할 수 있다.
일 구성에서, 랩퍼(230)는 애플리케이션층(220)에서 애플리케이션들에 대해 비가시적(invisible)일 수 있고, 따라서 애플리케이션들은 자신의 요청들이 소켓층(240)에 도달하는 것이 보류되고 있음을 알지 못한다. 랩퍼(230)는 별도의 소프트웨어 컴포넌트일 수 있거나, 또는 접속성 엔진(225) 또는 애플리케이션 접속 엔진(475)과 같은 또다른 컴포넌트 내로 포함될 수 있다.
도 5는 제1 애플리케이션 및 제2 애플리케이션과 같은 다수의 애플리케이션들에 대한 타이밍도들(500)을 도시한다. 애플리케이션들은 모바일 디바이스(105)의 애플리케이션 층(220) 내에 위치될 수 있다. 타이밍도들(500)은 도 2 또는 도 3의 접속성 엔진(225)의 구현예의 결과일 수 있다. 일 구성에서, 제1 요청(505-a-1)은 시간 t0에서 제1 애플리케이션으로부터 송신될 수 있다. 제1 요청(505-a-1)은 Connect() 시스템 호출일 수 있다. 제1 요청(505-a-1)은 모바일 디바이스 상에서 실행하는 운영 체제(235)에 도달하는 것이 보류될 수 있다. 예를 들어, 제1 요청은 운영 체제의 TCP/IP 스택에 도달하는 것이 보류될 수 있다. 요청이 보류되는 시간은 H0로서 표현될 수 있다. 제1 요청(505-a-1)은 시간 t2에서 운영 체제(235)에 릴리즈될 수 있다.
일 예에서, 제2 요청(505-a-2)은 시간 t1에서 제2 애플리케이션으로부터 송신될 수 있다. 시간 t1은 시간 t0 이후일 수 있다. 제2 요청(505-a-2)은 또한 Connect () 시스템 호출일 수 있다. 제2 요청(505-a-2)은 H1으로서 표현되는 시간 기간 동안 운영 체제(235)에 도달하는 것이 보류될 수 있다. 예를 들어, 제2 요청은 또한 운영 체제의 TCP/IP 스택에 도달하는 것이 보류될 수 있다. 제2 요청(505-a-2)은 시간 t2에서 릴리즈될 수 있다. 그 결과, 제1 요청(505-a-1) 및 제2 요청(505-a-2)은 함께 또는 동일한 시간(즉, 시간 t2)에 릴리즈될 수 있다. 시간 기간 H1은 시간 기간 H0보다 더 짧을 수 있다. 다시 말해, 제2 요청(505-a-2)은 제1 요청(505-a-1)보다 더 짧은 시간 동안 보류될 수 있다.
일 구성에서, 시간 기간 H0동안, 제1 요청은 제2 요청(505-a-2)이 시간 t1에서 인터셉트되는 경우 제2 요청(505-a-2)과 함께 집합화될 수 있다. 요청들의 집합화는 요청들 모두가 실질적으로 동일한 시간(즉, 시간 t2)에 릴리즈되도록 한다. 따라서, 타이밍도(500)는 상이한 시간들(t0 및 t1)에서 송신된 요청들이 상이한 시간 기간들(H0 및 H1) 동안 보류되고 이후 동일한 시간(t2)에 릴리즈될 수 있음을 예시한다.
도 6은 모바일 디바이스(105-d) 상에서 구현될 수 있는 집합화 아키텍쳐의 예를 도시한다. 모바일 디바이스(105-d)는 도 1, 도 2, 도 3 및 도 4의 디바이스(105)의 예일 수 있다. 예시된 바와 같이, 디바이스(105-d)는 애플리케이션층(220-a), 랩퍼(230-b), 및 운영 체제(235)를 포함할 수 있다. 운영 체제(235)는 소켓층(240)을 포함할 수 있다. 도 2 또는 도 3의 접속성 엔진(225)은 랩퍼(230-b) 소프트웨어를 실행하기 위한 명령들을 실행할 수 있다. 일 구성에서, 디바이스(105-d)는 배경 모드에 있을 수 있다. 모바일 디바이스(105-d)는, 예를 들어, 디바이스(105-d)의 스크린 또는 디스플레이가 오프인 경우, 디바이스(105-d)의 마이크로폰, 스피커, 또는 다른 오디오 출력이 오프인 경우, 디바이스(105-d)의 글로벌 포지셔닝 시스템(GPS) 메커니즘이 디바이스(105-d)가 고정식이라고 결정하는 경우, 디바이스의 배터리 레벨이 특정 임계 레벨 미만으로 떨어지는 경우 등에서 배경 모드에 있다고 간주될 수 있다.
일 예에서, 애플리케이션층(220-a)에서 실행하는 다수의 애플리케이션들(605-a)은 Connect () 시스템 호출과 같은, 네트워크 액세스에 대한 시스템 호출(505-a)을 송신할 수 있다. 시스템 호출들(505-a)은 상이한 시간들에서 각각의 애플리케이션으로부터 송신될 수 있다. 랩퍼(230-b)는 이들 요청들을 캡쳐하여 이들 요청들이 운영 체제(235)에 도달하는 것을 보류할 수 있다. 특히, 호출들은 운영 체제(235)의 소켓층(240)에 도달하는 것이 보류될 수 있다. 일 구성에서, 집합화 모듈(610)은 인터셉트된 시스템 호출들(505-a)을 집합화할 수 있다. 집합화된 호출들은 랩퍼(230-a-1)로부터 운영 체제(235)의 소켓층(240)까지 함께(또는 실질적으로 동시에) 릴리즈될 수 있다. 집합화된 요청들을 수신할 시에, 소켓층(240)은 네트워크(115)와의 접속을 설정하도록 진행할 수 있다. 프로시져는 제어 채널(110-a-1)을 설정하기 위해 네트워크(115) 및 모바일 디바이스(105-d) 사이에서 시그널링 메시지들을 전송하는 것을 포함할 수 있다.
따라서, 네트워크 액세스를 위한 요청들의 인터셉트, 보류 및 집합화는 모바일 디바이스(105-d)의 전력 소모를 감소시킬 수 있는데, 왜냐하면, 다수의 시스템 호출들이 상이한 시간들에서 소켓층(240)에서 실행되지 않기 때문이다. 대신, 다수의 요청들은 함께 번들링되고 거의 동시에 소켓층(240)에 릴리즈된다. 또한, 요청들의 집합화는 네트워크(115)와의 접속 셋업 프로시져들의 빈도수를 감소시키고, 따라서 네트워크 트래픽을 감소시킬 수 있다.
애플리케이션들(605-a)로부터의 요청들의 보류 및 집합화는 선택적으로 이루어질 수 있다(즉, 사용자가 방해받지 않을 수 있도록 구현된다). 통신 채널들을 설정하기 위해 애플리케이션들(605-a)로부터의 요청들을 언제 보류하고 집합화할지를 결정하기 위해 다양한 인자들이 사용될 수 있다. 예를 들어, 요청을 인터셉트하기 위한 결정은 스크린이 오프되거나, 오디오 출력이 오프되는 것 등과 같은, 모바일 디바이스(105-d)의 특정한 특성들에 기초하여 이루어질 수 있다. 요청들을 보류하는 것은, 라디오가 로드되지 않는 경우, 모바일 디바이스(105-d)가 달리 사용중이지 않은 경우(전화 호출들, 오디오 스트리밍 등이 없음) 이러한 지연들을 핸들링할 수 있는 것으로 알려진 애플리케이션들에 대해서만 구현될 수 있다. 애플리케이션으로부터의 시스템 호출들의 인터셉트 및 보류는 사용자가 애플리케이션에 의해 제공되는 서비스에 가입하는지의 여부에 기초하여 구현될 수 있다. 사용자가 서비스에 가입한 경우, 애플리케이션으로부터의 요청들은 운영 체제에 도달하는 것이 보류되지 않을 수 있다. 대신, 이러한 가입-기반 애플리케이션으로부터의 요청들은 소켓층에 즉시 전달하도록 허용될 수 있다. 일 예에서, 모바일 디바이스(105-d) 상에서 실행하는 애플리케이션들이 분류될 수 있다. 예를 들어, 제1 애플리케이션(605-a-1)은 비-중요 애플리케이션으로서 분류될 수 있고, 제2 애플리케이션(605-a-2)은 중요 애플리케이션으로서 분류될 수 있다. 비-중요 애플리케이션은 특정 지연 허용오차를 가지는 애플리케이션일 수 있다. 다시 말해, 통신 채널을 설정하기 위한 비-중요 애플리케이션으로부터의 시스템 호출들은 지연될 수 있다. 그러나, 중요 애플리케이션은 지연 허용오차가 거의 없거나 지연 허용오차가 없는 애플리케이션일 수 있다. 중요 애플리케이션들의 예들은, 어린이 추적 애플리케이션들, 비상-기반 애플리케이션들, 가입-기반 애플리케이션들 등을 포함할 수 있지만, 이에 제한되지 않는다. 일 구성에서, 요청들의 보류 및 집합화가 비-중요 애플리케이션들로부터 발신하는 요청들에 대해 발생할 수 있다. 중요 애플리케이션들로부터 송신된 요청들은 보류(또는 집합화)되는 것이 아니라, 대신, 운영 체제의 소켓층으로 직접 진행할 수 있다. 보류 및 집합화는 또한 위의 인자들 또는 다른 인자들의 조합을 이용하여 구현될 수 있다.
또한, 다양한 인자들이 언제 집합화된 요청들을 릴리즈하고 애플리케이션 접속성을 허용할지를 결정하기 위해 사용될 수 있다. 예를 들어, 데이터 접속 셋업 프로시져를 설정하기 위한 트리거(예를 들어, 지연될 수 없는 비상 애플리케이션과 같은 중요 애플리케이션으로부터의 시스템 호출을 수신하는 것)가 존재하는 경우, 보류된 요청들이 소켓층(240)에 릴리즈될 수 있고, 따라서, 통신 채널들은 비상 애플리케이션과 함께 설정되고, 배경 상태와 접속 상태 사이의 트랜지션들의 수를 감소시킬 수 있다. 또다른 예는, 더욱 바람직한 라디오가 디폴트(예를 들어, 와이드 로컬 영역 네트워크(WLAN) 라디오)로서 활성화되거나 선택되는 경우, 집합화된 요청들이 릴리즈될 수 있다는 것이다. 요청들은 또한 라디오 채널이 매우 양호한 경우(예를 들어, 높은 신호 강도, SNR 또는 다른 바람직한 성능 메트릭들) 릴리즈될 수 있다. 요청들은 또한 모바일 디바이스(105-d)에 의해 선택적으로 결정된 것으로서 또는 미리 결정된 것으로서 주기적으로 릴리즈될 수 있다. 요청들을 릴리즈하기 위한 또다른 발견기법(heuristic)은 익명으로 동작시키기 위해 사용자가 디바이스에 접근할때(사용자가 스크린을 턴온시키기 전)일 수 있다. 이 예에서, 가속계는 사용자가 전화를 잡는 것을 검출할 수 있거나, 또는 사용자 근접도 센서는 사용자가 접근중임을 표시할 수 있다. 또다른 양상에서, 배터리들 상에서 실행하는 동안, 요청들은 스크린이 잠금해제 되자마자(예를 들어, PIN이 정확하게 입력된 이후) 릴리즈될 수 있다. 이 양상에서, 랜덤 버튼이 눌러지는 경우(디바이스(105-d)가 지갑 또는 포켓 내에 있음) 요청들의 릴리즈가 발생하지 않을 수 있다.
일 예에서, 보류된 요청이 릴리즈되도록 하는 트리거링 이벤트는 타이머의 만료일 수 있다. 이벤트는 또한 디스플레이의 상태 변경일 수 있다. 예를 들어, 디스플레이는 "오프" 상태로부터 "온" 상태로 변경될 수 있다. 마이크로폰의 상태 변경(오프에서 온으로)은 또한 트리거 이벤트일 수 있다. 또한, GPS 센서의 상태 변경은 트리거링 이벤트일 수 있다. 예를 들어, 센서는 그것이 모바일 디바이스의 움직임을 검출하는 경우 상태들을 변경할 수 있다. 요청을 릴리즈하기 위한 추가적인 트리거링 이벤트들은 유니버셜 직렬 버스 포트가 사용중이라는 표시 또는 오디오 장비가 디바이스에 접속된다는 표시를 포함할 수 있다. 추가로, 비디오 장비가 모바일 디바이스에 접속된다는 표시는 또한 모바일 디바이스의 운영 체제에 보류된 요청을 릴리즈하기 위한 트리거링 이벤트로서의 역할을 할 수 있다. 또한, 특정 네트워크에 대한 접속이 이용가능하다는 표시는 요청의 릴리즈를 트리거링할 수 있다. 예를 들어, Wi-Fi 타입의 네트워크에 대한 접속 표시는 요청이 릴리즈되도록 할 수 있다. 유사하게, 셀룰러 타입의 네트워크에 대한 라디오 접속이 이미 개방되었다는 표시는 또한 디바이스의 운영 체제에의 요청의 릴리즈를 트리거링할 수 있다. 또다른 양상에서, 요청들은 위의 또는 다른 인자들의 일부 조합에 따라 릴리즈될 수 있다. 이전 설명이 API 아키텍쳐에 대한 것이지만, 개념들은 하드웨어, 펌웨어, 또는 하드웨어 및 소프트웨어의 임의의 조합에서 균일하게 적용될 수 있다.
일 구성에서, 애플리케이션은 타이머와 연관될 수 있다. 타이머의 만료 이전의 시간 기간은 연관된 애플리케이션의 허용오차 레벨을 표시할 수 있다. 예를 들어, 허용오차를 전혀 수신하지 않는 타이머는 "하드-타이머(hard-timer)"로서 지칭될 수 있다. 하드-타이머는 상대적으로 고정된 시점에서 만료하도록 의도되는 타이머일 수 있다. 반대로, 허용오차 값을 수신하는 타이머는 "소프트-타이머(soft-timer)"를 초래할 수 있다. 소프트-타이머는 의도된 만료 시간에서 만료할 수 있지만, 또한 특정된 허용오차 범위 내에서의 만료를 허용할 수 있다. 일 예로서, 이메일 업데이트 서비스와 같은 특정 애플리케이션들은 접속 요청들이 한정된(definite) 고정된 시간들에서 발생할 것을 요구하지 않을 수 있다. 따라서, 이러한 애플리케이션에 대한 타이머에는 넓은 허용오차가 주어질 수 있고, 소프트 타이머는 생성되어 이러한 애플리케이션들과 연관될 수 있다. 반대로, 주식 트레이더에 의해 사용되는 주식 프로그램은 주식 시세의 정확성을 보장하기 위해 고정된 시간들에서 일정한 업데이트들을 요구할 수 있다. 이러한 애플리케이션은 허용오차를 거의 수신하지 않거나 또는 허용오차를 수신하지 않을 수 있고, 따라서 하드 타이머와 연관될 것이다.
일 예에서, 타이머, 예를 들어, 소프트-타이머 또는 하드-타이머 중 하나가 만료할 수 있다. 일단 만료 시간이 식별되면, 예를 들어, 도 2 또는 도 3의 접속성 엔진(225)은 만료 시간이 다양한 애플리케이션들의 임의의 소프트-타이머의 허용오차 내에 드는지의 여부를 결정할 수 있다. 허용오차가 만료 시간 내에 드는 모든 해당 소프트-타이머들에 대해, 접속성 엔진은 조기에 만료하도록 해당 타이머들을 강제하기 위한 명령들을 실행할 수 있다. 타이머들이 만료한 애플리케이션들로부터의 인터셉트된 네트워크 액세스 요청들은 모바일 디바이스의 운영 체제에 릴리즈될 수 있다. 일부 구성들에서, 네트워크 접속은 타이머들이 만료한 애플리케이션들 각각이 자신들의 필요한 통신 활성화들을 완료할 때까지 개방된 채 유지할 수 있다. 타이머들이 만료할 때 통신 요청들이 이루어짐에 따라, 통신 시스템의 애플리케이션의 공유된 사용의 결과로서, 자원 관리가 더 효율적으로 이루어질 것이다.
위에서 언급된 바와 같이, 요청들이 얼마나 자주 릴리즈되어야 하는지를 표시하는 간격 또는 리프레시 레이트(refresh rate)가 결정될 수 있다. 간격들은 방화벽 또는 NAT 기능들을 수행하는 미들박스들의 상태를 유지하도록 결정될 수 있다. 미들박스들의 상태는 킵-어라이브 메시지들 또는 일련의 더 짧은 접속 요청들을 발행하는 애플리케이션들에 의해 유지될 수 있다. 일 구성에서, 네트워크는 모바일 디바이스 상의 미들박스들의 상태들을 유지하기 위해 최소 리프레시 레이트에 관한 정보를 제공할 수 있다. 리프레시 레이트는 UDP 대 TCP 접속들에 대해 제공될 수 있다. 네트워크는 킵-어라이브/재접속 메시지들의 양으로 인해 발생하는 라디오 로드에 기초하여 미들박스들에서 리프레시 레이트를 적응시킬 수 있다. 예를 들어, 킵-어라이브 메시지들의 수가 특정 임계치를 초과하는 경우, 상태는 미들박스들에서 더 긴 시간 기간동안 유지될 수 있고 모바일 디바이스에 대한 리프레시 레이트는 느려질 수 있다. 간격(또는 리프레시 레이트)은 상태기반 미들박스들의 타임아웃 값보다 더 작을 수 있다. 그 결과, 모바일 디바이스는 네트워크에 의해 표시된 리프레시 레이트(또는 간격)에 따라 업링크에 대한 게이트를 개방할 수 있다(즉, 요청들을 릴리즈한다). 게이트는 디바이스가 배경 모드에 있지 않은 경우 개방되고, 모바일 디바이스가 배경 모드에 있는 경우 폐쇄될 수 있다.
도 7은 네트워크 액세스에 대한 요청들을 보류하기 위한 방법(700)의 일 예를 예시하는 흐름도이다. 명료함을 위해, 방법(700)은 도 1, 도 2, 도 3 또는 도 4에 도시된 모바일 디바이스(105)를 참조하여 하기에 설명된다. 일 구현예에서, 프로세서(360)는 하기에 설명되는 기능들을 수행하도록 디바이스(105)의 기능 엘리먼트들을 제어하기 위한 코드들의 하나 이상의 세트들을 실행할 수 있다. 일 구성에서, 하기에 설명되는 방법(700)은 디바이스(105)가 배경 모드에 있는 경우 구현될 수 있다.
블록(705)에서, 모바일 디바이스(105) 상의 애플리케이션으로부터의 요청이 인터셉트될 수 있다. 요청은 모바일 디바이스에 대한 통신을 수행하기 위한, 예를 들어, 모바일 디바이스(105)에 대한 통신 채널을 설정하기 위한 요청일 수 있다. 요청은 모바일 디바이스(105)의 애플리케이션층(220)에서 실행하는 애플리케이션으로부터 송신될 수 있다. 일 예에서, 요청은 애플리케이션으로 하여금 네트워크(115)와 같은 외부 네트워크와 인터페이싱하도록 데이터 접속 셋업 프로시져를 개시하기 위한 요청일 수 있다. 예를 들어, 요청은 모바일 디바이스(105) 상의 운영 체제(235)의 소켓층(240)에 대한 시스템 호출일 수 있다.
블록(710)에서, 요청은 모바일 디바이스(105) 상에서 실행하는 운영 체제(235)에 도달하는 것이 보류될 수 있다. 예를 들어, 요청은 운영 체제(235)의 소켓층(240)에 도달하는 것이 보류될 수 있다. 일 구성에서, 랩퍼(230)는 요청을 인터셉트하고 보류시킬 수 있다.
블록(715)에서, 요청은 트리거링 이벤트를 검출할 시에 운영 체제에 릴리즈될 수 있다. 예를 들어, 디바이스(105)는 전술된 바와 같이 활성 모드에 진입할 수 있다.
따라서, 방법(700)은 모바일 디바이스(105)의 애플리케이션층(220) 상에서 실행하는 애플리케이션들에 의해 제출되는, 네트워크 액세스에 대한 요청들의 인터셉트 및 보류를 제공할 수 있다. 방법(700)이 단지 일 구현예이며, 방법(700)의 동작들이 재배열되거나 그렇지 않은 경우 다른 구현예들이 가능하도록 수정될 수 있다는 점에 유의해야 한다.
도 8은 모바일 디바이스 상에서 실행하는 비-중요 애플리케이션들로부터의 네트워크 액세스에 대한 요청들을 인터셉트하기 위한 방법(800)의 일 예를 예시하는 흐름도이다. 명료함을 위해, 방법(800)은 도 1, 도 2, 도 3 또는 도 4에 도시된 디바이스(105)를 참조하여 하기에 설명된다. 일 구현예에서, 프로세서(360)는 하기에 설명되는 기능들을 수행하도록 디바이스(105)의 기능 엘리먼트들을 제어하기 위한 코드들의 하나 이상의 세트들을 실행할 수 있다.
블록(805)에서, 네트워크 액세스에 대한 요청이 인터셉트된다. 요청은 모바일 디바이스(105)의 애플리케이션층(220)에서 실행하는 애플리케이션으로부터 송신될 수 있다. 일 예에서, 요청은 네트워크(115)와 같은 외부 네트워크와의 통신 채널을 설정하기 위한 요청일 수 있다. 요청은 디바이스(105)의 운영 체제(235)의 소켓층(240)에 대한 시스템 호출일 수 있다. 요청을 수신할 시에, 소켓층(240)은 통신 채널을 설정하고, 채널이 설정되는 경우 애플리케이션에 콜백 기능을 제공하기 위한 프로시져들을 개시할 수 있다.
블록(810)에서, 디바이스(105)가 배경 모드에 있는지의 여부에 대한 결정이 이루어질 수 있다. 예를 들어, 디바이스(105)가 파워-다운(power-down)되었는지, 슬립 모드에 있는지 등의 여부에 대한 결정이 이루어질 수 있다. 디바이스(105)는 또한, 예를 들어, 디바이스(105)의 디스플레이가 비활성이고, 오디오 출력들이 비활성인 등의 경우 배경 모드에 있도록 결정될 수 있다. 디바이스(105-a)가 비활성이라고 결정되는 경우, 시스템 호출을 개시한 애플리케이션이 비-중요 애플리케이션인지의 여부를 결정하기 위한 제2 결정이 블록(815)에서 이루어질 수 있다. 중요 애플리케이션은 네트워크 액세스에 대하여 우선순위를 가지는 비상 애플리케이션, 가입-기반 애플리케이션, 지연에 대해 낮은 허용오차를 가지는 애플리케이션 등일 수 있다.
디바이스(105)가 활성이거나 또는 애플리케이션이 중요 애플리케이션이라고 결정되는 경우, 요청은 운영 체제(235)의 소켓층(240)에 릴리즈될 수 있다. 다시 말해, 요청은 소켓층으로 하여금 네트워크(115)와의 통신 채널을 설정하기 위한 프로시져들을 개시하게 하기 위해 릴리즈될 수 있다. 디바이스가 배경 모드에 있고 애플리케이션이 비-중요 애플리케이션으로서 분류된다고 결정되는 경우, 블록(820)에서, 요청은 운영 체제에 도달하는 것이 보류되고, 따라서, 통신 채널을 셋업하기 위한 프로시져들의 개시를 지연시킬 수 있다.
블록(825)에서, 요청은 다른 인터셉트된 요청들과 함께 집합화될 수 있다. 다른 요청들은 모바일 디바이스(105) 상에서 실행하는 추가적인 애플리케이션들에 의해 개시될 수 있다. 블록(830)에서, 전술된 바와 같이, 트리거링 이벤트가 검출되는지의 여부에 대한 결정이 이루어질 수 있다. 트리거링 이벤트가 검출되지 않는다고 결정되는 경우, 방법(800)은 네트워크 액세스에 대한 인터셉트된 요청들을 계속 집합화하도록 리턴할 수 있다. 그러나, 트리거링 이벤트가 검출되었다고 결정되는 경우, 블록(835)에서, 집합화된 요청들은 운영 체제(240)의 소켓층(240)에 릴리즈될 수 있다. 다시 말해, 다수의 애플리케이션들로부터의 시스템 호출들은 보류되고 함께 번들링되며, 이후 소켓층(240)에 단일 시스템 호출로서 릴리즈될 수 있다.
따라서, 방법(800)은 모바일 디바이스(105) 상에서 실행하는 비-중요 애플리케이션들로부터 네트워크 액세스에 대한 요청들을 인터셉트하고, 보류하고, 집합화하는 것을 제공할 수 있다. 요청들을 보류하고 집합화함으로써, 다수의 시스템 호출들은 함께 번들링되고 단일 시스템 호출로서 릴리즈될 수 있다. 이는 모바일 디바이스(105)에 대한 배터리 전력 절감 뿐만 아니라 네트워크 시그널링의 감소를 초래할 수 있는데, 왜냐하면 통신 채널들을 셋업하기 위한 프로시져들을 개시하기 위한 시스템 호출들의 양이 감소할 수 있기 때문이다. 방법(800)이 단지 하나의 구현예이며, 방법(800)의 동작들이 재배열되거나 또는 그렇지 않은 경우 다른 구현예들이 가능하도록 수정될 수 있다는 점에 유의해야 한다.
도 9는 모바일 디바이스 상에서 실행하는 다수의 애플리케이션들로부터 네트워크 액세스에 대한 요청들을 인터셉트하기 위한 방법(900)의 일 구성을 예시하는 흐름도이다. 명료함을 위해, 방법(900)은 도 1, 도 2, 도 3 또는 도 4에 도시된 디바이스(105)를 참조하여 하기에 설명된다. 일 구현예에서, 프로세서(360)는 하기에 설명되는 기능들을 수행하도록 디바이스(105)의 기능 엘리먼트들을 제어하기 위한 코드들의 하나 이상의 세트들을 실행할 수 있다.
블록(905)에서, 네트워크 액세스에 대한 제1 요청은 제1 시간에서 제1 애플리케이션으로부터 인터셉트된다. 일 예에서, 블록(910)에서, 제2 요청은 제2 시간에 제2 애플리케이션으로부터 인터셉트될 수 있다. 제2 시간은 제1 시간과는 상이할 수 있다. 블록(915)에서, 제3 요청이 제3 시간에 제3 애플리케이션으로부터 인터셉트될 수 있다. 일 구성에서, 제3 시간은 제1 시간 및 제2 시간과 상이할 수 있다. 인터셉트된 요청들은 네트워크 액세스를 위한 통신 채널들을 설정하기 위한 시스템 호출들일 수 있다. 애플리케이션들은 모바일 디바이스(105) 상에서 실행할 수 있다.
요청이 인터셉트되는 경우, 모바일 디바이스(105)가 배경 모드에 있는지의 여부에 대한 결정이 블록(920)에서 이루어질 수 있다. 디바이스(105)가 배경 모드에 있다고 결정되는 경우, 블록들(925, 930 및 935)에서, 요청들은 운영 체제에 도달하는 것이 보류될 수 있다. 디바이스(105)가 활성 모드에 있는 경우, 블록(950)에서 요청들은 모바일 디바이스(105) 상의 운영 체제(235)의 소켓층(240)에 릴리즈될 수 있다.
일 구성에서, 블록(940)에서, 제1, 제2 및 제3 요청들이 집합화되거나 또는 함께 번들링될 수 있다. 블록(945)에서, 트리거링 이벤트가 발생했는지의 여부에 대한 결정이 이루어질 수 있다. 예를 들어, 디바이스가 활성 모드에 진입했는지, 디바이스 상의 디스플레이가 활성화되었는지, 디바이스가 위치를 변경했는지, 사용자가 디바이스 근처에 있는지 등의 여부에 대한 결정이 이루어질 수 있다. 트리거링 이벤트가 검출되지 않는 경우, 방법(900)은 트리거링 이벤트의 검출을 위한 모니터링을 계속하도록 리턴할 수 있다. 트리거링 이벤트가 검출되는 경우, 블록(950)에서, 집합화된 요청들은 운영 체제의 소켓층에 대해 릴리즈될 수 있다. 요청들의 수신 시에, 소켓층은 네트워크(115)와 같은 외부 네트워크와의 통신 채널을 설정하기 위한 프로시져들을 개시할 수 있다.
따라서, 방법(900)은 모바일 디바이스(105) 상에서 실행하는 다수의 애플리케이션들로부터 네트워크 액세스에 대한 요청들을 인터셉트, 보류 및 집합화하는 것을 제공할 수 있다. 그 결과, 다수의 시스템 호출들은 함께 번들링되고 단일 시스템 호출로서 릴리즈될 수 있다. 이는 모바일 디바이스(105)에 대한 감소한 배터리 소모 뿐만 아니라 네트워크 시그널링의 감소를 초래할 수 있는데, 왜냐하면 시스템 호출들의 양이 감소할 수 있기 때문이다. 방법(900)이 단지 일 구현예이며, 방법(900)의 동작들이 재배열되거나 그렇지 않은 경우 다른 구현예들이 가능하도록 수정될 수 있다는 점에 유의해야 한다.
도 10은 네트워크 액세스 요청들과 같은 애플리케이션 접속 요청들 사이의 동기화를 개선하기 위한 특정 실시예들에서 구현되는 하나의 가능한 프로세스(1000)를 도시한다. 하기 예에서 논의되는 바와 같은 특정 실시예들은 모바일 디바이스 상에서 프로세스(1000)를 구현할 수 있다. 명료함을 위해, 방법(1000)은 도 1, 도 2, 도 3 또는 도 4에 도시된 디바이스(105)를 참조하여 하기에 설명된다. 일 구현예에서, 도 2 또는 도 3의 프로세서(360) 또는 접속성 엔진(225)은 하기에 설명된 기능들을 수행하도록 디바이스(105)의 기능 엘리먼트들을 제어하기 위한 코드들의 하나 이상의 세트들을 실행할 수 있다.
블록(1005)에서, 방법은 제1 타이머, 예를 들어, 소프트-타이머 또는 하드-타이머 중 하나가 만료할 수 있음을 식별함으로써 시작한다. 이는 다양한 애플리케이션들의 타이머들을 폴링하는 중앙 시스템에 의해 달성될 수 있다. 대안적으로, 각각의 애플리케이션은 개별적으로 자기 자신의 타이머를 모니터링하고, 타이머 만료시에 통지를 제공할 수 있다.
일단 만료 시간이 식별되면, 블록(1010)에서, 또한 만료할 수 있는 추가적인 타이머들이 식별되는지의 여부에 대한 결정이 이루어질 수 있다. 예를 들어, 제1 타이머의 만료 시간이 임의의 소프트-타이머의 허용오차 내에 드는 지의 여부에 대한 결정이 이루어질 수 있다. 허용오차가 만료 시간 내에 드는 모든 이들 소프트-타이머들에 대해, 블록(1015)에서, 추가적인 타이머들이 조기에 만료하도록 강제될 수 있다. 블록(1020)에서, 데이터는 만료된 타이머들과 연관된 애플리케이션들에 대해 동기화될 수 있다. 예를 들어, 채널 액세스는 접속을 형성함으로써 타이머들이 만료된 애플리케이션들에 제공될 수 있다. 일부 실시예들에서, 이후, 타이머들이 만료한 애플리케이션들 각각이 자신들의 필수적인 통신 활성화들을 완료할 때까지 접속은 개방된 채 유지될 수 있다. 타이머가 만료할 때 통신 요청들이 이루어짐에 따라, 통신 시스템의 애플리케이션의 공유된 사용의 결과로서, 자원 관리가 더 효율적으로 이루어질 것이다. 블록(1005)에서, 방법(1000)은 타이머들이 만료하는 것을 다시 대기함으로써 무한적으로 수행될 수 있거나, 또는 방법이 종료할 수 있다.
자신들의 의도된 시간에서 블록(1005)에서 초기에 만료한 타이머 또는 타이머들은, 특정 실시예들에서, "마스터 타이머들" 또는 교환가능하게 "트리거 이벤트들"로서 지칭될 수 있다. 즉, 이들 타이머들은 자신들의 개별적인 허용 오차들에 기초하여 다른 타이머들("소프트-타이머들")이 언제 만료할 수 있는지를 지시한다. 따라서, 소프트 또는 하드-타이머는 마스터 타이머로서 역할을 할 수 있다. 그러나, (오직 소프트-타이머들만이 허용오차를 가짐에 따라) 오직 소프트-타이머들만이 마스터 타이머에 의해 영향을 받을 수 있다.
도 11은 3개의 애플리케이션들(앱1, 앱2 및 앱3) 각각에 대한 접속 요청들의 하나의 가능한 시리즈를 예시한다. 이들 애플리케이션들은 모바일 디바이스, 예를 들어, 도 1, 2, 3 또는 4의 모바일 디바이스(105) 상에서 실행될 수 있다. 특히, 도 11은 다양한 애플리케이션들로부터의 통신 요청들에 기초하여 접속들을 형성하기 위한 기법들을 나타낸다. 이 예에서, 접속 요청들은 조정되지 않는다. 따라서, 각각의 애플리케이션은 다른 애플리케이션들로부터 조정되지 않은 간격들에서 접속을 요청한다. 이러한 조정 결여는 애플리케이션들이 접속들을 공유하기 위한 기회들을 무시함에 따라 모바일 디바이스의 자원들의 비효율적인 사용을 초래한다. 타이머 만료들은 각각의 시점에서 수직 화살표들로 표현되고, 결과적인 요청 기간들은 사각형들로 표시된다. 각각의 접속 기간은 30초의 폭을 가지는 요청 기간 사각형의 윈도우에 의해 표현된다(이것은 다소 임의의 듀레이션으로서 인지될 것이며, 훨씬 더 작거나 더 긴 듀레이션들이 각각의 접속에 대해 발생할 수 있다). 이 폭은 단지 예시의 목적들을 위한 것이며, 임의의 폭들이 실제 디바이스에서 존재할 수 있다. 도 11 뿐만 아니라 후속하는 도면들에서의 수치 범위들은 단지 설명의 목적으로 선택되었다. 도면들은 반드시 임의의 시스템 또는 실시예의 실제 구현예를 나타내는 것으로서 해석되지는 않아야 한다.
도 11에서, 앱1은 5분마다 통신 요청을 개시할 수 있다(시간들 1, 6, 11, 16 등에서 접속들을 개시할 수 있다). 유사하게, 앱2는 5분마다, 접속 요청들을 개시할 수 있지만, 1분만큼 앱1로부터 오프셋된다. 즉, 앱2의 요청들은 앱1의 요청들과 동일한 기간을 공유하지만 동일한 위상을 공유하지는 않는다. 마지막으로, 앱3은 10분마다 접속들을 수행할 수 있고, 마찬가지로 4분만큼 앱1로부터 오프셋된다. 앱1, 앱2 및 앱 3의 비동기식 접속 요청들은, 접속들이 일정하게 업(up)되거나 다운(down)됨에 따라, 배터리 전력 및 통신 대역폭의 비효율적인 사용을 초래한다. 이 예에서, 통신 시스템과의 (모바일 디바이스의 통신 엘리먼트들의 재활성화를 요구하는) 14개의 별도의 접속들이 시간 6과 시간 32 사이에 발생한다.
본 발명의 실시예들의 일부는 더 효율적인 접속 패턴들이 발생하도록 접속 요청들을 조정할 수 있는 시스템을 제공하는 것을 참작한다. 예를 들어, 모바일 디바이스(105)가 하나의 애플리케이션에 대해 네트워크와의 접속을 이미 가지는 경우, 모바일 디바이스(105)는, 접속을 끊고 또다른 접속을 형성하지 않고, 또다른 애플리케이션에 대해 동일한 접속을 사용할 수 있다. 따라서, 애플리케이션들이 접속들을 공유하도록 애플리케이션 접속 요청들 사이의 타이밍을 조정하는 것은 형성될 필요가 있는 접속들의 수를 감소시킬 수 있다. 이들 실시예들 중 일부는 모바일 디바이스(105) 상에서 동작하는 플랫폼에 대한 애플리케이션들을 구현할 시에 애플리케이션 개발자들이 사용할 수 있는 프로그래밍 모듈을 포함할 수 있다. 이들 실시예들 중 일부에서, 모바일 디바이스(105)는 네트워크에 스케쥴링하기 위한 정보를 전송할 수 있다. 많은 실시예들에서, 모바일 디바이스(105) 상에서 실행하는 애플리케이션들은 "타이머들", 즉, 특정 "만료 시간"이 언제 발생하는지를 결정하도록 구성되는 소프트웨어, 펌웨어, 또는 하드웨어 모듈들을 포함할 수 있다. 타이머들은 도 2 또는 도 3의 접속성 엔진(225)에 의해 실행될 수 있다. 타이머들은 접속성 엔진(225)의 일부로서 구현될 수 있다. 이들 타이머들은 애플리케이션이 접속을 요구할 수 있는 시간 또는 시간 간격을 표시한다. 네트워크로부터의 주기적 업데이트들을 요구하는(또는 네트워크에 정보를 주기적으로 전송하는) 애플리케이션들은 이들이 언제 접속을 요청해야 하는지를 결정하기 위해 이들 타이머들에 의존할 수 있다. 애플리케이션들은 또한 비주기적으로 데이터를 요구할 수 있고, 타이머에 의해 정의된 특정 시간 내에서 데이터를 요청할 수 있다. 일부 애플리케이션들은 이들이 얼마나 자주 접속을 요구하는지에 있어서 유연할 수 있다. 본 발명의 실시예들 중 일부는 각각의 애플리케이션과 연관된 유연성, 또는 유연성의 결여를 수용하기 위하여 타이머들의 상이한 타입들 또는 구성들을 참작한다. 후속하는 설명이 논의의 용이함을 위해 "타이머"를 가지는 것으로서 애플리케이션을 참조하지만, 당업자는 애플리케이션이 그들 자체가 하나 이상의 타이머들과 개별적으로 연관될 수 있는 다수의 컴포넌트들을 포함할 수 있다는 점을 인지할 것이다.
도 12는 도 11로부터의 애플리케이션들에 대한 타이밍도를 나타내지만, 여기서, 애플리케이션들은 이제 도 10의 방법과 같은 프로세스와 함께 소프트 또는 하드-타이머들을 사용한다. 위에서 논의된 바와 같이, 애플리케이션들은 모바일 디바이스, 예를 들어, 도 1, 2, 3 또는 4의 모바일 디바이스(105) 상에서 실행할 수 있다. 게다가, 도 2 또는 3의 접속성 엔진(225)은 스케쥴링을 조정하기 위한 프로세스(1000)를 구현할 수 있다. 도 12의 예에서, 각각의 애플리케이션들(앱1, 앱2, 및 앱3)은 2분의 허용 오차를 가지는 소프트-타이머를 포함한다. 프로세스(1000)와 같은 프로세스의 부재시에, 도 11에서 발생했을 타이머 만료들은 점선 화살표들로 표시된다. 실선 화살표들은 프로세스(1000)와 같은 프로세스의 관리 하에서 발생하는 타이머 만료들을 나타낸다. 일부 실시예들에서, 프로세스(1000)는 각각의 시간 간격에서(즉, 1, 2, 3분 등에서) 수행될 수 있다.
예를 들어, 시간 7에서, 앱2의 소프트-타이머는 정상적으로 만료했을 것이다. 그러나, 앱1의 타이머가 앱2의 소프트-타이머의 2분 허용오차 내에 있는 시간 6에서 만료함에 따라, 앱2의 소프트-타이머는 시간 6에서 조기에 만료했다. 유사하게, 시간 14에서 앱3의 클록의 만료는 앱1 및 앱2 모두에 대한 클록들의 2분 허용오차들 내에 든다. 시간 19까지, 앱1, 앱2 및 앱3에 대한 클록들 각각이 동일하거나 서로 고조파들인 기간들(각각 5분, 5분 및 10분)을 가지므로, 클록들은 정확하게 동상이 되어(통신 요청들이 다른 애플리케이션들에 대한 영향을 가지지 않는 마스터 클록들로 시간들 19, 24 및 29에서 후속적으로 발생함), 통신 자원들의 훨씬 더 효율적인 이용을 초래한다. 일반적으로, 타이머들이 동일한 기간들을 공유하는 경우, 또는 이들의 기간들이 서로의 고조파들(즉, 배수들)인 경우, 이들은, 다른 "마스터" 타이머들의 만료로부터의 간섭이 없다면, 영구적으로 서로 동상으로 유지될 수 있다(물론, 애플리케이션들의 타이머들 중 임의의 것의 주기성이 변경되는 경우 동기화 역시 방해될 수 있다). 따라서, 이 예는 프로세스가 적용되지 않는 경우의 도 11의 타이밍 도에 비해 3분과 33분 사이에 14개가 아닌 6개 접속 요청들이 발생하는 것을 예시한다.
또다른 예로서, 도 13은, 애플리케이션들(앱1, 앱2 및 앱3)이 동일한 기간들(각각, 8분, 5분 및 10분)을 소유하지 않는 또다른 상황을 도시한다. 도 11의 타이밍도에서와 같이, 도 13의 접속 요청들은 대부분의 애플리케이션들에 의해 사용되는 종래의 조정되지 않은 기법을 반영한다. 이러한 조정의 결여는 모바일 디바이스의 자원의 비효율적인 사용을 초래하여, 7분과 34분 사이에 12번의 모바일 디바이스의 통신 자원의 재활성화를 초래한다.
도 13의 애플리케이션들은 도 13의 앱1이 시간 민감적(time sensitive)이라는 점에서 도 11과는 상이하다. 본 발명의 실시예들의 일부의 이점들을 사용하기를 희망하는 개발자 또는 시스템 설계자는 도 13의 앱1에 대해 허용오차를 거의 가지지 않거나 허용오차를 가지지 않는 타이머를 생성할 가능성이 있다. 따라서, 하드-타이머가 앱1에 대해 사용될 수 있다. 반면 도 13의 앱2 및 앱3은 시간 민감적이 아니며 따라서 소프트-타이머들에 의해 수용될 수 있다. 도 13에서, 앱2 및 앱3에는 각각 2분의 허용오차를 가지는 소프트-타이머들이 주어진다.
도 14는 프로세스(1000)와 같은 프로세스를, 그러나 이번에는 도 13의 애플리케이션들에 대해 적용하는 것의 효과들을 도시한다. 도 14의 앱1의 타이머는, 그것이 하드-타이머임에 따라, 도 13의 타이밍도에서 도 13의 앱1과 동일하게 유지한다. 그러나, 도 14의 앱3은, 앱 2의 만료가 앱3의 의도된 만료 시간의 2분 내에 있으므로, 시간 12에서 앱2의 타이머의 만료에 기초하여 조기에 만료한다. 후속적으로, 앱2는 시간 25에서 앱1과 동기화되며, 앱3은 시간 30에서 앱2와 동기화한다. 위에서 논의된 바와 같이, 애플리케이션들은 도 1, 2, 3 또는 4의 모바일 디바이스(105) 상에서 실행할 수 있다. 게다가, 모바일 디바이스(105)는 스케쥴링을 조정하기 위한 프로세스(1000)를 구현할 수 있다. 이 예는 하나의 클록의 이전 동기화(앱 1에 기초한 시간 25 에서의 앱 2)가 또다른 클록의 후속적인 동기화(앱2에 기초한 시간 30에서의 앱3)에 어떻게 영향을 줄 수 있는지를 예시한다. 애플리케이션 클록들의 기간들이 고조파들이거나 동일하지 않음에 따라, 클록들은 영구적으로 정확하게 동기화되지 않을 수 있다. 여전히, 이 예는, 프로세스(1000)와 같은 프로세스가 적용되지 않는 경우 도 13의 타이밍도에 비해, 12개가 아닌 8개의 접속 요청들이 6분과 33분 사이에 발생함을 예시한다.
마스터 클록들은 이들이 연관된 애플리케이션에 기초하여 우선순위화될 수 있다. 즉, 매우 많은 대역폭 또는 배터리 전력을 소모하는 애플리케이션은 더 적은 대역폭 또는 배터리 전력을 소모하는 애플리케이션보다 자원들을 공유하기에 덜 적합할 수 있다. 따라서, 특정 실시예들에서, 모바일 디바이스(105)는, 프로세스(1000)가 적절한 범위 내의 허용오차를 가지는 소프트-타이머들을 조기에 만료시키기 전에 만료한 "마스터" 타이머들의 동작 및/또는 대응하는 우선순위를 고려하도록 조절될 수 있다. 일 예로서, 프로세스는, 허용 오차가 자신들의 타이머의 조기 만료를 허용하는 애플리케이션들의 대역폭 요건들에 비해, 블록(1005)에서 타이머들이 만료한(즉, 마스터 타이머들) 각각의 애플리케이션들에 대한 대역폭 요건들을 추가로 고려할 수 있다. 마스터 타이머들을 가지는 애플리케이션들의 누적 대역폭 요건들이 그 애플리케이션들과 다른 애플리케이션들의 채널의 공유된 사용에 대비하여 완화되는 경우, 모바일 디바이스(105)는 적절한 동작을 취할 수 있다. 예를 들어, 이들의 동작들을 수행하도록 허용되는 마스터 타이머들을 가지는 애플리케이션들에서 접속 요청이 이루어질 수 있다. 소프트-타이머들은 이후, 일단 마스터 타이머 애플리케이션들이 더 이상 과도한 대역폭을 소모하지 않으면 이들 애플리케이션들이 기존의 접속의 장점을 취하도록, 적절한 시간에(가능한 경우에, 그 소프트-타이머들의 허용오차에 의해 허용되는 경우 그 소프트-타이머들의 의도된 만료 시간 이후에) 만료하도록 만들어질 수 있다. 대안적으로, 소프트-타이머들의 만료는, 그 소프트-타이머들의 허용오차의 종단까지 또는 더 적은 대역폭을 사용할 새로운 접속 요청이 이루어질 때까지 지연될 수 있다.
예를 들어, 도 11 및 도 13을 참조하여 논의된 전술된 실시예의 일부에서, 타이머 만료는 통신 윈도우들의 리딩(leading) 에지에서 발생하는 것으로 도시된다. 특정 실시예들은 대신, 데이터 접속의 "트레일링 에지"에서, 즉, 노드와의 통신이 거의 휴지상태가 될 경우, 분석을 수행하는 것을 참작한다. 비용들이 접속의 개방 및 폐쇄 모두에 관련됨에 따라, 모바일 디바이스(105)는, 일단 현재 접속이 폐쇄되면 새로운 요청을 개시한다기보다는, 임의의 애플리케이션들이 접속을 개방하려고 하는지의 여부를 알기 위해 접속을 폐쇄하기 전에 프로세스(1000)와 유사한 프로세스를 실행할 수 있고, 대신 기존의 접속을 사용할 수 있다.
여기서 개시된 기법들 및 구조들을 사용하면, 모바일 디바이스는 애플리케이션들로부터의 시스템 호출들을 캡쳐하고 이들이 운영 체제에 도달하는 것을 보류하기 위한 응용 프로그램 인터페이스(API)를 제공하는 소프트웨어층(예시적 목적으로, 랩퍼라고 명명됨)을 사용할 수 있다. 캡쳐된 호출들은 집합화될 수 있고, 따라서, 모바일 디바이스의 빈번한 웨이킹(frequent waking)이 감소될 수 있고, 사용자가 모바일 디바이스를 활성적으로 사용하지 않은 기간들 동안 다른 통신 자원들이 보존된다.
당업자는 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있음을 이해할 것이다. 예를 들어, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 입자들, 광학장들 또는 입자들, 또는 이들의 임의의 조합에 의해 표현될 수 있다.
당업자는 여기서 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합들로서 구현될 수 있음을 추가로 인식할 것이다. 하드웨어 및 소프트웨어의 이러한 상호교환가능성을 명료하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들은 이들의 기능성의 견지에서 일반적으로 전술되었다. 이러한 기능성이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지의 여부는 특정 애플리케이션 및 전체 시스템에 부과된 설계 제약들에 의존한다. 당업자는 각각의 특정 애플리케이션에 대해 설명된 기능성을 가변적 방식들로 구현할 수 있지만, 이러한 구현 결정들은 본 발명의 예시적인 실시예들의 범위로부터의 이탈을 야기하는 것으로서 해석되지 않아야 한다.
여기서 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들 및 회로들은 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA) 또는 다른 프로그램가능 논리 디바이스, 이산 게이트 또는 트랜지스터 논리, 이산 하드웨어 컴포넌트들, 또는 여기서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 및 마이크로프로세서의 조합, 다수의 마이크로프로세서들, DSP 코어와 공조하는 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다.
여기서 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 직접적으로 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM), 플래시 메모리, 판독 전용 메모리(ROM), 전기적 프로그램가능 ROM(EPROM), 전기적 소거가능 프로그램가능 ROM(EEPROM), 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 당해 기술분야에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 일체화될 수 있다. 프로세서 및 저장 매체는 ASIC에 상주할 수 있다. ASIC은 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 사용자 단말 내에 이산 컴포넌트들로서 상주할 수 있다.
하나 이상의 예시적인 실시예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 비-일시적 컴퓨터-판독가능한 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 이들을 통해 전송될 수 있다. 컴퓨터-판독가능한 매체는 한 장소에서 또다른 장소로의 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체 및 컴퓨터 저장 매체 모두를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예시로서, 이러한 컴퓨터-판독가능한 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 반송하거나 저장하기 위해 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 적절하게 컴퓨터-판독가능한 매체로서 명명된다. 예를 들어, 소프트웨어가 웹사이트, 서버, 또는 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 라인(DSL), 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들을 사용하여 전송되는 경우, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. disk 및 disc는, 여기서 사용되는 바와 같이, 컴팩트 disc(CD), 레이저 disc, 광학 disc, 디지털 다목적 disc(DVD), 플로피 disk 및 블루레이 disc를 포함하며, 여기서 disk들은 보통 자기적으로 데이터를 재생하는 반면, disc들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 위 항목들의 조합들이 또한 컴퓨터-판독가능한 매체의 범위 내에 포함되어야 한다.
개시된 예시적인 실시예들의 이전 설명은 당업자가 본 발명을 실시 또는 사용하게 하도록 제공된다. 이들 예시적인 실시예들에 대한 다양한 수정들이 당업자에게 용이하게 명백할 것이며, 여기서 정의된 일반적인 원리들은 본 발명의 사상 또는 범위로부터의 이탈 없이 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 여기서 제시된 예시적인 실시예들에 제한되도록 의도되는 것이 아니라, 여기서 개시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위에 따라야 한다.

Claims (41)

  1. 모바일 디바이스에서의 무선 통신을 위한 방법으로서,
    상기 모바일 디바이스 상의 제1 애플리케이션으로부터의 요청을 인터셉트(intercept)하는 단계 ― 상기 요청은 상기 모바일 디바이스에 대한 통신을 수행하기 위한 요청임 ― ;
    상기 요청이, 상기 모바일 디바이스 상에서 실행하는 운영 체제의 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 스택에 도달하는 것을 보류(hold)하는 단계; 및
    트리거링 이벤트를 검출할 시에 상기 운영 체제에 상기 요청을 릴리즈(release)하는 단계를 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  2. 제1항에 있어서,
    상기 보류는 상기 모바일 디바이스가 배경 모드에 있는 기간 동안 발생하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  3. 제1항에 있어서,
    상기 모바일 디바이스에 대한 통신을 수행하기 위해 인터셉트된 다른 요청들과 함께 상기 요청을 집합화(aggregate)하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  4. 제3항에 있어서,
    상기 제1 애플리케이션으로부터의 상기 요청을 인터셉트하는 것 및 상기 다른 요청들을 인터셉트하는 것은 상이한 시간들에서 발생하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  5. 제1항에 있어서,
    랩퍼(wrapper)에 대한 명령들을 실행하는 단계를 더 포함하고, 실행되는 랩퍼는 상기 제1 애플리케이션으로부터의 상기 요청의 인터셉트를 수행하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  6. 제5항에 있어서,
    상기 랩퍼는 상기 모바일 디바이스의 운영 체제의 애플리케이션층과 소켓층 사이에 위치되는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  7. 제1항에 있어서,
    요청들이 보류되는 애플리케이션의 클래스로서 상기 제1 애플리케이션을 식별하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  8. 제7항에 있어서,
    애플리케이션을 중요 애플리케이션(critical application) 또는 비-중요 애플리케이션(non-critical application)으로서 식별하는 단계; 및
    비-중요 애플리케이션들로부터의 요청들만을 보류하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  9. 제1항에 있어서,
    상기 트리거링 이벤트는 타이머의 만료, 디스플레이의 상태 변경, 마이크로폰의 상태 변경, 스피커의 상태 변경, 상기 모바일 디바이스의 글로벌 포지셔닝 시스템(GPS) 센서의 상태 변경, 유니버셜 직렬 버스 포트(universal serial bus port)가 사용 중이라는 표시, 오디오 장비가 상기 모바일 디바이스에 접속된다는 표시, 비디오 장비가 상기 모바일 디바이스에 접속된다는 표시, Wi-Fi 타입의 네트워크에 대한 접속이 이용가능하다는 표시, 또는 셀룰러 타입의 네트워크에 대한 라디오 접속이 개방된다는 표시 중 적어도 하나를 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  10. 제1항에 있어서,
    상기 제1 애플리케이션의 지연 허용오차를 결정하는 단계; 및
    상기 결정된 지연 허용오차에 기초하여 상기 제1 애플리케이션에 콜백 기능을 제공하는 단계를 더 포함하고, 상기 콜백 기능은 통신 자원들에 접속하도록 상기 제1 애플리케이션에 명령하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  11. 제1항에 있어서,
    상기 제1 애플리케이션과 연관된 제1 타이머의 만료 시간을 결정하는 단계;
    제2 애플리케이션과 연관된 제2 타이머의 허용 오차 및 만료 시간을 결정하는 단계;
    상기 제1 타이머의 만료 시간, 상기 허용 오차, 및 상기 제2 타이머의 만료 시간에 기초하여 상기 제2 타이머가 만료되도록 하는 단계; 및
    상기 모바일 디바이스에 대한 통신을 수행하기 위해 상기 제1 애플리케이션으로부터의 요청 및 상기 제2 애플리케이션으로부터의 인터셉트된 요청을 릴리즈하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  12. 제1항에 있어서,
    상기 제1 애플리케이션으로부터 기한을 수신하는 단계;
    상기 기한 이전까지는 상기 요청을 보류하는 단계; 및
    상기 기한 이전에 통신 자원들에 접속하기 위해 상기 요청을 릴리즈하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  13. 제1항에 있어서,
    상기 요청은 상기 모바일 디바이스에 대한 통신 채널을 설정하기 위한 시스템 호출을 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  14. 제1항에 있어서,
    상기 트리거링 이벤트를 검출할 시에 상기 운영 체제의 소켓층에 상기 요청을 릴리즈하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  15. 제1항에 있어서,
    상기 요청의 릴리즈가 얼마나 자주 발생하는지에 관한 간격에 대한 표시를 수신하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
  16. 제15항에 있어서,
    상기 간격은 네트워크 내의 상태기반(stateful) 인터넷 프로토콜(IP) 미들박스의 타임아웃 값보다 더 작은, 모바일 디바이스에서의 무선 통신을 위한 방법.
  17. 무선 통신을 위해 구성된 모바일 디바이스로서,
    프로세서;
    상기 프로세서와 전자 통신하는 메모리를 포함하고, 상기 메모리는 운영 체제를 포함하고;
    상기 프로세서는 접속성 엔진을 포함하고, 상기 엔진은:
    상기 모바일 디바이스 상의 제1 애플리케이션으로부터의 요청을 인터셉트하고 ― 상기 요청은 상기 모바일 디바이스에 대한 통신을 수행하기 위한 요청임 ― ;
    상기 요청이, 상기 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것을 보류하고; 그리고
    트리거링 이벤트를 검출할 시에 상기 운영 체제에 상기 요청을 릴리즈하기 위한 명령들을 실행하도록 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
  18. 제17항에 있어서,
    상기 보류는 상기 모바일 디바이스가 배경 모드에 있는 기간 동안 발생하는, 무선 통신을 위해 구성된 모바일 디바이스.
  19. 제17항에 있어서,
    상기 모바일 디바이스에 대한 통신을 수행하기 위해 인터셉트된 다른 요청들과 함께 상기 요청을 집합화하는 것을 더 포함하는, 무선 통신을 위해 구성된 모바일 디바이스.
  20. 제19항에 있어서,
    상기 제1 애플리케이션으로부터 상기 요청을 인터셉트하는 것 및 상기 다른 요청들을 인터셉트하는 것은 상이한 시간들에서 발생하는, 무선 통신을 위해 구성된 모바일 디바이스.
  21. 제17항에 있어서,
    상기 메모리는 랩퍼를 더 포함하고, 상기 접속성 엔진은 상기 랩퍼에 대한 명령들을 실행하도록 추가로 구성되고, 상기 명령들이 실행되는 경우 상기 랩퍼는 상기 제1 애플리케이션으로부터의 상기 요청을 인터셉트하도록 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
  22. 제21항에 있어서,
    상기 랩퍼는 상기 모바일 디바이스의 운영 체제의 애플리케이션층과 소켓층 사이에 위치되는, 무선 통신을 위해 구성된 모바일 디바이스.
  23. 제17항에 있어서,
    상기 접속성 엔진은:
    요청들이 보류되는 애플리케이션의 클래스로서 상기 제1 애플리케이션을 식별하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
  24. 제23항에 있어서,
    상기 접속성 엔진은:
    애플리케이션을 중요 애플리케이션 또는 비중요 애플리케이션으로서 식별하고; 그리고
    비-중요 애플리케이션들로부터의 요청들만을 보류하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
  25. 제17항에 있어서,
    상기 트리거링 이벤트는 타이머의 만료, 디스플레이의 상태 변경, 마이크로폰의 상태 변경, 스피커의 상태 변경, 상기 모바일 디바이스의 글로벌 포지셔닝 시스템(GPS) 센서의 상태 변경, 유니버셜 직렬 버스 포트가 사용 중이라는 표시, 오디오 장비가 상기 모바일 디바이스에 접속된다는 표시, 비디오 장비가 상기 모바일 디바이스에 접속된다는 표시, Wi-Fi 타입의 네트워크에 대한 접속이 이용가능하다는 표시, 또는 셀룰러 타입의 네트워크에 대한 라디오 접속이 개방된다는 표시 중 적어도 하나를 포함하는, 무선 통신을 위해 구성된 모바일 디바이스.
  26. 제17항에 있어서,
    상기 접속성 엔진은:
    상기 제1 애플리케이션의 지연 허용오차를 결정하고; 그리고
    결정된 지연 허용오차에 기초하여 상기 제1 애플리케이션에 콜백 기능을 제공하기 위한 명령들을 실행하도록 추가로 구성되고, 상기 콜백 기능은 통신 자원들에 접속하도록 상기 제1 애플리케이션에 명령하는, 무선 통신을 위해 구성된 모바일 디바이스.
  27. 제17항에 있어서,
    상기 접속성 엔진은:
    상기 제1 애플리케이션과 연관된 제1 타이머의 만료 시간을 결정하고;
    제2 애플리케이션과 연관된 제2 타이머의 허용 오차 및 만료 시간을 결정하고;
    상기 제1 타이머의 만료 시간, 상기 허용 오차, 및 상기 제2 타이머의 만료 시간에 기초하여 상기 제2 타이머가 만료되도록 하고; 그리고
    상기 모바일 디바이스에 대한 통신을 수행하기 위해 상기 제1 애플리케이션으로부터의 요청 및 상기 제2 애플리케이션으로부터의 인터셉트된 요청을 릴리즈하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
  28. 제17항에 있어서,
    상기 접속성 엔진은:
    상기 제1 애플리케이션으로부터 기한을 수신하고;
    상기 기한 이전까지는 상기 요청을 보류하고; 그리고
    상기 기한 이전에 상기 통신 자원들에 접속하기 위해 상기 요청을 릴리즈하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
  29. 제17항에 있어서,
    상기 요청은 통신 채널을 설정하기 위한 시스템 호출을 포함하는, 무선 통신을 위해 구성된 모바일 디바이스.
  30. 제17항에 있어서,
    상기 접속성 엔진은, 상기 트리거링 이벤트를 검출할 시에 상기 운영 체제의 소켓층에 상기 요청을 릴리즈하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
  31. 제17항에 있어서,
    상기 접속성 엔진은 상기 요청의 릴리즈가 얼마나 자주 발생하는지에 관한 간격에 대한 표시를 수신하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
  32. 제31항에 있어서,
    상기 간격은 네트워크 내의 상태기반 인터넷 프로토콜(IP) 박스 내의 타임아웃 값보다 더 작은, 무선 통신을 위해 구성된 모바일 디바이스.
  33. 모바일 디바이스 상의 애플리케이션들로부터의 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치로서,
    상기 모바일 디바이스 상의 애플리케이션으로부터의 요청을 인터셉트하기 위한 수단 ― 상기 요청은 상기 모바일 디바이스에 대한 통신을 수행하기 위한 요청임 ― ;
    상기 요청이, 상기 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것을 보류하기 위한 수단; 및
    트리거링 이벤트를 검출할 시에 상기 운영 체제에 상기 요청을 릴리즈하기 위한 수단을 포함하는, 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치.
  34. 제33항에 있어서,
    상기 보류는 상기 모바일 디바이스가 배경 모드에 있는 기간 동안 발생하는, 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치.
  35. 제33항에 있어서,
    상기 모바일 디바이스에 대한 통신을 수행하기 위해 인터셉트된 다른 요청들과 함께 상기 요청을 집합화하기 위한 수단을 더 포함하는, 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치.
  36. 제35항에 있어서,
    상기 애플리케이션으로부터 상기 요청을 인터셉트하는 것 및 상기 다른 요청들을 인터셉트하는 것은 상이한 시간들에서 발생하는, 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치.
  37. 제33항에 있어서,
    랩퍼를 실행하기 위한 수단을 더 포함하고, 실행되는 랩퍼는 상기 애플리케이션으로부터의 상기 요청을 인터셉트하도록 구성되는, 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치.
  38. 제37항에 있어서,
    상기 랩퍼는 상기 모바일 디바이스의 운영 체제의 애플리케이션층 및 소켓층 사이에 위치되는, 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치.
  39. 제33항에 있어서,
    요청들이 보류되는 애플리케이션의 클래스로서 상기 애플리케이션을 식별하기 위한 수단을 더 포함하는, 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치.
  40. 제39항에 있어서,
    애플리케이션을 중요 애플리케이션 또는 비-중요 애플리케이션으로서 식별하기 위한 수단; 및
    비-중요 애플리케이션들로부터의 요청들만을 보류하기 위한 수단을 더 포함하는, 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치.
  41. 모바일 디바이스 상의 애플리케이션들로부터의 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 컴퓨터-판독가능 매체로서,
    상기 모바일 디바이스 상의 애플리케이션으로부터의 요청을 인터셉트하기 위한 코드 ― 상기 요청은 상기 모바일 디바이스에 대한 통신을 수행하기 위한 요청임 ― ;
    상기 요청이, 상기 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것을 보류하기 위한 코드; 및
    트리거링 이벤트를 검출할 시에 상기 운영 체제에 상기 요청을 릴리즈하기 위한 코드를 포함하는, 컴퓨터-판독가능 매체.
KR1020137027548A 2011-03-18 2011-11-04 네트워크 액세스 요청들의 관리 KR101557843B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161454457P 2011-03-18 2011-03-18
US61/454,457 2011-03-18
US13/288,933 US9264868B2 (en) 2011-01-19 2011-11-03 Management of network access requests
US13/288,933 2011-11-03
PCT/US2011/059439 WO2012128792A1 (en) 2011-03-18 2011-11-04 Management of network access requests

Publications (2)

Publication Number Publication Date
KR20140005298A KR20140005298A (ko) 2014-01-14
KR101557843B1 true KR101557843B1 (ko) 2015-10-06

Family

ID=45048218

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137027548A KR101557843B1 (ko) 2011-03-18 2011-11-04 네트워크 액세스 요청들의 관리

Country Status (6)

Country Link
EP (1) EP2687050A1 (ko)
JP (1) JP5784816B2 (ko)
KR (1) KR101557843B1 (ko)
CN (1) CN103535084B (ko)
BR (1) BR112013023791A8 (ko)
WO (1) WO2012128792A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013015835A1 (en) 2011-07-22 2013-01-31 Seven Networks, Inc. Mobile application traffic optimization
CA2806549C (en) 2010-07-26 2014-10-28 Seven Networks, Inc. Context aware traffic management for resource conservation in a wireless network
KR101828295B1 (ko) * 2011-08-30 2018-02-13 삼성전자 주식회사 단말 및 그 단말에서 애플리케이션 관리 방법
GB2510556A (en) 2012-12-12 2014-08-13 Microsoft Corp Aggregating data prior to transmission using timer events
US9326185B2 (en) 2013-03-11 2016-04-26 Seven Networks, Llc Mobile network congestion recognition for optimization of mobile traffic
WO2014172386A2 (en) 2013-04-15 2014-10-23 Seven Networks, Inc. Temporary or partial offloading of mobile applicaton functions to a cloud-based environment
US20150023161A1 (en) 2013-07-22 2015-01-22 Seven Networks, Inc. Modifying system timers for optimizing mobile traffic management
CN104346137B (zh) * 2013-07-24 2019-05-14 腾讯科技(深圳)有限公司 一种应用联网的管理方法、系统和计算机可读存储介质
CN103905641B (zh) * 2014-03-19 2015-10-28 奉化波导软件有限公司 一种防止手机流量偷跑的方法
WO2016011648A1 (zh) * 2014-07-24 2016-01-28 华为技术有限公司 数据收发方法、调制解调器及终端设备
CN104519560B (zh) * 2014-12-10 2017-11-17 广东欧珀移动通信有限公司 拦截移动终端请求的方法及移动终端
CN104580702A (zh) * 2014-12-19 2015-04-29 龙凤娇 一种防止手机流量偷跑的方法及装置
CN104809046B (zh) * 2015-05-27 2018-01-16 广东欧珀移动通信有限公司 一种应用程序联网控制方法和应用程序联网控制装置
US10057742B2 (en) 2016-05-18 2018-08-21 Veniam, Inc. Systems and methods for managing the routing and replication of data in the download direction in a network of moving things
US11044311B2 (en) 2016-05-18 2021-06-22 Veniam, Inc. Systems and methods for managing the scheduling and prioritizing of data in a network of moving things
US10298691B2 (en) 2016-05-18 2019-05-21 Veniam, Inc. Systems and methods for managing the storage and dropping of data in a network of moving things
US10178601B2 (en) * 2016-05-18 2019-01-08 Veniam, Inc. Systems and methods for managing the routing and replication of data in the upload direction in a network of moving things
US20190028971A1 (en) * 2017-07-24 2019-01-24 Google Inc. Network communication frequency adjustment
US11122127B2 (en) * 2017-08-28 2021-09-14 Qualcomm Incorporated Techniques and apparatuses for modem-assisted heartbeat transmission

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090022095A1 (en) 2007-07-16 2009-01-22 Cellport Systems, Inc. Communication Channel Selection and Use

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122514A (en) * 1997-01-03 2000-09-19 Cellport Systems, Inc. Communications channel selection
JP2000349827A (ja) * 1999-06-09 2000-12-15 Nec Corp Tcp/ip通信ネットワークから移動通信ネットワークへの発信方法及び発着信システム
JP2001339465A (ja) * 2000-05-26 2001-12-07 Mitsubishi Electric Corp メッセージフロー制御方法および通信システム
JP2002091841A (ja) * 2000-09-13 2002-03-29 Sanyo Electric Co Ltd ネットワークシステム及び機器認識方法
US8160000B2 (en) * 2006-06-08 2012-04-17 Qualcomm Incorporated Achieving power savings through packet grouping
US8223729B2 (en) * 2006-07-19 2012-07-17 Qualcomm Incorporated Radio interface selection for a terminal
JP2008072568A (ja) * 2006-09-15 2008-03-27 Hiroshi Makino 適応非同期通信制御プログラム
CN101145949A (zh) * 2007-04-25 2008-03-19 中兴通讯股份有限公司 一种基于手持设备移动的网络管理系统
US8015313B2 (en) * 2008-03-04 2011-09-06 Sony Corporation Method and apparatus for managing transmission of TCP data segments
JP5374717B2 (ja) * 2008-08-21 2013-12-25 独立行政法人情報通信研究機構 高信頼な制御コマンドの送受信と帯域の効率化を実現するセンサーネットワークシステム
JP5354557B2 (ja) * 2009-08-24 2013-11-27 インテル・コーポレーション 低電力で高速なアプリケーションサービス送信
US9603085B2 (en) * 2010-02-16 2017-03-21 Qualcomm Incorporated Methods and apparatus providing intelligent radio selection for legacy and non-legacy applications

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090022095A1 (en) 2007-07-16 2009-01-22 Cellport Systems, Inc. Communication Channel Selection and Use

Also Published As

Publication number Publication date
BR112013023791A2 (pt) 2016-12-06
WO2012128792A1 (en) 2012-09-27
CN103535084B (zh) 2017-12-29
BR112013023791A8 (pt) 2018-07-10
EP2687050A1 (en) 2014-01-22
CN103535084A (zh) 2014-01-22
JP5784816B2 (ja) 2015-09-24
KR20140005298A (ko) 2014-01-14
JP2014514813A (ja) 2014-06-19

Similar Documents

Publication Publication Date Title
KR101557843B1 (ko) 네트워크 액세스 요청들의 관리
US9264868B2 (en) Management of network access requests
US9571952B2 (en) Offloading of data to wireless local area network
EP2752058B1 (en) Apparatus and method for monitoring of background application events
KR101398339B1 (ko) 동적 휴면을 갖는 방법 및 장치
KR101377376B1 (ko) 이동 컴퓨팅 장치, 및 애플리케이션 연속성을 유지하기 위한 방법
EP2725869B1 (en) System and method for reducing power consumption based on data activity sensitive timers
EP2774331B1 (en) Systems and methods for synchronization of application communications
KR20120088784A (ko) 지능적으로 푸싱 관리를 하는 이동 컴퓨팅 디바이스 및 방법
TW201444392A (zh) 訊務無通信計時器之動態調適
JP2017509272A (ja) 高速休眠システムおよびプロセス
KR101488650B1 (ko) 백그라운드 애플리케이션 이벤트들의 관리를 위한 시스템들 및 방법들
Doki et al. Mobile interface control scheme can extend battery life

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee