KR102403063B1 - Mobile device and management method of mobile device - Google Patents

Mobile device and management method of mobile device Download PDF

Info

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
Application number
KR1020140174294A
Other languages
Korean (ko)
Other versions
KR20160068481A (en
Inventor
김장우
김준성
채동주
Original Assignee
삼성전자주식회사
포항공과대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 포항공과대학교 산학협력단 filed Critical 삼성전자주식회사
Priority to KR1020140174294A priority Critical patent/KR102403063B1/en
Publication of KR20160068481A publication Critical patent/KR20160068481A/en
Application granted granted Critical
Publication of KR102403063B1 publication Critical patent/KR102403063B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address 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

모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법{Mobile device and management method of mobile device}Mobile device and memory management method of a mobile device {Mobile device and management method of mobile device}

개시된 실시 예들은 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법에 관한 것이다.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 mobile device 100 may use the cloud server 200 as a swap space. Swap is a technique for effectively allocating a working set of memory to the memory of the mobile device 100 . When the space to store data in the memory is insufficient, the mobile device 100 swaps out data that has not been used for a long time in the memory. Swapping out refers to moving data from memory to another storage space. For example, when the memory stores data in page units, the mobile device 100 may store a page stored in the memory in a local storage, and store only information indicating a location in which the page is stored in the memory. The memory may be a volatile storage medium, and the local storage may be a non-volatile storage medium such as a hard disk.

모바일 디바이스(100)는 통신으로 연결된 클라우드 서버(200)의 저장 공간을 스왑 공간으로서 이용할 수 있다. 모바일 디바이스(100)는 크기의 제약으로 인하여 저장 공간이 한정된다. 따라서, 모바일 디바이스(100)는 클라우드 서버(200)로 페이지를 스왑-아웃 하여, 클라우드 서버(200)에 페이지를 저장할 수 있다. 도 1에서는 모바일 디바이스(100)가 클라우드 서버(200)를 이용하는 것을 예를 들어 도시하고 있으나, 모바일 디바이스(100)는 모바일 디바이스(100)와 무선 또는 유선으로 연결되어 데이터를 송수신할 수 있는 모든 전자 기기의 저장 공간을 스왑 공간으로 이용할 수 있다. 예를 들어, 모바일 디바이스(100)는 또 다른 모바일 디바이스를 이용할 수 있으며, 데스크 탑, 태블릿 등을 이용할 수도 있다.The mobile device 100 may use a storage space of the cloud server 200 connected through communication as a swap space. The storage space of the mobile device 100 is limited due to size restrictions. Accordingly, the mobile device 100 may swap-out the page to the cloud server 200 and store the page in the cloud server 200 . Although FIG. 1 illustrates that the mobile device 100 uses the cloud server 200 as an example, the mobile device 100 is connected to the mobile device 100 wirelessly or by wire to transmit and receive data. You can use the device's storage space as swap space. For example, the mobile device 100 may use another mobile device, a desktop, a tablet, or the like.

클라우드 서버(200)는 모바일 디바이스(100)의 요청에 따라 페이지를 스왑-아웃 또는 스왑-인 한다. 클라우드 서버(200)는 충분한 저장 공간을 포함하고 있으며, 모바일 디바이스(100)로부터 페이지를 저장해줄 것을 요청 받으면, 수신된 페이지를 내부 메모리 또는 스토리지에 저장한다. 또한, 클라우드 서버(200)는 모바일 디바이스(100)로부터 페이지를 전송해줄 것을 요청 받으면, 저장된 페이지를 모바일 디바이스(100)로 전송한다.
The cloud server 200 swaps the page out or swaps in according to the request of the mobile device 100 . The cloud server 200 includes a sufficient storage space, and when receiving a request to store a page from the mobile device 100 , stores the received page in an internal memory or storage. Also, when receiving a request to transmit a page from the mobile device 100 , the cloud server 200 transmits the stored page to the mobile device 100 .

도 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 mobile device 100 includes a memory 110 , a processor 120 , and a local storage 130 . The mobile device 100 may manage the memory 110 by using the cloud server 200 connected through communication. The mobile device 100 may swap-out a page stored in the memory 110 to the local storage 130 or the cloud server 200 . Also, the mobile device 100 may swap-in a page stored in the local storage 130 or the cloud server 200 to the memory 110 .

메모리(110)는 모바일 디바이스(100)가 어플리케이션 등과 같은 프로그램 등을 실행할 때 데이터를 저장하는 공간이다. 모바일 디바이스(100)는 메모리(110)에 어플리케이션마다 일정한 영역을 할당한다. 모바일 디바이스(100)는 어플리케이션을 실행하면서 발생하는 데이터를 메모리(110)에 할당된 영역에 페이지 단위로 기록(write)하고 독출(read)할 수 있다.The memory 110 is a space for storing data when the mobile device 100 executes a program such as an application. The mobile device 100 allocates a predetermined area to the memory 110 for each application. The mobile device 100 may write and read data generated while executing an application in an area allocated to the memory 110 in units of pages.

프로세서(120)는 메모리(110)를 관리한다. 프로세서(120)는 메모리(110)에 저장된 페이지를 관리한다. 프로세서(120)는 메모리(110)에 저장된 페이지 중에서 오래 사용되지 않은 페이지를 로컬 스토리지(130) 또는 클라우드 서버(200)로 스왑-아웃 하여 메모리(110)의 저장 공간을 확보할 수 있다. 또한, 프로세서(120)는 어플리케이션에 의해 요청된 페이지가 메모리(110)에 저장되어 있지 않은 경우, 요청된 페이지가 저장된 위치를 확인하고, 요청된 페이지를 메모리(110)에 스왑-인 할 수 있다. 프로세서(120)가 페이지를 스왑-아웃, 스왑-인 하는 동작에 관하여는 이하 도면들을 통해 상세히 설명한다.The processor 120 manages the memory 110 . The processor 120 manages pages stored in the memory 110 . The processor 120 may swap-out a page that has not been used for a long time among pages stored in the memory 110 to the local storage 130 or the cloud server 200 to secure a storage space in the memory 110 . In addition, when the page requested by the application is not stored in the memory 110 , the processor 120 may check a location in which the requested page is stored and swap the requested page into the memory 110 . . An operation of the processor 120 to swap-out and swap-in a page will be described in detail with reference to the drawings below.

프로세서(120)는 운영체제(OS)를 구동한다. 프로세서(120)는 윈도우 커널 또는 리눅스 커널 등과 같은 운영체제를 구동하여 어플리케이션을 실행하고, 메모리(110)에 저장된 데이터를 관리한다.The processor 120 drives an operating system (OS). The processor 120 runs an operating system, such as a Windows kernel or a Linux kernel, to execute an application, and manages data stored in the memory 110 .

프로세서(120)는 데이터를 처리하고 연산을 수행하는 기능 유닛 또는 프로그램 모듈을 포함할 수 있다. 또한, 프로세서(120)는 캐시 또는 버퍼를 포함하여 데이터를 저장할 수 있다.
The processor 120 may include a functional unit or program module that processes data and performs an operation. In addition, the processor 120 may include a cache or a buffer to store data.

도 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 page fault handler 121 returns the requested page to the memory 110 when the requested page is not stored in the memory 110 when the application requests the page from the memory 110 . A page fault occurs when a program accesses a swapped-out page after a page stored in the memory 110 is swapped out. The page fault handler 121 processes a page fault because a page fault has occurred due to swap.

스왑 캐시(122)는 프리패치(prefetch)된 페이지들을 임시로 저장한다. 또는 스왑 캐시(122)는 동시에 발생하는 스왑-인, 스왑-아웃에 대한 동기화를 위해 사용된다.The swap cache 122 temporarily stores prefetched pages. Alternatively, the swap cache 122 is used for synchronization of swap-in and swap-out occurring at the same time.

스왑 대몬(123)은 페이지를 스왑-아웃 한다. 스왑 대몬(123)은 메모리(110)에 저장 공간이 부족한 경우, 메모리(110)에 저장된 페이지들 중에서 가장 오래된 페이지를 스왑-아웃 할 수 있다.The swap daemon 123 swaps out pages. When the storage space in the memory 110 is insufficient, the swap daemon 123 may swap out the oldest page among pages stored in the memory 110 .

프리패치 대몬(124)은 페이지 요청이 있기 전에, 페이지를 미리 메모리(110)에 저장한다. 페이지 요청은 페이지 폴트가 발생할 때 발생한다. 하지만, 스왑-인 요청을 수신한 장치가 스왑-인 페이지와 함께 앞으로 사용될 것으로 예상되는 페이지들을 미리 전송한다면, 페이지 폴트를 줄일 수 있다. 따라서, 클라우드 서버(200) 등은 페이지 요청이 있을 때, 요청된 페이지와 함께 앞으로 사용될 페이지들을 미리 모바일 디바이스(100)로 전송한다. 프리패치 대몬(124)은 앞으로 사용될 페이지들을 메모리(110)에 저장함으로써, 페이지 폴트 또는 스왑-인 요청을 줄일 수 있다.The prefetch daemon 124 stores a page in the memory 110 in advance before a page request is made. A page request occurs when a page fault occurs. However, if the device receiving the swap-in request transmits the pages expected to be used in the future together with the swap-in page in advance, page faults can be reduced. Accordingly, when there is a page request, the cloud server 200 and the like transmits, in advance, pages to be used together with the requested page to the mobile device 100 in advance. The prefetch daemon 124 may reduce page faults or swap-in requests by storing pages to be used in the future in the memory 110 .

스왑 매니저(125)는 스왑-아웃 또는 스왑-인 되는 페이지들을 관리한다. 예를 들어, 스왑 매니저(125)는 스왑-아웃 또는 스왑-인 되는 페이지들의 라이프 사이클을 추적(track)할 수 있다. 스왑 매니저(125)는 페이지들이 얼마나 자주 스왑-아웃 또는 스왑-인 되고 사용되는지를 추적한다. 스왑 매니저(125)는 추적 결과에 기초하여, 페이지를 로컬 스토리지(130)에 저장할지, 클라우드 서버(200)에 저장할지를 결정한다. The swap manager 125 manages pages that are swapped out or swapped in. For example, the swap manager 125 may track the life cycle of pages being swapped out or swapped in. The swap manager 125 tracks how often pages are swapped out or swapped in and used. The swap manager 125 determines whether to store the page in the local storage 130 or the cloud server 200 based on the tracking result.

또한, 스왑 매니저(125)는 페이지 폴트 발생 시, 요청된 페이지가 저장된 장소가 어디인지 체크하고, 요청된 페이지에 대한 델타 페이지가 존재하는지 체크하고, 요청된 페이지가 제로 페이지(zero page)인지 체크한다.Also, when a page fault occurs, the swap manager 125 checks where the requested page is stored, checks whether a delta page for the requested page exists, and checks whether the requested page is a zero page do.

페이지 번역기(126)는 페이지가 스왑-아웃 또는 스왑-인 되기 이전에 페이지를 처리한다. 페이지 번역기(126)는 페이지를 압축(compress)하거나 복원(decompress)할 수 있다. 페이지 번역기(126)는 2개의 페이지를 이용하여 델타 페이지를 생성할 수 있다. 페이지 번역기(126)는 논리적으로 동일한(logically same) 페이지들을 이용하여 델타 페이지를 생성한다. 예를 들어, 페이지 번역기(126)는 논리적으로 동일한 페이지들에 대한 XOR 연산을 수행하여 델타 페이지를 생성할 수 있다. XOR 연산은 동일한 값일 경우에는 0을, 서로 다른 값일 경우에는 1을 출력하는 연산이다. 따라서, 2개의 페이지가 완전이 동일하면 델타 페이지의 값은 모두 0이 된다. 레퍼런스 페이지의 내용이 11101010이고, 스왑-아웃 되는 페이지의 내용이 11111010이면, 델타 페이지는 00010000이 된다. 따라서, 페이지들의 내용이 유사할수록 압축률은 높아진다. 페이지 번역기(126)는 델타 페이지를 이용하여 스왑-아웃 또는 스왑-인 하기 때문에 네트워크 대역폭을 줄일 수 있으며, 배터리의 소모를 줄일 수 있다.Page translator 126 processes pages before they are swapped out or swapped in. The page translator 126 may compress or decompress the page. The page translator 126 may use the two pages to generate a delta page. The page translator 126 generates a delta page using logically same pages. For example, the page translator 126 may generate a delta page by performing an XOR operation on logically identical pages. The XOR operation is an operation that outputs 0 if the values are the same and 1 if they are different values. Therefore, if two pages are exactly the same, the delta page values are all 0. If the content of the reference page is 11101010 and the content of the page being swapped out is 11111010, the delta page becomes 00010000. Therefore, the more similar the contents of the pages, the higher the compression ratio. Since the page translator 126 performs swap-out or swap-in using a delta page, network bandwidth can be reduced and battery consumption can be reduced.

페이지 번역기(126)는 페이지의 무결성 검사(integrity test)를 할 수 있다. 무결성 검사는 복원된 페이지가 실제 페이지와 동일한지를 확인하는 것을 의미한다. 모바일 디바이스(100)는 페이지를 압축한 이후에 무선으로 압축된 데이터를 클라우드 서버(200) 등과 송수신하기 때문에, 페이지 번역기(126)는 페이지를 수신한 이후에 페이지를 복원하고, 복원된 페이지가 실제 페이지와 동일한지 검사한다.The page translator 126 may perform an integrity test of the page. Integrity check means verifying that the restored page is identical to the actual page. Since the mobile device 100 wirelessly transmits and receives compressed data to and from the cloud server 200 after compressing the page, the page translator 126 restores the page after receiving the page, and the restored page is actually Check if it is the same as the page.

압축 캐시(127)는 압축된 페이지를 저장한다. 압축 캐시(127)에 저장된 페이지들은 가장 오래 사용되지 않은 순서대로 내보내진다(evict). 내보내진 페이지에 대한 정보는 스왑 매니저(125)를 통해 획득된다. The compression cache 127 stores compressed pages. Pages stored in the compression cache 127 are evicted in the order of least used oldest. Information on the exported page is acquired through the swap manager 125 .

벌크 버퍼(128)는 클라우드 서버(200)로 스왑-아웃 될 페이지들을 임시로 저장한다. 벌크 버퍼(128)는 네트워크 대역폭(network bandwidth)를 고려하여, 복수의 페이지들을 묶어서 클라우드 서버(200)로 전송할 수 있다.
The bulk buffer 128 temporarily stores pages to be swapped out to the cloud server 200 . The bulk buffer 128 may bundle a plurality of pages in consideration of network bandwidth and transmit the bundled pages to the cloud server 200 .

도 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 memory 110 is insufficient, the swap daemon 123 swaps out the oldest page among pages stored in the memory 110 . Data is stored in the memory 110 in units of pages. The swap daemon 123 outputs a page to be swapped out to the page translator 126 . The pages stored in the memory are divided into an active page list and an inactive page list. Lists are managed by least-recently-used (LRU) policy.

페이지 번역기(126)는 페이지를 압축하고, 압축된 페이지를 압축 캐시(127)로 출력한다.The page translator 126 compresses the page, and outputs the compressed page to the compression cache 127 .

스왑 매니저(125)는 압축된 페이지를 로컬 스토리지(130)에 저장할지, 클라우드 서버(200)에 저장할지 결정한다. The swap manager 125 determines whether to store the compressed page in the local storage 130 or the cloud server 200 .

스왑 매니저(125)는 압축된 페이지가 이전에 스왑-아웃 또는 스왑-인 된 횟수에 따라 저장 위치를 결정할 수 있다. 스왑 매니저(125)는 압축된 페이지가 이전에 스왑-아웃 또는 스왑-인 된 횟수가 임계값 이상인 경우에는 압축된 페이지를 로컬 스토리지(130)에 저장하고, 그렇지 않은 경우에는 클라우드 서버(200)에 저장한다.The swap manager 125 may determine a storage location according to the number of times the compressed page has been previously swapped-out or swapped-in. The swap manager 125 stores the compressed page in the local storage 130 if the number of times the compressed page has been previously swapped-out or swapped-in is greater than or equal to a threshold value, otherwise it is stored in the cloud server 200 Save.

스왑 매니저(125)는 델타 페이지의 사이즈에 따라 저장 위치를 결정할 수 있다. 스왑 매니저(125)는 델타 페이지의 사이즈가 임계값 이상인 경우에는 클라우드 서버(200)에 저장하고, 그렇지 않은 경우에는 로컬 스토리지(130)에 저장한다. 델타 페이지의 사이즈가 작다는 것은 레퍼런스 페이지(reference page)와 유사하다는 것을 의미하므로, 레퍼런스 페이지가 저장된 로컬 스토리지(130)에 델타 페이지를 저장한다.The swap manager 125 may determine a storage location according to the size of the delta page. The swap manager 125 stores in the cloud server 200 when the delta page size is equal to or greater than the threshold, and stores it in the local storage 130 otherwise. Since the small size of the delta page means that it is similar to a reference page, the delta page is stored in the local storage 130 in which the reference page is stored.

스왑 매니저(125)는 다음과 같은 규칙에 따라 페이지의 저장 위치를 결정할 수 있다. The swap manager 125 may determine the storage location of the page according to the following rules.

1) 한번 스왑-아웃 되고 사용되지 않는 페이지는 로컬 스토리지(130)의 수명을 위해 클라우드 서버(200)로 전송1) Once swapped out and unused pages are transmitted to the cloud server 200 for the life of the local storage 130

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 local storage 130

