KR20150064653A - 전자 장치 및 전자 장치에서의 메모리 할당 방법 - Google Patents

전자 장치 및 전자 장치에서의 메모리 할당 방법 Download PDF

Info

Publication number
KR20150064653A
KR20150064653A KR1020140091728A KR20140091728A KR20150064653A KR 20150064653 A KR20150064653 A KR 20150064653A KR 1020140091728 A KR1020140091728 A KR 1020140091728A KR 20140091728 A KR20140091728 A KR 20140091728A KR 20150064653 A KR20150064653 A KR 20150064653A
Authority
KR
South Korea
Prior art keywords
memory
application
memory allocation
history
allocation
Prior art date
Application number
KR1020140091728A
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 US14/559,469 priority Critical patent/US9740481B2/en
Publication of KR20150064653A publication Critical patent/KR20150064653A/ko

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • 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/1028Power efficiency
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)

Abstract

본 발명의 다양한 실시 예에 따른 전자 장치 및 전자 장치에서의 메모리 할당 방법은, 애플리케이션에 대한 메모리 할당 요청을 식별하고, 상기 식별된 요청을 통해 상기 애플리케이션에 대한 이력을 확인하고, 상기 확인한 결과에 기초하여, 상기 애플리케이션에 대한 메모리 할당 모드를 결정할 수 있으며, 그 외에도 다양한 실시 예가 가능할 수 있다.

Description

