KR20150136811A - 임베디드 시스템에서 메모리 관리 장치 및 방법 - Google Patents

임베디드 시스템에서 메모리 관리 장치 및 방법 Download PDF

Info

Publication number
KR20150136811A
KR20150136811A KR1020140064298A KR20140064298A KR20150136811A KR 20150136811 A KR20150136811 A KR 20150136811A KR 1020140064298 A KR1020140064298 A KR 1020140064298A KR 20140064298 A KR20140064298 A KR 20140064298A KR 20150136811 A KR20150136811 A KR 20150136811A
Authority
KR
South Korea
Prior art keywords
task
memory
compression
compressed
allocated
Prior art date
Application number
KR1020140064298A
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 KR1020140064298A priority Critical patent/KR20150136811A/ko
Publication of KR20150136811A publication Critical patent/KR20150136811A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • 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/461Saving or restoring of program or task context
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)

Abstract

본 발명의 실시 예에 따르면, 임베디드 시스템(embedded system)에서 메모리 관리 방법에 있어서, 메모리 사용률에 기반한 메모리 압축 관련 정보를 설정하는 단계, 상기 메모리 압축 관련 정보 및 현재 메모리 사용률에 기반하여 메모리 압축이 필요한지 판단하는 단계 및 메모리 압축이 필요하다고 판단하면, 메모리에 할당된 적어도 하나의 압축 대상 태스크(task)에 포함되는 태스크 코드(code) 영역, 태스크 데이터(data) 영역 및 태스크 스택(stack) 영역을 각각 압축하는 단계를 포함하는 것을 특징으로 하는 방법 및 임베디드 시스템을 제공할 수 있다.

Description