- 제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 local storage 130, and since the size of the delta page is small, Save to local storage 130

- 제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 cloud server 200

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 local storage 130 over other conditions. Since shared pages are allocated to the memory 110 in a copy-on-write (COW) method, they are shared by a plurality of applications until a new page is copied. COW means that when a page is shared, if the page is changed by a certain sharer, other sharers are affected. Therefore, the sharer duplicates the page to be changed, creates the sharer's own page, and then modifies the created page.

벌크 버퍼(128)는 네트워크 대역폭(network bandwidth)를 고려하여, 복수의 페이지들을 묶어서 클라우드 서버(200)로 전송한다. 이때, 벌크 버퍼(128)는 페이지의 해쉬(hash) 값을 포함한 메타 정보(meta information)만을 우선적으로 클라우드 서버(200)로 전송하여, 클라우드 서버(200)에 동일한 페이지가 저장되어 있는지 확인하고, 동일하지 않은 페이지들만 클라우드 서버(200)로 전송한다.
The bulk buffer 128 bundles a plurality of pages in consideration of network bandwidth and transmits them to the cloud server 200 . At this time, the bulk buffer 128 preferentially transmits only meta information including the hash value of the page to the cloud server 200, and checks whether the same page is stored in the cloud server 200, Only pages that are not identical are transmitted to the cloud server 200 .

