WO2022086003A1 - 전자장치 및 그 제어방법 - Google Patents

전자장치 및 그 제어방법 Download PDF

Info

Publication number
WO2022086003A1
WO2022086003A1 PCT/KR2021/013889 KR2021013889W WO2022086003A1 WO 2022086003 A1 WO2022086003 A1 WO 2022086003A1 KR 2021013889 W KR2021013889 W KR 2021013889W WO 2022086003 A1 WO2022086003 A1 WO 2022086003A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
data
electronic device
access
virtual address
Prior art date
Application number
PCT/KR2021/013889
Other languages
English (en)
French (fr)
Inventor
송주선
정경환
정재훈
정지훈
채창현
최영호
권재욱
정석재
Original Assignee
삼성전자(주)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자(주) filed Critical 삼성전자(주)
Publication of WO2022086003A1 publication Critical patent/WO2022086003A1/ko
Priority to US18/302,700 priority Critical patent/US20230259457A1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Definitions

  • an electronic device includes a CPU, a processor, or an SOC, which is an entity for operation and processing of a process, and a memory into which data for the process is loaded.
  • the electronic device includes an operating system or kernel that performs basic system management, and an application running on the operating system and executing a process.
  • the CPU loads and executes data corresponding to the operating system in a memory such as RAM, loads the application into the memory and executes the application on the operating system while the operating system is running, and finally the process is performed by the execution of the application.
  • the virtual address area since the user area and the kernel area are separated from each other, memory access through the virtual address of the user area in the user mode is separated from the kernel mode. Even if an interrupt occurs during a memory swap restoration operation in the user mode, since a virtual address (user area) related to memory swap and a virtual address (kernel area) related to the interrupt are separated from each other, a safe operation is possible. However, when an interrupt occurs in the memory swap restoration operation in the kernel mode, the virtual address related to the interrupt is in the same kernel area as the virtual address related to the memory swap. If an interrupt-related virtual address and a memory swap-related virtual address are the same, memory swap restoration operations by two kernel processes collide and a deadlock occurs.
  • the electronic device 1 may include a storage unit 140 .
  • the storage unit 140 stores digitized data.
  • the storage unit 140 is loaded with data to be processed by the processor 170 and if power is not provided, one or more memories 41 having a volatile property that data cannot be stored, and whether or not power is provided and one or more storage (storage) 42 having non-volatile properties capable of preserving data regardless of .
  • the memory 41 includes a buffer, a random access memory (RAM), and the like
  • the storage 42 includes a flash-memory, a hard-disc drive (HDD), and a solid-state drive (SSD). ROM (Read Only Memory), etc.
  • the processor 50 boots and loads the operating system stored in the storage 42 into the memory 41 to drive it.
  • the processor 50 loads the application stored in the storage 42 into the memory 41 in response to various user inputs or events according to the execution of a process occurring while the operating system is running, and executes the application on the operating system.
  • the processor 50 does not directly access the memory 41, but sets a virtual memory area and accesses the memory 41 through this.
  • an access method of the memory 41 by the processor 50 will be described.
  • this embodiment describes a case in which the operating system is a Linux-based operating system, the configuration of the present invention is not limited only to the case in which the operating system is a Linux-based type.
  • DMA Direct Memory Access
  • the hardware component 60 such as a GPU (Graphic Processing Unit) may use the DMA function when a high processing speed is required.
  • the following operation may be performed by the processor 50 of the electronic device 1 or by an additional hardware controller provided in the electronic device 1 .
  • step 410 the electronic device 1 initiates a swap out of storing at least a portion of data of a system process (ie, a kernel process) loaded into the first memory 100 in the second memory 200 .
  • a system process ie, a kernel process
  • the usable capacity for loading other data into the first memory 100 increases.
  • the electronic device 1 detects a data restoration event.
  • the data restoration event corresponds to a page fault according to an access of a predetermined first process to data of a system process stored in the second memory 200 in the process of FIG. 3 .
  • step 460 the electronic device 1 restores the data stored in the second memory 200 to the first memory 100 and initiates the swap-in loading.
  • FIG. 6 is a flowchart illustrating a process in which an electronic device performs a swap-out.
  • step 635 the electronic device 1 disconnects the virtual address and the physical address.
  • FIG. 7 is a block diagram illustrating a swap-in process for data of a swapped-out kernel process.
  • the following operation may be performed by the processor 50 of the electronic device 1 or an additional hardware controller provided in the electronic device 1 .
  • step 810 the electronic device 1 identifies a swap address corresponding to the virtual address in which the page fault occurs.
  • step 855 the electronic device 1 in step 855 is the previously registered swap cache idle. ) state (that is, the execution completed state), after stopping and waiting for this task, when the previously registered swap cache is in the idle state, proceed to step 840.
  • the electronic device 1 may additionally mark the virtual address so that restored data is not swapped out.
  • step 820 if there is no previously registered swap cache for the identified swap address (“No” in step 820), the electronic device 1 newly registers the swap cache in step 860, and proceeds to step 835.
  • the context indicates the operation status of the task in progress based on the current time point.
  • a fault during normal execution corresponds to a general state in which the CPU can be preempted only for the allotted time, and when the allotted time is over, the CPU's authority is transferred to another task.
  • a fault during CPU preemption is a state in which CPU resources are not yielded to other tasks until task operation is finished. In the case of , the authority can be exercised).
  • step 1020 If it is identified that there is a physical address connected to the virtual address (“Yes” in step 1020 ), the electronic device 1 proceeds to step 1070 .
  • step 1070 the electronic device 1 marks the virtual address. As a result, the corresponding virtual address is excluded from swapout.
  • the electronic device 1 restores the page table to its original state in step 1180 and displays an error message.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

전자장치는, 제1메모리에 대한 메모리회수 이벤트에 응답하여, 제1메모리에 할당된 사용자영역에 관련되는 사용자 프로세스 또는 제1메모리에 할당된 시스템영역에 관련되는 시스템 프로세스의 데이터를 제2메모리에 저장하여, 사용자영역 또는 시스템영역의 적어도 하나에 대응하는 제1메모리의 영역에 다른 데이터를 저장 가능하도록 허용하고, 제2메모리에 저장된 데이터에 대한 제1프로세스의 억세스에 따른 데이터복원 이벤트에 응답하여, 제2메모리에 저장된 데이터를 제1메모리에 복원하고, 제2메모리에 저장된 데이터에 대해 시스템영역을 통한 제1프로세스의 억세스 중에 제2프로세스의 억세스가 식별되는 것에 응답하여, 제1프로세스의 억세스에 따른 데이터의 복원 및 제2프로세스의 억세스에 따른 데이터의 복원 중 어느 하나를 수행하고 다른 하나를 수행하지 않는 프로세서를 포함한다.

Description

