KR102403063B1 - Mobile device and management method of mobile device - Google Patents
Mobile device and management method of mobile device Download PDFInfo
- Publication number
- KR102403063B1 KR102403063B1 KR1020140174294A KR20140174294A KR102403063B1 KR 102403063 B1 KR102403063 B1 KR 102403063B1 KR 1020140174294 A KR1020140174294 A KR 1020140174294A KR 20140174294 A KR20140174294 A KR 20140174294A KR 102403063 B1 KR102403063 B1 KR 102403063B1
- Authority
- KR
- South Korea
- Prior art keywords
- page
- mobile device
- memory
- cloud server
- swap
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
Abstract
개시된 일 실시 예에 따른 모바일 디바이스는 메모리; 로컬 스토리지; 및 프로세서를 포함하고, 상기 프로세서는, 상기 로컬 스토리지 및 통신으로 연결된 클라우드 서버를 상기 메모리에 저장된 페이지들의 스왑(swap) 공간으로 사용한다.A mobile device according to an embodiment disclosed includes a memory; local storage; and a processor, wherein the processor uses the local storage and a communication-connected cloud server as a swap space for pages stored in the memory.
Description
개시된 실시 예들은 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법에 관한 것이다.Disclosed embodiments relate to a mobile device and a memory management method of the mobile device.
스마트 폰, 태블릿 또는 노트북과 같은 모바일 디바이스는 데스크탑이나 서버와 비교하여 상대적으로 낮은 성능의 컴퓨팅 자원을 포함하고 있다. 모바일 디바이스는 어플리케이션과 같은 프로그램을 동시에 실행하기 위해 큰 용량의 메모리를 필요로 한다. 어플리케이션이 할당하는 메모리의 크기는 빈번히 사용되는 메모리의 크기인 워킹셋(working set)보다 크다. 따라서, 모바일 디바이스는 메모리를 관리하여 작은 크기의 메모리를 이용하여 효율적으로 어플리케이션을 구동할 수 있다.Mobile devices such as smart phones, tablets, or laptops contain computing resources with relatively low performance compared to desktops or servers. Mobile devices require a large amount of memory to simultaneously execute programs such as applications. The size of the memory allocated by the application is larger than the working set, which is the size of frequently used memory. Accordingly, the mobile device can efficiently drive an application using a small-sized memory by managing the memory.
개시된 일 실시 예는 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법을 제공하는데 있다.An exemplary embodiment disclosed is to provide a mobile device and a memory management method of the mobile device.
일 실시 예에 따른 모바일 디바이스는 메모리; 로컬 스토리지; 및 프로세서를 포함하고, 상기 프로세서는, 상기 로컬 스토리지 및 통신으로 연결된 클라우드 서버를 상기 메모리에 저장된 페이지들의 스왑(swap) 공간으로 사용한다.A mobile device according to an embodiment includes a memory; local storage; and a processor, wherein the processor uses the local storage and a communication-connected cloud server as a swap space for pages stored in the memory.
일 실시 예에 따른 모바일 디바이스가 메모리를 관리하는 방법에 있어서, 상기 모바일 디바이스의 로컬 스토리지 또는 통신으로 연결된 클라우드 서버로 상기 메모리에 저장된 페이지를 스왑-아웃 하는 단계; 및 페이지 폴트가 발생된 페이지의 특성 및 페이지 폴트가 발생된 페이지의 저장 위치에 따라 상기 스왑-아웃 된 페이지를 스왑-인 하는 단계를 포함한다.According to an embodiment, a method for managing a memory by a mobile device includes: swapping out a page stored in the memory to a local storage of the mobile device or a cloud server connected by communication; and swapping-in the swapped-out page according to the characteristics of the page in which the page fault occurs and the storage location of the page in which the page fault occurs.
도 1은 일 실시 예에 따른 스왑 시스템을 설명하기 위한 도면이다.
도 2는 일 실시 예에 따른 모바일 디바이스를 설명하기 위한 구성도이다.
도 3은 일 실시 예에 따른 모바일 디바이스를 설명하기 위한 구성도이다.
도 4는 일 실시 예에 따른 모바일 디바이스가 페이지를 스왑-아웃 하는 동작을 설명하기 위한 도면이다.
도 5는 일 실시 예에 따른 모바일 디바이스의 동작을 설명하기 위한 순서도이다.
도 6은 일 실시 예에 따른 모바일 디바이스의 동작을 설명하기 위한 순서도이다.
도 7은 일 실시 예에 따른 모바일 디바이스가 페이지를 스왑-인 하는 동작을 설명하기 위한 도면이다.
도 8은 일 실시 예에 따른 모바일 디바이스가 페이지를 스왑-인 하는 동작을 설명하기 위한 순서도이다.
도 9는 일 실시 예에 따른 클라우드 서버를 설명하기 위한 도면이다.
도 10은 일 실시 예에 따른 클라우드 서버를 설명하기 위한 도면이다.
도 11은 일 실시 예에 따른 모바일 디바이스의 동작 방법을 설명하기 위한 순서도이다. 1 is a diagram for explaining a swap system according to an embodiment.
2 is a configuration diagram illustrating a mobile device according to an embodiment.
3 is a configuration diagram illustrating a mobile device according to an embodiment.
4 is a diagram for explaining an operation of swapping out a page by a mobile device according to an exemplary embodiment.
5 is a flowchart illustrating an operation of a mobile device according to an exemplary embodiment.
6 is a flowchart illustrating an operation of a mobile device according to an exemplary embodiment.
7 is a diagram for describing an operation of a page swap-in by a mobile device according to an embodiment.
8 is a flowchart illustrating an operation of a page swap-in by a mobile device according to an exemplary embodiment.
9 is a diagram for describing a cloud server according to an embodiment.
10 is a diagram for explaining a cloud server according to an embodiment.
11 is a flowchart illustrating a method of operating a mobile device according to an exemplary embodiment.
도 1은 일 실시 예에 따른 스왑 시스템을 설명하기 위한 도면이다. 도 1을 참조하면, 모바일 디바이스(100)는 클라우드 서버(200)를 스왑 공간으로 이용할 수 있다. 스왑은 메모리의 워킹셋을 모바일 디바이스(100)의 메모리에 효과적으로 할당하는 기술이다. 모바일 디바이스(100)는 메모리에 데이터를 저장할 공간이 부족한 경우, 메모리에서 오랫동안 사용되지 않은 데이터를 스왑-아웃 한다. 스왑-아웃 한다는 것은 데이터를 메모리에서 다른 저장 공간으로 이동시킨다는 것을 나타낸다. 예를 들어, 메모리가 데이터를 페이지 단위로 저장하는 경우, 모바일 디바이스(100)는 메모리에 저장된 페이지를 로컬 스토리지에 저장하고, 메모리에는 페이지가 저장된 위치 등을 나타내는 정보만을 저장할 수 있다. 메모리를 휘발성 저장 매체일 수 있으며, 로컬 스토리지는 하드 디스크와 같은 비휘발성 저장 매체일 수 있다.1 is a diagram for describing a swap system according to an embodiment. Referring to FIG. 1 , the
모바일 디바이스(100)는 통신으로 연결된 클라우드 서버(200)의 저장 공간을 스왑 공간으로서 이용할 수 있다. 모바일 디바이스(100)는 크기의 제약으로 인하여 저장 공간이 한정된다. 따라서, 모바일 디바이스(100)는 클라우드 서버(200)로 페이지를 스왑-아웃 하여, 클라우드 서버(200)에 페이지를 저장할 수 있다. 도 1에서는 모바일 디바이스(100)가 클라우드 서버(200)를 이용하는 것을 예를 들어 도시하고 있으나, 모바일 디바이스(100)는 모바일 디바이스(100)와 무선 또는 유선으로 연결되어 데이터를 송수신할 수 있는 모든 전자 기기의 저장 공간을 스왑 공간으로 이용할 수 있다. 예를 들어, 모바일 디바이스(100)는 또 다른 모바일 디바이스를 이용할 수 있으며, 데스크 탑, 태블릿 등을 이용할 수도 있다.The
클라우드 서버(200)는 모바일 디바이스(100)의 요청에 따라 페이지를 스왑-아웃 또는 스왑-인 한다. 클라우드 서버(200)는 충분한 저장 공간을 포함하고 있으며, 모바일 디바이스(100)로부터 페이지를 저장해줄 것을 요청 받으면, 수신된 페이지를 내부 메모리 또는 스토리지에 저장한다. 또한, 클라우드 서버(200)는 모바일 디바이스(100)로부터 페이지를 전송해줄 것을 요청 받으면, 저장된 페이지를 모바일 디바이스(100)로 전송한다.
The
도 2는 일 실시 예에 따른 모바일 디바이스를 설명하기 위한 구성도이다. 도 2를 참조하면, 모바일 디바이스(100)는 메모리(110), 프로세서(120) 및 로컬 스토리지(130)를 포함한다. 모바일 디바이스(100)는 통신으로 연결된 클라우드 서버(200)를 이용하여 메모리(110)를 관리할 수 있다. 모바일 디바이스(100)는 메모리(110)에 저장된 페이지를 로컬 스토리지(130) 또는 클라우드 서버(200)로 스왑-아웃 할 수 있다. 또한, 모바일 디바이스(100)는 로컬 스토리지(130) 또는 클라우드 서버(200)에 저장된 페이지를 메모리(110)로 스왑-인 할 수 있다.2 is a configuration diagram illustrating a mobile device according to an embodiment. Referring to FIG. 2 , the
메모리(110)는 모바일 디바이스(100)가 어플리케이션 등과 같은 프로그램 등을 실행할 때 데이터를 저장하는 공간이다. 모바일 디바이스(100)는 메모리(110)에 어플리케이션마다 일정한 영역을 할당한다. 모바일 디바이스(100)는 어플리케이션을 실행하면서 발생하는 데이터를 메모리(110)에 할당된 영역에 페이지 단위로 기록(write)하고 독출(read)할 수 있다.The
프로세서(120)는 메모리(110)를 관리한다. 프로세서(120)는 메모리(110)에 저장된 페이지를 관리한다. 프로세서(120)는 메모리(110)에 저장된 페이지 중에서 오래 사용되지 않은 페이지를 로컬 스토리지(130) 또는 클라우드 서버(200)로 스왑-아웃 하여 메모리(110)의 저장 공간을 확보할 수 있다. 또한, 프로세서(120)는 어플리케이션에 의해 요청된 페이지가 메모리(110)에 저장되어 있지 않은 경우, 요청된 페이지가 저장된 위치를 확인하고, 요청된 페이지를 메모리(110)에 스왑-인 할 수 있다. 프로세서(120)가 페이지를 스왑-아웃, 스왑-인 하는 동작에 관하여는 이하 도면들을 통해 상세히 설명한다.The
프로세서(120)는 운영체제(OS)를 구동한다. 프로세서(120)는 윈도우 커널 또는 리눅스 커널 등과 같은 운영체제를 구동하여 어플리케이션을 실행하고, 메모리(110)에 저장된 데이터를 관리한다.The
프로세서(120)는 데이터를 처리하고 연산을 수행하는 기능 유닛 또는 프로그램 모듈을 포함할 수 있다. 또한, 프로세서(120)는 캐시 또는 버퍼를 포함하여 데이터를 저장할 수 있다.
The
도 3은 일 실시 예에 따른 모바일 디바이스를 설명하기 위한 구성도이다.3 is a configuration diagram illustrating a mobile device according to an embodiment.
페이지 폴트 핸들러(121)는 페이지 요청을 처리한다. 페이지 폴트 핸들러(121)는 어플리케이션이 메모리(110)에 페이지를 요청하였을 때 요청된 페이지가 메모리(110)에 저장되어 있지 않는 경우, 요청된 페이지를 메모리(110)로 반환한다. 페이지 폴트는 메모리(110)에 저장되어 있던 페이지가 스왑-아웃 되고 난 이후에, 프로그램이 스왑-아웃 된 페이지에 접속(access)할 때 발생한다. 페이지 폴트 핸들러(121)는 스왑으로 인하여 페이지 폴트가 발생하였으므로, 페이지 폴트를 처리한다. The page fault handler 121 processes a page request. The
스왑 캐시(122)는 프리패치(prefetch)된 페이지들을 임시로 저장한다. 또는 스왑 캐시(122)는 동시에 발생하는 스왑-인, 스왑-아웃에 대한 동기화를 위해 사용된다.The
스왑 대몬(123)은 페이지를 스왑-아웃 한다. 스왑 대몬(123)은 메모리(110)에 저장 공간이 부족한 경우, 메모리(110)에 저장된 페이지들 중에서 가장 오래된 페이지를 스왑-아웃 할 수 있다.The
프리패치 대몬(124)은 페이지 요청이 있기 전에, 페이지를 미리 메모리(110)에 저장한다. 페이지 요청은 페이지 폴트가 발생할 때 발생한다. 하지만, 스왑-인 요청을 수신한 장치가 스왑-인 페이지와 함께 앞으로 사용될 것으로 예상되는 페이지들을 미리 전송한다면, 페이지 폴트를 줄일 수 있다. 따라서, 클라우드 서버(200) 등은 페이지 요청이 있을 때, 요청된 페이지와 함께 앞으로 사용될 페이지들을 미리 모바일 디바이스(100)로 전송한다. 프리패치 대몬(124)은 앞으로 사용될 페이지들을 메모리(110)에 저장함으로써, 페이지 폴트 또는 스왑-인 요청을 줄일 수 있다.The
스왑 매니저(125)는 스왑-아웃 또는 스왑-인 되는 페이지들을 관리한다. 예를 들어, 스왑 매니저(125)는 스왑-아웃 또는 스왑-인 되는 페이지들의 라이프 사이클을 추적(track)할 수 있다. 스왑 매니저(125)는 페이지들이 얼마나 자주 스왑-아웃 또는 스왑-인 되고 사용되는지를 추적한다. 스왑 매니저(125)는 추적 결과에 기초하여, 페이지를 로컬 스토리지(130)에 저장할지, 클라우드 서버(200)에 저장할지를 결정한다. The
또한, 스왑 매니저(125)는 페이지 폴트 발생 시, 요청된 페이지가 저장된 장소가 어디인지 체크하고, 요청된 페이지에 대한 델타 페이지가 존재하는지 체크하고, 요청된 페이지가 제로 페이지(zero page)인지 체크한다.Also, when a page fault occurs, the
페이지 번역기(126)는 페이지가 스왑-아웃 또는 스왑-인 되기 이전에 페이지를 처리한다. 페이지 번역기(126)는 페이지를 압축(compress)하거나 복원(decompress)할 수 있다. 페이지 번역기(126)는 2개의 페이지를 이용하여 델타 페이지를 생성할 수 있다. 페이지 번역기(126)는 논리적으로 동일한(logically same) 페이지들을 이용하여 델타 페이지를 생성한다. 예를 들어, 페이지 번역기(126)는 논리적으로 동일한 페이지들에 대한 XOR 연산을 수행하여 델타 페이지를 생성할 수 있다. XOR 연산은 동일한 값일 경우에는 0을, 서로 다른 값일 경우에는 1을 출력하는 연산이다. 따라서, 2개의 페이지가 완전이 동일하면 델타 페이지의 값은 모두 0이 된다. 레퍼런스 페이지의 내용이 11101010이고, 스왑-아웃 되는 페이지의 내용이 11111010이면, 델타 페이지는 00010000이 된다. 따라서, 페이지들의 내용이 유사할수록 압축률은 높아진다. 페이지 번역기(126)는 델타 페이지를 이용하여 스왑-아웃 또는 스왑-인 하기 때문에 네트워크 대역폭을 줄일 수 있으며, 배터리의 소모를 줄일 수 있다.
페이지 번역기(126)는 페이지의 무결성 검사(integrity test)를 할 수 있다. 무결성 검사는 복원된 페이지가 실제 페이지와 동일한지를 확인하는 것을 의미한다. 모바일 디바이스(100)는 페이지를 압축한 이후에 무선으로 압축된 데이터를 클라우드 서버(200) 등과 송수신하기 때문에, 페이지 번역기(126)는 페이지를 수신한 이후에 페이지를 복원하고, 복원된 페이지가 실제 페이지와 동일한지 검사한다.The
압축 캐시(127)는 압축된 페이지를 저장한다. 압축 캐시(127)에 저장된 페이지들은 가장 오래 사용되지 않은 순서대로 내보내진다(evict). 내보내진 페이지에 대한 정보는 스왑 매니저(125)를 통해 획득된다. The
벌크 버퍼(128)는 클라우드 서버(200)로 스왑-아웃 될 페이지들을 임시로 저장한다. 벌크 버퍼(128)는 네트워크 대역폭(network bandwidth)를 고려하여, 복수의 페이지들을 묶어서 클라우드 서버(200)로 전송할 수 있다.
The
도 4는 일 실시 예에 따른 모바일 디바이스가 페이지를 스왑-아웃 하는 동작을 설명하기 위한 도면이다.4 is a diagram for explaining an operation of swapping out a page by a mobile device according to an exemplary embodiment.
스왑 대몬(123)은 메모리(110)에 저장 공간이 부족한 경우, 메모리(110)에 저장된 페이지들 중에서 가장 오래된 페이지를 스왑-아웃 한다. 메모리(110)에는 페이지 단위로 데이터가 저장되어 있다. 스왑 대몬(123)은 스왑-아웃 할 페이지를 페이지 번역기(126)로 출력한다. 메모리에 저장된 페이지는 액티브 페이지 리스트(active page list)와 인액티브 페이지 리스트(inactive page list)로 구분된다. 리스트들은 LRU(least-recently-used) policy로 관리된다.When the storage space in the
페이지 번역기(126)는 페이지를 압축하고, 압축된 페이지를 압축 캐시(127)로 출력한다.The
스왑 매니저(125)는 압축된 페이지를 로컬 스토리지(130)에 저장할지, 클라우드 서버(200)에 저장할지 결정한다. The
스왑 매니저(125)는 압축된 페이지가 이전에 스왑-아웃 또는 스왑-인 된 횟수에 따라 저장 위치를 결정할 수 있다. 스왑 매니저(125)는 압축된 페이지가 이전에 스왑-아웃 또는 스왑-인 된 횟수가 임계값 이상인 경우에는 압축된 페이지를 로컬 스토리지(130)에 저장하고, 그렇지 않은 경우에는 클라우드 서버(200)에 저장한다.The
스왑 매니저(125)는 델타 페이지의 사이즈에 따라 저장 위치를 결정할 수 있다. 스왑 매니저(125)는 델타 페이지의 사이즈가 임계값 이상인 경우에는 클라우드 서버(200)에 저장하고, 그렇지 않은 경우에는 로컬 스토리지(130)에 저장한다. 델타 페이지의 사이즈가 작다는 것은 레퍼런스 페이지(reference page)와 유사하다는 것을 의미하므로, 레퍼런스 페이지가 저장된 로컬 스토리지(130)에 델타 페이지를 저장한다.The
스왑 매니저(125)는 다음과 같은 규칙에 따라 페이지의 저장 위치를 결정할 수 있다. The
1) 한번 스왑-아웃 되고 사용되지 않는 페이지는 로컬 스토리지(130)의 수명을 위해 클라우드 서버(200)로 전송1) Once swapped out and unused pages are transmitted to the
2) 자주 접속(access)되는 페이지들2) Frequently accessed pages
- 제1 페이지(Read-intensive page)는 스왑-아웃 된 이후 자주 스왑-인 되고, 클린 형태로 스왑-아웃 되기 때문에, 추가적인 페이지 기록(page write)가 필요하지 않으므로 로컬 스토리지(130)에 저장- Since the first page (read-intensive page) is frequently swapped in after being swapped out and swapped out in a clean form, additional page writes are not required, so it is stored in the
- 제2 페이지(Read/Write-intensive page with small delta potion)는 스윕-인, 스윕-아웃 모두 빈번히 발생하지만, 로컬 스토리지(130)에 저장된 레퍼런스 페이지와 일부만 다르고, 델타 페이지의 사이즈가 작기 때문에, 로컬 스토리지(130)에 저장- The second page (Read/Write-intensive page with small delta potion) frequently occurs both sweep-in and sweep-out, but is only partially different from the reference page stored in the
- 제3 페이지(Read/write-intensive page with big delta potion)는 레퍼런스 페이지와 다르고, 델타 페이지의 사이즈도 크기 때문에 클라우드 서버(200)에 저장- The third page (Read/write-intensive page with big delta potion) is different from the reference page, and since the size of the delta page is also large, it is stored in the
3) 공유/센서티브 페이지들(Shared/sensitive pages)3) Shared/sensitive pages
2 이상의 어플리케이션에 의해 동시에 영향을 받는 공유 페이지들이나, 센서티브 페이지들, 플래폼 페이지들(platform pages)은 다른 조건에 우선하여 로컬 스토리지(130)에 우선적으로 저장. 공유 페이지들은 copy-on-write(COW) 방식으로 메모리(110)에 할당되기 때문에 새로운 페이지가 복사되기 이전까지는 복수의 어플리케이션들에 의해 공유된다. COW란 하나의 페이지가 공유될 때, 임의의 공유자(sharer)에 의해 페이지가 변경되면 다른 공유자들이 영향을 받는다. 따라서, 공유자가 변경할 페이지를 복제하여, 공유자 자신만의 페이지를 생성한 후 생성된 페이지를 수정한다.
Shared pages that are simultaneously affected by two or more applications, or sensitive pages, and platform pages are preferentially stored in the
벌크 버퍼(128)는 네트워크 대역폭(network bandwidth)를 고려하여, 복수의 페이지들을 묶어서 클라우드 서버(200)로 전송한다. 이때, 벌크 버퍼(128)는 페이지의 해쉬(hash) 값을 포함한 메타 정보(meta information)만을 우선적으로 클라우드 서버(200)로 전송하여, 클라우드 서버(200)에 동일한 페이지가 저장되어 있는지 확인하고, 동일하지 않은 페이지들만 클라우드 서버(200)로 전송한다.
The
도 5는 일 실시 예에 따른 모바일 디바이스의 동작을 설명하기 위한 순서도이다. 모바일 디바이스(100)는 스왑-아웃 할 페이지를 결정하고 압축할 수 있다.5 is a flowchart illustrating an operation of a mobile device according to an exemplary embodiment. The
단계 501에서 모바일 디바이스(100)는 메모리(110)의 저장 공간이 부족한지 확인한다. 메모리(110)의 저장 공간이 부족하면 단계 502로 진행한다. 모바일 디바이스(100)는 프로그램 등을 실행하면서 발생하는 데이터를 메모리(110)에 저장하는데, 메모리(110)에 저장 공간이 부족하면 발생된 데이터를 저장할 수 없으므로, 데이터 저장 요청이 발생하면 메모리(110)의 저장 공간을 확인한다. In
단계 502에서 모바일 디바이스(100)는 스왑 대몬(123)을 활성화한다. 스왑 대몬(123)은 메모리(110)의 저장 공간을 확보하기 위해 메모리(110)에 저장된 페이지들 중 일부를 다른 저장 공간으로 스왑-아웃 한다.In
단계 503에서 모바일 디바이스(100)는 스왑-아웃 할 페이지가 존재하는지 확인한다. 스왑-아웃 할 페이지가 존재하면 단계 504로 진행하고, 그렇지 않으면 단계 501로 진행한다. 스왑-아웃 할 페이지는 메모리(110)에 저장되어 있으나, 일정 시간 동안 사용되지 않은 페이지이다. In
단계 504에서 모바일 디바이스(100)는 어플리케이션들과의 페이지의 맵핑(mapping)을 제거한다. 맵핑을 제거한다는 것은 사용하는 정보(예를 들어, 페이지 테이블)에서, 페이지가 저장된 메모리(110)에 접근하기 위한 정보를 삭제하고, 스왑-아웃 된 위치를 나타내는 정보(예를 들어, 스왑 엔트리)를 기록하는 것을 의미한다.In
단계 505에서 모바일 디바이스(100)는 스왑-아웃 할 페이지가 더티 페이지(dirty page)인지 판단한다. 더티 페이지는 이전에 스왑-아웃 된 페이지가 아니거나, 값이 수정된 페이지를 의미한다. 스왑-아웃 할 페이지가 더티 페이지인 경우 단계 507로 진행하고, 그렇지 않으면 506으로 진행한다. In
단계 506에서 모바일 디바이스(100)는 스왑-아웃 할 페이지를 메모리(110)에서 제거한다. 스왑-아웃 할 페이지가 더티 페이지가 아니면, 이미 스왑 영역에 스왑-아웃 할 페이지의 복사본(copy)가 저장되어 있으므로 모바일 디바이스(100)는 추가로 스왑-아웃 할 필요가 없다.In
단계 507에서 모바일 디바이스(100)는 스왑-아웃 된 이전 페이지가 로컬 스토리지(130)에 존재하는지 확인한다. 스왑-아웃 된 이전 페이지는 부모 페이지 또는 레퍼런스 페이지로 지칭될 수 있다. 다시 말해서, 이전 페이지는 현재 스왑-아웃 할 페이지와 논리적으로 동일한(logically same) 페이지이다. 이전 페이지와 논리적으로 동일한 페이지는 메모리(110)에서 동일한 주소를 가지며, 동일한 프로그램에 의해 할당된 페이지들이다. 페이지가 메모리(110)로부터 스왑-아웃 될 때 페이지는 메모리(110)에서 삭제되고, 다시 스왑-인 되면 메모리(110)에 기록됩니다. 이때, 스왑-아웃 되는 페이지와 스왑-인 되는 페이지를 추적하지 않으면, 모바일 디바이스(100)는 스왑-아웃 된 페이지와 스왑-인 되는 페이지를 서로 다른 페이지로 인식하게 된다. 따라서, 모바일 디바이스(100)는 스왑-아웃 되는 페이지와 스왑-인 되는 페이지를 추적할 수 있으며, 페이지의 주소 및 페이지를 이용하는 프로그램이 동일하면 2개의 페이지는 부모-자식 관계의 페이지로 인식한다.In
단계 508에서 모바일 디바이스(100)는 스왑-아웃 할 페이지와 이전 페이지를 이용하여 델타 페이지를 생성한다. 모바일 디바이스(100)는 현재 스왑-아웃 할 페이지와 이전 페이지에 대해 XOR 연산하여 델타 페이지를 생성할 수 있다.In
단계 509에서 모바일 디바이스(100)는 델타 비율이 1/3 이상인지 판단한다. 델타 비율은 델타 페이지의 값들 중 1인 값의 비율을 나타낸다. 델타 비율이 1/3 이상이면 델타 페이지를 생성할 장점이 없으므로, 단계 510으로 진행하고, 그렇지 않으면 단계 511로 진행한다. 모바일 디바이스(100)는 델타 비율을 1/n 으로 설정할 수 있다. 여기서 n은 자연수 일 수 있으며, 모바일 디바이스(100)는 설정된 델타 비율에 기초하여, 델타 데이터의 이용 여부를 결정할 수 있다.In
단계 510에서 모바일 디바이스(100)는 로컬 스토리지(130)에 저장된 이전 페이지를 무효화(invalidate)하고, 델타 페이지를 제거한다. 델타 비율이 1/3 이상이면 이전 페이지가 스왑-아웃 될 페이지의 레퍼런스 페이지로서의 역할을 할 수 없으므로, 이전 페이지를 무효화한다.In
단계 511에서 모바일 디바이스(100)는 스왑-아웃 할 페이지를 압축 후 압축 캐시(127)에 저장한다. 다시 말해서, 모바일 디바이스(100)는 델타 페이지를 압축 캐시(127)에 저장하거나 스왑-아웃 할 페이지를 압축하여 압축 캐시(127)에 저장한다.
In
도 6은 일 실시 예에 따른 모바일 디바이스의 동작을 설명하기 위한 순서도이다. 모바일 디바이스(100)는 스왑-아웃 할 페이지를 로컬 스토리지(130) 또는 클라우드 서버(200)에 저장할 수 있다. 6 is a flowchart illustrating an operation of a mobile device according to an exemplary embodiment. The
단계 601에서 모바일 디바이스(100)는 압축 캐시(127)에 저장 공간이 없는지 판단한다. 압축 캐시에 저장 공간이 없으면 단계 602로 진행한다.In
단계 602에서 모바일 디바이스(100)는 압축 캐시(127)에서 추출(evict)될 페이지를 결정한다. 예를 들어, 모바일 디바이스(100)는 압축 캐시(127)에 저장된 페이지들 중에서 가장 오래된 페이지를 추출한다.In
단계 603에서 모바일 디바이스(100)는 추출된 페이지가 자주 사용되는 페이지인지 판단한다. 만약, 추출된 페이지가 자주 사용되는 페이지이면 단계 604로 진행하고, 그렇지 않으면 단계 605로 진행한다.In
단계 604에서 모바일 디바이스(100)는 추출된 페이지를 로컬 스토리지(130)에 기록한다(write). 추출된 페이지는 자주 사용되는 페이지이므로 클라우드 서버(200) 대신에 로컬 스토리지(130)에 저장한다.In
단계 605에서 모바일 디바이스(100)는 추출된 페이지를 벌크 버퍼(128)에 기록한다.In
단계 606에서 모바일 디바이스(100)는 벌크 버퍼(128)에 저장 공간이 없으면, 벌크 버퍼(128)에 저장된 페이지들의 메타 데이터를 클라우드 서버(200)로 전송한다. 페이지들은 페이지의 unique id 및 device id를 key로 사용하고, 페이지의 데이터를 value로 사용하는 key-value store 형태로 저장된다. 따라서, 모바일 디바이스(100)와 클라우드 서버(200)는 key를 이용하여 페이지의 스왑-인, 스왑-아웃 할 수 있다. 메타 데이터는 페이지를 이용하는 process의 id, 페이지의 address 또는 페이지의 unique id등을 나타낸다. In
단계 607에서 모바일 디바이스(100)는 클라우드 서버(200)에 중복된 페이지가 있는지 확인한다. 모바일 디바이스(100)는 클라우드 서버(200)로 중복된 페이지가 있는지 확인하는 요청을 전송할 수 있으며, 클라우드 서버(200)로부터 요청에 대한 응답(response)를 수신한다. 모바일 디바이스(100)는 확인 요청과 함께 메타 데이터를 클라우드 서버(200)로 전송한다. 클라우드 서버(200)는 수신된 메타 데이터와 동일한 메타 데이터를 갖는 페이지가 저장되어 있는지 확인하고, 확인 결과를 모바일 디바이스(100)로 전송한다. 만약, 클라우드 서버(200)에 중복된 페이지가 없으면, 단계 608로 진행하고, 있으면 단계 609로 진행한다.In
단계 608에서 모바일 디바이스(100)는 클라우드 서버(200)에 저장된 페이지와 중복되지 않는 페이지들을 클라우드 서버(200)로 전송한다. In
단계 609에서 모바일 디바이스(100)는 벌크 버퍼(128)를 초기화한다. 모바일 디바이스(100)는 벌크 버퍼(128)에 기록된 페이지들을 클라우드 서버(200)로 모두 전송하였으므로, 벌크 버퍼(128)를 초기화한다.
In
도 7은 일 실시 예에 따른 모바일 디바이스가 페이지를 스왑-인 하는 동작을 설명하기 위한 도면이다. 도 7을 참조하면, 모바일 디바이스(100)는 페이지 폴트가 발생하면, 다양한 경로(path)를 통해 페이지를 스왑-인 할 수 있다. 구체적으로, 모바일 디바이스(100)는 메모리(110)를 제외한 저장 공간에 저장된 페이지를 메모리(110)에 기록한다.7 is a diagram for describing an operation of a page swap-in by a mobile device according to an embodiment. Referring to FIG. 7 , when a page fault occurs, the
어플리케이션(140)이 페이지를 참조하려고 메모리에 접속하였으나, 메모리에 참조하려는 페이지가 없는 경우(page missing), 페이지 폴트 핸들러(121)가 활성화된다. 페이지 폴트 핸들러(121)는 스왑 캐시(122)를 확인하여 프리패치 등의 이유로 이미 요청된 페이지가 스왑 캐시(122)에 저장되어 있는지 확인한다. 페이지 폴트 핸들러(121)는 스왑 캐시(122)에 요청된 페이지가 없는 경우, 스왑 매니저(125)로부터 요청된 페이지에 대한 정보를 수신하여 요청된 페이지를 수신할 경로를 결정한다.When the
페이지 폴트 핸들러(121)는 페이지 타입에 따라 다음과 같이 스왑-인 한다.The
1) 제로 페이지(zero page)는 페이지가 스왑-아웃 될 때 NULL 인 페이지이므로, 모바일 디바이스(100)는 불필요한 스왑-인 또는 스왑-아웃 없이 바로 페이지를 회복(recover)한다.1) Since a zero page is a page that is NULL when a page is swapped out, the
2) 캐시 페이지(Cached page)는 압축 캐시(127)에 저장되어 있는 페이지이므로, 모바일 디바이스(100)는 복원하여 스왑-인 한다.2) Since the cached page is a page stored in the
3) 버퍼 페이지(buffered page)는 벌크 버퍼(128)에 저장되어 있는 페이지이므로, 모바일 디바이스(100)는 로컬 스토리지(130)를 통해 스왑-인 한다.3) Since a buffered page is a page stored in the
4) 리모트 페이지(remote page)는 클라우드 서버(200)에 저장되어 있는 페이지이므로, 모바일 디바이스(100)는 클라우드 서버(200)에 페이지 요청을 전송하여 클라우드 서버(200)로부터 스왑-인 한다.4) Since the remote page is a page stored in the
5) 하이브리드 페이지(hybrid page)는 로컬 스토리지(130)에 원본 페이지가 저장되어 있고, 델타 페이지가 클라우드 서버(200)에 저장되어 있는 페이지이므로, 모바일 디바이스(100)는 로컬 스토리지(130) 및 클라우드 서버(200)로부터 수신된 원본 페이지와 델타 페이지를 합쳐서 스왑-인 한다.
5) Since the hybrid page is a page in which the original page is stored in the
도 8은 일 실시 예에 따른 모바일 디바이스가 페이지를 스왑-인 하는 동작을 설명하기 위한 순서도이다. 도 8을 참조하면, 모바일 디바이스(100)는 페이지의 특성에 따라 페이지를 스왑-인 한다.8 is a flowchart illustrating an operation of a page swap-in by a mobile device according to an exemplary embodiment. Referring to FIG. 8 , the
단계 801에서, 모바일 디바이스(100)는 페이지 폴트가 스왑 때문에 발생했는지를 판단한다. 만약, 페이지 폴트가 스왑 때문에 발생하였으면, 단계 802로 진행한다. In
단계 802에서, 모바일 디바이스(100)는 스왑 캐시(122)에 스왑-아웃 된 페이지가 존재하는지 판단한다. 만약, 스왑 캐시(122)에 스왑-아웃 된 페이지가 존재하면, 단계 805로 진행하고, 그렇지 않으면 단계 803으로 진행한다. In
단계 803에서, 모바일 디바이스(100)는 스왑-아웃 된 페이자가 로컬 스토리지(130)에 존재하는지 판단한다. 만약, 스왑-아웃 된 페이자가 로컬 스토리지(130)에 존재하면, 단계 804로 진행하고, 그렇지 않으면 단계 806으로 진행한다.In
단계 804에서, 모바일 디바이스(100)는 로컬 스토리지(130)로부터 페이지를 스왑-인 한다. In step 804 , the
단계 805에서, 모바일 디바이스(100)는 페이지를 복구하여 스왑-인 한다. 모바일 디바이스(100)는 압축된 페이지를 복원하고, 레퍼런스 페이지와 델타 페이지를 이용하여 페이지를 복구한다(recover).In
단계 806에서, 모바일 디바이스(100)는 스왑-아웃 된 페이지가 델타 페이지인지 판단한다. 모바일 디바이스(100)는 스왑-인을 필요로 하는 페이지가 이전에 스왑-아웃 될 때 델타 페이지의 형태로 스왑-아웃 되었는지 확인한다. 만약, 스왑-아웃 된 페이지가 델타 페이지이면, 단계 807로 진행하고, 그렇지 않으면 단계 808로 진행한다.In
단계 807에서, 모바일 디바이스(100)는 로컬 스토리지(130)로부터 레퍼런스 페이지를 독출한다. In
단계 808에서, 모바일 디바이스(100)는 스왑-아웃 된 페이지가 클라우드 서버(200)에 존재하는지 확인한다. 만약, 스왑-아웃 된 페이지가 클라우드 서버(200)에 존재하면, 단계 809로 진행하고, 그렇지 않으면 단계 810으로 진행한다. In
단계 809에서, 모바일 디바이스(100)는 클라우드 서버(200)에 요청하여, 스왑-아웃 된 페이지를 독출한다. 모바일 디바이스(100)는 클라우드 서버(200)로부터 수신된 페이지를 복구한다.In
단계 810에서, 모바일 디바이스(100)는 압축 캐시(127) 또는 벌크 버퍼(128)에 스왑-아웃 된 페이지가 존재하는지 확인한다. 만약, 압축 캐시(127) 또는 벌크 버퍼(128)에 스왑-아웃 된 페이지가 존재하면, 단계 805로 진행하고, 그렇지 않으면 단계 811로 진행한다. In
단계 811에서, 모바일 디바이스(100)는 스왑-아웃 된 페이지를 찾을 수 없으므로 에러를 반환한다.
In
도 9는 일 실시 예에 따른 클라우드 서버를 설명하기 위한 도면이다. 도 9를 참조하면, 클라우드 서버(200)는 모바일 디바이스(100)의 스왑-아웃 요청에 따라 스왑-아웃 된 페이지를 스토리지 서버(221)에 저장할 수 있다. 클라우드 서버(200)는 마스터 서버(210) 및 페이지 풀(220)을 포함한다. 마스터 서버(210)는 요청 핸들러(211) 및 페이지 매니저(212)를 포함하며, 페이지 풀(220)는 복수의 스토리지 서버(221)을 포함한다.9 is a diagram for explaining a cloud server according to an embodiment. Referring to FIG. 9 , the
요청 핸들러(211)는 모바일 디바이스(100)로부터 스왑-아웃 요청을 수신한다. 구체적으로, 요청 핸들러(211)는 페이지-기록(page-write) 요청과 함께 기록할 페이지를 수신한다. 요청 핸들러(211)는 수신된 요청을 페이지 매니저(212)로 출력한다.The
페이지 매니저(212)는 스왑-아웃 된 페이지를 콘텐트 해싱(content hashing)을 기준으로 중복된 페이지들을 관리한다. 콘텐트 해싱이란 페이지의 내용을 해시 계산하여 작은 사이즈의 hash value를 생성하고, 페이지가 스왑-아웃 될 때, 일차적으로 hash value만을 클라우드 서버(200)로 전송하여 서버에 이미 동일한 내용의 페이지가 존재하는지 체크하는 과정을 의미한다. 구체적으로, 페이지 매니저(212)는 저장된 페이지들 중에서 스왑-아웃 된 페이지의 해쉬 값과 동일한 해쉬 값을 갖는 페이지들이 페이지들이 있으면, 스왑-아웃 된 페이지의 내용을 공유 시킨다. 예를 들어, 도 9에서 keyA 및 keyb는 pageA를 참조하고, keyc는 pageC를 참조한다. keyA 및 keyb가 pageA를 참조하는 것은 keyA, keyB에 대응하는 페이지가 pageA의 데이터를 공유하고 있다는 것을 나타낸다. keyA, keyb는 페이지의 메타 데이터에 포함된 key 정보이며, pageA는 실제 데이터를 나타낸다. PageA는 keyA 및 keyb에 의해 공유되므로, pgaeA에 대한 수정 요청이 수신되더라도, 페이지 매니저(212)는 pageA를 바로 수정하지 않고, pageA를 복사한 후 복사된 pageA를 수정한다. 페이지의 메타 데이터는 process id, address, key, hash 등의 정보를 포함하고, 페이지의 내용을 참조한다. 따라서, 여러 페이지의 메타 데이터들이 하나의 페이지를 동시에 참조할 수 있다. 만약, 페이지의 내용이 같다면, 여러 페이지들이 동일한 데이터를 공유한다.The
페이지 매니저(212)는 저장된 페이지들 중에서 스왑-아웃 된 페이지의 해쉬 값과 동일한 해쉬 값을 갖는 페이지들이 페이지들이 없으면, 페이지 풀(220) 중 어느 하나의 스토리지 서버(221)에 스왑-아웃 된 페이지를 저장한다.In the
페이지 매니저(212)는 스왑-아웃 된 페이지들의 메타 데이터를 관리하여, 이후에 프리패치를 위해 메타 데이터를 이용한다.The
클라우드 서버(200)는 동일한 페이지를 복수의 스토리지 서버(221)에 기록할 수 있다. 만약, 어느 하나의 스토리지 서버(221)에 접근이 불가능할 때, 클라우드 서버(200)는 동일한 페이지를 저장하고 있는 다른 스토리지 서버(221)에 접근하여 페이지를 독출할 수 있다. 동일한 페이지를 복수의 스토리지 서버(221)에 저장하는 것을 복제(replication)이라고 하며, 클라우드 서버(200)는 적어도 2 이상의 스토리지 서버(221)에 동일한 페이지를 저장할 수 있다.
The
도 10은 일 실시 예에 따른 클라우드 서버를 설명하기 위한 도면이다. 도 10을 참조하면, 클라우드 서버(200)는 모바일 디바이스(100)의 스왑-인 요청에 따라 모바일 디바이스(100)로 페이지를 반환할 수 있다.10 is a diagram for explaining a cloud server according to an embodiment. Referring to FIG. 10 , the
요청 핸들러(211)는 모바일 디바이스(100)로부터 스왑-인 요청을 수신하면, 수신된 요청을 페이지 매니저(212)로 출력한다.When receiving the swap-in request from the
페이지 매니저(212)는 요청된 페이지가 저장된 위치를 확인하고, 스토리지 서버(221)에 저장된 페이지를 모바일 디바이스(100)로 반환한다. 페이지 매니저(212)는 페이지들의 위치 정보를 관리하고 있으므로, 위치 정보를 통해 요청된 페이지가 어디에 저장되어 있는지 확인할 수 있다.The
또한, 페이지 매니저(212)는 요청된 페이지와 함께 유사 페이지들을 모바일 디바이스(100)로 프리패치할 수 있다. 페이지 매니저(212)는 process id로 페이지를 분류하고, 분류된 페이지들의 리스트를 관리하고 있다. 따라서, 페이지 매니저(212)는 모바일 디바이스(100)로부터 요청된 페이지를 반환하면서, 요청된 페이지와 동일한 process id를 갖고, 근처에 저장된 페이지를 함께 모바일 디바이스(100)로 전송할 수 있다. Also, the
페이지 매니저(212)는 스왑-인 요청이 수신되기 이전에 모바일 디바이스(100)의 메모리(110)의 저장 공간이 여유가 있는 경우, 페이지 폴트가 발생하기 이전에 실행 중인 어플리케이션에 대한 페이지를 프리패치할 수 있다. 예를 들어, 페이지 매니저(212)는 process id별로 페이지가 스왑-아웃 된 순서를 기록한 리스트를 관리하고, 가장 최근에 스왑-아웃 된 페이지들을 먼저 프리패치할 수 있다.
If the storage space of the
도 11은 일 실시 예에 따른 모바일 디바이스의 동작 방법을 설명하기 위한 순서도이다. 11 is a flowchart illustrating a method of operating a mobile device according to an exemplary embodiment.
단계 1110에서, 모바일 디바이스(100)는 로컬 스토리지(130) 또는 통신으로 연결된 클라우드 서버(200)로 메모리(110)에 저장된 페이지를 스왑-아웃 한다.In step 1110 , the
단계 1120에서, 모바일 디바이스(100)는 페이지 폴트가 발생된 페이지의 특성 및 페이지 폴트가 발생된 페이지의 저장 위치에 따라 스왑 아웃 된 페이지를 스왑-인 한다.
In
본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다. The device according to the present embodiments includes a processor, a memory for storing and executing program data, a permanent storage such as a disk drive, a communication port for communicating with an external device, a touch panel, a key, a button, and the like. It may include an interface device and the like. Methods implemented as software modules or algorithms may be stored on a computer-readable recording medium as computer-readable codes or program instructions executable on the processor. Here, the computer-readable recording medium includes a magnetic storage medium (eg, read-only memory (ROM), random-access memory (RAM), floppy disk, hard disk, etc.) and an optically readable medium (eg, CD-ROM). ) and DVD (Digital Versatile Disc)). The computer-readable recording medium may be distributed among network-connected computer systems, so that the computer-readable code may be stored and executed in a distributed manner. The medium may be readable by a computer, stored in a memory, and executed on a processor.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.This embodiment may be represented by functional block configurations and various processing steps. These functional blocks may be implemented in any number of hardware and/or software configurations that perform specific functions. For example, an embodiment may be an integrated circuit configuration, such as memory, processing, logic, look-up table, etc., capable of executing various functions by the control of one or more microprocessors or other control devices. can be hired Similar to how components may be implemented as software programming or software components, this embodiment includes various algorithms implemented in a combination of data structures, processes, routines, or other programming constructs, including C, C++, Java ( Java), assembler, etc. may be implemented in a programming or scripting language. Functional aspects may be implemented in an algorithm running on one or more processors. In addition, the present embodiment may employ the prior art for electronic environment setting, signal processing, and/or data processing. Terms such as “mechanism”, “element”, “means” and “configuration” may be used broadly and are not limited to mechanical and physical configurations. The term may include the meaning of a series of routines of software in association with a processor or the like.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. The specific implementations described in this embodiment are examples, and do not limit the technical scope in any way. For brevity of the specification, descriptions of conventional electronic components, control systems, software, and other functional aspects of the systems may be omitted. In addition, the connection or connection members of lines between the components shown in the drawings illustratively represent functional connections and/or physical or circuit connections, and in an actual device, various functional connections, physical connections that are replaceable or additional may be referred to as connections, or circuit connections.
본 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.In this specification (especially in the claims), the use of the term “above” and similar referential terms may be used in both the singular and the plural. In addition, when a range is described, individual values within the range are included (unless there is a description to the contrary), and each individual value constituting the range is described in the detailed description. Finally, the steps constituting the method may be performed in an appropriate order unless the order is explicitly stated or there is no description to the contrary. It is not necessarily limited to the order of description of the above steps. The use of all examples or exemplary terms (eg, etc.) is merely for describing the technical idea in detail, and the scope is not limited by the examples or exemplary terms unless limited by the claims. In addition, those skilled in the art will appreciate that various modifications, combinations, and changes can be made in accordance with design conditions and factors within the scope of the appended claims or their equivalents.
100: 모바일 디바이스
110: 메모리
120: 프로세서
130: 로컬 스토리지100: mobile device
110: memory
120: processor
130: local storage
Claims (15)
상기 모바일 디바이스는,
상기 메모리;
상기 로컬 스토리지; 및
적어도 하나의 프로세서를 포함하고,
상기 적어도 하나의 프로세서는,
상기 메모리의 저장 공간 부족을 식별하고;
상기 메모리의 저장 공간 부족에 기초하여, 상기 메모리에 저장된 페이지들중에서 상기 메모리에서 제거될 제1 페이지를 식별하고;
상기 메모리에서 상기 로컬 스토리지로 스왑-아웃 된 제2 페이지를 식별하고;
상기 제1 페이지와 상기 제2 페이지를 이용하여, 상기 제2 페이지로부터 상기 제1 페이지를 획득하기 위한 제3 페이지를 생성하고;
상기 제3 페이지의 압축률에 기초하여, 상기 제1 페이지 또는 상기 제3 페이지 중에서 스왑-아웃 할 페이지를 결정하고;
상기 결정된 페이지의 스왑-아웃 횟수가 기 설정된 임계 값 이상인 것에 기초하여, 상기 로컬 스토리지에 상기 결정된 페이지를 스왑-아웃하고;
상기 결정된 페이지의 스왑-아웃 횟수가 기 설정된 임계 값 미만인 것에 기초하여, 상기 클라우드 서버에 상기 결정된 페이지를 스왑-아웃하는 모바일 디바이스.A mobile device using a cloud server connected through local storage and communication as a swap space for pages stored in memory,
The mobile device is
the memory;
the local storage; and
at least one processor;
the at least one processor,
identify insufficient storage space in the memory;
identify a first page to be removed from the memory from among the pages stored in the memory based on the insufficient storage space of the memory;
identify a second page swapped out from the memory to the local storage;
generating a third page for obtaining the first page from the second page using the first page and the second page;
determining a page to be swapped out from among the first page or the third page based on the compression ratio of the third page;
swap-out the determined page to the local storage based on a number of swap-outs of the determined page being equal to or greater than a preset threshold;
The mobile device swaps out the determined page to the cloud server based on the determined number of pages swap-out being less than a preset threshold.
상기 적어도 하나의 프로세서는 상기 로컬 스토리지에 상기 클라우드 서버로 스왑-아웃 할 페이지와 논리적으로 동일한 레퍼런스 페이지가 저장되어 있는 경우, 상기 스왑-아웃 할 페이지를 압축하여 압축된 페이지를 상기 클라우드 서버로 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스.The method of claim 1,
When the reference page logically identical to the page to be swapped out to the cloud server is stored in the local storage, the at least one processor compresses the page to be swapped out and swaps the compressed page to the cloud server- Mobile device characterized in that out.
상기 적어도 하나의 프로세서는 상기 스왑-아웃 할 페이지와 상기 레퍼런스 페이지를 XOR 연산을 통해 델타 페이지를 생성하고, 상기 클라우드 서버로 상기 델타 페이지를 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스.4. The method of claim 3,
The at least one processor generates a delta page by performing an XOR operation on the page to be swapped out and the reference page, and swaps out the delta page to the cloud server.
상기 적어도 하나의 프로세서는 스왑-아웃 할 페이지와 동일한 페이지가 상기 클라우드 서버에 저장되어 있는지 확인하고, 동일한 페이지가 저장되어 있지 않는 경우에만 상기 스왑-아웃 할 페이지를 상기 클라우드 서버로 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스.The method of claim 1,
the at least one processor checks whether the same page as the page to be swapped out is stored in the cloud server, and swaps out the page to be swapped out to the cloud server only when the same page is not stored Characterized by a mobile device.
상기 적어도 하나의 프로세서는 상기 클라우드 서버로 전송할 페이지들을 벌크 버퍼에 저장하고, 네트워크 대역폭(network bandwidth)을 고려하여 상기 벌크 버퍼에 저장된 페이지들을 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스.The method of claim 1,
The at least one processor stores pages to be transmitted to the cloud server in a bulk buffer, and swaps out the pages stored in the bulk buffer in consideration of network bandwidth.
상기 적어도 하나의 프로세서는 페이지 폴트(page fault) 발생시, 요청된 페이지가 저장된 위치 및 상기 페이지의 특성을 확인하여 상기 페이지를 상기 메모리로 스왑-인(swap-in) 하는 것을 특징으로 하는 모바일 디바이스.The method of claim 1,
and the at least one processor checks a location in which a requested page is stored and a characteristic of the page when a page fault occurs, and swaps the page into the memory.
상기 메모리의 저장 공간 부족을 식별하는 단계;
상기 메모리의 저장 공간 부족에 기초하여, 상기 메모리에 저장된 페이지들중에서 상기 메모리에서 제거될 제1 페이지를 식별하는 단계;
상기 메모리에서 상기 모바일 디바이스의 로컬 스토리지로 스왑-아웃 된 제2 페이지를 식별하는 단계;
상기 제1 페이지와 상기 제2 페이지를 이용하여, 상기 제2 페이지로부터 상기 제1 페이지를 획득하기 위한 제3 페이지를 생성하는 단계;
상기 제3 페이지의 압축률에 기초하여, 상기 제1 페이지 또는 상기 제3 페이지 중에서 스왑-아웃 할 페이지를 결정하는 단계;
상기 결정된 페이지의 스왑-아웃 횟수가 기 설정된 임계 값 이상인 것에 기초하여, 상기 로컬 스토리지에 상기 결정된 페이지를 스왑-아웃하는 단계; 및
상기 결정된 페이지의 스왑-아웃 횟수가 기 설정된 임계 값 미만인 것에 기초하여, 클라우드 서버에 상기 결정된 페이지를 스왑-아웃하는 단계를 포함하는 모바일 디바이스의 메모리 관리 방법.A method for a mobile device to manage memory, the method comprising:
identifying insufficient storage space in the memory;
identifying a first page to be removed from the memory from among the pages stored in the memory based on the insufficient storage space of the memory;
identifying a second page swapped out from the memory to local storage of the mobile device;
generating a third page for obtaining the first page from the second page using the first page and the second page;
determining a page to be swapped out from among the first page or the third page based on the compression ratio of the third page;
swapping out the determined page to the local storage based on the determined number of page swap-outs being equal to or greater than a preset threshold; and
and swapping out the determined page to a cloud server based on the determined number of page swap-outs being less than a preset threshold.
상기 클라우드 서버로 스왑-아웃 할 페이지와 논리적으로 동일한 레퍼런스 페이지가 상기 로컬 스토리지에 저장되어 있는 경우, 상기 스왑-아웃 할 페이지를 압축하여 압축된 페이지를 상기 클라우드 서버로 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스의 메모리 관리 방법.The method of claim 8, wherein the swap-out comprises:
When a reference page logically identical to a page to be swapped out to the cloud server is stored in the local storage, the page to be swapped out is compressed and the compressed page is swapped out to the cloud server A method for managing memory in a mobile device.
상기 스왑-아웃 할 페이지와 상기 레퍼런스 페이지를 XOR 연산을 통해 델타 페이지를 생성하고, 상기 클라우드 서버로 상기 델타 페이지를 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스의 메모리 관리 방법.The method of claim 10, wherein the swap-out comprises:
The memory management method of a mobile device, characterized in that the page to be swapped out and the reference page are XORed to generate a delta page, and the delta page is swapped out to the cloud server.
스왑-아웃 할 페이지와 동일한 페이지가 상기 클라우드 서버에 저장되어 있는지 확인하고, 동일한 페이지가 저장되어 있지 않는 경우에만 상기 스왑-아웃 할 페이지를 상기 클라우드 서버로 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스의 메모리 관리 방법.The method of claim 8, wherein the swap-out comprises:
Checking whether the same page as the page to be swapped out is stored in the cloud server, and swapping out the page to be swapped out to the cloud server only when the same page is not stored How to manage memory.
상기 클라우드 서버로 전송할 페이지들을 벌크 버퍼에 저장하고, 네트워크 대역폭(network bandwidth)을 고려하여 상기 벌크 버퍼에 저장된 페이지들을 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스의 메모리 관리 방법.The method of claim 8, wherein the swap-out comprises:
The memory management method of a mobile device, characterized in that the pages to be transmitted to the cloud server are stored in a bulk buffer, and the pages stored in the bulk buffer are swapped out in consideration of network bandwidth.
페이지 폴트(page fault) 발생시, 요청된 페이지가 저장된 위치 및 상기 페이지의 특성을 확인하여 상기 페이지를 상기 메모리로 스왑-인(swap-in) 하는 것을 특징으로 하는 모바일 디바이스의 메모리 관리 방법.The method of claim 8, wherein the swap-in step comprises:
When a page fault occurs, the memory management method of the mobile device, characterized in that the page is swapped into the memory by checking a location in which a requested page is stored and characteristics of the page.
A computer-readable recording medium in which a program for executing the method of any one of claims 8 and 10 to 14 in a computer is recorded.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140174294A KR102403063B1 (en) | 2014-12-05 | 2014-12-05 | Mobile device and management method of mobile device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140174294A KR102403063B1 (en) | 2014-12-05 | 2014-12-05 | Mobile device and management method of mobile device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160068481A KR20160068481A (en) | 2016-06-15 |
KR102403063B1 true KR102403063B1 (en) | 2022-05-30 |
Family
ID=56135154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140174294A KR102403063B1 (en) | 2014-12-05 | 2014-12-05 | Mobile device and management method of mobile device |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102403063B1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101995433B1 (en) * | 2017-09-13 | 2019-09-24 | 엘지전자 주식회사 | A digital device and method for controlling the same |
EP3933566A4 (en) | 2019-02-28 | 2022-10-12 | LG Electronics Inc. | Digital device and control method therefor |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007116683A (en) * | 2002-03-27 | 2007-05-10 | Marconi Intellectual Property (Ringfence) Inc | Telecommunication system |
JP2012150803A (en) * | 2011-01-11 | 2012-08-09 | Safenet Inc | Efficient volume encryption |
JP2013502639A (en) * | 2009-08-17 | 2013-01-24 | ファットスカンク・インコーポレーテッド | Device audit |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11348357A (en) * | 1998-06-04 | 1999-12-21 | Ricoh Co Ltd | Printing apparatus |
US8190682B2 (en) * | 2006-03-31 | 2012-05-29 | Amazon Technologies, Inc. | Managing execution of programs by multiple computing systems |
KR101213572B1 (en) * | 2010-12-03 | 2012-12-18 | 한국과학기술원 | Hypervisor-assisted User Application Memory Protection Method |
US9218206B2 (en) * | 2011-06-20 | 2015-12-22 | Microsoft Technology Licensing, Llc | Memory management model and interface for new applications |
US8832411B2 (en) * | 2011-12-14 | 2014-09-09 | Microsoft Corporation | Working set swapping using a sequentially ordered swap file |
KR101442091B1 (en) * | 2012-12-31 | 2014-09-25 | 고려대학교 산학협력단 | Method for managing memory of virtualization system |
-
2014
- 2014-12-05 KR KR1020140174294A patent/KR102403063B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007116683A (en) * | 2002-03-27 | 2007-05-10 | Marconi Intellectual Property (Ringfence) Inc | Telecommunication system |
JP2013502639A (en) * | 2009-08-17 | 2013-01-24 | ファットスカンク・インコーポレーテッド | Device audit |
JP2012150803A (en) * | 2011-01-11 | 2012-08-09 | Safenet Inc | Efficient volume encryption |
Also Published As
Publication number | Publication date |
---|---|
KR20160068481A (en) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6556911B2 (en) | Method and apparatus for performing an annotated atomic write operation | |
US10042779B2 (en) | Selective space reclamation of data storage memory employing heat and relocation metrics | |
US9141529B2 (en) | Methods and apparatus for providing acceleration of virtual machines in virtual environments | |
US9910777B2 (en) | Enhanced integrity through atomic writes in cache | |
US9817765B2 (en) | Dynamic hierarchical memory cache awareness within a storage system | |
US9569122B2 (en) | System, method and a non-transitory computer readable medium for transaction aware snapshot | |
US9361032B2 (en) | Management of server cache storage space | |
US9772949B2 (en) | Apparatus, system and method for providing a persistent level-two cache | |
US10049036B2 (en) | Reliable distributed messaging using non-volatile system memory | |
US9767015B1 (en) | Enhanced operating system integrity using non-volatile system memory | |
TW201237624A (en) | Two-level system main memory | |
US9760480B1 (en) | Enhanced logging using non-volatile system memory | |
US10061523B2 (en) | Versioning storage devices and methods | |
TWI771933B (en) | Method for performing deduplication management with aid of command-related filter, host device, and storage server | |
US20160179672A1 (en) | Mirroring a cache having a modified cache state | |
US10089220B1 (en) | Saving state information resulting from non-idempotent operations in non-volatile system memory | |
KR102403063B1 (en) | Mobile device and management method of mobile device | |
US11315028B2 (en) | Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system | |
US10922003B1 (en) | Realizing host-assisted device-level data deduplication on solid-state data storage devices with embedded non-volatile memory | |
US10168916B2 (en) | System, method and a non-transitory computer readable medium for reduction of consumption of storage system resources | |
KR20150087990A (en) | System and Method for Caching Disk Image File of Full-Cloned Virtual Machine | |
US11327664B1 (en) | Fast small write forwarding with non-temporal cache memory |
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 |