도 5는 일 실시 예에 따른 모바일 디바이스의 동작을 설명하기 위한 순서도이다. 모바일 디바이스(100)는 스왑-아웃 할 페이지를 결정하고 압축할 수 있다.5 is a flowchart illustrating an operation of a mobile device according to an exemplary embodiment. The mobile device 100 may determine and compress a page to be swapped out.

단계 501에서 모바일 디바이스(100)는 메모리(110)의 저장 공간이 부족한지 확인한다. 메모리(110)의 저장 공간이 부족하면 단계 502로 진행한다. 모바일 디바이스(100)는 프로그램 등을 실행하면서 발생하는 데이터를 메모리(110)에 저장하는데, 메모리(110)에 저장 공간이 부족하면 발생된 데이터를 저장할 수 없으므로, 데이터 저장 요청이 발생하면 메모리(110)의 저장 공간을 확인한다. In step 501 , the mobile device 100 checks whether the storage space of the memory 110 is insufficient. If the storage space of the memory 110 is insufficient, the process proceeds to step 502 . The mobile device 100 stores data generated while executing a program, etc. in the memory 110 . If the storage space in the memory 110 is insufficient, the generated data cannot be stored. Therefore, when a data storage request occurs, the memory 110 ) to check the storage space.

단계 502에서 모바일 디바이스(100)는 스왑 대몬(123)을 활성화한다. 스왑 대몬(123)은 메모리(110)의 저장 공간을 확보하기 위해 메모리(110)에 저장된 페이지들 중 일부를 다른 저장 공간으로 스왑-아웃 한다.In step 502 , the mobile device 100 activates the swap daemon 123 . The swap daemon 123 swaps out some of the pages stored in the memory 110 to another storage space in order to secure a storage space of the memory 110 .