전자장치 및 그 제어방법
본 발명은 운영체제 상에서 다양한 어플리케이션을 로딩하여 실행시키기 위한 메모리를 구비한 전자장치 및 그 제어방법에 관한 것으로서, 상세하게는 메모리의 가용용량이 부족할 때에 메모리 회수 동작을 실행 가능한 전자장치 및 그 제어방법에 관한 것이다.
소정의 정보를 특정 프로세스에 따라서 연산 및 처리하기 위해, 연산을 위한 CPU, 칩셋, 메모리 등의 전자부품들을 기본적으로 포함하는 전자장치는, 처리 대상이 되는 정보 또는 사용 용도가 무엇인지에 따라서 다양한 종류로 구분될 수 있다. 예를 들면, 전자장치에는 범용의 정보를 처리하는 PC나 서버 등의 정보처리장치, 영상데이터를 처리하는 영상처리장치, 오디오를 처리하는 오디오장치, 가정 내 잡무를 수행하는 생활가전 등이 있다. 이러한 다양한 전자장치는 단일 개체로서 그 자체적으로 사전 부여된 기능을 수행한다.
전자장치가 동작하는 기본적인 구조는 하드웨어 및 소프트웨어의 두 가지 측면을 함께 고려해야 한다. 하드웨어의 측면에서 전자장치는 프로세스의 연산 및 처리를 위한 개체인 CPU, 프로세서 또는 SOC와, 프로세스를 위한 데이터가 로딩되는 메모리를 포함한다. 소프트웨어의 측면에서, 전자장치는 시스템의 기본 관리를 수행하는 운영체제 또는 커널과, 운영체제 상에서 구동하며 프로세스를 실행하는 어플리케이션을 포함한다. 예를 들면, CPU는 운영체제에 해당하는 데이터를 RAM 등의 메모리에 로딩하여 실행시키고, 운영체제가 실행되는 동안에 어플리케이션을 메모리에 로딩하여 운영체제 상에서 실행시킴으로써, 최종적으로 어플리케이션의 실행에 의해 프로세스가 수행된다.
시간이 경과함에 따라서 여러 프로세스의 실행 및 종료가 반복되면, 프로세스의 데이터가 메모리에 로딩되는 점유율인 메모리의 사용용량이 늘어나고 메모리의 가용용량이 줄어든다. 전자장치는 메모리의 가용용량이 소정의 한계치 이하로 줄어들면, 차후의 프로세스의 실행을 위해 메모리의 사용용량을 줄이고 가용용량을 늘리는 동작인 메모리 회수를 수행한다. 메모리 회수 방법에는 여러 가지가 있다. 예를 들어 파일 형태의 데이터의 경우에, 이러한 데이터는 플래시메모리 등과 같은 스토리지(storage)로부터 다시 읽어올 수 있으므로, 가상주소와 메모리의 물리주소의 연결을 끊는 방법으로 메모리 회수가 수행된다. 그러나, 스토리지로부터 직접 읽어오기 곤란한 타입의 데이터(예를 들면, 메모리에 로딩된 상태에서 여러 프로세스에 의해 참조 및 업데이트되는 데이터)의 경우에는, 메모리와 상이한 스왑 디바이스에 데이터가 백업된 이후에 가상주소와 메모리의 물리주소의 연결을 끊는 방법으로 메모리 회수가 수행된다. 이 방법을 메모리 스왑(swap)이라고 지칭하며, 만일 해당 가상주소에 새로이 억세스가 발생하면, 스왑된 데이터를 다시 메모리에 복원시키는 복원작업이 수행된다.
한편, 가상주소의 영역은 사용자 영역 및 커널 영역이 서로 분리되므로, 사용자 모드에서 사용자 영역의 가상주소를 통한 메모리 접근은 커널 모드와 분리된다. 만일 사용자 모드에서의 메모리 스왑의 복원 동작 동안에 인터럽트(interrupt)가 발생하더라도, 메모리 스왑에 관련된 가상주소(사용자 영역) 및 인터럽트에 관련된 가상주소(커널 영역)가 상호 분리되므로, 안전한 동작이 가능하다. 그러나, 커널 모드에서의 메모리 스왑의 복원 동작에 인터럽트가 발생하게 되면, 인터럽트에 관련된 가상주소는 메모리 스왑에 관련된 가상주소와 동일한 커널 영역에 있다. 만일 인터럽트에 관련된 가상주소 및 메모리 스왑에 관련된 가상주소가 동일하게 되면, 두 개의 커널 프로세스에 의한 메모리 스왑의 복원 동작들이 충돌하여 에러를 발생시키는 데드락(deadlock)이 발생한다.
따라서, 데드락 문제를 극복하고 커널 모드에서의 메모리 스왑을 가능하게 하는 전자장치가 제공되면 바람직할 것이다.
본 발명의 실시예에 따른 전자장치는, 제1메모리와, 제2메모리와, 상기 제1메모리에 대한 메모리회수 이벤트에 응답하여, 상기 제1메모리에 할당된 사용자영역에 관련되는 사용자 프로세스 또는 상기 제1메모리에 할당된 시스템영역에 관련되는 시스템 프로세스의 데이터를 상기 제2메모리에 저장하여, 상기 사용자영역 또는 상기 시스템영역의 적어도 하나에 대응하는 상기 제1메모리의 영역에 다른 데이터를 저장 가능하도록 허용하고, 상기 제2메모리에 저장된 데이터에 대한 제1프로세스의 억세스에 따른 데이터복원 이벤트에 응답하여, 상기 제2메모리에 저장된 상기 데이터를 상기 제1메모리에 복원하고, 상기 제2메모리에 저장된 상기 데이터에 대해 상기 시스템영역을 통한 상기 제1프로세스의 억세스 중에 제2프로세스의 억세스가 식별되는 것에 응답하여, 상기 제1프로세스의 억세스에 따른 상기 데이터의 복원 및 상기 제2프로세스의 억세스에 따른 상기 데이터의 복원 중 어느 하나를 수행하고 다른 하나를 수행하지 않는 프로세서를 포함한다.
또한, 상기 프로세서는, 상기 제1프로세스 및 상기 제2프로세스의 우선순위를 비교하고, 상기 제1프로세스 및 상기 제2프로세스 중 상대적으로 우선순위가 높은 어느 하나가 실행되도록 할 수 있다.
또한, 상기 시스템영역은, 상기 제1메모리의 물리주소에 할당되게 마련된 가상주소를 포함하고, 상기 프로세서는, 상기 가상주소가 상기 복원된 데이터의 물리주소에 연결되도록 설정된 것에 기초하여 상기 데이터의 복원을 수행하지 않고, 상기 가상주소가 상기 복원된 데이터의 물리주소에 연결되도록 설정되지 않은 것에 기초하여 상기 데이터의 복원을 수행할 수 있다.
또한, 상기 프로세서는, 상기 제2메모리에 압축되어 저장된 데이터를 압축해제하여 상기 제1메모리에 복원할 수 있다.
또한, 상기 프로세서는, 상기 메모리회수 이벤트 시 상기 제1프로세스의 데이터를 상기 제2메모리에 저장하는 동작이 완료되기 이전에 상기 제2프로세스의 억세스가 식별되는 것에 응답하여, 상기 제2프로세스의 억세스에 따른 동작을 대기시킬 수 있다.
또한, 상기 시스템영역은, 상기 제1메모리의 물리주소에 할당되게 마련된 복수의 가상주소를 포함하고, 상기 프로세서는, 상기 메모리회수 이벤트 시 상기 복수의 가상주소 중 억세스 빈도가 상대적으로 낮은 가상주소에 대응하는 데이터를 선별하여 상기 제2메모리에 저장할 수 있다.
또한, 상기 프로세서는, 상기 가상주소에 대응하는 데이터가 상기 제2메모리에 저장된 시점 및 상기 제1메모리에 복원된 시점 사이의 시간이 문턱값 이하인 것에 기초하여 상기 가상주소에 대한 상기 억세스 빈도를 증가시키고, 상기 시간이 상기 문턱값을 초과하는 것에 기초하여 상기 억세스 빈도를 감소시킬 수 있다.
또한, 상기 프로세서는, 상기 가상주소에 대한 다중 억세스가 발생하는 것에 기초하여 상기 가상주소에 대한 상기 억세스 빈도를 증가시킬 수 있다.
또한, 상기 시스템영역은, 상기 제1메모리의 물리주소에 할당되게 마련된 가상주소를 포함하고, 상기 프로세서는, 상기 메모리회수 이벤트 시 상기 가상주소를 통하지 않고 상기 물리주소에 상기 전자장치의 하드웨어에 의한 직접 억세스가 있다고 식별되는 것에 기초하여, 상기 물리주소의 데이터를 상기 제2메모리에 저장하지 않을 수 있다.
또한, 상기 프로세서는, 상기 제1메모리의 데이터를 압축하여 상기 제2메모리에 저장할 수 있다.
또한, 상기 프로세서는, 상기 제1메모리의 가용용량이 문턱값 이하로 내려가는 것에 기초하여 상기 메모리회수 이벤트가 발생하는 것으로 식별할 수 있다.
또한, 상기 시스템영역은, 상기 제1메모리의 물리주소에 할당되게 마련된 가상주소를 포함하고, 상기 프로세서는, 상기 물리주소와의 연결이 끊긴 상기 가상주소에 억세스가 수행되는 것에 기초하여 상기 데이터복원 이벤트가 발생하는 것으로 식별할 수 있다.
또한, 본 발명의 실시예에 따른 전자장치의 제어방법은, 제1메모리에 대한 메모리회수 이벤트에 응답하여, 상기 제1메모리에 할당된 사용자영역에 관련되는 사용자 프로세스 또는 상기 제1메모리에 할당된 시스템영역에 관련되는 시스템 프로세스의 데이터를 제2메모리에 저장하여, 상기 사용자영역 또는 상기 시스템영역의 적어도 하나에 대응하는 상기 제1메모리의 영역에 다른 데이터를 저장 가능하도록 허용하는 단계와, 상기 제2메모리에 저장된 데이터에 대한 제1프로세스의 억세스에 따른 데이터복원 이벤트에 응답하여, 상기 제2메모리에 저장된 상기 데이터를 상기 제1메모리에 복원하는 단계와, 상기 제2메모리에 저장된 상기 데이터에 대해 상기 시스템영역을 통한 상기 제1프로세스의 억세스 중에 제2프로세스의 억세스가 식별되는 것에 응답하여, 상기 제1프로세스의 억세스에 따른 상기 데이터의 복원 및 상기 제2프로세스의 억세스에 따른 상기 데이터의 복원 중 어느 하나를 수행하고 다른 하나를 수행하지 않는 단계를 포함한다.
도 1은 전자장치의 구성 블록도이다.
도 2는 프로세서에 의해 실행되는 프로세스가 메모리에 억세스하는 방식을 나타내는 예시도이다.
도 3 및 도 4는 전자장치의 제어방법을 나타내는 플로우차트이다.
도 5는 커널 프로세스의 데이터에 대한 스왑아웃 과정을 나타내는 블록도이다.
도 6은 전자장치가 스왑아웃을 수행하는 과정을 나타내는 플로우차트이다.
도 7은 스왑아웃된 커널 프로세스의 데이터에 대한 스왑인 과정을 나타내는 블록도이다.
도 8 및 도 9는 전자장치가 스왑인을 수행하는 과정을 나타내는 플로우차트이다.
도 10은 전자장치가 가상주소의 마킹을 수행하는 예시를 나타내는 플로우차트이다.
도 11은 메모리 스왑의 신뢰성을 높이는 방법을 나타내는 플로우차트이다.
이하에서는 첨부도면을 참조하여 본 발명에 따른 실시예들에 관해 상세히 설명한다. 각 도면을 참조하여 설명하는 실시예들은 특별한 언급이 없는 한 상호 배타적인 구성이 아니며, 하나의 장치 내에서 복수 개의 실시예가 선택적으로 조합되어 구현될 수 있다. 이러한 복수의 실시예의 조합은 본 발명의 기술분야에서 숙련된 기술자가 본 발명의 사상을 구현함에 있어서 임의로 선택되어 적용될 수 있다.
만일, 실시예에서 제1구성요소, 제2구성요소 등과 같이 서수를 포함하는 용어가 있다면, 이러한 용어는 다양한 구성요소들을 설명하기 위해 사용되는 것이며, 용어는 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용되는 바, 이들 구성요소는 용어에 의해 그 의미가 한정되지 않는다. 실시예에서 사용하는 용어는 해당 실시예를 설명하기 위해 적용되는 것으로서, 본 발명의 사상을 한정하지 않는다.
또한, 본 명세서에서의 복수의 구성요소 중 "적어도 하나(at least one)"라는 표현이 나오는 경우에, 본 표현은 복수의 구성요소 전체 뿐만 아니라, 복수의 구성요소 중 나머지를 배제한 각 하나 혹은 이들의 조합 모두를 지칭한다.
도 1은 전자장치의 구성 블록도이다.
도 1에 도시된 바와 같이, 본 실시예는 전자장치(1)에 관한 것이다. 전자장치(1)는 다양한 종류의 장치로 구현될 수 있는 바, 예를 들면 PC, 서버 등을 포함하는 정보처리장치이거나; TV, 모니터, 디지털 사이니지(signage), 전자칠판, 전자액자 등을 포함하는 고정형 디스플레이장치이거나; 스마트폰, 태블릿기기, 휴대용 멀티미디어 재생기기 등을 포함하는 모바일기기이거나; 셋탑박스, 광학미디어 재생기기 등을 포함하는 영상처리장치이거나; 냉장고, 세탁기, 의류관리기기, 공기조화기 등을 포함하는 생활가전이거나; IoT 환경을 구축하는 게이트웨이, 허브, 호스트장치, 슬레이브장치이거나; 사람이 착용할 수 있는 웨어러블 디바이스(wearable device) 등으로 구현될 수 있다.
전자장치(1)는 동작을 위해 다양한 하드웨어 요소들을 포함한다. 본 실시예에서는 전자장치(1)가 디스플레이장치로 구현되는 경우에 관해 설명한다. 그러나, 앞서 설명한 바와 같이 전자장치(1)는 다양한 종류의 장치로 구현될 수 있으므로, 이하 설명하는 구성은 다양한 구현 예시 중 하나에 불과함을 밝힌다.
전자장치(1)는 인터페이스부(10)를 포함할 수 있다. 인터페이스부(10)는 전자장치(1)가 다양한 종류의 외부장치와 통신을 수행하고, 또한 데이터를 송수신하기 위한 인터페이스 회로를 포함한다. 인터페이스부(10)는 연결 방식에 따라서, 유선 통신연결을 위한 하나 이상의 유선인터페이스부(11), 또는 무선 통신연결을 위한 하나 이상의 무선인터페이스부(12) 중 적어도 하나를 포함한다.
유선인터페이스부(11)는 기 정의된 전송규격의 케이블이 접속되는 커넥터 또는 포트를 포함한다. 예를 들면, 유선인터페이스부(11)는 방송신호를 수신하도록 지상파 또는 위성방송 안테나에 접속되거나 케이블방송의 케이블이 접속되는 포트를 포함한다. 또는, 유선인터페이스부(11)는 다양한 영상처리장치와 접속하도록 HDMI, DP(DisplayPort), DVI, 컴포넌트, 컴포지트, S-Video, 썬더볼트(Thunderbolt) 등 다양한 유선전송규격의 케이블이 접속되는 포트를 포함한다. 또는, 유선인터페이스부(11)는 USB 기기와 접속하기 위한 USB 규격의 포트를 포함한다. 또는, 유선인터페이스부(11)는 광케이블이 접속되는 광포트를 포함한다. 또는, 유선인터페이스부(11)는 외부 마이크로폰이 접속되는 오디오 입력 포트와, 헤드셋, 이어폰, 외부 스피커 등이 접속되는 오디오 출력 포트를 포함한다. 또는, 유선인터페이스부(11)는 광역 네트워크에 접속하기 위해 게이트웨이, 라우터, 허브 등에 접속하는 이더넷 포트를 포함한다.
무선인터페이스부(12)는 다양한 종류의 무선통신 프로토콜에 대응하는 통신모듈, 통신칩 등의 구성요소들 중 적어도 하나 이상을 포함하는 양방향 통신회로를 포함한다. 예를 들면, 무선인터페이스부(12)는 와이파이(Wi-Fi) 방식에 따라서 AP(Access Point)와 무선통신을 수행하는 와이파이 통신칩과, 블루투스, Zigbee, Z-Wave, WirelessHD, WiGig, NFC 등의 무선통신을 수행하는 통신칩, IR 통신을 위한 IR 모듈, 모바일기기와 이동통신을 수행하는 이동통신칩 등을 포함한다.
전자장치(20)는 디스플레이부(20)를 포함할 수 있다. 디스플레이부(20)는 프로세서(270)에 의해 처리되는 영상신호를 영상으로 표시하기 위한 화면을 형성한다. 디스플레이부(20)는 디스플레이 패널을 포함하는데, 디스플레이 패널의 구조에는 여러 가지 설계방식이 적용될 수 있다. 예를 들면, 디스플레이부(20)는 액정과 같은 수광형 구조의 디스플레이 패널 및 이에 광을 제공하는 백라이트를 포함할 수 있다. 또는, 디스플레이부(20)는 OLED와 같은 자발광 구조의 디스플레이 패널을 포함할 수 있다. 또는, 디스플레이부(20)는 복수의 마이크로 LED 모듈이 타일 형태로 조합되어 대화면을 형성하는 구조일 수도 있다.
전자장치(1)는 사용자입력부(30)를 포함할 수 있다. 사용자입력부(30)는 사용자의 입력을 수행하기 위해 사용자가 조작할 수 있도록 마련된 다양한 종류의 사용자 입력 인터페이스 관련 회로를 포함한다. 사용자입력부(30)는 전자장치(1)의 종류에 따라서 여러 가지 형태의 구성이 가능하며, 예를 들면 전자장치(1)의 기계 버튼부 또는 전자 버튼부; 다양한 종류의 센서; 터치패드; 디스플레이부(20)에 설치된 터치스크린; 전자장치(1)와 분리되며 인터페이스부(10)를 통해 연결된 키보드, 마우스, 리모트 컨트롤러와 같은 외부입력기기 등이 있다.
전자장치(1)는 저장부(140)를 포함할 수 있다. 저장부(140)는 디지털화된 데이터를 저장한다. 저장부(140)는, 프로세서(170)에 의해 처리되기 위한 데이터가 로딩되며 전원이 제공되지 않으면 데이터를 보존할 수 없는 휘발성 속성을 가진 하나 이상의 메모리(memory)(41)와, 전원의 제공 유무와 무관하게 데이터를 보존할 수 있는 비휘발성 속성을 가진 하나 이상의 스토리지(storage)(42)를 포함한다. 메모리(41)에는 버퍼(buffer), 램(RAM; Random Access Memory) 등이 있으며, 스토리지(42)에는 플래시메모리(flash-memory), HDD(hard-disc drive), SSD(solid-state drive) ROM(Read Only Memory) 등이 있다.
저장부(40)는 전자장치(1)의 기본적 구동을 위한 운영체제와, 운영체제 상에서 실행되며 다양한 기능에 대응하는 여러 어플리케이션을 저장한다. 전자장치(1)에 전원이 인가되지 않은 동안 운영체제 및 어플리케이션은 스토리지(42)에 저장된다. 전자장치(1)가 부팅함에 따라서 운영체제가 메모리(41)에 로딩되어 동작하며, 여러 이벤트에 따라서 어플리케이션이 메모리(41)에 로딩되어 실행된다.
전자장치(1)는 프로세서(50)를 포함할 수 있다. 프로세서(50)는 인쇄회로기판 상에 장착되는 CPU, 칩셋, 버퍼, 회로 등으로 구현되는 하나 이상의 하드웨어 프로세서를 포함하며, 설계 방식에 따라서는 SOC(system on chip)로 구현될 수도 있다. 전자장치(1)가 디스플레이장치인 경우에, 프로세서(50)는 영상컨텐트를 영상으로 표시하기 위해 디멀티플렉서, 디코더, 스케일러, 오디오 DSP(Digital Signal Processor), 앰프 등의 다양한 프로세스에 대응하는 모듈들을 포함한다. 여기서, 이러한 모듈들 중 일부 또는 전체가 SOC로 구현될 수 있다. 예를 들면, 디멀티플렉서, 디코더, 스케일러 등 영상처리와 관련된 모듈이 영상처리 SOC로 구현되고, 오디오 DSP는 SOC와 별도의 칩셋으로 구현되는 것이 가능하다.
프로세서(50)는 시스템 전원이 인가되면 부팅을 수행하여, 스토리지(42)에 저장된 운영체제를 메모리(41)에 로딩시켜 구동시킨다. 프로세서(50)는 운영체제가 구동하는 동안에 발생하는 다양한 사용자 입력 또는 프로세스의 실행에 따른 이벤트에 응답하여, 스토리지(42)에 저장된 어플리케이션을 메모리(41)에 로딩시켜 운영체제 상에서 실행시킨다. 그런데, 프로세서(50)는 메모리(41)에 직접 억세스하는 것이 아니라, 가상의 메모리영역을 설정하여 이를 통해 메모리(41)에 억세스한다. 이하, 프로세서(50)에 의한 메모리(41)의 억세스 방식에 관해 설명한다. 본 실시예에서는 운영체제가 리눅스 계열인 경우에 관해 설명하지만, 운영체제의 종류가 리눅스 계열인 경우로만 본 발명의 구성이 한정되는 것은 아니다.
도 2는 프로세서에 의해 실행되는 프로세스가 메모리에 억세스하는 방식을 나타내는 예시도이다.
도 1 및 도 2에 도시된 바와 같이, CPU 또는 프로세서(50)에 의해 실행되는 다양한 프로세스(KP, UP)는, 데이터가 로딩되어 있는 제1메모리(100)의 각 주소(PA1, PA2)에 직접 억세스하지 않고, 가상메모리공간(Virtual Memory Space) 또는 가상메모리(300)을 통해 억세스한다. 여기서, 제1메모리(100)는 가상메모리(300)과 대비를 위해 물리메모리(Physical Memory)라고 지칭될 수 있으며, 저장부(40)의 메모리(41) 중에서 램으로 구현된다. 또한, 구분을 위해 제1메모리(100)의 주소는 물리주소(PA1, PA2, PA3)로, 가상메모리(300)의 주소는 가상주소(VA1, VA2)로 지칭될 수 있다.
가상메모리(300)는 제1메모리(100)의 각 물리주소(PA1, PA2)와 대응하도록 맵핑(mapping)된(또는, 연결된, 할당된) 가상주소(VA1, VA2)가 기록되는 영역으로서, 저장부(40)에 의해 제공되는 다양한 저장영역을 사용할 수 있다. 가상메모리(300)는 커널영역(310)과 사용자영역(320)으로 구분된다. 시스템영역 또는 커널영역(310)은 운영체제, 즉 커널에 의해 수행되는 커널 프로세스(KP)가 억세스하는 가상주소(VA1, VA2)를 포함한다. 반면에, 사용자영역(320)은 운영체제가 아닌 어플리케이션에 의해 수행되는 사용자 프로세스(UP)가 억세스하는 가상주소(VA1, VA2)를 포함한다. 기본적으로 가상메모리(300)의 각 가상주소(VA1, VA2)는 제1메모리(100)의 각 물리주소(PA1, PA2)에 연결되어 있으며, 프로세스(KP, UP)는 가상주소(VA1, VA2)를 통해 물리주소(PA1, PA2)에 억세스할 수 있다.
한편, 프로세서(50)가 아닌 별도의 하드웨어 컴포넌트(60)에 의한 프로세스가, 가상메모리(300)를 통하지 않고 다이렉트로 제1메모리(100)의 물리주소(PA3)에 억세스하는 DMA(Direct Memory Access) 방식도 있다. 프로세서(50)를 통하게 되면 시스템 자원의 부하 및 지연이 발생하므로, 빠른 처리속도가 요구되는 경우에 GPU(Graphic Processing Unit) 등과 같은 하드웨어 컴포넌트(60)가 DMA 기능을 사용할 수 있다.
그런데, 가상주소(VA1, VA2) 및 물리주소(PA1, PA2) 사이의 연결은 항구적인 것은 아니며, 다양한 이벤트에 따라서 연결이 끊기거나 또는 조정될 수 있다. 예를 들어 제1메모리(100)에서 데이터가 삭제되면 해당 데이터가 있던 물리주소(PA1, PA2)는 가상주소(VA1, VA2)와의 연결이 끊기며, 이 경우에 해당 물리주소(PA1, PA2)에는 새로운 데이터가 기록될 수 있다. 또는, 메모리 스왑이 발생하는 경우에, 가상주소(VA1, VA2) 및 물리주소(PA1, PA2) 사이의 연결이 스왑 상태에 따라서 조정될 수 있다. 이하, 메모리 스왑에 관해 설명한다.
전자장치(1)는 메모리 회수 이벤트가 발생하면, 제1메모리(100)의 가용용량을 확보하기 위한 메모리 회수 동작을 수행한다. 메모리 회수 이벤트는 제1메모리(100)의 가용용량이 문턱값 아래로 내려가면 발생한다. 메모리 회수 동작 중 하나로서 메모리 스왑이 있으며, 다음과 같이 수행된다.
전자장치(1)는 메모리 회수 이벤트를 감지하면, 가상메모리(300)의 가상주소(VA1, VA2) 중에서 스왑할 대상을 식별한다. 스왑할 대상인 가상주소(VA1, VA2)가 식별되면, 전자장치(1)는 해당 가상주소(VA1, VA2) 및 물리주소(PA1, PA2, PA3) 사이의 맵핑을 끊고, 해당 물리주소(PA1, PA2, PA3)의 데이터를 스왑메모리 또는 제2메모리(200)의 소정의 스왑위치에 저장하고, 스왑위치의 주소인 스왑주소를 기록한다. 이러한 동작을 스왑아웃(swap-out)이라고 지칭한다. 이에 따라서, 해당 물리주소(PA1, PA2, PA3)에 다른 가상주소를 통하여 다른 데이터가 저장될 수 있도록 허용된다. 스왑아웃이 된 가상주소(VA1, VA2)는 물리주소(PA1, PA2, PA3)로의 맵핑이 되어 있지 않은 상태이다. 제2메모리(200)는 저장부(40)가 제공하는 저장수단 중에서, 휘발속성 또는 비휘발속성을 가리지 않고, 제1메모리(100)와 상이한 어떠한 저장수단도 가능하다. 예를 들어 전자장치(1)가 서버 또는 PC 등으로 구현되는 경우에는 HDD, SSD 등의 비휘발성 속성의 스토리지(42)가 제2메모리(200)로 많이 사용되며, TV 또는 모바일기기 등과 같은 임베디드 시스템에서는 램디스크(RAMDISK) 기반의 제2메모리(200)가 사용된다.
스왑아웃된 상태의 가상주소(VA1, VA2)에 소정의 프로세스(KP, UP)의 억세스가 발생할 수 있다. 이 때 해당 가상주소(VA1, VA2)는 물리주소(PA1, PA2, PA3)의 연결이 끊긴 상태이므로, 페이지 폴트(page fault)가 발생한다. 페이지는 제1메모리(100)를 관리하는 기본단위로서, 32비트 운영체제에서는 일반적으로 4KB 단위로 관리된다. 페이지 폴트는 프로세스(KP, UP)의 억세스가 발생한 가상주소(VA1, VA2)에 맵핑된 물리주소(PA1, PA2, PA3)가 없을 경우에 발생하는 에러이다. 전자장치(1)는 페이지 폴트에 응답하여, 해당 가상주소(VA1, VA2)에 대응하는 제2메모리(200)의 스왑주소(즉, 가상주소(VA1, VA2)의 스왑아웃된 데이터가 저장된 제2메모리(200)의 주소)를 획득하고, 스왑주소에 저장된 데이터를 제1메모리(100)에 복원시킨다. 이 때, 제1메모리(100)에 복원된 데이터의 새 물리주소는 스왑아웃 이전의 물리주소와 다를 수 있으므로, 전자장치(1)는 가상주소(VA1, VA2)를 상기한 새 물리주소와 다시 연결시킨다. 이상의 과정을 스왑인(swap-in)이라고 지칭한다.
사용자영역(320)의 가상주소(VA2)에 대한 스왑 동작과, 커널영역(310)의 가상주소(VA1)에 대한 스왑 동작은 세부적인 측면, 예를 들면 인터럽트 관련 상황에서 차이가 있다. 인터럽트는 프로세서(50)에 의해 프로그램이 실행되는 동안에, 입출력 하드웨어를 비롯한 다양한 원인으로 인해 예외 상황이 발생하여, 이를 처리하도록 하는 통지가 프로세서(50)에 전달되는 경우를 의미한다. 프로세서(50)는 인터럽트를 감지하면, 현재 진행중인 기계어 코드의 실행을 중지하고, 인터럽트의 처리를 위한 프로그램 또는 코드로 이행하여 인터럽트 처리를 수행한다. 인터럽트 처리가 완료되면, 프로세서(50)는 중지된 기계어 코드의 실행을 재개한다.
사용자영역(320)의 가상주소(VA2)에 대한 스왑인이 수행되는 동안에 인터럽트가 발생하는 경우에, 전자장치(1)는 상기한 스왑인을 정지하고 인터럽트를 처리한다. 인터럽트는 커널 프로세스(KP)에 해당하므로, 스왑인되는 가상주소(VA2)에 대한 인터럽트의 억세스가 발생하지 않는다. 반면에, 커널영역(310)의 가상주소(VA1)에서 페이지 폴트가 발생하고, 스왑인이 완료되기 이전에 인터럽트가 발생하는 경우를 고려한다. 이 경우는 사용자영역(320)에서의 경우와 달리, 복수 프로세스(KP)가 가상주소(VA1)에 중복하여 억세스하게 되므로, 결과적으로 스왑인 동작이 중복될 수 있다. 이하, 이러한 중복을 해소하기 위한 전자장치(1)의 동작에 관해 설명한다.
도 3 및 도 4는 전자장치의 제어방법을 나타내는 플로우차트이다.
도 2, 도 3 및 도 4에 도시된 바와 같이, 하기 동작은 전자장치(1)의 프로세서(50)에 의해 수행되거나, 또는 전자장치(1)에 마련된 추가적인 하드웨어 컨트롤러에 의해 수행될 수 있다.
405 단계에서 전자장치(1)는 제1메모리(100)에 대한 메모리회수 이벤트를 감지한다. 예를 들면, 메모리회수 이벤트는 제1메모리(100)의 가용용량이 문턱값 아래로 내려가는 경우에 해당할 수 있다.
410 단계에서 전자장치(1)는 제1메모리(100)에 로딩된 시스템 프로세스(즉, 커널 프로세스)의 데이터 중 적어도 일부의 데이터를 제2메모리(200)에 저장하는 스왑아웃을 개시한다. 이 때, 제1메모리(100)에 로딩되었던 데이터의 주소에는 타 데이터를 기록할 수 있도록 허용되므로, 제1메모리(100)에는 타 데이터를 로딩할 수 있는 가용용량이 증가한다.
415 단계에서 전자장치(1)는 스왑아웃 완료 이전에, 스왑아웃되는 데이터에 대한 타 프로세스의 억세스가 존재하는지 여부를 식별한다.
스왑아웃되는 데이터에 대한 타 프로세스의 억세스가 존재하는 것으로 식별되면(415 단계의 "Yes"), 420 단계에서 전자장치(1)는 타 프로세스의 억세스와의 충돌 방지 동작을 수행한다. 반면에, 스왑아웃되는 데이터에 대한 타 프로세스의 억세스가 존재하지 않는 것으로 식별되면(415 단계의 "No"), 425 단계에서 전자장치(1)는 그대로 스왑아웃을 실행 및 완료한다.
한편, 455 단계에서 전자장치(1)는 데이터복원 이벤트를 감지한다. 예를 들면, 데이터복원 이벤트는 도 3의 과정에서 제2메모리(200)에 저장된 시스템 프로세스의 데이터에 대한 소정 제1프로세스의 억세스에 따른 페이지 폴트에 해당한다.
460 단계에서 전자장치(1)는 제2메모리(200)에 저장된 데이터를 제1메모리(100)로 복원시켜 로딩하는 스왑인을 개시한다.
465 단계에서 전자장치(1)는 스왑인 완료 이전에, 스왑인되는 데이터에 대한 제2프로세스의 억세스가 존재하는지 여부를 식별한다.
스왑인되는 데이터에 대한 제2프로세스의 억세스가 존재하는 것으로 식별되면(465 단계의 "Yes"), 470 단계에서 전자장치(1)는 제1프로세스의 억세스에 따른 데이터복원 동작 및 제2프로세스의 억세스에 따른 데이터복원 동작 사이의 충돌 방지 동작을 수행한다. 반면에, 스왑인되는 데이터에 대한 타 프로세스의 억세스가 존재하지 않는 것으로 식별되면(465 단계의 "No"), 475 단계에서 전자장치(1)는 그대로 스왑인을 실행 및 완료한다.
이와 같이, 전자장치(1)는 메모리회수 이벤트에 응답하여, 제1메모리(100)에 맵핑된 사용자영역(320)에 관련된 사용자 프로세스 또는 제1메모리(100)에 맵핑된 시스템영역(310)에 관련된 시스템 프로세스의 데이터를 제2메모리(200)에 저장함으로써, 사용자영역(320) 또는 시스템영역(310)의 적어도 하나에 대응하는 제1메모리(100)의 영역에 다른 데이터를 저장 가능하도록 한다. 또한, 전자장치(1)는 데이터복원 이벤트에 응답하여 제2메모리(200)에 저장된 사용자 프로세스 또는 시스템 프로세스의 데이터를 제1메모리(100)에 복원한다. 전자장치(1)는 메모리회수 이벤트 또는 데이터복원 이벤트 중에 시스템영역(310)을 통해 제1메모리(100)의 영역에 대한 타 프로세스의 억세스가 식별되는 것에 응답하여, 식별된 타 프로세스의 억세스와의 충돌 방지 동작을 수행한다.
이로써, 전자장치(1)는 커널 프로세스 관련 데이터에 대한 스왑아웃 또는 스왑인 시에, 해당 데이터에 대한 타 프로세스의 억세스가 발생하면, 타 프로세스의 억세스에 대한 사전 정의된 충돌방지동작을 수행함으로써 데드락 현상을 방지한다. 도 3에서의 충돌방지 동작(420) 및 도 4에서의 충돌방지 동작(470)은 설계 방식에 따라서 여러 가지 방법이 가능하며, 이하 실시예에서 구체적으로 설명한다.
도 5는 커널 프로세스의 데이터에 대한 스왑아웃 과정을 나타내는 블록도이다.
도 5에 도시된 바와 같이, 전자장치(1)의 가상메모리(300) 중 커널영역(310)은, 커널 프로세스가 억세스하기 위한 데이터가 제1메모리(100)의 물리주소에 저장되는 경우에, 해당 물리주소에 대응하는 가상주소가 기록되는 영역이다. 커널영역(310)은 기능에 따라서 여러 영역으로 구분될 수 있다. Lowmem(311)은 가상주소가 물리주소와 1:1로 선형 대응되도록 연결되는 영역이다. Lowmem(311)의 가상주소는 전자장치(1)의 부팅 시에 물리주소가 맵핑되면, 전자장치(1)의 전원이 꺼질 때까지 맵핑된 물리주소가 변경되지 않는다. Highmem 또는 vmalloc(312)은 연속적인 가상주소를 불연속적인 물리주소에 대응되도록 연결되는 영역이다. 커널의 동작의 안정성을 위하여, 메모리스왑의 대상에서 Lowmem(311)를 제외하고 vmalloc(312)이 포함될 수 있다. 다만, 설계 방식에 따라서는 Lowmem(311) 또한 메모리스왑의 대상으로 설정될 수도 있다. Page Table(313)은 스왑주소가 기록되는 영역이다. 스왑주소는 제1메모리(100)로부터 스왑아웃되어 제2메모리(200)에 저장된 데이터(D2)가 있는 스왑위치의 주소이다.
제1메모리(100)는 통상적으로 노드(node) 또는 물리노드(physical node)를 단위로 하여 관리된다. 이러한 물리노드와 별개로서, 제1메모리(100)에서 스왑 대상이 되는 데이터가 로딩된 저장영역에 대해서 가상노드(virtual node)를 부여될 수 있다. 즉, 전자장치(1)는 스왑이 가능한 커널영역(310)에 대응하도록 제1메모리(100)에 가상노드를 할당하고 관리함으로써, 스왑 대상의 데이터를 식별할 수 있다.
메모리회수 이벤트의 발생에 따라서, 전자장치(1)는 커널 프로세스의 데이터(즉 커널영역(310)의 가상주소에 대응하는 제1메모리(100)의 물리주소에 있는 데이터) 중에서, 스왑 대상의 데이터(D1) 및 그 가상주소를 식별한다. 전자장치(1)는 스왑 대상으로 식별된 데이터(D1)가 저장된 물리주소와 가상주소의 맵핑을 해제한다. 즉, 전자장치(1)는 커널영역(310)에서 식별된 가상주소 및 이에 대응하는 물리주소 사이의 연결을 끊는다. 제1메모리(100)에서 가상주소와 연결이 끊긴 물리주소에는, 타 데이터가 기록될 수 있도록 허용된다.
전자장치(1)는 데이터(D1)를 제1메모리(100)로부터 컴프레서(compressor)(510)로 전달한다. 컴프레서(510)는 소정의 압축포맷으로 데이터(D1)를 압축하여 용량을 줄이는 소프트웨어 프로그램 또는 하드웨어 칩셋을 포함한다. 다만, 컴프레서(510)에 의한 압축 과정은 필수적인 요소는 아니다. 데이터(D1)의 압축 과정은 시스템 부하와 시간 지연의 원인이 되므로, 전자장치(1)의 시스템 자원을 고려하여, 설계 방식에 따라서는 컴프레서(510)가 전자장치(1)에 포함되지 않을 수도 있다. 컴프레서(510)가 없는 경우에는, 데이터(D1)가 제1메모리(100)로부터 제2메모리(200)로 전달된다.
한편, 컴프레서(510)에 의해 압축된 데이터(D2)는 제2메모리(200)로 전달되어 제2메모리(200)에 저장된다. 압축된 데이터(D2)가 제2메모리(200)에 저장된 스왑위치의 스왑주소는 커널영역(310)의 Page Table(313)에 기록된다.
한편, 스왑아웃 동작이 완료되기 이전에, 스왑아웃 대상인 가상주소에 대한 커널 프로세스의 억세스가 발생할 수 있다. 예를 들면, 프로세서가 멀티코어 CPU인 경우에, 어느 한 코어가 스왑아웃을 수행하는 동안에 다른 코어가 인터럽트를 처리하는 상황을 고려할 수 있다. 이 경우에는 데이터(D1)를 스왑아웃하는 동작과 데이터(D1)에 억세스하는 동작의 충돌이 이루어지므로, 전자장치(1)는 데이터(D1)를 스왑아웃하는 동작을 완료될 때까지, 상기한 커널 프로세스의 억세스에 대한 동작을 대기시킨다(도 3의 420 단계에 해당). 데이터(D1)의 스왑아웃 동작의 완료 이후에는 커널 프로세스가 데이터(D1)에 억세스해야 하므로, 압축된 데이터(D2)의 스왑인 동작이 이어서 수행된다.
이하, 커널영역(310)의 기록된 가상주소와 관련하여, 스왑 대상이 아닌 데이터는 설계 방식에 따라서 다양하게 지정될 수 있다. 예를 들면, Page Table(313)의 정보, 데이터(D1)의 스왑 시에 사용되는 압축 또는 압축해제에 관여되는 정보 등은 제외된다. 이러한 정보들을 스왑 대상으로 지정하면, 스왑 동작 시 recursive call이 발생하여 무한 루프에 빠질 수 있다. Lowmem(311)은 32비트 시스템의 전자장치(1)의 경우에는 가상주소에 맵핑되는 물리주소가 1:1로 고정되므로, 이 경우에 Lowmem(311)을 스왑 대상으로 하면 시스템의 안정성에 문제가 발생할 수 있다. 따라서, 32비트 시스템의 전자장치(1)에서는 Lowmem(311)이 스왑 대상에서 제외될 수 있다. 다만, 64비트 이상의 시스템의 전자장치(1)의 경우에는 64비트 커널이 표현 가능한 가상메모리의 범위가 매우 넓으므로, Lowmem(311)도 스왑 대상이 될 수 있다.
또한, 커널영역(310)의 가상주소 중에서, 현재 프로세서(50, 도 1 참조)가 아닌 타 하드웨어 컴포넌트(60, 도 2 참조)에 다이렉트로 억세스되고 있는 물리주소에 대응하는 것으로 식별된(또는 마킹된) 가상주소 또한 스왑 대상에서 제외된다. 이는 DMA 기능에 관련된 것인데, 본 내용에 관해 보다 구체적인 내용은 후술한다.
한편, 커널영역(310)의 가상주소와 관련하여, 스왑 대상이 되는 데이터 중에서 스왑의 우선순위는 다양한 방법으로 결정될 수 있다. 한 가지 예시로서, 전자장치(1)는 LRU(Least Recently Used)(520) 알고리즘을 사용할 수 있다. LRU(520)는 리스트, 테이블, DB, 기타 수학적 알고리즘 등 다양한 형식을 가질 수 있다. LRU(520)는 가장 오랫동안 사용하지 않는 데이터를 찾기 위한 구조이며, 가장 오랫동안 사용되지 않은 데이터는 앞으로도 사용할 확률이 적다는 추론에 기반한다. 이 때, 전자장치(1)는 가상주소 단위로 우선순위를 식별하는데, 최근에 사용된 시점(즉, 최근에 프로세스에 의해 접근된 시점)이 상대적으로 오래된 가상주소를 식별하고, 해당 가상주소의 데이터를 높은 우선순위로 식별한다. 전자장치(1)는 소정 가상주소에 프로세스가 접근하면, 해당 가상주소에 대한 프로세스에 의한 접근 이력을 기록하여 LRU(520)를 업데이트한다.
이와 같이, 전자장치(1)는 메모리회수 이벤트에 응답하여, 프로세스에 의한 접근 빈도수에 기초하여 가상주소에 스왑 대상의 우선순위를 부여한다. 전자장치(1)는 프로세스에 의한 접근 빈도수가 상대적으로 낮은 가상주소에 대해서는 스왑 대상의 우선순위를 높게 부여하고, 프로세스에 의한 접근 빈도수가 상대적으로 높은 가상주소에 대해서는 스왑 대상의 우선순위를 낮게 부여한다.
이하, 스왑아웃의 과정에 관해 설명한다.
도 6은 전자장치가 스왑아웃을 수행하는 과정을 나타내는 플로우차트이다.
도 2 및 도 6에 도시된 바와 같이, 하기 동작은 전자장치(1)의 프로세서(50), 또는 전자장치(1)에 마련된 추가적인 하드웨어 컨트롤러에 의해 수행될 수 있다.
605 단계에서 전자장치(1)는 메모리 회수 이벤트를 감지한다.
610 단계에서 전자장치(1)는 스왑 대상인 데이터의 가상주소를 식별한다.
615 단계에서 전자장치(1)는 식별된 가상주소에 대응하는 물리주소가 있는지 여부를 식별한다. 식별된 가상주소에 대응하는 물리주소가 없으면(615 단계에서 "No"), 해당 가상주소가 이미 스왑아웃된 상태임을 의미하므로, 전자장치(1)는 610 단계로 이행하여 다른 가상주소를 식별한다.
식별된 가상주소에 대응하는 물리주소가 있으면(615 단계에서 "Yes"), 620 단계에서 전자장치(1)는 식별된 가상주소의 억세스 카운트가 문턱값 이하인지 여부를 식별한다. 억세스 카운트는 가상주소에 대한 프로세스의 억세스 빈도를 나타내는 바, 억세스 카운트가 낮다는 것은 해당 가상주소가 프로세스에 의해 억세스될 확률이 낮다는 것을 의미한다.
억세스 카운트가 문턱값 이하가 아니면(620 단계에서 "No"), 625 단계에서 전자장치(1)는 해당 가상주소의 억세스 카운트를 감소시키고 610 단계로 이행한다.
반면에, 억세스 카운트가 문턱값 이하이면(620 단계에서 "Yes"), 630 단계에서 전자장치(1)는 제2메모리(200)의 스왑위치를 할당받고, 할당된 스왑위치를 키(key) 값으로 하여 스왑캐시(swap-cache)를 등록한다. 스왑캐시에 관한 자세한 설명은 후술한다.
635 단계에서 전자장치(1)는 가상주소 및 물리주소의 연결을 끊는다.
640 단계에서 전자장치(1)는 등록된 스왑캐시에 기반하여 제1메모리(100)의 데이터를 제2메모리(200)의 스왑위치에 저장하고, 스왑주소를 기록한다.
645 단계에서 전자장치(1)는 스왑캐시를 회수(또는 해제)한다.
이와 같이, 전자장치(1)는 데이터의 스왑아웃을 수행할 수 있다.
이하, 스왑캐시에 관해 설명한다. 스왑캐시는 제2메모리(200)의 스왑위치를 기준으로, 회수 또는 복원중인 제1메모리(100)의 할당영역을 나타낸다. 스왑아웃 또는 스왑인이 수행될 때, 전자장치(1)는 스왑 대상으로 식별된 가상주소에 대해 제1메모리(100)의 소정 영역을 할당하여 스왑 작업을 저장하고 스왑캐시로 등록한다. 스왑캐시는, 스왑아웃 또는 스왑인이 진행되고 있는 페이지(즉, 데이터)에 대해 어떠한 프로세스의 접근이 일어날 때에 발생할 수 있는 레이스 상황(Race Condition)을 방지하기 위해 사용된다.
레이스 상황이란 둘 이상의 프로세스가 공통 자원을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라서 그 실행 결과가 같지 않고 달라지는 상황을 말한다. 즉, 레이스 상황은 간단히 말하면 경쟁하는 상태, 즉 두 개의 스레드(thread)가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황을 말한다. 스왑캐시는 회수중인 페이지에 즉시 복원이 발생하는 경우에, 회수와 복원 사이에 동기화를 유지시켜 준다. 여러 프로세스에 의하여 공유되고 있던 페이지는 회수된 이후 특정 프로세스에서만 참조가 발생할 수 있고, 타 프로세스에 대해서는 스왑된 상태를 유지한다. 전자장치(1)는 이후 타 프로세스가 스왑된 페이지에 접근할 경우 제2메모리(200)가 아닌 스왑캐시를 그대로 가져와 제1메모리(100)에 복원함으로써, 기존 프로세스들과의 공유 관계를 유지시켜 준다.
이하, 스왑인 동작에 관해 설명한다.
도 7은 스왑아웃된 커널 프로세스의 데이터에 대한 스왑인 과정을 나타내는 블록도이다.
도 7에 도시된 바와 같이, 커널영역(310)에서 제1메모리(100)의 물리주소와 연결이 끊긴 가상주소(VA)에 대해 소정의 커널 프로세스에 의한 억세스가 발생한다. 전자장치(1)는 Page Table(313)에서, 억세스가 발생한 가상주소(VA)에 대응하는 제2메모리(200)의 스왑주소를 검색한다. 검색된 스왑주소는, 가상주소(VA)에 대해 스왑아웃된 데이터(D2)의 제2메모리(200) 내 스왑위치를 나타낸다. 스왑주소가 검색되지 않으면 본 가상주소(VA)는 물리주소에 연결된 것도 아니고 스왑아웃된 상태도 아니므로, 전자장치(1)는 별도의 지정된 처리동작을 수행한다.
전자장치(1)는 획득한 스왑주소를 가지고 제2메모리(200)로부터 스왑아웃된 압축된 데이터(D2)를 획득하여 디컴프레서(decompressor)(530)에 전달한다. 디컴프레서(530)는 컴프레서(510, 도 5 참조)와 반대의 기능을 수행하는 바, 소정의 압축포맷으로 압축된 데이터(D2)의 압축을 풀어서 압축되기 이전의 원래 데이터 상태로 복원시키는 소프트웨어 프로그램 또는 하드웨어 칩셋을 포함한다. 디컴프레서(530)는 스왑 동작에서 필수적인 구성은 아니며, 압축이 사용되지 않는 경우에 전자장치(1)는 디컴프레서(530)를 포함하지 않을 수도 있다.
전자장치(1)는 디컴프레서(530)에 의해 압축이 풀린 데이터(D3)를 제1메모리(100)에 로딩한다. 이 때, 제1메모리(100)에서 데이터(D3)의 물리주소는 스왑인 시점에서 유효한 제1메모리(100)의 가용용량 중에서 할당된다. 따라서, 데이터(D3)의 물리주소는 스왑아웃 시점의 데이터(D1, 도 5 참조)의 물리주소와 동일할 수도 있고 상이할 수도 있다.
전자장치(1)는 가상주소(VA)와 데이터(D3)의 물리주소를 맵핑시킨다. 이로써, 스왑인 동작이 완료된다.
이하, 스왑인의 과정에 관해 설명한다.
도 8 및 도 9는 전자장치가 스왑인을 수행하는 과정을 나타내는 플로우차트이다.
도 2, 도 8 및 도 9에 도시된 바와 같이, 하기 동작은 전자장치(1)의 프로세서(50), 또는 전자장치(1)에 마련된 추가적인 하드웨어 컨트롤러에 의해 수행될 수 있다.
805 단계에서 전자장치(1)는 커널영역의 가상주소에서 페이지 폴트를 감지한다. 페이지 폴트는, 물리주소와의 연결이 끊긴 가상주소에 프로세스에 의한 억세스가 수행될 때에 발생한다. 여기서, 전자장치(1)는 페이지 폴트가 사용자영역에서 발생한 것으로 식별되면, 사용자영역에 대한 스왑인 동작을 수행한다. 또한, 전자장치(1)는 커널영역에서 발생하였더라도 해당 가상주소에 대한 픽스업 코드(Fix-Up Code)가 등록되었다면, 픽스업 코드를 실행한다.
810 단계에서 전자장치(1)는 페이지 폴트가 발생한 가상주소에 대응하는 스왑주소를 식별한다.
815 단계에서 전자장치(1)는 현재의 실행흐름, 즉 현재의 컨텍스트(context)를 식별한다. 컨텍스트는, 개략적으로는 전자장치(1)에서 프로세스 또는 태스크가 실행되고 있는 상태를 나타낸다. 컨텍스트의 구체적인 내용에 관해서는 후술한다.
820 단계에서 전자장치(1)는 식별된 스왑주소에 대해 기 등록된 스왑캐시가 이미 존재하는지 여부를 식별한다.
식별된 스왑주소에 대해 기 등록된 스왑캐시가 있으면(820 단계에서 "Yes"), 825 단계에서 전자장치(1)는 현재 컨텍스트의 우선순위가 기 등록된 스왑캐시의 컨텍스트의 우선순위보다 높은지 여부를 식별한다. 컨텍스트 사이의 우선순위 비교에 관해서는 후술한다.
현재 컨텍스트의 우선순위가 기 등록된 스왑캐시의 컨텍스트의 우선순위보다 높다고 식별되면(825 단계에서 "Yes"), 830 단계에서 전자장치(1)는 새로 스왑캐시를 등록하여 앞서 기 등록된 스왑캐시를 교체한다. 즉, 830 단계에서의 새 스왑캐시를 제1스왑캐시, 820 단계에서 식별된 기 등록된 스왑캐시를 제2스왑캐시라고 할 때, 전자장치(1)는 제1스왑캐시로 제2스왑캐시를 교체하여 등록한다.
835 단계에서 전자장치(1)는 등록된 스왑캐시에 기반하여 스왑주소의 데이터를 제1메모리(100)에 복원시킨다.
840 단계에서 전자장치(1)는 식별된 가상주소의 맵핑(즉, 가상주소 및 물리주소 사이의 연결)이 복원되었는지 여부를 식별한다.
식별된 가상주소의 물리주소에 대한 연결이 복원되었다면(840 단계에서 "Yes"), 전자장치(1)는 850 단계로 이행한다.
반면에, 식별된 가상주소의 물리주소에 대한 연결이 복원되지 않았다면(840 단계에서 "No"), 845 단계에서 전자장치(1)는 가상주소를 복원된 데이터의 물리주소에 연결시킨다.
상기한 단계 중에서, 825, 830, 840, 845, 855 단계가 앞서 도 4에서의 충돌방지 동작(470)에 해당한다.
다양한 우선순위의 컨텍스트의 여러 태스크에서 동시에 페이지 폴트에 따른 스왑인이 발생하는 경우에(예를 들면, 멀티코어 CPU의 각 코어에서 태스크를 수행하는 중에, 복수의 태스크에 의해 동일한 가상주소에 대한 스왑인이 수행되는 경우), 스왑캐시들 사이의 경쟁이 발생할 수 있다. 경쟁하는 태스크가 먼저 가상주소의 맵핑을 복원시킬 가능성이 있으므로, 전자장치(1)는 어느 한 태스크가 먼저 가상주소의 맵핑을 복원시킨 것으로 식별되면, 나머지 경쟁하는 태스크에 의한 맵핑이 수행되지 않도록 한다.
850 단계에서 전자장치(1)는 등록된 스왑캐시를 해제한다.
한편, 현재 컨텍스트의 우선순위가 기 등록된 스왑캐시의 컨텍스트의 우선순위보다 높지 않다고 식별되면(825 단계에서 "No"), 855 단계에서 전자장치(1)는 기 등록된 스왑캐시가 아이들(idle) 상태(즉, 실행이 완료된 상태)가 될 때까지 본 작업을 멈추고 대기한 이후, 기 등록된 스왑캐시가 아이들 상태가 되면 840 단계로 이행한다.
한편, 전자장치(1)는 추가적으로, 현재 컨텍스트가 인터럽트 상태라면, 복원된 데이터가 스왑아웃되지 않도록 가상주소에 마킹을 할 수도 있다.
한편, 식별된 스왑주소에 대해 기 등록된 스왑캐시가 없으면(820 단계에서 "No"), 860 단계에서 전자장치(1)는 새로 스왑캐시를 등록하고, 835 단계로 이행한다.
이하, 컨텍스트 및 우선순위에 관해 설명한다. 컨텍스트는 현재 시점을 기준으로 진행중인 태스크의 동작 상태를 나타낸다. 폴트 시점을 기준으로 할 때, 컨텍스트에는 크게 일반 실행 중 폴트, CPU(프로세서)의 선점 중 폴트, 인터럽트 중 폴트의 세 가지가 있다. 일반 실행 중 폴트는, 할당된 시간동안만 CPU를 선점할 수 있고, 할당된 시간이 끝나면 다른 태스크에 CPU의 권한을 이행하는 일반적인 상태에 해당한다. CPU의 선점 중 폴트는, 태스크의 동작이 끝날 때까지 타 태스크에 CPU의 자원을 양보하지 않는 상태로서, 동작 중간에 CPU의 권한이 타 태스크로 이행되지 않고 CPU 선점상태를 유지한다(단, 인터럽트의 경우에는 권한 이행 가능). 인터럽트 동작 중 폴트는, 동작이 끝날때 까지 어떠한 태스크에게도 CPU 자원을 양보하지 않는 상태이다(예를 들면, 타이머 또는 하드웨어 입력신호가 수신되는 경우 등). 다만, 칩 아키텍처에 따라서 약간의 기능적 차이가 있는데, 인터럽트가 진행되는 동안에는 다른 인터럽트가 발생하더라도 CPU 권한을 빼앗기지 않는 경우도 있고, 인터럽트 사이에도 우선순위가 설정됨으로써 보다 높은 우선순위의 인터럽트가 CPU 권한을 가져가는 경우도 있다.
컨텍스트 사이의 우선순위로는 인터럽트 중 폴트, CPU 선점 중 폴트, 일반실행 중 폴트의 순서대로 높다. 인터럽트 중 폴트가 발생하여 스왑인 동작을 수행할 때에 다른 인터럽트에 의해 스왑인이 중복되는 스왑캐시가 존재하는 경우에, 스왑캐시들 사이의 경쟁을 통해, 결과적으로 어느 한 스왑캐시에 의한 스왑인이 수행된다.
이하, 억세스 카운트에 관해 설명한다. 억세스 카운트는 소정 가상주소에 대한 억세스의 빈도를 나타낸다. 억세스 카운트는 가상주소에 대해 부여되며, 상황의 변화에 따라서 조정됨으로써 특정한 가상주소의 데이터에 대한 빈번한 스왑이 일어나지 않도록 제한한다. 억세스 카운트의 기준은 설계 방식에 따라서 다양하게 지정될 수 있다. 예를 들면, 소정 가상주소의 데이터가 회수된 시점(즉, 스왑아웃된 시점) 및 복원된 시점(즉, 스왑인된 시점) 사이의 시간차가 문턱값 이하이면, 전자장치(1)는 해당 가상주소의 억세스 카운트를 증가시킨다. 반면에, 전자장치(1)는 상기한 시간차가 문턱값을 초과하면, 해당 가상주소의 억세스 카운트를 감소시킨다. 또는, 소정 가상주소에 대해 복수의 태스크 또는 프로세스에 의한 동시 접근이 발생하면, 전자장치(1)는 해당 가상주소의 억세스 카운트를 증가시킨다. 이 외에도 다양한 기준이 억세스 카운트에 반영될 수 있다. 전자장치(1)가 억세스 카운트의 수치를 어느 정도만큼 증가시키고 또는 감소시킬지에 관해서는, 설계 방식에 따라서 다양하게 변경될 수 있는 사항이므로, 한정되지 않는다.
이하, 가상주소가 스왑 대상에서 제외되도록 마킹하는 예시에 관해 설명한다.
도 10은 전자장치가 가상주소의 마킹을 수행하는 예시를 나타내는 플로우차트이다.
도 2, 도 5 및 도 10에 도시된 바와 같이, 하기 동작은 전자장치(1)의 프로세서(50), 또는 전자장치(1)에 마련된 추가적인 하드웨어 컨트롤러에 의해 수행될 수 있다.
1010 단계에서 전자장치(1)는 소정 가상주소에 대한 마킹 요청을 수신한다. 본 실시예에서의 가상주소에 대한 마킹은, 해당 가상주소가 스왑 대상에서 제외됨을 나타낸다.
1020 단계에서 전자장치(1)는 해당 가상주소에 연결된 물리주소가 있는지 여부를 식별한다.
가상주소에 연결된 물리주소가 있다고 식별되면(1020 단계에서 "Yes"), 전자장치(1)는 1070 단계로 이행한다.
반면에, 가상주소에 연결된 물리주소가 없다고 식별되면(1020 단계에서 "No"), 1030 단계에서 전자장치(1)는 가상주소에 대응하는 제2메모리(200)의 스왑주소를 획득한다.
1040 단계에서 전자장치(1)는 획득한 스왑주소의 데이터를 제1메모리(100)에 복원시킨다.
1050 단계에서 전자장치(1)는 가상주소 및 물리주소(즉, 제1메모리(100)에 복원된 데이터의 주소)의 연결을 복원시킨다.
1060 단계에서 전자장치(1)는 가상주소의 억세스 카운트를 증가시킨다.
1070 단계에서 전자장치(1)는 가상주소에 마킹을 수행한다. 이로써, 해당 가상주소는 스왑아웃의 대상에서 제외된다.
한편, 본 마킹은 해제될 수도 있다. 전자장치(1)는 특정한 이벤트(예를 들면, 해당 가상주소에 대응하는 물리주소에 대한 프로세서 또는 기타 하드웨어의 기록 등이 완료됨)에 응답하여, 가상주소의 마킹을 해제할 수 있다. 이 경우에, 해당 가상주소는 스왑아웃의 대상에 포함된다.
이하, 메모리 스왑의 신뢰성을 높이기 위한 방법에 관해 설명한다.
도 11은 메모리 스왑의 신뢰성을 높이는 방법을 나타내는 플로우차트이다.
도 2 및 도 11에 도시된 바와 같이, 하기 동작은 전자장치(1)의 프로세서(50), 또는 전자장치(1)에 마련된 추가적인 하드웨어 컨트롤러에 의해 수행될 수 있다.
1110 단계에서 전자장치(1)는 메모리회수 이벤트를 감지한다.
1120 단계에서 전자장치(1)는 회수 대상의 데이터 및 가상주소를 식별한다.
1130 단계에서 전자장치(1)는 가상주소 및 물리주소의 연결을 끊고, 페이지 테이블에 스왑위치를 기록한다.
1140 단계에서 전자장치(1)는 제1메모리(100)에서 데이터의 HASH 값을 산출한다.
1150 단계에서 전자장치(1)는 데이터를 압축하여 제2메모리(200)의 스왑위치에 저장한다.
1160 단계에서 전자장치(1)는 제1메모리(100)에서 데이터의 HASH 값을 재산출한다.
1170 단계에서 전자장치(1)는 두 HASH 값이 동일한지 여부를 식별한다. 두 HASH 값이 동일하면(1170 단계에서 "Yes"), 전자장치(1)는 작업을 종료한다.
반면에, 두 HASH 값이 동일하지 않으면(1170 단계에서 "No"), 1180 단계에서 전자장치(1)는 페이지 테이블을 원상태로 복원시키고 에러 메시지를 표시한다.
이로써, 데이터가 동기화되지 않은 상태에서 변경되는 경우에 대한 검출이 가능해지는 바, 스왑 동작의 신뢰성이 향상된다.
이상 실시예들에서 설명한 바와 같은 장치의 동작은, 해당 장치에 탑재된 인공지능에 의해 수행될 수 있다. 인공지능은 기계 학습 알고리즘을 활용하여 다양한 제반 시스템에 적용될 수 있다. 인공지능 시스템은 인간 수준 내지는 인간 수준에 버금가는 지능을 구현하는 컴퓨터 시스템으로서, 기계, 장치 또는 시스템이 자율적으로 학습하고 판단하며, 사용 경험의 누적에 기반하여 인식률 및 판단 정확도가 향상되는 시스템이다. 인공지능 기술은 입력되는 데이터들의 특징을 스스로 분류하고 학습하는 알고리즘을 이용한 기계학습 기술 및 알고리즘을 활용하여, 인간의 두뇌의 인지, 판단 등의 기능을 모사하는 요소 기술들로 구성된다.
요소 기술들은, 예를 들면 인간의 언어와 문자를 인식하는 언어적 이해 기술, 사물을 인간의 시각처럼 인식하는 시각적 이해 기술, 정보를 판단하여 논리적으로 추론하고 예측하는 추론 및 예측 기술, 인간의 경험 정보를 지식 데이터로 처리하는 지식 표현 기술, 차량의 자율 주행이나 로봇의 움직임을 제어하는 동작 제어 기술 중 적어도 어느 하나를 포함한다.
여기서, 언어적인 이해는 인간의 언어 또는 문자를 인식하고 응용 처리하는 기술로서, 자연어의 처리, 기계 번역, 대화 시스템, 질의 응답, 음성 인식 및 합성 등을 포함한다.
추론 예측은 정보를 판단하여 논리적으로 예측하는 기술로서, 지식 및 확률 기반 추론, 최적화 예측, 선호 기반 계획, 추천 등을 포함한다.
지식 표현은 인간의 경험 정보를 지식 데이터로 자동화 처리하는 기술로서, 데이터의 생성 및 분류와 같은 지식 구축, 데이터의 활용과 같은 지식 관리 등을 포함한다.
본 발명의 예시적 실시예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이러한 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 삭제 가능 또는 재기록 가능 여부와 상관없이, USB 메모리장치와 같은 비휘발성 저장 장치, 또는 예를 들어 RAM, ROM, 플래시메모리, 메모리 칩, 집적 회로와 같은 메모리, 또는 예를 들어 CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 광학 또는 자기적으로 기록 가능함과 동시에 기계(예를 들어, 컴퓨터)로 읽을 수 있는 저장 매체에 저장될 수 있다. 이동 단말 내에 포함될 수 있는 메모리는 본 발명의 실시 예들을 구현하는 지시들을 포함하는 프로그램 또는 프로그램들을 저장하기에 적합한 기계로 읽을 수 있는 저장 매체의 한 예임을 알 수 있을 것이다. 본 저장 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어의 기술 분야에서 숙련된 기술자에게 공지되어 사용 가능한 것일 수도 있다. 또는, 본 컴퓨터 프로그램 명령은 컴퓨터 프로그램 프로덕트에 의해 구현될 수도 있다.

Claims (15)

  1. 전자장치에 있어서,
    제1메모리와,
    제2메모리와,
    상기 제1메모리에 대한 메모리회수 이벤트에 응답하여, 상기 제1메모리에 할당된 사용자영역에 관련되는 사용자 프로세스 또는 상기 제1메모리에 할당된 시스템영역에 관련되는 시스템 프로세스의 데이터를 상기 제2메모리에 저장하여, 상기 사용자영역 또는 상기 시스템영역의 적어도 하나에 대응하는 상기 제1메모리의 영역에 다른 데이터를 저장 가능하도록 허용하고,
    상기 제2메모리에 저장된 데이터에 대한 제1프로세스의 억세스에 따른 데이터복원 이벤트에 응답하여, 상기 제2메모리에 저장된 상기 데이터를 상기 제1메모리에 복원하고,
    상기 제2메모리에 저장된 상기 데이터에 대해 상기 시스템영역을 통한 상기 제1프로세스의 억세스 중에 제2프로세스의 억세스가 식별되는 것에 응답하여, 상기 제1프로세스의 억세스에 따른 상기 데이터의 복원 및 상기 제2프로세스의 억세스에 따른 상기 데이터의 복원 중 어느 하나를 수행하고 다른 하나를 수행하지 않는 프로세서를 포함하는 전자장치.
  2. 제1항에 있어서,
    상기 프로세서는, 상기 제1프로세스 및 상기 제2프로세스의 우선순위를 비교하고, 상기 제1프로세스 및 상기 제2프로세스 중 상대적으로 우선순위가 높은 어느 하나가 실행되도록 하는 전자장치.
  3. 제1항에 있어서,
    상기 시스템영역은, 상기 제1메모리의 물리주소에 할당되게 마련된 가상주소를 포함하고,
    상기 프로세서는, 상기 가상주소가 상기 복원된 데이터의 물리주소에 연결되도록 설정된 것에 기초하여 상기 데이터의 복원을 수행하지 않고,
    상기 가상주소가 상기 복원된 데이터의 물리주소에 연결되도록 설정되지 않은 것에 기초하여 상기 데이터의 복원을 수행하는 전자장치.
  4. 제1항에 있어서,
    상기 프로세서는, 상기 제2메모리에 압축되어 저장된 데이터를 압축해제하여 상기 제1메모리에 복원하는 전자장치.
  5. 제1항에 있어서,
    상기 프로세서는, 상기 메모리회수 이벤트 시 상기 제1프로세스의 데이터를 상기 제2메모리에 저장하는 동작이 완료되기 이전에 상기 제2프로세스의 억세스가 식별되는 것에 응답하여, 상기 제2프로세스의 억세스에 따른 동작을 대기시키는 전자장치.
  6. 제1항에 있어서,
    상기 시스템영역은, 상기 제1메모리의 물리주소에 할당되게 마련된 복수의 가상주소를 포함하고,
    상기 프로세서는, 상기 메모리회수 이벤트 시 상기 복수의 가상주소 중 억세스 빈도가 상대적으로 낮은 가상주소에 대응하는 데이터를 선별하여 상기 제2메모리에 저장하는 전자장치.
  7. 제6항에 있어서,
    상기 프로세서는, 상기 가상주소에 대응하는 데이터가 상기 제2메모리에 저장된 시점 및 상기 제1메모리에 복원된 시점 사이의 시간이 문턱값 이하인 것에 기초하여 상기 가상주소에 대한 상기 억세스 빈도를 증가시키고, 상기 시간이 상기 문턱값을 초과하는 것에 기초하여 상기 억세스 빈도를 감소시키는 전자장치.
  8. 제6항에 있어서,
    상기 프로세서는, 상기 가상주소에 대한 다중 억세스가 발생하는 것에 기초하여 상기 가상주소에 대한 상기 억세스 빈도를 증가시키는 전자장치.
  9. 제1항에 있어서,
    상기 시스템영역은, 상기 제1메모리의 물리주소에 할당되게 마련된 가상주소를 포함하고,
    상기 프로세서는, 상기 메모리회수 이벤트 시 상기 가상주소를 통하지 않고 상기 물리주소에 상기 전자장치의 하드웨어에 의한 직접 억세스가 있다고 식별되는 것에 기초하여, 상기 물리주소의 데이터를 상기 제2메모리에 저장하지 않는 전자장치.
  10. 제1항에 있어서,
    상기 프로세서는, 상기 제1메모리의 데이터를 압축하여 상기 제2메모리에 저장하는 전자장치.
  11. 제1항에 있어서,
    상기 프로세서는, 상기 제1메모리의 가용용량이 문턱값 이하로 내려가는 것에 기초하여 상기 메모리회수 이벤트가 발생하는 것으로 식별하는 전자장치.
  12. 제1항에 있어서,
    상기 시스템영역은, 상기 제1메모리의 물리주소에 할당되게 마련된 가상주소를 포함하고,
    상기 프로세서는, 상기 물리주소와의 연결이 끊긴 상기 가상주소에 억세스가 수행되는 것에 기초하여 상기 데이터복원 이벤트가 발생하는 것으로 식별하는 전자장치.
  13. 전자장치의 제어방법에 있어서,
    제1메모리에 대한 메모리회수 이벤트에 응답하여, 상기 제1메모리에 할당된 사용자영역에 관련되는 사용자 프로세스 또는 상기 제1메모리에 할당된 시스템영역에 관련되는 시스템 프로세스의 데이터를 제2메모리에 저장하여, 상기 사용자영역 또는 상기 시스템영역의 적어도 하나에 대응하는 상기 제1메모리의 영역에 다른 데이터를 저장 가능하도록 허용하는 단계와,
    상기 제2메모리에 저장된 데이터에 대한 제1프로세스의 억세스에 따른 데이터복원 이벤트에 응답하여, 상기 제2메모리에 저장된 상기 데이터를 상기 제1메모리에 복원하는 단계와,
    상기 제2메모리에 저장된 상기 데이터에 대해 상기 시스템영역을 통한 상기 제1프로세스의 억세스 중에 제2프로세스의 억세스가 식별되는 것에 응답하여, 상기 제1프로세스의 억세스에 따른 상기 데이터의 복원 및 상기 제2프로세스의 억세스에 따른 상기 데이터의 복원 중 어느 하나를 수행하고 다른 하나를 수행하지 않는 단계를 포함하는 전자장치의 제어방법.
  14. 제13항에 있어서,
    상기 제1프로세스 및 상기 제2프로세스의 우선순위를 비교하고, 상기 제1프로세스 및 상기 제2프로세스 중 상대적으로 우선순위가 높은 어느 하나가 실행되도록 하는 전자장치의 제어방법.
  15. 제13항에 있어서,
    상기 시스템영역은, 상기 제1메모리의 물리주소에 할당되게 마련된 가상주소를 포함하고,
    상기 가상주소가 상기 복원된 데이터의 물리주소에 연결되도록 설정된 것에 기초하여 상기 데이터의 복원을 수행하지 않고, 상기 가상주소가 상기 복원된 데이터의 물리주소에 연결되도록 설정되지 않은 것에 기초하여 상기 데이터의 복원을 수행하는 전자장치의 제어방법.