임베디드 시스템에서 메모리 관리 장치 및 방법{Apparatus and Method for managing memory in an embedded system}
본 발명은 임베디드 시스템(embedded system)에서 메모리 관리를 위한 장치 및 방법에 관한 것이다. 본 발명은 임베디드 시스템에서 메모리 재생(regeneration)을 위한 방법 및 장치에 관한 것이다.
일반적으로 임베디드 시스템(embedded system)이란 제한된 자원을 이용하여 특정한 목적을 갖는 작업을 처리하기 위한 시스템을 말한다. 대표적인 임베디드 시스템인 휴대폰을 예로 들면, 제한된 자원은 크기, 메모리 및 배터리 용량 등을 의미하고 특정한 목적의 작업은 통신을 위한 호(call)처리 등을 의미한다.
이와 같이 임베디드 시스템은 한정된 자원을 이용하기 때문에 이를 효율적으로 관리하고 운용하는 것이 필수적이다. 특히 제한된 자원 중 거의 모든 작업에 사용되는 메모리(memory) 자원의 경우 효율적 관리가 더욱 중요하다.
일반적으로 임베디드 장치는 이용 가능한 메모리의 양이 제한된 상황에서 사용된다. 또한, 임베디드 시스템은 가상 메모리 개념을 사용하지 않고, 관련된 고유의 지연 시간 때문에 페이징(paging)을 요구한다. 페이징이란 한정된 기억 용량으로 될 수 있는 대로 다수의 프로그램을 넣고, 동시에 처리할 수 있도록 하기 위해 프로그램을 한 번에 처리할 수 있는 적당한 크기(페이지)로 분할하여 페이지 단위로 처리하는 것을 말한다. 페이징에서는 프로그램을 실행할 때, 페이지 단위로 주 기억 장치 상에 로드하고, 그것 이외에는 페이지를 단위로 하여 외부 기억 장치에 언로드 한다.
테스크(task)/프로세스(process)/쓰레드(thread)는 시스템 부팅 시 코드와 스택 영역에 대해 미리 할당된 메모리이다. 모뎀(Modem) 프로세서와 같은 복잡한 시스템에서 메모리 사용의 최악의 경우를 추정하는 것은 대부분 불가능하다. 또한, 종종 메모리 부족 문제(힙(heap)/디퍼(deeper) 함수 호출-호출 스택(stack)으로부터 할당)가 있는 상황에 마주치고, 이는 시스템 실패(system failure)으로 보고된다. 따라서 하드웨어 디자인 후, 임베디드 시스템 어플리케이션의 메모리 요구량은 자주 초기 추정치를 초과한다.
이러한 일시적인 위기 시나리오를 영리한 방식으로 다루는 것은 시스템 실패를 피할 수 있다. 스택(stack)/힙(heap)을 증가/재할당하는 전형적인 해법은 발전 및/또는 생산원가의 관점에서 비용 증가로 나타날 수 있다. 또한, 이것은 스택 사용량을20%까지 과하게 잡는 관행을 유도한다(소프트웨어 프로그래머들에게 현재 널리 퍼져있는 관습).
한번 할당된 메모리(대부분 설계 시간 결정)는 간혹 그것의 실제 사용을 위해 추적된다. 대부분의 시나리오에서는 조건에 따라 코드의 특정 부분만 실행되고, 대부분의 프로그래밍된 로직(logic)은 유휴 상태(idle status)에 놓인다. 예를 들어, 다중 RAT(Radio Access Technology) 모바일 모뎀 프로세서에서, 대부분의 시한 장치(time device)는 자신의 라이프 사이클의 50%까지 이동성이 정적인 상태로 있다. 하나의 RAT에 대한 코드/스택은 단지 신호 조건들에 따라 사용될 수 있다.
본 발명이 이루고자 하는 기술적 과제는 임베디드 시스템에서 개선된 메모리 관리 장치 및 방법을 제공하는 것이다. 또한, 임베디드 시스템에서 개선된 메모리 재생 장치 및 방법을 제공하는 것이다.
본 발명의 실시 예에 따르면, 임베디드 시스템(embedded system)에서 메모리 관리 방법에 있어서, 메모리 사용률에 기반한 메모리 압축 관련 정보를 설정하는 단계, 상기 메모리 압축 관련 정보 및 현재 메모리 사용률에 기반하여 메모리 압축이 필요한지 판단하는 단계 및 메모리 압축이 필요하다고 판단하면, 메모리에 할당된 적어도 하나의 압축 대상 태스크(task)에 포함되는 태스크 코드(code) 영역, 태스크 데이터(data) 영역 및 태스크 스택(stack) 영역을 각각 압축하는 단계를 포함하는 것을 특징으로 하는 방법을 제공할 수 있다.
또한, 본 발명의 실시 예에 따르면, 메모리를 동적으로 관리하는 임베디드 시스템(embedded system)에 있어서, 상기 임베디드 시스템의 동작을 위한 다양한 명령어 및 데이터들이 저장되는 메모리 및 메모리 사용률에 기반한 메모리 압축 관련 정보를 설정하고, 상기 메모리 압축 관련 정보 및 현재 메모리 사용률에 기반하여 메모리 압축이 필요한지 판단하며, 메모리 압축이 필요하다고 판단하면, 메모리에 할당된 적어도 하나의 압축 대상 태스크(task)에 포함되는 태스크 코드(code) 영역, 태스크 데이터(data) 영역 및 태스크 스택(stack) 영역을 각각 압축하도록 제어하는 컨트롤러를 포함하는 것을 특징으로 하는 임베디드 시스템을 제공할 수 있다.
본 발명의 실시 예에 따르면 임베디드 시스템에서 효율적으로 메모리를 관리하는 방법 및 장치를 제공할 수 있다. 또한, 본 발명의 실시 예에 따르면 다양한 응용 프로그램의 요구에 대응하여 메모리를 압축할 수 있다.
또한, 본 발명의 실시 예에 따르면, 메모리의 이용 가능 메모리에 기반한 압축 트리거를 이용하여 효율적으로 메모리를 관리할 수 있다.
또한, 본 발명의 실시 예에 따르면 각 태스크(task)의 스케줄링 빈도에 기반하여 압축 대상 태스크(task)를 결정하여 효율적으로 메모리를 관리할 수 있다.
또한, 본 발명의 실시 예에 따르면 시스템 실패(system failure) 확률을 줄일 수 있다.
도 1은 동적 메모리 할당 방법을 설명하는 도면이다.
도 2는 본 발명의 일 실시 예에 따른 임베디드 시스템 및 압축 방법을 설명하는 도면이다.
도 3은 본 발명의 일 실시 예에 따른 메모리 압축 및 메모리 할당 동작을 설명하는 도면이다.
도 4는 본 발명의 일 실시 예에 따른 메모리 맵을 설명하는 도면이다.
도 5는 본 발명의 일 실시 예에 따른 메모리 압축 및 압축 해제 동작을 설명하는 도면이다.
도 6은 본 발명의 일 실시 예에 따른 알고리즘을 설명하는 도면이다.
도 7는 본 발명의 일 실시 예에 따른 다른 메모리 맵을 설명하는 도면이다.
도 8은 본 발명의 일 실시 예에 따른 알고리즘을 설명하는 도면이다.
이하, 첨부된 도면들을 참조하여 다양한 실시 예들을 상세히 설명한다. 이때, 첨부된 도면들에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다. 하기의 설명에서는 본 발명의 다양한 실시 예들에 따른 동작을 이해하는데 필요한 부분만이 설명되며, 그 이외 부분의 설명은 본 발명의 요지를 흩트리지 않도록 생략될 것이라는 것을 유의하여야 한다.
본 발명의 실시 예와 유사한 기술 분야에서 캐시(cathe)와 주 메모리 사이에 삽입될 수 있는 하드웨어를 이용한 압축/해제 유닛이 논의되고 있다. 논의 되고 있는 시스템에서는 가상 주소 기반 수요 페이징 시스템에서 적용될 수 있다. 하드웨어 유닛은 가상(virtual)/수요(demand) 페이징 OS(operation system)를 예상하여 메모리 문제를 해결할 수 있다.
본 발명의 실시 예에는 가상 물리 주소 번역 아키텍쳐 (MMU-Less)를 가지고 있지 않은 RTOS(Real Time Operating System) 기반 임베디드 프로세서에서 알맞게 사용될 수 있는 소프트웨어적 접근에 기반한 방법 및 장치에 대하여 설명한다.
본 발명의 실시 예에서는 압축할 타켓(target) 블록을 찾는 RTOS 스케줄러 시스템에서 알맞게 사용될 메모리 관리 절차와, 압축 및 압축해제 기능을 작동시키는 시스템에서 정의될 수 있는 다양한 이벤트를 정의할 수 있다. 또한, 재생된 메모리를 관리하고 사용하려는 메커니즘(mechanism)을 포함할 수 있다.
본 발명의 일 실시 예에서는 액세스되지 않은 할당된 메모리의 크기를 압축하고 줄이는 방법에 대하여 설명한다. 압축된 메모리는 다시 액세스되기 전에 동적으로 압축이 해제된다. 재생된 메모리 영역은 서로 연결되어 있고, 힙(heap) 또는 스택(stack) 중 하나를 위해 사용된다. 따라서 메모리 압축 기술의 사용은 프로그램에서 이용 가능한 동적 메모리 양을 증가시킬 수 있다. 액세스되지 않은 할당된 메모리 블록들은 압축되어 실제 할당 크기를 줄인다. 이와 같이 메모리를 압축하기 위해서는 어떤 메모리 블록이 자주 액세스되지 않기 때문에 압축되어야 하고, 압축 되어야 할 메모리 블록에 대한 임계치를 설계할 필요가 있다.
스택(stack)이란 쌓아 올린 더미를 의미하는데 자료구조에서 기억 장치에 데이터를 일시적으로 겹쳐 쌓아 두었다가 필요할 때에 꺼내서 사용할 수 있게 주 기억 장치(main memory)나 레지스터(register)의 일부를 할당하여 사용하는 임시 기억장치를 말한다.
힙(heap)은 C 언어나 자바와 같은 프로그래밍 환경에서 원시 자료형이 아닌 보다 큰 크기의 데이터를 담고자 동적으로 할당하는 메모리 공간을 지칭한다. 프로그램 코드에서 원하는 크기의 메모리 할당을 요청하면 힙을 관리하는 라이브러리 혹은 모듈이 지정된 크기의 힙 공간 안에서 사용 가능한 곳을 찾아 그곳을 다른 스레드나 프로그램이 사용하지 못하도록 예약 상태로 만들고 접근 가능한 핸들이나 포인터를 반환하는 식으로 사용할 수 있다.
도 1은 동적 메모리 할당 방법을 설명하는 도면이다.
도 1을 참조하면, S110 단계에서 메모리 스케줄러(memory scheduler)는 메모리 할당 요청을 수신할 수 있다. S130 단계에서 할당 요청을 받은 메모리 크기와 메모리 시스템의 사용 가능한 메모리 크기를 비교한다. 메모리 시스템의 사용 가능한 메모리 크기는 사용 가능한 힙(heap) 영역의 크기일 수 있다.
S130 단계에서의 비교 결과에 따라, 시스템의 사용 가능한 메모리의 크기가 요청 받은 메모리 크기 보다 크면 S150 단계로 진행하며, 할당 요청 받은 메모리를 사용 가능한 메모리 영역에 할당한다. 시스템의 사용 가능한 메모리의 크기가 요청 받은 메모리 크기 보다 작으면 S170 단계로 진행하며, 할당 요청 받은 메모리를 할당할 수 없으므로 시스템 실패(system failure)로 처리한다.
메모리 할당 요청에 대하여 시스템 실패가 되지 않기 위해서는 사용 가능한 메모리 영역을 최대한 확보하는 것이 유리하다. 본 발명의 실시 예에서는 시스템 실패 확률을 줄이고 메모리 할당 요청을 처리하기 위해, 이미 할당된 메모리 영역을 압축하여 할당된 메모리 영역의 크기를 줄이고, 사용 가능한 메모리 영역을 확보하는 방법에 대하여 설명한다. 또한, 할당된 메모리에 대한 압축 동작을 수행하는 시점 및 압축 대상 태스크(task)를 결정하는 방법을 설명한다. 태스크(task)는 OS가 자원을 할당하여 일을 처리하는 경우 일의 단위를 의미한다.
본 발명의 실시 예에서 제안하는 메모리 압축 방법 및 임베디드 시스템은 시스템이 기 설정된 메모리 부족 상황을 경험할 때 트리거(trigger)될 수 있다. 따라서 일반적인 시나리오 하에서 이 방식은 트리거되지 않을 수 있다. 또한, 본 발명의 실시 예에서는 특정 시점에서 자주 사용하지 않는 것으로 계획된 태스크(task)를 압축 대상 태스크(task)로 설정하여 태스크 압축에 이용할 수 있다. 즉, 본 발명의 실시 예에서 스케줄러(230)는 특정 시점에서 자주 사용하지 않는 태스크(task)에 대한 정보 및 시스템의 사용 가능한 메모리(system available memory)의 임계 값(threshold)에 대한 정보를 저장하고, 저장된 정보를 이용하여 압축 시점 및 압축 대상 태스크(task)를 판단하여 메모리 압축에 이용할 수 있다.
시스템의 사용 가능 메모리(system available memory)가 정의된 임계 값 보다 내려가면(본 발명의 실시 예에서 사용 가능 메모리가 정의된 임계 값 보다 내려간다는 의미는 사용 중인 메모리가 정의된 임계 값을 초과하는 개념과 유사하게 사용될 수 있다.), 기 설정된 태스크(task)에 대응하는 코드(code)/데이터(data)/스택(stack)은 순차적으로 압축될 수 있다. 또한, 압축에 의해 확보된 자유 공간(freed space)은 새로운 메모리 풀(New Memory Pool)로 사용될 수 있다. 이와 같이 스택/코드/데이터 영역을 압축하고, 압축된 영역을 동적 할당을 위한 런타임 시 재사용한다면, 시스템 실패(system failure) 확률을 현저하게 줄일 수 있다.
도 2는 본 발명의 일 실시 예에 따른 임베디드 시스템 및 압축 방법을 설명하는 도면이다. 도 2를 참조하면, 임베디드 시스템(200)은 시스템 전반의 동작을 제어하는 운영체제(Operating System, OS)를 포함하는 프로세서(210, Processor), 프로세서(210)에 의해 제어되며 시스템 동작을 위한 다양한 명령어 및 데이터들이 저장되는 메모리부(250) 및 상기 메모리부(250)의 메모리 할당, 할당 해제, 압축, 압축 해제 동작 등을 제어하기 위한 스케줄러(230, Scheduler)를 포함할 수 있다.
메모리부(250)는 응용 프로그램의 요청에 따라 메모리 할당이 가능한 프리 블록(free memory, free memory)과 소정의 응용 프로그램에 이미 할당된 사용 블록(used block, occupied memory)을 포함할 수 있다. 프리 블록 및 사용 블록 각각에는 해당 블록의 각종 정보(예를 들어, 사용 상태, 블록 타입, 블록 사이즈, 블록 주파수)가 구비될 수 있다.
상기에서는 설명의 편의를 위하여 임베디드 시스템(200)의 각 부를 나누어 설명하였으나, 이는 설명의 편의를 위한 것일 뿐 반드시 본원 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 상기 스케줄러(230)는 상기 프로세서(210)에 포함될 수 있고, 이 경우 프로세서(210)가 상기 스케줄러(230)의 동작을 수행할 수 있음은 자명하다. 또한, 상기 스케줄러(230) 및 프로세서(210)을 포함하며, 임베디드 시스템(200)의 전반적인 동작을 제어하는 컨트롤러(240)를 구비할 수도 있다. 이 경우 상기 컨트롤러가 스케줄러(230) 및 프로세서(210)의 동작을 수행할 수 있음은 자명할 것이다.
컨트롤러(240)가 스케줄러(230) 및 프로세서(210)를 포함하는 구성이라고 가정할 때, 본 발명의 실시 예에 따르면, 상기 컨트롤러(240)는 메모리 사용률에 기반한 메모리 압축 관련 정보를 설정하고, 상기 메모리 압축 관련 정보 및 현재 메모리 사용률에 기반하여 메모리 압축이 필요한지 판단하며, 메모리 압축이 필요하다고 판단하면, 메모리에 할당된 적어도 하나의 압축 대상 태스크(task)에 포함되는 태스크 코드(code) 영역, 태스크 데이터(data) 영역 및 태스크 스택(stack) 영역을 각각 압축하도록 제어할 수 있다.
또한, 상기 컨트롤러(240)는 컨트롤러는 각 태스크의 스케줄링 빈도 정보 및 상기 압축 대상 태스크 식별 정보에 기반하여, 상기 압축 대상 태스크를 결정하도록 제어할 수 있다. 또한, 상기 컨트롤러(240)는 압축된 태스크의 태스크 제어 블록(Task Control Block, TCB)에 압축 여부를 식별하는 식별 정보를 업데이트 하도록 제어할 수 있다.
또한, 상기 컨트롤러(240)는 적어도 하나의 태스크에 대한 메모리 할당 요청을 수신하고, 상기 할당 요청을 받은 메모리 크기와 이용 가능한 메모리 크기를 비교하며, 상기 할당 요청을 받은 메모리 크기 보다 이용 가능한 메모리 크기가 더 작으면, 메모리에 할당된 적어도 하나의 태스크를 압축하도록 제어할 수 있다.
또한, 상기 컨트롤러(240)는 압축된 태스크에 대한 적어도 하나의 스케줄링(scheduling) 요청이 있는지 판단하고, 스케줄링 요청이 있으면, 스케줄링 요청을 받은 태스크의 압축 해제가 가능한지 판단하며, 압축 해제가 가능하면, 압축된 태스크의 압축 전 메모리 위치에 상기 스케줄링 요청을 받은 태스크의 압축을 해제하도록 제어할 수 있다.
또한, 상기 컨트롤러(240)는 압축된 태스크에 대한 적어도 하나의 스케줄링 요청이 있는지 판단하고, 스케줄링 요청이 있으면, 상기 태스크가 압축된 이후 상기 압축된 태스크의 압축 전 위치에 새로운 메모리 블록이 할당되었는지 판단하며, 새로운 메모리 블록이 할당되지 않았으면, 상기 태스크의 압축을 해제하지 않고, 상기 태스크의 압축 전 위치의 메모리 블록을 스케줄링 하도록 제어할 수 있다.
또한, 상기 컨트롤러(240)는 새로운 메모리 블록이 할당된 것으로 판단하면, 현재 상기 압축된 태스크의 압축 전 위치에 새로운 태스크에 대한 메모리 블록이 할당되어 있는지 판단하고, 현재 새로운 태스크에 대한 메모리 블록이 할당되어 있지 않으면, 상기 압축된 태스크의 압축 전 위치에 상기 압축된 태스크의 압축을 해제하도록 제어할 수 있다.
또한, 상기 컨트롤러(240)는 현재 새로운 태스크에 대한 메모리 블록이 할당되어 있으면, 상기 압축된 태스크에 대한 스케줄링 요청을 시스템 실패(system failure)로 처리하도록 제어할 수 있다. 또한, 상기 컨트롤러(240)는 메모리에서 기 설정된 각 태스크의 예비 영역에 각 태스크를 압축하도록 제어할 수 있다.
상기에서 컨트롤러(240)의 동작에 대하여 설명하였다. 한편, 컨트롤러의 동작은 이에 한정되지 않는다. 즉, 임베디드 시스템(200)의 전반적인 동적을 제어하는 컨트롤러가, 도 2 내지 도 8을 통해 설명하는 본 발명의 임베디드 시스템 동작을 관리할 수 있음 자명하다.
이하에서는 도 2에 기반하여 본 발명의 일 실시 예에 따른 메모리 압축 및 메모리 재생 방법을 설명한다.
Step 1 : 임베디드 시스템(200)이 동작하면, 스케줄러(230)는 요구되는 각 태스크(task)/프로세스(process)에 대하여 메모리 양(P1, P2, P3, …, Pn)을 할당한다. 각 태스크/프로세스에 대한 메모리는 메모리부(250) 힙(heap) 영역의 프리 블록(free block) 영역에 할당(occupied memory)될 수 있다.
Step 2: 임베디드 시스템(200)은 메모리부(250)의 힙(heap) 영역에 메모리를 할당하면서, 할당된 메모리 양이 기 설정된 임계 한계(threshold limit)를 초과하는지에 대해서 판단할 수 있다. 상기에서 설명한 바와 같이 임계 값은 메모리 사용량이 임계 값을 초과하는지 판단할 수 있고, 사용 가능한 메모리 양이 임계 값 미만인지를 판단할 수도 있다. 기 설정된 임계 한계를 초과하는 경우, 시스템의 메모리가 부족할 수 있으므로, 임베디드 시스템(200)은 메모리 압축 동작을 시작할 수 있다. 즉, 기 설정된 임계 한계는 메모리 압축 동작을 트리거(trigger) 시키는 조건이 될 수 있다.
임베디드 시스템(200)은 메모리부(250)에 할당된 태스크(task) 중 압축 작업을 수행하기 위한 적어도 하나의 태스크(task)를 판단할 수 있다. 압축을 위한 태스크(task)의 판단은 각 태스크(task)에 대한 사용 빈도에 기반하여 판단할 수 있다. 시스템에서 자주 사용되는 태스크(task)는 압축 및 압축 해제 과정이 빈번할 경우 시스템 부하가 증가하고 실질적인 압축 효율이 떨어지기 때문에, 압축을 위한 태스크(task) 후보로 적합하지 않다. 시스템에서 자주 사용되지 않는 태스크(task)를 압축을 위한 태스크(task) 후보로 선정할 수 있다. 각 태스크(task)의 사용 빈도가 기 설정된 임계 값 이하인 경우 태스크(task) 후보로 선정될 수 있다. 각 태스크(task)의 사용 빈도는 각 태스크(task)의 스케줄링 빈도와 유사한 개념으로 사용될 수 있다. 각 태스크(task)의 태스크 컨트롤 블록(TCB, Task Control Block)에는 스케줄링 빈도에 대한 정보를 포함할 수 있다. 스케줄러는 TCB에 저장된 사용 빈도 정보에 기반하여 태스크(task) 후보를 결정할 수 있다.
태스크(task) 후보는 미리 결정되어 저장되어 있을 수 있다. 또한, 태스크(task) 후보는 임베디드 시스템(200)에서 메모리 상태가 압축 수행을 위한 기 설정된 임계 한계를 조건을 만족하는 경우 결정할 수도 있다. 임계 한계 조건을 만족하면, 스케줄러(230)는 태스크 후보 중 적어도 하나의 식별된 태스크(task)를 압축할 수 있다. 스케줄러(230)는 식별된 태스크(task)를 구성하는 스택(stack), 코드(code), 데이터(data) 영역을 압축할 수 있다.
Step 3: 스케줄러(230)는 반복적으로 태스크(task)/프로세스(process)를 스케줄링하면서, 압축 또는 압축 해제 동작을 수행한다. 메모리 사용량이 계속 압축을 위한 임계 한계 조건을 만족하고 있다면, 할당 된 메모리에 대하여 스케줄링 빈도 정보에 기반하여 태스크(task)를 압축할 수 있다. 압축 동작은 시스템 메모리 사용량이 압축을 위한 임계 한계 조건을 만족하지 않는 수준으로 될 때까지 수행할 수 있다. 메모리 사용량이 압축을 위한 임계 한계 조건을 만족하지 않으면 압축된 태스크(task)의 압축을 해제할 수 있다.
Step 4: 압축된 태스크(task)에 대한 스케줄링 요청이 있는 경우 압축된 태스크(task)에 대하여 압축 해제 동작을 수행할 수 있다. 스케줄러(230)는 압축이 해제된 태스크(task)를 프로세서(210)에 제공할 수 있다. 임베디드 시스템(200)은 상기 Step 3과 step 4를 시스템 메모리 사용이 임계 한계 이하로 떨어질 때까지 반복하여 수행할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 메모리 압축 및 메모리 할당 동작을 설명하는 도면이다.
도 3을 참조하면, S310 단계에서 임베디드 시스템의 컨트롤러는 메모리 압축을 위한 조건을 설정할 수 있다. 메모리 압축을 위한 조건으로 메모리 압축 동작을 시작하는 트리거(trigger) 조건 및 메모리 압축의 대상인 태스크(task) 후보를 설정하는 조건이 설정될 수 있다.
시스템의 사용 가능 메모리(system available memory)가 정의된 임계 값 보다 내려가면(본 발명의 실시 예에서 사용 가능 메모리가 정의된 임계 값 보다 내려간다는 의미는 사용 중인 메모리가 정의된 임계 값을 초과하는 개념과 유사하게 사용될 수 있다.) 메모리 압축 동작을 시작하도록 설정할 수 있다. 또는 메모리 할당 요청을 받는 경우, 할당 받은 메모리 보다 사용 가능한 메모리 공간의 크기가 작은 경우 메모리 압축 트리거 조건으로 정의할 수도 있다. 또한, 특정 시점에서 자주 사용하지 않는 것으로 계획된 태스크(task)를 압축 대상 태스크(task)로 설정하여 태스크 압축에 이용할 수 있다. 즉, 스케줄링 빈도(scheduling frequency)가 낮은 태스크를 압축을 위한 태스크(task) 후보로 설정할 수 있다. 이 경우 압축 대상 태스크(task)를 선택하는 조건만 설정하고, 압축 대상 태스크(task)는 압축 동작이 트리거 되었을 때 결정하도록 설정할 수 있다. 또한, 압축 대상 태스크(task) 선택 조건뿐만 아니라 압축 대상 태스크(task)까지 미리 설정할 수도 있을 것이다.
즉, 본 발명의 실시 예에서는 시스템의 사용 가능한 메모리(system available memory)의 임계 값(threshold)에 대한 정보 및 태스크(task)의 스케줄링 빈도에 기반하여 태스크(task) 후보를 저장하고, 저장된 정보를 이용하여 압축 시점 및 압축 대상 태스크(task)를 판단하여 메모리 압축에 이용할 수 있다.
S320 단계에서 스케줄러는 적어도 하나의 태스크(task)에 대하여 메모리 할당 요청을 수신할 수 있다.
S330 단계에서 스케줄러는 메모리 압축 트리거 동작을 만족하는지 판단할 수 있다. 메모리 압축 트리거 동작은 S310 단계에서 설정된 메모리 압축 조건으로, 현재 사용중인 메모리 양이 기 설정된 임계 값을 초과하는지를 판단할 수 있다. 또는 사용 가능한 메모리 양이 기 설정된 임계 값 미만인지를 판단할 수도 있다. S330 단계에서 트리거 조건을 만족하는 것으로 판단하면, S340 단계 이하로 진행하여 압축 후 할당 요청을 받은 메모리를 할당한다. S330 단계에서 압축 트리거 조건을 만족하지 않는 것으로 판단하면, S360 단계로 진행하여 할당 요청을 받은 메모리를 할당할 수 있다.
메모리 압축 트리거 조건을 만족하면, S340 단계에서 스케줄러는 메모리에 할당된 태스크(task)에 대해서 압축 동작을 수행할 수 있다. S340 단계에서 적어도 하나의 태스크(task)를 식별하여 압축 동작을 수행할 수 있다. 또한, S310 단계에서 미리 설정된 태스크(task) 후보에 대하여 압축 동작을 수행할 수도 있다. 즉, 미리 결정된 태스크(task)에 대해서만 압축 동작을 수행할 수도 있고, 설정된 태스크(task) 결정 조건에 기반하여 압축을 하고자 하는 태스크(task)를 결정하고, 결정된 태스크(task)에 대하여 압축 동작을 수행할 수도 있다. 할당된 메모리에 대한 압축을 통하여 프리 메모리(free memory)를 확보할 수 있다.
S360 단계에서 스케줄러는 할당 요청을 받은 메모리를 메모리의 힙(heap) 영역에 할당할 수 있다. 이 때, 스케줄러는 압축 동작을 통해 확보된 영역에 할당 요청을 받은 메모리를 할당할 수 있고, 압축 동작과 무관하게 확보되어 있던 공간에 메모리를 할당할 수도 있다.
상기에서는 S320 단계 이후에 S330 단계가 위치하는 것으로 설명하였으나, 반드시 이에 한정되는 것은 아니다. 즉, 메모리 할당 요청을 수신하기 전에 메모리 압축 트리거 조건을 만족하는지 미리 판단할 수 있다. 메모리 압축 트리거 조건을 만족하는 경우 미리 S340 단계의 압축 동작을 수행하여 공간을 확보 해 놓을 수 있으며, 추후 메모리 할당 요청이 있는 경우 미리 확보 해 놓은 메모리 공간에 할당 요청을 받은 메모리를 할당할 수도 있다. 또한, 메모리 할당 및 압축 동작은 반복적으로 이루어 질 수 있기 때문에, 이와 같은 압축 및 할당 동작이 반복적으로 이루어 질 수 있다.
도 4는 본 발명의 일 실시 예에 따른 메모리 맵을 설명하는 도면이다. 도 4의 메모리 맵은 본 발명의 일 실시 예로 메모리 맵의 구성을 도 4의 구성에 한정하지 않는다. 도 4의 메모리 맵은 논리적 메모리 맵 구성이다. 도 4에서 도면부호 410은 압축 전 메모리 맵의 구성이며, 도면부호 450은 압축 후 메모리 맵의 구성이다. TCi는 태스크(task) Ti에 대한 코드 영역, TDi는 태스크(task) Ti에 대한 데이터 영역, TSi는 작업 Ti에 대한 스택(stack)을 나타낸다. 예비 메모리 블록(reserved)은 프로그램 실행 중 일어날 수 있는 데드 록(dead lock) 상황을 극복하기 위해 사용될 수 있고, 압축과 압축해제 기능의 버퍼로서 사용될 수 있다. 예비 메모리 블록의 크기는 시스템 요구사항에 따라 설계될 수 있다.
도 4의 메모리 맵에서는 태스크(task)를 구성하는 속성 정보에 따라 메모리 맵이 구성되었다. 즉, 각 태스크(task)의 태스크(task) 코드 영역이 서로 이웃하게 위치하고, 각 태스크(task)의 태스크(task) 데이터 영역이 서로 이웃하게 위치하며, 각 태스크(task)의 태스크(task) 섹션이 서로 이웃하게 위치하도록 메모리 맵을 구성할 수 있다.
도면부호 450은 태스크(task) 도 410의 태스크(task) 중 태스크(task) T1과 태스크(task) T2가 압축 대상이 되어 메모리가 압축된 메모리 맵이다. 회색 블록(음영이 짙은 블록, 451~456)은 T1과 T2를 압축하여 얻어진 이용 가능한 메모리 블록이다. 논리적으로 상기 이용 가능한 블록들은 사슬 형태 연결될 수 있고, 힙 영역과 연결될 수 있다. 압축을 통해 확보된 이용 가능한 블록(451~456)들은 새로운 메모리 사용 요청이 있는 경우 할당 요청을 받은 메모리를 할당하는데 사용될 수 있다. 또한, 회색 블록(451~456)은 스와핑 부담을 최소화 하기 위하여, 수명이 짧은 메모리를 할당하는데 사용하도록 설정할 수 있다.
메모리 맵에서 코드 영역은 동적으로 재생될 수 있다. 또한, 약간의 구성의 변화(예를 들어, MPU 구성을 사용하여)가 가능하다. 예를 들어, 속성이 읽기만 할 수 있는 블록에서, 읽고 쓰기를 할 수 있는 블록으로 속성을 변경할 수 있다. 또한, TCi는 재배치될 수 없으므로, 맵을 관리할 때 정적으로 연결된 코드에 대한 코드 영역에 대하여 주의해야 한다. 또한, TDi 및 TSi 에서도 재배치가 가능하지 않을 수 있으므로, 정적으로 연결된 블록에 대하여 맵 관리시 주의해야 한다. 후보 작업의 스택(stack) 사용이 기 설정된 사용 기준(x%) 미만일 때 (예를 들어, 10% 라고 할 때), 최적화에 따라 압축을 피할 수 있다.
도 5는 본 발명의 일 실시 예에 따른 메모리 압축 및 압축 해제 동작을 설명하는 도면이다.
S510 단계에서 임베디드 시스템은 메모리 압축을 위한 조건을 설정할 수 있다. 메모리 압축을 위한 조건은 상기에서 설명한 메모리 압축을 위한 트리거 조건 및 메모리 압축 대상 태스크(task)를 판단하기 위한 조건이다. 이에 대한 설명은 전술하였으므로, 이에 대한 설명은 전술한 설명으로 대체한다. 메모리 압축 트리거 조건은 시스템 메모리 수용량(SMC, System Memory Capacitance)와 혼용하여 사용할 수 있다. 또한, 메모리 압축 대상 태스크(task)를 판단하는 조건은 스케줄링 빈도(SFi, Ti에 대한 scheduling Frequency)에 기반하여 판단할 수 있다. SMC은 기본적으로 프로그램 실행 중 어느 시점에 남은 힙 메모리 크기이다.
S520 단계에서 메모리 압축 트리거 조건을 만족하는지 판단할 수 있다. 임베디드 시스템 기 설정된 SMC 조건을 만족하면 특정 태스크(task)에 대한 압축 동작을 수행하도록 트리거 시킬 수 있다. SMC 조건을 만족하지 않으면 주기적으로 또는 비 주기적으로 SMC 조건을 만족하는지에 대하여 판단할 수 있다. 한편, 도 5에서 SMC 조건을 만족하지 않는 경우 메모리 할당 요청이 있는 경우에 대해서는 도시하지 않았다. 하지만 SMC 조건을 만족하지 않은 경우는 힙(heap) 메모리에 여유가 있는 것이므로, 메모리 할당 요청이 있는 경우 여유 메모리 공간에 할당 요청을 받은 메모리를 할당할 수 있을 것이다.
SMC 조건을 만족하는 것으로 판단하면 S530 단계로 진행한다. S530 단계에서는 S510 단계에서 설정된 압축 대상 태스크(task) 판단 조건에 기반하여 압축 대상 태스크(task)를 결정할 수 있다. 조건은 스케줄링 빈도(SFC)일 수 있다. 기 설정된 조건에 따라 스케줄링 빈도가 낮은 태스크(task)를 압축 대상 태스크(task)로 결정할 수 있다.
S540 단계에서 결정된 태스크(task)에 대한 압축을 수행할 수 있다. 복수의 태스크(task)가 결정되는 경우 각 태스크(task)에 대하여 순차적으로 압축이 수행될 수 있다. 또한, 하나의 태스크(task)에 대하여 각각 코드 영역, 데이터 영역, 시스템 영역이 압축될 수 있다. SMC에 도달하면 각 태스크(task)의 스케줄링 정보는 리셋될 수 있다. 즉, SMC 도달 전 까지 각 태스크(task)의 스케줄링 빈도를 이용하고, SMC에 도달하면 각 태스크(task)의 스케줄링 빈도 정보를 리셋하여, 다시 SMC에 도달하였을 때는 리셋 이후 각 태스크의 스케줄링 빈도 값에 기반하여 압축하고자 하는 태스크(task)를 결정할 수 있다. 태스크(task) Ti의 스택 영역(TSi)은 스케줄러에 필수적인 스케줄링 정보를 제외하고 압축될 수 있다. 각 태스크(task)는 태스크 제어 블록(TCB, task control block)을 포함하고 있다. TCB는 압축 유무 식별자를 포함할 수 있다. 압축 및 압축 해제 이후 각 태스크(task)의 TCB에는 압축 정보를 업데이트 할 수 있다.
S550 단계에서 압축된 태스크(task)를 저장할 수 있다. 각 태스크(task)의 코드 영역(TCi), 데이터 영역(TDi), 스택 영역(TSi)은 압축 후 같은 메모리 위치에 저장된다.
이와 같은 방법으로 메모리에 할당된 태스크(task)가 압축될 수 있다. 이하 단계에서는 압축된 태스크(task)에 대한 스케줄링 요청이 있는 경우 압축 해제 동작에 대하여 설명한다.
S560 단계에서 압축된 태스크(task)에 대한 스케줄 요청을 수신할 수 있다. 스케줄 요청을 수신하지 않으면, S520 단계로 돌아가 이하 단계를 수행할 수 있다. 스케줄 요청을 수신하면 S570 단계로 진행할 수 있다.
S570 단계에서 스케줄러는 스케줄 요청을 받은 압축된 태스크(task)에 대한 압축 해제가 가능한지 판단할 수 있다. 압축을 해제가 메모리 여유 공간이 있으면 압축된 태스크(task)의 압축을 해제할 수 있고, 여유 공간이 부족하면 압축된 태스크(task)의 압축은 해제할 수 없고 시스템 실패(system failure)가 된다. 압축 해제 가능 여부는 압축을 통해 확보한 여유 공간이 현재 사용되고 있는지 여부에 따라 결정될 수 있다. 대응하는 태스크(task)의 메모리 압축을 통해 확보한 메모리 위치가 현재 사용되고 있지 않다면, 해당 태스크(task)의 압축 해제가 가능하다. 만약 대응하는 태스크(task)의 메모리 압축을 통해 확보한 메모리 위치가 현재 사용되고 있다면, 해당 태스크(task)는 압축 해제가 불가능한 상황이다. 도 4를 예를 들어 설명하면, T1을 압축 이후 T1을 압축 해제한다고 할 때, T1의 압축을 통해 확보한 451, 453, 455 영역이 현재 사용 중이지 않으면 T1의 압축 해제가 가능하다. 반면 451, 453, 455 영역이 현재 사용 중이면 T1의 압축 해제는 불가능 하다.
압축 해제가 가능한 것으로 판단하면, S580 단계로 진행한다. S580 단계에서 스케줄러는 각 태스크(task)의 압축을 해제할 수 있다. 이 때 각 태스크(task)를 구성하는 데이터 영역, 코드 영역, 스택 영역 각각에 대한 압축을 해제할 수 있다.
압축 해제가 가능하지 않은 것으로 판단하면 S590 단계로 진행한다. S590 단계에서 스케줄러는 압축을 해제할 수 없는 상황이므로 시스템 실패(system failure)로 처리한다. 이는 정적으로 연결된 코드를 재배치할 수 없기 때문에 발생하는 문제이다. 본 발명의 실시 예에서도 이와 같이 시스템 실패(system failure)가 발생할 수 있다. 하지만 본 발명의 실시 예에 따르면 시스템 실패(system failure)가 발생할 확률을 낮출 수 있다.
도 6은 본 발명의 일 실시 예에 따른 알고리즘을 설명하는 도면이다. 도 5에서 설명한 메모리 압축 및 압축 해제 동작은 도 6에서 설명하는 방법으로 구현될 수 있다. 다만, 도 6의 예는 일 구현 예일 뿐이므로, 실시 예를 이에 한정하는 것은 아니다.
도 7는 본 발명의 일 실시 예에 따른 다른 메모리 맵을 설명하는 도면이다.
도 7의 메모리 맵은 본 발명의 일 실시 예로 메모리 맵의 구성을 도 7의 구성에 한정하지 않는다. 도 7의 메모리 맵은 논리적 메모리 맵 구성이다. 도 7에서 도면부호 710은 압축 전 메모리 맵의 구성이며, 도면부호 750은 압축 후 메모리 맵의 구성이다. TCi는 태스크(task) Ti에 대한 코드 영역, TDi는 태스크(task) Ti에 대한 데이터 영역, TSi는 작업 Ti에 대한 스택(stack)을 나타낸다. 도 7에서는 RSi 영역을 더 포함할 수 있다. Ri 영역은 태스크(task) Ti에 대한 예비 메모리 블록 영역일 수 있다.
도 7에서는 동일한 태스크(task)의 RSi, TCi, TDi, TSi를 이웃하게 배치할 수 있다. 즉, 각 태스크(task) 별로 태스크(task)를 구성하는 각 영역이 이웃하게 위치한다.
도면부호 750은 태스크(task) 도 710의 태스크(task) 중 태스크(task) T1과 태스크(task) T2가 압축 대상이 되어 메모리가 압축된 메모리 맵이다. 회색 블록(음영이 짙은 블록, 751~756)은 T1과 T2를 압축하여 얻어진 이용 가능한 메모리 블록이다. 압축을 통해 확보된 이용 가능한 블록(751~756)들은 새로운 메모리 사용 요청이 있는 경우 할당 요청을 받은 메모리를 할당하는데 사용될 수 있다. 각 태스크(task)는 각 태스크의 예비 영역(RSi)에 압축된다.
도 7의 실시 예에서 메모리를 압축하고, 압축을 해제하는 과정에 대하여, 압축을 통해 확보한 공간이 사용되었는지 여부에 따라 경우를 나누어 설명한다.
태스크 T1을 기준으로 설명한다. T1 압축을 통해 T1의 압축 데이터는 RS1(757)에 압축될 수 있다. 압축 이후 확보된 공간(751~753)에 새로운 데이터가 할당되지 않으면, 기존 T1의 데이터는 삭제되지 않는다. 따라서 T1의 압축 이후에도, T1의 압축으로 확보된 공간에 새로운 데이터가 할당되지 않았다면, 추후 T1의 스케줄링 요청이 있는 경우, RS1(757)에 압축된 데이터를 압축해제 하지 않고, 바로 도면 부호 751~753 블록을 이용할 수 있다.
만약 T1의 압축을 통해 확보된 공간(751~753)에 압축 이후 새로운 데이터가 할당되었다면, 기존 블록(751~753)에 할당된 정보는 삭제된다. 따라서 T1에 대한 스케줄링 요청이 있는 경우 RS1(757)에 압축된 데이터의 압축을 해제해야 스케줄링이 가능하다.
새로운 데이터가 할당되었으나, 현재 블록(751~753)이 다른 메모리 할당에 사용되고 있지 않으면 RS1(757)에 압축된 데이터를 블록(751~753)에 압축 해제하여 스케줄링을 수행할 수 있다. 반면, 새로운 데이터가 할당되었고, 현재 계속 블록(751~753)이 다른 메모리 할당에 사용 중이라면 압축을 해제할 공간이 없으므로 T1의 압축을 해제할 수 없다. 이 경우 T1의 스케줄 요청에 대하여 시스템 실패(system failure)로 처리할 수 있다.
도 7의 실시 예는 압축을 통해 확보한 공간이 사용여부에 따른 압축 해제 동작에서 차이가 있을 뿐, 나머지 동작은 도 2 내지 도 6을 통해 설명한 실시 예의 각 동적을 동일하게 적용할 수 잇다.
도 8 본 발명의 일 실시 예에 따른 알고리즘을 설명하는 도면이다. 도 7에서 설명한 메모리 압축 및 압축 해제 동작은 도 8에서 설명하는 방법으로 구현될 수 있다. 다만, 도 8의 예는 일 구현 예일 뿐이므로, 실시 예를 이에 한정하는 것은 아니다.
본 발명의 실시 예에 따라 개선된 시스템의 개선된 동작에 대하여 수학적으로 설명하면 다음과 같다. 기본적인 시스템에서 요청된 메모리 블록 크기가 이용가능 한 힙(heap) 메모리의 크기 보다 작을 확률을 p라고 한다.
만약 N개의 태스크(task)가 존재하고, N 개의 태스크(task) 중 기 설정된 스케줄링 빈도 보다 낮은 태스크(task) 유한 집합 M을 설정할 수 있다.
태스크(task) 요청은 태스크(task)에 대한 이벤트가 존재할 때 스케줄링 될 수 있고, 이 때 이벤트 확률은 1/S 이다(S는 시스템 내의 전체 이벤트 개수). 따라서 특정 태스크(task)가 스케줄링 될 확률은 1/S이다.
특정 태스크(task)가 유한 집합 M에 속할 확률은 1/M 이다.
메모리 블록이 태스크(task)의 유한 집합 세트로부터 할당되고, 같은 태스크(task)가 스케줄링 될 확률은 (1/S) * (1/M) 이다.
따라서 시스템의 시스템 실패(system failure) 확률은 p * (1/S) * (1/M) 이다. 본 발명의 실시 예에 따르면 상기와 같이 시스템 실패 확률을 줄일 수 있다.
그리고 본 명세서와 도면에 개시된 실시 예들은 본 발명의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (20)

  1. 임베디드 시스템(embedded system)에서 메모리 관리 방법에 있어서,
    메모리 사용률에 기반한 메모리 압축 관련 정보를 설정하는 단계;
    상기 메모리 압축 관련 정보 및 현재 메모리 사용률에 기반하여 메모리 압축이 필요한지 판단하는 단계; 및
    메모리 압축이 필요하다고 판단하면, 메모리에 할당된 적어도 하나의 압축 대상 태스크(task)에 포함되는 태스크 코드(code) 영역, 태스크 데이터(data) 영역 및 태스크 스택(stack) 영역을 각각 압축하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 압축 관련 정보는 상기 압축 대상 태스크 식별 정보를 포함하고,
    각 태스크의 스케줄링 빈도 정보 및 상기 압축 대상 태스크 식별 정보에 기반하여, 상기 압축 대상 태스크를 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 상기 압축하는 단계는,
    압축된 태스크의 태스크 제어 블록(Task Control Block, TCB)에 압축 여부를 식별하는 식별 정보를 업데이트 하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    적어도 하나의 태스크에 대한 메모리 할당 요청을 수신하는 단계;
    상기 할당 요청을 받은 메모리 크기와 이용 가능한 메모리 크기를 비교하는 단계; 및
    상기 할당 요청을 받은 메모리 크기 보다 이용 가능한 메모리 크기가 더 작으면, 메모리에 할당된 적어도 하나의 태스크를 압축하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서, 상기 메모리 압축 관련 정보는 메모리 압축 트리거 조건을 포함하고,
    상기 메모리 압축 트리거 조건은 압축 동작을 시작하기 위한 메모리 사용률의 임계 값 정보를 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    압축된 태스크에 대한 적어도 하나의 스케줄링(scheduling) 요청이 있는지 판단하는 단계;
    스케줄링 요청이 있으면, 스케줄링 요청을 받은 태스크의 압축 해제가 가능한지 판단하는 단계; 및
    압축 해제가 가능하면, 압축된 태스크의 압축 전 메모리 위치에 상기 스케줄링 요청을 받은 태스크의 압축을 해제하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    압축된 태스크에 대한 적어도 하나의 스케줄링 요청이 있는지 판단하는 단계;
    스케줄링 요청이 있으면, 상기 태스크가 압축된 이후 상기 압축된 태스크의 압축 전 위치에 새로운 메모리 블록이 할당되었는지 판단하는 단계; 및
    새로운 메모리 블록이 할당되지 않았으면, 상기 태스크의 압축을 해제하지 않고, 상기 태스크의 압축 전 위치의 메모리 블록을 스케줄링 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제7항에 있어서, 새로운 메모리 블록이 할당된 것으로 판단하면,
    현재 상기 압축된 태스크의 압축 전 위치에 새로운 태스크에 대한 메모리 블록이 할당되어 있는지 판단하는 단계;
    현재 새로운 태스크에 대한 메모리 블록이 할당되어 있지 않으면, 상기 압축된 태스크의 압축 전 위치에 상기 압축된 태스크의 압축을 해제하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서, 현재 새로운 태스크에 대한 메모리 블록이 할당되어 있으면,
    상기 압축된 태스크에 대한 스케줄링 요청을 시스템 실패(system failure)로 처리하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 제7항에 있어서, 상기 압축하는 단계는,
    메모리에서 기 설정된 각 태스크의 예비 영역에 각 태스크를 압축하는 것을 특징으로 하는 방법.
  11. 메모리를 동적으로 관리하는 임베디드 시스템(embedded system)에 있어서,
    상기 임베디드 시스템의 동작을 위한 다양한 명령어 및 데이터들이 저장되는 메모리; 및
    메모리 사용률에 기반한 메모리 압축 관련 정보를 설정하고, 상기 메모리 압축 관련 정보 및 현재 메모리 사용률에 기반하여 메모리 압축이 필요한지 판단하며, 메모리 압축이 필요하다고 판단하면, 메모리에 할당된 적어도 하나의 압축 대상 태스크(task)에 포함되는 태스크 코드(code) 영역, 태스크 데이터(data) 영역 및 태스크 스택(stack) 영역을 각각 압축하도록 제어하는 컨트롤러를 포함하는 것을 특징으로 하는 임베디드 시스템.
  12. 제11항에 있어서, 상기 압축 관련 정보는 상기 압축 대상 태스크 식별 정보를 포함하고,
    상기 컨트롤러는 각 태스크의 스케줄링 빈도 정보 및 상기 압축 대상 태스크 식별 정보에 기반하여, 상기 압축 대상 태스크를 결정하도록 제어하는 것을 특징으로 하는 임베디드 시스템.
  13. 제11항에 있어서, 상기 컨트롤러는,
    압축된 태스크의 태스크 제어 블록(Task Control Block, TCB)에 압축 여부를 식별하는 식별 정보를 업데이트 하도록 제어하는 것을 특징으로 하는 임베디드 시스템.
  14. 제11항에 있어서, 상기 컨트롤러는,
    적어도 하나의 태스크에 대한 메모리 할당 요청을 수신하고, 상기 할당 요청을 받은 메모리 크기와 이용 가능한 메모리 크기를 비교하며, 상기 할당 요청을 받은 메모리 크기 보다 이용 가능한 메모리 크기가 더 작으면, 메모리에 할당된 적어도 하나의 태스크를 압축하도록 제어하는 것을 특징으로 하는 임베디드 시스템.
  15. 제11항에 있어서, 상기 메모리 압축 관련 정보는 메모리 압축 트리거 조건을 포함하고, 상기 메모리 압축 트리거 조건은 압축 동작을 시작하기 위한 메모리 사용률의 임계 값 정보를 포함하는 것을 특징으로 하는 임베디드 시스템.
  16. 제11항에 있어서, 상기 컨트롤러는,
    압축된 태스크에 대한 적어도 하나의 스케줄링(scheduling) 요청이 있는지 판단하고, 스케줄링 요청이 있으면, 스케줄링 요청을 받은 태스크의 압축 해제가 가능한지 판단하며, 압축 해제가 가능하면, 압축된 태스크의 압축 전 메모리 위치에 상기 스케줄링 요청을 받은 태스크의 압축을 해제하도록 제어하는 것을 특징으로 하는 임베디드 시스템.
  17. 제11항에 있어서, 상기 컨트롤러는,
    압축된 태스크에 대한 적어도 하나의 스케줄링 요청이 있는지 판단하고, 스케줄링 요청이 있으면, 상기 태스크가 압축된 이후 상기 압축된 태스크의 압축 전 위치에 새로운 메모리 블록이 할당되었는지 판단하며, 새로운 메모리 블록이 할당되지 않았으면, 상기 태스크의 압축을 해제하지 않고, 상기 태스크의 압축 전 위치의 메모리 블록을 스케줄링 하도록 제어하는 것을 특징으로 하는 임베디드 시스템.
  18. 제17항에 있어서, 상기 컨트롤러는,
    새로운 메모리 블록이 할당된 것으로 판단하면, 현재 상기 압축된 태스크의 압축 전 위치에 새로운 태스크에 대한 메모리 블록이 할당되어 있는지 판단하고, 현재 새로운 태스크에 대한 메모리 블록이 할당되어 있지 않으면, 상기 압축된 태스크의 압축 전 위치에 상기 압축된 태스크의 압축을 해제하도록 제어하는 것을 특징으로 하는 임베디드 시스템.
  19. 제18항에 있어서, 상기 컨트롤러는,
    현재 새로운 태스크에 대한 메모리 블록이 할당되어 있으면, 상기 압축된 태스크에 대한 스케줄링 요청을 시스템 실패(system failure)로 처리하도록 제어하는 것을 특징으로 하는 임베디드 시스템.
  20. 제17항에 있어서, 상기 컨트롤러는,
    메모리에서 기 설정된 각 태스크의 예비 영역에 각 태스크를 압축하도록 제어하는 것을 특징으로 하는 임베디드 시스템.