단계 503에서 모바일 디바이스(100)는 스왑-아웃 할 페이지가 존재하는지 확인한다. 스왑-아웃 할 페이지가 존재하면 단계 504로 진행하고, 그렇지 않으면 단계 501로 진행한다. 스왑-아웃 할 페이지는 메모리(110)에 저장되어 있으나, 일정 시간 동안 사용되지 않은 페이지이다. In step 503, the mobile device 100 checks whether a page to be swapped out exists. If there is a page to be swapped out, the process proceeds to step 504; otherwise, the process proceeds to step 501. A page to be swapped out is a page stored in the memory 110 but not used for a predetermined time.

단계 504에서 모바일 디바이스(100)는 어플리케이션들과의 페이지의 맵핑(mapping)을 제거한다. 맵핑을 제거한다는 것은 사용하는 정보(예를 들어, 페이지 테이블)에서, 페이지가 저장된 메모리(110)에 접근하기 위한 정보를 삭제하고, 스왑-아웃 된 위치를 나타내는 정보(예를 들어, 스왑 엔트리)를 기록하는 것을 의미한다.In operation 504 , the mobile device 100 removes the mapping of pages with applications. Removing the mapping means deleting information for accessing the memory 110 in which a page is stored, from information used (eg, a page table), and information indicating a swapped-out location (eg, a swap entry). means to record

단계 505에서 모바일 디바이스(100)는 스왑-아웃 할 페이지가 더티 페이지(dirty page)인지 판단한다. 더티 페이지는 이전에 스왑-아웃 된 페이지가 아니거나, 값이 수정된 페이지를 의미한다. 스왑-아웃 할 페이지가 더티 페이지인 경우 단계 507로 진행하고, 그렇지 않으면 506으로 진행한다. In step 505, the mobile device 100 determines whether a page to be swapped out is a dirty page. A dirty page means a page that is not a previously swapped-out page or whose value has been modified. If the page to be swapped out is a dirty page, the flow proceeds to step 507; otherwise, the flow advances to step 506.

단계 506에서 모바일 디바이스(100)는 스왑-아웃 할 페이지를 메모리(110)에서 제거한다. 스왑-아웃 할 페이지가 더티 페이지가 아니면, 이미 스왑 영역에 스왑-아웃 할 페이지의 복사본(copy)가 저장되어 있으므로 모바일 디바이스(100)는 추가로 스왑-아웃 할 필요가 없다.In step 506 , the mobile device 100 removes a page to be swapped out from the memory 110 . If the page to be swapped out is not a dirty page, since a copy of the page to be swapped out is already stored in the swap area, the mobile device 100 does not need to additionally swap out the page.

단계 507에서 모바일 디바이스(100)는 스왑-아웃 된 이전 페이지가 로컬 스토리지(130)에 존재하는지 확인한다. 스왑-아웃 된 이전 페이지는 부모 페이지 또는 레퍼런스 페이지로 지칭될 수 있다. 다시 말해서, 이전 페이지는 현재 스왑-아웃 할 페이지와 논리적으로 동일한(logically same) 페이지이다. 이전 페이지와 논리적으로 동일한 페이지는 메모리(110)에서 동일한 주소를 가지며, 동일한 프로그램에 의해 할당된 페이지들이다. 페이지가 메모리(110)로부터 스왑-아웃 될 때 페이지는 메모리(110)에서 삭제되고, 다시 스왑-인 되면 메모리(110)에 기록됩니다. 이때, 스왑-아웃 되는 페이지와 스왑-인 되는 페이지를 추적하지 않으면, 모바일 디바이스(100)는 스왑-아웃 된 페이지와 스왑-인 되는 페이지를 서로 다른 페이지로 인식하게 된다. 따라서, 모바일 디바이스(100)는 스왑-아웃 되는 페이지와 스왑-인 되는 페이지를 추적할 수 있으며, 페이지의 주소 및 페이지를 이용하는 프로그램이 동일하면 2개의 페이지는 부모-자식 관계의 페이지로 인식한다.In step 507 , the mobile device 100 checks whether the swapped-out previous page exists in the local storage 130 . The swapped-out previous page may be referred to as a parent page or a reference page. In other words, the previous page is logically the same as the current swap-out page. Pages logically identical to the previous page have the same address in the memory 110 and are pages allocated by the same program. When a page is swapped out from the memory 110 , the page is deleted from the memory 110 , and when it is swapped in again, it is written to the memory 110 . At this time, if the swapped-out page and the swapped-in page are not tracked, the mobile device 100 recognizes the swapped-out page and the swapped-in page as different pages. Accordingly, the mobile device 100 may track the swapped-out page and the swapped-in page, and if the address of the page and the program using the page are the same, the two pages are recognized as a page having a parent-child relationship.

단계 508에서 모바일 디바이스(100)는 스왑-아웃 할 페이지와 이전 페이지를 이용하여 델타 페이지를 생성한다. 모바일 디바이스(100)는 현재 스왑-아웃 할 페이지와 이전 페이지에 대해 XOR 연산하여 델타 페이지를 생성할 수 있다.In step 508, the mobile device 100 generates a delta page using the page to be swapped out and the previous page. The mobile device 100 may generate a delta page by performing an XOR operation on the current page to be swapped out and the previous page.

단계 509에서 모바일 디바이스(100)는 델타 비율이 1/3 이상인지 판단한다. 델타 비율은 델타 페이지의 값들 중 1인 값의 비율을 나타낸다. 델타 비율이 1/3 이상이면 델타 페이지를 생성할 장점이 없으므로, 단계 510으로 진행하고, 그렇지 않으면 단계 511로 진행한다. 모바일 디바이스(100)는 델타 비율을 1/n 으로 설정할 수 있다. 여기서 n은 자연수 일 수 있으며, 모바일 디바이스(100)는 설정된 델타 비율에 기초하여, 델타 데이터의 이용 여부를 결정할 수 있다.In step 509, the mobile device 100 determines whether the delta ratio is 1/3 or more. The delta ratio indicates the ratio of the values of 1 among the values of the delta page. If the delta ratio is greater than 1/3, there is no advantage in generating delta pages, so proceed to step 510 , otherwise proceed to step 511 . The mobile device 100 may set the delta ratio to 1/n. Here, n may be a natural number, and the mobile device 100 may determine whether to use delta data based on a set delta ratio.

단계 510에서 모바일 디바이스(100)는 로컬 스토리지(130)에 저장된 이전 페이지를 무효화(invalidate)하고, 델타 페이지를 제거한다. 델타 비율이 1/3 이상이면 이전 페이지가 스왑-아웃 될 페이지의 레퍼런스 페이지로서의 역할을 할 수 없으므로, 이전 페이지를 무효화한다.In step 510 , the mobile device 100 invalidates the previous page stored in the local storage 130 and removes the delta page. If the delta ratio is greater than 1/3, the previous page cannot serve as a reference page for the page to be swapped out, so the previous page is invalidated.

단계 511에서 모바일 디바이스(100)는 스왑-아웃 할 페이지를 압축 후 압축 캐시(127)에 저장한다. 다시 말해서, 모바일 디바이스(100)는 델타 페이지를 압축 캐시(127)에 저장하거나 스왑-아웃 할 페이지를 압축하여 압축 캐시(127)에 저장한다.
In step 511 , the mobile device 100 compresses the page to be swapped out and stores it in the compression cache 127 . In other words, the mobile device 100 stores the delta page in the compression cache 127 or compresses the page to be swapped out and stores it in the compression cache 127 .

도 6은 일 실시 예에 따른 모바일 디바이스의 동작을 설명하기 위한 순서도이다. 모바일 디바이스(100)는 스왑-아웃 할 페이지를 로컬 스토리지(130) 또는 클라우드 서버(200)에 저장할 수 있다. 6 is a flowchart illustrating an operation of a mobile device according to an exemplary embodiment. The mobile device 100 may store the page to be swapped out in the local storage 130 or the cloud server 200 .

단계 601에서 모바일 디바이스(100)는 압축 캐시(127)에 저장 공간이 없는지 판단한다. 압축 캐시에 저장 공간이 없으면 단계 602로 진행한다.In step 601 , the mobile device 100 determines whether there is no storage space in the compression cache 127 . If there is no storage space in the compression cache, proceed to step 602 .

단계 602에서 모바일 디바이스(100)는 압축 캐시(127)에서 추출(evict)될 페이지를 결정한다. 예를 들어, 모바일 디바이스(100)는 압축 캐시(127)에 저장된 페이지들 중에서 가장 오래된 페이지를 추출한다.In step 602 , the mobile device 100 determines a page to be evicted from the compression cache 127 . For example, the mobile device 100 extracts the oldest page among the pages stored in the compression cache 127 .

단계 603에서 모바일 디바이스(100)는 추출된 페이지가 자주 사용되는 페이지인지 판단한다. 만약, 추출된 페이지가 자주 사용되는 페이지이면 단계 604로 진행하고, 그렇지 않으면 단계 605로 진행한다.In step 603, the mobile device 100 determines whether the extracted page is a frequently used page. If the extracted page is a frequently used page, the process proceeds to step 604; otherwise, the process proceeds to step 605.

단계 604에서 모바일 디바이스(100)는 추출된 페이지를 로컬 스토리지(130)에 기록한다(write). 추출된 페이지는 자주 사용되는 페이지이므로 클라우드 서버(200) 대신에 로컬 스토리지(130)에 저장한다.In step 604 , the mobile device 100 writes the extracted page to the local storage 130 . Since the extracted page is a frequently used page, it is stored in the local storage 130 instead of the cloud server 200 .

단계 605에서 모바일 디바이스(100)는 추출된 페이지를 벌크 버퍼(128)에 기록한다.In step 605 , the mobile device 100 writes the extracted page to the bulk buffer 128 .

단계 606에서 모바일 디바이스(100)는 벌크 버퍼(128)에 저장 공간이 없으면, 벌크 버퍼(128)에 저장된 페이지들의 메타 데이터를 클라우드 서버(200)로 전송한다. 페이지들은 페이지의 unique id 및 device id를 key로 사용하고, 페이지의 데이터를 value로 사용하는 key-value store 형태로 저장된다. 따라서, 모바일 디바이스(100)와 클라우드 서버(200)는 key를 이용하여 페이지의 스왑-인, 스왑-아웃 할 수 있다. 메타 데이터는 페이지를 이용하는 process의 id, 페이지의 address 또는 페이지의 unique id등을 나타낸다. In step 606 , if there is no storage space in the bulk buffer 128 , the mobile device 100 transmits metadata of pages stored in the bulk buffer 128 to the cloud server 200 . Pages are stored in the form of a key-value store that uses the page's unique id and device id as keys and page data as values. Accordingly, the mobile device 100 and the cloud server 200 may swap-in and swap-out pages by using the key. Meta data indicates the id of the process using the page, the address of the page, or the unique id of the page.

단계 607에서 모바일 디바이스(100)는 클라우드 서버(200)에 중복된 페이지가 있는지 확인한다. 모바일 디바이스(100)는 클라우드 서버(200)로 중복된 페이지가 있는지 확인하는 요청을 전송할 수 있으며, 클라우드 서버(200)로부터 요청에 대한 응답(response)를 수신한다. 모바일 디바이스(100)는 확인 요청과 함께 메타 데이터를 클라우드 서버(200)로 전송한다. 클라우드 서버(200)는 수신된 메타 데이터와 동일한 메타 데이터를 갖는 페이지가 저장되어 있는지 확인하고, 확인 결과를 모바일 디바이스(100)로 전송한다. 만약, 클라우드 서버(200)에 중복된 페이지가 없으면, 단계 608로 진행하고, 있으면 단계 609로 진행한다.In step 607 , the mobile device 100 checks whether there is a duplicate page in the cloud server 200 . The mobile device 100 may transmit a request for checking whether there is a duplicate page to the cloud server 200 , and receives a response to the request from the cloud server 200 . The mobile device 100 transmits the metadata to the cloud server 200 together with the confirmation request. The cloud server 200 checks whether a page having the same metadata as the received metadata is stored, and transmits the verification result to the mobile device 100 . If there is no duplicate page in the cloud server 200 , the process proceeds to step 608 , and if there is, proceeds to step 609 .

