KR20220054398A - 애플리케이션 그룹에 대한 맞춤형 루트 프로세스 - Google Patents
애플리케이션 그룹에 대한 맞춤형 루트 프로세스 Download PDFInfo
- Publication number
- KR20220054398A KR20220054398A KR1020227010645A KR20227010645A KR20220054398A KR 20220054398 A KR20220054398 A KR 20220054398A KR 1020227010645 A KR1020227010645 A KR 1020227010645A KR 20227010645 A KR20227010645 A KR 20227010645A KR 20220054398 A KR20220054398 A KR 20220054398A
- Authority
- KR
- South Korea
- Prior art keywords
- applications
- group
- application
- root process
- mobile device
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 392
- 230000008569 process Effects 0.000 title claims abstract description 269
- 230000015654 memory Effects 0.000 claims description 118
- 238000012544 monitoring process Methods 0.000 claims description 28
- 238000013500 data storage Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010924 continuous production Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Stored Programmes (AREA)
Abstract
컴퓨팅 디바이스에서의 애플리케이션 그룹들에 대한 맞춤화된 루트 프로세스들.컴퓨팅 디바이스(예를 들어, 모바일 디바이스)는 애플리케이션들의 사용을 모니터링할 수 있다.그 후, 디바이스는 애플리케이션들의 사용과 관련된 데이터를 저장하고, 저장된 데이터에 따라 애플리케이션들을 그룹들로 그룹화할 수 있다.디바이스는 그룹 내의 각 애플리케이션에 공통된 사용에 따라 애플리케이션 그룹에 대한 루트 프로세스를 맞춤화 및 실행할 수 있다.디바이스는 그룹 내의 각 애플리케이션에 공통된 저장된 데이터에 기초하여 그룹 내의 애플리케이션들 사이에서 공유되는 이전 실행들의 패턴들을 생성하고, 패턴들에 따라 그룹의 루트 프로세스를 실행할 수 있다.디바이스는 디바이스의 사용자로부터 그룹으로부터의 애플리케이션을 시작하기 위한 요청을 수신할 수 있고, 요청을 수신하 시 애플리케이션 그룹의 루트 프로세스를 사용함으로써 애플리케이션을 시작할 수 있다.
Description
관련 출원
본 출원은 2019년 10월 3일자로 출원되고, 명칭이 "CUSTOMIZED ROOT PROCESSES FOR GROUPS OF APPLICATIONS"인 미국 특허 출원 제16/592,537호의 우선권을 주장하며, 이의 전체 개시 내용은 이에 의해 본원에서 원용된다.
기술분야
본원에서 개시되는 적어도 일부 실시예들은 일반적으로 컴퓨팅 시스템들에 대한 루트 프로세스들에 관한 것으로, 보다 구체적으로는 컴퓨팅 디바이스에서의 애플리케이션 그룹들에 대한 맞춤형 루트 프로세스들에 관한 것이다.
안드로이드 운영 체제의 내부 작업들은 모든 안드로이드 애플리케이션 프로세스들의 부모 또는 루트 프로세스로서 동작하는 자이고트(zygote)를 포함한다. 유닉스 및 유닉스와 유사한 운영 체제(이를테면, 리눅스 및 안드로이드)에서, 임의의 비-초기 프로세스(또는 임의의 비-제로 프로세스)는 운영 체제(operating system, OS)의 초기 또는 제로 프로세스로부터 적어도 부분적으로 도출될 수 있다. 이에 따라, 안드로이드 OS에 의한 "자이고트"라는 용어의 사용은 그 루트 프로세스 또는 프로세스 0을 지칭하는 것이다.
안드로이드는 구글에 의해 개발된 모바일 디바이스용 모바일 OS이다. 이는 리눅스 커널 및 기타 오픈 소스 소프트웨어의 수정 버전에 기초하고, 주로 모바일 디바이스들(예를 들어, 스마트폰, 태블릿 등)을 위해 설계된다. 또한, 구글은 사물 인터넷(Internet of Thing, IoT)을 위한 안드로이드의 버전들을 개발하였다. 그리고, 안드로이드의 버전들은 텔레비전 및 기타 가전 제품들, 차량내 정보 시스템들, 웨어러블 스마트 디바이스들, 게임 콘솔, 디지털 카메라, 및 PC를 포함하는 기타 유형들의 전자기기들을 위해 개발되었다.
안드로이드, 유닉스, 또는 유닉스와 유사한 또 다른 OS에 의한 비-제로 프로세스의 생성은 또 다른 프로세스가 "fork()"로 표현되는 시스템 호출을 실행할 때 일어나며, 이는 프로세스를 다수의 프로세스들로 포킹하게 한다. 포킹을 호출한 프로세스는 부모 프로세스이고, 새롭게 생성된 프로세스는 자식 프로세스이다. 유닉스 또는 유닉스와 유사한 운영 체제들에서, 커널은 그 프로세스 식별자(예를 들어, 초기 또는 제로 프로세스에 대해 "0")에 의해 각 프로세스를 식별할 수 있다. 유닉스 및 유사한 운영 체제들에서, 제로 프로세스(즉, 프로세스 0)는 OS가 부팅될 때 생성되는 루트 프로세스이다. "init"로서 알려져 있는 제1 자식 프로세스(예를 들어, 프로세스 1)는 제로 프로세스로부터 적어도 부분적으로 도출될 수 있고, OS에서의 모든 다른 프로세스의 조상이 될 수 있다.
본 개시는 아래에 주어지는 구체적인 내용 및 본 개시의 다양한 실시예들의 첨부 도면들로부터 보다 충분하게 이해될 것이다.
도 1 및 4는 본 개시의 일부 실시예들에 따른, 다수의 애플리케이션 그룹들에 대한 각 루트 프로세스들을 포함하고 실행하는 예시적인 모바일 디바이스를 나타낸다.
도 2, 3, 5, 및 6은 본 개시의 일부 실시예들에 따른, 도 1 및 4에 도시된 모바일 디바이스에 의해 수행될 수 있는 예시적인 동작들의 흐름도들을 나타낸다.
도 7은 본 개시의 일부 실시예들에 따른, 다수의 애플리케이션 그룹들에 대한 맞춤형 루트 프로세스들을 구현할 수 있는 예시적인 컴퓨팅 디바이스를 나타낸다.
도 1 및 4는 본 개시의 일부 실시예들에 따른, 다수의 애플리케이션 그룹들에 대한 각 루트 프로세스들을 포함하고 실행하는 예시적인 모바일 디바이스를 나타낸다.
도 2, 3, 5, 및 6은 본 개시의 일부 실시예들에 따른, 도 1 및 4에 도시된 모바일 디바이스에 의해 수행될 수 있는 예시적인 동작들의 흐름도들을 나타낸다.
도 7은 본 개시의 일부 실시예들에 따른, 다수의 애플리케이션 그룹들에 대한 맞춤형 루트 프로세스들을 구현할 수 있는 예시적인 컴퓨팅 디바이스를 나타낸다.
본원에서 개시되는 적어도 일부 실시예들은 일반적으로 컴퓨팅 시스템들에 대한 루트 프로세스들에 관한 것으로, 보다 구체적으로는 컴퓨팅 디바이스에서의 다수의 애플리케이션 그룹들에 대한 맞춤형 루트 프로세스들에 관한 것이다.
본원에 개시된 일부 실시예들에서, 애플리케이션 그룹은 애플리케이션 그룹에 대해서만 각 루트 프로세스를 공유할 수 있다. 이러한 실시예들에서, 애플리케이션 그룹의 루트 프로세스는 그룹의 애플리케이션들 각각이 그룹의 루트 프로세스의 포킹을 통해 론칭될 수 있도록, 애플리케이션 그룹에 적합한 선택된 라이브러리, 오브젝트, 및/또는 페이지 집합을 프리로딩할 수 있다.
일부 실시예들에서, 운영 체제, 하이퍼바이저 등은 디바이스 또는 다수의 디바이스들(예를 들어, 네트워킹된 디바이스들)에서의 애플리케이션들에 대한 임계적인 라이브러리들, 오브젝트들, 및 페이지들을 모니터링 및 레코딩할 수 있고, 다양한 애플리케이션들의 라이브러리들, 오브젝트들, 및 페이지들의 사용을 캡처하기 위해 데이터베이스 또는 또 다른 유형의 데이터 구조를 구축할 수 있다. 캡처된 데이터 액세스 및 사용 패턴들은 루트 프로세스가 애플리케이션 그룹에 대한 각 루트 프로세스가 되도록, 루트 프로세스를 공유하기 위한 애플리케이션 그룹을 식별하기 위해 사용될 수 있다. 운영 체제, 하이퍼바이저 등은 캡처된 데이터 액세스 및 사용 패턴들에 기초하여 애플리케이션 그룹의 루트 프로세스를 생성하고 맞춤화할 수 있다. 시간이 지남에 따라 애플리케이션 그룹에서의 각 애플리케이션의 성능이 개선될 수 있는데, 이는 데이터베이스 또는 데이터 구조가 그룹에 대한 더 많은 양의 데이터 액세스 및 사용 패턴들로 진화할 수 있기 때문이다.
본원에 개시된 일부 실시예들은 하나 이상의 컴퓨팅 디바이스에서 사용자에 의한 하나 이상의 애플리케이션의 사용을 모니터링하도록 구성되는 하나 이상의 컴퓨팅 디바이스의 OS 또는 하이퍼바이저 등에 관한 것이다. 예를 들어, 일부 실시예들은 사용자에 의한 디바이스에서의 다수의 애플리케이션들의 사용을 모니터링하도록 구성되는 모바일 디바이스의 OS에 관한 것일 수 있다. 애플리케이션들의 모니터링은 OS, 하이퍼바이저 등이 애플리케이션 그룹에 대해 메모리로부터 판독되고 메모리에 기록하게 하는 애플리케이션 그룹에 공통된 통상적인 초기 또는 이력 또는 샘플링된 판독들 또는 기록들을 식별할 수 있다. 모니터링은 또한 관련 애플리케이션들의 사용 패턴들(예를 들어, 데이터 액세스 패턴들, 사용자에 의해 사용되는 통상적인 요일, 통상적으로 사용되는 일시 애플리케이션 그룹의 사용과 상관되는 사용되는 다른 애플리케이션들 등)의 모니터링을 포함할 수 있다. 애플리케이션 그룹과 연관된 초기 또는 이력 또는 샘플링된 판독들 및 기록들은 특히 애플리케이션 그룹에 대한 각 루트 프로세스를 통해 사용되도록 메모리에 저장되거나 캐싱될 수 있다. 초기 또는 이력 또는 샘플링된 판독들 및 기록들은 사용의 빈도, 사용의 최신성 등에 따라, 메모리를 통해, OS, 하이퍼바이저 등에 의해, 관리, 유지, 우선순위화 등이 될 수 있다. 일부 실시예들에서, 저장 또는 캐싱은 초기 판독들 및 기록들을 가속하기 위해 더 빠른 메모리에 행해질 수 있다.
일부 실시예들에서, 애플리케이션 그룹의 루트 프로세스에 대한 명령어들 및/또는 데이터는 플래시 메모리 또는 비휘발성 랜덤 액세스 메모리(NVRAM)와 같은 영구 비휘발성 메모리에 저장될 수 있다. NVRAM은 일부 실시예들에서 3D XPoint 메모리를 포함할 수 있다.
애플리케이션 그룹에 대한 루트 프로세스는 OS, 하이퍼바이저 등의 시동 시에 론칭될 수 있다. 일부 실시예들에서, 그룹의 루트 프로세스는 그룹 내의 애플리케이션들이 특정 시구간 내에 사용되지 않는 경우 또는 애플리케이션들이 CPU, GPU, 메모리 또는 기타 자원과 같은 너무 많은 시스템 자원들을 소비하는 경우 중지(kill)될 수 있다. 이러한 실시예들에서, OS, 하이퍼바이저 등은 애플리케이션 그룹에서의 적어도 하나의 애플리케이션의 사용을 예상하여, 그룹의 모니터링에서 식별된 패턴들에 따라 그룹의 루트 프로세스를 재 론칭하도록 구성될 수 있다. 패턴들에 대한 선호도는 패턴들의 정량화, 빈도 및/또는 최신성에 기초할 수 있고, 애플리케이션 그룹에 대한 임의의 유형의 메모리 액세스 패턴들이 모니터링 및 추적될 수 있다. 모니터링 및 추적은 특수 레지스터들(예를 들어, 모델 특정 레지스터들)을 판독 및 기록하는 것을 통해 OS를 통해 이용가능한 하드웨어 및 소프트웨어 성능 카운터들을 포함할 수 있다. 패턴들은 메모리로부터의 판독들, 메모리에 대한 기록들의 양, 빈도 및/또는 최신성, 물리적 메모리 공간에서의 어드레스 패턴들, 가상 공간에서의 어드레스 패턴들, 데이터의 로컬성(공간적으로 그리고/또는 시간적으로), 뱅크 충돌들, 또는 명령어당 CPU 사이클들과 같은 메트릭들에 기초할 수 있다. 패턴들은 또한 변환 색인 버퍼(translation lookaside buffer, TLB) 메트릭들 및 OS에 이용가능한 다른 메트릭들의 양, 빈도 및/또는 최신성과 같은 메트릭들에 기초할 수 있다.
일부 실시예들에서, 애플리케이션 그룹 내의 적어도 하나의 애플리케이션이 (모바일 디바이스와 같은) 컴퓨팅 디바이스에 설치된 후에, 디바이스의 OS 또는 연관된 하이퍼바이저는 사용자 및 애플리케이션 그룹에 대해 맞춤화된 루트 애플리케이션 프로세스를 생성하기 위해 그룹의 애플리케이션들을 프리론칭할 수 있다. 프리론칭은 사용자가 애플리케이션 그룹 중 적어도 하나의 애플리케이션을 시작할 것을 컴퓨팅 디바이스에 요청하기 전에 일어날 수 있다. 그룹의 애플리케이션들은 적어도 부분적으로 OS 또는 하이퍼바이저 등을 통해 실행될 수 있다. 이에 따라, 그룹의 애플리케이션들의 프리론치 프로세스 또는 루트 프로세스는 OS의 루트 프로세스와 상이하다. 이러한 실시예들에서, OS 또는 하이퍼바이저 등은 애플리케이션 그룹의 루트 프로세스를 셋업하기 위해 데이터를 이동 및/또는 복사할 수 있다. 일부 실시예들에서, 초기에 데이터의 복사 및/또는 이동은 OS의 루트 프로세스에 의해 행해질 수 있다. 이는 이를테면 애플리케이션 그룹의 루트 프로세스에 의해 그룹의 애플리케이션들에 대한 임의의 초기 판독들 또는 기록들 전에 일어날 수 있다. 일부 실시예들에서, 공통 코드 및 판독 전용 데이터(예를 들어, 라이브러리, 런타임, 드라이버, 메모리 페이지)는 OS의 루트 프로세스 또는 애플리케이션 그룹의 각 루트 프로세스에 의해 복사 및/또는 이동되지 않는다. 일부 실시예들에서, 루트 프로세스의 코드 및 데이터는 루트 프로세스, 또 다른 프로세스 또는 OS에 의한 코드 및 데이터의 초기 수정 때까지 복사되지 않는다. 일부 실시예들에서, 코드 및 데이터의 수정된 부분들만이 복사되지만, 수정된 부분들은 공통으로 유지되지 않는다. 일부 실시예들에서, 이러한 부분들은 메모리 페이지들, 캐시 라인들 또는 파일 시스템 섹터들 또는 컴퓨터 판독가능 저장 매체의 다른 요소들에 대한 기록들을 모니터링함으로써 식별될 수 있다.
컴퓨팅 디바이스(예를 들어, 모바일 디바이스)는 애플리케이션 그룹의 루트 프로세스에 추가하기 위한 초기 판독들 및 기록들을 결정하기 위해 사용자에 의한 애플리케이션 그룹의 빈번한 또는 최근의 사용을 모니터링할 수 있다. 이는 OS, 하이퍼바이저 등이 애플리케이션 그룹에 대한 메모리로부터 판독 및/또는 메모리에 기록하게 할 수 있다. 초기 기록들의 결과로서의 데이터 이동 및/또는 복사는 또한 사용자가 그룹 내의 애플리케이션들 중 적어도 하나를 시작할 것을 OS, 하이퍼바이저 등에 요청하기 전에 수행될 수 있다.
OS, 하이퍼바이저 등이 시스템 레벨 루트 프로세스를 포킹한 후에, 애플리케이션 그룹에 대한 예측되는 초기 판독들 및/또는 기록들은 그룹의 루트 프로세스를 맞춤화하기 위해 사용될 수 있다. 이러한 예들에서, 애플리케이션 그룹의 맞춤화된 루트 프로세스는 애플리케이션 그룹 중 하나 이상의 애플리케이션의 고속 시작을 위해 영구 비휘발성 메모리(예를 들어, 플래시 메모리 및/또는 NVRAM)에 저장될 수 있다.
사용자가 애플리케이션 그룹 내의 하나 이상의 애플리케이션을 시작할 것을 OS, 하이퍼바이저 등에 요청할 때, OS, 하이퍼바이저 등은 그룹의 프리론칭된 프로세스(즉, 애플리케이션 그룹의 루트 프로세스), 또는 사용자를 서비스하기 위해 프리론칭된 프로세스로부터 도출된 포크형 프로세스를 사용할 수 있다. 애플리케이션 그룹의 루트 프로세스로부터의 포크형 프로세스는 애플리케이션 그룹으로부터의 루트 프로세스와 유사하거나 상이할 수 있다.
또한, 사용자가 애플리케이션 그룹의 애플리케이션들을 중지할 때, OS는 그룹의 애플리케이션들의 액티브 프로세스들 및/또는 그룹의 루트 프로세스를 완전히 또는 부분적으로 중지할 수 있다. OS, 하이퍼바이저 등은 사용자가 애플리케이션 그룹의 애플리케이션들 중 적어도 하나를 실행할 것을 예상하여, 애플리케이션 그룹의 루트 프로세스를 재 론칭할 수 있으며, 이는 그룹의 애플리케이션들의 가장 최근의 그리고/또는 빈번한 사용자 사용 패턴들에 기초하여 또한 맞춤화될 수 있다
도 1 및 4는 본 개시의 일부 실시예들에 따른, 다수의 애플리케이션 그룹들에 대한 각 루트 프로세스들을 포함하고 실행하는 예시적인 모바일 디바이스(102)를 나타낸다. 도 2, 3, 5, 및 6은 본 개시의 일부 실시예들에 따른, 도 1 및 4에 도시된 모바일 디바이스(102)에 의해 수행될 수 있는 예시적인 방법들(200, 300, 500, 및 600)의 흐름도들을 나타낸다.
구체적으로, 도 1은 적어도 제어기 및 메모리(104)를 포함하는 모바일 디바이스(102)를 나타낸다. 모바일 디바이스(102)의 제어기 및 메모리(104)는 모바일 디바이스에서 실행되는 애플리케이션들에 대한 명령어들 및 데이터를 포함할 수 있다(예를 들어, 애플리케이션의 그룹(106a)의 애플리케이션들(108a, 108b, 및 108c) 참조). 모바일 디바이스(102)의 제어기는 데이터에 기초하여 애플리케이션들에 대한 명령어들을 실행할 수 있다. 데이터는 이진 포맷 또는 프로그래밍 언어 해석기에 의해 해석하기에 적합한 포맷의 애플리케이션 명령어 코드를 포함할 수 있다. 데이터는 몇몇 데이터 구조들, 라이브러리들 등을 포함할 수 있다. 제어기는 또한 명령어들 및 데이터를 제어기의 레지스터들에 보유할 수 있다. 데이터는 이진 포맷 또는 프로그래밍 언어 해석기에 의해 해석하기에 적합한 포맷의 애플리케이션 명령어 코드를 포함할 수 있다. 데이터는 몇몇 데이터 구조들, 라이브러리들 등을 포함할 수 있다. 메모리는 그 메모리 셀들에 명령어들 및 데이터를 보유할 수 있다. 일부 실시예들에서, 모바일 디바이스(102)의 메모리의 메모리 셀들은 플래시 메모리 셀들 및/또는 NVRAM 셀들을 포함할 수 있다. NVRAM 셀들은 3D XPoint 메모리 셀들이거나 이를 포함할 수 있다.
일부 실시예들에서, 메모리는 상이한 속도들, 레이턴시들, 대역폭들 및 다른 파라미터들을 가질 수 있다. 예를 들어, SRAM 메모리는 고속 캐시로서, DRAM은 메인 메모리로서, NVRAM은 저장 메모리로서 사용될 수 있다.
애플리케이션 그룹(예를 들어, 애플리케이션 그룹들(106a, 106b, 및 106c) 참조)에 대해, 모바일 디바이스(102)에 포함되고 이에서 실행 가능한 그룹 내의 애플리케이션들에 대한 명령어들 및 데이터는 애플리케이션 그룹의 루트 프로세스에 대한 루트 프로세스 데이터 및 명령어들을 포함할 수 있다. 모바일 디바이스(102)에 포함된 각 애플리케이션 그룹의 각 루트 프로세스(예를 들어, 애플리케이션 그룹(106a)의 루트 프로세스(110), 애플리케이션 그룹(106b)의 루트 프로세스(112), 및 애플리케이션 그룹(106c)의 루트 프로세스(114))는 제어기 및 메모리(104)에 의해 구현될 수 있다. 제어기는 루트 프로세스에 대한 명령어들 및 데이터에 따라 그룹의 루트 프로세스의 명령어들을 실행하도록 구성될 수 있고, 메모리는 제어기에 의한 루트 프로세스의 실행을 위해 명령어들 및 데이터를 보유 또는 저장하도록 구성될 수 있다.
모바일 디바이스(102)에 포함된 애플리케이션 그룹의 다른 프로세스들(예를 들어, 애플리케이션들(108a, 108b 및 108c) - 여기서 각 애플리케이션이 다른 프로세스들을 가짐 - 참조)은 또한 제어기 및 메모리(104)에 의해 구현될 수 있다. 제어기는 다른 프로세스들에 대한 명령어들 및 데이터에 따라 그룹의 다른 프로세스들의 명령어들을 실행하도록 구성될 수 있고, 메모리는 제어기에 의한 다른 프로세스들의 실행을 위해 명령어들 및 데이터를 보유 또는 저장하도록 구성될 수 있다.
모바일 디바이스(102)에서, 복수의 애플리케이션들(예를 들어, 애플리케이션들(108a, 108b 및 108c) 참조)의 사용은 복수의 애플리케이션들 각각에 대한 메모리 액세스를 결정하기 위해 모니터링될 수 있다. 복수의 애플리케이션들의 사용과 관련된 데이터(예를 들어, 애플리케이션 사용 데이터(116a, 116b, 및 116c) 참조)는 모바일 디바이스에, 이를테면 모바일 디바이스의 메모리에 저장될 수 있다(예를 들어, 제어기 및 메모리(104) 참조). 복수의 애플리케이션들은 또한 복수의 애플리케이션들의 사용과 관련된 데이터(예를 들어, 애플리케이션 사용 데이터(116a, 116b, 116c) 참조)에 따라 그룹들(예를 들어, 애플리케이션 그룹들(106a, 106b, 및 106c) 참조)로 그룹화될 수 있다. 도시된 바와 같이, 애플리케이션 그룹의 논리적 연결들은 애플리케이션 사용 데이터를 그룹의 루트 프로세스뿐만 아니라 그룹에 속하는 대응하는 애플리케이션들과 논리적으로 연관시키거나 연결할 수 있다(예를 들어, 논리적 연결들(118) 참조). 애플리케이션 그룹의 루트 프로세스(예를 들어, 루트 프로세스들(110, 112, 및 114) 참조)는 또한, 그룹 내의 각 애플리케이션에 공통된 사용 데이터(예를 들어, 애플리케이션들(108a, 108b, 및 108c)을 링크시키는 공통 데이터를 포함할 수 있는 애플리케이션 사용 데이터(116a, 116b, 및 116c) 참조)에 따라 맞춤화 및 실행될 수 있다. 그룹 내의 애플리케이션들의 사용 데이터 간의 공통성은 논리적 연결들(예를 들어, 논리적 연결들(118) 참조)을 통해 결정될 수 있다. 일부 실시예들에서, 논리적 연결들은 제어기 및 메모리(104)에 의해 저장 및 실행되는 관계형 데이터베이스에 의해 구현될 수 있다. 이러한 데이터베이스에서의 엔트리는 각 연결을 설명할 수 있다. 예를 들어, 애플리케이션(108a)은 애플리케이션(108b)에 연결될 수 있는데, 이는 이들이 공통 오브젝트를 공유하기 때문이다(예를 들어, 이들 양자가 모바일 폰 호출 동안 사용자 음성을 캡처하는 것과 관련된 데이터를 판독-기록하는 경우). 일부 실시예들에서, 그룹당 하나보다 많은 루트 프로세스가 존재할 수 있다. 다른 실시예들에서, 하나의 애플리케이션이 다수의 그룹들에 속할 수 있다. 예를 들어, 도 1을 참조하면, 애플리케이션(116c)은 애플리케이션 1의 그룹 및 애플리케이션 2의 그룹에 속할 수 있다(도시되시 않음).
구체적으로, 도 2는 도 1에 도시된 모바일 디바이스(102)에 의해 또는 모바일 디바이스(102)와 유사하게 구성된 또 다른 유형의 컴퓨팅 디바이스에 의해 수행될 수 있는 방법(200)의 동작들을 나타낸다. 또한, 일부 실시예들에서, 방법(200)은 일반적으로 컴퓨팅 디바이스의 OS 또는 모바일 디바이스(102)와 같은 모바일 디바이스의 OS에 의해 적어도 부분적으로 수행될 수 있다. 방법(200)은 또한 하이퍼바이저 및/또는 하나 이상의 운영 체제에 의해 적어도 부분적으로 수행될 수 있다.
도 2에서, 방법(200)은 각 애플리케이션에 대한 메모리 액세스를 결정하기 위해 복수의 애플리케이션들의 사용을 모니터링하는 단계(202)에서 시작한다. 단계(202)는 모바일 디바이스와 같은 디바이스에서의 애플리케이션들에 대한 메모리로부터의 판독들 및 메모리에의 기록들의 빈도 또는 최신성을 결정하기 위해 애플리케이션들의 사용을 모니터링하는 것을 포함할 수 있다 일부 실시예들에서, 단계(202)는 애플리케이션들의 이전 실행들의 패턴들의 양, 빈도 및/또는 최신성을 결정하기 위해 애플리케이션들의 사용을 모니터링 및/또는 추적하는 것을 포함할 수 있다.
단계(202)에서 애플리케이션들의 사용을 모니터링 및 추적하는 것은 애플리케이션들의 개시 동안(예를 들어, 애플리케이션들이 메모리로 로딩되고 있을 때를 포함함) 그리고/또는 그 후에 애플리케이션들의 실행 동안 일어날 수 있다. 애플리케이션들의 사용을 모니터링 및 추적하는 것은 애플리케이션의 개시 동안 그리고 개시 후 애플리케이션들을 실행하는 임의의 다른 기간에 일어날 수 있다. 런타임 동안 애플리케이션들의 사용을 모니터링 및 추적하는 것은 애플리케이션들의 유효한 그리고/또는 효율적인 각 루트 프로세스들의 도출을 가능하게 할 수 있다. 예를 들어, 개시 후에, 사용자는 애플리케이션의 일부 요소를 트리거하고 일부 결과를 예상하기 위해 스크린을 터치할 수 있다. 애플리케이션의 런타임 동안 일어나는 모니터링에 기초하여 임계적인 메모리 오브젝트가 프리로딩될 수 있으므로 일부 실시예들에서 그 결과의 전달은 매우 신속할 수 있다. 일부 실시예들에서, 오브젝트의 프리로딩은 NAND형 플래시 메모리와 같은 더 느린 메모리로부터 DRAM과 같은 더 빠른 메모리로 행해질 수 있다
단계(202)는 또한 애플리케이션들에 대한 메모리로부터의 판독들 및 메모리에의 기록들의 빈도 또는 최신성에 따라 애플리케이션들의 이전 실행들의 패턴들을 생성하는 단계를 포함할 수 있다. 일부 실시예들(도시되지 않음)에서, 방법(200)은 모니터링 및/또는 추적되는 애플리케이션들의 이전 실행들에서의 패턴들의 양, 빈도 및/또는 최신성에 따라 애플리케이션들의 이전 실행들의 패턴들을 생성하는 것으로 계속될 수 있다.
단계(204)에서, 방법(200)은 애플리케이션들의 사용에 관련된 데이터를 저장하는 것으로 계속된다. 애플리케이션들의 사용에 관련된 데이터의 저장은 애플리케이션들이 실행되는 모바일 디바이스와 같은 디바이스에서 일어날 수 있다. 데이터의 저장은 디바이스의 메모리 및/또는 데이터 저장 시스템에서 일어날 수 있다. 일부 실시예들에서, 새로운 데이터를 저장하는 것은 애플리케이션들의 사용과 관련된 오래된 미사용 데이터를 오버라이트할 수 있다.
단계(206)에서, 방법(200)은 저장된 데이터에 따라 애플리케이션들을 애플리케이션 그룹들로 그룹화하는 것으로 계속된다. 일부 실시예들에서, 애플리케이션들을 그룹화하는 것은 단계(202)로부터 바로 행해질 수 있고, 단계(204)에서 데이터를 저장하는 것과 동시에 행해질 수 있다. 다른 예들에서, 단계(204)는 단계(206)에서의 그룹화의 속도를 높이기 위해 완전히 바이패스될 수 있다.
단계(208)에서, 방법(200)은 단계(206)에서 형성된 애플리케이션 그룹들 중 한 애플리케이션 그룹에 대한 루트 프로세스를 맞춤화 및 실행하는 것으로 계속된다. 그룹의 루트 프로세스의 맞춤화 및 실행은 그룹 내의 각 애플리케이션에 공통된 사용에 따른다 - 이를테면 그룹 내의 각 애플리케이션에 공통된 사용 데이터에 기초한다. 단계(208)에서, 방법(200)은 그룹 내의 애플리케이션들의 이전 실행들의 패턴들에 따라 애플리케이션 그룹의 루트 프로세스를 맞춤화하는 단계, 및 그 후 그룹 내의 애플리케이션들의 이전 실행들의 패턴들에 따라 초기 지점으로 애플리케이션 그룹의 루트 프로세스를 실행하는 단계를 포함할 수 있다. 루트 프로세스를 맞춤화하는 것은 다양한 라이브러리들로부터 루트 프로세스를 구성하고, 디폴트에 의해 이용가능한 다른 루트 프로세스들을 사용하고, 데이터 구조들을 형성하며, 루트 프로세스 컴포넌트들에 대해 네트워크를 통해 다양한 소스들에 질의하는 것으로 행해질 수 있지만, 이에 제한되지 않는다.
단계(210)에서, 방법(200)은 다른 그룹 내의 각 애플리케이션에 공통인 사용에 따라 또 다른 애플리케이션 그룹들 중 한 그룹에 대한 또 다른 루트 프로세스를 맞춤화 및 실행하는 단계로 계속된다. 달리 말하면, 단계(210)는 애플리케이션 그룹들의 또 다른 그룹에 대해 단계(208)를 반복한다. 또한, 단계(210)는 단계(206)에서 형성된 애플리케이션 그룹들의 각 그룹에 대해 단계(208)를 반복하는 것을 포함한다. 일부 실시예들에서, 반복은 다수의 그룹들에 대해 동시에 단계(208)를 수행하는 것으로 대체될 수 있다. 다른 실시예들에서, 맞춤화는 그룹 내의 몇몇 애플리케이션들에 대한 루트 프로세스를 맞춤화하는 것에 대한 불능을 검출할 수 있다. 이 경우에, 이러한 상태의 결정 시에, 단계(208)는 그룹들 간의 애플리케이션들의 재그룹화가 행해질 수 있는 단계(206)로 다시 돌아갈 수 있다.
단계들(208 및 210)과 관련하여, 애플리케이션 그룹 내의 애플리케이션들의 이전 실행들의 패턴들은 모니터링 및/또는 추적되는 그룹의 애플리케이션들의 이전 실행들에서의 패턴들의 적어도 양, 빈도 및/또는 최신성을 포함하거나, 이와 관련되거나, 또는 이에 기초할 수 있다. 모니터링 및/또는 추적된 패턴은 사용자 또는 기계에 의한 애플리케이션 사용의 임의의 유형의 패턴일 수 있다. 예를 들어, 그룹 내의 애플리케이션들에 대한 메모리 액세스 및 사용의 임의의 유형의 패턴이 모니터링 및/또는 추적될 수 있다. 그룹 내의 애플리케이션들의 이전 실행들의 패턴들은 사용자 또는 기계에 의한 애플리케이션 사용의 임의의 유형의 패턴의 적어도 양, 빈도 및/또는 최신성과 같은 메트릭들을 포함하거나, 이와 관련되거나, 또는 이에 기초할 수 있다. 예를 들어, 패턴들은 메모리로부터의 판독들, 메모리에 대한 기록들의 양, 빈도 및/또는 최신성, 물리적 메모리 공간에서의 어드레스 패턴들, 가상 공간에서의 어드레스 패턴들, 데이터의 로컬성(공간적으로 그리고/또는 시간적으로), 뱅크 충돌들, 또는 명령어당 CPU 사이클들과 같은 메트릭들에 기초할 수 있다. 패턴들은 또한 TLB 메트릭들 및 OS에 이용가능한 다른 메트릭들의 양, 빈도 및/또는 최신성과 같은 메트릭들에 기초할 수 있다.
그룹의 애플리케이션들의 루트 프로세스를 실행하는 것은 애플리케이션들에 대한 메모리에의 임의의 초기 기록들 및/또는 메모리로부터의 임의의 초기 판독들 전에 메모리에서 데이터를 이동시키는 것을 포함할 수 있다. 또한, 그룹 내의 애플리케이션들의 루트 프로세스를 실행하는 것은 애플리케이션들에 대한 메모리에의 임의의 초기 기록들 및/또는 메모리로부터의 임의의 초기 판독들 전에 메모리에서 데이터를 복사하는 것을 포함할 수 있다. 그리고, 이동 및/또는 복사된 데이터는 그룹 내의 애플리케이션들의 이전 실행들의 패턴들과 관련된 데이터를 포함할 수 있다. 일부 실시예들에서, 메모리에 대한 임의의 초기 기록들 전 메모리에서의 데이터의 이동 및/또는 복사는 공통 코드 및 판독 전용 데이터의 이동 또는 복사를 회피하는 것을 포함할 수 있다. 일부 실시예들에서, 방법(200)은 컴퓨팅 디바이스에서의 OS(또는 하이퍼바이저)가 OS( 또는 하이퍼바이저)에 대한 루트 프로세스를 포킹한 후에, 애플리케이션들의 루트 프로세스가 애플리케이션 그룹에 대한 애플리케이션 레벨 프로세스이도록, 그 애플리케이션들에 대한 루트 프로세스의 실행을 맞춤화하기 위해 그룹 내의 애플리케이션들에 대한 예측된 초기 기록들 및/또는 판독들을 실행하는 단계를 포함할 수 있다.
또한, 도면들에 도시되지는 않았지만, 방법(200)은 루트 프로세스의 실행의 적어도 일부 전에 플래시 메모리에 애플리케이션 그룹의 루트 프로세스에 대한 데이터를 저장하는 단계를 포함할 수 있다. 또한, 방법(200)은 루트 프로세스의 실행의 적어도 일부 전에 NVRAM에 애플리케이션 그룹의 루트 프로세스에 대한 데이터를 저장하는 단계를 포함할 수 있다(도면들에 도시되지 않음). NVRAM은 3D XPoint 메모리를 포함할 수 있다.
구체적으로, 도 3는 도 1에 도시된 모바일 디바이스(102)에 의해 또는 모바일 디바이스(102)와 유사하게 구성된 또 다른 유형의 컴퓨팅 디바이스에 의해 수행될 수 있는 방법(300)의 동작들을 나타낸다. 또한, 일부 실시예들에서, 방법(300)은 일반적으로 컴퓨팅 디바이스의 OS 또는 모바일 디바이스(102)와 같은 모바일 디바이스의 OS에 의해 적어도 부분적으로 수행될 수 있다. 방법(300)은 또한 하이퍼바이저 및/또는 하나 이상의 운영 체제에 의해 적어도 부분적으로 수행될 수 있다.
도시된 바와 같이, 방법(300)은 또한 도 2에 도시된 방법(200)으로 시작한다. 도 3에 도시된 바와 같이, 방법(300)은 각 애플리케이션에 대한 메모리 액세스를 결정하기 위해 애플리케이션들의 사용을 모니터링하는 단계(202)뿐만 아니라, 애플리케이션들의 사용과 관련된 데이터를 저장하는 단계(204)를 포함한다. 방법(300)은 또한 저장된 데이터에 따라 애플리케이션들을 애플리케이션 그룹들로 그룹화하는 단계(206)를 포함한다. 그리고, 방법(300)은 그룹 내의 각 애플리케이션에 공통된 사용에 따라 애플리케이션 그룹들 중 한 애플리케이션 그룹에 대한 루트 프로세스를 맞춤화 및 실행하는 단계(208)뿐만 아니라, 단계(210)에서 애플리케이션 그룹들의 각 그룹에 대해 단계(208)를 반복하는 것을 포함한다.
단계(302)에서, 방법(300)은 애플리케이션 그룹들 중의 애플리케이션 그룹들로부터의 애플리케이션들 중 적어도 하나를 시작하기 위한 요청을 사용자로부터 수신하는 것으로 계속된다. 이는 단계(208) 후에, 애플리케이션 그룹들에 대한 루트 프로세스의 맞춤화 및 실행에 후속하여 일어날 수 있다. 일부 실시예들에서, 단계(208)는 연속 프로세스로서 구현될 수 있고, 단계(302)는 단계들(208 내지 210) 동안 임의의 시간에 그리고 동시에 행해질 수 있다. 다른 실시예들에서, 방법(200)의 모든 단계들은 필요한 변경이 행해질 필요가 있을 때, 필요 시에, 동시에 실행되고 서로 링크되는 연속 프로세스들로서 구현될 수 있다. 예를 들어, 단계(202)에서 패턴들이 변경되는 것으로 결정된다면, 변경은 다음 단계(204) 등으로 전파된다.
단계(304)에서, 방법(300)은 요청을 수신 시 그리고 그룹의 루트 프로세스를 사용함으로써 애플리케이션 그룹으로부터의 애플리케이션들 중 적어도 하나를 시작하는 것으로 계속된다.
일부 실시예들에서, 방법(300)은 적어도 부분적으로컴퓨팅 디바이스에서의 OS에 의해, 애플리케이션들의 이전 실행들의 패턴들에 따라 백그라운드 프로세스로서 애플리케이션 그룹의 루트 프로세스를 실행하는 단계를 포함할 수 있다. 이러한 실시예들에서, 방법(300)은 또한 OS에 의해, 컴퓨팅 디바이스의 사용자로부터 그룹 내의 애플리케이션들 중 적어도 하나를 시작하기 위한 요청을 수신하는 단계를 포함할 수 있다. 그리고, 방법(300)은 OS에 의해, 애플리케이션(들)을 시작하기 위한 요청을 수신 시 그리고 애플리케이션 그룹의 루트 프로세스 또는 애플리케이션 그룹의 루트 프로세스의 포크형 프로세스를 사용함으로써 컴퓨팅 디바이스에서의 애플리케이션(들)을 시작하는 단계를 포함할 수 있다. 일부 실시예들에서, 포크형 프로세스의 코드 및 데이터는 애플리케이션, 또 다른 프로세스 또는 OS에 의한 코드 및 데이터의 초기 수정 때까지 복사되지 않는다. 일부 실시예들에서, 코드 및 데이터의 수정된 부분들만이 복사되지만, 수정된 부분들은 공통으로 유지되지 않는다. 일부 실시예들에서, 이러한 부분들은 메모리 페이지들, 캐시 라인들 또는 파일 시스템 섹터들 또는 컴퓨터 판독가능 저장 매체의 다른 요소들에 대한 기록들을 모니터링함으로써 식별될 수 있다.
일부 실시예들에서, 방법(300)은 단계(208)에서, 컴퓨팅 디바이스(예를 들어, 모바일 디바이스) 또는 다수의 컴퓨팅 디바이스들에서, 그룹 내의 애플리케이션들의 이전 실행들의 패턴들에 따라 초기 지점으로 애플리케이션 그룹의 루트 프로세스를 실행하는 단계를 포함할 수 있다. 방법(300)은 또한 단계(302)에서, 컴퓨팅 디바이스(들)에 의해, 컴퓨팅 디바이스(들)의 사용자로부터 그룹 내의 애플리케이션들 중 적어도 하나를 시작하기 위한 요청을 수신하는 단계를 포함할 수 있다. 방법(300)은 또한 단계(304)에서, 애플리케이션(들)을 시작하기 위한 요청을 수신 시 그리고 애플리케이션 그룹의 루트 프로세스를 사용함으로써 컴퓨팅 디바이스에서의 애플리케이션(들)을 시작하는 단계를 포함할 수 있다. 이러한 실시예들에서, 방법(300)의 단계들 중 각 단계 또는 적어도 일부는 컴퓨팅 디바이스(들)의 운영 체제, 컴퓨팅 디바이스(들)의 하나 이상의 운영 체제, 하이퍼바이저, 또는 이들의 임의의 조합에 의해 수행될 수 있다. 예를 들어, 실행, 수신, 또는 시작 단계들 중 적어도 하나는 컴퓨팅 디바이스(들)에서의 OS에 의해 수행될 수 있다. 일부 실시예들에서, 초기 지점으로 루트 프로세스를 실행하는 단계, 그 후 단계(302)에서 또 다른 디바이스로부터 애플리케이션들 중 적어도 하나를 시작하기 위한 요청을 수신할 시에 그것을 포킹하는 단계, 그 후 네트워크를 통해 또 다른 디바이스, 예를 들어, 모바일 디바이스로 포크형 프로세스를 전달하는 단계, 그 후 단계(304)에서 모바일 디바이스 상의 포크형 프로세스를 애플리케이션을 위한 시작 지점으로서 사용하는 단계는 하나의 디바이스 상에서, 예를 들어, 클라우드 컴퓨팅 환경에서 수행될 수 있다.
구체적으로, 도 4는 적어도 제어기 및 메모리(104)를 포함하는 모바일 디바이스(102)를 나타낸다. 도 4에 도시된 바와 같이, 모바일 디바이스(102)의 제어기 및 메모리(104)는 모바일 디바이스에서 실행되는 애플리케이션들에 대한 명령어들 및 데이터를 포함할 수 있다(예를 들어, 애플리케이션들(108a, 108b, 및 108c) 참조). 모바일 디바이스(102)의 제어기는 데이터에 기초하여 애플리케이션들에 대한 명령어들을 실행할 수 있다. 데이터는 이진 포맷 또는 프로그래밍 언어 해석기에 의해 해석하기에 적합한 포맷의 애플리케이션 명령어 코드를 포함할 수 있다. 데이터는 몇몇 데이터 구조들, 라이브러리들 등을 포함할 수 있다. 제어기는 또한 명령어들 및 데이터를 제어기의 레지스터들에 보유할 수 있다. 메모리는 그 메모리 셀들에 명령어들 및 데이터를 보유할 수 있다. 일부 실시예들에서, 모바일 디바이스(102)의 메모리의 메모리 셀들은 플래시 메모리 셀들 및/또는 NVRAM 셀들을 포함할 수 있다.
도 4에 도시된 모바일 디바이스(102)와 관련하여, 애플리케이션 그룹(예를 들어, 애플리케이션 그룹들(106a, 106b, 및 106c) 참조)에 대해, 모바일 디바이스(102)에 포함되고 이에서 실행 가능한 그룹 내의 애플리케이션들에 대한 명령어들 및 데이터는 애플리케이션 그룹의 루트 프로세스에 대한 루트 프로세스 데이터 및 명령어들을 포함할 수 있다. 모바일 디바이스(102)에 포함된 각 애플리케이션 그룹의 각 루트 프로세스(예를 들어, 애플리케이션 그룹(106a)의 루트 프로세스(110), 애플리케이션 그룹(106b)의 루트 프로세스(112), 및 애플리케이션 그룹(106c)의 루트 프로세스(114))는 제어기 및 메모리(104)에 의해 구현될 수 있다. 제어기는 루트 프로세스에 대한 명령어들 및 데이터에 따라 그룹의 루트 프로세스의 명령어들을 실행하도록 구성될 수 있고, 메모리는 제어기에 의한 루트 프로세스의 실행을 위해 명령어들 및 데이터를 보유 또는 저장하도록 구성될 수 있다. 그리고, 모바일 디바이스(102)에 포함된 애플리케이션 그룹의 다른 프로세스들(예를 들어, 애플리케이션들(108a, 108b 및 108c) - 여기서 각 애플리케이션이 다른 프로세스들을 가짐 - 참조)은 또한 제어기 및 메모리(104)에 의해 구현될 수 있다. 제어기는 다른 프로세스들에 대한 명령어들 및 데이터에 따라 그룹의 다른 프로세스들의 명령어들을 실행하도록 구성될 수 있고, 메모리는 제어기에 의한 다른 프로세스들의 실행을 위해 명령어들 및 데이터를 보유 또는 저장하도록 구성될 수 있다.
도 1 및 도 4에서, 루트 프로세스는 애플리케이션 그룹에 대응하는 것으로 도시되어 있다(예를 들어, 루트 프로세스(110) 및 대응하는 애플리케이션 그룹(106a) 참조). 애플리케이션 그룹에서, 하나의 루트 프로세스는 그룹 내의 두 개 이상의 애플리케이션들에 의해 사용될 수 있는 다수의 프로세스들로 포킹될 수 있는 것으로 이해될 것이다. 또한, 단일 애플리케이션은 다수의 상이한 포크형 프로세스들을 사용할 수 있다. 예를 들어, 애플리케이션(108a)은 포크형 프로세스들(402, 404, 및 406)을 사용할 수 있다. 또한, 언급된 바와 같이, 다수의 애플리케이션들은 다수의 상이한 포크형 프로세스들을 사용할 수 있다. 예를 들어, 애플리케이션들(108a, 108b, 및 108c)은 포크형 프로세스들(402, 404, 및 406)을 사용할 수 있다. 이러한 실시예들은 포킹을 병합함으로써 구현될 수 있다. 다른 실시예들에서, 하나의 애플리케이션이 다수의 그룹들에 속할 수 있다. 예를 들어, 도 4를 참조하면, 애플리케이션(116c)은 애플리케이션 1의 그룹 및 애플리케이션 2의 그룹에 속할 수 있다. 이 경우에, 포킹을 병합하는 것은 다수의 그룹들에 걸쳐 일어날 수 있다.
일부 실시예들에서, 포크형 루트 프로세스의 초기 실행은 라이브러리들을 프리 로딩하는 것, 요구되는 라이브러리들 및 초기 데이터 구조들 중에서 포크형 프로세스를 구성하는 것, 그리고 추후 재사용을 위해 포크형 프로세스를 저장하는 것으로 제한될 수 있다. 또한, 언제든지, 포크형 프로세스의 실행은 프로세스를 재실행하는 데 시간을 소모하는 것을 회피하기 위해 재사용될 수 있도록, 어떤 상태에서 메모리에 저장될 수 있다.
또한, 도 4에 도시된 모바일 디바이스(102)에서, 복수의 애플리케이션들(예를 들어, 애플리케이션들(108a, 108b 및 108c) 참조)의 사용은 복수의 애플리케이션들 각각에 대한 메모리 액세스를 결정하기 위해 모니터링될 수 있다. 복수의 애플리케이션들의 사용과 관련된 데이터(예를 들어, 애플리케이션 사용 데이터(116a, 116b, 및 116c) 참조)는 모바일 디바이스에, 이를테면 모바일 디바이스의 메모리에 또는 네트워크를 통해 클라우드 공간에 저장될 수 있다(예를 들어, 제어기 및 메모리(104) 참조). 복수의 애플리케이션들은 또한 복수의 애플리케이션들의 사용과 관련된 데이터(예를 들어, 애플리케이션 사용 데이터(116a, 116b, 116c) 참조)에 따라 그룹들(예를 들어, 애플리케이션 그룹들(106a, 106b 및 106c) 참조)로 그룹화될 수 있다. 도시된 바와 같이, 애플리케이션 그룹의 논리적 연결들은 애플리케이션 사용 데이터를 그룹의 루트 프로세스뿐만 아니라 그룹에 속하는 대응하는 애플리케이션들과 논리적으로 연관시키거나 연결할 수 있다(예를 들어, 논리적 연결들(118) 참조). 애플리케이션 그룹의 루트 프로세스(예를 들어, 루트 프로세스들(110, 112, 및 114) 참조)는 또한, 그룹 내의 각 애플리케이션에 공통된 사용 데이터(예를 들어, 애플리케이션들(108a, 108b, 및 108c)을 링크시키는 공통 데이터를 포함할 수 있는 애플리케이션 사용 데이터(116a, 116b, 및 116c) 참조)에 따라 맞춤화 및 실행될 수 있다. 그룹 내의 애플리케이션들의 사용 데이터 간의 공통성은 논리적 연결들(예를 들어, 논리적 연결들(118) 참조)을 통해 결정될 수 있다.
추가적으로, 도 4에 도시된 바와 같이, 제어기 및 메모리(104)는 모바일 디바이스(102)에 저장되고 이에서 실행 가능한 애플리케이션 그룹의 각 루트 프로세스로부터 다수의 포크형 프로세스들(예를 들어, 포크형 프로세스들(402, 404, 및 406) 참조)에 대한 데이터 및 명령어들을 포함할 수 있다. 도 4에 도시된 바와 같이, 적어도 포크형 프로세스들(402, 404, 및 406)이 애플리케이션 그룹(106a)의 루트 프로세스(110)로부터 포킹될 수 있지만, 루트 프로세스(110)로부터 포킹되는 더 많은 프로세스들이 있을 수 있다.
일부 실시예들에서, 모바일 디바이스(102)의 운영 체제, 또는 모바일 디바이스 내의 또는 모바일 디바이스와 연관된 하이퍼바이저는 애플리케이션 그룹의 루트 프로세스(예를 들어, 애플리케이션 그룹(106a)의 루트 프로세스(110) 참조)를 다수의 프로세스들(예를 들어, 포크형 프로세스들(402, 404, 및 406) 참조)로 포킹하도록 구성된다. 이러한 실시예들에서, 운영 체제, 또는 하이퍼바이저는 하나 이상의 애플리케이션을 시작하기 위한 요청을 수신 시 그리고 애플리케이션(들)을 시작하기 위한 요청에 따라 다수의 포크형 프로세스들(예를 들어, 포크형 프로세스들(402, 404, 및 406) 참조) 중 적어도 하나 및/또는 애플리케이션 그룹의 각 루트 프로세스(예를 들어, 루트 프로세서(110) 참조)를 사용함으로써 모바일 디바이스(102)에서 하나 이상의 애플리케이션을 시작하도록 구성될 수 있다. 일부 실시예들에서, 각 포크형 프로세스는 시작될 것이 요청된 애플리케이션들 중 하나에 대한 것일 수 있다. 예를 들어, 루트 프로세스로부터 네 개의 프로세스들이 포킹되는 경우, 네 개의 포킹된 프로세스들은 모바일 디바이스의 사용자에 의해 시작될 것이 요청되었던 그룹 내의 네 개의 상이한 애플리케이션들에 대한 것일 수 있다.
포크형 다중 프로세스들의 적어도 일부 또는 각각은 애플리케이션 그룹의 부모 루트 프로세스와 상이할 수 있다. 차이는 실행될 컴퓨팅 디바이스에서의 상이한 애플리케이션들 및 상이한 애플리케이션 부분들에 기초할 수 있다. 그리고, 포크형 다수의 프로세스의 적어도 일부 또는 각각은 시작될 것이 요청된 애플리케이션의 실행의 적어도 일부 지점에서 애플리케이션의 그룹의 부모 루트 프로세스와 동일할 수 있다.
구체적으로, 도 5는 도 4에 도시된 모바일 디바이스(102)에 의해 또는 모바일 디바이스(102)와 유사하게 구성된 또 다른 유형의 컴퓨팅 디바이스에 의해 수행될 수 있는 방법(500)의 동작들을 나타낸다. 또한, 일부 실시예들에서, 방법(500)은 일반적으로 컴퓨팅 디바이스의 OS 또는 모바일 디바이스(102)와 같은 모바일 디바이스의 OS에 의해 적어도 부분적으로 수행될 수 있다. 방법(500)은 또한 하이퍼바이저 및/또는 하나 이상의 운영 체제에 의해 적어도 부분적으로 수행될 수 있다.
도시된 바와 같이, 방법(500)은 또한 도 2에 도시된 방법(200)으로 시작한다. 도 5에 도시된 바와 같이, 방법(500)은 각 애플리케이션에 대한 메모리 액세스를 결정하기 위해 애플리케이션들의 사용을 모니터링하는 단계(202)뿐만 아니라, 애플리케이션들의 사용과 관련된 데이터를 저장하는 단계(204)를 포함한다. 방법(500)은 또한 저장된 데이터에 따라 애플리케이션들을 애플리케이션 그룹들로 그룹화하는 단계(206)를 포함한다. 그리고, 방법(500)은 그룹 내의 각 애플리케이션에 공통된 사용에 따라 애플리케이션 그룹들 중 한 그룹에 대한 루트 프로세스를 맞춤화 및 실행하는 단계(208)뿐만 아니라, 단계(210)에서 애플리케이션 그룹들의 각 그룹에 대해 단계(208)를 반복하는 것을 포함한다.
단계(502)에서, 방법(500)은 애플리케이션 그룹들 중의 애플리케이션 그룹들로부터의 애플리케이션들 중 적어도 하나를 시작하기 위한 요청을 사용자로부터 수신하는 단계로 계속된다. 이는 사용자의 모바일 디바이스와 같은 사용자의 디바이스에서 일어날 수 있다. 단계(502)는 애플리케이션 그룹의 루트 프로세스의 맞춤화 및 실행 후에 일어날 수 있다.
단계(504)에서, 방법(500)은 애플리케이션 그룹의 루트 프로세스를 다수의 프로세스들로 포킹하는 것으로 계속된다. 초기에, 포크형 다중 프로세스들은 구현에 따라 루트 프로세스와 상이하거나 동일할 수 있다.
단계(506)에서, 방법(500)은 요청을 수신 시 그리고 요청에 따라 포크형 다중 프로세스들 중 적어도 하나를 사용함으로써 애플리케이션 그룹으로부터의 애플리케이션들 중 적어도 하나를 시작하는 것으로 계속된다.
이러한 실시예들에서, 방법(500)의 단계들 중 각 단계 또는 적어도 일부는 컴퓨팅 디바이스(들)의 운영 체제, 컴퓨팅 디바이스(들)의 하나 이상의 운영 체제, 하이퍼바이저, 또는 이들의 임의의 조합에 의해 수행될 수 있다. 예를 들어, 실행, 수신, 또는 시작 단계들 중 적어도 하나는 컴퓨팅 디바이스(들)에서의 OS에 의해 수행될 수 있다. 일부 실시예들에서, 방법(500)은 단계(504)에서, 애플리케이션 그룹의 루트 프로세스를 다수의 동일한 프로세스들로 포킹하는 단계, 및 단계(506)에서, 애플리케이션(들)을 시작하기 위한 요청을 수신 시 그리고 애플리케이션(들)을 시작하기 위한 요청에 따라 다수의 동일한 프로세스들 중 적어도 하나를 사용함으로써 모바일 디바이스에서의 애플리케이션(들)을 시작하는 단계를 포함할 수 있다.
방법(500)과 관련하여, 포크형 다중 프로세스들의 적어도 일부 또는 각각은 애플리케이션 그룹의 부모 루트 프로세스와 상이할 수 있다. 차이는 실행될 컴퓨팅 디바이스에서의 상이한 애플리케이션들 및 상이한 애플리케이션 부분들에 기초할 수 있다. 그리고, 포크형 다수의 프로세스의 적어도 일부 또는 각각은 그룹 내의 애플리케이션의 실행의 적어도 일부 지점에서 애플리케이션의 부모 루트 프로세스와 동일할 수 있다.
방법들(300 및 500)을 구현할 수 있는 실시예들과 같은 일부 실시예들에서, 그룹 내의 애플리케이션들의 이전 실행들의 패턴들은 특정 사용자 및 다른 사용자들에 의한 특정 컴퓨팅 디바이스(예를 들어, 특정 모바일 디바이스) 상의 애플리케이션들의 사용으로부터 비롯되어, 루트 프로세스는 임의의 사용자에 의해 특정 컴퓨팅 디바이스 상에서의 애플리케이션 그룹의 사용을 위해 맞춤화된다.
방법들(300 및 500)을 구현할 수 있는 일부 다른 실시예들과 같은 일부 다른 실시예들에서, 그룹 내의 애플리케이션들의 이전 실행들의 패턴들은 특정 사용자에 의한 특정 컴퓨팅 디바이스(예를 들어, 특정 모바일 디바이스) 상의 애플리케이션들의 사용으로부터 비롯되어, 애플리케이션 그룹의 루트 프로세스는 특정 사용자에 의해 특정 컴퓨팅 디바이스 상에서의 애플리케이션 그룹의 사용을 위해 맞춤화된다.
방법들(300 및 500)을 구현할 수 있는 일부 다른 실시예들과 같은 일부 다른 실시예들에서, 그룹 내의 애플리케이션들의 이전 실행들의 특정 사용자에 의한 패턴들은 특정 컴퓨팅 디바이스(예를 들어, 특정 모바일 디바이스) 상의 그리고 적어도 하나의 다른 컴퓨팅 디바이스 상의 애플리케이션들의 사용으로부터 비롯되어, 루트 프로세스는 특정 사용자에 의한 특정 컴퓨팅 디바이스 상의 그리고 적어도 하나의 다른 컴퓨팅 디바이스 상에서의 애플리케이션 그룹의 사용을 위해 맞춤화된다.
구체적으로, 도 6는 도 1 및 4에 도시된 모바일 디바이스(102)에 의해 또는 모바일 디바이스(102)와 유사하게 구성된 또 다른 유형의 컴퓨팅 디바이스에 의해 수행될 수 있는 방법(600)의 동작들을 나타낸다. 또한, 일부 실시예들에서, 방법(600)은 일반적으로 컴퓨팅 디바이스의 운영 체제 또는 모바일 디바이스의 운영 체제에 의해 수행될 수 있다. 방법(600)은 또한 하이퍼바이저 및/또는 하나 이상의 운영 체제에 의해 적어도 부분적으로 수행될 수 있다.
도 6에 도시된 바와 같이, 방법(600)은 도 3에 도시된 방법(300) 또는 도 5에 도시된 방법(500) 중 어느 하나로 시작한다. 그 후, 방법(600)은 단계(602)에서, 애플리케이션 그룹들 중의 한 애플리케이션 그룹으로부터의 애플리케이션들 중 적어도 하나를 종료하기 위한 요청을 수신하는 것으로 계속된다. 이는 방법(300) 또는 방법(500)이 적어도 부분적으로 일어난 후에 일어날 수 있다.
단계(604)에서, 방법(600)은 그룹으로부터의 애플리케이션들 중 적어도 하나를 종료하기 위한 요청을 수신 시, 애플리케이션 그룹으로부터의 애플리케이션들 중 적어도 하나를 적어도 부분적으로 종료하는 것으로 계속된다. 일부 실시예들에서, 애플리케이션의 종료 동안, 애플리케이션의 루트 프로세스는 애플리케이션의 특정 모듈들(예를 들어, GUI, 또는 라이브러리들 등)을 제거함으로써 추출될 수 있다. 루트 프로세스는 애플리케이션의 축약된 맞춤화 버전이 될 수 있으며, 이는 그 후 애플리케이션에 재사용될 수 있거나, 또는 그룹 내의 다른 애플리케이션들에 의해 사용될 수 있거나, 또는 종료된 애플리케이션 후에 애플리케이션들의 많은 루트 프로세스들을 취함으로써 그룹에 대한 메인 루트 프로세스를 생성할 때 사용될 수 있다. 이 다음에는 그룹의 애플리케이션들을 분석하고 그룹에 대한 메인 루트 프로세스를 구성하는 것이 뒤따를 수 있다. 결과로서, 디바이스 또는 시스템은 실제 애플리케이션 실행에 기초하여 맞춤화된 루트 프로세스들의 고도로 조정 가능한 시스템을 생성할 수 있다.
단계(606)에서, 방법(600)은 그룹으로부터의 적어도 하나의 애플리케이션을 종료하기 위한 요청을 수신 시, 애플리케이션 그룹의 각 루트 프로세스를 적어도 부분적으로 종료하는 것으로 계속된다.
도 6에 도시된 바와 같이, 단계(606)가 완료될 때, 단계(608)에서, 방법(600)은 - 적어도 하나의 애플리케이션 및 각 루트 프로세스를 적어도 부분적으로 종료한 후 - 미리 결정된 조건에 따라 각 루트 프로세스를 적어도 부분적으로 재실행하는 것으로 계속될 수 있다. 단계(608)에서, 그룹의 각 루트 프로세스를 적어도 부분적으로 재실행하는 것은 그룹 내의 애플리케이션들의 이전 실행들의 패턴들에 기초하여 일어날 수 있다. 또한, 단계(608)에서, 루트 프로세스를 적어도 부분적으로 재실행하는 것은 그룹의 애플리케이션들의 이전 실행들의 패턴들에 의해 업데이트될 수 있다.
도 6에 도시된 바와 같이, 단계(606)가 완료되지 않을 때, 단계(610)에서, 방법(600)은 적어도 하나의 애플리케이션을 종료하기 위한 요청을 수신 시 애플리케이션 그룹의 루트 프로세스를 계속해서 실행하면서 앞으로 이동할 수 있다. 다시 말해서, 방법(600)은 단계(602)에서 모바일 디바이스의 사용자로부터 적어도 하나의 애플리케이션을 종료하기 위한 요청을 수신하는 단계를 포함할 수 있고, 그 후 단계(604)에서, 이는 애플리케이션을 종료하기 위한 요청을 수신 시 적어도 하나의 애플리케이션을 적어도 부분적으로 종료하는 단계를 포함할 수 있으며, 그 후 단계(610)에서, 이는 애플리케이션(들)을 종료하기 위한 요청의 수신 시 그리고 단계(604)와 단계(610) 사이에서 그룹의 루트 프로세스를 중단하지 않고 애플리케이션 그룹의 루트 프로세스를 계속해서 실행하는 단계를 포함할 수 있다. 이의 결과로서, 사용자가 적어도 부분적으로 종료된 애플리케이션 또는 이 루트 프로세스가 사용될 수 있는 다른 애플리케이션을 재시작하기로 결정한다면 애플리케이션의 루트 프로세스가 다시 재사용될 수 있다.
방법(200), 방법(300), 방법(500), 방법(600), 또는 본원에서 설명된 임의의 다른 방법, 프로세스 또는 동작과 관련하여, 일부 실시예들에서, 비일시적 컴퓨터 판독가능 저장 매체는 적어도 하나의 프로세싱 디바이스(예를 들어, 도 7에 도시된 제어기(706))에 의해 실행될 때, 적어도 하나의 프로세싱 디바이스로 하여금, 방법(200), 방법(300), 방법(500), 방법(600), 또는 본원에서 설명된 임의의 다른 방법, 프로세스 또는 동작을 수행하게 하는 명령어들을 저장한다.
예를 들어, 일부 실시예들은 컴퓨팅 디바이스와 연관된 프로세서에 의해 실행될 때, 도 2에 도시된 방법(200)과 같은 방법을 수행하는 컴퓨터 실행가능 명령어들로 유형적으로 인코딩된 비일시적 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 또한, 예를 들어, 일부 실시예들은 컴퓨팅 디바이스와 연관된 프로세서에 의해 실행될 때, 도 3에 도시된 방법(300), 도 5에 도시된 방법(500), 및 도 6에 도시된 방법(600)과 같은 방법을 수행하는 컴퓨터 실행가능 명령어들로 유형적으로 인코딩된 비일시적 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
일부 실시예들에서, (예를 들어, 도 2에 도시된) 단계(202)는 모바일 디바이스에서, 복수의 애플리케이션들 각각에 대한 메모리 액세스를 결정하기 위해 복수의 애플리케이션들의 사용을 모니터링하는 단계를 포함할 수 있다. 단계(204)는 복수의 애플리케이션들의 사용과 관련된 데이터를 저장하는 단계를 포함할 수 있다. 단계(206)는 복수의 애플리케이션들의 사용과 관련된 데이터에 따라 복수의 애플리케이션들을 그룹들로 그룹화하는 단계를 포함할 수 있다. 단계(208)는 그룹 내의 각 애플리케이션에 공통인 사용에 따라 애플리케이션 그룹들 중 한 그룹에 대한 루트 프로세스를 맞춤화 및 실행하는 단계를 포함할 수 있다.
일부 실시예들에서, 모니터링, 저장, 그룹화, 또는 실행 중 적어도 하나는 모바일 디바이스에서의 OS에 의해 수행된다. 그리고, 일부 실시예들에서, 메모리 액세스를 결정하는 단계는 메모리로부터의 판독들 및 메모리에의 기록들의 빈도 또는 최신성을 측정하는 단계를 포함할 수 있다.
일부 실시예들에서, 단계(202)에서, 복수의 애플리케이션들의 사용의 모니터링은 루트 프로세스가 사용자에 의한 모바일 디바이스 상에서의 애플리케이션들의 사용을 위해 맞춤화되도록 사용자에 의한 복수의 애플리케이션들의 사용에 대한 것이다.
일부 실시예들에서, 단계(204)는 복수의 애플리케이션들의 사용과 관련된 데이터를 데이터베이스에 저장하는 단계를 포함할 수 있다. 그리고, 일부 실시예들에서, 단계(208)는 그룹 내의 애플리케이션들에 공통된 지점으로 그룹의 루트 프로세스를 실행하는 단계를 포함할 수 있다.
일부 실시예들에서, 단계(208)는 그룹 내의 각 애플리케이션에 공통인 데이터베이스 내의 데이터에 기초하여 그룹 내의 애플리케이션들 사이에서 공유되는 이전 실행들의 패턴들을 생성하는 단계를 포함할 수 있다. 그리고, 단계(208)는 그룹 내의 애플리케이션들 사이에서 공유되는 이전 실행들의 패턴들에 따라 그룹의 루트 프로세스를 실행하는 단계를 포함할 수 있다.
일부 실시예들에서, 단계(202)에서 복수의 애플리케이션들의 사용의 모니터링은 루트 프로세스가 임의의 사용자에 의한 모바일 디바이스 상에서의 애플리케이션의 사용을 위해 맞춤화되도록 모바일 디바이스의 임의의 사용자에 의한 복수의 애플리케이션들의 사용에 대한 것이다. 일부 실시예들에서, 단계(208)에서 그룹에 대한 루트 프로세스를 실행하는 단계는 그룹에 대한 메모리에의 임의의 초기 기록 전에 메모리 내의 데이터를 복사하는 단계를 포함할 수 있고, 메모리에의 임의의 초기 기록 전 메모리 내의 데이터의 복사는 공통 코드 및 판독 전용 데이터의 복사를 회피하는 것을 포함할 수 있다.
일부 실시예들은 단계(202)에서, 모바일 디바이스에서의 OS에 의해, 복수의 애플리케이션들 각각에 대한 메모리로부터의 판독 및 메모리에의 기록의 빈도 또는 최신성을 결정하기 위해 복수의 애플리케이션들의 사용을 모니터링하는 단계를 포함할 수 있다. 이러한 실시예들은 단계(204)에서, OS에 의해, 복수의 애플리케이션들의 사용과 관련된 데이터를 데이터베이스에 저장하는 단계를 포함할 수 있다. 그리고, 이러한 실시예들은 단계(206)에서, OS에 의해, 데이터베이스의 질의들에 따라 복수의 애플리케이션들을 그룹들로 그룹화하는 단계뿐만 아니라, 단계(208)에서, 적어도 부분적으로 OS에 의해, 그룹 내의 각 애플리케이션에 공통인 데이터베이스 내의 데이터에 따라 그룹들 중 한 그룹에 대한 루트 프로세스를 백그라운드 프로세스로서 실행하는 단계를 포함할 수 있다.
일부 실시예들에서, (도 3에 도시된) 방법(302)은 컴퓨팅 디바이스의 사용자로부터 그룹으로부터의 애플리케이션들 중 적어도 하나를 시작하기 위한 요청을 수신하는 단계를 포함할 수 있다. 단계(304)는 요청을 수신 시 루트 프로세스를 사용함으로써 모바일 디바이스에서의 그룹으로부터의 애플리케이션들 중 적어도 하나를 시작하는 단계를 포함할 수 있다.
일부 실시예들에서, (도 5에 도시된) 단계(504)는 모바일 디바이스에서의 OS에 의해, 루트 프로세스를 다수의 프로세스들로 포킹하는 단계를 포함할 수 있다. 단계(506)는 OS에 의해, 요청을 수신 시 요청에 따라 다수의 프로세스들 중 적어도 하나를 사용함으로써 그룹으로부터의 애플리케이션들 중 적어도 하나를 시작하는 단계를 포함할 수 있다.
일부 실시예들에서, (도 6에 도시된) 단계(602)는 모바일 디바이스의 사용자로부터, 그룹으로부터의 애플리케이션들 중 적어도 하나를 종료하기 위한 요청을 수신하는 단계를 포함할 수 있다. 단계(604)는 그룹으로부터의 애플리케이션들 중 적어도 하나를 적어도 부분적으로 종료하는 단계를 포함할 수 있고, 단계(606)는 그룹으로부터의 애플리케이션들 중 적어도 하나를 종료하기 위한 요청을 수신 시 루트 프로세스를 적어도 부분적으로 종료하는 단계를 포함할 수 있다. 단계(608)는 루트 프로세스 및 그룹으로부터의 애플리케이션들 중 적어도 하나를 적어도 부분적으로 종료한 후에, 미리 결정된 조건에 따라 루트 프로세스를 적어도 부분적으로 재실행하는 단계를 포함할 수 있다. 루트 프로세스를 적어도 부분적으로 재실행하는 단계는 그룹 내의 애플리케이션들 사이에서 공유되는 이전 실행들의 패턴들에 기초하거나 이에 의해 업데이트될 수 있다. 단계(610)는 그룹으로부터의 애플리케이션들 중 적어도 하나를 종료하기 위한 요청을 수신 시 루트 프로세스를 계속해서 실행하는 단계를 포함할 수 있다.
일부 실시예들에서, 방법들은 루트 프로세스에 대한 데이터를 플래시 메모리에 저장하는 단계를 포함할 수 있다. 일부 실시예들에서, 방법들은 루트 프로세스에 대한 데이터를 NVRAM에 저장하는 단계를 포함할 수 있다. NVRAM은 3D XPoint 메모리를 포함할 수 있다.
일부 실시예들에서, 컴퓨팅 디바이스와 연관된 프로세서에 의해 실행될 때, 모바일 디바이스에서, 복수의 애플리케이션들 각각에 대한 메모리로부터의 판독들 및 메모리에의 기록들의 빈도 또는 최신성을 결정하기 위해 복수의 애플리케이션들의 사용을 모니터링하는 단계를 포함할 수 있는 방법을 수행하는 컴퓨터 실행가능 명령어들로 유형적으로 인코딩된 비일시적 컴퓨터 판독가능 저장 매체가 제공된다. 본 방법은 복수의 애플리케이션들의 사용과 관련된 데이터를 저장하는 단계를 포함할 수 있다. 본 방법은 사용과 관련된 데이터의 질의들에 따라 복수의 애플리케이션들을 그룹들로 그룹화하는 단계를 포함할 수 있다. 본 방법은 그룹 내의 각 애플리케이션에 공통인 저장된 데이터에 따라 그룹들 중 한 그룹에 대한 루트 프로세스를 실행하는 단계를 포함할 수 있다. 이러한 실시예들에서, 본 방법은 일부 실시예들에서, 단계(208)는 그룹 내의 각 애플리케이션에 공통된 저장된 데이터에 기초하여 그룹 내의 애플리케이션들 사이에서 공유되는 이전 실행들의 패턴들을 생성하는 단계를 포함할 수 있다. 그리고, 본 방법은 그룹 내의 애플리케이션들 사이에서 공유되는 이전 실행들의 패턴들에 따라 루트 프로세스를 실행하는 단계를 포함할 수 있다. 또한, 이러한 실시예들에서, 방법)은 모바일 디바이스의 사용자로부터 그룹 내의 애플리케이션들 중 적어도 하나를 시작하기 위한 요청을 수신하는 단계를 포함할 수 있다. 본 방법은 또한 요청을 수신 시 루트 프로세스를 사용함으로써 모바일 디바이스에서의 그룹으로부터의 애플리케이션들 중 적어도 하나를 시작하는 단계를 포함할 수 있다. 본 방법은 또한 루트 프로세스를 다수의 프로세스들로 포킹하는 단계를 포함할 수 있고, 본 방법은 요청을 수신 시 요청에 따라 다수의 프로세스들 중 적어도 하나를 사용함으로써 그룹으로부터의 애플리케이션들 중 적어도 하나를 시작하는 단계를 포함할 수 있다.
도 7은 본 개시의 일부 실시예들에 따른, 다수의 애플리케이션 그룹들에 대한 맞춤형 루트 프로세스들을 구현할 수 있는 예시적인 컴퓨팅 디바이스를 나타낸다. 디바이스(700)는 모바일 디바이스(102) 또는 스마트폰, 태블릿 컴퓨터, IoT 디바이스, 스마트 텔레비전, 스마트 워치, 안경 또는 다른 스마트 가전 제품, 차량내 정보 시스템, 웨어러블 스마트 디바이스, 게임 콘솔, PC, 디지털 카메라, 또는 이들의 임의의 조합과 같은 모바일 디바이스이거나 또는 모바일 디바이스와 다소 유사한 임의의 다른 유형의 컴퓨팅 디바이스일 수 있거나 또는 그 일부이거나 또는 이를 포함할 수 있다. 도시된 바와 같이, 디바이스(700)는 적어도 광역 네트워크(WAN), 로컬 영역 네트워크(LAN), 인트라넷, 4G 또는 5G와 같은 모바일 무선 네트워크, 엑스트라넷, 인터넷, 및/또는 이들의 임의의 조합을 포함하는 통신 네트워크(들)(714)에 연결될 수 있다.
본원에서 설명된 컴퓨팅 또는 모바일 디바이스들(이를테면, 모바일 디바이스(102) 또는 컴퓨팅 디바이스(700))은 개인용 컴퓨터(PC), 태블릿 PC, 셋탑 박스(STB), 개인용 정보 단말기(PDA), 휴대 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 취해질 동작들을 특정하는 명령어 세트(순차적 또는 다른 방식)를 실행할 수 있는 임의의 기계일 수 있거나 이것들로 대체될 수 있다.
또한, 도 7에 도시된 디바이스(700)뿐만 아니라 도 1 및 4에 도시된 모바일 디바이스(102)에 대해 단일 기계가 도시되었지만, "기계"라는 용어는 또한 본 명세서에서 논의된 방법론들 또는 동작들 중 임의의 하나 이상을 수행하기 위한 명령어 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 임의의 기계군을 포함하는 것으로 취해져야 한다. 그리고, 도시된 컴퓨팅 또는 모바일 디바이스들 각각은 적어도 버스 및/또는 마더보드, 하나 이상의 제어기(이를테면, 하나 이상의 CPU), 임시 데이터 저장소를 포함할 수 있는 메인 메모리, 적어도 하나의 유형의 네트워크 인터페이스, 영구 데이터 저장소를 포함할 수 있는 저장 시스템, 및/또는 이들의 임의의 조합을 각각 포함할 수 있다. 일부 멀티 디바이스 실시예들에서, 하나의 디바이스는 본원에서 설명된 방법들의 일부 부분들을 완료할 수 있고, 그 후 또 다른 디바이스가 본원에서 설명된 방법들의 다른 단계들을 계속할 수 있도록 네트워크를 통해 또 다른 디바이스에 완료의 결과를 송신할 수 있다.
도 7은 또한, 본 개시의 일부 실시예들에 따른, 예시적인 컴퓨팅 디바이스(700)의 예시적인 부분들을 나타낸다. 디바이스(700)는 도시된 바와 같이 네트워크(들)(714)에 통신 가능하게 결합될 수 있다. 디바이스(700)는 적어도 버스(704), 제어기(706)(이를테면, CPU), 메모리(708), 네트워크 인터페이스(710), 데이터 저장 시스템(712), 및 기타 컴포넌트들(716)(GPS 컴포넌트들, I/O 컴포넌트들, 및 센서들과 같은 모바일 또는 컴퓨팅 디바이스들에서 발견되는 임의의 유형의 컴포넌트들일 수 있음)을 포함한다. 다른 컴포넌트들(716)은 하나 이상의 디스플레이, 상이한 유형들의 센서, 오디오 및/또는 시각적 입력/출력 디바이스, 추가적인 애플리케이션 특정 메모리, 하나 이상의 추가적인 제어기(예를 들어, GPU), 또는 이들의 임의의 조합을 포함할 수 있다. 버스(704)는 제어기(706), 메모리(708), 네트워크 인터페이스(710), 데이터 저장 시스템(712) 및 기타 컴포넌트들(716)을 통신 가능하게 결합시킨다. 디바이스(700)는 적어도, 버스(704)(이는 다수의 버스들을 포함할 수 있음)를 통해 서로 통신하는 제어기(706), 메모리(708)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM) 이를테면 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM), 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(712)을 포함하는 컴퓨터 시스템을 포함한다.
달리 말하면, 도 7은 본 개시의 실시예들이 동작할 수 있는 컴퓨터 시스템을 예시적인 디바이스(700)의 블록도이다. 일부 실시예들에서, 컴퓨터 시스템은 실행될 때, 기계로 하여금 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어 세트를 포함할 수 있다. 이러한 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷(예를 들어, 네트워크(들)(714))으로 다른 기계들에 연결(예를 들어, 인터페이스(710)를 통해 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서의 서버 또는 클라이언트 기계로서, 피어-투-피어(또는 분산) 네트워크 환경(이를테면 본원에서 설명된 피어-투-피어 네트워크들)에서의 피어 기계로서, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서의 서버 또는 클라이언트 기계로서 동작할 수 있다.
제어기(706)는 하나 이상의 범용 처리 디바이스 이를테면 마이크로 프로세서, 중앙 처리 장치 등을 나타낸다. 보다 구체적으로, 처리 디바이스는 복합 명령어 세트 컴퓨팅(CISC) 마이크로 프로세서, 축소 명령어 세트 컴퓨팅(RISC) 마이크로 프로세서, 훨씬 긴 명령어(VLIW) 마이크로 프로세서, 단일 명령어 다중 데이터(SIMD), 다중 명령어 다중 데이터(MIMD), 또는 다른 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 제어기(706)는 또한 용도 특정 집적 회로(ASIC), 현장 프로그래밍 가능한 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 디바이스일 수 있다. 제어기(706)는 본 명세서에서 논의된 동작들 및 단계들을 수행하기 위한 명령어들(926)을 실행하도록 구성된다. 제어기(706)는 (네트워크(들)(714)와 같은) 하나 이상의 통신 네트워크를 통해 통신하기 위해 네트워크 인터페이스(710)와 같은 네트워크 인터페이스 디바이스를 더 포함할 수 있다.
데이터 저장 시스템(712)은 본 명세서에서 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 명령어 세트 또는 소프트웨어가 저장되는 기계 판독가능 저장 매체(또한 컴퓨터 판독가능 매체라고도 알려져 있음)를 포함할 수 있다. 명령어들은 또한 기계 판독가능 저장 매체를 구성하는 컴퓨터 시스템, 메모리(708) 및 제어기(706)에 의한 이들의 실행 동안 메모리(708) 내에 그리고/또는 제어기(706) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 메모리(708)는 디바이스(700)의 메인 메모리이거나 이를 포함할 수 있다.
메모리, 제어기, 및 데이터 저장 부분들이 예시적인 실시예에서 각각 단일 부분인 것으로서 도시되어 있지만, 각 부분은 명령어들을 저장하고 이들의 각 동작들을 수행할 수 있는 단일 부분 또는 다수의 부분들을 포함하는 것으로 간주되어야 한다. 또한, "기계 판독가능 매체"라는 용어는 기계에 의한 실행을 위한 명령어 세트를 저장하거나 인코딩할 수 있고 기계로 하여금 본 개시의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 취해져야 한다. 이에 따라, "기계 판독가능 저장 매체"라는 용어는 고체 상태 메모리들, 광학 매체들, 및 자기 매체들을 포함하지만, 이에 제한되지는 않는 것으로 취해져야 한다.
선행하는 발명을 실시하기 위한 구체적인 내용의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 알고리즘들 및 상징적 표현들과 관련하여 제시되었다. 이러한 알고리즘적 설명들 및 표현들은 데이터 처리 분야의 기술자들에 의해 자신들의 작업 내용을 해당 기술분야의 다른 기술자들에게 가장 효과적으로 전달하기 위해 사용되는 방식들이다. 알고리즘은 본 명세서에서, 그리고 일반적으로, 목적하는 결과를 도출하는 동작들의 자기 일관적인 시퀀스인 것으로 구상된다. 동작들은 물리적 수량들의 물리적 조작들을 필요로 하는 것들이다. 반드시 그렇지는 아니지만, 일반적으로, 이러한 수량들은 저장, 조합, 비교, 및 다른 방식으로 조작될 수 있는 전기적 또는 자기적 신호들의 형태를 띤다. 주로 일반적인 용법의 이유로, 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로서 나타내는 것이 때때로 편리하다는 것이 밝혀졌다.
그러나, 이러한 그리고 유사한 용어들은 모두 적절한 물리적 수량들과 연관되어야 하고 단지 이러한 수량들에 적용되는 편리한 라벨들일 뿐임을 유념해야 한다. 본 개시는 컴퓨터 시스템, 또는 컴퓨터 시스템의 레지스터들 및 메모리들 내 물리적(전자적) 수량들로서 표현된 데이터를 조작하고 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내 물리적 수량들로서 유사하게 표현되는 다른 데이터로 변환하는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스들을 나타낼 수 있다.
또한, 본 개시는 본 명세서에서의 동작들을 수행하기 위한 장치에 관한 것이다. 이러한 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택 가능하게 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 컴퓨터 판독가능 저장 매체, 이를테면 이에 제한되지는 않지만, 각각 컴퓨터 시스템 버스에 결합되는, 플로피 디스크, 광학 디스크, CD-ROM, 및 자기-광학 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어들을 저장하는데 적합한 임의의 유형의 매체를 포함하는 임의의 유형의 디스크에 저장될 수 있다.
본 명세서에서 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되는 것은 아니다. 다양한 범용 시스템들이 여기서의 교시에 따른 프로그램들과 함께 사용될 수 있거나, 방법을 수행하기 위해 보다 특화된 장치를 구성하는 것이 편리함을 증명할 수 있다. 이러한 다양한 시스템들에 대한 구조는 아래의 설명에서 제시된 바와 같이 나타날 것이다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 본 명세서에서 설명된 바와 같이 본 개시의 교시 내용을 구현하는데 다양한 프로그래밍 언어들이 사용될 수 있다는 것이 이해될 것이다.
본 개시는 컴퓨터 프로그램 제품, 또는 소프트웨어로서 제공될 수 있으며, 이는 본 개시에 따라 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그래밍하는데 사용될 수 있는 명령어들이 저장된 기계 판독가능 매체를 포함할 수 있다. 기계 판독가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독가능 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시예들에서, 기계 판독가능(예를 들어, 컴퓨터 판독가능) 매체는 기계(예를 들어, 컴퓨터) 판독가능 저장 매체 이를테면 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 컴포넌트들 등을 포함한다.
앞에서의 명세서에서, 본 개시의 실시예들은 이의 특정 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구항들에 제시된 바와 같이 본 개시의 실시예들의 보다 넓은 사상 및 범위로부터 벗어나지 않고 다양한 수정들이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 의미로 고려되어야 한다.
Claims (20)
- 방법으로서,
모바일 디바이스에서, 복수의 애플리케이션들 각각에 대한 메모리 액세스를 결정하기 위해 복수의 애플리케이션들의 사용을 모니터링하는 단계;
상기 복수의 애플리케이션들의 사용과 관련된 데이터를 저장하는 단계;
상기 복수의 애플리케이션들의 사용과 관련된 데이터에 따라 상기 복수의 애플리케이션들을 그룹들로 그룹화하는 단계; 및
그룹 내의 각 애플리케이션에 공통된 사용에 따라 애플리케이션 그룹들 중 한 그룹에 대한 루트 프로세스(root process)를 맞춤화 및 실행하는 단계를 포함하는, 방법. - 제1항에 있어서, 상기 모니터링하는 단계, 저장하는 단계, 그룹화하는 단계, 또는 실행하는 단계 중 적어도 하나는 상기 모바일 디바이스에서의 운영 체제(operating system, OS)에 의해 수행되고, 메모리 액세스를 결정하는 단계는 메모리로부터의 판독 및 메모리에의 기록 빈도 또는 최신성을 측정하는 단계를 포함하는 것인, 방법.
- 제1항에 있어서, 상기 복수의 애플리케이션들의 사용과 관련된 데이터를 데이터베이스에 저장하는 단계, 및 상기 그룹 내의 상기 애플리케이션들에 공통된 지점으로 상기 루트 프로세스를 실행하는 단계를 포함하는, 방법.
- 제3항에 있어서,
상기 그룹 내의 각 애플리케이션에 공통된 상기 데이터베이스 내의 데이터에 기초하여 상기 그룹 내의 애플리케이션들 사이에서 공유되는 이전 실행들의 패턴들을 생성하는 단계; 및
상기 그룹 내의 애플리케이션들 사이에서 공유되는 상기 이전 실행들의 패턴들에 따라 상기 루트 프로세스를 실행하는 단계를 포함하는, 방법. - 제4항에 있어서,
상기 모바일 디바이스의 사용자로부터 상기 그룹으로부터 상기 애플리케이션들 중 적어도 하나를 시작하기 위한 요청을 수신하는 단계; 및
상기 요청을 수신 시 상기 루트 프로세스를 사용함으로써 상기 모바일 디바이스에서의 상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 시작하는 단계를 포함하는, 방법. - 제5항에 있어서,
상기 모바일 디바이스에서의 운영 체제(OS)에 의해, 상기 루트 프로세스를 다수의 프로세스들로 포킹(forking)하는 단계; 및
상기 OS에 의해, 상기 요청을 수신 시 상기 요청에 따라 상기 다수의 프로세스들 중 적어도 하나를 사용함으로써 상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 시작하는 단계를 포함하는, 방법. - 제5항에 있어서, 상기 복수의 애플리케이션들의 사용의 모니터링은 상기 루트 프로세스가 상기 사용자에 의한 상기 모바일 디바이스 상에서의 상기 애플리케이션들의 사용을 위해 맞춤화되도록 상기 사용자에 의한 상기 복수의 애플리케이션들의 사용에 대한 것인, 방법.
- 제5항에 있어서,
상기 모바일 디바이스의 사용자로부터, 상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 종료하기 위한 요청을 수신하는 단계;
상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 종료하기 위한 요청을 수신 시, 상기 루트 프로세스 및 상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 적어도 부분적으로 종료하는 단계; 및
상기 루트 프로세스 및 상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 적어도 부분적으로 종료한 후에, 미리 결정된 조건에 따라 상기 루트 프로세스를 적어도 부분적으로 재실행하는 단계를 포함하는, 방법. - 제8항에 있어서, 상기 루트 프로세스를 적어도 부분적으로 재실행하는 단계는 상기 그룹 내의 애플리케이션들 사이에서 공유되는 상기 이전 실행들의 패턴들에 기초하거나 이에 의해 업데이트되는 것인, 방법.
- 제5항에 있어서,
상기 모바일 디바이스의 사용자로부터, 상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 종료하기 위한 요청을 수신하는 단계;
상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 종료하기 위한 요청을 수신 시, 상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 적어도 부분적으로 종료하는 단계; 및
상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 종료하기 위한 요청을 수신 시 상기 루트 프로세스를 계속해서 실행하는 단계를 포함하는, 방법. - 제1항에 있어서, 상기 복수의 애플리케이션들의 사용의 모니터링은 상기 루트 프로세스가 임의의 사용자에 의한 상기 모바일 디바이스 상에서의 상기 애플리케이션의 사용을 위해 맞춤화되도록 상기 모바일 디바이스의 임의의 사용자에 의한 상기 복수의 애플리케이션들의 사용에 대한 것인, 방법.
- 제1항에 있어서, 상기 그룹에 대한 상기 루트 프로세스를 실행하는 단계는 상기 그룹에 대한 메모리에의 임의의 초기 기록 전에 메모리 내의 데이터를 복사하는 단계를 포함하고, 상기 메모리에의 임의의 초기 기록 전 상기 메모리 내의 데이터의 복사는 공통 코드 및 판독 전용 데이터의 복사를 회피하는 것을 포함하는 것인, 방법.
- 제1항에 있어서, 상기 루트 프로세스에 대한 데이터를 플래시 메모리에 저장하는 단계를 포함하는, 방법.
- 제1항에 있어서, 상기 루트 프로세스에 대한 데이터를 비휘발성 랜덤 액세스 메모리(non-volatile random-access memory, NVRAM)에 저장하는 단계를 포함하는, 방법.
- 제14항에 있어서, 상기 NVRAM은 3D XPoint 메모리를 포함하는 것인, 방법.
- 컴퓨팅 디바이스와 연관된 프로세서에 의해 실행될 때, 방법을 수행하는 컴퓨터 실행가능 명령어들로 유형적으로 인코딩된 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 방법은:
모바일 디바이스에서, 복수의 애플리케이션들 각각에 대한 메모리로부터의 판독 및 메모리에의 기록의 빈도 또는 최신성을 결정하기 위해 복수의 애플리케이션들의 사용을 모니터링하는 단계;
상기 복수의 애플리케이션의 사용과 관련된 데이터를 저장하는 단계;
상기 사용과 관련된 상기 데이터의 질의들에 따라 상기 복수의 애플리케이션들을 그룹들로 그룹화하는 단계; 및
상기 그룹 내의 각 애플리케이션에 공통된 저장된 데이터에 따라 상기 그룹들 중 한 그룹에 대한 루트 프로세스를 실행하는 단계를 포함하는 것인, 비일시적 컴퓨터 판독가능 저장 매체. - 제16항에 있어서, 상기 방법은:
상기 그룹 내의 각 애플리케이션에 공통된 상기 저장된 데이터에 기초하여 상기 그룹 내의 애플리케이션들 사이에서 공유되는 이전 실행들의 패턴들을 생성하는 단계; 및
상기 그룹 내의 애플리케이션들 사이에서 공유되는 이전 실행들의 패턴들에 따라 상기 루트 프로세스를 실행하는 단계를 포함하는 것인, 비일시적 컴퓨터 판독가능 저장 매체. - 제17항에 있어서, 상기 방법은:
상기 모바일 디바이스의 사용자로부터 상기 그룹으로부터 상기 애플리케이션들 중 적어도 하나를 시작하기 위한 요청을 수신하는 단계; 및
상기 요청을 수신 시 상기 루트 프로세스를 사용함으로써 상기 모바일 디바이스에서의 상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 시작하는 단계를 포함하는 것인, 비일시적 컴퓨터 판독가능 저장 매체. - 제17항에 있어서, 상기 방법은:
상기 모바일 디바이스의 사용자로부터 상기 그룹으로부터 상기 애플리케이션들 중 적어도 하나를 시작하기 위한 요청을 수신하는 단계;
상기 모바일 디바이스에서의 운영 체제(OS)에 의해, 상기 루트 프로세스를 다수의 프로세스들로 포킹하는 단계; 및
상기 OS에 의해, 상기 요청을 수신 시 상기 요청에 따라 상기 다수의 프로세스들 중 적어도 하나를 사용함으로써 상기 그룹으로부터의 상기 애플리케이션들 중 상기 적어도 하나를 시작하는 단계를 포함하는 것인, 비일시적 컴퓨터 판독가능 저장 매체. - 방법으로서,
모바일 디바이스에서 운영 체제(OS)에 의해, 복수의 애플리케이션들 각각에 대한 메모리로부터의 판독 및 메모리에의 기록의 빈도 또는 최신성을 결정하기 위해 복수의 애플리케이션들의 사용을 모니터링하는 단계;
상기 OS에 의해, 상기 복수의 애플리케이션들의 사용과 관련된 데이터를 데이터베이스에 저장하는 단계;
상기 OS에 의해, 상기 데이터베이스의 질의들에 따라 상기 복수의 애플리케이션들을 그룹들로 그룹화하는 단계; 및
상기 OS에 의해, 상기 그룹 내의 각 애플리케이션에 공통된 상기 데이터베이스 내의 데이터에 따라 상기 그룹들 중 한 그룹에 대한 루트 프로세스를 백그라운드 프로세스로서 실행하는 단계를 포함하는, 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/592,537 US11436041B2 (en) | 2019-10-03 | 2019-10-03 | Customized root processes for groups of applications |
US16/592,537 | 2019-10-03 | ||
PCT/US2020/053532 WO2021067427A1 (en) | 2019-10-03 | 2020-09-30 | Customized root processes for groups of applications |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220054398A true KR20220054398A (ko) | 2022-05-02 |
Family
ID=75274147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227010645A KR20220054398A (ko) | 2019-10-03 | 2020-09-30 | 애플리케이션 그룹에 대한 맞춤형 루트 프로세스 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11436041B2 (ko) |
EP (1) | EP4038497A4 (ko) |
JP (1) | JP2022550447A (ko) |
KR (1) | KR20220054398A (ko) |
CN (1) | CN114467083A (ko) |
WO (1) | WO2021067427A1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11474828B2 (en) | 2019-10-03 | 2022-10-18 | Micron Technology, Inc. | Initial data distribution for different application processes |
US11599384B2 (en) | 2019-10-03 | 2023-03-07 | Micron Technology, Inc. | Customized root processes for individual applications |
US11429445B2 (en) | 2019-11-25 | 2022-08-30 | Micron Technology, Inc. | User interface based page migration for performance enhancement |
US11366752B2 (en) | 2020-03-19 | 2022-06-21 | Micron Technology, Inc. | Address mapping between shared memory modules and cache sets |
US11836087B2 (en) | 2020-12-23 | 2023-12-05 | Micron Technology, Inc. | Per-process re-configurable caches |
Family Cites Families (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6138179A (en) | 1997-10-01 | 2000-10-24 | Micron Electronics, Inc. | System for automatically partitioning and formatting a primary hard disk for installing software in which selection of extended partition size is not related to size of hard disk |
CA2312444A1 (en) | 2000-06-20 | 2001-12-20 | Ibm Canada Limited-Ibm Canada Limitee | Memory management of data buffers incorporating hierarchical victim selection |
US6976114B1 (en) | 2001-01-25 | 2005-12-13 | Rambus Inc. | Method and apparatus for simultaneous bidirectional signaling in a bus topology |
US6847366B2 (en) | 2002-03-01 | 2005-01-25 | Hewlett-Packard Development Company, L.P. | System and method utilizing multiple processes to render graphical data |
US7370288B1 (en) | 2002-06-28 | 2008-05-06 | Microsoft Corporation | Method and system for selecting objects on a display device |
US8001266B1 (en) | 2003-03-31 | 2011-08-16 | Stretch, Inc. | Configuring a multi-processor system |
EP1473906A2 (en) | 2003-04-28 | 2004-11-03 | Matsushita Electric Industrial Co., Ltd. | Service management system, and method, communications unit and integrated circuit for use in such system |
US20050060174A1 (en) | 2003-09-15 | 2005-03-17 | Heyward Salome M. | Absence management systems and methods |
JP2005275707A (ja) * | 2004-03-24 | 2005-10-06 | Hitachi Ltd | 情報処理装置、情報処理装置の制御方法、及びプログラム |
US7574709B2 (en) | 2004-04-30 | 2009-08-11 | Microsoft Corporation | VEX-virtual extension framework |
WO2006026403A2 (en) | 2004-08-26 | 2006-03-09 | Availigent, Inc. | Method and system for providing transparent incremental and multiprocess checkpointing to computer applications |
JP4529612B2 (ja) * | 2004-09-21 | 2010-08-25 | 株式会社セガ | 携帯端末におけるアプリケーションプログラム使用時の通信料の削減方法 |
KR100678913B1 (ko) | 2005-10-25 | 2007-02-06 | 삼성전자주식회사 | 가상 메모리 시스템에서 페이지 폴트를 줄이는 장치 및방법 |
US7917723B2 (en) | 2005-12-01 | 2011-03-29 | Microsoft Corporation | Address translation table synchronization |
US8042109B2 (en) | 2006-03-21 | 2011-10-18 | Intel Corporation | Framework for domain-specific run-time environment acceleration using virtualization technology |
US20070226702A1 (en) | 2006-03-22 | 2007-09-27 | Rolf Segger | Method for operating a microcontroller in a test environment |
TW200805394A (en) | 2006-07-07 | 2008-01-16 | Alcor Micro Corp | Memory storage device and the read/write method thereof |
US9274921B2 (en) | 2006-12-27 | 2016-03-01 | International Business Machines Corporation | System and method for managing code displacement |
US20090049389A1 (en) | 2007-08-13 | 2009-02-19 | Siemens Medical Solutions Usa, Inc. | Usage Pattern Driven Graphical User Interface Element Rendering |
US20090150541A1 (en) | 2007-12-06 | 2009-06-11 | Sony Corporation And Sony Electronics Inc. | System and method for dynamically generating user interfaces for network client devices |
US8789159B2 (en) | 2008-02-11 | 2014-07-22 | Microsoft Corporation | System for running potentially malicious code |
US8689508B2 (en) | 2008-05-28 | 2014-04-08 | Steeltec Supply, Inc. | Extra strength backing stud having notched flanges |
US8898667B2 (en) | 2008-06-04 | 2014-11-25 | International Business Machines Corporation | Dynamically manage applications on a processing system |
US8464256B1 (en) | 2009-04-10 | 2013-06-11 | Open Invention Network, Llc | System and method for hierarchical interception with isolated environments |
US20100169708A1 (en) | 2008-12-29 | 2010-07-01 | John Rudelic | Method and apparatus to profile ram memory objects for displacment with nonvolatile memory |
US8161260B2 (en) | 2009-02-09 | 2012-04-17 | Oracle International Corporation | Optimal memory allocation for guested virtual machine(s) |
KR101612922B1 (ko) | 2009-06-09 | 2016-04-15 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템 관리 방법 |
US8832683B2 (en) | 2009-11-30 | 2014-09-09 | Red Hat Israel, Ltd. | Using memory-related metrics of host machine for triggering load balancing that migrate virtual machine |
US8806140B1 (en) | 2009-12-16 | 2014-08-12 | Applied Micro Circuits Corporation | Dynamic memory module switching with read prefetch caching |
US8607023B1 (en) | 2009-12-16 | 2013-12-10 | Applied Micro Circuits Corporation | System-on-chip with dynamic memory module switching |
JP2012048322A (ja) * | 2010-08-24 | 2012-03-08 | Sony Corp | 情報処理装置、アプリケーション制御方法及びプログラム |
US8402061B1 (en) | 2010-08-27 | 2013-03-19 | Amazon Technologies, Inc. | Tiered middleware framework for data storage |
US20120221785A1 (en) | 2011-02-28 | 2012-08-30 | Jaewoong Chung | Polymorphic Stacked DRAM Memory Architecture |
US9141528B2 (en) | 2011-05-17 | 2015-09-22 | Sandisk Technologies Inc. | Tracking and handling of super-hot data in non-volatile memory systems |
US8631131B2 (en) | 2011-09-07 | 2014-01-14 | Red Hat Israel, Ltd. | Virtual machine pool cache |
US11074495B2 (en) | 2013-02-28 | 2021-07-27 | Z Advanced Computing, Inc. (Zac) | System and method for extremely efficient image and pattern recognition and artificial intelligence platform |
US9916538B2 (en) | 2012-09-15 | 2018-03-13 | Z Advanced Computing, Inc. | Method and system for feature detection |
US11195057B2 (en) | 2014-03-18 | 2021-12-07 | Z Advanced Computing, Inc. | System and method for extremely efficient image and pattern recognition and artificial intelligence platform |
US8738875B2 (en) | 2011-11-14 | 2014-05-27 | International Business Machines Corporation | Increasing memory capacity in power-constrained systems |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
JP5840525B2 (ja) * | 2012-02-16 | 2016-01-06 | シャープ株式会社 | 情報処理装置 |
US8719540B1 (en) | 2012-03-15 | 2014-05-06 | Pure Storage, Inc. | Fractal layout of data blocks across multiple devices |
US8838887B1 (en) | 2012-03-30 | 2014-09-16 | Emc Corporation | Drive partitioning for automated storage tiering |
US20150081964A1 (en) | 2012-05-01 | 2015-03-19 | Hitachi, Ltd. | Management apparatus and management method of computing system |
CN103631612B (zh) * | 2012-08-23 | 2017-09-29 | 腾讯科技(深圳)有限公司 | 启动操作系统的方法与装置 |
WO2014045441A1 (ja) | 2012-09-24 | 2014-03-27 | 株式会社日立製作所 | ストレージ装置が有する階層型プール内のデータの配置を制御する計算機及び方法 |
GB2507596B (en) | 2012-10-30 | 2014-09-17 | Barclays Bank Plc | Secure computing device and method |
US9508040B2 (en) | 2013-06-12 | 2016-11-29 | Microsoft Technology Licensing, Llc | Predictive pre-launch for applications |
KR20150043102A (ko) | 2013-10-14 | 2015-04-22 | 한국전자통신연구원 | 하이브리드 메모리의 데이터 관리 장치 및 방법 |
CA2867589A1 (en) | 2013-10-15 | 2015-04-15 | Coho Data Inc. | Systems, methods and devices for implementing data management in a distributed data storage system |
US10338826B2 (en) | 2013-10-15 | 2019-07-02 | Cypress Semiconductor Corporation | Managed-NAND with embedded random-access non-volatile memory |
US10013500B1 (en) | 2013-12-09 | 2018-07-03 | Amazon Technologies, Inc. | Behavior based optimization for content presentation |
US9411638B2 (en) | 2013-12-19 | 2016-08-09 | International Business Machines Corporation | Application startup page fault management in a hardware multithreading environment |
US20150178108A1 (en) | 2013-12-20 | 2015-06-25 | Vmware, Inc. | Fast Instantiation of Virtual Machines |
US9892121B2 (en) | 2014-07-15 | 2018-02-13 | Hitachi, Ltd. | Methods and systems to identify and use event patterns of application workflows for data management |
WO2016016926A1 (ja) | 2014-07-28 | 2016-02-04 | 株式会社日立製作所 | 管理計算機及び性能閾値の評価方法 |
US9477427B2 (en) | 2014-09-19 | 2016-10-25 | Vmware, Inc. | Storage tiering based on virtual machine operations and virtual volume type |
US9250891B1 (en) * | 2014-10-28 | 2016-02-02 | Amazon Technologies, Inc. | Optimized class loading |
US10452538B2 (en) | 2015-01-21 | 2019-10-22 | Red Hat, Inc. | Determining task scores reflective of memory access statistics in NUMA systems |
WO2016134035A1 (en) | 2015-02-17 | 2016-08-25 | Coho Data, Inc. | Virtualized application-layer space for data processing in data storage systems |
US20170017576A1 (en) | 2015-07-16 | 2017-01-19 | Qualcomm Incorporated | Self-adaptive Cache Architecture Based on Run-time Hardware Counters and Offline Profiling of Applications |
US9977696B2 (en) * | 2015-07-27 | 2018-05-22 | Mediatek Inc. | Methods and apparatus of adaptive memory preparation |
KR102401772B1 (ko) | 2015-10-02 | 2022-05-25 | 삼성전자주식회사 | 전자 장치에서 어플리케이션 실행 장치 및 방법 |
US9985946B2 (en) | 2015-12-22 | 2018-05-29 | Intel Corporation | System, apparatus and method for safety state management of internet things (IoT) devices |
US10509564B2 (en) | 2015-12-28 | 2019-12-17 | Netapp Inc. | Storage system interface |
US11182344B2 (en) | 2016-03-14 | 2021-11-23 | Vmware, Inc. | File granular data de-duplication effectiveness metric for data de-duplication |
US10324760B2 (en) | 2016-04-29 | 2019-06-18 | Advanced Micro Devices, Inc. | Leases for blocks of memory in a multi-level memory |
US20190339688A1 (en) | 2016-05-09 | 2019-11-07 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for data collection, learning, and streaming of machine signals for analytics and maintenance using the industrial internet of things |
US20180284746A1 (en) | 2016-05-09 | 2018-10-04 | StrongForce IoT Portfolio 2016, LLC | Methods and systems for data collection optimization in an industrial internet of things environment |
US20200225655A1 (en) | 2016-05-09 | 2020-07-16 | Strong Force Iot Portfolio 2016, Llc | Methods, systems, kits and apparatuses for monitoring and managing industrial settings in an industrial internet of things data collection environment |
US11327475B2 (en) | 2016-05-09 | 2022-05-10 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for intelligent collection and analysis of vehicle data |
US20200348662A1 (en) | 2016-05-09 | 2020-11-05 | Strong Force Iot Portfolio 2016, Llc | Platform for facilitating development of intelligence in an industrial internet of things system |
WO2019216975A1 (en) | 2018-05-07 | 2019-11-14 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for data collection, learning, and streaming of machine signals for analytics and maintenance using the industrial internet of things |
US11774944B2 (en) | 2016-05-09 | 2023-10-03 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for the industrial internet of things |
US11194517B2 (en) | 2016-05-24 | 2021-12-07 | Samsung Electronics Co., Ltd. | Method and apparatus for storage device latency/bandwidth self monitoring |
KR20170138765A (ko) | 2016-06-08 | 2017-12-18 | 삼성전자주식회사 | 메모리 장치, 메모리 모듈 및 메모리 장치의 동작 방법 |
US10037173B2 (en) | 2016-08-12 | 2018-07-31 | Google Llc | Hybrid memory management |
US10152427B2 (en) | 2016-08-12 | 2018-12-11 | Google Llc | Hybrid memory management |
CN107220076B (zh) | 2016-09-27 | 2018-10-30 | 华为技术有限公司 | 一种内存回收方法及装置 |
US20180276112A1 (en) | 2017-03-27 | 2018-09-27 | International Business Machines Corporation | Balancing memory pressure across systems |
US10452397B2 (en) | 2017-04-01 | 2019-10-22 | Intel Corporation | Efficient multi-context thread distribution |
US10921801B2 (en) | 2017-08-02 | 2021-02-16 | Strong Force loT Portfolio 2016, LLC | Data collection systems and methods for updating sensed parameter groups based on pattern recognition |
US20190050163A1 (en) | 2017-08-14 | 2019-02-14 | Seagate Technology Llc | Using snap space knowledge in tiering decisions |
CN107783801B (zh) | 2017-11-06 | 2021-03-12 | Oppo广东移动通信有限公司 | 应用程序预测模型建立、预加载方法、装置、介质及终端 |
CN109814936A (zh) | 2017-11-20 | 2019-05-28 | 广东欧珀移动通信有限公司 | 应用程序预测模型建立、预加载方法、装置、介质及终端 |
KR102416929B1 (ko) | 2017-11-28 | 2022-07-06 | 에스케이하이닉스 주식회사 | 메모리 모듈 및 메모리 모듈의 동작 방법 |
TWI647567B (zh) | 2017-12-13 | 2019-01-11 | 國立中正大學 | 使用記憶體位址定位冷熱存取區間之方法 |
US11915012B2 (en) | 2018-03-05 | 2024-02-27 | Tensera Networks Ltd. | Application preloading in the presence of user actions |
US10606670B2 (en) | 2018-04-11 | 2020-03-31 | EMC IP Holding Company LLC | Shared memory usage tracking across multiple processes |
US20200133254A1 (en) | 2018-05-07 | 2020-04-30 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for data collection, learning, and streaming of machine signals for part identification and operating characteristics determination using the industrial internet of things |
US11144468B2 (en) | 2018-06-29 | 2021-10-12 | Intel Corporation | Hardware based technique to prevent critical fine-grained cache side-channel attacks |
KR102557267B1 (ko) * | 2018-10-12 | 2023-07-20 | 삼성전자주식회사 | 메모리의 저장 용량을 확보하기 위한 디스플레이 장치 |
JP7261037B2 (ja) * | 2019-02-21 | 2023-04-19 | 株式会社日立製作所 | データ処理装置、ストレージ装置およびプリフェッチ方法 |
US11307951B2 (en) * | 2019-09-04 | 2022-04-19 | Micron Technology, Inc. | Memory device with configurable performance and defectivity management |
US11599384B2 (en) | 2019-10-03 | 2023-03-07 | Micron Technology, Inc. | Customized root processes for individual applications |
US11474828B2 (en) | 2019-10-03 | 2022-10-18 | Micron Technology, Inc. | Initial data distribution for different application processes |
US11429445B2 (en) | 2019-11-25 | 2022-08-30 | Micron Technology, Inc. | User interface based page migration for performance enhancement |
US20210157718A1 (en) | 2019-11-25 | 2021-05-27 | Micron Technology, Inc. | Reduction of page migration between different types of memory |
US11366752B2 (en) | 2020-03-19 | 2022-06-21 | Micron Technology, Inc. | Address mapping between shared memory modules and cache sets |
-
2019
- 2019-10-03 US US16/592,537 patent/US11436041B2/en active Active
-
2020
- 2020-09-30 KR KR1020227010645A patent/KR20220054398A/ko unknown
- 2020-09-30 WO PCT/US2020/053532 patent/WO2021067427A1/en unknown
- 2020-09-30 EP EP20872379.1A patent/EP4038497A4/en active Pending
- 2020-09-30 JP JP2022520360A patent/JP2022550447A/ja active Pending
- 2020-09-30 CN CN202080068775.6A patent/CN114467083A/zh active Pending
-
2022
- 2022-08-30 US US17/898,642 patent/US20220413900A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021067427A1 (en) | 2021-04-08 |
JP2022550447A (ja) | 2022-12-01 |
EP4038497A1 (en) | 2022-08-10 |
US11436041B2 (en) | 2022-09-06 |
EP4038497A4 (en) | 2023-09-27 |
CN114467083A (zh) | 2022-05-10 |
US20210103463A1 (en) | 2021-04-08 |
US20220413900A1 (en) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20220054398A (ko) | 애플리케이션 그룹에 대한 맞춤형 루트 프로세스 | |
US11599384B2 (en) | Customized root processes for individual applications | |
JP7297769B2 (ja) | プリキャシュのためのクライアント・マシン間でのシェーダの配布 | |
US9152668B1 (en) | Asynchronous computation batching | |
US20230039910A1 (en) | Initial data distribution for different application processes | |
US10248581B2 (en) | Guarded memory access in a multi-thread safe system level modeling simulation | |
US9075666B2 (en) | Deferred execution in a multi-thread safe system level modeling simulation | |
US9201708B2 (en) | Direct memory interface access in a multi-thread safe system level modeling simulation | |
KR20210080009A (ko) | 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스 | |
KR20190095489A (ko) | 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법 | |
US20210256373A1 (en) | Method and apparatus with accelerator | |
US9626296B2 (en) | Prefetch list management in a computer system | |
US10353591B2 (en) | Fused shader programs | |
KR102026333B1 (ko) | 분산 파일 시스템에 대한 태스크 처리 방법 | |
CN111258657B (zh) | 流水线控制方法及相关设备 | |
US20230145253A1 (en) | Reducing latency in highly scalable hpc applications via accelerator-resident runtime management | |
CN117687738A (zh) | 一种缓存控制方法、装置和计算机设备 | |
CN111158725A (zh) | 程序升级方法、装置、终端及存储介质 | |
JP2014229173A (ja) | アクセラレータ処理実行装置、及びアクセラレータ処理実行プログラム | |
CN117312839A (zh) | 模型训练方法、装置、系统及相关设备 |