PCT/KR2021/013889 2020-10-19 2021-10-08 전자장치 및 그 제어방법 WO2022086003A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/302,700 US20230259457A1 (en) 2020-10-19 2023-04-18 Electronic apparatus and control method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200135074A KR20220051546A (ko) 2020-10-19 2020-10-19 전자장치 및 그 제어방법
KR10-2020-0135074 2020-10-19

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/302,700 Continuation US20230259457A1 (en) 2020-10-19 2023-04-18 Electronic apparatus and control method thereof

Publications (1)

Publication Number Publication Date
WO2022086003A1 true WO2022086003A1 (ko) 2022-04-28

Family

ID=81290782

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2021/013889 WO2022086003A1 (ko) 2020-10-19 2021-10-08 전자장치 및 그 제어방법

Country Status (3)

Country Link
US (1) US20230259457A1 (ko)
KR (1) KR20220051546A (ko)
WO (1) WO2022086003A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009020555A (ja) * 2007-07-10 2009-01-29 Panasonic Corp スワップ処理装置
US20150242432A1 (en) * 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression
US20160234019A1 (en) * 2004-06-23 2016-08-11 Texas Instruments Incorporated Methods, apparatus, and systems for secure demand paging and other paging operations for processor devices
KR20160107802A (ko) * 2015-03-05 2016-09-19 삼성전자주식회사 모바일 장치 및 모바일 장치의 데이터 관리 방법
KR102093523B1 (ko) * 2011-12-14 2020-03-25 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160234019A1 (en) * 2004-06-23 2016-08-11 Texas Instruments Incorporated Methods, apparatus, and systems for secure demand paging and other paging operations for processor devices
JP2009020555A (ja) * 2007-07-10 2009-01-29 Panasonic Corp スワップ処理装置
KR102093523B1 (ko) * 2011-12-14 2020-03-25 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법
US20150242432A1 (en) * 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression
KR20160107802A (ko) * 2015-03-05 2016-09-19 삼성전자주식회사 모바일 장치 및 모바일 장치의 데이터 관리 방법