단계 608에서 모바일 디바이스(100)는 클라우드 서버(200)에 저장된 페이지와 중복되지 않는 페이지들을 클라우드 서버(200)로 전송한다. In step 608 , the mobile device 100 transmits pages that do not overlap with the pages stored in the cloud server 200 to the cloud server 200 .

단계 609에서 모바일 디바이스(100)는 벌크 버퍼(128)를 초기화한다. 모바일 디바이스(100)는 벌크 버퍼(128)에 기록된 페이지들을 클라우드 서버(200)로 모두 전송하였으므로, 벌크 버퍼(128)를 초기화한다.
In step 609 , the mobile device 100 initializes the bulk buffer 128 . Since the mobile device 100 has transmitted all the pages written in the bulk buffer 128 to the cloud server 200 , the bulk buffer 128 is initialized.

도 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 mobile device 100 may swap-in a page through various paths. Specifically, the mobile device 100 records pages stored in a storage space other than the memory 110 in the memory 110 .

어플리케이션(140)이 페이지를 참조하려고 메모리에 접속하였으나, 메모리에 참조하려는 페이지가 없는 경우(page missing), 페이지 폴트 핸들러(121)가 활성화된다. 페이지 폴트 핸들러(121)는 스왑 캐시(122)를 확인하여 프리패치 등의 이유로 이미 요청된 페이지가 스왑 캐시(122)에 저장되어 있는지 확인한다. 페이지 폴트 핸들러(121)는 스왑 캐시(122)에 요청된 페이지가 없는 경우, 스왑 매니저(125)로부터 요청된 페이지에 대한 정보를 수신하여 요청된 페이지를 수신할 경로를 결정한다.When the application 140 accesses the memory to refer to a page, but there is no page to be referenced in the memory (page missing), the page fault handler 121 is activated. The page fault handler 121 checks the swap cache 122 to determine whether a page that has already been requested for reasons such as prefetching is stored in the swap cache 122 . When there is no requested page in the swap cache 122 , the page fault handler 121 receives information about the requested page from the swap manager 125 and determines a path to receive the requested page.

페이지 폴트 핸들러(121)는 페이지 타입에 따라 다음과 같이 스왑-인 한다.The page fault handler 121 performs swap-in according to the page type as follows.

1) 제로 페이지(zero page)는 페이지가 스왑-아웃 될 때 NULL 인 페이지이므로, 모바일 디바이스(100)는 불필요한 스왑-인 또는 스왑-아웃 없이 바로 페이지를 회복(recover)한다.1) Since a zero page is a page that is NULL when a page is swapped out, the mobile device 100 recovers the page immediately without unnecessary swap-in or swap-out.

2) 캐시 페이지(Cached page)는 압축 캐시(127)에 저장되어 있는 페이지이므로, 모바일 디바이스(100)는 복원하여 스왑-인 한다.2) Since the cached page is a page stored in the compression cache 127 , the mobile device 100 restores and swaps it in.

3) 버퍼 페이지(buffered page)는 벌크 버퍼(128)에 저장되어 있는 페이지이므로, 모바일 디바이스(100)는 로컬 스토리지(130)를 통해 스왑-인 한다.3) Since a buffered page is a page stored in the bulk buffer 128 , the mobile device 100 swaps it in through the local storage 130 .

4) 리모트 페이지(remote page)는 클라우드 서버(200)에 저장되어 있는 페이지이므로, 모바일 디바이스(100)는 클라우드 서버(200)에 페이지 요청을 전송하여 클라우드 서버(200)로부터 스왑-인 한다.4) Since the remote page is a page stored in the cloud server 200 , the mobile device 100 transmits a page request to the cloud server 200 to swap-in from the cloud server 200 .

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 local storage 130 and the delta page is stored in the cloud server 200 , the mobile device 100 includes the local storage 130 and the cloud The original page and the delta page received from the server 200 are combined and swapped in.

도 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 mobile device 100 swaps the page in according to the characteristics of the page.

단계 801에서, 모바일 디바이스(100)는 페이지 폴트가 스왑 때문에 발생했는지를 판단한다. 만약, 페이지 폴트가 스왑 때문에 발생하였으면, 단계 802로 진행한다. In step 801 , the mobile device 100 determines whether a page fault has occurred due to a swap. If the page fault has occurred due to swap, the flow proceeds to step 802.

단계 802에서, 모바일 디바이스(100)는 스왑 캐시(122)에 스왑-아웃 된 페이지가 존재하는지 판단한다. 만약, 스왑 캐시(122)에 스왑-아웃 된 페이지가 존재하면, 단계 805로 진행하고, 그렇지 않으면 단계 803으로 진행한다. In step 802 , the mobile device 100 determines whether a swapped-out page exists in the swap cache 122 . If there is a swapped-out page in the swap cache 122 , the process proceeds to step 805 , otherwise the process proceeds to step 803 .

단계 803에서, 모바일 디바이스(100)는 스왑-아웃 된 페이자가 로컬 스토리지(130)에 존재하는지 판단한다. 만약, 스왑-아웃 된 페이자가 로컬 스토리지(130)에 존재하면, 단계 804로 진행하고, 그렇지 않으면 단계 806으로 진행한다.In step 803 , the mobile device 100 determines whether a swapped-out page exists in the local storage 130 . If the swapped-out page exists in the local storage 130 , the process proceeds to step 804 , otherwise proceeds to step 806 .

단계 804에서, 모바일 디바이스(100)는 로컬 스토리지(130)로부터 페이지를 스왑-인 한다. In step 804 , the mobile device 100 swaps the page in from the local storage 130 .

단계 805에서, 모바일 디바이스(100)는 페이지를 복구하여 스왑-인 한다. 모바일 디바이스(100)는 압축된 페이지를 복원하고, 레퍼런스 페이지와 델타 페이지를 이용하여 페이지를 복구한다(recover).In step 805, the mobile device 100 recovers the page and swaps it in. The mobile device 100 restores the compressed page and recovers the page using the reference page and the delta page.

단계 806에서, 모바일 디바이스(100)는 스왑-아웃 된 페이지가 델타 페이지인지 판단한다. 모바일 디바이스(100)는 스왑-인을 필요로 하는 페이지가 이전에 스왑-아웃 될 때 델타 페이지의 형태로 스왑-아웃 되었는지 확인한다. 만약, 스왑-아웃 된 페이지가 델타 페이지이면, 단계 807로 진행하고, 그렇지 않으면 단계 808로 진행한다.In step 806, the mobile device 100 determines whether the swapped-out page is a delta page. The mobile device 100 checks whether a page requiring swap-in has been swapped out in the form of a delta page when it was previously swapped out. If the swapped-out page is a delta page, the flow goes to step 807; otherwise, the flow goes to step 808.

단계 807에서, 모바일 디바이스(100)는 로컬 스토리지(130)로부터 레퍼런스 페이지를 독출한다. In operation 807 , the mobile device 100 reads the reference page from the local storage 130 .

단계 808에서, 모바일 디바이스(100)는 스왑-아웃 된 페이지가 클라우드 서버(200)에 존재하는지 확인한다. 만약, 스왑-아웃 된 페이지가 클라우드 서버(200)에 존재하면, 단계 809로 진행하고, 그렇지 않으면 단계 810으로 진행한다. In step 808 , the mobile device 100 checks whether the swapped-out page exists in the cloud server 200 . If the swapped-out page exists in the cloud server 200 , the process proceeds to step 809 , otherwise proceeds to step 810 .

단계 809에서, 모바일 디바이스(100)는 클라우드 서버(200)에 요청하여, 스왑-아웃 된 페이지를 독출한다. 모바일 디바이스(100)는 클라우드 서버(200)로부터 수신된 페이지를 복구한다.In step 809 , the mobile device 100 requests the cloud server 200 to read the swapped-out page. The mobile device 100 restores the page received from the cloud server 200 .

단계 810에서, 모바일 디바이스(100)는 압축 캐시(127) 또는 벌크 버퍼(128)에 스왑-아웃 된 페이지가 존재하는지 확인한다. 만약, 압축 캐시(127) 또는 벌크 버퍼(128)에 스왑-아웃 된 페이지가 존재하면, 단계 805로 진행하고, 그렇지 않으면 단계 811로 진행한다. In operation 810 , the mobile device 100 checks whether a swapped-out page exists in the compression cache 127 or the bulk buffer 128 . If the swapped-out page exists in the compression cache 127 or the bulk buffer 128, the process proceeds to step 805; otherwise, the process proceeds to step 811.

단계 811에서, 모바일 디바이스(100)는 스왑-아웃 된 페이지를 찾을 수 없으므로 에러를 반환한다.
In step 811 , the mobile device 100 returns an error because the swapped-out page cannot be found.

도 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 cloud server 200 may store the swapped-out page in the storage server 221 according to the swap-out request of the mobile device 100 . The cloud server 200 includes a master server 210 and a page pool 220 . The master server 210 includes a request handler 211 and a page manager 212 , and the page pool 220 includes a plurality of storage servers 221 .

요청 핸들러(211)는 모바일 디바이스(100)로부터 스왑-아웃 요청을 수신한다. 구체적으로, 요청 핸들러(211)는 페이지-기록(page-write) 요청과 함께 기록할 페이지를 수신한다. 요청 핸들러(211)는 수신된 요청을 페이지 매니저(212)로 출력한다.The request handler 211 receives a swap-out request from the mobile device 100 . Specifically, the request handler 211 receives a page to be written together with a page-write request. The request handler 211 outputs the received request to the page manager 212 .

페이지 매니저(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 page manager 212 manages duplicated pages based on content hashing of swapped-out pages. Content hashing is a hash calculation of the content of a page to generate a hash value of a small size, and when a page is swapped out, only the hash value is transmitted to the cloud server 200 first to check whether a page with the same content already exists in the server It means checking process. Specifically, if there are pages having the same hash value as the hash value of the swapped-out page among the stored pages, the page manager 212 shares the contents of the swapped-out page. For example, in FIG. 9, keyA and keyb refer to pageA, and keyc refers to pageC. The reference to pageA by keyA and keyb indicates that the pages corresponding to keyA and keyB share the data of pageA. keyA and keyb are key information included in the page's metadata, and pageA represents actual data. Since PageA is shared by keyA and keyb, even if a modification request for pgaeA is received, the page manager 212 does not directly modify pageA, but copies pageA and then modifies the copied pageA. The page's metadata includes information such as process id, address, key, and hash, and refers to the content of the page. Accordingly, meta data of several pages may refer to one page at the same time. If the contents of the pages are the same, multiple pages share the same data.

페이지 매니저(212)는 저장된 페이지들 중에서 스왑-아웃 된 페이지의 해쉬 값과 동일한 해쉬 값을 갖는 페이지들이 페이지들이 없으면, 페이지 풀(220) 중 어느 하나의 스토리지 서버(221)에 스왑-아웃 된 페이지를 저장한다.In the page manager 212 , if there are no pages having the same hash value as the hash value of the swapped-out page among the stored pages, the page swapped out to any one storage server 221 of the page pool 220 . save the

페이지 매니저(212)는 스왑-아웃 된 페이지들의 메타 데이터를 관리하여, 이후에 프리패치를 위해 메타 데이터를 이용한다.The page manager 212 manages the meta data of swapped-out pages, and then uses the meta data for prefetching.

클라우드 서버(200)는 동일한 페이지를 복수의 스토리지 서버(221)에 기록할 수 있다. 만약, 어느 하나의 스토리지 서버(221)에 접근이 불가능할 때, 클라우드 서버(200)는 동일한 페이지를 저장하고 있는 다른 스토리지 서버(221)에 접근하여 페이지를 독출할 수 있다. 동일한 페이지를 복수의 스토리지 서버(221)에 저장하는 것을 복제(replication)이라고 하며, 클라우드 서버(200)는 적어도 2 이상의 스토리지 서버(221)에 동일한 페이지를 저장할 수 있다.
The cloud server 200 may record the same page in the plurality of storage servers 221 . If it is impossible to access any one storage server 221 , the cloud server 200 may access another storage server 221 storing the same page and read the page. Storing the same page in the plurality of storage servers 221 is called replication, and the cloud server 200 may store the same page in at least two or more storage servers 221 .

도 10은 일 실시 예에 따른 클라우드 서버를 설명하기 위한 도면이다. 도 10을 참조하면, 클라우드 서버(200)는 모바일 디바이스(100)의 스왑-인 요청에 따라 모바일 디바이스(100)로 페이지를 반환할 수 있다.10 is a diagram for explaining a cloud server according to an embodiment. Referring to FIG. 10 , the cloud server 200 may return a page to the mobile device 100 according to the swap-in request of the mobile device 100 .

요청 핸들러(211)는 모바일 디바이스(100)로부터 스왑-인 요청을 수신하면, 수신된 요청을 페이지 매니저(212)로 출력한다.When receiving the swap-in request from the mobile device 100 , the request handler 211 outputs the received request to the page manager 212 .

페이지 매니저(212)는 요청된 페이지가 저장된 위치를 확인하고, 스토리지 서버(221)에 저장된 페이지를 모바일 디바이스(100)로 반환한다. 페이지 매니저(212)는 페이지들의 위치 정보를 관리하고 있으므로, 위치 정보를 통해 요청된 페이지가 어디에 저장되어 있는지 확인할 수 있다.The page manager 212 checks a location where the requested page is stored, and returns the page stored in the storage server 221 to the mobile device 100 . Since the page manager 212 manages the location information of the pages, it is possible to check where the requested page is stored through the location information.

또한, 페이지 매니저(212)는 요청된 페이지와 함께 유사 페이지들을 모바일 디바이스(100)로 프리패치할 수 있다. 페이지 매니저(212)는 process id로 페이지를 분류하고, 분류된 페이지들의 리스트를 관리하고 있다. 따라서, 페이지 매니저(212)는 모바일 디바이스(100)로부터 요청된 페이지를 반환하면서, 요청된 페이지와 동일한 process id를 갖고, 근처에 저장된 페이지를 함께 모바일 디바이스(100)로 전송할 수 있다. Also, the page manager 212 may prefetch similar pages to the mobile device 100 together with the requested page. The page manager 212 classifies pages by process id and manages a list of classified pages. Accordingly, the page manager 212 may transmit a page that has the same process id as the requested page and stored nearby to the mobile device 100 while returning the requested page from the mobile device 100 .

페이지 매니저(212)는 스왑-인 요청이 수신되기 이전에 모바일 디바이스(100)의 메모리(110)의 저장 공간이 여유가 있는 경우, 페이지 폴트가 발생하기 이전에 실행 중인 어플리케이션에 대한 페이지를 프리패치할 수 있다. 예를 들어, 페이지 매니저(212)는 process id별로 페이지가 스왑-아웃 된 순서를 기록한 리스트를 관리하고, 가장 최근에 스왑-아웃 된 페이지들을 먼저 프리패치할 수 있다.
If the storage space of the memory 110 of the mobile device 100 is free before the swap-in request is received, the page manager 212 prefetches a page for a running application before a page fault occurs. can do. For example, the page manager 212 may manage a list in which the order in which pages are swapped out by process id is recorded, and the most recently swapped out pages may be prefetched first.

도 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 mobile device 100 swaps out the page stored in the memory 110 to the local storage 130 or the cloud server 200 connected through communication.

단계 1120에서, 모바일 디바이스(100)는 페이지 폴트가 발생된 페이지의 특성 및 페이지 폴트가 발생된 페이지의 저장 위치에 따라 스왑 아웃 된 페이지를 스왑-인 한다.
In operation 1120 , the mobile device 100 swaps 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.

본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(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)

로컬 스토리지 및 통신으로 연결된 클라우드 서버를 메모리에 저장된 페이지들의 스왑(swap) 공간으로 사용하는 모바일 디바이스에 있어서,
상기 모바일 디바이스는,
상기 메모리;
상기 로컬 스토리지; 및
적어도 하나의 프로세서를 포함하고,
상기 적어도 하나의 프로세서는,
상기 메모리의 저장 공간 부족을 식별하고;
상기 메모리의 저장 공간 부족에 기초하여, 상기 메모리에 저장된 페이지들중에서 상기 메모리에서 제거될 제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.
삭제delete 제 1 항에 있어서,
상기 적어도 하나의 프로세서는 상기 로컬 스토리지에 상기 클라우드 서버로 스왑-아웃 할 페이지와 논리적으로 동일한 레퍼런스 페이지가 저장되어 있는 경우, 상기 스왑-아웃 할 페이지를 압축하여 압축된 페이지를 상기 클라우드 서버로 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스.
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.
제 3 항에 있어서,
상기 적어도 하나의 프로세서는 상기 스왑-아웃 할 페이지와 상기 레퍼런스 페이지를 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.
◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈◈Claim 5 was abandoned when paying the registration fee.◈ 제 1 항에 있어서,
상기 적어도 하나의 프로세서는 스왑-아웃 할 페이지와 동일한 페이지가 상기 클라우드 서버에 저장되어 있는지 확인하고, 동일한 페이지가 저장되어 있지 않는 경우에만 상기 스왑-아웃 할 페이지를 상기 클라우드 서버로 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스.
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.
◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈◈Claim 6 was abandoned when paying the registration fee.◈ 제 1 항에 있어서,
상기 적어도 하나의 프로세서는 상기 클라우드 서버로 전송할 페이지들을 벌크 버퍼에 저장하고, 네트워크 대역폭(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.
◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈◈Claim 7 was abandoned at the time of payment of the registration fee.◈ 제 1 항에 있어서,
상기 적어도 하나의 프로세서는 페이지 폴트(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.
삭제delete 제 8 항에 있어서, 상기 스왑-아웃 하는 단계는,
상기 클라우드 서버로 스왑-아웃 할 페이지와 논리적으로 동일한 레퍼런스 페이지가 상기 로컬 스토리지에 저장되어 있는 경우, 상기 스왑-아웃 할 페이지를 압축하여 압축된 페이지를 상기 클라우드 서버로 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스의 메모리 관리 방법.
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.
제 10 항에 있어서, 상기 스왑-아웃 하는 단계는,
상기 스왑-아웃 할 페이지와 상기 레퍼런스 페이지를 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.
제 8 항에 있어서, 상기 스왑-아웃 하는 단계는,
스왑-아웃 할 페이지와 동일한 페이지가 상기 클라우드 서버에 저장되어 있는지 확인하고, 동일한 페이지가 저장되어 있지 않는 경우에만 상기 스왑-아웃 할 페이지를 상기 클라우드 서버로 스왑-아웃 하는 것을 특징으로 하는 모바일 디바이스의 메모리 관리 방법.
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.
제 8 항에 있어서, 상기 스왑-아웃 하는 단계는,
상기 클라우드 서버로 전송할 페이지들을 벌크 버퍼에 저장하고, 네트워크 대역폭(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.
제 8 항에 있어서, 상기 스왑-인 하는 단계는,
페이지 폴트(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.
제8항 및 제10항 내지 제14항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
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.
KR1020140174294A 2014-12-05 2014-12-05 Mobile device and management method of mobile device KR102403063B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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