전자 장치 및 전자 장치에서의 메모리 할당 방법{ELECTRONIC DEVICE AND METHOD FOR MEMORY ALLOCATION IN ELECTRONIC DEVICE}
본 발명의 다양한 실시 예는 전자 장치 및 전자 장치에서의 메모리 할당 방법에 관한 것이다.
모바일 전자 장치들은 휴대성을 높이기 위하여 일반적으로 데스크탑 컴퓨터들과 동일한 처리 전력 및 메모리 리소스들을 구비하지 않으며, 작동되는 배터리 전력에 의존할 수 있다. 예컨대, 메모리 할당이 양호하지 않은 경우, 애플리케이션들의 구동 시간에 따라, 전자 장치의 작동에 있어서 부정적인 영향을 미칠 수 있다. 또한 애플리케이션의 구동 시간에 따라 배터리 수명이 단축되거나 과도한 소비 전력이 야기될 수도 있다.
메모리 할당 방법에 있어서, 데이터의 효율적인 처리량 및 사용 가능한 메모리 리소스(resource)의 높은 활용을 지원하는 방식으로 메모리를 할당하는 것이 요구된다. 메모리 할당을 실행할 때, 애플리케이션 프로그램은 초기 할당이 이루어지는 시점에 알려져 있지 않은 사용자나 다른 입력들에 따라, 처음 시작시에 이루어진 것들보다 더 크거나 더 작은 메모리 할당들을 필요로 할 수 있다.
복수의 애플리케이션 프로그램들이 메모리 공간을 공유하는 경우 또는 애플리케이션 프로그램에 의해 요청되는 실제 메모리 할당들이 UI 툴킷(toolkit)들 또는 다른 애플리케이션 프로그램 인터페이스 함수들이나 루틴(routine)들과 같은 미들웨어에 의해, 효율적인 메모리 할당이 어려울 수 있다. 또한 메모리가 재-할당되거나, 또는 일정 할당모드로 모든 메모리를 할당하는 것은, 해당 애플리케이션 실행시 오버헤드(overhead)를 발생시킬 수 있다.
또한, 메모리가 초과 할당된 경우는 사용되지 않을 수 있는 메모리가 더 할당된 것으로, 메모리가 낭비될 수 있다. 메모리의 초기 할당 시에는 메모리 할당에 필요한 실행시간을 가질 수 있다. 이때, 할당되는 메모리가 클수록 전력 소모도 크게 발생할 수 있다.
예컨대, 컴퓨터 시스템에서 메모리 리소스들이 공유되는 경우, 상기 컴퓨터 시스템에서 실행되는 다수의 애플리케이션 프로그램들에 의해 메모리 할당이 초과될 수 있다. 상기 초과된 메모리 할당에 따라 사용 가능한 메모리는 적어질 수 있다. 또한, 초과 할당으로 인하여, 해당 메모리에 오버헤드가 발생할 수 있다.
예컨대, 본 발명의 다양한 실시 예에 따른 전자 장치 및 전자 장치에서의 메모리 할당 방법은 애플리케이션의 이력이 확인되는지 여부에 따라 메모리 할당 모드를 결정할 수 있다.
결정한 메모리 할당 모드에 따라, 애플리케이션의 이력 혹은 이전의 인스턴스들을 사용하여 메모리 할당 동작을 수행할 수 있다.
본 발명의 실시 예에 따른 전자 장치는, 프로세서의 애플리케이션에 대한 메모리 할당 요청을 식별하고, 상기 식별된 요청을 통해 상기 애플리케이션에 대한 이력을 확인하고, 상기 확인한 결과에 기초하여, 상기 애플리케이션에 대한 메모리 할당 모드를 결정하는 메모리 할당부, 및 상기 결정된 메모리 할당 모드에 따라 메모리 할당 동작을 수행하도록 제어하는 프로세서를 포함할 수 있다.
또한, 본 발명의 실시 예에 따른 전자 장치에서의 메모리 할당 방법은, 애플리케이션에 대한 메모리 할당 요청을 식별하는 동작과, 상기 식별된 요청을 통해 상기 애플리케이션에 대한 이력을 확인하는 동작과, 상기 확인한 결과에 기초하여, 상기 애플리케이션에 대한 메모리 할당 모드를 결정하는 동작, 및 상기 결정된 메모리 할당 모드에 따라 메모리 할당을 수행하는 동작을 포함할 수 있다.
본 발명의 다양한 실시 예에 따라, 메모리가 메모리의 이력과 관계 없이 일정한 모드로 할당되는 것을 방지할 수 있다.
이에 따라 메모리가 과다 혹은 최소로 할당됨에 따른 메모리의 소모를 방지하고, 불필요하게 수행되는 메모리 할당 동작을 줄여 전자 장치의 오버헤드를 감소시킬 수 있다.
도 1은 본 발명의 다양한 실시 예가 적용될 수 있는 개략적인 전자 장치 구성의 일 예시를 도시한 블록도이다.
도 2는 본 발명의 다양한 실시 예가 적용될 수 있는 메모리 할당부 구성의 일 예시를 도시한 블록도이다.
도 3은 본 발명의 다양한 실시 예가 적용될 수 있는 메모리에서, 메모리 할당 방법의 일 예시를 도시한 흐름도이다.
도 4는 본 발명의 다양한 실시 예가 적용될 수 있는 메모리에서, 메모리 할당 방법의 다른 예시를 도시한 흐름도이다.
도 5는 본 발명의 실시 예에 따른 메모리 할당 방법의 일 예시를 도시한 흐름도이다.
도 6은 본 발명의 실시 예에 따른 메모리 할당 방법의 다른 예시를 도시한 흐름도이다.
도 7 내지 도 10은 본 발명의 다양한 실시 예가 적용될 수 있는 전자 장치 구성의 다양한 예시를 도시한 블록도이다.
도 11은 본 발명의 다양한 실시 예가 적용될 수 있는 기록 매체의 일 예시를 도시한 도면이다.
이하, 본 발명의 다양한 실시예가 첨부된 도면과 연관되어 기재된다. 본 발명의 다양한 실시예는 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들이 도면에 예시되고 관련된 상세한 설명이 기재되어 있다. 그러나, 이는 본 발명의 다양한 실시예를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 다양한 실시예의 사상 및 기술 범위에 포함되는 모든 변경 및/또는 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용되었다.
본 발명의 다양한 실시예에서 사용될 수 있는“포함한다” 또는 “포함할 수 있다” 등의 표현은 개시(disclosure)된 해당 기능, 동작 또는 구성요소 등의 존재를 가리키며, 추가적인 하나 이상의 기능, 동작 또는 구성요소 등을 제한하지 않는다. 또한 본 발명의 다양한 실시예에서, “포함하다” 또는 “가지다” 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 발명의 다양한 실시예에서 “또는” 등의 표현은 함께 나열된 단어들의 어떠한, 그리고 모든 조합을 포함한다. 예를 들어, “A 또는 B”는, A를 포함할 수도, B를 포함할 수도, 또는 A 와 B 모두를 포함할 수도 있다.
본 발명의 다양한 실시예에서 사용된 “제 1”, “제2”, “첫째” 또는 “둘째” 등의 표현들은 다양한 실시예들의 다양한 구성요소들을 수식할 수 있지만, 해당 구성요소들을 한정하지 않는다. 예를 들어, 상기 표현들은 해당 구성요소들의 순서 및/또는 중요도 등을 한정하지 않는다. 상기 표현들은 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다. 예를 들어, 제1 사용자 기기와 제2 사용자 기기는 모두 사용자 기기이며, 서로 다른 사용자 기기를 나타낸다. 예를 들어, 본 발명의 다양한 실시예의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 “연결되어” 있다거나 “접속되어” 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 “직접 연결되어” 있다거나 “직접 접속되어” 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재하지 않는 것으로 이해될 수 있어야 할 것이다.
본 발명의 다양한 실시 예에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명의 다양한 실시 예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명의 다양한 실시 예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 발명의 다양한 실시예에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명의 다양한 실시예에 따른 전자 장치는, 메모리를 포함한 장치일 수 있다. 예를 들면, 전자 장치는 스마트 폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 화상전화기, 전자북 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device)(예: 전자 안경과 같은 head-mounted-device(HMD), 전자 의복, 전자 팔찌, 전자 목걸이, 전자 앱세서리(appcessory), 전자 문신, 또는 스마트 와치(smart watch) 중 적어도 하나를 포함할 수 있다.
어떤 실시예들에 따르면, 전자 장치는 메모리를 포함한 스마트 가전 제품(smart home appliance)일 수 있다. 스마트 가전 제품은, 예를 들자면, 전자 장치는 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), TV 박스(예를 들면, 삼성 HomeSyncTM, 애플 TVTM, 또는 구글 TVTM), 게임 콘솔(game consoles), 전자 사전, 전자 키, 캠코더(camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
어떤 실시예들에 따르면, 전자 장치는 각종 의료기기(예: MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 초음파기 등), 네비게이션(navigation) 장치, GPS 수신기(global positioning system receiver), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치 및 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛, 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller’s machine) 또는 상점의 POS(point of sales) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예들에 따르면, 전자 장치는 메모리를 포함한 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 입력장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 본 발명의 다양한 실시예에 따른 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 또한, 본 발명의 다양한 실시예에 따른 전자 장치는 플렉서블 장치일 수 있다. 또한, 본 발명의 다양한 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않음은 당업자에게 자명하다.
본 발명의 다양한 실시 예에 따라, 컴퓨터 시스템에 의해 구현되는 경우, 컴퓨터 시스템으로 하여금 본 명세서에 기술된 바와 같이 구성되도록 하고/하거나 컴퓨터 시스템이 본 명세서에 기술된 바와 같은 방법들 중의 어느 것을 수행하게 하는 명령들을 기록한 컴퓨터 판독가능 저장매체가 제공된다. 상기 컴퓨터 판독가능 저장매체는 예를 들어 유형의 및/또는 비-일시적 매체를 포함할 수 있다.
용어들 "애플리케이션" 및 "애플리케이션 프로그램"은 사용자의 필요에 따라 직접 기능하는 프로그램들만을 의미하는 것이 아니며, 애플리케이션들의 실행에서 사용불가능한 컴포넌트들, 예를 들어 미들웨어, 본 명세서에 기술된 바와 같이 이루어지는 메모리 할당을 필요로 하는 방식으로 채용된 UI 툴 키트 코드를 의미하는 것으로 해석되어야 한다. 그러나, 개발자에게 명백한 관점에서 본 명세서의 개념들이 애플리케이션 레벨에 적용될 시에 특히 유용할 수 있으며, 이에 따라 사용자가 애플리케이션과 상호작용할 시에 명백한 정도로 애플리케이션을 달성할 수 있음이 인식될 것이다. 본 명세서에 기술된 실시 예들 중의 적어도 몇몇은, 부분적으로 또는 전체적으로 특정 목적의 전용 하드웨어를 사용하여 구성될 수 있다. 본 명세서에서 사용되는 컴포넌트, 모듈 또는 유닛과 같은 용어들은 소정 임무를 수행하거나 관련 기능을 제공하는 개별형 또는 일체형 컴포넌트들의 형태의 회로와 같은 하드웨어 디바이스, FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)를 포함할 수 있으며, 이에 한정되지 않는다.
본 발명의 다양한 실시 예에서, 상기 기술된 요소들은 유형의, 영구적, 처리가능한 저장 매체에 상주하도록 구성될 수 있으며, 하나 이상의 프로세서들을 실행하도록 구성될 수도 있다. 이들 기능 요소들은 몇몇 실시예들에서, 예를 들어 컴포넌트들, 예컨대 소프트웨어 컴포넌트, 객체 지향 소프트웨어 컴포넌트, 클래스 컴포넌트 및 프로그램 코드, 드라이버, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조, 테이블, 어레이, 및 그 변형물들의 임무 컴포넌트, 프로세스, 기능, 속성, 절차, 서브루틴, 세그먼트를 포함할 수 있다. 본 명세서에서 논의된 컴포넌트, 모듈 및 유닛들을 참조하여 예시적 실시예들을 기술하였지만, 이러한 기능 요소들은 더 적은 개수의 요소들로 조합될 수도 있고, 추가 요소들로 분리될 수도 있다. 선택적 특징들에 대한 각종 조합들을 여기서 기술하였으며, 기술된 특징들이 임의의 적합한 조합으로 결합될 수 있음이 인식될 것이다. 특히, 임의의 예시적 실시예의 특징들은 그 조합들이 상호 배타적인 경우를 제외하고, 임의의 다른 실시예의 특징들과 조합될 수 있다. 본 상세한 설명의 전반에 걸친 용어 포함하는 또는 포함하다는 명시된 컴포넌트(들)을 포함하는 것을 의미하며 다른 것들의 존재를 배제하지 않는다.
이하, 첨부된 도면을 참조하여 다양한 실시예에 따른 전자 장치에 대해서 살펴본다. 다양한 실시예에서 이용되는 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
본 발명의 실시 예들은 애플리케이션 프로그램이 메모리의 할당을 위해 실행되는 경우에 동작할 수 있다. 예컨대, 애플리케이션 프로그램의 실메모리 리소스들이 메모리의 할당을 요청하는 다른 애플리케이션 프로그램들과 공유되는 컴퓨터 시스템에서, 소비 전력을 최소화하는 등의 다른 이유들로 메모리 사용이 배급되거나 또는 과도한 메모리 할당 및 재-할당이 시스템 성능에 미치는 영향 때문에 방지되는 컴퓨터 시스템들에서 애플리케이션 프로그램이 실행될 수 있다. 본 발명의 실시 예들은 애플리케이션 프로그램의 실행이 사용을 발견하며, 이에 한정되지 않는다.
도 1은 본 발명의 다양한 실시 예가 적용될 수 있는 개략적인 전자 장치 구성의 일 예시를 도시한 블록도이다. 도 1을 참조하면, 전자 장치(100)는 프로세서(110), 입/출력 하드웨어(Input/Output Unit, 이하, ‘I/O’)(120) 및 메모리(130)를 포함할 수 있다. 예컨대, 본 발명의 실시 예에 따른 메모리 할당 방법은 임의의 전자 장치에서 구현될 수 있으며, 도 1을 참조하여 설명하는 전자 장치(100)는 단지 예시적인 것이고, 완전성을 목적으로 이해를 돕기 위해 제공된다는 것을 당업자는 깨닫고 이해할 것이다.
프로세서(110)는 전반적인 전자 장치(100)의 동작을 제어할 수 있다.
I/O(120)는 사용자 인터페이스(101)와 전자 장치(100)간의 인터페이스를 제공할 수 있다.
메모리(130)는 데이터(133)와 애플리케이션 프로그램(131)을 저장할 수 있다. 본 발명의 다양한 실시 예에 따라, 메모리(130)는 메모리 할당부(132)를 포함할 수 있다.
전자 장치(100)는 본 발명의 다양한 실시 예에 따라, 응용 프로그래밍 인터페이스 기능들 또는 운영 체제에 대한 액세스를 용이하게 하는 루틴들, 또는 메모리 할당과 관련된 정보를 출력하는 하드웨어 구조의 특징(hardware architecture feature)들을 포함할 수 있다.
이하, 구체적인 본 발명의 실시 예에 따른 메모리 할당부에 대해서 도 2를 참조하여 후술하기로 한다.
도 2는 본 발명의 다양한 실시 예가 적용될 수 있는 메모리 할당부 구성의 일 예시를 도시한 블록도이다. 도 2를 참조하면, 메모리 할당부(131)는 식별부(210), 분석부(220), 할당 결정부(230)를 포함하며, 이력 저장부(240)를 더 포함할 수 있다.
도 2를 참조하면, 프로세서(110)는 메모리 할당부(132) 외부에서 구성되는 것으로 도시하였지만, 메모리 할당부(132) 내부에 포함되어 상기 메모리 할당부(132)의 각 구성이 동작하도록 제어할 수도 있다.
식별부(210)는 로거(logger)(211)를 포함할 수 있다. 식별부(210)는 특정 애플리케이션에 대한 메모리 할당 요청을 식별할 수 있다. 식별부(210)는 상기 메모리 할당 요청에 포함된 호출 스택 정보, 상대 코드 위치, 또는 전자 장치(100)에 이용 가능한 다른 수단들을 사용하여, 상기 메모리 할당이 요청된 컨테이너(container)의 위치를 식별할 수 있다. 예컨대, 상기 로거(211)는 전자 장치(100)에서 실행되고 있는 애플리케이션의 인스턴스들 사이에 존속할 수 있으며, 이에 따라 애플리케이션에 대한 메모리 할당 요청들을 이력 저장부(240)에 저장하도록 제어할 수 있다. 상기 저장된 메모리 할당 요청들은 특정 컨테이너에 대해 행해진 초기 할당들 혹은 이전에 할당된 컨테이들에 대한 재-할당들에 대한 데이터를 포함할 수 있다.
분석부(220)는 모드 선택부(221)를 포함할 수 있다. 분석부(220)는 식별부(210)를 통해 메모리 할당에 대한 요청을 식별하고, 이력 저장부(240)로 해당 애플리케이션의 이력을 요청할 수 있다. 분석부(220)는 상기 애플리케이션의 이력을 확인하여, 상기 식별된 요청을 분석할 수 있다. 여기서 상기 이력은 메모리 할당을 요청한 애플리케이션의 이전 인스턴스들 혹은 이전에 메모리가 할당된 컨테이너에 대한 정보일 수 있다.
분석부(220)는 이력을 확인한 결과, 상기 메모리 할당을 요청한 애플리케이션의 이전 인스턴스가 확인되지 않는 경우, 전자 장치(100)에서 상기 애플리케이션이 이전에 실행되지 않은 것으로 판단할 수 있다. 이 경우, 분석부(220)는 상기 메모리 할당에 대한 요청에 대한 응답으로 사용할 수 있는 정보(예를 들어, 이전 인스턴스)가 없는 것으로 판단할 수 있다. 이때, 모드 선택부(221)는 상기 애플리케이션에 대한 메모리 할당 모드를 비-학습 모드로 선택할 수 있다.
반면, 분석부(220)에서 이력 저장부(240)로 요청한 결과, 상기 메모리 할당을 요청한 애플리케이션의 이전 인스턴스가 확인되는 경우, 전자 장치(100)에서 상기 애플리케이션이 이전에 실행되었던 것으로 확인할 수 있다. 이 경우, 분석부(220)는 상기 메모리 할당에 대한 요청에 대한 응답으로 사용할 수 있는 정보를 확인할 수 있다. 이때, 모드 선택부(221)는 상기 애플리케이션에 대한 메모리 할당 모드를 학습 모드로 선택할 수 있다.
예컨대, 모드 선택부(221)를 포함한 분석부(220)는 본 발명의 다양한 실시 예에 따라, 특정 애플리케이션에 대한 메모리 할당 모드를 학습 모드 또는 비-학습 모드 중 하나로 선택할 수 있다.
할당 결정부(230)는 선택된 메모리 할당 모드에 따라, 상기 메모리 할당 요청에 대한 응답으로 할당 동작을 수행할 수 있다. 메모리 할당 모드가 학습 모드로 선택된 경우, 상기 할당 결정부(230)는 상기 애플리케이션의 이력에 따라 상기 애플리케이션에 대한 메모리 할당 동작을 수행할 수 있다.
예컨대, 상기 학습 모드에서 사용 가능한 애플리케이션의 이력은, 국부적(locally)으로 저장될 수 있으며, 전자 장치(100)의 사용자에 의해 만들어진 메모리 할당들에 관한 데이터를 포함할 수 있다. 본 발명의 다양한 실시 예에 따른 데이터 저장부(240)는 플래시 메모리, 디스크, SD 카드 또는 메모리 할당부(131)에 이용 가능한 다른 영구 메모리 리소스 내에서 포함된 것일 수 있다 또한, 이력 저장부(240)은 복수의 사용자들이 사용할 수 있는 명령 파일(command file)을 포함할 수 있다.
도 2를 참조하면, 이력 저장부(240)가 메모리 할당부(132)에 포함되어 구성되는 것으로 도시하였지만, 본 발명의 다양한 실시 예에 따른 학습 모드에서 상기 이력 저장부(240)는 원격에 위치하여 저장되도록 구현될 수 있다. 예컨대, 원격에서 저장하는 이력 저장부(240)는 데이터 연결, 예를 들어 유선 또는 무선 통신 시스템을 통해 액세스될 수 있다. 또한, 이력 저장부(240)는 사용자들 사이에 공유되는 특정 애플리케이션의 일반적인 이력 평균 또는 집계 사진(aggregate picture)의 형태일 수 있다. 상기 이력 저장부(240)에 포함된 데이터를 통해, 전자 장치(100)는 다른 사람들 혹은 상기 전자 장치(100)와 동등하거나 유사한 전자 장치에 의해 실행되는 애플리케이션의 이력에 관한 데이터를 확인할 수 있다.
또한, 이력 저장부(140)는 컨테이너 식별 데이터베이스를 저장할 수 있다. 컨테이너 식별 데이터베이스는 할당된 컨테이너들의 로그 및 식별된 메모리 할당 요청들에 컨테이너들을 링크시키는 링크 정보, 및 할당된 컨테이너들의 크기에 대한 정보를 포함할 수 있다. 또한, 컨테이너 정보 데이터베이스는, 고정된 크기를 가지는 정적 컨테이너들에 대하여, 해당 정적 컨테이너가 예약된 메모리 풀(pool)로부터 할당되었는지의 여부에 대한 정보, 초기 할당 이후에 콘테이너의 크기가 변경되었는지에 대한 정보 및 상기 크기가 변경된 컨테이너가 재-할당된 이력에 관한 정보를 더 포함할 수 있다.
분석부(220)는 특정 컨테이너에 대한 분류를 요청받는 경우, 해당 컨테이너의 속성을 확인하여, 이를 정적 컨테이너 혹은 비-정적 컨테이너로 분류할 수 있다. 여기서 상기 컨테이너의 속성은 컨테이너의 크기 혹은 재-할당된 횟수가 될 수 있다. 예컨대, 특정 컨테이너의 크기가 미리 설정된 값보다 작거나, 초기 할당 이후에 재-할당되지 않은 경우, 상기 컨테이너를 정적 컨테이너로 분류할 수 있다. 한편, 특정 컨테이너의 크기가 미리 설정된 값보다 크거나, 재-할당이 미리 설정된 횟수보다 빈번하게 발생하는 경우, 상기 컨테이너를 비-정적 컨테이너로 분류할 수 있다.
분석부(220)는 정적 컨테이너로 분류된 컨테이너에 대한 속성을 할당 결정부(230)로 전달할 수 있다. 예컨대, 상기 메모리(130)가 지정된 풀 또는 복수의 풀들을 포함하는 연속 메모리인 경우, 상기 할당 결정부(230)는 상기 정적 컨테이너로 분류된 컨테이너를 상기 연속 메모리 중 고정된 크기의 일부분으로 할당할 것을 결정할 수 있다.
분석부(220)는 비-정적 컨테이너들에 대한 데이터를 식별하고 상기 식별한 데이터를 이력 저장부(240)에 저장할 수 있다. 이전에 저장된 이력은, 이후 메모리 할당을 요청하는 애플리케이션의 인스턴스가 될 수 있다. 이에 따라, 분석부(220)는 어느 컨테이너들이 주로 재-할당되고 있는지를 검출할 수 있다.
예컨대, 본 발명의 다양한 실시 예에 따른 메모리 할당 방법은 애플리케이션의 이전 인스턴스 또는 재-할당 횟수를 고려하여 메모리를 할당함에 따라, 특정 애플리케이션에 대한 불필요한 재-할당을 감소시킬 수 있다.
도 3은 본 발명의 다양한 실시 예가 적용될 수 있는 메모리에서, 메모리 할당 방법의 일 예시를 도시한 흐름도이다. 도 3을 참조하면, 메모리(130)는 학습 모드로 특정 애플리케이션의 메모리 할당 동작이 수행되는 경우를 가정한다.
상기 메모리(130)는 컴퓨터 시스템에 의하여 읽혀질 수 있도록 프로그램 및 데이터가 저장되는 모든 종류의 기록매체를 포함한다. 그 예로는, 롬(Read Only Memory), 램(Random Access Memory), CD(Compact Disk), DVD(Digital Video Disk)-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치, 임베디드 멀티미디어 카드(eMMC) 등이 있으며, 또한 케리어 웨이브(예를 들면, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함된다. 또한, 이러한 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
310 동작에서, 할당 결정부(230)는 식별부(210)를 통해 식별한 애플리케이션 프로그램에 대한 메모리 할당 요청들을 확인할 수 있다. 예컨대, 상기 할당 결정부(230)는 특정 애플리케이션에 대한 할당 요청을 수신하면, 상기 애플리케이션의 이력을 이력 저장부(220)를 통해 확인할 수 있다.
320 동작에서, 상기 분석부(220)는 소스의 위치를 결정하는 동작을 수행할 수 있다. 여기서 소스의 위치는 상기 애플리케이션이 할당되는 컨테이너의 위치일 수 있다.
330 동작에서, 상기 분석부(220)는 상기 애플리케이션의 이력을 분석한 결과, 상기 애플리케이션의 이전 인스턴스들이 확인되는지 여부에 따라 컨테이너의 타입을 결정할 수 있다. 분석부(220)는 이력을 분석한 결과, 애플리케이션 프로그램, 컨테이너들 또는 애플리케이션 프로그램에 링크된 메모리 사용의 기록이 존재하지 않는 경우, 상기 메모리(130)의 할당 방법을 학습 모드로 결정할 수 있다. 상기 학습 모드로 결정됨에 따라, 특정 애플리케이션 프로그램에 의한 요청, 할당 결정부(230)에서 결정한 할당 방법 등이 추적될 수 있으며, 애플리케이션 프로그램의 코드 및 할당의 크기 또는 임의의 후속 링크된 재-할당의 상대 위치의 세부 사항들은 상기 이력의 일부로서 저장될 수 있다.
예컨대, 상기 분석부(220)는 해당 메모리에서 할당된 컨테이너가 정적 타입의 컨테이너 혹은 비-정적 타입의 컨테이너인지를 확인할 수 있다. 또한 분석부(220)는 이력 저장부(240)에 저장된 컨테이너당 전형적인 최대 크기(242)를 통해, 이전에 할당된 메모리의 컨테이너가 어떤 예약된 메모리의 풀로부터 할당되었는지 여부, 혹은 어떤 정적 컨테이너의 할당을 야기하였는지 여부를 확인할 수 있다. 또한, 상기 분석부(220)는 상기 분석한 컨테이너가 고정된 크기를 갖는 정적 컨테이너인지 여부를 확인할 수 있다.
상기 분석부(220)가 할당이 결정된 메모리의 컨테이너 타입을 확인한 결과, 이전과 다른 타입의 컨테이너로 분류된 경우, 340 동작에서, 상기 분석부(220)는 해당 메모리의 컨테이너의 타입이 사용 변경되었음을 이력 저장부(240)로 전달할 수 있다. 그리고 이력 저장부(240)는 사용 변경된 컨테이너에 대한 정보를 컨테이너 식별(241)에 저장할 수 있다.
상기 분석부(220)가 할당이 결정된 메모리의 컨테이너의 크기를 확인할 결과, 이전과 컨테이너 크기와 다른 경우, 350 동작에서 상기 분석부(220)는 해당 메모리의 특정 컨테이너의 크기를 이력 저장부(240)로 전달할 수 있다. 그리고 이력 저장부(240)는 특정 컨테이너의 크기에 대한 정보를 컨테이너당 전형적인 최대 크기(242)로 저장할 수 있다.
360 동작에서, 상기 할당 결정부(230)는 메모리 할당이 요청된 애플리케이션에 대한 메모리 할당 동작을 수행하도록 상기 메모리(130)를 제어할 수 있다. 예컨대, 상기 할당 결정부(230)는 해당 애플리케이션의 이력이 존재하는지를 확인하고, 이력이 존재하는 경우 해당 애플리케이션이 이전의 인스턴스들 및 해당 애플리케이션이 이전에 할당될 때 해당 메모리의 컨테이너 정보 중 적어도 하나를 고려하여 상기 메모리 할당 동작을 수행할 수 있다.
상기 분석부(220)는 애플리케이션의 현재 또는 이전의 인스턴스로부터, 이전에 할당된 메모리에서 재-할당에 대한 요청들이 확인되는지를 이력 저장부(240)를 통해 더 확인할 수 있다. 분석부(220)는 이력 저장부(240)에 저장된 컨테이너 식별 정보(241)를 통해, 그 이전에 할당된 메모리의 컨테이너 타입을 식별할 수 있다.
애플리케이션 프로그램이 실행됨에 따라 분석부(220)는 더 많은 재-할당을 필요로 하는 컨테이너들의 타입을 비-정적인 것으로 결정할 수 있다. 한편, 재-할당을 필요로 하는 컨테이너들이 동적으로 증가하지 않거나, 재-할당 임계값 미만 크기 또는 재-할당 빈도를 계속 유지하는 경우, 해당 컨테이너의 타입을 정적인 것으로 확인할 수 있다.
다양한 실시 예에 따라, 단편화(fragmentation)를 감소시키고 재-할당을 방지하기 위하여, 분석부(220)는 중간 크기를 가지거나, 해당 컨테이너의 이력을 추적하는 오버헤드로 인해 그 크기가 변경되는 컨테이너들은 무시하도록 구성될 수 있다. 더욱이, 분석부(220)는 어느 컨테이너들이 정적 혹은 비-정적인지를 확인하고, 일단 트레이닝(training)이 더욱 완전하게 되어 비-학습 임계값에 도달하는 경우 어느 컨테이너가 무시되어야 하는지를 결정할 수 있다. 이에 따라, 상기 이력은 컨테이너 식별 데이터베이스일 수 있으며, 여기서 컨테이너 식별 데이터베이스의 구조, 크기 및 동작은 비-학습 모드에서 질의들을 요청하고 응답됨에 있어서 병목 현상(bottleneck)을 방지하도록 선택될 수 있다.
예컨대, 재-할당에 대한 요청이 식별되는 경우, 분석부(220)는 컨테이터 타입과 그 크기 및 사용의 전개 정보에 대한 이력을 확인할 수 있다. 상기 분석부(220)가 특정 컨테이너에 대해, 이전에는 정적 컨테이너로서 할당하었지만, 최근의 동작에 기초하여 비-정적인 것으로 처리할 것으로 결정한 경우를 가정한다. 이때, 해당 컨테이너는 상태의 변화를 반영하도록 업데이트된 메모리(130)로 재-할당될 수 있으며, 그 이력이 저장될 수 있다. 한편, 상기한, 정적에서 비-정적으로, 즉 동적으로 전환된 컨테이너에 대하여, 분석부(220)는 그것을 더 이상 공유 풀로부터 할당하지 않으며, 그 자체로 존재할 것을 결정할 수 있다.
상기 분석기(220)가 특정 컨테이너에 대해 충분히 큰 것으로 확인한 경우, 해당 컨테이너를 비-정적인 것으로 취급하고 이력에 플래깅(flagging)할 수 있다. 이에 따라 이후에 애플리케이션 프로그램이 실행되는 경우, 학습 모드인지 비-학습 모드인지 여부와 관계없이, 해당 컨테이너는 특정 할당 방법에서 최대의 크기로 할당될 수 있다. 분석기(220)는 초기에 정적인 특성을 나타내는 비-정적 엔드들로 분류된 컨테이너를 식별함으로써, 다시 애플리케이션 프로그램이 실행될 때에는, 정적 풀로부터 해당 컨테이너에 먼저 할당되도록 할 수 있다.
학습 모드와 비-학습 모드 사이를 전환할 시점을 결정하는 프로세스는, 전술한 소정 기준에 따라 수행된다. 학습 임계값에 도달하기 이전에 애플리케이션 프로그램이 종료되는 경우, 할당 이력에 대한 모든 현재 정보가 저장되고 학습 모드가 채택됨으로써, 다음에 애플리케이션 프로그램이 실행될 때에는 학습이 계속되도록 한다. 대형 애플리케이션 프로그램에 있어서는, 수개의 인스턴스들이 비-학습 모드로 전환하기 이전에 정보를 수집하는데 사용될 것임이 예상된다.
도 4는 본 발명의 다양한 실시 예가 적용될 수 있는 메모리에서, 메모리 할당 방법의 다른 예시를 도시한 흐름도이다. 도 4를 참조하면, 메모리(130)는 RAM(Ramdom Access Memory)일 수 있다.
410 동작에서, 할당 결정부(230)는 식별부(210)를 통해 식별한 애플리케이션 프로그램에 대한 메모리 할당 요청들을 확인할 수 있다. 예컨대, 상기 할당 결정부(230)는 특정 애플리케이션에 대한 할당 요청을 수신하면, 상기 애플리케이션의 이력을 이력 저장부(240)를 통해 확인할 수 있다.
420 동작에서, 상기 분석부(220)는 소스 위치를 결정하는 동작을 수행할 수 있다. 여기서 소스의 위치는 상기 애플리케이션이 할당되는 컨테이너의 위치일 수 있다.
430 동작에서, 상기 분석부(220)는 상기 메모리(130)에서 상기 애플리케이션이 할당될 컨테이너의 타입을 결정할 수 있다. 예컨대, 상기한 컨테이너의 타입을 결정하는 동작은 앞서 도 3의 330 동작의 설명과 유사하므로 여기서 자세한 설명은 생략한다.
상기 분석부(220)가 할당이 결정된 메모리의 컨테이너 타입을 확인한 결과, 이전과 다른 타입의 컨테이너로 분류된 경우, 440 동작에서, 상기 분석부(220)는 해당 메모리의 컨네이너의 타입이 사용 변경되었음을 이력 저장부(240)로 전달할 수 있다. 그리고 이력 저장부(240)는 사용 변경된 컨테이너에 대한 정보를 컨네이너 식별 정보(241)로 저장할 수 있다.
할당이 결정된 메모리의 컨테이너의 크기를 확인한 결과, 이전과 컨테이너 크기와 다른 경우, 450 동작에서 상기 분석부(220)는 해당 메모리의 특정 컨테이너의 크기를 이력 저장부(240)로 전달할 수 있다. 그리고 이력 저장부(240)는 특정 컨테이너의 크기에 대한 정보를 컨테이너당 전형적인 최대 크기 정보(242)로 저장할 수 있다.
할당 결정부(230)는 해당 애플리케이션의 이전 인스턴스들이 확인되는 경우, 상기 이전 인스턴스들을 확인하여, 이전에 상기 애플리케이션이 할당된 메모리에서 재-할당이 수행된 이력을 확인할 수 있다. 이전에 상기 애플리케이션에 대한 메모리가 할당된 경우, 상기 이력 저장부(240)는 상기 애플리케이션에 대해 할당된 메모리에 대한 정보로서, 투입된 메모리의 맵(243)을 더 저장할 수 있다. 예컨대, 상기 투입된 메모리의 맵(243)은 이전에 애플리케이션이 재-할당된 메모리에서 할당된 동적 컨테이너들에 대한 정보(243a) 혹은 정적 컨테이너들에 대한 정보(243b)를 포함할 수 있다.
할당 결정부(230)가 상기 동적 컨테이너들에 대한 정보(243a)를 확인함에 따라, 460 동작에서, 할당 결정부(230)는 상기 메모리 할당 요청된 애플리케이션이 이전에, 예약된 메모리의 풀에서 동적 컨테이너로 할당되었음을 확인할 수 있다. 또한, 상기 할당 결정부(230)는 상기 동적 컨테이너들에 대한 정보(243a)를 확인함에 따라, 이전에 할당된 동적 컨테이너가 고정된 크기를 갖는지 여부도 확인할 수 있다.
470 동작에서, 할당 결정부(230)는 460 동작에서 확인한 컨테이너의 타입, 혹은 해당 컨테이너의 고정된 크기로 상기 메모리 할당이 요청된 애플리케이션을 상기 메모리(130)에 할당할 수 있다.
예컨대, 상기 할당 결정부(230)는 할당 요청이 식별되는 경우, 이력 저장부(240)를 확인하여, 할당이 요청된 컨테이너가 비-정적 컨테이너들 중 하나인지를 확인할 수 있다. 여기서 비-정적 컨테이너를 확인하는 것은, 해당 할당 요청의 코드에서의 상대적 위치에 기초하여 식별되는 것일 수 있다. 할당 요청의 대상인 컨테이너가 식별되는 경우, 할당 결정부(230)는 비-정적 컨테이너(예, 이력 저장부(240))에 저장된 내용에 기초하여, 해당 컨테이너를 할당할 수 있다. 여기서 상기 할당하는 컨테이너는 학습 모드에서의 메모리 할당부의 동작 동안의 정보 혹은 컨테이너에 대한 이력으로 기록된 관련 할당 정보에 기초하여 정확한 크기로 즉시 할당될 수 있다.
다양한 실시 예에 따른 메모리 할당부(132)는, 이와 같은 컨테이너에 대한 할당을 일회성 이벤트로 이루어질 수 있도록 제어할 수 있다. 이에 따라 비용이 많이 드는 후속의 재-할당들을 방지할 수 있다. 예컨대, 특정 할당 요청이 이력에 기초하여 정적 컨테이너에 관련된 것으로 식별되는 경우, 특정 컨테이너는 연속적인 메모리의 정적 풀에서 이전에 학습된 크기의 할당으로 행해질 수 있다. 이에 따라 해당 컨테이너의 단편화가 감소될 수 있다. 다양한 실시 예에 따라, 할당 결정부(230)는 마지막 할당을 요청할 수 있다. 여기서 상기 마지막 할당은, 물리적 메모리(예, RAM)에 대한 운영 체제에서의 요청에 따른 것일 수 있다.
도 5는 본 발명의 실시 예에 따른 메모리 할당 방법의 일 예시를 도시한 흐름도이다. 도 5를 참조하면, 510 동작에서 프로세서는 애플리케이션에 대한 메모리 할당 요청을 식별하도록 제어할 수 있다.
520 동작에서 프로세서는 상기 메모리 할당이 요청된 애플리케이션의 이력에 기초하여, 상기 식별한 메모리 요청을 분석할 수 있다.
530 동작에서, 프로세서는 분석한 메모리 요청에 대응하여 상기 애플리케이션에 대한 메모리 할당 동작을 수행하도록 제어할 수 있다.
상기 메모리 할당 동작 이후, 540 동작에서, 프로세서는 메모리 할당 동작이 수행된 특정 애플리케이션의 메모리 할당 요청을 저장하도록 제어할 수 있다. 예컨대, 540 동작에서 프로세서는 상기 애플리케이션의 인스턴스들을 상기 애플리케이션의 의한 메모리 할당 요청의 이력으로 저장하도록 제어할 수 있다.
550 동작에서, 프로세서는 상기 애플리케이션의 이전 인스턴스들이 확인되는지 여부에 따라 상기 애플리케이션의 메모리 할당 모드를 학습 모드와 비-학습 모드 중 하나로 선택하도록 제어할 수 있다.
도 6은 본 발명의 실시 예에 따른 메모리 할당 방법의 다른 예시를 도시한 흐름도이다. 도 6을 참조하면, 610 동작에서 프로세서는 애플리케이션에 대한 메모리 할당이 요청됨을 식별할 수 있다.
620 동작에서 프로세서는 상기 메모리 할당이 요청된 애플리케이션의 이력을 요청하도록 제어할 수 있다.
630 동작에서, 프로세서는 애플리케이션의 이력이 해당 애플리케이션의 이전 인스턴스들에 대한 정보를 포함하는지 여부에 따라 메모리 할당 동작을 수행하도록 제어할 수 있다.
640 동작에서, 프로세서는 학습 모드로 메모리 할당 동작을 수행하는 경우, 메모리 할당 동작에 따라 결정된 컨테이너의 타입 혹은 컨테이너의 크기 정보를 상기 애플리케이션의 이력으로 저장하도록 제어할 수 있다. 또한, 프로세서는 상기 애플리케이션의 다른 인스턴스들을 영구적으로 저장하여, 이후 해당 애플리케이션의 다른 메모리 할당 동작시에 사용하도록 제어할 수 있다.
이후, 650 동작에서, 프로세서는 상기 애플리케이션의 메모리 할당 요청이 다시 식별되면 상기 저장한 애플리케이션의 이력에 따라 상기 애플리케이션의 메모리 할당 모드를 선택하도록 제어할 수 있다.
도 7 내지 도 10은 본 발명의 다양한 실시 예가 적용될 수 있는 전자 장치 구성의 다양한 예시를 도시한 블록도이다.
도 7을 참조하면, 본 발명의 다양한 실시 예가 적용될 수 있는 전자 장치(700)는, 메모리 할당부(132)를 포함할 수 있으며, 다양한 방식 중 하나로 구현될 수 있다. 예컨대, 앞서 도 1 및 도 2를 참조하여 설명한 것과 같이, 전자 장치(700)는 프로세서(110), 메모리(130), 또는 I/O(120)를 포함하는 하드웨어(150)를 포함할 수 있다. 상기 전자 장치(700)는 본 발명의 다양한 실시 예에 따라, 처리 하드웨어 위에 놓인 애플리케이션 프로그램(131)과 운영체제(OS)(140) 사이에 위치된 메모리 할당부(132)를 포함할 수 있다.
도 8을 참조하면, 전자 장치(800)는 앞서 도 1 및 도 2를 참조하여 설명한 것과 같이, 프로세서(110), 메모리(130), 및 I/O(120)를 포함하는 하드웨어(150)를 포함할 수 있다. 상기 전자 장치(800)는 본 발명의 다양한 실시 예에 따라, OS(140)과 메모리 할당부(132)로 구성되는 블록(160)을 포함할 수 있다.
도 9를 참조하면, 전자 장치(900)는 앞서 언급된 하드웨어(170)의 일부로서 메모리 할당부(132)를 포함할 수 있다.
도 10을 참조하면, 전자 장치(1000)는 프로세서(110), I/O(120), 메모리(130)를 포함하는 하드웨어(150)와, 메모리 할당부(132)를 포함하여 구현할 수 있다. 이와 같은 대안적인 하드웨어적 구현에서, 메모리는, 예컨대, 동일 패키지의 일부 또는 메모리 자체인 어셈블리로 내장된 메모리 할당부(132)를 포함할 수 있다.
도 10을 참조하면, 메모리 할당부(132)는 애플리케이션 프로그램(131)의 일부일 수 있다. 메모리 할당부(132)를 포함하는 애플리케이션 프로그램(131)에서 요청되고 있는 메모리 할당들이 식별되는 경우, 기술된 대로 동작하는 수정된 컨테이너들과 일반 C/C++ 라이브러리 컨테이너들의 드롭-인(drop-in replacement) 대체의 사용을 통해 할당될 수 있다. 또한, 수정된 컨테이너들은 메모리 할당 요청들을 식별하게 하는 피처들 및/또는 크기 및 재-할당 이력을 추적하여 저장, 추적 및 분석하는 피처들을 제공할 수 있다.
또한, 상기 전자 장치(1000)가 애플리케이션 바이너리들 또는 플랫폼 라이브러리들을 수정하는 것을 지원하는 플랫폼의 일부인 경우, 메모리 할당들을 요청하고 수행하는데 일반적으로 사용되는 애플리케이션 바이너리들 또는 플랫폼 라이브러리들이 런 타임에서 수정됨으로써 바이너리에 정적 및 비-정적 컨테이너들을 직접 플래깅할 수 있다. 이것은 보안 문제들을 유발할 수 있으며, 따라서 특정 플랫폼들에 적합한 구현이 될 가능성이 높다. 또한 본 발명의 다양한 실시 예에 따라, 애플리케이션 프로그램(131)이 메모리 할당부(132)의 기능을 제공하도록 빌드-타임(build-time)에서 커스터마이징될 수 있다. 또한, 빌드-타임 커스터마이징은 개선된 메커니즘들이 메모리 할당에 대한 요청들을 식별하고 이러한 요청들에 대한 메타 데이터를 추적하는데 제공되도록 사용될 수 있다. 이 메커니즘들은 할당 요청들의 식별 및/또는 메모리 할당부(132)에 의해 수행되는 분석을 용이하게 하기 위해 사용될 수 있다. 또한, 빌드-타임 최적화는 컨테이너 식별의 몇몇 예비적 양태들이 실제 사용자들로부터 입력들을 사용하여 테스트된 애플리케이션들을 가지고, 오프라인 처리될 수 있게 함으로써, 할당에 대한 요청들의 이력, 및 발생하는 정적 및 비-정적 컨테이너들의 식별을 가능하게 할 수 있다. 빌드-타임 최적화를 돕거나 메모리 할당기의 할당 전략의 유효성을 결정하기 위한 시각화 툴들이 또한 예상된다. 학습 모드 동안 비-정적 컨테이너들의 영향을 줄이기 위하여, 빌드-타임 동안 몇몇 비-정적 컨테이너들이 자동적으로 태깅됨으로써 애플리케이션의 제 1 인스턴스에서 최적의 크기로 메모리 할당이 실행되는 것을 용이하게 결정하도록 할 수 있다.
도 11은 본 발명의 다양한 실시 예가 적용될 수 있는 기록 매체의 일 예시를 도시한 도면이다. 도 11을 참조하면, 상기 기록 매체가 본 발명의 다양한 실시 예에 따른 전자 장치를 포함되어 구현될 경우, 본 발명의 다양한 실시 예가 적용될 수 있는 전자 장치가 구성되게 하거나, 또는 전자 장치가 본 발명의 다양한 실시 예에 따른 메모리 할당 방법을 수행하도록 하는 명령을 기록한 컴퓨터 판독가능 저장매체일 수 있다. 도 11에 나타낸 컴퓨터 판독가능 저장매체는 광학 저장 디스크이지만, 각종 다른 매체가 본 명세서에서 기술된 메모리 할당부의 이익을 획득하는데 관심있는 당사자들에게 판매되거나 라이센스로 보호되는 관련 명령들을 저장하는데 사용될 수 있다는 것이 이해될 것이다.
본 예시적 실시 예들의 산업 응용이 본 명세서의 논의로부터 명백할 것이다. 메모리 할당부가 자동적으로 자신을 조정하도록 구성될 시에, 어떠한 수동 구성도 사용에 필요하지 않다. 개발자의 관점에서는, 최소의 수동 구성이 필요하며 이에 따라 개발자로 하여금 애플리케이션의 비지니스 로직이나 다른 양태들에 초점을 맞출 수 있게 하여 메모리 할당을 최적화하는데 시간을 소모할 필요가 없게 한다. 본 출원과 관련하여 이 명세서와 동시에 제출되었거나 그 이전에 제출된 논문과 문헌들 그리고 이 명세서에 대한 공개 조사로 개방된 논문과 문헌들에 주목하며, 모든 이러한 논문과 문헌들의 내용은 참조에 의해 본 명세서에 통합된다.
본 명세서(임의의 첨부 청구항들, 요약 및 도면 포함)에 개시된 모든 특징들 및/또는 개시된 임의의 방법이나 프로세스의 모든 단계들은, 그러한 특징들 및/또는 단계들의 적어도 일부가 상호 배타적인 조합들을 제외하고, 임의의 조합으로 결합될 수 있다.
본 명세서에(임의의 첨부 청구항들, 요약 및 도면 포함) 개시된 각 특징은, 다르게 명시적으로 진술되지 않는 한, 동일, 동등한 도는 유사한 목적을 제공하는 다른 특징으로 대체될 수 있다. 따라서, 달리 명시적으로 진술되지 않는한, 여기에 개시된 각 특징은 일반적인 일련의 동등물 또는 유사 특징들 중의 하나만을 가지는 것이다.
본 발명은 전술한 실시 예(들)의 상세로 제한되지 않는다. 본 발명은 본 명세서(임의의 첨부 청구항들, 요약 및 도면 포함)에 개시된 특징들 중의 신규한 하나, 또는 신규한 조합으로, 또는 개시된 임의의 방법이나 프로세스의 단계들 중의 임의의 신규한 하나, 또는 임의의 신규한 조합으로 확장된다.

Claims (14)

  1. 전자 장치에 있어서,
    프로세서의 애플리케이션에 대한 메모리 할당 요청을 식별하고, 상기 식별된 요청을 통해 상기 애플리케이션에 대한 이력을 확인하고, 상기 확인한 결과에 기초하여, 상기 애플리케이션에 대한 메모리 할당 모드를 결정하는 메모리 할당부, 및
    상기 결정된 메모리 할당 모드에 따라 메모리 할당 동작을 수행하도록 제어하는 프로세서를 포함하는 전자 장치.
  2. 제1항에 있어서,
    상기 프로세서는,
    상기 애플리케이션에 대한 이력이 확인되면, 상기 메모리 할당 모드를 학습 모드로 선택하도록 상기 메모리 할당부를 제어하며;
    상기 애플리케이션에 대한 메모리는 상기 확인된 애플리케이션에 대한 이력에 따라 할당되는 전자 장치.
  3. 제2항에 있어서,
    상기 프로세서는,
    상기 확인된 애플리케이션에 대한 이력이 학습 임계값(learning threshold)에 도달한 경우, 상기 메모리 할당 모드를 비-학습 모드로 설정하도록 상기 메모리 할당부를 제어하며;
    상기 학습 임계값은 미리 설정된 시간 동안의 메모리 할당 요청의 수, 상기 애플리케이션의 이전의 인스턴스들의 수, 또는 상기 메모리 할당 요청의 이력을 요청한 제 1 질의 이후 경과한 시간 중 적어도 하나를 포함하는 전자 장치.
  4. 제3항에 있어서,
    상기 프로세서는,
    상기 애플리케이션이 재-학습 임계값에 도달한 경우, 상기 메모리 할당 모드를 상기 비-학습 모드에서 상기 학습 모드로 설정하도록 상기 메모리 할당부를 제어하며;
    상기 재-학습 임계값은, 미리 설정된 시간 동안의 메모리 재-할당 요청의 수 또는 재-할당된 메모리의 조합의 크기 값 중 적어도 하나를 포함하는 전자 장치.
  5. 제4항에 있어서,
    상기 프로세서는,
    상기 애플리케이션의 현재 또는 이전의 인스턴스들로부터, 이전에 할당된 메모리가 정적 타입 컨테이너임을 확인하면, 상기 애플리케이션의 메모리 할당 요청이 미리 예약된 메모리의 풀에서의 고정된 크기의 할당을 요청하는지 확인하도록 상기 메모리 할당부를 제어하는 전자 장치.
  6. 제5항에 있어서,
    상기 전자 장치는 로거를 더 포함하며;
    상기 프로세서는,
    상기 학습 모드로 동작하는 동안 상기 애플리케이션의 복수의 인스턴스들에 의해 이루어지는 메모리 할당 요청들에 대한 이력을 저장하도록 상기 로거를 제어하는 전자 장치.
  7. 제6항에 있어서,
    상기 프로세서는,
    컨테이너 식별 데이터베이스를 저장하도록 상기 로거를 제어하며,
    상기 컨테이너 식별 데이터베이스는 식별된 메모리 할당 요청들에 대한 응답으로 할당된 컨테이너들의 로그, 식별된 메모리 할당 요청에 따라 링크된 컨테이너들의 링크 정보, 크기가 변경된 컨테이너에 대한 재-할당들에 대한 이력 및 상기 재-할당들에 대한 이력의 데이터, 할당된 컨테이너들의 크기에 대한 정보, 또는 정적 타입 컨테이너들에 대해 예약된 메모리의 풀로부터 고정된 크기를 갖도록 할당되었는지의 여부 중 적어도 하나를 포함하는 전자 장치.
  8. 전자 장치에서의 메모리 할당 방법에 있어서,
    애플리케이션에 대한 메모리 할당 요청을 식별하는 동작과,
    상기 식별된 요청을 통해 상기 애플리케이션에 대한 이력을 확인하는 동작과,
    상기 확인한 결과에 기초하여, 상기 애플리케이션에 대한 메모리 할당 모드를 결정하는 동작, 및
    상기 결정된 메모리 할당 모드에 따라 메모리 할당을 수행하는 동작을 포함하는 전자 장치에서의 메모리 할당 방법.
  9. 제8항에 있어서,
    상기 애플리케이션에 대한 이력이 확인되면, 상기 메모리 할당 모드를 학습 모드로 선택하는 동작과,
    상기 학습 모드가 선택됨에 따라 상기 애플리케이션에 대한 메모리를 상기 확인된 애플리케이션에 대한 이력에 따라 할당하는 동작을 더 포함하는 전자 장치에서의 메모리 할당 방법.
  10. 제9항에 있어서,
    상기 확인된 애플리케이션에 대한 이력이 학습 임계값(learning threshold)에 도달한 경우, 상기 메모리 할당 모드를 비-학습 모드로 설정하는 동작을 더 포함하며;
    상기 학습 임계값은 미리 설정된 시간 동안의 메모리 할당 요청의 수, 상기 애플리케이션의 이전의 인스턴스들의 수, 또는 상기 메모리 할당 요청의 이력을 요청한 제 1 질의 이후 경과한 시간 중 적어도 하나를 포함하는 전자 장치에서의 메모리 할당 방법.
  11. 제10항에 있어서,
    상기 애플리케이션이 재-학습 임계값에 도달한 경우, 상기 메모리 할당 모드를 상기 비-학습 모드에서 상기 학습 모드로 설정하는 동작을 더 포함하며;
    상기 재-학습 임계값은, 미리 설정된 시간 동안의 메모리 재-할당 요청의 수 또는 재-할당된 메모리의 조합의 크기 값 중 적어도 하나를 포함하는 전자 장치에서의 메모리 할당 방법.
  12. 제11항에 있어서,
    상기 애플리케이션의 현재 또는 이전의 인스턴스들로부터, 이전에 할당된 메모리가 정적 타입 컨테이너임을 확인하면, 상기 애플리케이션의 메모리 할당 요청이 미리 예약된 메모리의 풀에서의 고정된 크기의 할당을 요청하는지 확인하는 동작을 더 포함하는 전자 장치에서의 메모리 할당 방법.
  13. 제11항에 있어서,
    상기 학습 모드로 동작하는 동안 상기 애플리케이션의 복수의 인스턴스들에 의해 이루어지는 메모리 할당 요청들에 대한 이력을 저장하는 동작을 더 포함하는 전자 장치에서의 메모리 할당 방법.
  14. 제13항에 있어서,
    컨테이너 식별 데이터베이스를 저장하는 동작을 더 포함하며;
    상기 컨테이너 식별 데이터베이스는 식별된 메모리 할당 요청들에 대한 응답으로 할당된 컨테이너들의 로그, 식별된 메모리 할당 요청에 따라 링크된 컨테이너들의 링크 정보, 크기가 변경된 컨테이너에 대한 재-할당들에 대한 이력 및 상기 재-할당들에 대한 이력의 데이터, 할당된 컨테이너들의 크기에 대한 정보, 또는 정적 타입 컨테이너들에 대해 예약된 메모리의 풀로부터 고정된 크기를 갖도록 할당되었는지의 여부 중 적어도 하나를 포함하는 전자 장치에서의 메모리 할당 방법.
KR1020140091728A 2013-12-03 2014-07-21 전자 장치 및 전자 장치에서의 메모리 할당 방법 KR20150064653A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/559,469 US9740481B2 (en) 2013-12-03 2014-12-03 Electronic device and method for memory allocation in electronic device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1321308.7 2013-12-03
GB1321308.7A GB2520943B (en) 2013-12-03 2013-12-03 Memory allocation for applications based on identified allocation history

Publications (1)

Publication Number Publication Date
KR20150064653A true KR20150064653A (ko) 2015-06-11

Family

ID=49979709

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140091728A KR20150064653A (ko) 2013-12-03 2014-07-21 전자 장치 및 전자 장치에서의 메모리 할당 방법

Country Status (2)

Country Link
KR (1) KR20150064653A (ko)
GB (1) GB2520943B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11592817B2 (en) 2017-04-28 2023-02-28 Intel Corporation Storage management for machine learning at autonomous machines
US11669246B2 (en) 2019-08-19 2023-06-06 International Business Machines Corporation Storage allocation enhancement of microservices

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230247B1 (en) * 1997-10-29 2001-05-08 International Business Machines Corporation Method and apparatus for adaptive storage space allocation
US6131190A (en) * 1997-12-18 2000-10-10 Sidwell; Leland P. System for modifying JCL parameters to optimize data storage allocations
US20060080350A1 (en) * 2004-10-13 2006-04-13 Timothy Mark Allocation of file storage based on pattern recognition
GB2421096A (en) * 2004-12-10 2006-06-14 Hewlett Packard Development Co Determining a memory allocation algorithm in dependence on a memory allocation pattern for a process
US7890675B2 (en) * 2009-03-05 2011-02-15 International Business Machines Corporation Apparatus, system, and method for real time job-specific buffer allocation
US8521986B2 (en) * 2009-10-29 2013-08-27 Condusiv Technologies Corporation Allocating storage memory based on future file size or use estimates

Also Published As

Publication number Publication date
GB201321308D0 (en) 2014-01-15
GB2520943B (en) 2016-12-28
GB2520943A (en) 2015-06-10

Similar Documents

Publication Publication Date Title
US9740481B2 (en) Electronic device and method for memory allocation in electronic device
US11429439B2 (en) Task scheduling based on performance control conditions for multiple processing units
US20180365108A1 (en) Fault recovery management in a cloud computing environment
KR102237373B1 (ko) 전자 장치의 태스크 스케줄링 방법 및 이를 사용하는 전자 장치
US10402222B2 (en) Task migration method and apparatus
US10572104B2 (en) Electronic device for executing a plurality of applications and method for controlling the electronic device
KR102277087B1 (ko) 콘텐츠 분류 방법 및 전자 장치
US9684604B2 (en) Electronic device with cache memory and method of operating the same
US20160026272A1 (en) Method for displaying screen in electronic device, and electronic device thereof
KR102176645B1 (ko) 어플리케이션 운용 방법 및 이를 이용한 전자 장치
US20170052979A1 (en) Input/Output (IO) Request Processing Method and File Server
US9311348B2 (en) Method and system for implementing an array using different data structures
US11409648B2 (en) Electronic apparatus and controlling method for performing memory swapping to reduce resource usage
US20150355888A1 (en) Acquiring identification of an application lifecycle management entity associated with similar code
US10757190B2 (en) Method, device and computer program product for scheduling multi-cloud system
US10277667B2 (en) Method and apparatus for executing application based on open computing language
US20130152049A1 (en) Warning of register and storage area assignment errors
KR20150064653A (ko) 전자 장치 및 전자 장치에서의 메모리 할당 방법
US9535713B2 (en) Manipulating rules for adding new devices
US20150121348A1 (en) Method and device for analyzing application
US9075988B2 (en) Inferring security decisions from trusted users
US20180275981A1 (en) Determining candidate patches for a computer software
KR20200056046A (ko) 전자 장치 및 그 제어방법
US9081487B2 (en) System and method for manipulating an image
US10417030B2 (en) Apparatus and method for compile time construction of memory structures

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application