Also Published As

Publication number Publication date
KR20220051546A (ko) 2022-04-26
US20230259457A1 (en) 2023-08-17

Similar Documents

Publication Publication Date Title
WO2016036135A1 (en) Method and apparatus for processing touch input
WO2017142309A1 (en) Electronic device and method for controlling application and component
WO2020171427A1 (ko) 어플리케이션을 프리페치하는 전자 장치 및 방법
WO2021060836A1 (ko) 어플리케이션 실행 방법 및 장치
EP3756145A1 (en) Electronic apparatus and control method thereof
WO2020080780A1 (en) Electronic device for executing multiple operating systems and method of controlling same
WO2018052242A1 (en) Method for displaying soft key and electronic device thereof
WO2020080767A1 (en) Method for controlling execution of heterogeneous operating systems and electronic device and storage medium therefor
WO2020162715A1 (en) Electronic device, storage medium, and method for process scheduling
WO2017034311A1 (ko) 이미지 처리장치 및 방법
WO2021010732A1 (en) Electronic device for outputting audio through usb port and method thereof
WO2022086003A1 (ko) 전자장치 및 그 제어방법
WO2021080290A1 (en) Electronic apparatus and control method thereof
WO2016013815A1 (ko) 데이터 운용 방법 및 전자 장치
WO2018135925A1 (ko) 복수의 프로세서들 사이에 데이터를 처리하는 방법 및 전자 장치
WO2017065477A1 (en) Method for recording execution screen and electronic device for processing the same
WO2022250452A1 (en) System and method for controlling operational modes for xr devices for performance optimization
WO2019172659A1 (ko) 부팅을 수행하는 전자 장치와 이의 동작 방법
WO2021206374A1 (ko) 전자 장치 및 이를 이용한 태스크 스케쥴링 방법
WO2021172941A1 (ko) 영상 스트리밍 방법 및 이를 지원하는 전자 장치
WO2021157837A1 (en) Electronic device for scheduling based on heterogeneous multi-processor and operating method
WO2023033584A1 (ko) 전자장치 및 그 제어방법
WO2019164172A1 (ko) 메모리를 제어하는 전자 장치 및 제어 방법
WO2016080580A1 (ko) 적어도 하나의 메모리를 포함하는 디바이스의 제어 방법 및 스마트 tv
WO2020022616A1 (ko) 전자 장치 및 그의 동작 방법

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21883074

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21883074

Country of ref document: EP

Kind code of ref document: A1