KR1020140064298A 2014-05-28 2014-05-28 임베디드 시스템에서 메모리 관리 장치 및 방법 KR20150136811A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140064298A KR20150136811A (ko) 2014-05-28 2014-05-28 임베디드 시스템에서 메모리 관리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140064298A KR20150136811A (ko) 2014-05-28 2014-05-28 임베디드 시스템에서 메모리 관리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20150136811A true KR20150136811A (ko) 2015-12-08

Family

ID=54872767

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140064298A KR20150136811A (ko) 2014-05-28 2014-05-28 임베디드 시스템에서 메모리 관리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20150136811A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020017898A1 (en) * 2018-07-19 2020-01-23 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof
US10679618B2 (en) 2016-11-03 2020-06-09 Samsung Electronics Co., Ltd. Electronic device and controlling method thereof

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10679618B2 (en) 2016-11-03 2020-06-09 Samsung Electronics Co., Ltd. Electronic device and controlling method thereof
US11908465B2 (en) 2016-11-03 2024-02-20 Samsung Electronics Co., Ltd. Electronic device and controlling method thereof
WO2020017898A1 (en) * 2018-07-19 2020-01-23 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof
US11521038B2 (en) 2018-07-19 2022-12-06 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof

Similar Documents

Publication Publication Date Title
US9081702B2 (en) Working set swapping using a sequentially ordered swap file
US6038571A (en) Resource management method and apparatus for information processing system of multitasking facility
US7565507B2 (en) Cooperative memory management allowing program request and release memory as needed
US5463776A (en) Storage management system for concurrent generation and fair allocation of disk space among competing requests
JP6138774B2 (ja) コンピュータにより実行される方法及びコンピュータシステム
US6857047B2 (en) Memory compression for computer systems
WO2007099483A2 (en) Method and apparatus for dynamic resizing of cache partitions based on the execution phase of tasks
JP5980916B2 (ja) コンピュータにより実行される方法及びコンピュータシステム
KR100791296B1 (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
CN111638953B (zh) 一种实现gpu虚拟化的方法、装置和存储介质
WO2008006674A1 (en) Reserve pool management in virtualized storage systems
CN112231238B (zh) 使用存储器压缩来减少存储器提交开销
CN111522659B (zh) 一种空间使用方法和装置
CN114207571A (zh) 计算装置及其操作方法
KR20150136811A (ko) 임베디드 시스템에서 메모리 관리 장치 및 방법
US20100299672A1 (en) Memory management device, computer system, and memory management method
KR20060108431A (ko) 가변적인 동적 메모리 관리 방법 및 이를 포함하는임베디드 시스템
CN112654965A (zh) 动态模块的外部分页和交换
US8607245B2 (en) Dynamic processor-set management
US10846023B2 (en) Storage device and storage area management method for reducing garbage collection processing
CN112000471B (zh) 内存优化方法及装置
JP2007317176A (ja) 端末装置
US11693782B2 (en) Cache management method using object-oriented manner and associated microcontroller
CN116382574A (zh) Buffer管理方法、装置及存储设备
US9940053B2 (en) Information processing device, information processing system, memory management method, and program recording medium

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination