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

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

Info

Publication number
KR20210023073A
KR20210023073A KR1020190102743A KR20190102743A KR20210023073A KR 20210023073 A KR20210023073 A KR 20210023073A KR 1020190102743 A KR1020190102743 A KR 1020190102743A KR 20190102743 A KR20190102743 A KR 20190102743A KR 20210023073 A KR20210023073 A KR 20210023073A
Authority
KR
South Korea
Prior art keywords
function
electronic device
memory
processes
terminated
Prior art date
Application number
KR1020190102743A
Other languages
English (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 KR1020190102743A priority Critical patent/KR20210023073A/ko
Priority to PCT/KR2020/011122 priority patent/WO2021034128A1/en
Priority to US16/998,284 priority patent/US11385932B2/en
Priority to EP20855752.0A priority patent/EP3970017A4/en
Publication of KR20210023073A publication Critical patent/KR20210023073A/ko
Priority to US17/751,860 priority patent/US11726821B2/en

Links

Images

Classifications

    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/5022Mechanisms to release resources
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Telephone Function (AREA)

Abstract

전자장치는, 스토리지에 저장된 적어도 하나의 프로그램의 실행에 따라서 복수의 프로세스의 데이터가 메모리에 로딩됨으로써 상기 복수의 프로세스가 실행되도록 하고, 전자장치가 제공 가능한 복수의 기능 중에서 현재 실행 중인 기능을 식별하고, 복수의 프로세스 및 식별된 기능 사이의 관련성에 기초하여, 실행 중인 복수의 프로세스 중에서 적어도 하나의 프로세스를 종료시켜, 종료된 프로세스의 데이터가 로딩된 메모리의 저장영역을 타 프로세스가 사용 가능하도록 한다.

Description

전자장치 및 그 제어방법 {ELECTRONIC APPARATUS AND CONTROL METHOD THEREOF}
본 발명은 CPU, 프로세서에 의해 다양한 데이터를 메모리에 로딩하여 처리하는 전자장치 및 그 제어방법에 관한 것으로서, 상세하게는 실행중인 프로세스들로 인해 메모리의 가용용량이 부족할 때에 메모리의 가용용량을 확보하도록 동작하는 전자장치 및 그 제어방법에 관한 것이다.
소정의 정보를 특정 프로세스에 따라서 연산 및 처리하기 위해, 연산을 위한 CPU, 칩셋, 메모리 등의 전자부품들을 기본적으로 포함하는 전자장치는, 처리 대상이 되는 정보 또는 사용 용도가 무엇인지에 따라서 다양한 종류로 구분될 수 있다. 예를 들면, 전자장치에는 범용의 정보를 처리하는 PC나 서버 등의 정보처리장치, 영상데이터를 처리하는 영상처리장치, 오디오를 처리하는 오디오장치, 가정 내 잡무를 수행하는 생활가전 등이 있다. 영상처리장치는 처리된 영상데이터를 자체 구비한 디스플레이 패널(display panel) 상에 영상으로 표시하는 디스플레이장치로 구현될 수 있다.
대부분의 전자장치는 다양한 어플리케이션을 저장하기 위한 비휘발성 저장매체인 스토리지와, 어플리케이션을 실행하기 위해 해당 어플리케이션을 스토리지로부터 로딩시키기 위한 휘발성 저장매체인 메모리를 포함한다. 이러한 메모리의 대표적인 예시에는 램(RAM; Random-Access Memory)이 있다.
전자장치가 제공하는 기능이 증가하고, 어플리케이션의 메모리 사용량이 증가하고, 멀티태스킹에 의해 다수의 어플리케이션이 함께 실행될 수 있도록 지원됨에 따라서, 전자장치 내에 탑재되는 메모리의 사용용량이 증가하는 추세에 있다. 그러나, 메모리의 물리적인 사용용량을 증가시키는 것은 필연적으로 비용의 상승에 직결된다. 따라서, 전자장치에는 메모리를 효율적으로 사용하기 위한 소프트웨어 방법인 메모리 최적화 기술 또는 메모리의 사용용량을 절감하는 기술이 제안되고 있다. 제안되는 방법 또는 기술로는, 프로그래밍 언어 수준에서의 메모리 해제 정책, 운영체제 수준에서의 메모리 절감 기술, 플랫폼 수준에서의 메모리 절감 기술 등이 있다.
현재 제안되고 있는 메모리 절감 기술 중에서, 프로세스를 강제 종료하여 메모리를 확보하는 방법은, 현재 실행되고 있는 각 프로세스의 우선순위에 따라서 종료시킬 프로세스를 선택한다. 그런데, 여러 프로세스들 중에는 특정한 상황 하에서 중요도가 높은 프로세스가 있을 수 있으며, 각 상황 별로 중요도가 높은 프로세스가 상이할 수도 있다. 그러나, 통상적으로 프로세스의 종료를 위해 마련된 우선순위는 이러한 상황 별 중요도를 고려하지 않고 부여되는 경향이 있어서, 상황들을 고려하지 않으므로, 특정 상황 하에서 중요한 프로세스가 종료되는 경우가 발생하거나, 또는 특정 상황 하에서 우선순위는 높으나 실제로는 불필요한 프로세스가 종료되지 않아 메모리 확보에 어려움을 겪는 상황이 있을 수 있다.
또한, 프로세스들 중에는 재실행 옵션 또는 재시작 옵션을 포함하는 프로세스가 있다. 프로세스들을 관리하는 프레임워크 또는 운영체제는, 종료된 프로세스의 코드에 재실행 옵션이 있으면 해당 프로세스를 재실행시킨다. 이러한 재실행 옵션은, 해당 프로세스가 필요한 동작이 발생할 때에 이에 대응하기 위하여 프로세스에 적용된다. 그런데, 재실행 옵션을 포함하는 프로세스가 점차 증가함에 따라서, 메모리 사용용량을 확보하기 위해 프로세스를 종료시키더라도, 종료된 프로세스가 다시 실행되는 경우가 증가하고 있다. 이 경우에, 종료된 프로세스가 다시 실행되므로 실질적으로 메모리의 사용용량이 확보되지 못하며, 재실행을 위해 전자장치의 시스템 부하가 오히려 증가하는 오버헤드가 발생한다.
이러한 관점에서, 상기한 사항들이 새로 고려된 메모리 절감 기술이 전자장치에 적용되는 것이 바람직하다.
본 발명의 실시예에 따른 전자장치는, 메모리와, 스토리지와, 프로세서를 포함하며, 상기 스토리지에 저장된 적어도 하나의 프로그램의 실행에 따라서 복수의 프로세스의 데이터가 상기 메모리에 로딩됨으로써 상기 복수의 프로세스가 실행되고, 상기 프로세서는, 상기 전자장치가 제공 가능한 복수의 기능 중에서 현재 실행 중인 기능을 식별하고, 상기 복수의 프로세스 및 상기 식별된 기능 사이의 관련성에 기초하여, 상기 실행 중인 복수의 프로세스 중에서 적어도 하나의 프로세스를 종료시켜, 상기 종료된 프로세스의 데이터가 로딩된 상기 메모리의 저장영역을 타 프로세스가 사용 가능하도록 한다.
또한, 상기 프로세서는, 상기 종료된 프로세스와, 상기 메모리의 상기 저장영역 사이의 맵핑 상태를 해제함으로써, 상기 메모리의 상기 저장영역을 타 프로세스가 사용 가능하도록 할 수 있다.
또한, 상기 프로세서는, 상기 복수의 프로세스의 각 프로세스가 상기 복수의 기능 중 어떠한 기능에서 필요한지 여부를 나타내는 정보에 기초하여, 상기 복수의 프로세스와 상기 식별된 기능 사이의 관련성을 식별할 수 있다.
또한, 상기 종료시킨 프로세스가 상기 메모리에 다시 로딩되기 위한 재시작 옵션을 가지는 경우에, 상기 프로세서는, 상기 식별된 기능이 실행되는 동안 상기 종료시킨 프로세스가 재시작되는 것을 막을 수 있다.
또한, 상기 프로세서는, 상기 복수의 기능 중 현재 실행되는 기능이 제2기능으로 전환되었다고 식별하는 것에 기초하여, 상기 재시작 옵션을 가지나 상기 재시작을 막아 놓은 프로세스의 재시작을 허용할 수 있다.
또한, 상기 프로세서는, 상기 각 기능별로 상기 프로세스의 재시작을 제어 가능한지 여부를 나타내는 정보에 기초하여, 제1기능의 실행에 대응하여 재시작을 막아 놓은 프로세스에 대해 상기 제1 기능이 종료되고 상기 제2기능이 실행되면 상기 프로세스의 재시작을 허용할 수 있다.
또한, 상기 프로세서는, 상기 종료시킨 프로세스의 데이터의 일부에 대응하는 부분 프로세스를 실행하도록 제어할 수 있다.
또한, 상기 부분 프로세스는, 관련 프로세스의 프리로딩을 위해 마련되며, 소정 이벤트 발생 시 상기 관련 프로세스가 실행되도록 제어하는 역할을 수행하게 마련될 수 있다.
또한, 상기 프로세서는, 상기 각 기능 별로 상기 각 프로세스에 대한 부분 프로세스로의 대체 가능 여부를 나타내는 정보에 기초하여, 상기 부분 프로세스의 실행 여부를 식별할 수 있다.
또한, 상기 프로세서는, 상기 프로세스의 프로그램에 상기 프로그램의 종료를 요청함으로써, 상기 요청에 따라서 상기 프로세스가 종료되도록 할 수 있다.
또한, 상기 프로세서는, 상기 각 프로세스가 상기 각 기능에서 프로그램에 대한 종료를 요청할 것인지 여부를 나타내는 정보에 기초하여, 상기 프로그램에 대한 상기 각 프로세스의 종료 요청 여부를 식별할 수 있다.
또한, 본 발명의 실시예에 따른 전자장치의 제어방법은, 스토리지에 저장된 적어도 하나의 프로그램의 실행에 따라서 복수의 프로세스의 데이터를 메모리에 로딩됨으로써 상기 복수의 프로세스를 실행하는 단계와, 상기 전자장치가 제공 가능한 복수의 기능 중에서 현재 실행 중인 기능을 식별하는 단계와, 상기 복수의 프로세스 및 상기 식별된 기능 사이의 관련성에 기초하여, 상기 실행 중인 복수의 프로세스 중에서 적어도 하나의 프로세스를 종료시켜, 상기 종료된 프로세스의 데이터가 로딩된 상기 메모리의 저장영역을 타 프로세스가 사용 가능하도록 하는 단계를 포함한다.
도 1은 전자장치의 구성 블록도이다.
도 2는 전자장치의 제어방법을 나타내는 플로우차트이다.
도 3은 전자장치에서 메모리 최적화 방법의 루틴을 개략적으로 나타내는 예시도이다.
도 4는 프로세스 맵에서 각 항목을 정의하기 위한 비트맵 맵핑의 예시도이다.
도 5는 Essential Run Scenario 설정값을 정의하는 프로세스 맵의 예시도이다.
도 6은 전자장치가 식별된 기능의 시나리오와 관련성이 있는 프로세스를 프로세스 맵을 기반으로 식별하는 절차를 나타내는 블록도이다.
도 7은 Restart Control 설정값을 정의하는 프로세스 맵의 예시도이다.
도 8은 전자장치가 메모리 최적화 이벤트에 응답하여 종료할 프로세스의 재실행을 선택적으로 선별하는 방법을 나타내는 플로우차트이다.
도 9는 전자장치에서 수행되는 Small Preloading의 원리를 나타내는 구성 블록도이다.
도 10은 Small Preloading 설정값을 정의하는 프로세스 맵의 예시도이다.
도 11은 전자장치에서 수행되는 Message Warning의 원리를 나타내는 구성 블록도이다.
도 12는 Message Warning 설정값을 정의하는 프로세스 맵의 예시도이다.
도 13은 전자장치가 메모리 최적화 동작을 수행하는 방법을 나타내는 플로우차트이다.
이하에서는 첨부도면을 참조하여 본 발명에 따른 실시예들에 관해 상세히 설명한다. 각 도면을 참조하여 설명하는 실시예들은 특별한 언급이 없는 한 상호 배타적인 구성이 아니며, 하나의 장치 내에서 복수 개의 실시예가 선택적으로 조합되어 구현될 수 있다. 이러한 복수의 실시예의 조합은 본 발명의 기술분야에서 숙련된 기술자가 본 발명의 사상을 구현함에 있어서 임의로 선택되어 적용될 수 있다.
만일, 실시예에서 제1구성요소, 제2구성요소 등과 같이 서수를 포함하는 용어가 있다면, 이러한 용어는 다양한 구성요소들을 설명하기 위해 사용되는 것이며, 용어는 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용되는 바, 이들 구성요소는 용어에 의해 그 의미가 한정되지 않는다. 실시예에서 사용하는 용어는 해당 실시예를 설명하기 위해 적용되는 것으로서, 본 발명의 사상을 한정하지 않는다.
또한, 본 명세서에서의 복수의 구성요소 중 "적어도 하나(at least one)"라는 표현이 나오는 경우에, 본 표현은 복수의 구성요소 전체 뿐만 아니라, 복수의 구성요소 중 나머지를 배제한 각 하나 혹은 이들의 조합 모두를 지칭한다.
도 1은 전자장치의 구성 블록도이다.
도 1에 도시된 바와 같이, 본 실시예에 따른 전자장치(100)는 영상을 표시 가능한 디스플레이장치로 구현된다. 디스플레이장치로 구현되는 경우에, 전자장치(100)는 TV, 컴퓨터, 태블릿, 휴대용 미디어 플레이어, 웨어러블 디바이스, 비디오 월, 전자액자, 기타 모바일기기 등을 포함한다. 다만, 실제로 전자장치(100)는 디스플레이장치 뿐만 아니라, 영상처리장치, 생활가전, 정보처리장치 등 다양한 종류의 장치로 구현될 수 있다.
전자장치(100)는 통신부(110)와, 신호입출력부(120)와, 디스플레이부(130)와, 사용자입력부(140)와, 스토리지(150)와, 메모리(160)와, 프로세서(170)를 포함한다. 이하, 전자장치(100)의 구성에 관해 설명한다. 본 실시예서는 전자장치(100)가 디스플레이장치인 경우에 관해 설명하지만, 전자장치(100)는 다양한 종류의 장치로 구현될 수 있으므로, 본 실시예가 전자장치(100)의 구성을 한정하는 것은 아니다. 전자장치(100)가 디스플레이장치로 구현되지 않는 경우도 가능하며, 이 경우의 전자장치(100)는 디스플레이부(130)와 같은 영상 표시를 위한 구성요소들을 포함하지 않을 수 있다.
통신부(110)는 다양한 종류의 유선 및 무선 통신 프로토콜에 대응하는 통신모듈, 통신칩 등의 구성요소들 중 적어도 하나 이상을 포함하는 양방향 통신회로이다. 예를 들면, 통신부(110)는 와이파이 방식에 따라서 AP와 무선통신을 수행하는 무선통신모듈이나, 라우터 또는 게이트웨이에 유선 접속된 랜카드로 구현될 수 있다. 예를 들면, 통신부(110)는 네트워크 상의 서버 또는 외부장치와 통신함으로써 데이터 패킷을 송수신할 수 있다.
신호입출력부(120)는 셋탑박스 또는 광학미디어 재생장치와 같은 외부장치와 일대일 또는 일대다 방식으로 유선 접속됨으로써, 해당 외부장치에 대해 데이터를 수신하거나 또는 데이터를 출력하는 입출력회로이다. 신호입출력부(120)는 예를 들면, HDMI 포트, DisplayPort, USB 포트 등과 같이, 기 설정된 전송규격에 따른 커넥터 또는 포트 등을 포함한다.
디스플레이부(130)는 화면 상에 영상을 표시할 수 있는 디스플레이 패널을 포함한다. 디스플레이 패널은 액정 방식과 같은 수광 구조 또는 OLED 방식과 같은 자발광 구조로 마련된다. 디스플레이부(130)는 디스플레이 패널의 구조에 따라서 부가적인 구성을 추가로 포함할 수 있는데, 예를 들면 디스플레이 패널이 액정 방식이라면, 액정 디스플레이 패널에 광을 공급하는 백라이트유닛과 액정 디스플레이 패널의 액정을 구동시키는 패널구동기판 등이 구성요소로 추가된다.
사용자입력부(140)는 사용자의 입력을 수행하기 위해 마련된 다양한 종류의 입력 인터페이스 관련 회로를 포함한다. 사용자입력부(140)는 전자장치(100)의 종류에 따라서 여러 가지 형태의 구성이 가능하며, 예를 들면 전자장치(100)의 기계적 또는 전자적 버튼부, 전자장치(100)와 분리된 리모트 컨트롤러, 터치패드, 디스플레이부(130)에 설치된 터치스크린 등이 있다.
스토리지(150)는 전원의 제공 유무와 무관하게 데이터를 저장할 수 있는 비휘발성 저장 컴포넌트이다. 스토리지(150)는 예를 들면 플래시메모리(flash-memory), 하드디스크 드라이브, SSD(solid-state drive) 등을 포함한다. 스토리지(150)는 전자장치(100)의 구동을 위한 운영체제와, 요구되는 기능을 수행하기 위해 운영체제 상에서 실행되게 마련된 다양한 어플리케이션과, 운영체제 및 어플리케이션 사이의 계층에서 실행되면서 어플리케이션의 실행을 보조 및 관리하게 마련된 미들웨어 또는 프레임워크 등의 다양한 소프트웨어가 저장된다.
메모리(160)는 전원이 공급되는 동안에 데이터를 저장할 수 있고 전원이 공급되지 않으면 데이터가 소실되는 휘발성 저장 컴포넌트이다. 메모리(160)는 예를 들면 버퍼, 램 등을 포함한다. 메모리(160)는 스토리지(150)에 저장된 데이터 또는 소프트웨어 중에서 프로세서(170)에 의해 실행되기 위한 데이터 또는 소프트웨어가 로딩된다.
프로세서(170)는 인쇄회로기판 상에 장착되는 CPU, 칩셋, 버퍼, 회로 등으로 구현되는 하나 이상의 하드웨어 프로세서를 포함하며, 설계 방식에 따라서는 SOC(system on chip)로 구현될 수도 있다. 프로세서(170)는 디멀티플렉서, 디코더, 스케일러, 오디오 DSP, 앰프 등의 다양한 프로세스에 대응하는 모듈들을 포함하며, 이들 중 일부 또는 전체가 SOC로 구현될 수 있다. 예를 들면, 디멀티플렉서, 디코더, 스케일러 등 영상처리와 관련된 모듈이 영상처리 SOC로 구현되고, 오디오 DSP는 SOC와 별도의 칩셋으로 구현되는 것이 가능하다.
프로세서(170)는 전자장치(100)의 제반 동작을 수행하는 동작의 하드웨어 주체가 된다. 소프트웨어의 관점에서 전자장치(100)의 소정 동작은 운영체제 또는 커널이 수행하거나, 커널 상에서 실행되는 프레임워크 또는 어플리케이션에 의해 수행되는데, 프로세서(170)는 소프트웨어가 실행되도록 데이터의 연산, 처리 및 제어를 수행한다. 예를 들어 프로세서(170)는 전자장치(100)의 운영체제 또는 커널을 실행시키고, 또한 커널 상에서 어플리케이션을 실행시킴으로써 다양한 프로세스가 수행되도록 한다.
프로세서(170)는 프로세스에 관한 데이터를 먼저 메모리(160)인 램에 로딩시키고, 램에 로딩되어 있는 데이터에 기초하여 프로세스를 실행시킨다. 본 실시예에서의 프로세스는, 메모리(160)에 로딩되어 있는 데이터 또는 어플리케이션에 기반하여 실행되는 작업 단위이다. 즉, 프로세서(170)가 메모리(160)에 로딩되어 있는 데이터를 처리하거나 또는 메모리(160)에 로딩되어 있는 어플리케이션을 실행시킴으로써, 하나 이상의 프로세스가 수행된다. 즉, 프로세스가 실행되기 위해서는 해당 프로세스에 대응하는 데이터가 메모리(160)에 로딩되어 있어야 한다. 멀티태스킹은 복수의 프로세스에 대응하는 데이터가 메모리(160)에 로딩되어 있는 상태에서, 프로세서(170)가 메모리(160)에 로딩된 각 프로세스 별 데이터를 각기 실행함으로써 수행된다.
어느 한 프로세스에 대응하는 데이터가 메모리(160)에 소정 저장영역에 로딩되고 해당 프로세스가 실행되는 동안에는, 타 프로세스가 메모리(160)의 해당 저장영역에 억세스하여 데이터를 업데이트하지 못하게 마련된다. 소정의 제1프로세스에 대응하는 데이터가 메모리(160)의 제1저장영역에 로딩되면, 제1저장영역은 제1프로세스에 맵핑(mapping) 또는 링크(link)된다. 제1프로세스 및 메모리(160)의 제1저장영역 사이의 맵핑 또는 링크 상태는 제1프로세스가 실행되는 동안 유지된다. 제1프로세스가 제1저장영역에 맵핑된 상태에서는, 제1프로세스가 아닌 제2프로세스가 제1저장영역을 사용하여 제1저장영역에 데이터를 기록하거나 또는 업데이트하지 못하도록 차단된다.
제1프로세스가 종료되면 이러한 맵핑 상태는 해제되며, 이 경우를 제1저장영역이 제1프로세스에 대해 언맵핑 또는 언링크된다고 지칭될 수 있다. 제1저장영역이 어떠한 프로세스에 대해 언맵핑 상태일 때는, 제2프로세스는 제1저장영역을 사용할 수 있다.
그런데, 이와 같이 데이터가 메모리(160)에 로딩되고 여러 프로세스가 실행되면, 소정 시점에 메모리(160)의 가용용량을 확보하기 위한 이벤트가 발생할 수 있다. 이러한 이벤트는, 예를 들면 사용자 입력에 따라서 발생하거나, 또는 메모리(160)의 가용용량이 문턱값 이하로 내려가면 발생할 수 있다.
전자장치(100)는 본 이벤트 발생에 응답하여, 다음과 같은 동작을 수행한다.
도 2는 전자장치의 제어방법을 나타내는 플로우차트이다.
도 2에 도시된 바와 같이, 다음 동작은 전자장치의 프로세서에 의해 수행된다. 소프트웨어 측면에서 다음 동작은 전자장치의 운영체제, 또는 운영체제 상의 미들웨어나 프레임워크에 의해 수행될 수 있다.
210 단계에서 전자장치는 스토리지에 저장된 데이터를 메모리에 로딩하여 복수의 프로세스를 실행한다.
220 단계에서 전자장치는 메모리 최적화 이벤트가 발생하였는지 여부를 식별한다. 메모리 최적화 이벤트가 발생하지 않았다면, 전자장치는 추가적인 동작을 수행하지 않는다.
메모리 최적화 이벤트가 발생한 것으로 식별되면, 230 단계에서 전자장치는 제공 가능한 복수의 기능 중에서 현재 실행 중인 기능을 식별한다.
240 단계에서 전자장치는 복수의 프로세스가 각 기능에서 동작하는지 여부를 나타내는 정보를 획득한다. 본 정보는, 전자장치에 저장되거나 전자장치가 서버 등의 외부장치로부터 수신될 수 있다.
250 단계에서 전자장치는 획득한 정보에 기초하여, 복수의 프로세스 및 식별된 기능 사이의 관련성을 식별한다.
260 단계에서 전자장치는 복수의 프로세스 중에서 관련성이 없다고 식별된 프로세스를 종료한다. 이 경우에, 해당 프로세스의 데이터가 기록된 메모리의 영역은 언맵핑 상태가 되므로, 차후 타 프로세스의 데이터가 해당 영역을 사용할 수 있게 된다. 또한, 전자장치는 복수의 프로세스 중에서 관련성이 있다고 식별된 프로세스를 유지한다.
이와 같이 전자장치는 식별된 기능 별로 메모리를 종료할 프로세스를 선택하므로, 전자장치의 다양한 상황에 대응하여 필요한 프로세스를 메모리에 유지시킬 수 있다. 이로써, 전자장치는 효율적으로 메모리 가용용량을 확보할 수 있다.
이하, 메모리 최적화 방법에 관해 보다 구체적으로 설명한다.
도 3은 전자장치에서 메모리 최적화 방법의 루틴을 개략적으로 나타내는 예시도이다.
도 3에 도시된 바와 같이, 전체적인 메모리 최적화 방법의 과정은 시나리오 관리자(310)에 의해 수행되거나 제어된다. 시나리오 관리자(310)는 운영체제 상에서 동작하는 프레임워크에 포함되거나, 운영체제의 일부일 수 있다. 전자장치가 동작할 때에는 운영체제 상에서 다양한 기능을 구현하기 위한 프레임워크가 운영체제 레벨 및 사용자 레벨 사이의 계층에 존재하는데, 시나리오 관리자(310)는 이러한 프레임워크 내에서 메모리 최적화에 관한 동작을 수행하는 컴포넌트로 구현될 수 있다.
본 실시예에서의 시나리오는, 전자장치가 제공할 수 있는 복수의 기능 중에서 어느 하나의 기능이 수행되는 경우의 상황을 나타낸다. 즉, 특정 시나리오는 전자장치에서 해당 시나리오에 대응하는 기능이 실행되는 상태를 나타낸다.
시나리오 디스크립션 파일(320)은 복수의 프로세스(340)의 각 시나리오에 대한 관련성을 기록한 프로세스 맵을 포함한다. 프로세스 맵은, 실행 가능한 각 프로세스(340)가 복수의 시나리오 각각에 대해 관련성이 있는지 또는 없는지 여부를 나타낸다. 예를 들면 8개의 기능에 대응하여 8개의 시나리오가 있다고 하면, 프로세스 맵에서 어느 하나의 프로세스(340)는 이들 8개의 시나리오 별로 관련성 여부(관련성 있음 및 관련성 없음)를 나타내는 8개의 값을 가진다. 프로세스 맵에 관한 자세한 설명 및 예시에 관해서는 후술한다.
시나리오 관리자(310)는 프로세스(340)의 데이터가 메모리(330)에 로딩되고 프로세서(340)가 실행되는 상황과, 프로세스(340)의 종료에 따라서 데이터가 메모리(330)에 저장된 영역이 언맵핑되는 상황을 모니터링한다. 시나리오 관리자(310)는 메모리 최적화 이벤트가 감지되면, 소정 기준에 따라서 복수의 시나리오 중 어느 하나의 시나리오를 선택한다. 시나리오의 선택 기준은 여러 가지가 가능한데, 예를 들면 시나리오 관리자(310)는 전자장치의 현재 활성화되어 있는 것으로 식별되는 기능에 대응하는 시나리오를 선택할 수 있다. 또는, 시나리오 관리자(310)는 사용자가 실행하도록 지시하는 기능에 대응하는 시나리오를 선택할 수도 있다.
시나리오 관리자(310)는 시나리오 디스크립션 파일(320)로부터 획득한 프로세스 맵을 읽는다. 시나리오 관리자(310)는 프로세스 맵의 정의에 따라서, 현재 메모리(330)에 로딩되어 있는 복수의 프로세스(340) 및 현재 선택된 시나리오 사이의 관련성 여부를 식별한다. 시나리오 관리자(310)가 시나리오 디스크립션 파일(320)로부터 프로세스 맵을 획득하는 시점은 한정되지 않는다. 예를 들면, 전자장치의 부팅 시에 시나리오 관리자(310)가 시나리오 디스크립션 파일(320)을 읽어서 분석하고, 분석된 결과를 기반으로 프로세스 맵을 생성할 수 있다.
복수의 프로세스(340) 및 현재 선택된 시나리오 사이의 관련성 여부의 식별 결과, 메모리(330)에 로딩되어 있는 복수의 프로세스(340)는 선택된 시나리오와 관련성이 있는 제1그룹(350) 및 선택된 시나리오와 관련성이 없는 제2그룹(360)으로 구분된다. 시나리오 관리자(310)는 제1그룹(350)의 프로세스(340)를 그대로 실행되도록 함으로써, 데이터가 메모리(330)에 로딩된 상태를 유지시킨다. 반면에, 시나리오 관리자(310)는 제2그룹(360)의 프로세스(340)를 종료시킴으로써, 해당 프로세스(340)의 데이터가 저장된 메모리(330)의 저장영역을 타 프로세스가 사용할 수 있도록 언맵핑시킨다.
한편, 프로세스 맵에 정의된 기준에 따라서는, 시나리오 관리자(310)는 제2그룹(360)의 프로세스(340)를 종료시키는 동작 이외에도 다양한 동작이 수행되도록 할 수 있다. 설계 방식에 따라서는 다양한 동작의 정의가 프로세스 맵에 기록될 수 있는데, 이에 관한 구체적인 예시는 후술한다.
즉, 프로세스 맵은 각 시나리오 별로 복수의 프로세스(340)의 관련성, 즉 복수의 프로세스(340) 각각이 복수의 시나리오 중 어떠한 시나리오에서 필요한지 여부를 나타낸다. 시나리오 관리자(310)는 프로세스 맵의 정의에 따라서, 현재 식별된 시나리오에 대응하는 각 프로세스(340)의 유지 및 종료에 관한 정책을 수립하여 실행한다.
이하, 프로세스 맵이 정의하는 기준 및 내용에 관한 예시들에 관해 설명한다.
도 4는 프로세스 맵에서 각 항목을 정의하기 위한 비트맵 맵핑의 예시도이다.
도 4에 도시된 바와 같이, 프로세스 맵에서 각 프로세스 별로 정의되는 소정의 항목(400)은, 전자장치가 제공하는 기능에 대응하는 시나리오의 개수만큼의 비트를 가진다. 전자장치가 제공하는 기능은, 예를 들면 방송 프로그램의 재생, 동영상의 재생, 인터넷 브라우징, 게임 실행, 각 프로세스의 프로그램 또는 어플리케이션의 실행 등이 있다. 소정의 프로그램이 실행됨으로써, 하나 이상의 프로세스가 수행될 수 있다. 예를 들면, 동영상 재생기인 프로그램이 실행됨으로써, 영상 재생 프로세스, 오디오 재생 프로세스, 자막 표시 프로세스, 영상 및 오디오 동기화 프로세스 등의 세부적인 프로세스들이 실행된다.
하나의 프로세스에 관한 하나의 항목(400)은 32개의 시나리오를 나타내는 경우에 32비트, 64개의 시나리오를 나타내는 경우에 64비트를 가진다. 하나의 비트는 0 또는 1의 값을 가진다. 본 실시예에서는 항목(400)이 8개의 시나리오를 나타내도록 8비트를 가지는 경우에 관해 설명한다.
예를 들어 항목(400)의 각 비트의 값은 대응하는 기능의 관련성 여부를 나타낸다. 항목(400)이 0번 비트부터 7번 비트까지의 8개 비트가 있다고 할 때, 0번 비트는 제1기능의 시나리오에, 1번 비트는 제2기능의 시나리오에, 2번 비트는 제3기능의 시나리오에, 3번 비트는 제4기능의 시나리오에, 4번 비트는 제5기능의 시나리오에, 5번 비트는 제6기능의 시나리오에, 6번 비트는 제7기능의 시나리오에, 7번 비트는 제8기능의 시나리오에 각기 대응하는 방식으로, 모든 비트는 각기 대응하는 기능의 시나리오가 지정된다.
0번 비트의 값이 0이라는 의미는, 본 항목(400)은 0번 비트에 대응하는 제1기능의 시나리오와의 관련성이 없다는 것을 의미한다. 반면에 4번 비트의 값이 1이라는 의미는, 본 항목(400)은 4번 비트에 대응하는 제5기능의 시나리오와의 관련성이 있다는 것을 의미한다. 이러한 방식으로, 항목(400)은 해당 항목(400)에 관한 프로세스가 특정 기능의 시나리오와 관련성이 있는지 여부를 비트맵 맵핑 방식에 의해 나타낼 수 있다.
본 실시예에서는 4번 비트 하나만이 1의 값을 가지는 경우에 관해 설명하였지만, 프로세스에 따라서는 둘 이상의 비트가 1의 값을 가질 수도 있고, 모든 비트가 0의 값을 가지거나 또는 모든 비트가 1의 값을 가질 수도 있다. 예를 들어 0번 비트 및 1번 비트가 1의 값을 가진다면, 본 항목(400)은 0번 비트에 대응하는 제1기능의 시나리오 및 1번 비트에 대응하는 제2기능의 시나리오와 모두 관련성이 있다는 것을 의미한다. 만일 모든 비트가 0의 값을 가진다면, 이는 본 항목(400)이 제1기능 내지 제8기능에 대응하는 모든 시나리오와 관련성이 없다는 것을 의미한다.
이러한 비트맵 맵핑의 원리는 항목(400)이 나타내는 정보가 프로세스에 대응하는 기능의 관련성 여부가 아닌, 다른 정보인 경우에도 적용될 수 있다. 본 실시예에서는 각 비트가 전자장치가 제공하는 기능의 시나리오 및 프로세스 사이의 관련성을 나타내지만, 프로세스 맵에서는 그 이외의 정보에 관해서도 비트맵 맵핑 방식을 적용할 수 있다. 비트맵 맵핑이 프로세스 맵에서 적용되는 구체적인 예시에 관해서는 후술한다.
도 5는 Essential Run Scenario 설정값을 정의하는 프로세스 맵의 예시도이다.
도 5에 도시된 바와 같이, 프로세스 맵(500)은 복수의 프로세스에 각기 대응하는 Essential Run Scenario 설정값을 정의한다. Essential Run Scenario는 소정의 프로세스가 각 기능에 대응하는 시나리오와 관련성이 있는지 여부, 즉 소정의 프로세스가 각 기능에서 동작하는지 여부를 나타내는 정보이다. 예를 들어 8개의 기능에 각기 대응하는 시나리오가 있다고 할 때, 어느 한 프로세스에 대응하는 Essential Run Scenario는 해당 프로세스가 각 시나리오와 관련성이 있는지 여부를 나타내는 8비트의 정보를 가진다.
예를 들어 프로세스 맵(500)에 따르면, 제1프로세스의 Essential Run Scenario 설정값은 "00001000"을 나타낸다. 앞선 도 4에서의 예시를 따른다면, 본 설정값은 제6기능에 관한 5번 비트가 1을 나타내고, 나머지 기능에 관한 비트들은 0을 나타낸다. 즉, 본 프로세스 맵(500)은 제1프로세스가 제6기능과 관련성이 있는 반면에 나머지 기능과는 관련성이 없다는 것을 나타낸다. 또한, 제3프로세스의 Essential Run Scenario 설정값은 제1프로세스와 동일한 "00001000"을 나타내는 바, 이는 제3프로세스가 제6기능과 관련성이 있는 반면에 나머지 기능과는 관련성이 없다는 것을 나타낸다.
제2프로세스의 Essential Run Scenario 설정값은 "11100000"을 나타낸다. 이는, 제2프로세스가 제1기능, 제2기능, 제3기능과 관련성이 있는 반면에, 나머지 제4기능, 제5기능, 제6기능, 제7기능, 제8기능과 관련성이 없다는 것을 나타낸다.
제4프로세스의 Essential Run Scenario 설정값은 "11111111"을 나타낸다. 이는, 제4프로세스가 제1기능부터 제8기능까지의 모든 기능들과 각기 관련성이 있다는 것을 나타낸다.
이하, 전자장치가 식별된 기능의 시나리오와 관련성이 있는 프로세스를 프로세스 맵(500)을 기반으로 식별하는 절차에 관해 설명한다.
도 6은 전자장치가 식별된 기능의 시나리오와 관련성이 있는 프로세스를 프로세스 맵을 기반으로 식별하는 절차를 나타내는 블록도이다.
도 6에 도시된 바와 같이, 전자장치는 메모리 최적화 이벤트가 발생하면, 610 단계에서 현재 시점에 대응하는 기능의 시나리오를 식별하고, 식별된 기능의 시나리오의 상태값을 획득한다. 식별된 기능의 시나리오의 상태값의 형식은 프로세스 맵(631)의 Essential Run Scenario 설정값에 준한다. 예를 들어 전자장치가 현재 시점에 대응하는 기능을 제3기능이라고 식별하면, 식별 결과에 따른 상태값은 "00100000"이 된다.
전자장치는 620 단계에서 현재 실행중인, 또는 활성화되어 있는 프로세스들을 식별한다. 즉, 활성화된 프로세스는 해당 프로세스의 데이터가 메모리에 로딩되어 있고, 해당 데이터가 로딩된 메모리의 저장영역이 해당 프로세스에 맵핑된 상태이다. 또한, 활성화되지 않은 프로세스는 해당 프로세스의 데이터가 메모리에 로딩되어 있지 않거나, 해당 프로세스에 맵핑된 메모리의 저장영역이 없는 상태(즉, 언맵핑 상태)이다. 본 실시예에서는 예를 들어 메모리에 제1프로세스, 제2프로세스, 제3프로세스, 제4프로세스가 활성화되어 있고, 각 프로세스의 데이터가 로딩되어 있을 수 있다.
전자장치는 630 단계에서, 식별된 각 프로세스의 Essential Run Scenario 설정값을 프로세스 맵(631)으로부터 획득한다. 예를 들어 각 Essential Run Scenario 설정값은, 제1프로세스의 경우에 "00001000", 제2프로세스의 경우에 "11100000", 제3프로세스의 경우에 "00001000", 제4프로세스의 경우에 "11111111"일 수 있다.
전자장치는 640 단계에서, 식별된 기능의 시나리오의 상태값 및 프로세스 맵(631)으로부터 획득한 Essential Run Scenario 설정값에 기초하여, 식별된 기능과 관련성이 있는 프로세스 및 관련성이 없는 프로세스를 구분한다.
구체적으로, 전자장치는 식별된 기능의 시나리오의 상태값을 각 프로세스의 Essential Run Scenario 설정값과 비교한다. 전자장치는 식별된 기능의 시나리오의 상태값 및 각 프로세스의 Essential Run Scenario 설정값 사이에서 동일한 위치의 비트가 공통적으로 "1"의 값을 나타내는 프로세스를, 식별된 기능의 시나리오와 관련성이 있다고 식별한다. 반면, 전자장치는 식별된 기능의 시나리오의 상태값 및 소정 프로세스의 Essential Run Scenario 설정값 사이에서 동일한 위치의 비트가 공통적으로 "1"의 값을 나타내지 않으면, 식별된 기능의 시나리오와 해당 프로세스가 관련성이 없다고 식별한다.
예를 들면, 식별된 기능의 시나리오의 상태값 "00100000"에서, 3번 비트만이 "1"의 값을 나타낸다. 제1프로세스 내지 제4프로세스 중에서 3번 비트가 "1"의 값을 나타내는 것은 제2프로세스 및 제4프로세스이고, 3번 비트가 "0"의 값을 나타내는 것은 제1프로세스 및 제3프로세스이다. 이에, 전자장치는 제2프로세스 및 제4프로세스는 식별된 기능의 시나리오와 관련성이 있고, 제1프로세스 및 제3프로세스는 식별된 기능의 시나리오와 관련성이 없다고 식별하다.
전자장치는 650 단계에서 메모리에서 제2프로세스 및 제4프로세스를 유지하고, 제1프로세스 및 제3프로세스를 종료시킨다. 제1프로세스 및 제3프로세스의 종료에 따라서, 해당 프로세스의 데이터가 로딩된 메모리의 저장영역은 언맵핑 상태가 된다.
이와 같이, 전자장치는 메모리 최적화 이벤트가 발생하면, 현재 식별된 기능의 시나리오와 관련성이 있는 프로세스를 유지하고, 현재 식별된 기능의 시나리오와 관련성이 없는 프로세스를 종료시킨다. 전자장치는 현재 식별된 기능에 대응하지 않는 프로세스를 종료함으로써, 메모리를 최적화하기 위해 종료시킬 프로세스를 선택함에 있어서 상황에 맞는 선별적인 프로세스의 선택이 가능하다.
한편, 이상 실시예에서는 식별된 기능의 시나리오와 관련성이 없는 프로세스를 식별하기 위해 프로세스 맵이 사용되는 경우에 관해 설명하였다. 그러나, 프로세스 맵의 정의 및 사용 방법은 이에 한정되지 않는 바, 이하 프로세스 맵의 정의 및 사용 방법의 상이한 실시예에 관해 설명한다.
도 7은 Restart Control 설정값을 정의하는 프로세스 맵의 예시도이다.
도 7에 도시된 바와 같이, 프로세스 맵(700)은 복수의 프로세스에 각기 대응하는 Restart Control 설정값을 정의한다. Restart Control의 항목은 식별된 기능의 시나리오 하에서 프로세스를 종료하는 것으로 식별되었을 때, 해당 프로세스가 종료된 이후에 시나리오가 진행되는 동안 다시 실행되는 것을 방지할 수 있는지 여부를 나타내는 정보이다. 즉, Restart Control의 항목은 시나리오 동안 해당 프로세스의 재실행 옵션(또는, 재시작 옵션)을 지연시킬 수 있는지 여부를 나타내는 정보이다. 프로세스 맵(700)은 Essential Run Scenario 항목에 추가하여 Restart Control 항목을 더 포함한다.
프로그램이 프로세스를 실행시킴에 있어서, 특정 프로세스에 대해서 재실행 옵션이 부여될 수 있다. 재실행 옵션은 프로세스의 데이터 코드에 기록될 수 있다. 재실행 옵션이 어느 프로세스에 부여되는 경우는 다양한 이유가 있는데, 한 가지 예시로서 프로그램 정책상 소정 프로세스가 타 프로세스와 연계하는 경우가 빈번하다면, 백그라운드에서 계속 상주하도록 재실행 옵션이 해당 프로세스에 부여될 수 있다.
프로세스 별 Restart Control 설정값은 복수의 기능에 각기 대응하는 복수의 비트를 포함하며, 각 비트는 대응 기능 하에서 재실행을 방지할 수 있는지 여부를 나타낸다. 예를 들어, 각 프로세스의 Restart Control 설정값이 8개 비트를 포함한다면, 각 비트의 값이 8개의 기능 별 시나리오 하에서 재실행 옵션의 가능 여부를 나타낸다. 여기서, Restart Control 설정값의 각 비트가 0 또는 1의 값을 나타내는 경우는, 해당 프로세스가 재실행 옵션을 가지는 경우이다. 본 프로세스 맵(700)에서는 제1프로세스, 제2프로세스, 제3프로세스가 재실행 옵션을 가지는 경우에 해당한다.
반면, Restart Control 설정값이 null값을 나타내는 경우는, 해당 프로세스가 재실행 옵션을 가지지 않는 경우이다. 본 프로세스 맵(700)에 따르면 제4프로세스의 Restart Control 설정값이 null을 나타내는데, 이는 제4프로세스가 재실행 옵션을 가지지 않는다는 것을 의미한다. 즉, 식별된 기능의 시나리오 하에서 제4프로세스가 종료되었을 때, 해당 시나리오가 계속 진행되는 동안에는 제4프로세스가 다시 실행되지 않는다.
제1프로세스의 Restart Control 설정값이 "00000000"이면, 제1프로세스는 제1기능 내지 제8기능의 모든 시나리오 하에서 재실행의 차단, 방지 또는 지연이 불가능하다는 것을 나타낸다. 즉, 제1프로세스는 종료되더라도, 재실행 옵션에 의해 다시 실행된다. 제1프로세스가 전자장치의 동작에 있어서 중요한 프로세스일 경우에, 프로세스 맵(700)의 정의에 의해 제1프로세스의 재실행이 허용되도록 할 수 있다. 제3프로세스의 경우도 이와 동일하다.
제2프로세스의 Restart Control 설정값이 "00000111"이면, 제2프로세스는 제1기능, 제2기능, 제3기능, 제4기능, 제5기능의 시나리오 하에서 재실행의 차단, 방지 또는 지연이 불가능하다는 것을 나타낸다. 즉, 제1기능 내지 제5기능의 시나리오 하에서는, 제2프로세스는 메모리에서 데이터가 삭제되더라도, 재실행 옵션에 의해 다시 실행된다. 반면, 제2프로세스는 제6기능, 제7기능, 제8기능의 시나리오 하에서 재실행의 차단, 방지 또는 지연이 가능하다는 것을 나타낸다. 즉, 제6기능 내지 제8기능의 시나리오가 진행되는 동안, 전자장치는 제2프로세스를 종료시킨 이후에 제2프로세스가 다시 실행되는 것을 차단, 방지 또는 지연시킬 수 있다. 진행중인 기능 별 시나리오가 바뀌면, 전자장치는 제2프로세스의 재실행의 차단을 리셋하고, 바뀐 기능 별 시나리오에 대응하는 동작을 수행한다.
이하, 전자장치가 식별된 기능의 시나리오와 관련성이 없는 프로세스를 식별하고, 식별된 프로세스의 재실행 차단 여부를 프로세스 맵(700)을 기반으로 식별하는 절차에 관해 설명한다.
도 8은 전자장치가 메모리 최적화 이벤트에 응답하여 종료할 프로세스의 재실행 차단을 선택적으로 선별하는 방법을 나타내는 플로우차트이다.
도 8에 도시된 바와 같이, 다음 동작은 전자장치의 프로세서에 의해 수행된다. 소프트웨어 측면에서 다음 동작은 전자장치의 운영체제, 또는 운영체제 상의 미들웨어나 프레임워크에 의해 수행될 수 있다.
810 단계에서 전자장치는 메모리 최적화 이벤트에 응답하여 복수의 기능 중 어느 하나의 기능을 식별한다.
820 단계에서 전자장치는 메모리에 데이터가 로딩된 복수의 프로세스 중에서, 식별된 기능의 시나리오와 관련성이 없는 하나 이상의 프로세스를 식별한다. 프로세스들의 식별 방법은 앞선 실시예들에서 설명한 바와 같다.
830 단계에서 전자장치는 식별된 프로세스를 종료한다. 이에 의하여, 전자장치는 메모리 최적화를 수행한다.
840 단계에서 전자장치는 식별된 프로세스, 즉 종료된 프로세스가 재실행 옵션을 가지는지 여부를 식별한다. 식별된 프로세스가 재실행 옵션을 가지지 않는다면, 전자장치는 종료된 프로세스에 대해 추가적인 동작을 수행하지 않는다.
종료된 프로세스가 재실행 옵션을 가진다고 식별되면, 850 단계에서 전자장치는 해당 프로세스의 재실행을 차단시킬 수 있는지 여부를 식별한다.
해당 프로세스의 재실행을 차단시킬 수 있다고 식별되면, 860 단계에서 전자장치는 식별된 기능의 시나리오가 진행되는 동안 해당 프로세스가 재실행되지 않도록 해당 프로세스의 재실행을 차단시킨다.
반면에 해당 프로세스의 재실행을 차단시킬 수 없다고 식별되면, 870 단계에서 전자장치는 추가적인 동작 없이 해당 프로세스의 재실행을 허용한다.
한편, 전자장치는 식별된 제1기능의 시나리오가 상이한 제2기능의 시나리오로 전환되는 이벤트를 감지하면, 제1기능의 시나리오에서 재실행이 차단된 프로세스가 있는지 여부를 식별한다. 재실행이 차단된 프로세스가 있으면, 전자장치는 제2기능의 시나리오 하에서 해당 프로세스들이 재실행되는 것을 허용한다.
소프트웨어적 측면에서, 메모리 최적화 동작은 프레임워크의 시나리오 관리자에 의해 제어되는 것에 비해, 프로세스의 재실행은 해당 프로세스에 관련된 프로그램 또는 운영체제에 의해 수행된다. 프로세스의 속성 또는 프로세스에 부여된 재실행 옵션의 속성에 따라서는, 시나리오 관리자에 의해 프로세스의 재실행을 차단시킬 수 있는 경우도 있고, 재실행을 차단시킬 수 없는 경우도 있다. 본 실시예에 따른 전자장치는 적어도 재실행을 차단시킬 수 있는 프로세스에 대해 재실행을 차단시킴으로써, 메모리의 최적화가 보다 효율적으로 수행될 수 있도록 한다.
한편, 메모리 최적화를 위해 현재 시나리오와 관련성이 없다고 식별된 프로세스에 대한 처리방법은 다양하게 마련될 수 있다. 예를 들면, 전자장치는 현재 시나리오와 관련성이 없는 하나 이상의 프로세스가 식별되면, 앞선 실시예들에서와 같이 식별된 프로세스를 종료할 수 있다. 또는, 전자장치는 식별된 프로세스를 종료하는 대신, 식별된 프로세스에 대해 Small Preloading 또는 Message Warning을 수행할 수도 있다. 이하, Small Preloading에 관해 설명한다.
도 9는 전자장치에서 수행되는 Small Preloading의 원리를 나타내는 구성 블록도이다.
도 9에 도시된 바와 같이, 스토리지(920)는 소정 프로세스의 전체 데이터(930)를 저장한다. 프로세스의 전체 데이터(930)는 스토리지(920)로부터 메모리(910)에 로딩되며, 메모리(910)에 로딩된 전체 데이터(930)가 처리됨으로써 프로세스가 실행된다. 여기서, 전체 데이터(930)는 하나의 프로세스에 대응하는 데이터의 전체를 의미한다.
본 실시예에 따른 프로세스의 전체 데이터(930)는 부분 프로세스에 대응하는 제1데이터(931)와, 제1데이터(931) 이외의 나머지 제2데이터(932)를 포함한다. 부분 프로세스는 프로세스의 일부이며, 해당 프로세스가 활성화되지 않은 경우(프로세스의 기능이 완전히 실행되고 있지 않은 경우, 또는 프로세스의 전체 데이터(930)가 완전히 메모리(910)로 로딩되어 있지 않은 경우)에, 프로세스에 관련된 이벤트의 수신 및 프로세스의 완전한 기능을 트리거하기 위한 하위 프로세스이다. 즉, 부분 프로세스는 부분 프로세스와 관련된 프로세스의 프리로딩을 위한 데이터이며, 소정 이벤트 발생 시 관련 프로세스의 데이터 전체가 메모리에 로딩되도록 제어하는 역할을 수행하게 마련된다.
프로세스의 전체 데이터(930)가 메모리(910)에 로딩되어 있는 동안 해당 프로세스가 종료되는 대상으로 식별될 수 있다. 이 경우에, 프레임워크(940)는 메모리(910)에서 전체 데이터(930)가 로딩된 저장영역을 언맵핑하지 않고, 제1데이터(931)가 로딩된 저장영역의 맵핑 상태를 유지하고, 제2데이터(932)가 로딩된 저장영역을 언맵핑 상태로 한다. 즉, 프레임워크(940)는 프로세스를 비활성화시키고 부분 프로세스를 활성화시킨다. 이러한 동작을 Small Preloading이라고 지칭한다.
Small Preloading은 제1데이터(931)를 메모리(910)에 남기므로, 프로세스를 종료시켜 전체 데이터(930)가 저장된 영역을 언맵핑 상태로 하는 경우에 비해 메모리(910)를 확보하는 양은 적다. 그러나, Small Preloading은 제1데이터(931)에 의해 부분 프로세스가 활성화되도록 하므로, 프로세스 관련 이벤트가 발생한 경우에 부분 프로세스에 의해 프로세스를 실행시키도록 할 수 있다.
프레임워크(940)는 프로세스 맵(950)을 참조하여, Small Preloading을 수행 가능한 프로세스를 식별한다. 이하, 프로세스 맵(950)의 예시에 관해 설명한다.
도 10은 Small Preloading 설정값을 정의하는 프로세스 맵의 예시도이다.
도 10에 도시된 바와 같이, 프로세스 맵(1000)은 복수의 프로세스에 각기 대응하는 Small Preloading 설정값을 정의한다. Small Preloading 항목은 식별된 기능의 시나리오 하에서 프로세스의 Small Preloading을 수행 가능한지 여부를 나타내는 정보이다. 프로세스 맵(1000)은 Essential Run Scenario 항목에 추가하여 Small Preloading 항목을 더 포함할 수 있다.
프로세스 별 Small Preloading 설정값은 복수의 기능에 각기 대응하는 복수의 비트를 포함하며, 각 비트는 대응 기능 하에서 Small Preloading을 수행 가능한지 여부를 나타낸다. 예를 들어, 각 프로세스의 Small Preloading 설정값이 8개 비트를 포함한다면, 각 비트의 값이 8개의 기능 별 시나리오 하에서 Small Preloading의 실행 가능 여부를 나타낸다. 비트의 값이 1이면 Small Preloading이 가능하고, 비트의 값이 0이면 Small Preloading이 가능하지 않다는 것을 나타낸다.
제1프로세스의 Small Preloading 설정값이 "00000000"이면, 제1프로세스는 제1기능 내지 제8기능의 모든 시나리오 하에서 Small Preloading을 수행할 수 없다는 것을 나타낸다. 따라서, 전자장치는 제1프로세스를 정리하여 메모리 최적화를 하고자 할 때에는, 제1프로세스를 종료하는 등과 같이, Small Preloading 이외의 동작을 수행하여야 한다. 제2프로세스 및 제4프로세스의 경우도 이와 동일하다.
제3프로세스의 Small Preloading 설정값이 "11110111"이면, 제3프로세스는 제1기능 내지 제8기능 중에서 제5기능을 제외한 나머지 기능의 시나리오 하에서 Small Preloading이 가능하다는 것을 나타낸다. 프레임워크는 제1기능 내지 제8기능 중 제5기능 이외의 기능의 시나리오 하에서, 제3프로세스에 대해 Small Preloading을 수행함으로써 메모리의 가용용량을 확보한다.
이하, Message Warning에 관해 설명한다.
도 11은 전자장치에서 수행되는 Message Warning의 원리를 나타내는 구성 블록도이다.
도 11에 도시된 바와 같이, 프로그램(1120)은 스토리지에 저장된 프로세스의 데이터를 메모리(1130)에 로딩시켜 실행함으로써 해당 프로세스가 수행되도록 한다. 한편, 프레임워크(1110)는 메모리(1130) 최적화를 수행하여 메모리(1130)의 가용용량을 확보한다. 프레임워크(1110)의 메모리(1130) 최적화 동작은 앞선 실시예들에서 설명한 바와 같다.
소프트웨어 측면에서, 프레임워크(1110) 및 프로그램(1120)은 서로 상이한 구성요소이므로, 프레임워크(1110)가 수행 가능한 동작 및 프로그램(1120)이 수행 가능한 동작은 차이가 있다. 또한, 앞선 실시예에서는 프레임워크(1110)가 프로세스를 종료시킴으로써 해당 프로세스의 데이터가 저장된 메모리(1130)의 저장영역(1140)을 언맵핑하는 동작을 직접 수행하거나, 또는 프레임워크(1110)의 하위 계층에 있는 운영체제에게 해당 동작을 요청하는 경우에 관해 설명하였다. 그러나, 프로세스에 대한 정책으로 인해, 특정 프로세스를 프레임워크(1110)가 직접 종료하는 동작이 불가능한 경우도 있다.
이러한 경우에, 프레임워크(1110)는 해당 프로세스에 대한 Message Warning을 수행할 수 있다. Message Warning은, 대상이 되는 프로세스를 실행시키는 프로그램(1120)을 식별하고, 식별된 프로그램(1120)에게 해당 프로세스의 정리를 요청하는 동작이다. 프로그램(1120)은 프레임워크(1110)로부터Message Warning 관련 통지를 받은 프로세스를 확인하여, 해당 프로세스를 종료시킨다. 이로써, 데이터가 로딩된 메모리(1130)의 저장영역(1140)은 언맵핑 상태가 된다.
프레임워크(1110)는 프로세스 맵(1150)을 참조하여, Message Warning을 수행 가능한 프로세스를 식별할 수 있다. 이하, 프로세스 맵(1150)의 예시에 관해 설명한다.
도 12는 Message Warning 설정값을 정의하는 프로세스 맵의 예시도이다.
도 12에 도시된 바와 같이, 프로세스 맵(1200)은 복수의 프로세스에 각기 대응하는 Message Warning 설정값을 정의한다. Message Warning 항목은 식별된 기능의 시나리오 하에서 프로세스의 Message Warning을 수행 가능한지 여부를 나타내는 정보이다. 프로세스 맵(1200)은 Essential Run Scenario 항목에 추가하여 Message Warning 항목을 더 포함할 수 있다.
프로세스 별 Message Warning 설정값은 복수의 기능에 각기 대응하는 복수의 비트를 포함하며, 각 비트는 대응 기능 하에서 Message Warning을 수행 가능한지 여부를 나타낸다. 예를 들어, 각 프로세스의 Message Warning 설정값이 8개 비트를 포함한다면, 각 비트의 값이 8개의 기능 별 시나리오 하에서 Message Warning 의 실행 가능 여부를 나타낸다. 비트의 값이 1이면 Message Warning이 가능하고, 비트의 값이 0이면 Message Warning이 가능하지 않다는 것을 나타낸다.
제2프로세스의 Message Warning 설정값이 "00000000"이면, 제2프로세스는 제1기능 내지 제8기능의 모든 시나리오 하에서 Message Warning을 수행할 수 없다는 것을 나타낸다. 따라서, 전자장치는 제2프로세스를 정리하여 메모리 최적화를 하고자 할 때에는, Message Warning 이외의 별도로 마련된 동작을 수행하여야 한다. 제3프로세스 및 제4프로세스의 경우도 이와 동일하다.
제1프로세스의 Message Warning 설정값이 "11101111"이면, 제1프로세스는 제1기능 내지 제8기능 중에서 제4기능을 제외한 나머지 기능의 시나리오 하에서 Message Warning이 가능하다는 것을 나타낸다. 프레임워크는 제1기능 내지 제8기능 중 제4기능 이외의 기능의 시나리오 하에서, 제1프로세스에 대해 Message Warning을 수행함으로써 메모리의 가용용량이 확보되도록 한다.
한편, 상기한 실시예들의 동작은 단독으로 수행될 수도 있고, 복수의 동작이 상호 연계되어 수행될 수도 있다. 이하, 프레임워크가 메모리 최적화 동작을 수행함에 있어서, 여러 가지 방식을 선택적으로 실행하는 실시예에 관해 설명한다.
도 13은 전자장치가 메모리 최적화 동작을 수행하는 방법을 나타내는 플로우차트이다.
도 13에 도시된 바와 같이, 다음 동작은 전자장치의 프로세서에 의해 수행된다. 소프트웨어 측면에서 다음 동작은 전자장치의 운영체제, 또는 운영체제 상의 미들웨어나 프레임워크에 의해 수행될 수 있다.
1300 단계에서 전자장치는 소정 기능의 시나리오의 변경 이벤트에 응답하여, 메모리의 최적화가 필요한지 여부를 식별한다. 전자장치는 메모리의 가용용량이 문턱값보다 낮아지면, 메모리의 최적화가 필요한 것으로 식별할 수 있다. 메모리의 최적화가 필요하지 않다고 식별되면, 전자장치는 메모리 최적화와 관련된 추가 동작을 수행하지 않는다.
메모리의 최적화가 필요하다고 식별되면, 1310 단계에서 전자장치는 활성화된 소정 프로세스의 종료가 가능한지 식별한다.
프로세스의 종료가 가능하다고 식별되면, 1320 단계에서 전자장치는 해당 프로세스를 종료시킨다. 이로써, 해당 프로세스의 데이터가 로딩된 메모리의 저장영역은 언맵핑 상태가 되고, 메모리의 가용용량은 늘어난다.
반면에 프로세스의 종료가 가능하지 않다고 식별되면, 1330 단계에서 전자장치는 프로세스의 Restart Control이 가능한지 식별한다.
프로세스의 Restart Control이 가능하다고 식별되면, 1340 단계에서 전자장치는 식별된 기능의 시나리오가 진행되는 동안 프로세스의 재실행을 차단함으로써, 프로세스의 재실행을 지연시킨다.
반면에 프로세스의 Restart Control이 가능하지 않지 않다고 식별되면, 1350 단계에서 전자장치는 프로세스의 Message Warning이 가능한지 식별한다.
프로세스의 Message Warning이 가능하다고 식별되면, 1360 단계에서 전자장치는 해당 프로세스를 관리 또는 실행하는 프로그램에 프로세스의 정리를 요청한다.
반면에 프로세스의 Message Warning이 가능하지 않다고 식별되면, 1370 단계에서 전자장치는 프로세스의 Small Preloading이 가능한지 식별한다.
프로세스의 Small Preloading이 가능하다고 식별되면, 1380 단계에서 전자장치는 프로세스 종료 이후 보조 프로세스를 실행시킨다.
반면에 프로세스의 Small Preloading이 가능하지 않다고 식별되면, 1390 단계에서 전자장치는 LMK(Low Memory Killer)를 실행시킨다. LMK는 메모리에 로딩되어 있는 복수의 프로세스 각각에 대한 우선순위가 사전에 지정되어 있는 상태에서, 메모리의 가용용량이 확보될 때까지 상기한 우선순위에 따라서 순차적으로 프로세스를 종료시키는 방법이다. 다만, 전자장치는 LMK 뿐만 아니라, OOM Killer(Out-of-Memory Killer) 등과 같은 다양한 메모리 회수 기술을 사용할 수 있다.
이와 같이, 전자장치는 메모리 최적화의 대상이 되는 소정 프로세스에 대해, 다양한 최적화 방법을 선택적으로 적용시킴으로써, 보다 효율적인 메모리 관리가 가능하다.
이상 실시예들에서 설명한 바와 같은 장치의 동작은, 해당 장치에 탑재된 인공지능에 의해 수행될 수 있다. 인공지능은 기계 학습 알고리즘을 활용하여 다양한 제반 시스템에 적용될 수 있다. 인공지능 시스템은 인간 수준 내지는 인간 수준에 버금가는 지능을 구현하는 컴퓨터 시스템으로서, 기계, 장치 또는 시스템이 자율적으로 학습하고 판단하며, 사용 경험의 누적에 기반하여 인식률 및 판단 정확도가 향상되는 시스템이다. 인공지능 기술은 입력되는 데이터들의 특징을 스스로 분류하고 학습하는 알고리즘을 이용한 기계학습(deep-running) 기술 및 알고리즘을 활용하여, 인간의 두뇌의 인지, 판단 등의 기능을 모사하는 요소 기술들로 구성된다.
요소 기술들은, 예를 들면 인간의 언어와 문자를 인식하는 언어적 이해 기술, 사물을 인간의 시각처럼 인식하는 시각적 이해 기술, 정보를 판단하여 논리적으로 추론하고 예측하는 추론 및 예측 기술, 인간의 경험 정보를 지식 데이터로 처리하는 지식 표현 기술, 차량의 자율 주행이나 로봇의 움직임을 제어하는 동작 제어 기술 중 적어도 어느 하나를 포함한다.
여기서, 언어적인 이해는 인간의 언어 또는 문자를 인식하고 응용 처리하는 기술로서, 자연어의 처리, 기계 번역, 대화 시스템, 질의 응답, 음성 인식 및 합성 등을 포함한다.
추론 예측은 정보를 판단하여 논리적으로 예측하는 기술로서, 지식 및 확률 기반 추론, 최적화 예측, 선호 기반 계획, 추천 등을 포함한다.
지식 표현은 인간의 경험 정보를 지식 데이터로 자동화 처리하는 기술로서, 데이터의 생성 및 분류와 같은 지식 구축, 데이터의 활용과 같은 지식 관리 등을 포함한다.
본 발명의 예시적 실시예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이러한 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 삭제 가능 또는 재기록 가능 여부와 상관없이, USB 메모리장치와 같은 비휘발성 저장 장치, 또는 예를 들어 RAM, ROM, 플래시메모리, 메모리 칩, 집적 회로와 같은 메모리, 또는 예를 들어 CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 광학 또는 자기적으로 기록 가능함과 동시에 기계(예를 들어, 컴퓨터)로 읽을 수 있는 저장 매체에 저장될 수 있다. 이동 단말 내에 포함될 수 있는 메모리는 본 발명의 실시 예들을 구현하는 지시들을 포함하는 프로그램 또는 프로그램들을 저장하기에 적합한 기계로 읽을 수 있는 저장 매체의 한 예임을 알 수 있을 것이다. 본 저장 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어의 기술 분야에서 숙련된 기술자에게 공지되어 사용 가능한 것일 수도 있다. 또는, 본 컴퓨터 프로그램 명령은 컴퓨터 프로그램 프로덕트에 의해 구현될 수도 있다.
100 : 전자장치
150 : 스토리지
160 : 메모리
170 : 프로세서

Claims (20)

  1. 전자장치에 있어서,
    메모리와,
    스토리지와,
    프로세서를 포함하며,
    상기 스토리지에 저장된 적어도 하나의 프로그램의 실행에 따라서 복수의 프로세스의 데이터가 상기 메모리에 로딩됨으로써 상기 복수의 프로세스가 실행되고,
    상기 프로세서는,
    상기 전자장치가 제공 가능한 복수의 기능 중에서 현재 실행 중인 기능을 식별하고,
    상기 복수의 프로세스 및 상기 식별된 기능 사이의 관련성에 기초하여, 상기 실행 중인 복수의 프로세스 중에서 적어도 하나의 프로세스를 종료시켜, 상기 종료된 프로세스의 데이터가 로딩된 상기 메모리의 저장영역을 타 프로세스가 사용 가능하도록 하는 전자장치.
  2. 제1항에 있어서,
    상기 프로세서는, 상기 종료된 프로세스와, 상기 메모리의 상기 저장영역 사이의 맵핑 상태를 해제함으로써, 상기 메모리의 상기 저장영역을 타 프로세스가 사용 가능하도록 하는 전자장치.
  3. 제1항에 있어서,
    상기 프로세서는, 상기 복수의 프로세스의 각 프로세스가 상기 복수의 기능 중 어떠한 기능에서 필요한지 여부를 나타내는 정보에 기초하여, 상기 복수의 프로세스와 상기 식별된 기능 사이의 관련성을 식별하는 전자장치.
  4. 제1항에 있어서,
    상기 종료시킨 프로세스가 상기 메모리에 다시 로딩되기 위한 재시작 옵션을 가지는 경우에, 상기 프로세서는, 상기 식별된 기능이 실행되는 동안 상기 종료시킨 프로세스가 재시작되는 것을 막는 전자장치.
  5. 제4항에 있어서,
    상기 프로세서는, 상기 복수의 기능 중 현재 실행되는 기능이 제2기능으로 전환되었다고 식별하는 것에 기초하여, 상기 재시작 옵션을 가지나 상기 재시작을 막아 놓은 프로세스의 재시작을 허용하는 전자장치.
  6. 제5항에 있어서,
    상기 프로세서는, 상기 각 기능별로 상기 프로세스의 재시작을 제어 가능한지 여부를 나타내는 정보에 기초하여, 제1기능의 실행에 대응하여 재시작을 막아 놓은 프로세스에 대해 상기 제1 기능이 종료되고 상기 제2기능이 실행되면 상기 프로세스의 재시작을 허용하는 전자장치.
  7. 제1항에 있어서,
    상기 프로세서는, 상기 종료시킨 프로세스의 데이터의 일부에 대응하는 부분 프로세스를 실행하도록 제어하는 전자장치.
  8. 제7항에 있어서,
    상기 부분 프로세스는, 관련 프로세스의 프리로딩을 위해 마련되며, 소정 이벤트 발생 시 상기 관련 프로세스가 실행되도록 제어하는 역할을 수행하게 마련된 전자장치.
  9. 제7항에 있어서,
    상기 프로세서는, 상기 각 기능 별로 상기 각 프로세스에 대한 부분 프로세스로의 대체 가능 여부를 나타내는 정보에 기초하여, 상기 부분 프로세스의 실행 여부를 식별하는 전자장치.
  10. 제1항에 있어서,
    상기 프로세서는, 상기 프로세스의 프로그램에 상기 프로그램의 종료를 요청함으로써, 상기 요청에 따라서 상기 프로세스가 종료되도록 하는 전자장치.
  11. 제10항에 있어서,
    상기 프로세서는, 상기 각 프로세스가 상기 각 기능에서 프로그램에 대한 종료를 요청할 것인지 여부를 나타내는 정보에 기초하여, 상기 프로그램에 대한 상기 각 프로세스의 종료 요청 여부를 식별하는 전자장치.
  12. 전자장치의 제어방법에 있어서,
    스토리지에 저장된 적어도 하나의 프로그램의 실행에 따라서 복수의 프로세스의 데이터를 메모리에 로딩됨으로써 상기 복수의 프로세스를 실행하는 단계와,
    상기 전자장치가 제공 가능한 복수의 기능 중에서 현재 실행 중인 기능을 식별하는 단계와,
    상기 복수의 프로세스 및 상기 식별된 기능 사이의 관련성에 기초하여, 상기 실행 중인 복수의 프로세스 중에서 적어도 하나의 프로세스를 종료시켜, 상기 종료된 프로세스의 데이터가 로딩된 상기 메모리의 저장영역을 타 프로세스가 사용 가능하도록 하는 단계를 포함하는 전자장치의 제어방법.
  13. 제12항에 있어서,
    상기 종료된 프로세스와, 상기 메모리의 상기 저장영역 사이의 맵핑 상태를 해제함으로써, 상기 메모리의 상기 저장영역을 타 프로세스가 사용 가능하도록 하는 전자장치의 제어방법.
  14. 제12항에 있어서,
    상기 복수의 프로세스의 각 프로세스가 상기 복수의 기능 중 어떠한 기능에서 필요한지 여부를 나타내는 정보에 기초하여, 상기 복수의 프로세스와 상기 식별된 기능 사이의 관련성을 식별하는 전자장치의 제어방법.
  15. 제12항에 있어서,
    상기 종료시킨 프로세스가 상기 메모리에 다시 로딩되기 위한 재시작 옵션을 가지는 경우에, 상기 식별된 기능이 실행되는 동안 상기 종료시킨 프로세스가 재시작되는 것을 막는 전자장치의 제어방법.
  16. 제15항에 있어서,
    상기 복수의 기능 중 현재 실행되는 기능이 제2기능으로 전환되었다고 식별하는 것에 기초하여, 상기 재시작 옵션을 가지나 상기 재시작을 막아 놓은 프로세스의 재시작을 허용하는 전자장치의 제어방법.
  17. 제16항에 있어서,
    상기 각 기능별로 상기 프로세스의 재시작을 제어 가능한지 여부를 나타내는 정보에 기초하여, 제1기능의 실행에 대응하여 재시작을 막아 놓은 프로세스에 대해 상기 제1 기능이 종료되고 상기 제2기능이 실행되면 상기 프로세스의 재시작을 허용하는 전자장치의 제어방법.
  18. 제12항에 있어서,
    상기 종료시킨 프로세스의 데이터의 일부에 대응하는 부분 프로세스를 실행하도록 제어하는 전자장치의 제어방법.
  19. 제18항에 있어서,
    상기 부분 프로세스는, 관련 프로세스의 프리로딩을 위해 마련되며, 소정 이벤트 발생 시 상기 관련 프로세스가 실행되도록 제어하는 역할을 수행하게 마련된 전자장치의 제어방법.
  20. 제18항에 있어서,
    상기 각 기능 별로 상기 각 프로세스에 대한 부분 프로세스로의 대체 가능 여부를 나타내는 정보에 기초하여, 상기 부분 프로세스의 실행 여부를 식별하는 전자장치의 제어방법.
KR1020190102743A 2019-08-22 2019-08-22 전자장치 및 그 제어방법 KR20210023073A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190102743A KR20210023073A (ko) 2019-08-22 2019-08-22 전자장치 및 그 제어방법
PCT/KR2020/011122 WO2021034128A1 (en) 2019-08-22 2020-08-20 Electronic apparatus and control method thereof
US16/998,284 US11385932B2 (en) 2019-08-22 2020-08-20 Electronic apparatus for controlling availability of memory for processes loading data into the memory and control method thereof
EP20855752.0A EP3970017A4 (en) 2019-08-22 2020-08-20 ELECTRONIC DEVICE AND ITS CONTROL METHOD
US17/751,860 US11726821B2 (en) 2019-08-22 2022-05-24 Electronic apparatus and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190102743A KR20210023073A (ko) 2019-08-22 2019-08-22 전자장치 및 그 제어방법

Publications (1)

Publication Number Publication Date
KR20210023073A true KR20210023073A (ko) 2021-03-04

Family

ID=74645879

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190102743A KR20210023073A (ko) 2019-08-22 2019-08-22 전자장치 및 그 제어방법

Country Status (4)

Country Link
US (2) US11385932B2 (ko)
EP (1) EP3970017A4 (ko)
KR (1) KR20210023073A (ko)
WO (1) WO2021034128A1 (ko)

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003316585A (ja) * 2002-04-24 2003-11-07 Casio Comput Co Ltd 端末装置、プロセス監視方法、及びプログラム
US20040181782A1 (en) 2003-03-13 2004-09-16 Piotr Findeisen System and method for optimizing memory usage by locating lingering objects
KR100900439B1 (ko) 2006-12-05 2009-06-01 한국전자통신연구원 임베디드 시스템을 위한 메모리 부족상황 관리 방법 및장치
US20080140960A1 (en) 2006-12-06 2008-06-12 Jason Ferris Basler System and method for optimizing memory usage during data backup
US8595349B1 (en) * 2007-02-07 2013-11-26 Symantec Corporation Method and apparatus for passive process monitoring
CN103914322A (zh) * 2013-01-05 2014-07-09 腾讯科技(深圳)有限公司 终端加速方法及终端
CN103092700B (zh) 2013-02-01 2016-09-28 华为终端有限公司 内存清理方法、装置和终端设备
CN103106093A (zh) * 2013-02-21 2013-05-15 北京奇虎科技有限公司 一种系统运行加速方法和装置
CN104850414B (zh) * 2014-02-14 2018-09-11 可牛网络技术(北京)有限公司 应用进程的清理方法、装置及移动终端
US9871741B2 (en) 2014-03-10 2018-01-16 Microsoft Technology Licensing, Llc Resource management based on device-specific or user-specific resource usage profiles
JP6547342B2 (ja) * 2015-03-16 2019-07-24 日本電気株式会社 分散処理制御装置
US10101910B1 (en) 2015-09-15 2018-10-16 Amazon Technologies, Inc. Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager
US10747467B2 (en) 2016-06-10 2020-08-18 Apple Inc. Memory management for application loading
KR20190011670A (ko) * 2018-06-28 2019-02-07 주식회사 제이스퓨처 컴퓨팅 장치 최적화 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
WO2021034128A1 (en) 2021-02-25
US20220283865A1 (en) 2022-09-08
EP3970017A4 (en) 2022-06-15
EP3970017A1 (en) 2022-03-23
US20210055968A1 (en) 2021-02-25
US11385932B2 (en) 2022-07-12
US11726821B2 (en) 2023-08-15

Similar Documents

Publication Publication Date Title
US10503371B2 (en) Virtual tabs supporting web content suspension
US9984314B2 (en) Dynamic classifier selection based on class skew
US9424085B2 (en) Recognizing a process group that is related to an application
US20140372723A1 (en) Dynamically optimizing memory allocation across virtual machines
US10235733B2 (en) Device and method for performing scheduling for virtualized graphics processing units
US20160125777A1 (en) Image Sticking Prevention Using an Information Handling System Webcam
US20140149984A1 (en) Information processing apparatus, information processing method, and computer readable medium
US11650650B2 (en) Modifying an operating state of a processing unit based on waiting statuses of blocks
KR102650976B1 (ko) 전자장치 및 그 제어방법
US20210004272A1 (en) Electronic device and method for controlling same
WO2021043021A1 (zh) 内存的回写方法、装置、终端及存储介质
US11526363B2 (en) Electronic apparatus and control method thereof
KR20210023073A (ko) 전자장치 및 그 제어방법
WO2020001427A1 (zh) 一种分析任务执行方法、装置、系统及电子设备
US20230259457A1 (en) Electronic apparatus and control method thereof
CN109804351B (zh) 对异步计算作业的增强治理
KR20200098847A (ko) 전자장치 및 그 제어방법
CN112684965A (zh) 动态壁纸状态变更方法、装置、电子设备及存储介质
KR20230114004A (ko) 전자장치 및 그 제어방법
US10936047B2 (en) Power state management
KR20220169695A (ko) 전자장치 및 그 제어방법
US11494697B2 (en) Method of selecting a machine learning model for performance prediction based on versioning information
KR102667564B1 (ko) 칩 시스템 및 데이터 처리 방법
WO2019172622A1 (ko) 전자장치 및 그 제어방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal