KR102189612B1 - 애플리케이션 로딩을 위한 메모리 관리 - Google Patents

애플리케이션 로딩을 위한 메모리 관리 Download PDF

Info

Publication number
KR102189612B1
KR102189612B1 KR1020187034647A KR20187034647A KR102189612B1 KR 102189612 B1 KR102189612 B1 KR 102189612B1 KR 1020187034647 A KR1020187034647 A KR 1020187034647A KR 20187034647 A KR20187034647 A KR 20187034647A KR 102189612 B1 KR102189612 B1 KR 102189612B1
Authority
KR
South Korea
Prior art keywords
application
memory
applications
memory system
determining
Prior art date
Application number
KR1020187034647A
Other languages
English (en)
Other versions
KR20190003684A (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 KR20190003684A publication Critical patent/KR20190003684A/ko
Application granted granted Critical
Publication of KR102189612B1 publication Critical patent/KR102189612B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Telephone Function (AREA)
  • Memory System (AREA)

Abstract

일부 실시예들은, 모바일 디바이스의 메모리 압박 레벨에 의해 허용될 때, 하나 이상의 애플리케이션을 영구 스토리지로부터 작업 메모리에 로딩할 수 있다. 애플리케이션들을 작업 메모리에 로딩하는 것은 애플리케이션들이 사용자가 론칭하고자 하는 바램을 나타낼 때 신속하게 포그라운드로 론칭될 수 있게 해준다. 일부 실시예들은 모바일 디바이스가 도크 모드에 있을 때 디스플레이될 스냅숏들을 제공하기 위해 지정된 애플리케이션들의 세트를 식별할 수 있다. 특정 실시예들은 현재의 메모리 압박 레벨을 결정할 수 있다. 일부 실시예들은 메모리 압박 레벨이 임계값 미만이라고 결정하는 것에 응답하여 애플리케이션들의 세트 내의 애플리케이션을 영구 스토리지로부터 작업 메모리에 로딩할 수 있다. 특정 실시예들은 메모리 압박 레벨이 임계값 미만이라고 결정하는 것에 응답하여 부가의 애플리케이션들을 계속해서 로딩할 수 있다. 메모리 압박 레벨이 임계값 초과라고 결정한 후에, 일부 실시예들은 메모리를 리클레임할 수 있다.

Description

애플리케이션 로딩을 위한 메모리 관리
관련 출원에 대한 상호 참조
본 출원은 2016년 6월 10일자로 출원된 미국 정규 출원 제15/179,877호의 이익을 주장하며, 이는 모든 목적들을 위해 참고로 그 전체가 포함된다.
본 출원은 2016년 6월 10일자로 출원된, "PROVIDING UPDATED APPLICATION DATA FOR PREVIEWING APPLICATIONS ON A DISPLAY"에 관련된 공동 소유의 동시 계류 중인 미국 출원 제15/179,863호(대리인 사건 번호 P31019US1; 1006817), 및 2016년 6월 10일자로 출원된, "ENHANCED APPLICATION PREVIEW MODE"에 관련된 공동 소유의 동시 계류 중인 미국 출원 제15/179,824호(대리인 사건 번호 P31467US1; 1009141)에 관한 것이며, 이 미국 출원들은 모든 목적들을 위해 참고로 그 전체가 포함된다.
본 개시내용은 일반적으로 모바일 디바이스들에 관한 것으로, 특히 모바일 디바이스들에 대한 메모리 관리에 관한 것이다.
모바일 디바이스들은 다양한 애플리케이션들에 대한 최근의 애플리케이션 데이터를 디스플레이할 수 있다. 예를 들어, 웨어러블(wearable)과 같은 모바일 디바이스는 애플리케이션 데이터가 가능한 빈번하게 리프레시될 필요가 있는 모바일 디바이스의 페이스(face) 상에 애플리케이션 데이터를 디스플레이할 수 있다. 데이터가 만료될 때 애플리케이션 데이터를 업데이트하기 위해 상당한 로드 시간(load time)이 요구될 수 있다. 사용자가 애플리케이션이 디스플레이하기 위한 데이터를 로딩하고 업데이트하는 것을 기다리는 데 보다 많은 시간을 소비하기 때문에 사용자 경험이 빠르게 저하된다. 게다가, 애플리케이션 데이터가 디스플레이하기 위해 끊임없이 업데이트되는 경우 모든 애플리케이션들을 활성으로 유지하는 것은 메모리가 제한된 경우 너무 많은 메모리를 차지할 뿐만 아니라, 배터리 수명을 소모시키고 모바일 디바이스 상의 다른 프로세스들을 스톨링(stall)시킬 것이다.
일부 실시예들은 애플리케이션들이 미리 결정된 애플리케이션들의 리스트로부터 온 것인 경우 메모리 이용가능성에 기초하여 하나 이상의 애플리케이션을 모바일 디바이스의 메모리에 로딩할 수 있다. 미리 결정된 애플리케이션들의 리스트는 애플리케이션들의 스냅숏들이 사용자에게 디스플레이될 수 있는 미리보기 모드에서 디스플레이하도록 지정된 애플리케이션들(애플리케이션 도크라고도 지칭됨)일 수 있다. 일부 실시예들은 모바일 디바이스 상에서 이용가능한 프리 메모리(free memory)의 양에 대응하는 메모리 압박 레벨(memory pressure level)을 결정할 수 있다. 메모리 압박 레벨을 결정하는 것에 응답하여, 디바이스는 애플리케이션을 로딩할지를 결정할 수 있다. 메모리 압박 레벨이 임계값 미만인 경우, 디바이스는 애플리케이션을 영구 스토리지로부터 메모리에 로딩하기로 결정할 수 있다. 미리 설정된 시간 간격 후에, 디바이스는 메모리 압박 레벨에 관한 다른 결정을 할 수 있다. 메모리 압박 레벨이 임계값 미만인 경우, 디바이스는 다른 애플리케이션을 로딩하기로 결정할 수 있다. 디바이스는 계속하여 메모리 압박 레벨이 임계값 미만인지를 결정하고 미리 결정된 애플리케이션들의 리스트 내의 모든 애플리케이션들이 로딩될 때까지 미리 결정된 리스트 내의 애플리케이션들을 로딩할 수 있다. 메모리 압박 레벨이 임계값을 초과하는 경우, 디바이스는 하나 이상의 애플리케이션을 로딩하는 것을 중단하거나 디-로딩(de-load)할 수 있다.
다른 실시예들은 본 명세서에 기술된 방법들과 연관된 시스템들, 휴대용 소비자 디바이스들, 및 컴퓨터 판독가능 매체들에 관련된다.
본 발명의 실시예들의 본질 및 이점들의 더 나은 이해가 하기의 상세한 설명 및 첨부 도면을 참조하여 얻어질 수 있다.
도 1은 특정 실시예들에 따른 애플리케이션들을 영구 스토리지로부터 모바일 디바이스의 메모리에 로딩하기 위한 메모리 관리 시스템의 하이 레벨 블록 다이어그램을 도시하고 있다.
도 2는 일부 실시예들에 따른 미리보기 모드가 활성화되는 동안 모바일 디바이스 상에 디스플레이되는 애플리케이션 스냅숏들의 일 예를 예시하고 있다.
도 3은 특정 실시예들에 따른 예시적인 스냅숏 생성 시스템을 예시하고 있다.
도 4는 특정 실시예들에 따른 도크 내의 애플리케이션들에 대해 하나 이상의 애플리케이션을 메모리에 로딩하는 것(프리-론칭(pre-launching)이라고도 지칭됨)의 예시적인 시퀀스 다이어그램을 예시하고 있다.
도 5는 특정 실시예들에 따른, 다수의 애플리케이션들을 영구 스토리지로부터 동작 메모리에 로딩하기 위한 예시적인 프로세스를 예시하고 있다.
도 6은 특정 실시예들에 따른 부가의 애플리케이션이 로딩될 수 있게 하기 위해 메모리를 리클레임(reclaim)하는 것의 예시적인 시퀀스 다이어그램을 예시하고 있다.
도 7은 일부 실시예들에 따른 도크 내의 애플리케이션들에 대한 스냅숏들이 업데이트될 수 있게 해주기 위해 메모리를 리클레임하기 위한 예시적인 프로세스를 예시하고 있다.
도 8은 일부 실시예들에 따른 애플리케이션에 대한 우선순위 레벨을 배정(assign)하기 위한 예시적인 프로세스를 예시하고 있다.
도 9는 일부 실시예들에 따른, 도크 내의 하나 이상의 애플리케이션을 영구 스토리지로부터 작업 메모리에 로딩하기 위한 웨어러블 디바이스를 도시하고 있다.
도 10은 특정 실시예들에 따른 (예컨대, 웨어러블 디바이스를 구현하는) 도 9의 웨어러블 디바이스의 단순화된 블록 다이어그램이다.
일부 실시예들은 애플리케이션들이 미리 결정된 애플리케이션들의 리스트로부터 온 것인 경우 메모리 이용가능성에 기초하여 하나 이상의 애플리케이션을 모바일 디바이스의 메모리에 로딩할 수 있다. 일부 실시예들에서, 미리 결정된 애플리케이션들의 리스트는 모바일 디바이스가 미리보기 모드에 있을 때 애플리케이션들의 스냅숏들이 사용자에게 디스플레이될 수 있는 애플리케이션 도크에 대해 지정된 애플리케이션들일 수 있다.
일부 실시예들은 모바일 디바이스 상에서 이용가능한 프리 메모리의 양에 대응하는 메모리 압박 레벨을 결정할 수 있다. 메모리 압박 레벨을 결정한 후에, 디바이스는 애플리케이션을 로딩(프리-론칭이라고도 지칭됨)할지를 결정할 수 있다. 메모리 압박 레벨이 임계값 미만인 경우, 디바이스는 애플리케이션을 영구 스토리지로부터 메모리에 로딩하기로 결정할 수 있다. 미리 설정된 시간 간격 후에, 디바이스는 메모리 압박 레벨에 관한 다른 결정을 할 수 있다. 메모리 압박 레벨이 임계값 미만인 경우, 디바이스는 다른 애플리케이션을 로딩하기로 결정할 수 있다. 디바이스는 계속하여 메모리 압박 레벨이 임계값 미만인지를 결정하고 미리 결정된 애플리케이션들의 리스트 내의 모든 애플리케이션들이 로딩될 때까지 미리 결정된 리스트 내의 애플리케이션들을 로딩할 수 있다. 메모리 압박 레벨이 임계값을 초과하는 경우, 디바이스는 애플리케이션들을 로딩하는 것을 중단할 수 있다.
특정 실시예들에서, 디바이스는 메모리 압박 레벨이 임계 레벨을 초과하는 경우 미리 결정된 애플리케이션들의 세트 내의 애플리케이션들 중 하나 이상을 디-로딩할 수 있다. 일부 실시예들에서, 도크에 대해 지정된, 컴플리케이션(complication)들에 대해 지정된, "보호됨(protected)"으로서 지정된 애플리케이션들은 유휴 데몬들(idle daemons)보다 높은 우선순위를 가질 수 있다. 메모리 압박 레벨이 임계 레벨을 초과할 때(예컨대, 포그라운드 애플리케이션(foreground application)이 너무 많은 메모리를 사용하고 있을 때), 일부 실시예들은, 가장 낮은 우선순위들을 갖는 애플리케이션들 및/또는 프로세스들로부터 시작하여, 애플리케이션들 및/또는 프로세스들(예컨대, 유휴 데몬들)을 메모리로부터 디-로딩하기 시작할 수 있다.
일부 실시예들은 메모리 압박 레벨을 결정하고 메모리가 해방(free)될 때(예컨대, 모바일 디바이스의 스크린이 꺼질 때) 미리 결정된 애플리케이션들의 세트 내의 애플리케이션들이 로딩될 수 있는지를 결정할 수 있다. 메모리 압박 레벨이 허용함에 따라, 특정 실시예들은 애플리케이션들을 작업 메모리에 로딩하고 다양한 애플리케이션들에 대한 업데이트된 애플리케이션 데이터를 포함한 스냅숏들을 생성(generate)할 수 있다. 업데이트된 애플리케이션 데이터를 갖는 스냅숏들은 이어서 사용자가 도크 내의 스냅숏들을 브라우징할 때 사용자에게 디스플레이될 수 있다. 사용자는 애플리케이션에 대응하는 스냅숏을 선택함으로써(예컨대, 스냅숏을 탭핑함으로써) 애플리케이션이 모바일 디바이스의 포그라운드로 론칭되게 할 수 있다.
I. 메모리 관리 시스템 개요
도 1은 특정 실시예들에 따른 애플리케이션들을 영구 스토리지로부터 모바일 디바이스의 메모리에 로딩하기 위한 메모리 관리 시스템(100)의 하이 레벨 블록 다이어그램을 도시하고 있다. 일부 실시예들은 애플리케이션들이 능동적으로 실행되는 경우 애플리케이션들을 (예컨대, 포그라운드로) 론칭하지 않고 프리-론칭된 상태로 두기 위해 애플리케이션들을 영구 스토리지로부터 메모리에 로딩할 수 있다. 일부 실시예들에서, 애플리케이션이 프리-론칭될 때, 애플리케이션이 로딩되어 메모리에 상주하지만, 사용자가 애플리케이션과 상호작용할 수 있는 경우 포그라운드에서 사용자에게 제시되지 않는다. 특정 실시예들에서, 사용자가 (예컨대, 스냅숏을 탭핑함으로써) 애플리케이션을 활성화시키려고 시도할 때 애플리케이션이 영구 스토리지로부터 메모리에 로딩되어야만 하는 경우보다 애플리케이션이 프리-론칭되어 메모리에 상주할 때 애플리케이션이 더 빨리 포그라운드로 론칭될 수 있다.
일부 실시예들에서, 메모리 관리 시스템(100)은 프로세싱 유닛(105) 및 영구 스토리지(115)를 포함한다. 프로세싱 유닛(105)은 메모리(110) 및 하나 이상의 프로세스를 수행하기 위해 컴퓨터 코드를 실행할 수 있는 하나 이상의 프로세서(예컨대, 중앙 프로세싱 유닛)(여기에 도시되지 않음)를 포함할 수 있다. 메모리(110)는 하나 이상의 애플리케이션(125) 및 메모리 압박 감지 서브시스템(120)을 포함할 수 있다. 애플리케이션(들)(125)은 태스크들 또는 기능들을 수행할 수 있는 하나 이상의 컴퓨터 소프트웨어 애플리케이션일 수 있고, 운영 체제의 일부일 수 있다.
일부 실시예들에서, 메모리 압박 감지 서브시스템(120)은, 메모리(110)에 상주하고 프로세싱 유닛(105)의 하나 이상의 프로세서에 의해 액세스될 수 있는, 프로세싱 유닛(105) 상에서 실행되는 소프트웨어일 수 있다. 메모리 압박 감지 서브시스템(120)은, 메모리(110) 상의 이용가능한 저장 공간과 같은, 메모리(110)에 관한 정보를 결정할 수 있다. 다른 실시예들에서, 메모리 압박 감지 서브시스템(120)은 메모리에 관한 정보를 제공하는 메모리 제어기일 수 있다.
애플리케이션들(130)은 영구 스토리지(115) 상에 저장된 것으로 도시되어 있다. 애플리케이션들(130) 중 하나 이상은 모바일 디바이스의 영구 스토리지(115)로부터 메모리(110)에 로딩될 수 있다. 특정 실시예들에서, 영구 스토리지(115)는 디바이스가 더 이상 전력을 공급받지 않은 후에 데이터를 유지(retain)할 수 있는 비휘발성 스토리지와 같은 데이터 저장 디바이스일 수 있다. 일부 실시예들에서, 영구 스토리지(115)는 메모리(110)가 존재하는 곳과 동일한 모바일 디바이스(예컨대, 웨어러블 디바이스) 상에 있을 수 있다. 다른 실시예들에서, 메모리(110)는 모바일 디바이스(예컨대, 스마트 워치와 같은 웨어러블 디바이스) 상에 존재할 수 있는 반면, 영구 스토리지(115)는 다른 모바일 디바이스(예컨대, 스마트폰) 상에 있을 수 있다. 다른 모바일 디바이스의 영구 스토리지(115) 상의 하나 이상의 애플리케이션(130)은 모바일 디바이스에 의해, 예를 들어, 네트워크(예컨대, 블루투스®, WiFi®)를 통해, 액세스가능할 수 있다.
메모리 압박 감지 서브시스템(120)이 메모리(110)의 "메모리 압박"이 임계 레벨 미만이라고 결정할 때, 애플리케이션들(130) 중 하나 이상이 영구 스토리지(115)로부터 메모리(110)로 로딩될 수 있다. 애플리케이션들의 로딩은 프로세싱 유닛(105)에 의해 수행될 수 있다. 애플리케이션(130)을 영구 스토리지(115)로부터 로딩한 후에, 애플리케이션(125)은 메모리(110)에 상주하고 메모리(110)가 존재하는 모바일 디바이스에 의해 용이하게 액세스가능할 수 있다.
메모리 압박 레벨은 메모리 이용가능성의 척도일 수 있으며, 여기서 높은 메모리 압박 레벨은 가용 메모리의 양이 미리 결정된 값(예컨대, 10 MB) 미만이라는 것 또는 총량에 대해 상대적인 가용 메모리의 양이 임계값 미만(예컨대, 총 메모리의 10% 미만)이라는 것을 나타낼 수 있다. 일부 실시예들에서, 낮은 메모리 압박 레벨은 프리 메모리(예컨대, 사용가능 메모리)의 양 또는 퍼센티지가 (예컨대, 모바일 디바이스의 사용자 또는 시스템 관리자에 의해 구성가능한) 임계 양 또는 퍼센티지보다 크다는 것을 나타낼 수 있다.
일부 실시예들은 미리보기 모드에서 디스플레이하기 위해 애플리케이션 도크의 일부인 애플리케이션들 전부를 로딩하기를 원할 수 있다. 애플리케이션 도크의 일부인 애플리케이션들은 모바일 디바이스가 미리보기 모드에 있을 때 사용자에게 제시되는 애플리케이션의 미리보기를 가질 수 있다. 특정 실시예들에서, 애플리케이션의 미리보기는 업데이트된 애플리케이션 데이터를 포함한다. 업데이트된 애플리케이션 데이터는 현재의 애플리케이션 데이터가 만료됨에 따라 업데이트되는 최근의 애플리케이션 데이터 또는 주기적으로 업데이트되는 애플리케이션 데이터일 수 있다.
일부 실시예들에서, 애플리케이션 도크의 일부인 것으로 지정되는 모바일 디바이스를 통해 액세스가능한 모든 애플리케이션들의 서브세트만이 있다(즉, 모바일 디바이스 상에서 이용가능한 모든 애플리케이션들보다 적음). 미리보기 모드가 (예컨대, 사용자가 모바일 디바이스 상의 버튼을 선택하는 것을 통해) 활성화될 때, 사용자는 애플리케이션 도크에 제시된 미리보기들(스냅숏들이라고도 지칭됨)을 브라우징하고 그들 사이를 내비게이트하며 미리보기들 중 하나를 선택하여 선택된 미리보기에 대응하는 애플리케이션을 론칭할 수 있다.
II. 예시적인 스크린샷
일부 실시예들은, 모바일 디바이스가 미리보기 모드에 있을 때 애플리케이션 스냅숏들을 제공하기 위해, 애플리케이션들이 포그라운드에서 필요하지 않은(예컨대, 사용자에 의해 론칭되도록 아직 요청되지 않은) 때에도 애플리케이션들을 메모리에 로딩할 수 있다. 일부 실시예들에서, 스냅숏들은 업데이트된 애플리케이션 데이터를 포함할 수 있다. 애플리케이션들이 도 1에 기술된 것과 같은 메모리에 로딩될 때, 실시예들은 메모리에 상주하는 애플리케이션들에 대한 스냅숏들을 생성할 수 있다.
일부 실시예들에서, 애플리케이션이 (예컨대, 모바일 디바이스의 스크린의 포그라운드로) 론칭되기 전에, 일부 실시예들은 애플리케이션이 메모리에 로딩되었지만 아직 활성이 아닐 때 애플리케이션에 대한 스냅숏을 생성할 수 있다. 특정 실시예들은 모바일 디바이스가 미리보기 모드에 있을 때 애플리케이션들에 대한 이 스냅숏들을 디스플레이하고 사용자가 대응하는 애플리케이션을 활성화시키기 위해 스냅숏을 선택하도록 허용할 수 있다. 모바일 디바이스 상에 활성화된 미리보기 모드의 예가 도 2에 도시될 수 있다.
도 2는 일부 실시예들에 따른 미리보기 모드가 활성화되는 동안 모바일 디바이스(200) 상에 디스플레이되는 애플리케이션 스냅숏들의 일 예를 예시하고 있다. 미리보기 모드에서, 모바일 디바이스(200)의 그래픽 사용자 인터페이스(205)는 디스플레이되어 있는 전체 애플리케이션 스냅숏(들)(210)에 이웃하는 애플리케이션 스냅숏들이 더 있다는 것과 사용자가 (예컨대, 자신의 손가락으로 스크린을 스와이프하는 것에 의해, 모바일 디바이스를 틸팅하는 것에 의해, 제스처를 수행하는 것에 의해, 디지털 크라운(220)을 회전시키는 것에 의해) 그 스냅숏들로 내비게이트할 수 있다는 것을 사용자에게 나타내기 위해 하나 이상의 애플리케이션 스냅숏(210) 및 부가의 스냅숏들(215)의 부분들을 디스플레이할 수 있다.
이 도 2에서, 그래픽 사용자 인터페이스(205)의 중앙에 디스플레이되는 단일의 전체 애플리케이션 스냅숏(210) 및 스냅숏(210)에 인접하여 디스플레이된 애플리케이션 스냅숏들(215)의 부분들이 있다. 사용자가 도크를 브라우징하고 그 이웃하는 스냅숏들(215)로 내비게이트할 때, 사용자는 이어서 그래픽 사용자 인터페이스(205) 상에서 현재 점선으로 표시된 애플리케이션 스냅숏들의 부분들을 볼 수 있다. 점선으로 표시된 스냅숏들의 부분들은 인터페이스(205)가 애플리케이션 스냅숏(210) 상에 중심을 두고 있는 동안 사용자가 그 부분들을 볼 수 없다는 것을 나타낸다. 상이한 실시예들은 상이한 수의 애플리케이션들 및 애플리케이션들의 상이한 부분들을 스크린 상에 상이하게 수용할 수 있다.
특정 실시예들은 미리보기 모드에 있는 동안 애플리케이션들의 업데이트된 스냅숏들을 애플리케이션들의 도크에 제시하는 것을 가능하게 해준다. 애플리케이션들이 메모리에 상주할 때, 애플리케이션들은 업데이트된 애플리케이션 데이터를 포함하는 스냅숏들을 생성할 수 있다. 그렇지만, 스냅숏들을 보여주는 그러한 애플리케이션들이 포그라운드로 론칭되지 않았다. 메모리에 상주하는 애플리케이션들은, 애플리케이션들이 완전히 론칭될 것을 요구하지 않으면서, 이 애플리케이션들의 스냅숏들이 생성되고 미리보기 모드에서 디스플레이될 수 있게 해준다. 애플리케이션이 아직 완전히 론칭되지 않은 경우, 애플리케이션의 프로세스들 전부가 로딩되어 능동적으로 실행되는 것은 아니며 따라서 사용자 상호작용을 위한 준비가 되어 있는 것은 아니다. 도크 내의 스냅숏들은 2016년 6월 10일자로 출원된 발명의 명칭이 "Providing Updated Application Data For Previewing Applications On A Display"인 미국 정규 출원 제15/179,863호(참조 번호 P31019US1)에서 발견될 수 있는 다양한 프로세스들에 따라 업데이트되며, 이 출원은 이로써 모든 목적들을 위해 참고로 포함된다.
III. 스냅숏 생성 시스템
도 3은 특정 실시예들에 따른 예시적인 스냅숏 생성 시스템(300)을 예시하고 있다. 특정 실시예들은 모바일 디바이스가 미리보기 모드에 있을 때 디스플레이할 스냅숏들을 생성하기 위해 하나 이상의 애플리케이션을 메모리에 로딩할 수 있다. 일부 실시예들은 메모리 압박이 허용함에 따라 도크에 대해 지정된 애플리케이션들을 식별하고 애플리케이션들을 메모리에 로딩할 수 있다. 일부 실시예들에서, 스냅숏 생성 시스템(300)은 스냅숏 관리자(305), 메모리 압박 감지 서브시스템(310), 애플리케이션 로더(application loader)(315), 메모리 리클레이머(memory reclaimer)(320), 및 스냅숏 생성기(325)를 포함할 수 있다. 스냅숏 생성 시스템(300)은 모바일 디바이스 상에 존재하는 소프트웨어, 하드웨어, 또는 이들의 조합일 수 있다. 상이한 실시예들은 도 3에 기술된 것들과 같은 부가의 또는 더 적은 모듈들을 포함할 수 있다. 게다가, 스냅숏 생성 시스템(300) 내의 특정 컴포넌트들이 모바일 디바이스(예컨대, 스마트 워치)에 통신가능하게 커플링된 다른 모바일 디바이스(예컨대, 스마트폰) 상에 존재할 수 있다.
스냅숏 관리자(305)는 애플리케이션 스냅숏들의 생성을 관리할 수 있다. 일부 실시예들에서, 스냅숏 관리자(305)는 애플리케이션 도크에 대해 지정된 애플리케이션들의 세트를 식별할 수 있다. 스냅숏 관리자(305)는 어느 애플리케이션들이 메모리에 로딩되는지 그리고 세트 내의 어느 애플리케이션들이 메모리에 로딩되지 않는지를 결정할 수 있다. 스냅숏 관리자(305)는 메모리에 로딩되지 않은 세트 내의 애플리케이션들을 로딩할 수 있거나 애플리케이션들을 로딩하라는 요청을 애플리케이션 로더(315)에게 송신할 수 있다. 스냅숏 관리자(305)는 어느 애플리케이션들을 메모리에 로딩할지 그리고 애플리케이션들이 로딩되는 순서(예컨대, 우선순위 레벨별로, 도크에서의 애플리케이션 스냅숏들의 배치에 기초하여) 및 방식(예컨대, 라운드 로빈에 의해)을 결정할 수 있다.
일부 실시예들에서, 스냅숏 관리자(305)는 또한 애플리케이션 도크 내의 애플리케이션 스냅숏들이 최신의 것인지 또는 업데이트될 필요가 있는지를 결정할 수 있다. 어느 애플리케이션들이 메모리에 있는지에 기초하여, 스냅숏 관리자(305)는 스냅숏들을 생성하고 디스플레이함에 있어서 애플리케이션들과 조율할 수 있다. 예를 들어, 애플리케이션이 메모리에 있지 않고 애플리케이션의 데이터가 업데이트될 필요가 있는 경우, 스냅숏 관리자(305)는 업데이트된 애플리케이션 데이터를 획득하기 위해 애플리케이션이 메모리에 로딩될 필요가 있다고 결정할 수 있다. 일부 실시예들에서, 스냅숏 관리자(305)는 또한 부가의 애플리케이션들의 로딩을 가능하게 해주기 위해 부가의 메모리가 필요한지를 결정할 수 있다. 스냅숏 관리자(305)가 부가의 메모리 이용가능성이 필요하다고 결정하는 경우, 스냅숏 관리자(305)는 특정 양의 메모리를 리클레임하라고 메모리 리클레이머(320)에게 요청할 수 있다. 스냅숏 관리자(305)는 그로써 메모리가 일단 해방(free up)되면 부가의 애플리케이션들을 로딩할 수 있고, 그로써 부가의 애플리케이션들에 대한 스냅숏들의 생성을 용이하게 할 수 있다.
메모리 압박 감지 서브시스템(310)은 모바일 디바이스의 메모리의 메모리 압박 레벨을 결정할 수 있다. 일부 실시예들에서, 메모리 압박 레벨은 메모리 상의 이용가능한 메모리 공간을 나타낼 수 있다. 다양한 실시예들에서, 메모리 압박 레벨은 메모리 상에서 이용가능한 메모리의 양(예컨대, 10 Gb), 메모리의 전체 용량(full capacity)의 퍼센티지 양, 또는 현재 이용가능한 애플리케이션들 및/또는 다른 프로세스들을 위해 확보된(set aside) 이용가능한 메모리의 총량(예컨대, 전체 용량의 80%)일 수 있다. 메모리 압박 레벨이 낮을 때, 부가의 애플리케이션들을 메모리에 로딩하기 위한 보다 많은 이용가능한 공간이 있다. 메모리 압박 레벨이 임계 레벨을 초과할 때, 특정 실시예들은 더 이상의 애플리케이션들이 메모리 내에 로딩될 수 없다고 결정할 수 있다.
특정 실시예들에서, 스냅숏 관리자(305)는 현재의 메모리 압박 레벨에 대한 요청을 메모리 압박 감지 서브시스템(310)에게 송신함으로써 메모리 압박 레벨을 결정할 수 있다. 메모리 압박 감지 서브시스템(310)은 이어서 메모리 압박 레벨을 반환할 수 있다. 스냅숏 관리자(305)는 이어서 임의의 부가의 애플리케이션들을 로딩하기에 충분한 용량이 없도록 메모리 압박 감지 서브시스템(310)으로부터 수신된 메모리 압박 레벨이 임계 레벨을 초과하는지를 결정할 수 있다. 일부 실시예들에서, 메모리 압박 레벨이 임계 레벨 미만이거나 다른 임계 레벨, 예컨대, 이전에 사용된 임계 레벨보다 낮은 것이 사용될 수 있기 때문에, 스냅숏 관리자(305)는 부가의 애플리케이션들이 로딩될 수 있다고 결정할 수 있다.
그에 따라, 메모리 압박 감지 서브시스템(310)은 모바일 디바이스의 메모리와 상호작용할 수 있다. 예를 들어, 메모리 압박 감지 서브시스템(310)은 메모리(예컨대, 모바일 디바이스의 프로세싱 유닛 내의 캐시)와 통신할 수 있다. 일부 실시예들에서, 메모리 압박 감지 서브시스템(310)은 프로래밍가능한 메모리 제어기일 수 있다.
애플리케이션 로더(315)는 하나 이상의 애플리케이션을 영구 저장 디바이스로부터 메모리에 로딩할 수 있는데, 예컨대, 그러한 기능이 스냅숏 관리자(305)에 의해 수행되지 않는 경우 그러하다. 일부 실시예들에서, 스냅숏 관리자(305)는, 예컨대, 메모리 압박 레벨이 임계값 미만일 때, 하나 이상의 애플리케이션을 메모리에 로딩하라는 요청을 애플리케이션 로더(315)에게 송신할 수 있다. 애플리케이션을 로딩하라는 요청을 수신한 후에, 애플리케이션 로더(315)는 애플리케이션을 모바일 디바이스의 작업 메모리(예컨대, 캐시 또는 랜덤 액세스 메모리)에 로딩할 수 있다.
애플리케이션의 인터페이스가 포그라운드에 디스플레이되지 않으면서 애플리케이션이 (예컨대, 제한된 시간 기간 동안) 실행되고 업데이트되도록, 애플리케이션 로더(315)가 애플리케이션의 컴포넌트들을 작업 메모리에 로딩할 수 있다. 이 프리-론칭된 상태에 있는 애플리케이션은 백그라운드에서 실행 중이고, 사용자가 (예컨대, 미리보기 모드에서 디스플레이되는 대응하는 스냅숏에 탭핑함으로써) 애플리케이션의 콘텐츠를 보고 싶다는 것을 사용자가 나타낼 때, 그래픽 인터페이스의 포그라운드에서 사용자에게 신속하게 제시될 수 있다. 애플리케이션이 프리-론칭되지 않은 경우보다 애플리케이션이 프리-론칭되었을 때 애플리케이션 론칭 시간이 사용자에게 훨씬 더 짧아 보일 수 있다. 애플리케이션에 대한 론칭 시간은 스냅숏이 탭핑되는 것과 애플리케이션이 사용자 입력을 위해 이용가능하게 될 때 사이의 시간 간격으로서 측정될 수 있으며, 여기서 애플리케이션이 론칭될 때 스냅숏의 동일한 스크린이 처음에 사용자에게 디스플레이된다.
메모리 리클레이머(320)는 메모리 내의 공간을 해방시키기 위해 메모리 내의 하나 이상의 애플리케이션 및/또는 프로세스를 디-로딩 또는 종료할 수 있다. 일부 실시예들에서, 메모리 리클레이머(320)는 다른 애플리케이션들 및/또는 프로세스들을 로딩하기 위해 메모리 내의 공간을 해방시키라는 요청을 스냅숏 관리자(305)로부터 수신할 수 있다. 특정 실시예들에서, 메모리 리클레이머(320)는, 요청을 수신할 때마다, 하나 이상의 애플리케이션을 디-로딩할 수 있다. 일부 실시예들에서, 메모리 리클레이머(320)는 스냅숏 관리자(305)로부터 요청을 수신한 후에 해방될 필요가 있는 공간의 양을 결정하고 필요한 공간의 양에 대응하는 애플리케이션(들) 및/또는 프로세스(들)를 디-로딩할 수 있다. 본 기술분야의 통상의 기술자는 하나 이상의 애플리케이션 및/또는 프로세스가 디-로딩될 수 있는 많은 방식을 인식할 것이다.
특정 실시예들에서, 메모리 리클레이머(320)는 메모리의 메모리 압박 레벨이 임계 레벨을 초과할 때 메모리를 리클레임할 수 있다. 예를 들어, 메모리 리클레이머(320)는 애플리케이션 도크 내의 애플리케이션에 대한 새로운 스냅숏이 필요할 때 그리고 애플리케이션이 메모리에 아직 로딩되지 않고 메모리 압박 레벨이 너무 높을 때 메모리를 리클레임할 수 있다. 특정 실시예들에서, 메모리 리클레이머(320)는 보다 낮은 우선순위 대역에 있는 하나 이상의 애플리케이션 및/또는 프로세스를 식별하는 것에 의해 그리고 메모리를 해방시키기 위해 그 애플리케이션들 및/또는 프로세스들을 폐기하는 것에 의해 메모리를 리클레임할 수 있다.
스냅숏 생성기(325)는 애플리케이션이 메모리에 로딩될 때 애플리케이션의 스냅숏을 생성할 수 있다. 일부 실시예들에서, 스냅숏 생성기(325)는 로딩된 애플리케이션의 제1 스크린의 스냅숏을 취할 수 있다. 특정 실시예들에서, 스냅숏 생성기(325)는 (예컨대, 영구 메모리로부터) 레이어 데이터를 검색하고, (예컨대, 레이어 계층구조에 기초하여) 레이어를 어셈블링함으로써 스냅숏을 생성할 수 있다. 스냅숏 생성기(325)는 애플리케이션(들)이 메모리에 로딩되지만 포그라운드에서 능동적으로 실행되고 있지 않을 때 애플리케이션(들)에 대한 하나 이상의 스냅숏을 생성할 수 있다.
스냅숏 관리자(305)가 애플리케이션의 현재의 스냅숏이 오래되었거나(outdated) 만료된 데이터를 포함한다고 결정할 때 스냅숏 관리자(305)는 스냅숏을 생성하라는 요청을 스냅숏 생성기(325)에게 송신할 수 있다. 스냅숏 생성기(325)는 이어서 메모리 내의 애플리케이션으로부터 업데이트된 스냅숏을 생성할 수 있다. 애플리케이션은 일부 실시예들에서 레이어 데이터를 제공할 수 있고, (운영 체제의 일부일 수 있는) 스냅숏 생성기(325)는 레이어 데이터를 사용하여 스냅숏을 생성(create)할 수 있다. 스냅숏 생성기(325)는 모바일 디바이스의 그래픽 사용자 인터페이스 상에 디스플레이하기 위해 스냅숏을 렌더링할 수 있다. 일부 실시예들에서, 사용자가 미리보기 모드를 브라우징하고 있을 때 스냅숏 생성기(325)는 스냅숏들이 디스플레이되게 할 수 있다.
IV. 메모리 사용량에 기초하여 다수의 애플리케이션들을 메모리에 로딩하기 위한 흐름 개요
A. 메모리 압박이 임계값 미만일 때 애플리케이션들을 프리-론칭하기
도 4는 특정 실시예들에 따른 도크 내의 애플리케이션들에 대해 하나 이상의 애플리케이션을 메모리에 로딩하는 것(프리-론칭이라고도 지칭됨)의 예시적인 시퀀스 다이어그램(400)을 예시하고 있다. 특정 실시예들은 애플리케이션이 도크에 대해 지정된 애플리케이션들의 세트의 일부이고 메모리에 아직 로딩되지 않을 때 애플리케이션을 메모리에 로딩할 수 있다. 일부 실시예들은, 스냅숏이 애플리케이션으로부터 생성되고 그리고 미리보기 모드 동안 디스플레이하기 위해 모바일 디바이스 상에 렌더링될 수 있도록, 애플리케이션을 메모리에 로딩(또는 애플리케이션을 프리-론칭)할 수 있다.
애플리케이션을 프리-론칭하는 것은 애플리케이션과 연관된 인터페이스를 컴퓨팅 디바이스의 디스플레이 상에 디스플레이하지 않으면서 애플리케이션 콘텐츠를 컴퓨팅 디바이스의 작업 메모리에 로딩하는 것을 포함할 수 있다. 일부 실시예들에서, 애플리케이션이 프리-론칭된 후에, 애플리케이션은 애플리케이션 정보의 미리보기를 스냅숏을 통해 사용자에게 제공할 수 있다. 특정 실시예들에서, 사용자가 도크 모드에서 도크를 통해 브라우징할 때 업데이트된 애플리케이션 데이터를 일견하도록 애플리케이션 데이터의 스냅숏이 업데이트된 채로 유지될 수 있다.
시퀀스 다이어그램(400)은 스냅숏 관리자(405), 메모리 압박 감지 모듈(410), 및 애플리케이션 로더(415)를 포함한 상호작용 컴포넌트들 사이의 흐름의 일 예를 예시하고 있다. 스냅숏 관리자(405)는 도 3으로부터의 스냅숏 관리자(305)와 유사할 수 있고, 애플리케이션들의 로딩 및 스냅숏들의 생성을 관리할 수 있다. 메모리 압박 감지 모듈(410)은 도 3으로부터의 메모리 압박 감지 서브시스템(310)과 유사할 수 있고, 메모리와 통신함으로써 모바일 디바이스 상의 메모리의 메모리 압박을 결정할 수 있다. 애플리케이션 로더(415)는 도 3으로부터의 애플리케이션 로더(315)와 유사할 수 있고, 하나 이상의 애플리케이션을 영구 메모리로부터 작업 메모리에 로딩할 수 있다.
컴포넌트들은 소프트웨어, 하드웨어(예컨대, 하나 이상의 프로세서), 또는 이들의 조합으로 구현될 수 있다. 일부 실시예들에서, 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체 상에 저장되고 하나 이상의 프로세서에 의해 실행될 수 있다. 일부 실시예들에서, 스냅숏 관리자(405), 메모리 압박 감지 모듈(410), 및 애플리케이션 로더(415)는 모두가 모바일 디바이스(예컨대, 시계) 상에서 실행되는 소프트웨어일 수 있다. 특정 실시예들에서, 이 컴포넌트들 중 일부가 외부 디바이스(예컨대, 스마트폰)에 의해 부분적으로 또는 전체적으로 실행될 수 있다.
420에서, 스냅숏 관리자(405)는 메모리 압박 레벨에 대한 요청을 메모리 압박 감지 모듈(410)에게 송신할 수 있다. 425에서, 메모리 압박 레벨에 대한 요청을 수신하는 것에 응답하여, 메모리 압박 감지 모듈(410)은 메모리 압박 레벨을 결정하고 결정된 레벨을 스냅숏 관리자(405)에게 송신할 수 있다.
430에서, 스냅숏 관리자(405)는 수신된 메모리 압박 레벨에 기초하여 하나 이상의 애플리케이션을 로딩할지를 결정할 수 있다. 일부 실시예들에서, 스냅숏 관리자(405)는 결정을 행함에 있어서 수신된 메모리 압박 레벨을 (예컨대, 시스템 관리자 또는 사용자에 의해 미리 구성된) 임계 값과 비교할 수 있다. 특정 실시예들에서, 수신된 메모리 압박 레벨이 임계 값 미만이라고 결정한 후에, 스냅숏 관리자(405)는 애플리케이션을 로딩하기로 결정할 수 있다. 메모리 압박 레벨 및 임계 값은 값 또는 퍼센티지를 나타낼 수 있다.
435에서, 애플리케이션을 로딩하기로 결정한 후에, 스냅숏 관리자(405)는 애플리케이션을 로딩하라고 요청할 수 있다. 요청은 애플리케이션 로더(415)에게 송신될 수 있다. 440에서, 애플리케이션 로더(415)는 이어서 애플리케이션을 로딩할 수 있다. 일부 실시예들에서, 애플리케이션이 스냅숏을 생성할 수 있도록 애플리케이션이 로딩된다. 특정 실시예들에서, 애플리케이션이 성공적으로 로딩되지 않을 수 있다. 애플리케이션이 성공적으로 로딩되지 못하는 경우, 애플리케이션 로더(415)는 다시 로딩하려고 시도하기 전에 일정 시간 기간 동안 대기할 수 있다.
일부 실시예들에서, 스냅숏 관리자(405)가 애플리케이션을 로딩하라고 요청한 후에, 445에서, 스냅숏 관리자(405)는 메모리 압박 레벨에 대해 또다시 요청하기 전에 일정 시간 간격 동안 대기할 수 있다. 특정 실시예들에서, 애플리케이션이 그 시간 간격 내에 로딩될 수 있다. 일부 실시예들은 애플리케이션을 메모리에 로딩하는 평균 시간, 그리고 일부 경우들에서, 애플리케이션이 스냅숏을 생성하는 평균 시간에 기초하여 시간 간격을 결정하고 설정할 수 있다. 특정 실시예들은 애플리케이션이 로딩되는 시간 간격(예컨대, 인터-애플리케이션 시간(inter-application time)) 이외에 부가의 시간 기간 동안(예컨대, 로딩하려고 시도할 때 애플리케이션이 충돌하는 경우 인트라-애플리케이션 시간(intra-application time) 동안) 대기할 수 있다.
450에서, 스냅숏 관리자(405)는 그 때의 메모리 압박 레벨에 대한 다른 요청을 메모리 압박 감지 모듈(410)에게 송신할 수 있다. 메모리 압박 감지 모듈(410)은 새로운 메모리 압박 레벨을 결정하고, 455에서 새로운 메모리 압박 레벨을 스냅숏 관리자(405)에게 송신할 수 있다. 455에서 메모리 압박 레벨을 수신한 후에, 스냅숏 관리자(405)는 460에서 다른 애플리케이션을 로딩할지를 결정할 수 있다. 메모리 압박 레벨(예컨대, 메모리 압박 레벨이 임계 레벨 미만인 것)에 기초하여, 스냅숏 관리자(405)는 다른 애플리케이션을 로딩하기로 또다시 결정할 수 있다. 일부 실시예들에서, 스냅숏 관리자(405)는 로딩될 도크에 대해 지정된 애플리케이션들의 세트 내의 다음 애플리케이션을 결정할 수 있다. 특정 실시예들에서는, 애플리케이션 로더(415)가 로딩될 다음 애플리케이션을 결정할 수 있다.
460에서 다른 애플리케이션을 로딩하기로 결정한 후, 스냅숏 관리자(405)는 465에서 로딩하라는 요청을 애플리케이션 로더(415)에게 송신할 수 있다. 애플리케이션 로더(415)는 이어서 계속하여 다른 애플리케이션을 메모리에 로딩할 수 있다. 일부 실시예들에서, 다른 애플리케이션은 로딩될 애플리케이션들의 순서에 기초하여 결정될 수 있다. 순서는 스냅숏들이 애플리케이션 도크에 제시되는 순서에 기초할 수 있다. 예를 들어, 순서는 좌측으로부터 우측으로 또는 우측에서 좌측으로일 수 있다. 특정 실시예들에서, 순서는 사용자가 애플리케이션을 론칭할 수 있는 가능성에 기초할 수 있다. 사용자가 애플리케이션을 론칭할 가능성은 사용자가 모바일 디바이스를 통해 액세스가능한 다양한 애플리케이션들과 상호작용한 이력 데이터에 기초하여 결정될 수 있다. 애플리케이션을 로딩한 후에, 일부 실시예들은 애플리케이션에 대한 다른 스냅숏을 생성할 수 있다.
475에서, 스냅숏 관리자(405)는 메모리 압박 레벨에 대한 다른 요청을 송신하기 전에 미리 결정된 양의 시간 동안 또다시 대기할 수 있다. 특정 실시예들은 메모리 압박 레벨을 요청하기 전에 애플리케이션이 로딩되기를 기다릴 수 있다. 일부 실시예들에서, 스냅숏 관리자(405)는 다른 애플리케이션을 로딩하라는 요청을 송신한 후 시간 간격 동안 대기한다. 일부 실시예들은 애플리케이션 로더(415)가 어떤 다른 것을 동시에 로딩하지 않도록 시간 간격 동안 대기한다.
480에서, 스냅숏 관리자(405)는 메모리 압박 감지 모듈(410)에 대해 메모리 압박 레벨을 이어서 요청할 수 있다. 485에서, 스냅숏 관리자(405)는 메모리 압박 감지 모듈(410)에 의해 결정된 메모리 압박 레벨을 수신할 수 있다. 490에서, 스냅숏 관리자(405)는 메모리 압박 레벨이 너무 높거나 임계 레벨 초과라고 결정할 수 있다. 490에서 메모리 압박 레벨이 임계 레벨 초과라고 결정하는 것에 응답하여, 스냅숏 관리자(405)는 495에서 일정 시간 기간 동안 대기하기로 결정할 수 있다.
일부 실시예들에서, 스냅숏 관리자(405)는 얼마의 시간 동안 대기할 수 있고, 이어서 메모리 압박이 어떤 시간 기간 후에 감소했는지를 알아보기 위해 메모리 압박 감지 모듈(410)을 체크할 수 있다. 특정 실시예들에서, 대기 시간은 스냅숏 관리자(405)가 다른 애플리케이션을 로딩하기로 결정했을 때에 대한 시간 간격보다 길 수 있다. 499에서, 미리 결정된 시간 기간 동안 대기한 후, 스냅숏 관리자(405)는 또다시 메모리 압박 레벨에 대한 다른 요청을 송신할 수 있다. 이어서, 메모리 압박 레벨이 임계 레벨 미만이라고 결정되는 경우 부가의 애플리케이션들을 로딩하는 프로세스가 이어서 반복될 수 있다.
B. 메모리 이용가능성에 의해 허용되는 다수의 애플리케이션들을 로딩하고 그 로딩된 애플리케이션들에 대한 스냅숏을 생성하기
도 5는 특정 실시예들에 따른, 다수의 애플리케이션들을 영구 스토리지로부터 동작 메모리에 로딩하기 위한 예시적인 프로세스(500)를 예시하고 있다. 일부 실시예들은 메모리 압박 레벨이 임계값 미만일 때 애플리케이션을 메모리에 로딩할 수 있다. 특정 실시예들은, 메모리 이용가능성에 의해 허용되는 경우, 애플리케이션들의 세트 내의 모든 애플리케이션들이 메모리에 로딩될 때까지 도크에 대해 지정된 애플리케이션들의 세트 내의 애플리케이션들을 계속하여 로딩하기로 결정할 수 있다.
블록(505)에서, 프로세스(500)는 모바일 디바이스가 미리보기 모드에 있을 때 디스플레이될 스냅숏들을 제공하기 위해 지정된 애플리케이션들의 세트를 식별할 수 있다. 특정 실시예들은 어느 애플리케이션들이 애플리케이션 도크의 일부인지를 결정할 수 있다. 일부 실시예들에서, 모바일 디바이스가 미리보기 모드에 있을 때 미리보기 모드에서 디스플레이되는 스냅숏들은 애플리케이션이 만료되거나 오래됨에 따라 업데이트될 필요가 있을 수 있다. 일부 실시예들은 애플리케이션 도크의 일부인 것으로 지정된 애플리케이션들을 가용 메모리에 의해 허용되는 수만큼 로딩하려고 시도할 수 있다.
블록(510)에서, 프로세스(500)는 현재의 메모리 압박 레벨에 대한 요청을 메모리 시스템에게 송신할 수 있다. 일부 실시예들에서, 스냅숏 관리자(예컨대, 도 3으로부터의 스냅숏 관리자(305))는 현재의 메모리 압박 레벨에 대한 요청을 메모리 압박 감지 서브시스템(예컨대, 도 3으로부터의 메모리 압박 감지 서브시스템(310))에게 송신할 수 있다. 특정 실시예들은 메모리 압박 레벨이 임계 레벨 미만인 것으로 결정될 때에만 애플리케이션을 로딩할 수 있다.
블록(515)에서, 프로세스(500)는 현재의 메모리 압박 레벨이 임계 값 미만이라고 결정할 수 있다. 일부 실시예들에서, 메모리 압박 감지 서브시스템은 현재의 메모리 압박 레벨을 결정하고 현재의 메모리 압박 레벨을 포함하는 응답을 스냅숏 관리자에게 송신할 수 있다. 스냅숏 관리자는 현재의 메모리 압박 레벨을 임계 값과 비교하여 현재의 메모리 압박 레벨이 임계 값 초과인지 미만인지를 결정할 수 있다.
블록(520)에서, 프로세스(500)는 현재의 메모리 압박 레벨이 임계값 미만이라고 결정하는 것에 응답하여 애플리케이션들의 세트 내의 제1 애플리케이션을 영구 스토리지로부터 메모리 시스템에 로딩할 수 있다. 일부 실시예들에서, 제1 애플리케이션은 제1 애플리케이션이 메모리 시스템에 로딩될 때 제1 애플리케이션의 제1 스냅숏을 생성하도록 구성될 수 있다. 특정 실시예들에서, 스냅숏 관리자는 애플리케이션을 작업 메모리에 로딩할 수 있다. 일부 실시예들에서, 스냅숏 관리자는 애플리케이션을 로딩하라는 요청을, 도 3으로부터의 애플리케이션 로더(315)와 같은, 애플리케이션 로더에게 송신할 수 있다.
특정 실시예들에서, 스냅숏 관리자는 제1 애플리케이션을 로딩한 후에 제1 애플리케이션의 제1 스냅숏을 생성할 수 있다. 제1 스냅숏은 사용자가 도크를 브라우징할 때 제1 스냅숏을 볼 수 있도록 디스플레이될 수 있다. 게다가, 일부 실시예들은, 사용자가 이어서 제1 스냅숏을 (예컨대, 스냅숏을 탭핑함으로써) 선택하는 경우, 애플리케이션을 포그라운드로 론칭할 수 있다.
블록(525)에서, 프로세스(500)는 새로운 메모리 압박 레벨에 대한 다른 요청을 메모리 시스템에게 송신할 수 있다. 일부 실시예들에서, 다른 요청은 애플리케이션이 로딩되도록 요청되었을 때로부터 미리 결정된 시간 기간에 송신될 수 있다. 일부 실시예들은 애플리케이션 로딩이, 예컨대, 임의의 부가의 애플리케이션 로딩들에 의해, 방해되지 않도록 보장하기 위해 요청이 너무 빨리(예컨대, 미리 결정된 시간 기간 내에 있지 않음) 송신되지 않기를 요구할 수 있다.
블록(530)에서, 프로세스(500)는 새로운 메모리 압박 레벨이 임계 값 미만이라고 결정할 수 있다. 제1 애플리케이션을 로딩한 후에, 일부 실시예들은 애플리케이션들의 세트 내의 다른 애플리케이션을 로딩하려고 계속하여 시도할 수 있다. 제1 애플리케이션이 로딩된 후의 새로운 메모리 압박 레벨이 여전히 임계 값 미만인 경우, 스냅숏 관리자는 다음 애플리케이션을 로딩하기로 결정할 수 있다.
블록(535)에서, 프로세스(500)는 새로운 메모리 압박 레벨이 임계 값 미만이라고 결정한 후에 애플리케이션들의 세트 내의 제2 애플리케이션을 영구 스토리지로부터 메모리 시스템에 로딩할 수 있다. 일부 실시예들에서, 제2 애플리케이션은 제2 애플리케이션이 메모리 시스템에 로딩될 때 제2 애플리케이션의 제2 스냅숏을 생성하도록 구성될 수 있다. 특정 실시예들에서, 스냅숏 관리자는 제2 애플리케이션의 제2 스냅숏을 생성할 수 있다.
특정 실시예들은 사용자가 도크를 브라우징할 때 제2 스냅숏을 볼 수 있도록 제2 스냅숏을 렌더링할 수 있다. 게다가, 일부 실시예들은, 사용자가 이어서 제2 스냅숏을 (예컨대, 제2 스냅숏을 탭핑함으로써) 선택하는 경우, 제2 애플리케이션을 포그라운드로 론칭할 수 있다. 일부 실시예들에서, 제1 애플리케이션 및 제2 애플리케이션은 메모리에 로딩되지 않은 애플리케이션들의 세트의 나머지 애플리케이션들의 서브세트 내의 애플리케이션들이다. 일부 실시예들은 애플리케이션들을 로딩하기 전에 메모리에 아직 로딩되지 않은 애플리케이션들의 서브세트를 식별할 수 있다.
V. 부가의 애플리케이션들이 로딩될 수 있게 해주기 위해 메모리를 리클레임하는 것에 대한 흐름 개요
A. 다른 애플리케이션을 로딩하기 위해 메모리 압박이 임계값을 초과할 때 메모리를 리클레임하기
도 6은 특정 실시예들에 따른 부가의 애플리케이션이 로딩될 수 있게 하기 위해 메모리를 리클레임하는 것의 예시적인 시퀀스 다이어그램(600)을 예시하고 있다. 앞서 기술된 바와 같이, 특정 실시예들은 메모리 압박 레벨이 임계값 미만일 때 부가의 애플리케이션들을 메모리에 로딩할 수 있다. 일부 실시예들은 메모리 압박이 임계값(예컨대, 메모리 압박이 임계값 미만일 때 부가의 애플리케이션들을 로딩하는 데 사용되는 임계값과 동일하거나 상이한 임계값)을 초과할 때 애플리케이션들을 메모리로부터 킬링(kill)할 수 있다. 특정 실시예들은, 메모리에 아직 있지 않은 도크에 대해 지정된 다른 애플리케이션들과 같은, 메모리에 로딩될 필요가 있는 부가의 애플리케이션들이 있다고 결정할 수 있다. 부가의 애플리케이션들이 메모리에 로딩될 필요가 있다고 결정한 후에, 일부 실시예들은 보다 낮은 우선순위 레벨을 갖는 애플리케이션들 및/또는 프로세스들을 제거할 수 있다. 특정 실시예들은 태스크를 수행(예컨대, 애플리케이션에 대한 업데이트된 스냅숏을 생성)했지만 짧은 시간 기간 내에 임의의 추가 목적들을 위해 사용될 필요가 없는 애플리케이션을 제거할 수 있다. 일부 실시예들은 메모리를 해방시키기 위해 애플리케이션을 제거하고 그로써 다른 애플리케이션들이 로딩될 수 있게 해준다.
시퀀스 다이어그램(600)은 스냅숏 관리자(605), 메모리 압박 감지 모듈(610), 애플리케이션 로더(615), 및 메모리 리클레이머(620)를 포함한 상호작용 컴포넌트들 사이의 흐름의 일 예를 예시하고 있다. 스냅숏 관리자(605)는 도 3으로부터의 스냅숏 관리자(305)와 유사할 수 있고, 애플리케이션들의 로딩 및 스냅숏들의 생성을 관리할 수 있다. 메모리 압박 감지 모듈(610)은 도 3으로부터의 메모리 압박 감지 서브시스템(310)과 유사할 수 있고, 메모리와 통신함으로써 모바일 디바이스 상의 메모리의 메모리 압박을 결정할 수 있다. 애플리케이션 로더(615)는 도 3으로부터의 애플리케이션 로더(315)와 유사할 수 있고, 하나 이상의 애플리케이션을 영구 메모리로부터 작업 메모리에 로딩할 수 있다. 메모리 리클레이머(620)는 도 3으로부터의 메모리 리클레이머(320)와 유사할 수 있고, 스냅숏 관리자(605)에 의해 요청된 바와 같이 하나 이상의 애플리케이션 및/또는 프로세스를 디-로딩할 수 있다.
625에서, 스냅숏 관리자(605)는 메모리 압박 레벨에 대한 요청을 메모리 압박 감지 모듈(610)에게 송신할 수 있다. 630에서, 메모리 압박 레벨에 대한 요청을 수신하는 것에 응답하여, 메모리 압박 감지 모듈(610)은 메모리 압박 레벨을 결정하고 결정된 레벨을 스냅숏 관리자(605)에게 송신할 수 있다. 635에서, 스냅숏 관리자(605)는 수신된 메모리 압박 레벨에 기초하여 애플리케이션을 로딩하기로 결정할 수 있다. 일부 실시예들에서, 스냅숏 관리자(605)는 메모리 압박 레벨이 특정 임계 레벨 미만이라고 결정하는 것에 응답하여 애플리케이션을 로딩하기로 결정할 수 있다. 일부 실시예들은 이 결정을 수행하는 것에 응답하여 하나 초과의 애플리케이션을 로딩할 수 있다.
640에서, 스냅숏 관리자(605)는 애플리케이션을 로딩하라는 요청을 애플리케이션 로더(615)에게 송신할 수 있다. 645에서, 애플리케이션 로더(615)는 애플리케이션을 로딩할 수 있다. 일부 실시예들은, 애플리케이션이 애플리케이션에 대한 업데이트된 스냅숏을 생성하는 것과 같은 하나 이상의 태스크를 백그라운드에서 수행할 수 있도록, 애플리케이션을 로딩(또는 프리-론칭이라고도 지칭됨)할 수 있다. 단계(650)에서, 로딩하라는 요청을 송신한 후에, 스냅숏 관리자(605)는 애플리케이션이 로딩될 수 있게 해주기 위해 일정 시간 기간 동안 대기할 수 있다. 일부 실시예들에서, 스냅숏 관리자(605)가 이전의 애플리케이션이 로딩되기 전에 다른 애플리케이션을 로딩하기로 결정하지 않도록, 스냅숏 관리자(605)는 메모리 압박 레벨에 대한 다른 요청을 송신하기 전에 일정 시간 간격 동안 대기할 수 있다.
655에서, 스냅숏 관리자(605)는 현재의(새로운) 메모리 압박 레벨에 대한 다른 요청을 메모리 압박 감지 모듈(610)에게 송신할 수 있다. 메모리 압박 감지 모듈(610)은 새로운 메모리 압박 레벨을 결정하고, 660에서 새로운 메모리 압박 레벨을 스냅숏 관리자(605)에게 송신할 수 있다. 메모리 압박 레벨을 수신한 후에, 스냅숏 관리자(605)는 665에서 다른 애플리케이션을 로딩할지를 결정할 수 있다. 655에서, 스냅숏 관리자(605)는 메모리 압박 레벨이 너무 높다고(예컨대, 메모리의 용량의 임계 값 또는 퍼센티지 초과라고) 결정할 수 있다. 압박 레벨이 임계 레벨 초과라고 결정한 후, 670에서, 스냅숏 관리자(605)는 메모리를 리클레임하라는 요청을 메모리 리클레이머(620)에게 송신할 수 있다.
675에서, 메모리 리클레이머(620)는 일부 메모리를 해방시키기 위해 어느 애플리케이션들 및/또는 프로세스들을 종료할지를 결정할 수 있다. 일부 실시예들에서, 스냅숏 관리자(605)로부터 송신된 메모리를 리클레임하라는 요청은 또한 리클레임될 필요가 있는 메모리의 양에 관한 규격을 포함할 수 있다. 예를 들어, 스냅숏 관리자(605)는 로딩되도록 예정(slate)된 다음 애플리케이션 및 다음 애플리케이션이 요구하는 메모리의 양에 기초하여 그가 필요로 하는 메모리의 양을 결정할 수 있다. 일부 실시예들에서, 메모리 리클레이머(620)는, 메모리를 리클레임하라는 요청을 수신할 때마다, (예컨대, 시스템 관리자 또는 사용자에 의해 이전에 설정된) 미리 결정된 설정된 양을 리클레임한다. 예를 들어, 메모리 리클레이머(620)가 메모리를 리클레임하라는 요청을 수신할 때마다, 메모리 리클레이머(620)는 20 Gb의 메모리를 리클레임할 수 있다. 메모리 리클레이머(620)는 보다 낮은 우선순위 레벨에 있는 그 애플리케이션들 및/또는 프로세스들, 그리고 그들이 해방시킬 메모리의 양을 식별하고 그 애플리케이션들 및/또는 프로세스들을 종료할 수 있다.
680에서, 메모리 리클레이머(620)는 하나 이상의 애플리케이션 및/또는 프로세스가 종료되었다고 스냅숏 관리자(605)에게 통보하며, 그로써 메모리를 해방시킨다. 685에서, 스냅숏 관리자(605)는 메모리 압박 레벨에 대한 다른 요청을 메모리 압박 감지 모듈(610)에게 송신할 수 있다. 특정 실시예들에서, 메모리가 해방되었다는 메모리 리클레이머(620)로부터의 표시(indication)를 기다리는 대신에, 스냅숏 관리자(605)는 새로운 메모리 압박 레벨에 대한 다른 요청을 송신하기 전에 메모리를 리클레임하라는 요청을 송신하는 것으로부터 일정 시간 기간 동안 대기하고 다른 요청을 송신할 수 있다.
690에서, 스냅숏 관리자(605)는 메모리 압박 레벨이 이제 임계 레벨 미만이고 따라서 다른 애플리케이션을 로딩하는 것이 가능하다고 결정할 수 있다. 690에서 메모리 압박 레벨이 임계 레벨 미만이라고 결정한 후에, 695에서, 스냅숏 관리자(605)는 다음 애플리케이션을 로딩하라고 요청할 수 있다. 699에서, 애플리케이션 로더는 이어서 다음 애플리케이션을 로딩할 수 있다. 일부 실시예들은 다음 애플리케이션이 로딩될 때 스냅숏을 생성할 수 있다. 일부 실시예들에서, 사용자가 미리보기 모드를 브라우징하고 있을 때 스냅숏이 사용자에게 디스플레이될 수 있다. 사용자는 대응하는 스냅숏을 (예컨대, 스냅숏을 탭핑하는 것을 통해) 선택함으로써 애플리케이션을 모바일 디바이스의 인터페이스의 포그라운드로 론칭할 수 있다.
B. 도크에 대해 지정된 애플리케이션들에 대한 애플리케이션 스냅숏들이 업데이트될 수 있게 해주기 위해 메모리를 리클레임하기
도 7은 일부 실시예들에 따른 도크 내의 애플리케이션들에 대한 스냅숏들이 업데이트될 수 있게 해주기 위해 메모리를 리클레임하기 위한 예시적인 프로세스(700)를 예시하고 있다. 일부 실시예들은 업데이트된 스냅숏들을 필요로 하는 도크에 대해 지정된 애플리케이션들이 업데이트될 수 있도록 메모리를 리클레임할 수 있다. 특정 실시예들은 디바이스가 메모리에 로딩하기를 원할 수 있는 다른 애플리케이션들(또는 프로세스들)을 위한 메모리를 해방시키고 그 애플리케이션들이 메모리에 로딩될 수 있게 해줄 수 있다. 일부 실시예들은 메모리 이용가능성이 임계값 미만일 때를 결정하고 메모리를 리클레임할 수 있다. 메모리를 리클레임한 후에, 특정 실시예들은 이어서 다른 애플리케이션을 영구 스토리지로부터 메모리에 로딩할 수 있다.
블록(705)에서, 프로세스(700)는 모바일 디바이스의 스크린이 턴 오프되어 있다는 표시를 수신할 수 있다. 일부 실시예들에서, 모바일 디바이스의 스크린이 오프일 때, 부가의 메모리가 이용가능하게 될 수 있다. 스크린이 오프일 때 모바일 디바이스와의 사용자 상호작용성이 제한된다. 게다가, 스크린이 오프이기 때문에, 포그라운드로 론칭되는 활성 애플리케이션들이 없다. 이에 따라, 백그라운드 프로세싱 테스크들(예컨대, 스냅숏의 생성)을 수행하기 위해 부가의 애플리케이션들 및/또는 프로세스들을 로딩하는 데 이용가능한 보다 많은 메모리가 있을 수 있다. 부가의 메모리가 이용가능하게 될 수 있고 따라서 프로세스(700) 및 본 개시내용에 기술된 다른 프로세스들의 부분들을 수행하게 되는 때의 다른 인스턴스들은 디바이스의 전원이 턴온되고 있을 때(즉, 전원 온 상태(on power state)), 또는 중앙 프로세싱 유닛이 임계 시간 기간 초과 동안 유휴였다고(또는 임계 양 미만의 프로세싱을 수행하였다고) 결정한 후를 포함할 수 있다. 일부 실시예들은 스크린이 턴 오프될 때마다 이 프로세스를 수행하고 반복할 수 있다.
블록(710)에서, 프로세스(700)는 높은(elevated) 우선순위를 갖는 애플리케이션들의 세트를 식별할 수 있다. 일부 실시예들에서, 높은 우선순위를 갖는 애플리케이션들의 세트는 미리보기 모드에서 보기 위한 도크에 대해 지정된 애플리케이션들을 포함할 수 있다. 일부 실시예들에서, 애플리케이션들의 세트는 모바일 디바이스 상에 설치된 애플리케이션들의 총수보다 적은 다수의 애플리케이션들을 포함할 수 있다.
블록(715)에서, 프로세스(700)는 현재의 메모리 압박 레벨에 대한 요청을 메모리 시스템에게 송신할 수 있다. 일부 실시예들에서, 작업 메모리의 현재의 메모리 압박 레벨에 대한 요청이 스냅숏 관리자(예컨대, 도 3 으로부터의 스냅숏 관리자(305))에 의해 메모리 압박 감지 서브시스템(예컨대, 도 3으로부터의 메모리 압박 감지 서브시스템(310))에게 송신될 수 있다. 특정 실시예들에서, 메모리 압박 감지 시스템은 메모리와 상호작용하고 메모리와 통신할 수 있으며, 현재의 메모리 압박 레벨이 무엇인지를 결정할 수 있다.
블록(720)에서, 프로세스(700)는 현재의 메모리 압박 레벨이 임계 레벨 미만인지를 결정할 수 있다. 블록(725)에서, 현재의 메모리 압박 레벨이 임계값 미만이라고 결정한 후에, 프로세스(700)는 애플리케이션들의 세트 내의 애플리케이션을 영구 스토리지로부터 작업 메모리에 로딩할 수 있다. 일부 실시예들에서, 영구 스토리지는 작업 메모리가 존재하는 동일한 모바일 디바이스 상에 존재할 수 있다. 특정 실시예들에서, 영구 스토리지는 작업 메모리가 존재하는 모바일 디바이스와 다른 모바일 디바이스(예컨대, 스마트폰) 상에 존재할 수 있다. 특정 실시예들은 현재의 메모리 압박 레벨이 임계값 미만이라고 결정한 후에 다수의 애플리케이션들을 로딩할 수 있다.
블록(730)에서, 프로세스(700)는 애플리케이션이 메모리에 로딩된 후에 애플리케이션의 스냅숏을 취할 수 있다. 일부 실시예들은 스냅숏에 대한 애플리케이션 데이터를 검색, 컴파일, 및 어셈블링할 수 있다. 일부 실시예들에서, 애플리케이션이 로딩되고 있는 동안, 스피너(spinner)가 제시될 수 있다. 특정 실시예들은 어셈블링된 애플리케이션 데이터의 스냅숏을 취하기 전에 스피닝(spinning)이 더 이상 존재하지 않을 때까지 일정 시간 기간 동안 대기할 수 있다.
애플리케이션은 스냅숏에 대한 업데이트된 애플리케이션 데이터를 획득하기 위한 CPU 시간을 가질 수 있는 경우 비활성 상태에 있을 수 있지만, 사용자가 애플리케이션과 상호작용할 수 있는 경우 활성이 아닐 수 있다. 일부 실시예들에서, 애플리케이션은 스냅숏에 필요한 애플리케이션 데이터를 결정함으로써 스냅숏을 생성할 수 있다. 애플리케이션은 스냅숏 정보를 운영 체제에 제공하고, 운영 체제가 제공된 스냅숏 정보의 스냅숏을 취할 수 있게 해줄 수 있다.
블록(735)에서, 프로세스(700)는 현재의 메모리 압박 레벨에 대한 다른 요청을 메모리 시스템에게 송신할 수 있다. 일부 실시예들에서, 스냅숏 관리자는 새로운 메모리 압박 레벨을 획득하라는 다른 요청을 메모리 압박 감지 서브시스템에게 송신할 수 있다. 요청은 스냅숏 관리자가 애플리케이션을 메모리에 로딩하라는 요청을 송신하고 나서 일정 시간 기간 후에 송신될 수 있다.
740에서, 현재의 메모리 압박 레벨이 임계 레벨 미만이 아니라고 결정한 후에, 프로세스(700)는 메모리를 리클레임할 필요가 있는지를 결정할 수 있다. 특정 실시예들은 메모리에 로딩되지 않은 도크에 대해 지정된 부가의 애플리케이션들이 있을 때 메모리를 리클레임할 필요가 있다고 결정할 수 있다. 일부 실시예들은 오래되어 업데이트될 필요가 있는 애플리케이션 스냅숏들이 있다고 결정한 후에 메모리를 해방시킬 필요가 있다고 결정할 수 있다. 특정 실시예들은 스냅숏 관리자 및/또는 애플리케이션 로더가 로딩하려고 시도하고 있는 애플리케이션이 여전히 이용가능한 메모리의 양을 초과하는 경우 메모리를 리클레임할 필요가 있다고 결정할 수 있다.
일부 실시예들은 스냅숏 내의 애플리케이션 데이터가 만료될 것이기 때문에 애플리케이션 스냅숏이 업데이트될 필요가 있다고 결정할 수 있다. 기술된 바와 같이, 애플리케이션 스냅숏들은 도크에 대해 지정된 애플리케이션들에 대한 최근의 데이터를 포함하도록 업데이트될 필요가 있을 수 있다. 특정 실시예들은 충분한 메모리가 이용가능하지 않은 경우 메모리를 리클레임할 필요가 있다고 결정할 수 있고 짧은 시간 기간 내에 업데이트된 스냅숏들을 필요로 하지 않는 애플리케이션들을 언로딩(unloading)하는 것에 의해 리클레임할 수 있다. 그 애플리케이션들을 언로딩한 후에, 일부 실시예들은 이어서 애플리케이션에 대한 업데이트된 스냅숏을 생성하기 위해 애플리케이션을 메모리에 로딩할 수 있다. 업데이트된 스냅숏들을 필요로 하는 애플리케이션들은, 하나의 애플리케이션이 로딩될 때 가장 일찍(at an earliest time) 로딩되었던 애플리케이션이 언로딩되는 라운드 로빈 방식으로, 메모리에 로딩되고 언로딩될 수 있다.
745에서, 메모리를 해방시킬 필요가 없다(예컨대, 메모리에 로딩될 필요가 있는 다른 애플리케이션들이 없다)고 결정한 후에, 프로세스(700)는 새로운 메모리 압박 레벨에 대한 다른 요청이 송신되는 블록(715)으로 복귀하기 전에 일정 시간 기간 동안 대기할 수 있다. 일부 실시예들은 메모리 디바이스 내의 부가의 메모리를 해방시킬 필요가 없다고 결정한 후에 다른 애플리케이션을 메모리에 로딩하는 것을 중지할 수 있다.
750에서, 메모리를 해방시킬 필요가 있다고 결정한 후에, 프로세스(700)는 메모리를 해방시키기 위해 하나 이상의 애플리케이션 및/또는 프로세스를 종료할 수 있다. 일부 실시예들은 가장 낮은 우선순위 값을 갖는 하나 이상의 애플리케이션 및/또는 프로세스를 종료할 수 있다. 특정 실시예들은 가장 낮은 우선순위 값을 갖는 애플리케이션을 디-로딩(본 개시내용 전체에 걸쳐 언로딩이라고도 지칭됨)할 수 있다. 일부 실시예들은, 가장 낮은 우선순위 값을 갖는 것들로부터 시작하여 두 번째로 가장 낮은 우선순위 값을 갖는 것들로, 이하 마찬가지로 계속하여, 하나 이상의 애플리케이션 및/또는 프로세스를 메모리로부터 디-로딩하기 시작할 수 있다. 특정 실시예들은 보다 낮은 우선순위 대역(예컨대, 우선순위 레벨 1 내지 우선순위 레벨 3)에 있는 것들에서 시작하여 애플리케이션들을 디-로딩할 수 있다.
하나 이상의 애플리케이션 및/또는 프로세스를 종료한 후에, 프로세스는 이어서 블록(715)으로 복귀할 수 있다. 또다시, 블록(715)에서, 프로세스(700)는 새로운 메모리 압박 레벨에 대한 다른 요청을 메모리 시스템에게 송신할 수 있다. 특정 실시예들은 이어서 새로운 메모리 압박 레벨이 임계값 미만인 경우 애플리케이션을 로딩할 수 있다.
일부 실시예들은 메모리를 해방시키라는 요청을 수신할 때마다 단일 애플리케이션 또는 단일 프로세스를 디-로딩할 수 있는 반면, 특정 실시예들은 해방될 필요가 있는 메모리의 양을 결정하고 그에 따라 메모리를 해방시킬 수 있다. 일부 실시예들은 하나 이상의 애플리케이션 및/또는 프로세스가 차지하는 메모리의 양을 결정하고 그 애플리케이션들 및/또는 프로세스들을 해방시키는 것으로 충분할 것인지를 결정할 수 있다. 특정 실시예들에서, 메모리를 해방시키라는 요청을 수신한 후에, 메모리 리클레이머는 이어서 설정된 양의 메모리(예컨대, 20 Mb) 분량의 애플리케이션들 및/또는 프로세스들을 리클레임할 수 있다.
일부 실시예들에서, 프로세스(700)가 메모리를 해방시킬 필요가 있다고 결정할 때마다, 애플리케이션이 디로딩된다. 애플리케이션을 디로딩한 후에, 일부 실시예들은 메모리 압박 레벨을 또다시 체크할 수 있다. 특정 실시예들은 한 번에 하나의 애플리케이션을 폐기할 수 있지만, 특정 양의 메모리가 해방될 때까지 계속하여 폐기할 수 있다. 예를 들어, 일부 실시예들은 20 Mb의 메모리가 메모리 디바이스로부터 해방될 때까지 애플리케이션들을 계속 폐기할 수 있다. 그 양의 메모리를 해방시킨 후에, 일부 실시예들은 이어서 메모리 압박 레벨을 또다시 체크하고 새로운 메모리 압박 레벨이 임계값 미만인 경우 다른 애플리케이션이 로딩되게 해줄 수 있다.
C. 애플리케이션이 애플리케이션과 연관된 우선순위 레벨에 기초하여 디-로딩될 수 있도록 애플리케이션들에 우선순위 레벨을 배정하기
도 8은 일부 실시예들에 따른 애플리케이션에 대한 우선순위 레벨을 배정(assign)하기 위한 예시적인 프로세스(800)를 예시하고 있다. 일부 실시예들에서, 작업 메모리에 로딩된 각각의 애플리케이션은 우선순위 레벨을 배정받을 수 있다. 일부 실시예들은 애플리케이션이 메모리에 로딩될 때 애플리케이션에 대한 우선순위 레벨을 배정할 수 있다. 특정 실시예들에서, 애플리케이션의 상태가 변함에 따라, 애플리케이션의 우선순위 레벨이 변할 수 있다. 애플리케이션의 상태가 변하는 것의 일 예는 포그라운드에서 론칭되어 사용자에 의해 보이는 것으로부터 백그라운드에서 유휴로 되는 것으로 변하는 것일 수 있다. 애플리케이션의 상태가 변하는 것의 다른 예는 도크의 일부로서 지정되는 것으로부터 도크의 일부로서 더 이상 지정되지 않는 것으로 변하는 것일 수 있다. 애플리케이션 상태 변화의 추가 예는 컴플리케이션들의 일부가 아닌 애플리케이션으로부터 자신의 애플리케이션 데이터의 일부가 웨어러블 디바이스의 페이스 상에 디스플레이되는 애플리케이션으로 변하는 것일 수 있다.
일부 실시예들은 애플리케이션 및/또는 프로세스의 우선순위 레벨에 기초하여 메모리를 리클레임할 수 있다. 일부 실시예들에서, 메모리 리클레이머(예컨대, 도 3에서의 메모리 리클레이머(320))는 가장 낮은 우선순위 레벨을 갖는 애플리케이션에서 시작하여 애플리케이션을 작업 메모리로부터 디-로딩할 수 있다. 특정 실시예들에서, 애플리케이션의 우선순위 레벨이 프로세스(800)를 사용하여 배정될 수 있다. 상이한 실시예들은 애플리케이션들의 우선순위 레벨들을 상이하게 배정할 수 있다.
블록(805)에서, 프로세스(800)는 애플리케이션이 현재 보이고 있지 않는지를 결정할 수 있다. 일부 실시예들에서, 애플리케이션이 현재 보이고 있지 않을 때, 사용자는 애플리케이션과 상호작용하고 있지 않고 애플리케이션은 유휴(즉, 활성이 아님)일 수 있다.
블록(810)에서, 애플리케이션이 현재 보이고 있다고 결정한 후에, 프로세스(800)는 우선순위 범위 5(우선순위 대역 5라고도 지칭됨) 내에 우선순위 레벨을 애플리케이션에게 배정할 수 있다. 일부 실시예들에서, 5의 우선순위 범위는 하나 이상의 고 우선순위 레벨을 포함한다. 이에 따라, 애플리케이션들을 폐기할 때, 5의 우선순위 범위를 갖는 애플리케이션은 (보다 낮은 우선순위 레벨을 갖는 애플리케이션들 전부가 폐기될 때까지) 폐기될 가능성이 없을 수 있다.
블록(815)에서, 프로세스(800)는 애플리케이션이 컴플리케이션의 일부인지를 결정할 수 있다. 특정 실시예들에서, "컴플리케이션"은, 날짜, 날씨, 기압, 캘린더 정보 등과 같은, 시간을 알려주지 않는 모바일 디바이스의 페이스 상의(예컨대, 시계와 같은 모바일 디바이스의 디폴트 디스플레이 페이지 상의) 항목이다. 특정의 컴플리케이션은 모바일 디바이스 상에서 실행되는 특정의 애플리케이션에 대응할 수 있다. 일부 실시예들에서, 컴플리케이션은 사용자에 의해 또는 시스템 관리자에 의해 지정될 수 있다. 특정 실시예들에서, 컴플리케이션은, 특정의 애플리케이션 데이터가, 예컨대, 과거의 시간 기간 내에, 임계 빈도 초과하여 사용자에 의해 액세스되었을 때 모바일 디바이스에 의해 결정될 수 있다.
블록(820)에서, 애플리케이션이 컴플리케이션의 일부라고 결정한 후에, 프로세스(800)는 애플리케이션을 우선순위 범위 4 내에 있도록 배정할 수 있다. 다시 말하지만, 우선순위 범위는 그 우선순위 범위 내에 다수의 우선순위 레벨들을 포함할 수 있다. 우선순위 범위 4는 우선순위 범위 5의 우선순위 레벨들 부분보다 덜 중요한 우선순위 레벨들을 가질 수 있다.
블록(825)에서, 애플리케이션이 컴플리케이션의 일부가 아니라고 결정한 후에, 프로세스(800)는 애플리케이션이 미리보기 모드에 대해, 예컨대, 도크에 지정되는지를 결정할 수 있다. 애플리케이션이 도크의 일부라고 결정한 후에, 블록(830)에서, 프로세스(800)는 애플리케이션을 우선순위 범위 3 내에 있도록 배정할 수 있다.
애플리케이션이 도크의 일부가 아니라고 결정한 후에, 블록(835)에서, 프로세스(800)는 애플리케이션이 사용자 이력에 기초하여 곧 사용될 것으로 예측되는지를 결정할 수 있다. 특정 실시예들은 다양한 애플리케이션들과의 사용자 상호작용을 모니터링하고 사용되는 그 애플리케이션들을 규칙적으로(on a regular basis) 추적함으로써 애플리케이션이 사용자에 의해 론칭될 것으로(또는 사용자와 상호작용하기 위해 포그라운드로 가져와질 것으로) 예측된다고 결정할 수 있다. 일부 실시예들은 사용자가 하루의 특정 시간들 또는 일주일의 특정 요일들에 하나 이상의 애플리케이션을 론칭할 것이라고 예측하고, 애플리케이션이 짧은 시간 기간 내에(예컨대, 다음 10분 내에, 다음 한 시간 내에, 다음 하루 내에) 사용될 것으로 예측될 때 그 애플리케이션들에 보다 높은 우선순위 레벨을 배정할 수 있다.
애플리케이션이 특정 시간 간격 내에 사용될 것으로 예측된다고 결정한 후에, 블록(840)에서, 프로세스(800)는 애플리케이션을 우선순위 범위 2 내에 있도록 배정할 수 있다. 애플리케이션이 곧 사용될 것으로 예측되지 않는다고 결정한 후에, 블록(845)에서, 프로세스(800)는 애플리케이션을 우선순위 범위 1 내에 있도록 배정할 수 있다.
특정 실시예들은 가장 낮은 우선순위를 갖는 애플리케이션에서 시작하여 애플리케이션들을 메모리로부터 언로딩하기 시작할 수 있다. 예를 들어, 메모리 리클레이머(예컨대, 도 3으로부터의 메모리 리클레이머(320))는 (예컨대, 우선순위 범위 1 내에 있는 - 포그라운드에서 현재 론칭되고 있지 않은, 도크 또는 컴플리케이션의 일부가 아닌, 그리고 최근의 다가오는 시간 기간 내에 사용될 것으로 예측되지 않는 - 애플리케이션과 같은) 가장 낮은 우선순위 레벨을 갖는 애플리케이션을 식별하고, 애플리케이션을 메모리로부터 언로딩할 수 있다. 가장 낮은 우선순위 대역 내의 애플리케이션들이 폐기됨에 따라, 메모리 리클레이머는 계속하여 보다 낮은 우선순위 레벨을 갖는 애플리케이션들을 결정하고 이들을 언로딩할 수 있다.
상이한 실시예들은 우선순위 레벨을 배정하는 데 있어서 상이한 고려사항들을 고려할 수 있다. 예를 들어, 특정 실시예들은 너무 많은 메모리(예컨대, 20 Mb 초과)를 차지하고 있는 그 애플리케이션들에 낮은 우선순위 레벨(예컨대, 우선순위 레벨 1)을 배정할 수 있다. 이에 따라, 너무 많은 메모리를 차지하고 있는 애플리케이션들이 다른 것들보다 먼저 메모리로부터 언로딩될 수 있다. 일부 실시예들은 애플리케이션들에 그들의 우선순위 레벨들을 배정하는 데 있어서 복잡한 알고리즘을 사용할 수 있다. 특정 실시예들은 애플리케이션에 대한 우선순위 레벨을 어떻게 배정할지를 결정할 때 다수의 파라미터들(예컨대, 너무 많은 메모리를 차지하는 애플리케이션, 도크에 있는 애플리케이션)을 고려할 수 있다.
VI. 예시적인 모바일 디바이스
본 명세서에서 기술된 실시예들은 적합한 전자 디바이스의 형태를 취하거나, 그 내에 통합되거나, 또는 그것을 이용하여 동작할 수 있다. 그러한 디바이스의 일 예가 도 9에 도시되어 있고, 웨어러블 메커니즘(예컨대, 도 2의 모바일 디바이스(200) 또는 다른 유형의 스마트 디바이스)의 형태를 취한다. 적합한 전자 디바이스들의 대안의 실시예들은 모바일 폰, 태블릿 컴퓨팅 디바이스, 휴대용 미디어 플레이어 등을 포함한다. 또 다른 적합한 전자 디바이스들은 랩톱/노트북 컴퓨터, 개인 휴대 정보 단말기, 터치 스크린, 입력 감응 패드 또는 표면 등을 포함할 수 있다.
도 9는 일부 실시예들에 따른, 도크 내의 하나 이상의 애플리케이션을 영구 스토리지로부터 작업 메모리에 로딩하기 위한 웨어러블 디바이스(900)를 도시하고 있다. 이 예에서, 웨어러블 디바이스(900)는 스트랩들(904A, 904B)에 연결된 페이스 부분(902)을 갖는 손목시계같은 디바이스로서 도시된다. 많은 실시예들에서, 전자 디바이스는 시간을 기록 및 디스플레이하여, 본질적으로 그 중에서도 특히 손목 시계로서 기능할 수 있다. 시간은 디바이스, 그의 설정, 및 (일부 경우들에서) 사용자의 선호도에 따라, 아날로그 또는 디지털 포맷으로 디스플레이될 수 있다. 일반적으로, 시간은 디바이스의 외부의 일부를 형성하는 디지털 디스플레이 스택 상에 디스플레이된다.
페이스 부분(902)은 웨어러블 디바이스(900)가 사용자의 신체 상에서 어디에 착용되도록 의도되어 있는지에 따라 적절한 크기로 되어 있을 수 있는, 예컨대, 터치스크린 디스플레이(906)를 포함할 수 있다. 사용자는 터치스크린 디스플레이(906) 상에서 웨어러블 디바이스(900)에 의해 제시되는 정보를 볼 수 있고, 터치스크린 디스플레이(906)를 터치함으로써 웨어러블 디바이스(900)에 입력을 제공할 수 있다. 일부 실시예들에서, 터치스크린 디스플레이(906)는 페이스 부분(902)의 전방 표면의 대부분 또는 전체를 점유할 수 있다.
스트랩들(904A, 904B)은 웨어러블 디바이스(900)가 사용자에 의해, 예컨대, 사용자의 손목 둘레에 분리가능하게 착용되고 그에 고정될 수 있게 해주기 위해 제공될 수 있다. 일부 실시예들에서, 스트랩들(904A, 904B)은 임의의 가요성 재료(예컨대, 직물, 가요성 플라스틱, 피혁, 체인 또는 금속 또는 다른 강성 재료들로 제조된 유연하게 인터리빙된 플레이트들 또는 링크들)로 제조될 수 있으며, 예컨대, 힌지들에 의해 페이스 부분(902)에 연결될 수 있다. 대안적으로, 스트랩들(904A, 904B)은 강성 재료로 제조될 수 있고, 사용자가 웨어러블 디바이스(900)를 착용하고 벗을 수 있게 해주기 위해 하나 이상의 힌지가 페이스 부분(902)과 스트랩들(904A, 904B)의 근위 단부들(908A, 908B)의 접합부(junction)에 그리고/또는 스트랩들(904A, 904B)의 길이부들을 따라 다른 곳에 배치되어 있다. 스트랩들(904A, 904B)의 상이한 부분들이 상이한 재료들로 제조될 수 있고; 예를 들어, 가요성이거나 팽창가능한 섹션들이 강성 섹션들과 교번할 수 있다. 일부 실시예들에서, 스트랩들(904A, 904B) 중 하나 또는 둘 다는 분리가능한 섹션들을 포함할 수 있어, 웨어러블 디바이스(900)가 특정의 사용자의 손목 크기를 수용하도록 리사이징(resize)될 수 있게 해준다. 일부 실시예들에서, 스트랩들(904A, 904B)은 페이스 부분(902) 후방에 또는 이를 관통하여 지나가는 연속적인 스트랩 부재의 부분들일 수 있다. 페이스 부분(902)은 스트랩들(904A, 904B)로부터 분리가능하고; 스트랩들(904A, 904B)에 영구적으로 부착되며; 또는 스트랩들(904A, 904B)과 일체로 형성될 수 있다.
페이스 부분(902)의 반대쪽에 있는 스트랩들(904A, 904B)의 원위 단부들은 스트랩들(904A, 904B)의 원위 단부들을 서로에 고정시키도록 서로 인게이지(engage)되어, 폐루프를 형성할 수 있는 상보적 걸쇠(clasp) 부재들(910A, 910B)을 제공할 수 있다. 이러한 방식으로, 웨어러블 디바이스(900)는 사용자의 신체에, 예컨대, 사용자의 손목 둘레에 고정될 수 있고; 걸쇠 부재들(910A, 910B)은 사용자의 신체로부터 웨어러블 디바이스(900)를 제거하는 것을 용이하게 하기 위해 차후에 디스인게이지(disengage)될 수 있다. 걸쇠 부재들(910A, 910B)의 설계가 변화될 수 있고; 다양한 실시예들에서, 걸쇠 부재들(910A, 910B)은 버클들, 자기 걸쇠들, 기계적 걸쇠들, 스냅 클로저들(snap closures) 등을 포함할 수 있다. 일부 실시예들에서, 걸쇠 부재들(910A, 910B) 중 하나 또는 둘 다는 대응하는 스트랩(904A, 904B)의 길이부의 적어도 일부분을 따라 이동가능할 수 있어, 웨어러블 디바이스(900)가 특정의 사용자의 손목 크기를 수용하도록 리사이징될 수 있게 해준다.
스트랩들(904A, 904B)은 2개의 개별 세그먼트일 수 있거나, (예컨대, 탄성 직물들, 팽창가능한 금속 링크들, 또는 탄성 및 비탄성 섹션들의 조합을 포함한) 탄성 재료의 연속적인 밴드로서 형성될 수 있어, 스트랩들(904A, 904B)에 의해 형성된 밴드를 신장시키는 것에 의해 웨어러블 디바이스(900)가 착용되고 벗어지게 해줄 수 있다. 그러한 실시예들에서, 걸쇠 부재들(910A, 910B)가 생략될 수 있다.
스트랩들(904A, 904B) 및/또는 걸쇠 부재들(910A, 910B)은 웨어러블 디바이스(900)가 임의의 주어진 시간에 자신이 착용되어 있는지를 결정하게 할 수 있게 해주는 센서들을 포함할 수 있다. 웨어러블 디바이스(900)는 자신이 현재 착용되어 있는지 여부에 따라 상이하게 동작할 수 있다. 예를 들어, 웨어러블 디바이스(900)는 자신이 착용되어 있지 않을 때 다양한 사용자 인터페이스 및/또는 RF 인터페이스 컴포넌트들을 비활성화시킬 수 있다. 그에 부가하여, 일부 실시예들에서, 웨어러블 디바이스(900)는 사용자가 웨어러블 디바이스(900)를 착용하거나 벗을 때 컴패니언 디바이스(companion device)(예컨대, 스마트폰, 모바일 디바이스, 태블릿 디바이스, 미디어 플레이어, 스피커, 또는 다른 전자 디바이스들)에 통지할 수 있다.
다양한 실시예들에서, 웨어러블 디바이스(900)는 크라운(912)(명세서 전체에 걸쳐 디지털 크라운이라고도 지칭됨)과 같은 회전 입력부(rotary input)를 포함한다. 크라운(912)은 다양한 기능들을 수행하는 데 사용될 수 있다. 일부 실시예들에서, 크라운(912)은 콘텐츠를 내비게이트하는 것(예컨대, 콘텐츠의 줌 인 및 줌 아웃, 콘텐츠에 걸친 패닝)을 위한 회전 입력(rotation input)을 제공한다. 이 예에서, 크라운(912)은, 바람직하게는 종래의 외부 치형부(outer teeth)를 갖는, 플라스틱 또는 금속 크라운 몸체를 포함한다. 전형적으로, 크라운(912)의 몸체와 일체로 제조된 페데스탈(pedestal)이 배치되고 페이스 부분(902) 내로 돌출된다. 크라운(912)은 웨어러블 디바이스(900)와 연관된 하드웨어에, 영구적으로 또는 분리가능하게 중 어느 하나로, 패스닝(fasten)될 수 있다. 크라운(및/또는 스템(stem))의 회전은 광학적으로, 전기적으로, 자기적으로, 또는 기계적으로 감지될 수 있다. 게다가, 일부 실시예들에서, 크라운(및/또는 스템)은 또한 측방으로 이동함으로써, 제2 유형의 입력을 디바이스에 제공할 수 있다.
웨어러블 디바이스(900)는 마찬가지로 하나 이상의 버튼(여기에 도시되지 않음)을 포함할 수 있다. 버튼(들)은 또 다른 입력을 디바이스에 제공하도록 눌러질 수 있다. 다양한 실시예들에서, 버튼은 돔 스위치, 로커 스위치, 전기 콘택트, 자기 스위치 등일 수 있다. 일부 실시예들에서, 버튼은 방수성이거나, 또는 다른 방식으로 환경에 대해 밀봉될 수 있다.
웨어러블 디바이스(900)가 예시적이라는 것과, 변형들 및 수정들이 가능하다는 것이 이해될 것이다. 예를 들어, 웨어러블 디바이스(900)는, 시계, 팔찌, 목걸이, 반지, 벨트, 재킷, 또는 이와 유사한 것을 포함한, 임의의 웨어러블 물품에 구현될 수 있다. 일부 경우들에서, 웨어러블 디바이스(900)는 사용자의 의류에 부착되는 클립 또는 핀 부분을 갖는 클립-온 디바이스(clip-on device) 또는 핀-온 디바이스(pin-on device)일 수 있다. 인터페이스 부분(예컨대, 터치스크린 디스플레이(906)를 포함함)은 리트랙터블 코드(retractable cord)에 의해 클립 또는 핀 부분에 부착될 수 있고, 사용자는 클립 또는 핀 부분을 제거하는 일 없이 사용을 위해 터치스크린 디스플레이(906)를 보이게 용이하게 당길 수 있고, 이어서 웨어러블 디바이스(900)를 그의 레스팅 위치(resting location)로 복귀하도록 놓을 수 있다. 따라서, 사용자는 웨어러블 디바이스(900)를 임의의 편리한 위치에 착용할 수 있다.
웨어러블 디바이스(900)는 페이스 부분(902), 스트랩들(904A, 904B), 및/또는 걸쇠 부재들(910A, 910B) 내에 배치된 전자 컴포넌트들을 사용하여 구현될 수 있다. 도 10은 특정 실시예들에 따른 (예컨대, 웨어러블 디바이스(900)를 구현하는) 도 9의 웨어러블 디바이스의 단순화된 블록 다이어그램이다. 웨어러블 디바이스(1000)는 프로세싱 서브시스템(1002), 저장 서브시스템(1004), 사용자 인터페이스(1006), RF 인터페이스(1008), 커넥터 인터페이스(1010), 전력 서브시스템(1012), 환경 센서들(1014), 및 스트랩 센서들(1016)을 포함할 수 있다. 웨어러블 디바이스(1000)는 또한 다른 컴포넌트들(명시적으로 도시되지 않음)을 포함할 수 있다.
많은 실시예들에서, 전자 디바이스는 시간을 기록 및 디스플레이하여, 본질적으로 그 중에서도 특히 손목 시계로서 기능할 수 있다. 시간은 디바이스, 그의 설정, 및 (일부 경우들에서) 사용자의 선호도에 따라, 아날로그 또는 디지털 포맷으로 디스플레이될 수 있다. 일반적으로, 시간은 디바이스의 외부의 일부를 형성하는 디지털 디스플레이 스택 상에 디스플레이된다.
저장 서브시스템(1004)은, 예컨대, 자기 저장 매체들, 플래시 메모리, 다른 반도체 메모리(예컨대, DRAM, SRAM), 또는 임의의 다른 비일시적 저장 매체, 또는 매체들의 조합을 사용하여 구현될 수 있으며, 휘발성 및/또는 비휘발성 매체들을 포함할 수 있다. 일부 실시예들에서, 저장 서브시스템(1004)은 오디오 파일들, 비디오 파일들, 이미지 또는 아트워크 파일들과 같은 미디어 항목들; 사용자의 연락처들(이름들, 주소들, 전화 번호들 등)에 관한 정보; 사용자의 예정된 약속들 및 이벤트들에 관한 정보; 메모들; 및/또는 다른 유형들의 정보 - 그 예들은 이하에서 설명됨 - 를 저장할 수 있다. 일부 실시예들에서, 저장 서브시스템(1004)은 또한 프로세싱 서브시스템(1002)에 의해 실행될 하나 이상의 애플리케이션 프로그램(예컨대, 비디오 게임 프로그램들, 개인 정보 관리 프로그램들, 미디어 재생 프로그램들, 특정의 호스트 디바이스들 및/또는 호스트 디바이스 기능성들과 연관된 인터페이스 프로그램들 등)을 저장할 수 있다.
사용자 인터페이스(1006)는 입력 및 출력 디바이스들의 임의의 조합을 포함할 수 있다. 사용자는 웨어러블 디바이스(1000)의 기능성을 호출하기 위해 사용자 인터페이스(1006)의 입력 디바이스들을 동작시킬 수 있고, 사용자 인터페이스(1006)의 출력 디바이스들을 통해 웨어러블 디바이스(1000)로부터의 출력을 보고, 듣고, 그리고/또는 다른 방식으로 경험할 수 있다.
출력 디바이스들의 예들은 디스플레이(1020), 스피커들(1022), 및 햅틱 출력 생성기(1024)를 포함한다. 디스플레이(1020)는 콤팩트한 디스플레이 기술들, 예컨대, LCD(액정 디스플레이), LED(발광 다이오드), OLED(유기 발광 다이오드), 또는 이와 유사한 것을 사용하여 구현될 수 있다. 일부 실시예들에서, 디스플레이(1020)는 가요성 디스플레이 요소 또는 만곡된-유리 디스플레이 요소를 포함하여, 웨어러블 디바이스(1000)가 원하는 형상에 일치하게 할 수 있다. 하나 이상의 스피커(1022)는 전자 신호들을 가청 음파들로 변환할 수 있는 임의의 기술을 포함한, 소형 폼 팩터 스피커 기술들을 사용하여 제공될 수 있다. 일부 실시예들에서, 스피커들(1022)은 톤들(예컨대, 비핑(beeping) 또는 링잉(ringing))을 생성하는 데 사용될 수 있고, 음성 또는 음악과 같은 사운드들을 임의의 특정 정도의 충실도(fidelity)로 재생할 수 있지만 그럴 필요는 없다. 햅틱 출력 생성기(1024)는, 예컨대, 전자 신호들을 진동들로 변환하는 디바이스일 수 있고; 일부 실시예들에서, 진동들은 웨어러블 디바이스(1000)를 착용한 사용자에 의해 느껴질만큼 충분히 강하지만 별개의 사운드들을 생성할만큼 강하지는 않을 수 있다.
웨어러블 디바이스(1000)는 사용자에게 경고들을 제공할 수 있다. 경고는 디바이스의 상태의 변화(그의 일 예는 전력이 떨어지는 것임); (메시지를 수신하는 것과 같은) 디바이스에 의한 정보의 수신; 디바이스와 (메시지가 대기 중이거나 통신이 진행 중임을 디바이스에 통보하는 제2 유형의 디바이스와 같은) 다른 메커니즘/디바이스 사이의 통신; (게임의 일부로서, 또는 캘린더 약속이 임박할 때와 같은) 애플리케이션의 동작 상태 또는 (예컨대, 디바이스가 전원이 켜지거나 셧 다운(shut down)할 때와 같은) 운영 체제의 동작 상태; 등에 응답하여 생성될 수 있다. 경고에 대한 트리거들의 수 및 유형은 다양하고 광범위하다.
경고는 청각적, 시각적, 햅틱, 또는 이들의 조합일 수 있다. 햅틱 액추에이터는 디바이스 내에 하우징될 수 있고, 햅틱 출력을 생성하도록 선형적으로 이동할 수 있다(그러나 다른 실시예들에서 햅틱 액추에이터는 회전형(rotary) 또는 다른 유형일 수 있다). 스피커는 경고의 청각적 컴포넌트들을 제공할 수 있으며, 전술한 디스플레이는 시각적 경고 컴포넌트들을 제공할 수 있다. 일부 실시예들에서, 전용 발광체(light), 디스플레이, 또는 다른 시각적 출력 컴포넌트는 경고의 일부로서 사용될 수 있다.
경고의 청각적, 햅틱 및/또는 시각적 컴포넌트들은 사용자에게 전체적인 경험을 제공하기 위해 동기화될 수 있다. 하나 이상의 컴포넌트는, 그것들 사이에 원하는 동기화를 생성하도록 다른 컴포넌트들에 대해 지연될 수 있다. 컴포넌트들은 그것들이 실질적으로 동시에 지각되도록 동기화될 수 있으며; 하나의 예로서, 햅틱 출력이 오디오보다 지각되는 데 더 오래 걸릴 수 있으므로 햅틱 출력은 청각적 출력보다 약간 이전에 개시될 수 있다. 다른 예로서, 햅틱 출력(또는 그 일부분)은 청각적 출력보다 상당히 이전에 그러나 약하거나 심지어 서브리미널(subliminal) 레벨로 개시됨으로써, 청각적 출력을 수신하게 될 것을 착용자에게 미리 알려줄(prime) 수 있다.
입력 디바이스들의 예들은 마이크로폰(1026), 터치 센서(1028), 및 카메라(1029)를 포함한다. 마이크로폰(1026)은 음파들을 전자 신호들로 변환하는 임의의 디바이스를 포함할 수 있다. 일부 실시예들에서, 마이크로폰(1026)은 사용자가 말하는 특정 단어들의 표현을 제공하도록 충분히 민감할 수 있고; 다른 실시예들에서, 마이크로폰(1026)은 특정 사운드들의 고품질 전자적 표현을 꼭 제공하는 것은 아니면서 일반적인 주변 사운드 레벨들의 표시들을 제공하는 데 사용가능할 수 있다.
터치 센서(1028)는, 예컨대, 센서의 표면 상의 특정 지점 또는 영역에 대한 접촉들을 위치확인하는 능력, 및 일부 경우들에서의, 다수의 동시 접촉들을 구별하는 능력을 갖는 용량성 센서 어레이를 포함할 수 있다. 일부 실시예들에서, 터치 센서(1028)는 터치스크린 인터페이스를 제공하도록 디스플레이(1020) 위에 오버레이될 수 있으며, 프로세싱 서브시스템(1002)은 터치 이벤트들(하나 이상의 접촉으로 행해진 탭핑들 및/또는 다른 제스처들을 포함함)을 디스플레이(1020) 상에 현재 무엇이 디스플레이되는지에 따라 특정 사용자 입력들로 변환할 수 있다. 일부 실시예들에서, 터치 센서(1028)는 또한 커버 유리 상에서의 터치의 위치를 결정할 수 있다. 터치 센서는 터치의 위치를 결정하기 위해 디스플레이 스택 상에 또는 그 내에 통합될 수 있다. 터치 센서는 특정 실시예들에서 자기-용량성, 다른 실시예들에서는 상호-용량성이거나, 또는 이들의 조합일 수 있다.
디스플레이 스택은, 디스플레이 위에 놓이는, 커버 유리와 같은, 커버 요소를 포함할 수 있다. 커버 유리가 꼭 유리로 형성될 필요는 없지만, 그러한 것은 옵션이며; 그것은 사파이어, 지르코니아, 알루미나, 화학 강화 유리(chemically strengthened glass), 경화 플라스틱(hardened plastic) 등으로부터 형성될 수 있다. 마찬가지로, 디스플레이는 액정 디스플레이, 유기 발광 다이오드 디스플레이, 또는 임의의 다른 적합한 디스플레이 기술일 수 있다. 요소들 중에서도 특히, 디스플레이 스택은 일부 실시예들에서 백라이트를 포함할 수 있다.
카메라(1029)는 CMOS 센서와 같은 이미지 센서 및 이미지를 이미지 센서 상으로 포커싱시키도록 배열된 광학 컴포넌트들(예컨대, 렌즈들)을, 이미징 컴포넌트들을 사용하여 스틸 및/또는 비디오 이미지들을 캡처하여 저장하도록 동작가능한 제어 로직과 함께, 포함하는, 예컨대, 콤팩트 디지털 카메라를 포함할 수 있다. 이미지들은, 예컨대, 저장 서브시스템(1004)에 저장될 수 있고/있거나 웨어러블 디바이스(1000)에 의해 저장을 위해 다른 디바이스들로 전송될 수 있다. 구현에 따라, 광학 컴포넌트들은 고정 초점 거리 또는 가변 초점 거리를 제공할 수 있고; 후자의 경우에, 오토포커스(autofocus)가 제공될 수 있다. 일부 실시예들에서, 카메라(1029)는 도 9의 페이스 부분(902)의 에지, 예컨대, 상부 에지를 따라 배치될 수 있고, 사용자가 바코드 또는 QR 코드와 같은 환경에서 근방의 물체들의 이미지들을 캡처할 수 있게 해주도록 배향될 수 있다. 다른 실시예들에서, 카메라(1029)는, 예컨대, 사용자의 이미지들을 캡처하기 위해 도 9의 페이스 부분(902)의 전방 표면 상에 배치될 수 있다. 구현에 따라, 0개의, 하나의, 또는 더 많은 카메라가 제공될 수 있다.
일부 실시예들에서, 사용자 인터페이스(1006)는 헤드셋과 같은 보조 디바이스로 출력을 제공할 수 있고/있거나 그로부터 입력을 수신할 수 있다. 예를 들어, 오디오 잭(1030)은 오디오 케이블(예컨대, 표준 2.5-mm 또는 3.5-mm 오디오 케이블)을 통해 보조 디바이스에 연결될 수 있다. 오디오 잭(1030)은 입력 및/또는 출력 경로들을 포함할 수 있다. 따라서, 오디오 잭(1030)은 보조 디바이스에 오디오를 제공할 수 있고/있거나 보조 디바이스로부터 오디오를 수신할 수 있다. 일부 실시예들에서, 무선 연결 인터페이스가 보조 디바이스와 통신하는 데 사용될 수 있다.
프로세싱 서브시스템(1002)은 데이터 또는 명령어들을 프로세싱, 수신, 또는 전송할 수 있는 임의의 전자 디바이스로서 구현될 수 있다. 프로세싱 서브시스템(1002)은 하나 이상의 집적 회로를 포함할 수 있다. 예를 들어, 프로세싱 서브시스템(1002)은 하나 이상 단일-코어 또는 다중-코어 마이크로프로세서 또는 마이크로컨트롤러, 중앙 프로세싱 유닛(CPU), ASIC(application-specific integrated circuit), 디지털 신호 프로세서(DSP), 또는 부가의 그러한 디바이스들 또는 그러한 디바이스들의 조합들 중 하나 이상을 포함할 수 있다. 동작 중에, 프로세싱 서브시스템(1002)은 웨어러블 디바이스(1000)의 동작을 제어할 수 있다. 다양한 실시예들에서, 프로세싱 서브시스템(1002)은 프로그램 코드에 응답하여 다양한 프로그램들을 실행할 수 있고, 다수의 동시에 실행되는 프로그램들 또는 프로세스들을 유지할 수 있다. 임의의 주어진 시간에, 실행될 프로그램 코드의 일부 또는 전부는 프로세싱 서브시스템(1002)에 그리고/또는 저장 서브시스템(1004)과 같은 저장 매체들에 존재할 수 있다.
적합한 프로그래밍을 통해, 프로세싱 서브시스템(1002)은 웨어러블 디바이스(1000)에 다양한 기능성을 제공할 수 있다. 예를 들어, 일부 실시예들에서, 프로세싱 서브시스템(1002)은 운영 체제(OS)(1032), 및, 예컨대, 전화 인터페이스 애플리케이션(1034), 텍스트 인터페이스 애플리케이션(1036), 및/또는 미디어 인터페이스 애플리케이션(1038)과 같은, 호스트 디바이스와 인터페이싱하기 위한 다양한 애플리케이션들을 실행할 수 있다. 일부 실시예들에서, 이 애플리케이션 프로그램들의 일부 또는 전부는, 예컨대, 호스트 디바이스로 송신될 메시지들을 생성하는 것에 의해 그리고/또는 호스트 디바이스로부터 메시지들을 수신하고 해석하는 것에 의해, 호스트 디바이스와 상호작용할 수 있다. 일부 실시예들에서, 이 애플리케이션 프로그램들의 일부 또는 전부는 웨어러블 디바이스(1000)에 로컬로 동작할 수 있다. 예를 들어, 웨어러블 디바이스(1000)가 저장 서브시스템(1004)에 저장된 로컬 미디어 라이브러리를 갖는 경우, 미디어 인터페이스 애플리케이션(1038)은 로컬로 저장된 미디어 항목들을 선택하여 재생하기 위한 사용자 인터페이스를 제공할 수 있다. 인터페이스 애플리케이션들의 예들이 이하에서 기술된다.
일부 실시예들에서, 프로세싱 서브시스템(1002)은 또한 호스트 디바이스와 검증된 통신 세션을 확립하고 유지하는 것에 대한 지원을 제공하는 호스트 보안 프로세스(1060)를 실행할 수 있다. 검증된 통신 세션은 향상된 레벨의 보안을 제공할 수 있고, 웨어러블 디바이스(1000) 및/또는 호스트 디바이스의 다양한 동작들은 디바이스들 사이의 검증된 통신 세션이 진행 중인지에 따라 조건부로 이루어질 수 있다. 예를 들어, 호스트 보안 프로세스(1060)는, 검증된 세션이 진행 중인지에 따라, 웨어러블 디바이스(1000)가 존재할 때 호스트 디바이스를 잠금해제하는 것을 용이하게 할 수 있다. 사용자 데이터(1062)는, 식별 정보, 사용자 지정 설정들 및 선호사항들, 커스터마이즈된 정보(예컨대, 연락처들, 미리 정의된 텍스트 메시지들), 및 임의의 다른 사용자 관련 데이터 또는 콘텐츠와 같은, 사용자에 특정적인 임의의 정보를 포함할 수 있다. 일부 실시예들에서, 실행 중인 애플리케이션들 및 프로세스들은 동작들을 용이하게 하기 위해 사용자 데이터(1062)에 액세스할 수 있다.
RF(라디오 주파수) 인터페이스(1008)는 웨어러블 디바이스(1000)가 다양한 호스트 디바이스들과 무선으로 통신하게 해줄 수 있다. RF 인터페이스(1008)는, 예컨대, Wi-Fi(IEEE 802.11 패밀리 표준들), 블루투스®(Bluetooth SIG, Inc.에 의해 공표된 표준들의 패밀리), 또는 무선 데이터 통신을 위한 다른 프로토콜들을 사용하여, 무선 매체를 통한 데이터 통신을 가능하게 해주기 위해 안테나 및 지원 회로부와 같은 RF 트랜시버 컴포넌트들을 포함할 수 있다. RF 인터페이스(1008)는 하드웨어(예컨대, 드라이버 회로들, 안테나들, 변조기들/복조기들, 인코더들/디코더들, 및 다른 아날로그 및/또는 디지털 신호 프로세싱 회로들) 및 소프트웨어 컴포넌트들의 조합을 사용하여 구현될 수 있다. 일부 실시예들에서, RF 인터페이스(1008)는, 예컨대, ISO/IEC 18092 표준들 또는 이와 유사한 것을 구현하는, 근거리 통신(near-field communication)("NFC") 능력을 제공할 수 있고; NFC는 매우 짧은 범위(예컨대, 20 센티미터 이하)에 걸쳐 디바이스들 사이의 무선 데이터 교환을 지원할 수 있다. 다수의 상이한 무선 통신 프로토콜들 및 연관된 하드웨어가 RF 인터페이스(1008)에 통합될 수 있다. 웨어러블 디바이스(1000)는 근방의 판매 단말기(sales terminal)와 무선으로 통신함으로써, 사용자가 상품을 판매, 구매, 또는 반납하는 것과 같은 거래를 신속하고 효율적으로 수행하는 것을 가능하게 해줄 수 있다. 웨어러블 디바이스(1000)는 이들 및 다른 기능들을 수행하기 위해 NFC 기술을 사용할 수 있다.
커넥터 인터페이스(1010)는 웨어러블 디바이스(1000)가 유선 통신 경로를 통해, 예컨대, USB(Universal Serial Bus), UART(universal asynchronous receiver/transmitter), 또는 유선 데이터 통신을 위한 다른 프로토콜들을 사용하여, 다양한 호스트 디바이스들과 통신하게 해줄 수 있다. 일부 실시예들에서, 커넥터 인터페이스(1010)는 전력 포트를 제공하여, 웨어러블 디바이스(1000)가, 예컨대, 내부 배터리를 충전시키기 위해, 전력을 수신하게 해줄 수 있다. 예를 들어, 커넥터 인터페이스(1010)는 mini-USB 커넥터 또는 커스텀 커넥터와 같은 커넥터는 물론, 지원 회로부를 포함할 수 있다. 일부 실시예들에서, 커넥터는 전용 전력 및 접지 콘택트들은 물론, 상이한 통신 기술들을 병렬로 구현하는 데 사용될 수 있는 디지털 데이터 콘택트들을 제공하는 커스텀 커넥터일 수 있고; 예를 들어, 2개의 핀이 USB 데이터 핀들(D+ 및 D-)로서 배정될 수 있고, 2개의 다른 핀이 (예컨대, UART 인터페이스를 구현하는) 직렬 송신/수신 핀들로서 배정될 수 있다. 특정의 통신 기술들에 대한 핀들의 배정은 하드와이어드(hardwired)일 수 있거나, 연결이 확립되는 동안에 협상될 수 있다. 일부 실시예들에서, 커넥터는 또한 오디오 및/또는 비디오 신호들을 위한 연결부들을 제공할 수 있으며, 이는 호스트 디바이스로 또는 그로부터 아날로그 및/또는 디지털 포맷들로 전송될 수 있다.
일부 실시예들에서, 커넥터 인터페이스(1010) 및/또는 RF 인터페이스(1008)는 호스트 디바이스로부터 웨어러블 디바이스(1000)로(또는 그 반대로) 데이터가 전달되는 동기화 동작들을 지원하는 데 사용될 수 있다. 예를 들어, 이하에서 기술되는 바와 같이, 사용자는 웨어러블 디바이스(1000)에 대한 특정 정보(예컨대, "즐겨찾기" 연락처들 리스트 및/또는 송신될 수 있는 특정 미리 정의된 텍스트 메시지들)를 커스터마이즈할 수 있다. 사용자 인터페이스(1006)가 데이터-입력 동작들을 지원할 수 있지만, 사용자는, (예컨대, 실제 또는 가상 영숫자 키보드를 포함한) 보다 큰 인터페이스를 갖는 별개의 디바이스(예컨대, 태블릿 또는 스마트폰) 상에서 커스터마이즈된 정보를 정의하고, 이어서 커스터마이즈된 정보를 동기화 동작을 통해 웨어러블 디바이스(1000)로 전달하는 것이 보다 편리하다는 것을 알 수 있다. 동기화 동작들은 또한, 미디어 항목들, 애플리케이션 프로그램들, 및/또는 운영 체제 프로그램들과 같은, 다른 유형들의 데이터를 저장 서브시스템(1004)에서 로딩하고/하거나 업데이트하는 데 사용될 수 있다. 동기화 동작들은 명시적 사용자 요청에 응답하여 그리고/또는 자동으로, 예컨대, 웨어러블 디바이스(1000)가 특정의 호스트 디바이스와의 통신을 재개할 때 또는 어느 하나의 디바이스가 동기화된 정보의 자신의 사본에 대한 업데이트를 수신하는 것에 응답하여, 수행될 수 있다.
환경 센서들(1014)은 웨어러블 디바이스(1000) 주위의 외부 조건들에 관련된 정보를 제공하는 다양한 전자, 기계, 전자기계, 광학, 또는 다른 디바이스들을 포함할 수 있다. 센서들(1014)은 일부 실시예들에서, 예컨대, 원하는 바에 따라 스트리밍 기반으로 또는 프로세싱 서브시스템(1002)에 의한 폴링(polling)에 응답하여, 디지털 신호들을 프로세싱 서브시스템(1002)에 제공할 수 있다. 임의의 유형 또는 조합의 환경 센서들이 사용될 수 있고; 가속도계(1042), 자력계(1044), 자이로스코프 센서(1046), 및 GPS 수신기(1048)가 예로서 도시되어 있다.
일부 환경 센서들은 웨어러블 디바이스(1000)의 위치 및/또는 움직임에 관한 정보를 제공할 수 있다. 예를 들어, 가속도계(1042)는, 예컨대, 압전 또는 다른 컴포넌트들을 연관된 전자장치들과 함께 사용하여, 하나 이상의 축을 따르는 (자유낙하에 대한) 가속도를 감지하여, 신호를 생성할 수 있다. 자력계(1044)는 주변 자기장(예컨대, 지구의 자기장)을 감지하고, 나침반 방향으로서 해석될 수 있는, 대응하는 전기 신호를 생성할 수 있다. 자이로스코프 센서(1046)는, 예컨대, 하나 이상의 MEMS(micro-electro-mechanical systems) 자이로스코프 및 관련된 제어 및 감지 회로부를 사용하여, 하나 이상의 방향에서의 회전 움직임을 감지할 수 있다. GPS(Global Positioning System) 수신기(1048)는 GPS 위성들로부터 수신된 신호들에 기초하여 위치를 결정할 수 있다.
다른 센서들이 또한 이들 예에 추가하여 또는 그 대신에 포함될 수 있다. 예를 들어, 사운드 센서는, 예컨대, 주변 사운드의 데시벨 레벨을 결정하기 위해 마이크로폰(1026)을 연관된 회로부 및/또는 프로그램 코드와 함께 포함할 수 있다. 온도 센서들, 근접 센서들, 주변광 센서들, 또는 이와 유사한 것이 또한 포함될 수 있다. 주변 광 센서는 디바이스가 자신의 환경의 밝기를 감지하고 그에 따라 특정 동작 파라미터들을 조정하는 것을 가능하게 해줄 수 있다. 예를 들어, 웨어러블 디바이스(1000)는 감지된 주변 광에 응답하여 디스플레이의 밝기를 수정할 수 있다. 다른 예로서, 웨어러블 디바이스(1000)는 일정 시간 기간 동안 광이 거의 또는 전혀 감지되지 않는 경우 디스플레이를 턴 오프시킬 수 있다.
센서들(1016)은 웨어러블 디바이스(1000)에 정보를 제공하는 다양한 전자, 기계, 전자기계, 광학, 또는 다른 디바이스들을 포함할 수 있다. 예를 들어, 걸쇠 센서(1050)는 도 9의 걸쇠 부재들(910A, 910B) 중 어느 하나 또는 둘 다 내에 적어도 부분적으로 배치될 수 있고, 걸쇠 부재들(910A, 910B)이 서로와 인게이지되거나 서로로부터 디스인게이지될 때를 검출할 수 있다. 예를 들어, 걸쇠 부재들(910A, 910B)을 서로에 인게이지시키는 것은 전기 회로를 완성할 수 있어, 전류가 걸쇠 센서(1050)를 통해 흐르게 할 수 있고; 걸쇠 부재들(910A, 910B)을 서로로부터 디스인게이지시키는 것은 회로를 차단시킬 수 있다. 다른 예로서, 하나 이상의 크라운 센서(1052)는 도 9의 크라운(912)으로부터의 입력을 검출하도록 배치될 수 있다. 크라운 센서들(1052)은 또한 움직임 센서서들, 가속도계들, 압력 센서들(예컨대, 압전 디바이스들), 또는 이와 유사한 것을 포함할 수 있다.
스트랩 센서들(1016) 및 크라운 센서들(1052)에 부가하여 또는 그 대신에 임의의 다른 유형의 센서가 사용될 수 있다. 예를 들어, 맥박 센서들, ECG 센서들, 또는 이와 유사한 것과 같은, 생리학적 또는 생체측정 센서들이 제공될 수 있다. 일부 실시예들에서, 생리학적 센서들은 사용자의 생리학적 신호들을 모니터링하고 그 신호들에 기초하여 건강 관련 정보를 제공할 수 있다. 특정 실시예들에서, 생리학적 또는 생체측정 센서들은 웨어러블 디바이스(1000)의 착용자의 신원을 검증하는 데 사용될 수 있다.
특정 실시예들은 사용자의 특정 생리학적 특성들을 측정하기 위해 하나 이상의 생체측정 센서를 포함할 수 있다. 디바이스는 예를 들어, 사용자의 심박수 또는 혈중 산소 포화도 레벨들을 결정하기 위해 맥파 센서를 포함할 수 있다. 디바이스는 또한 또는 그 대신에, 사용자의 신체 임피던스를 측정하기 위한 전극들을 포함할 수 있으며, 이는 디바이스가 체지방률, 신체의 전기적 활동, 신체 임피던스 등을 추정하는 것을 가능하게 해줄 수 있다. 일부 실시예들에서, 디바이스는 또한 혈압, 자외선 노출 등을 측정할 수 있다. 전자 디바이스 내에 통합되거나 그와 연관된 센서들에 따라, 다양한 사용자 특성들이 측정되고/되거나 추정될 수 있으며, 그로써 상이한 건강 정보가 사용자에게 제공될 수 있게 해준다. 일부 예들에서, 감지된 생체측정 정보는, 부분적으로, 전자 콘텐츠(electronic content) 및/또는 착신 경고들을 관리하기 위해 경고 관리자에 의해 사용될 수 있다.
이와 유사하게, 웨어러블 디바이스(1000)는 커버 유리에 가해지는 힘의 양을 결정하기 위해 힘 센서(여기에 도시되지 않음)를 포함할 수 있다. 힘 센서는 일부 실시예들에서 용량성 센서일 수 있고, 다른 실시예들에서는 스트레인 센서일 수 있다. 어느 실시예에서든, 힘 센서는 일반적으로 투명하고 투명 재료들로 제조되거나, 디스플레이의 뷰를 방해하지 않도록 디스플레이 아래 또는 그로부터 멀리 위치된다. 힘 센서는, 예를 들어, 실리콘 또는 다른 변형가능 재료에 의해 분리된 두 개의 용량성 플레이트의 형태를 취할 수 있다. 용량성 플레이트들이 외부 힘 하에서 서로 더 가깝게 이동함에 따라, 정전용량의 변화가 측정될 수 있고, 외부 힘의 값은 정전용량 변화로부터 상관될 수 있다. 또한, 힘 센서 상의 다수의 점들로부터의, 또는 다수의 힘 센서들로부터의 상대적 정전용량 변화들을 비교함으로써, 힘이 가해지는 위치 또는 위치들이 결정될 수 있다. 일 실시예에서, 힘 센서는 디스플레이의 주변부 아래에서 연장되는 개스킷의 형태를 취할 수 있다. 개스킷은 실시예에 따라, 분할되거나 일체형일 수 있다.
전력 서브시스템(1012)은 웨어러블 디바이스(1000)에 대한 전력 및 전력 관리 능력을 제공할 수 있다. 예를 들어, 전력 서브시스템(1012)은 배터리(1040)(예컨대, 재충전가능한 배터리) 및 배터리(1040)로부터의 전력을 전력을 요구하는 웨어러블 디바이스(1000)의 다른 컴포넌트들로 분배하기 위한 연관된 회로부를 포함할 수 있다. 일부 실시예들에서, 전력 서브시스템(1012)은 또한, 예컨대, 커넥터 인터페이스(1010)가 전원에 연결될 때 배터리(1040)를 충전하도록 동작가능한 회로부를 포함할 수 있다. 일부 실시예들에서, 전력 서브시스템(1012)은 커넥터 인터페이스(1010)에 의존하지 않으면서 배터리(1040)를 충전하기 위한, 유도 충전기와 같은 "무선" 충전기를 포함할 수 있다. 예를 들어, 유도 충전 베이스는 디바이스의 배터리를 충전하기 위해 디바이스 내의 유도 수신기에게 전력을 전송할 수 있다. 또한, 디바이스와 베이스 사이의 유도성 필드를 변화시킴으로써, 둘 사이에서 데이터가 전달될 수 있다. 하나의 간단한 비-제한적인 예로서, 이것은 디바이스가 베이스 상에 배치될 때 베이스를 저전력 슬립(low-power sleep) 상태로부터 활성 충전 상태로 웨이크(wake)하는 데 사용될 수 있다. 다른 무선 충전 시스템들이 또한 사용될 수 있다(예컨대, 근거리 자기 공명(near field magnetic resonance) 및 라디오 주파수). 대안적으로, 디바이스는 또한 전극들을 통한 유선 충전을 이용할 수 있다. 일부 실시예들에서, 전력 서브시스템(1012)은 또한 배터리(1040)에 부가하여 또는 그 대신에, 태양 전지와 같은, 다른 전원들을 포함할 수 있다.
일부 실시예들에서, 전력 서브시스템(1012)은 전력 소모를 효율적으로 관리하기 위해 웨어러블 디바이스(1000) 내의 컴포넌트들로의 전력 분배를 제어할 수 있다. 예를 들어, 전력 서브시스템(1012)은, 스트랩 센서들(1016)이 웨어러블 디바이스(1000)가 착용되어 있지 않다고 나타낼 때, 자동으로 웨어러블 디바이스(1000)를 "하이버네이션(hibernation)" 상태에 들어가게 할 수 있다. 하이버네이션 상태는 전력 소모를 감소시키도록 설계될 수 있으며; 그에 따라, 사용자 인터페이스(1006)(또는 그 컴포넌트들), RF 인터페이스(1008), 커넥터 인터페이스(1010), 및/또는 환경 센서들(1014)은 전원이 차단(power down)될(예컨대, 저전력 상태로 또는 완전히 턴 오프될) 수 있는 반면에, 스트랩 센서들(1016)은 사용자가 웨어러블 디바이스(1000)를 착용할 때를 검출하기 위해 (연속적으로 또는 간격을 두고) 전원이 투입(power up)된다. 다른 예로서, 일부 실시예들에서, 웨어러블 디바이스(1000)가 착용되어 있는 동안, 전력 서브시스템(1012)은 환경 센서들(1014)에 의해 검출된 웨어러블 디바이스(1000)의 움직임 및/또는 배향에 따라 디스플레이(1020) 및/또는 다른 컴포넌트들을 턴 온 또는 오프시킬 수 있다. 예를 들어, 웨어러블 디바이스(1000)가 사용자의 손목에 착용되도록 설계된 경우, 전력 서브시스템(1012)은, 가속도계(1042)에 의해 제공된 정보에 기초하여, 전형적으로 손목시계를 보는 것과 연관된 바와 같은, 사용자의 손목의 들어올림(raising) 및 롤링(rolling)을 검출할 수 있다. 이 검출된 움직임에 응답하여, 전력 서브시스템(1012)은 디스플레이(1020) 및/또는 터치 센서(1028)를 자동으로 턴 온시킬 수 있고; 이와 유사하게, 전력 서브시스템(1012)은 사용자의 손목이 중립 위치(예컨대, 축 늘어져 있음)로 복귀되었음을 검출하는 것에 응답하여 디스플레이(1020) 및/또는 터치 센서(1028)를 자동으로 턴 오프시킬 수 있다.
전력 서브시스템(1012)은 또한, 이용가능한 전력의 소스 및 양에 기초하여 웨어러블 디바이스(1000)의 다른 컴포넌트들의 전력 소모를 조절하는 것, 배터리(1040) 내에 저장된 전력을 모니터링하는 것, 저장된 전력이 최소 레벨 아래로 하락하는 경우 사용자 경고들을 생성하는 것 등과 같은, 다른 전력 관리 능력들을 제공할 수 있다.
일부 실시예들에서, 전력 서브시스템(1012)의 제어 기능들은 프로세싱 서브시스템(1002) 상에서 실행되고 있는 프로그램 코드에 응답하여 프로세싱 서브시스템(1002)에 의해 생성되는 제어 신호들에 응답하여 동작하는 프로그램가능 또는 제어가능 회로들을 사용하여, 또는 별개의 마이크로프로세서 또는 마이크로컨트롤러로서 구현될 수 있다.
웨어러블 디바이스(1000)가 예시적이라는 것과 변형들 및 수정들이 가능하다는 것이 이해될 것이다.
다양한 실시예들은 추가로, 일부 경우들에서 다수의 애플리케이션들 중 임의의 것을 동작시키는 데 사용될 수 있는 하나 이상의 사용자 컴퓨터, 컴퓨팅 디바이스 또는 프로세싱 디바이스를 포함할 수 있는, 매우 다양한 동작 환경들에서 구현될 수 있다. 사용자 또는 클라이언트 디바이스들은 표준 운영 체제를 실행하는 데스크톱 또는 랩톱 컴퓨터들과 같은 다수의 범용 개인용 컴퓨터들은 물론, 모바일 소프트웨어를 실행하고 다수의 네트워킹 및 메시징 프로토콜들을 지원할 수 있는 셀룰러, 무선 및 핸드헬드 디바이스들 중 임의의 것을 포함할 수 있다. 그러한 시스템은 또한 다양한 상업적으로 이용가능한 운영 체제들 그리고 개발 및 데이터베이스 관리와 같은 목적들을 위한 다른 공지된 애플리케이션들 중 임의의 것을 실행하는 다수의 워크스테이션들을 포함할 수 있다. 이 디바이스들은 또한, 더미 단말들, 씬 클라이언트들, 게이밍 시스템들 및 네트워크를 통해 통신할 수 있는 다른 디바이스들과 같은, 다른 전자 디바이스들을 포함할 수 있다.
대부분의 실시예들은, TCP/IP, OSI, FTP, UPnP, NFS, CIFS, 및 AppleTalk와 같은, 다양한 상업적으로 이용가능한 프로토콜들 중 임의의 것을 사용하여 통신을 지원하기 위한 본 기술분야의 통상의 기술자에게 익숙할 적어도 하나의 네트워크를 이용한다. 네트워크는, 예를 들어, 로컬 영역 네트워크, 광역 네트워크, 가상 사설 네트워크, 인터넷, 인트라넷, 엑스트라넷, 공중 교환 전화 네트워크, 적외선 네트워크, 무선 네트워크, 및 이들의 임의의 조합일 수 있다.
네트워크 서버를 이용하는 실시예들에서, 네트워크 서버는, HTTP 서버들, FTP 서버들, CGI 서버들, 데이터 서버들, Java 서버들, 및 비즈니스 애플리케이션 서버들을 포함한, 다양한 서버 또는 미드-티어(mid-tier) 애플리케이션들 중 임의의 것을 실행할 수 있다. 서버(들)는 또한, 예컨대 Java®, C, C# 또는 C++, 또는, Perl, Python 또는 TCL과 같은, 임의의 스크립팅 언어는 물론, 이들의 조합들과 같은, 임의의 프로그래밍 언어로 작성된 하나 이상의 스크립트 또는 프로그램으로서 구현될 수 있는 하나 이상의 애플리케이션을 실행하는 것에 의해서와 같이, 사용자 디바이스들로부터의 요청들에 응답하여 프로그램들 또는 스크립트들을 실행할 수 있다. 서버(들)는 또한, Oracle®, Microsoft®, Sybase®, 및 IBM®으로부터 상업적으로 이용가능한 것들을 제한 없이 포함한, 데이터베이스 서버들을 포함할 수 있다.
그러한 프로그램들은 또한, 인터넷을 포함한, 다양한 프로토콜들에 부합하는 유선, 광학, 및/또는 무선 네트워크들을 통한 전송에 적합화된 캐리어 신호들을 사용하여 인코딩되고 전송될 수 있다. 이에 따라, 본 발명의 일 실시예에 따른 컴퓨터 판독가능 매체는 그러한 프로그램들로 인코딩된 데이터 신호를 사용하여 생성될 수 있다. 프로그램 코드로 인코딩된 컴퓨터 판독가능 매체들은 호환가능한 디바이스와 패키징될 수 있거나 다른 디바이스들과는 별개로(예컨대, 인터넷 다운로드를 통해) 제공될 수 있다. 임의의 그러한 컴퓨터 판독가능 매체는 단일 컴퓨터 제품(예컨대, 하드 드라이브, CD, 또는 전체 컴퓨터 시스템) 상에 또는 그 내에 존재할 수 있고, 시스템 또는 네트워크 내의 상이한 컴퓨터 제품들 상에 또는 그 내에 존재할 수 있다. 컴퓨터 시스템은 모니터, 프린터, 또는 본 명세서에 언급된 결과들 중 임의의 것을 사용자에게 제공하기 위한 다른 적합한 디스플레이를 포함할 수 있다.
환경은 앞서 논의된 바와 같은 다양한 데이터 스토어들(data stores) 및 다른 메모리 및 저장 매체들을 포함할 수 있다. 이들은 컴퓨터들 중 하나 이상에 로컬인(및/또는 그에 존재하는) 또는 네트워크를 거쳐 컴퓨터들 중 일부 또는 전부로부터 원격에 있는 저장 매체 상에와 같이, 다양한 위치들에 존재할 수 있다. 특정의 실시예들의 세트에서, 정보는 본 기술분야의 통상의 기술자에게 익숙한 스토리지 영역 네트워크(storage-area network)(SAN)에 존재할 수 있다. 이와 유사하게, 컴퓨터들, 서버들 또는 다른 네트워크 디바이스들에 귀속된 기능들을 수행하기 위한 임의의 필요한 파일들이, 적절한 경우, 로컬로 그리고/또는 원격으로 저장될 수 있다. 시스템이 컴퓨터화된 디바이스들을 포함하는 경우, 각각의 그러한 디바이스는 버스를 통해 전기적으로 커플링될 수 있는 하드웨어 요소들을 포함할 수 있고, 이 요소들은, 예를 들어, 적어도 하나의 중앙 프로세싱 유닛(CPU), 적어도 하나의 입력 디바이스(예컨대, 마우스, 키보드, 컨트롤러, 터치 스크린 또는 키패드), 및 적어도 하나의 출력 디바이스(예컨대, 디스플레이 디바이스, 프린터 또는 스피커)를 포함한다. 그러한 시스템은 또한, 디스크 드라이브들, 광학 저장 디바이스들, 및 RAM 또는 ROM과 같은 솔리드 스테이트 저장 디바이스들은 물론, 이동식 매체 디바이스들, 메모리 카드들, 플래시 카드들 등과 같은, 하나 이상의 저장 디바이스를 포함할 수 있다.
그러한 디바이스들은 또한 컴퓨터 판독가능 저장 매체 판독기, 통신 디바이스(예컨대, 모뎀, 네트워크 카드(무선 또는 유선), 적외선 통신 디바이스 등), 및 앞서 기술된 바와 같은 작업 메모리를 포함할 수 있다. 컴퓨터 판독가능 저장 매체 판독기는, 원격, 로컬, 고정식, 및/또는 이동식 저장 디바이스들을 나타내는 비일시적 컴퓨터 판독가능 저장 매체는 물론, 컴퓨터 판독가능 정보를 일시적으로 및/또는 보다 영구적으로 포함, 저장, 전송, 및 검색하기 위한 저장 매체와 연결될 수 있거나 이를 수납하도록 구성될 수 있다. 시스템 및 다양한 디바이스들은 또한 전형적으로, 운영 체제 및, 클라이언트 애플리케이션 또는 브라우저와 같은, 애플리케이션 프로그램들을 포함한, 적어도 하나의 작업 메모리 디바이스 내에 위치된 다수의 소프트웨어 애플리케이션들, 모듈들, 서비스들 또는 다른 요소들을 포함할 것이다. 대안의 실시예들이 앞서 기술된 것으로부터 수많은 변형들을 가질 수 있다는 것이 인식되어야 한다. 예를 들어, 커스터마이즈된 하드웨어가 또한 사용될 수 있고/있거나 특정의 요소들이 하드웨어, 소프트웨어(애플릿들과 같은, 포터블 소프트웨어(portable software)를 포함함) 또는 둘 다로 구현될 수 있다. 게다가, 네트워크 입력/출력 디바이스들과 같은 다른 컴퓨팅 디바이스들에 대한 연결이 이용될 수 있다.
코드 또는 코드의 부분들을 포함하기 위한 비일시적 저장 매체들 및 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 스토리지, 자기 카세트들, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들 또는 원하는 정보를 저장하는 데 사용될 수 있고 시스템 디바이스에 의해 액세스될 수 있는 임의의 다른 매체를 포함한, 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 이동식 및 비이동식 매체들 - 이들로 제한되지 않음 - 과 같은 본 기술분야에 공지되거나 사용되는 임의의 적절한 매체를 포함할 수 있다. 본 명세서에 제공된 개시내용 및 교시내용에 기초하여, 본 기술분야의 통상의 기술자는 다양한 실시예들을 구현하기 위한 다른 방식들 및/또는 방법들을 인식할 것이다. 그렇지만, 컴퓨터 판독가능 저장 매체들은 반송파들(carrier waves) 또는 이와 유사한 것과 같은 일시적 매체들을 포함하지 않는다.
따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다. 그렇지만, 청구항들에 기재된 바와 같은 본 개시내용의 보다 광의의 사상 및 범주를 벗어나지 않으면서 그에 대한 다양한 수정들 및 변경들이 행해질 수 있다는 것이 명백할 것이다.
다른 변형들이 본 개시내용의 사상 내에 있다. 따라서, 개시된 기술들에 대해 다양한 수정들 및 대안의 구성들이 가능하지만, 그의 특정 예시된 실시예들이 도면에 도시되어 있으며, 앞서 상세히 기술되었다. 그렇지만, 본 개시내용을 개시된 특정 형태 또는 형태들로 제한하려는 의도는 없고, 그와 달리, 의도는, 첨부된 청구항들에 의해 한정되는 바와 같은, 본 개시내용의 사상 및 범주 내에 속하는 모든 수정들, 대안의 구조들 및 등가물들을 커버하는 것임이 이해되어야 한다.
개시된 실시예들을 설명하는 것과 관련하여(특히 이하의 청구항들과 관련하여) 용어들 "한(a)" 및 "한(an)" 및 "그(the)" 그리고 유사한 지시어들(referents)의 사용은, 본 명세서에 달리 지시되지 않거나 문맥에 의해 명확하게 모순되지 않는 한, 단수 및 복수 둘 다를 커버하는 것으로 해석되어야 한다. 용어들 "포함하는(comprising)", "갖는(having)", "포함하는(including)", 및 "함유하는(containing)"은, 달리 언급되지 않는 한, 개방형 용어들(open-ended terms)(즉, "포함하지만 이에 한정되지 않는"을 의미함)로서 해석되어야 한다. 용어 "연결된"은, 개재하는 무언가가 있는 경우에도, 부분적으로 또는 전체적으로 그 내에 포함되거나, 그에 부착되거나, 또는 서로 조인되는 것으로 해석되어야 한다. 어구 "~에 기초하여"는 개방형이고 결코 제한하는 것이 아닌 것으로 이해되어야 하며, 적절한 경우 "~에 적어도 부분적으로 기초하여"로서 해석되거나 달리 읽히도록 의도되어 있다. 본 명세서에서의 값들의 범위들의 열거는, 본 명세서에 달리 지시되지 않는 한, 단지 그 범위 내에 속하는 각각의 별개의 값을 개별적으로 언급하는 약기 방법(shorthand method)으로서 역할하도록 의도되며, 각각의 별개의 값은 마치 본 명세서에 개별적으로 열거된 것처럼 본 명세서에 포함된다. 본 명세서에 기술된 모든 방법들은, 본 명세서에 달리 지시되지 않거나 문맥에 의해 달리 명확하게 모순되지 않는 한, 임의의 적합한 순서로 수행될 수 있다. 본 명세서에 제공된 임의의 및 모든 예들, 또는 예시 표현(language)(예컨대, "~와 같은")의 사용은 단지 본 개시내용의 실시예들을 보다 명확히 하도록 의도되며, 달리 청구되지 않는 한 본 개시내용의 범주에 대한 제한을 부과하지 않는다. 명세서에서의 어떠한 표현도 임의의 비-청구된 요소를 본 개시내용의 실시에 필수적인 것으로 나타내는 것으로 해석되어서는 안 된다.
문구 "X, Y, 또는 Z 중 적어도 하나"와 같은 논리합 표현(disjunctive language)은, 구체적으로 달리 언급되지 않는 한, 항목, 항, 등이 X, Y, 또는 Z 중 어느 하나, 또는 이들의 임의의 조합(예컨대, X, Y, 및/또는 Z)일 수 있다는 것을 제시하기 위해 일반적으로 사용되는 바와 같이 문맥 내에서 달리 이해된다. 이와 같이, 그러한 논리합 표현은 일반적으로 특정 실시예들이 X 중 적어도 하나, Y 중 적어도 하나, 또는 Z 중 적어도 하나가 각각 존재할 것을 요구한다는 것을 암시하는 것으로 의도되지 않고 암시해서는 안된다. 그에 부가하여, 문구 "X, Y, 및 Z 중 적어도 하나"와 같은 논리곱 표현(conjunctive language)은, "X, Y, 및/또는 Z를 포함한, X, Y, Z, 또는 이들의 임의의 조합을 의미하는 것으로 또한 이해되어야 한다.
본 개시내용을 수행하기 위한 본 발명자들에 공지된 최상의 모드를 포함한, 본 개시내용의 바람직한 실시예들이 본 명세서에 기술된다. 그 바람직한 실시예들의 변형들이 전술한 설명을 읽을 때 본 기술분야의 통상의 기술자에게 명백해질 수 있다. 본 발명자들은 통상의 기술자가 적절한 경우 그러한 변형들을 이용할 것으로 예상하며, 본 발명자들은 본 개시내용이 본 명세서에 구체적으로 기술된 것과 다른 방식으로 실시되도록 의도한다. 그에 따라, 본 개시내용은, 적용가능한 법에 의해 허용되는 바와 같이, 본 명세서에 첨부된 청구항들에 열거된 주제의 모든 변형들 및 등가물들을 포함한다. 더욱이, 앞서 기술된 요소들의 모든 가능한 변형들에서의 그 요소들의 임의의 조합은, 본 명세서에 달리 지시되지 않거나 문맥에 의해 달리 명확하게 모순되지 않는 한, 본 개시내용에 의해 포괄된다.
본 명세서에 인용된, 간행물들, 특허 출원들, 및 특허들을 포함한, 모든 참고문헌들은 이로써 각각의 참고문헌이 개별적으로 그리고 구체적으로 참고로 포함되는 것으로 지시되고 본 명세서에 그 전체가 기재된 경우와 동일한 정도로 참고로 포함된다.

Claims (20)

  1. 메모리 시스템을 갖는 모바일 디바이스의 하나 이상의 프로세서에 의해:
    상기 모바일 디바이스가 미리보기 모드에 있을 때 디스플레이될 스냅숏들을 제공하기 위해 지정된 애플리케이션들의 세트를 식별하는 단계;
    현재의 메모리 압박 레벨(memory pressure level)에 대한 요청을 상기 메모리 시스템에게 송신하는 단계 - 상기 메모리 시스템 내의 애플리케이션들이 상기 하나 이상의 프로세서에 의해 실행되도록 상기 메모리 시스템은 상기 하나 이상의 프로세서와 통신가능하게 커플링됨 -;
    상기 현재의 메모리 압박 레벨이 임계값 미만이라고 결정한 후에, 상기 애플리케이션들의 세트 내의 제1 애플리케이션을 영구 스토리지로부터 상기 메모리 시스템에 로딩하는 단계 - 상기 제1 애플리케이션은 상기 제1 애플리케이션이 상기 메모리 시스템에 로딩될 때 상기 제1 애플리케이션의 제1 스냅숏을 생성함 -;
    상기 현재의 메모리 압박 레벨에 대한 다른 요청을 상기 메모리 시스템에게 송신하는 단계;
    상기 현재의 메모리 압박 레벨이 상기 임계값보다 크다고 결정한 후에, 상기 메모리 시스템으로부터 상기 제1 애플리케이션을 언로딩하는 단계;
    나중에, 상기 애플리케이션들의 세트 내의 제2 애플리케이션을 상기 영구 스토리지로부터 상기 메모리 시스템에 로딩하는 단계 - 상기 제2 애플리케이션은 상기 제2 애플리케이션이 상기 메모리 시스템에 로딩될 때 상기 제2 애플리케이션의 제2 스냅숏을 생성함 -;
    상기 제2 스냅숏을 상기 메모리 시스템에 저장하는 단계; 및
    상기 메모리 시스템으로부터 상기 제2 애플리케이션을 언로딩하는 단계를 수행하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 현재의 메모리 압박 레벨이 상기 임계값보다 크다고 결정하는 것에 응답하여, 다른 애플리케이션을 상기 영구 스토리지로부터 상기 메모리 시스템에 로딩하지 않는 단계를 추가로 포함하는, 방법.
  3. 제1항에 있어서,
    상기 현재의 메모리 압박 레벨이 상기 임계값보다 크다고 결정하는 것에 응답하여, 상기 제1 애플리케이션을 상기 메모리 시스템으로부터 언로딩하는 단계를 추가로 포함하는, 방법.
  4. 제3항에 있어서,
    상기 애플리케이션들의 세트 내의 제3 애플리케이션이 상기 메모리 시스템에 로딩되지 않는다고 결정하는 단계; 및
    상기 제3 애플리케이션에 대한 스냅숏이 필요하다고 결정하는 단계를 추가로 포함하며, 상기 제3 애플리케이션이 상기 메모리 시스템에 로딩되지 않는다고 그리고 상기 제3 애플리케이션의 상기 스냅숏이 필요하다고 결정한 것에 추가로 응답하여 상기 제1 애플리케이션이 상기 메모리 시스템으로부터 언로딩되는, 방법.
  5. 제1항에 있어서,
    상기 모바일 디바이스의 스크린이 그래픽 사용자 인터페이스를 디스플레이하지 않는다는 표시를 수신하는 단계를 추가로 포함하며, 상기 애플리케이션들의 세트는 상기 표시를 수신한 후에 식별되는, 방법.
  6. 제1항에 있어서,
    상기 현재의 메모리 압박 레벨이 상기 임계값 초과라고 결정하는 것에 응답하여:
    상기 로딩된 애플리케이션들의 서브세트가 상기 애플리케이션들의 보다 낮은 우선순위 대역에 속하는지를 결정하는 단계; 및
    상기 메모리 시스템의 가용 메모리를 증가시키기 위해 상기 로딩된 애플리케이션들의 상기 서브세트 중 적어도 하나 이상의 애플리케이션을 종료하는 단계를 추가로 포함하는, 방법.
  7. 제1항에 있어서,
    상기 모바일 디바이스의 스크린이 그래픽 사용자 인터페이스를 디스플레이하지 않는다고 결정하는 단계;
    상기 모바일 디바이스의 상기 스크린이 상기 그래픽 사용자 인터페이스를 디스플레이하지 않는다고 결정하는 것에 응답하여, 상기 애플리케이션들의 세트 내의 제3 애플리케이션이 이미 로딩되었다고 결정하는 단계; 및
    아직 로딩되지 않은 상기 애플리케이션들의 세트 내의 애플리케이션들의 나머지 서브세트를 결정하는 단계를 추가로 포함하며, 상기 제1 애플리케이션 및 상기 제2 애플리케이션은 상기 애플리케이션들의 나머지 서브세트 내에 있는, 방법.
  8. 모바일 디바이스로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 커플링된 컴퓨터 판독가능 매체를 포함하고, 상기 컴퓨터 판독가능 매체는 실행될 때 상기 하나 이상의 프로세서로 하여금:
    상기 모바일 디바이스가 미리보기 모드에 있을 때 디스플레이될 스냅숏들을 제공하기 위해 지정된 애플리케이션들의 세트를 식별하는 것;
    현재의 메모리 압박 레벨에 대한 요청을 메모리 시스템에게 송신하는 것 - 상기 메모리 시스템 내의 애플리케이션들이 상기 하나 이상의 프로세서에 의해 실행되도록 상기 메모리 시스템은 상기 하나 이상의 프로세서와 통신가능하게 커플링됨 -;
    상기 현재의 메모리 압박 레벨이 임계값 미만이라고 결정한 후에, 상기 애플리케이션들의 세트 내의 제1 애플리케이션을 영구 스토리지로부터 상기 메모리 시스템에 로딩하는 것 - 상기 제1 애플리케이션은 상기 제1 애플리케이션이 상기 메모리 시스템에 로딩될 때 상기 제1 애플리케이션의 제1 스냅숏을 생성함 -;
    상기 현재의 메모리 압박 레벨에 대한 다른 요청을 상기 메모리 시스템에게 송신하는 것;
    상기 현재의 메모리 압박 레벨이 상기 임계값보다 크다고 결정한 후에, 상기 애플리케이션들의 세트 내의 상기 제1 애플리케이션을 언로딩하는 것;
    나중에, 상기 애플리케이션들의 세트 내의 제2 애플리케이션을 상기 영구 스토리지로부터 상기 메모리 시스템에 로딩하는 것 - 상기 제2 애플리케이션은 상기 제2 애플리케이션이 상기 메모리 시스템에 로딩될 때 상기 제2 애플리케이션의 제2 스냅숏을 생성함 -;
    상기 제2 스냅숏을 상기 메모리 시스템에 저장하는 것; 및
    상기 제2 애플리케이션을 언로딩하는 것을 수행하게 하는 명령어들의 세트로 인코딩되는, 모바일 디바이스.
  9. 제8항에 있어서, 상기 하나 이상의 프로세서로 하여금 추가로:
    상기 현재의 메모리 압박 레벨이 상기 임계값보다 크다고 결정하는 것에 응답하여, 다른 애플리케이션을 상기 영구 스토리지로부터 상기 메모리 시스템에 로딩하지 않는 것을 수행하게 하는, 모바일 디바이스.
  10. 제8항에 있어서, 상기 하나 이상의 프로세서로 하여금 추가로:
    상기 현재의 메모리 압박 레벨이 상기 임계값보다 크다고 결정하는 것에 응답하여, 상기 제1 애플리케이션을 상기 메모리 시스템으로부터 언로딩하는 것을 수행하게 하는, 모바일 디바이스.
  11. 제10항에 있어서, 상기 하나 이상의 프로세서로 하여금 추가로:
    상기 애플리케이션들의 세트 내의 제3 애플리케이션이 상기 메모리 시스템에 로딩되지 않는다고 결정하는 것; 및
    상기 제3 애플리케이션에 대한 스냅숏이 필요하다고 결정하는 것을 수행하게 하며, 상기 제3 애플리케이션이 상기 메모리 시스템에 로딩되지 않는다고 그리고 상기 제3 애플리케이션의 상기 스냅숏이 필요하다고 결정한 것에 추가로 응답하여 상기 제1 애플리케이션이 상기 메모리 시스템으로부터 언로딩되는, 모바일 디바이스.
  12. 제8항에 있어서, 상기 하나 이상의 프로세서로 하여금 추가로:
    상기 모바일 디바이스의 스크린이 그래픽 사용자 인터페이스를 더 이상 디스플레이하지 않는다는 표시를 수신하는 것을 수행하게 하며, 상기 애플리케이션들의 세트는 상기 표시를 수신한 후에 식별되는, 모바일 디바이스.
  13. 제8항에 있어서, 상기 하나 이상의 프로세서로 하여금 추가로:
    상기 현재의 메모리 압박 레벨이 상기 임계값 초과라고 결정하는 것에 응답하여:
    상기 로딩된 애플리케이션들의 서브세트가 상기 애플리케이션들의 보다 낮은 우선순위 대역에 속하는지를 결정하는 것; 및
    상기 메모리 시스템의 가용 메모리를 증가시키기 위해 상기 로딩된 애플리케이션들의 상기 서브세트 중 적어도 하나 이상의 애플리케이션을 종료하는 것을 수행하게 하는, 모바일 디바이스.
  14. 제8항에 있어서, 상기 하나 이상의 프로세서로 하여금 추가로:
    상기 모바일 디바이스의 스크린이 그래픽 사용자 인터페이스를 더 이상 디스플레이하지 않는다고 결정하는 것에 응답하여, 상기 애플리케이션들의 세트 내의 제3 애플리케이션이 이미 로딩되었다고 결정하는 것; 및
    아직 로딩되지 않은 상기 애플리케이션들의 세트 내의 애플리케이션들의 나머지 서브세트를 결정하는 것을 수행하게 하며, 상기 제1 애플리케이션 및 상기 제2 애플리케이션은 상기 애플리케이션들의 나머지 서브세트 내에 있는, 모바일 디바이스.
  15. 복수의 명령어들을 저장하는 비일시적 컴퓨터 판독가능 기록 매체 상에 저장된 컴퓨터 프로그램으로서, 상기 명령어들은 실행될 때 모바일 디바이스의 하나 이상의 프로세서로 하여금 제1항 내지 제7항 중 어느 한 항의 방법을 수행하게 하는, 컴퓨터 프로그램.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020187034647A 2016-06-10 2017-05-25 애플리케이션 로딩을 위한 메모리 관리 KR102189612B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/179,877 US10747467B2 (en) 2016-06-10 2016-06-10 Memory management for application loading
US15/179,877 2016-06-10
PCT/US2017/034506 WO2017213878A1 (en) 2016-06-10 2017-05-25 Memory management for application loading

Publications (2)

Publication Number Publication Date
KR20190003684A KR20190003684A (ko) 2019-01-09
KR102189612B1 true KR102189612B1 (ko) 2020-12-11

Family

ID=59021600

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187034647A KR102189612B1 (ko) 2016-06-10 2017-05-25 애플리케이션 로딩을 위한 메모리 관리

Country Status (6)

Country Link
US (1) US10747467B2 (ko)
EP (1) EP3446217B1 (ko)
KR (1) KR102189612B1 (ko)
CN (1) CN109313570B (ko)
AU (1) AU2017277697B2 (ko)
WO (1) WO2017213878A1 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753436B2 (en) 2013-06-11 2017-09-05 Apple Inc. Rotary input mechanism for an electronic device
KR102035445B1 (ko) 2013-08-09 2019-10-22 애플 인크. 전자 시계
WO2015122885A1 (en) 2014-02-12 2015-08-20 Bodhi Technology Ventures Llc Rejection of false turns of rotary inputs for electronic devices
US10190891B1 (en) 2014-07-16 2019-01-29 Apple Inc. Optical encoder for detecting rotational and axial movement
KR102414569B1 (ko) 2014-09-02 2022-06-29 애플 인크. 웨어러블 전자 디바이스
JP6515185B2 (ja) 2015-03-05 2019-05-15 アップル インコーポレイテッドApple Inc. 方向依存光学特性を有する光学エンコーダを有する時計、手首装着型電子デバイス及びウェラブル電子デバイス
KR101993073B1 (ko) 2015-03-08 2019-06-25 애플 인크. 회전가능 및 병진가능한 입력 메커니즘을 위한 압축성 밀봉부
US10018966B2 (en) 2015-04-24 2018-07-10 Apple Inc. Cover member for an input mechanism of an electronic device
US9891651B2 (en) 2016-02-27 2018-02-13 Apple Inc. Rotatable input mechanism having adjustable output
US10551798B1 (en) 2016-05-17 2020-02-04 Apple Inc. Rotatable crown for an electronic device
US10520979B2 (en) 2016-06-10 2019-12-31 Apple Inc. Enhanced application preview mode
US10061399B2 (en) 2016-07-15 2018-08-28 Apple Inc. Capacitive gap sensor ring for an input device
US10019097B2 (en) 2016-07-25 2018-07-10 Apple Inc. Force-detecting input structure
CN112882804A (zh) * 2016-08-17 2021-06-01 华为技术有限公司 一种启动应用的方法及装置
US10664074B2 (en) 2017-06-19 2020-05-26 Apple Inc. Contact-sensitive crown for an electronic watch
US10962935B1 (en) 2017-07-18 2021-03-30 Apple Inc. Tri-axis force sensor
US10831368B2 (en) 2017-12-14 2020-11-10 At&T Intellectual Property I, L.P. Local storage memory management for a mobile device
US11360440B2 (en) 2018-06-25 2022-06-14 Apple Inc. Crown for an electronic watch
US11030314B2 (en) * 2018-07-31 2021-06-08 EMC IP Holding Company LLC Storage system with snapshot-based detection and remediation of ransomware attacks
US11561515B2 (en) 2018-08-02 2023-01-24 Apple Inc. Crown for an electronic watch
CN209560398U (zh) 2018-08-24 2019-10-29 苹果公司 电子表
US11181863B2 (en) 2018-08-24 2021-11-23 Apple Inc. Conductive cap for watch crown
US11194298B2 (en) 2018-08-30 2021-12-07 Apple Inc. Crown assembly for an electronic watch
CN209625187U (zh) 2018-08-30 2019-11-12 苹果公司 电子手表和电子设备
KR102621169B1 (ko) 2019-01-11 2024-01-05 산진 옵토일렉트로닉스 (난징) 컴퍼니 리미티드 편광판의 제조 방법
US11194299B1 (en) 2019-02-12 2021-12-07 Apple Inc. Variable frictional feedback device for a digital crown of an electronic watch
US11886888B2 (en) * 2019-03-28 2024-01-30 Lenovo (Singapore) Pte. Ltd. Reduced application view during loading
KR20210023073A (ko) 2019-08-22 2021-03-04 삼성전자주식회사 전자장치 및 그 제어방법
CN115066682A (zh) * 2019-12-05 2022-09-16 谷歌有限责任公司 用于内容的低时延供应的系统和方法
US20210342192A1 (en) * 2020-04-29 2021-11-04 Dell Products L.P. Systems And Methods For Optimizing Perceived Software Application Load Delays
CN113706847B (zh) * 2020-05-21 2022-10-21 安徽华米健康科技有限公司 一种数据处理方法、装置、储存介质及可穿戴设备
US11550268B2 (en) 2020-06-02 2023-01-10 Apple Inc. Switch module for electronic crown assembly
CN111966493B (zh) * 2020-08-07 2023-07-21 Oppo广东移动通信有限公司 进程处理方法、电子设备及存储介质
CN112506387B (zh) * 2020-11-30 2023-02-17 北京达佳互联信息技术有限公司 虚拟资源的分配显示方法、装置和存储介质
US20220292627A1 (en) * 2021-03-15 2022-09-15 Samsung Electronics Co., Ltd Method and electronic device for boosting graphics performance
CN113918062B (zh) * 2021-10-29 2024-03-26 海信集团控股股份有限公司 应用程序的快捷功能的启用方法及终端
CN117648137A (zh) * 2022-01-10 2024-03-05 荣耀终端有限公司 应用启动方法、电子设备及可读存储介质
CN116466869A (zh) * 2022-01-12 2023-07-21 戴尔产品有限公司 用于标识存储器快照的方法、电子设备和计算机程序产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8933952B2 (en) * 2011-09-10 2015-01-13 Microsoft Corporation Pre-rendering new content for an application-selectable user interface
US20150324137A1 (en) * 2014-05-07 2015-11-12 Sandisk Technologies Inc. Method and Computing Device for Using Both Volatile Memory and Non-Volatile Swap Memory to Pre-Load a Plurality of Applications
KR101591601B1 (ko) 2014-08-20 2016-02-04 한양대학교 산학협력단 메모리 최적화 방법 및 그 방법을 수행하는 사용자 단말

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130024812A1 (en) 2011-07-13 2013-01-24 Z124 Foreground/background assortment of hidden windows
US8032482B2 (en) * 2004-09-30 2011-10-04 Microsoft Corporation Method, system, and apparatus for providing a document preview
US7665031B2 (en) 2004-12-08 2010-02-16 Microsoft Corporation Method and system of taskbar button interfaces
US8112755B2 (en) 2006-06-30 2012-02-07 Microsoft Corporation Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources
KR20100021725A (ko) * 2008-08-18 2010-02-26 삼성전자주식회사 이동통신 단말기의 메모리 재할당 장치 및 방법
KR101523979B1 (ko) 2008-10-02 2015-05-29 삼성전자주식회사 휴대 단말기 및 그 휴대 단말기에서 기능 수행 방법
US8769428B2 (en) 2009-12-09 2014-07-01 Citrix Systems, Inc. Methods and systems for generating a combined display of taskbar button group entries generated on a local machine and on a remote machine
CN102984383B (zh) * 2010-02-05 2015-07-29 华为终端有限公司 一种预览的方法、装置和手机
US8874129B2 (en) 2010-06-10 2014-10-28 Qualcomm Incorporated Pre-fetching information based on gesture and/or location
JP5095780B2 (ja) 2010-06-25 2012-12-12 シャープ株式会社 画像形成装置
TW201232400A (en) 2011-01-20 2012-08-01 Acer Inc Method for pre-loading frequently launched application and electronic device using the same
CN102622270B (zh) * 2011-01-26 2016-08-17 腾讯科技(深圳)有限公司 一种应用程序的切换管理方法和终端
US20120209413A1 (en) 2011-02-14 2012-08-16 Microsoft Corporation Background Audio on Mobile Devices
TW201241640A (en) * 2011-02-14 2012-10-16 Microsoft Corp Dormant background applications on mobile devices
US8171137B1 (en) 2011-05-09 2012-05-01 Google Inc. Transferring application state across devices
US20120297304A1 (en) * 2011-05-17 2012-11-22 Apple Inc. Adaptive Operating System
US9201709B2 (en) * 2011-05-20 2015-12-01 Citrix Systems, Inc. Shell integration for an application executing remotely on a server
US20120324481A1 (en) 2011-06-16 2012-12-20 Samsung Electronics Co. Ltd. Adaptive termination and pre-launching policy for improving application startup time
KR101919777B1 (ko) * 2012-01-09 2018-11-19 엘지전자 주식회사 이동 단말기 및 그 제어방법
US20140013271A1 (en) 2012-07-05 2014-01-09 Research In Motion Limited Prioritization of multitasking applications in a mobile device interface
US9367211B1 (en) 2012-11-08 2016-06-14 Amazon Technologies, Inc. Interface tab generation
TWI486875B (zh) * 2012-12-28 2015-06-01 Mstar Semiconductor Inc 電子裝置休眠回復設定方法以及具有休眠狀態以及休眠回復機制的電子裝置
US9003556B2 (en) 2013-02-28 2015-04-07 Facebook, Inc. Techniques for in-app user data authorization
US20140258238A1 (en) 2013-03-05 2014-09-11 VCE Company LLC Method to embed snapshot management into virtual machine instances
US10251034B2 (en) 2013-03-15 2019-04-02 Blackberry Limited Propagation of application context between a mobile device and a vehicle information system
US9508040B2 (en) 2013-06-12 2016-11-29 Microsoft Technology Licensing, Llc Predictive pre-launch for applications
US20140378159A1 (en) 2013-06-24 2014-12-25 Amazon Technologies, Inc. Using movement patterns to anticipate user expectations
US10346381B2 (en) * 2013-11-14 2019-07-09 Facebook, Inc. Atomic update operations in a data storage system
US10117600B2 (en) 2014-04-15 2018-11-06 Apple Inc. Pacing activity data of a user
EP3333740A1 (en) * 2014-09-02 2018-06-13 Apple Inc. Physical activity and workout monitor
US9361154B2 (en) 2014-09-30 2016-06-07 International Business Machines Corporation Tunable computerized job scheduling
US9916075B2 (en) * 2015-06-05 2018-03-13 Apple Inc. Formatting content for a reduced-size user interface
US11121999B2 (en) 2015-10-30 2021-09-14 Microsoft Technology Licensing, Llc Communication interface for wearable devices
US10216370B2 (en) 2016-03-29 2019-02-26 Microsoft Technology Licensing, Llc Tabs in system task switchers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8933952B2 (en) * 2011-09-10 2015-01-13 Microsoft Corporation Pre-rendering new content for an application-selectable user interface
US20150324137A1 (en) * 2014-05-07 2015-11-12 Sandisk Technologies Inc. Method and Computing Device for Using Both Volatile Memory and Non-Volatile Swap Memory to Pre-Load a Plurality of Applications
KR101591601B1 (ko) 2014-08-20 2016-02-04 한양대학교 산학협력단 메모리 최적화 방법 및 그 방법을 수행하는 사용자 단말

Also Published As

Publication number Publication date
EP3446217A1 (en) 2019-02-27
EP3446217B1 (en) 2022-12-14
KR20190003684A (ko) 2019-01-09
AU2017277697A1 (en) 2018-11-22
CN109313570B (zh) 2021-11-05
WO2017213878A1 (en) 2017-12-14
US20170357465A1 (en) 2017-12-14
CN109313570A (zh) 2019-02-05
US10747467B2 (en) 2020-08-18
AU2017277697B2 (en) 2020-05-28

Similar Documents

Publication Publication Date Title
KR102189612B1 (ko) 애플리케이션 로딩을 위한 메모리 관리
US11513557B2 (en) Enhanced application preview mode
US20200334030A1 (en) Providing updated application data for previewing applications on a display
US11029831B2 (en) Providing complications on an electronic watch
US10459887B1 (en) Predictive application pre-launch
US20200193084A1 (en) Api for specifying display of complication on an electronic watch
EP3286702B1 (en) Method for displaying time-related data on an electronic watch, computing device and computer program therefor
KR101908209B1 (ko) 디바이스 모드들에 기반한 디바이스들 간의 메시지 경고 제시들의 조정
KR20180097384A (ko) 전자 장치 및 전자 장치 제어 방법
EP3203352B1 (en) User interfacing method and electronic device for performing the same
CN108353161B (zh) 电子设备、可穿戴设备和用于控制通过电子设备显示的对象的方法
KR20180052177A (ko) 전자 장치 및 그의 동작 방법
US11327640B2 (en) Providing complications on an electronic device

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