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

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

Info

Publication number
KR20200027204A
KR20200027204A KR1020180105223A KR20180105223A KR20200027204A KR 20200027204 A KR20200027204 A KR 20200027204A KR 1020180105223 A KR1020180105223 A KR 1020180105223A KR 20180105223 A KR20180105223 A KR 20180105223A KR 20200027204 A KR20200027204 A KR 20200027204A
Authority
KR
South Korea
Prior art keywords
memory
area
user
data
stack
Prior art date
Application number
KR1020180105223A
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 KR1020180105223A priority Critical patent/KR20200027204A/ko
Priority to US17/266,758 priority patent/US11907761B2/en
Priority to PCT/KR2019/011298 priority patent/WO2020050578A1/ko
Publication of KR20200027204A publication Critical patent/KR20200027204A/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
    • 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
    • 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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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

Abstract

본 발명은 전자장치 및 그 제어방법에 관한 것으로서, 전자장치는, 저장부; 저장부에 저장된 프로그램을 실행하는 프로세서; 및 프로그램의 실행에 대응하여, 프로그램을 로드하는 메모리를 포함하며, 프로그램은, 운영체제 및 응용프로그램을 포함하고, 응용프로그램의 프로세스에 유저스택이 할당되고, 프로세스의 실행에 따라 유저스택의 데이터가 메모리의 일 영역에 저장되며, 운영체제는, 유저스택의 데이터에 대한 변동이 중지된 동안, 유저스택의 데이터 중에서 미사용될 데이터가 저장된 메모리의 영역을 반환하여, 반환된 영역을 다른 프로세스가 사용할 수 있도록 한다. 이에 의하여, 유저스택의 데이터 중에서 보존할 필요가 없는 데이터가 할당된 메모리의 영역을 적절히 반환함으로써, 실질적으로 메모리를 절감하는 효과가 있다.

Description

전자장치 및 그 제어방법{ELECTRONIC APPARATUS AND METHOD FOR CONTROLLING THEREOF}
본 발명은 전자장치 및 그 제어방법에 관한 것으로서, 보다 상세하게는 프로세스의 실행에 따라 데이터가 로드되는 메모리를 관리하는 전자장치 및 그 제어방법에 관한 것이다.
운영체제(operating system, OS)는 전자장치에서 사용자가 하드웨어를 보다 용이하게 사용할 수 있도록 인터페이스를 제공해 주는 프로그램들의 집합으로서, 유저(user) 모드와 커널(kernel) 모드로 구분되어 동작한다.
유저모드에서는 사용자 응용프로그램으로서 프로세스가 동작한다.
커널모드에서는 태스크 매니지먼트, 메모리 매니지먼트, 파일 시스템, 디바이스 컨트롤 등의 서브 시스템들이 동작한다. 이들은 하드웨어에 대한 제어를 담당하고, 프로세스가 동작하는데 필요한 서비스를 제공한다.
프로세스는 하나 이상의 태스크(task)로 구성되며, 유저모드에서는 각 태스크 단위로 유저스택(user stack)이 생성된다. 프로세스가 실행되면, 태스크가 코드를 실행하는 과정에서 생성된 유저스택에 메모리 영역이 할당된다.
스택포인터(stack pointer, SP)는 스택에 데이터가 채워진 위치를 가리키는 레지스터이다. 다시 말해, 스택포인터가 가리키는 곳까지가 의미 있는 데이터가 채워진 영역이고, 그 이후부터는 비어있거나, 의미 없는 데이터 또는 프로세스가 미사용하는 데이터가 있는 영역이 된다. 의미 있는 데이터는 프로세스가 사용중인 데이터를 지칭한다.
일반적으로 프로세스는 그 실행 초반에는 초기화 과정으로 인해 함수를 호출하면서 메모리에서 스택에 할당되는 범위가 동적으로 늘어난다. 이후 함수가 리턴 되면 스택의 크기는 다시 줄어든다.
따라서, 초기화가 완료된 이후 대부분의 프로세스는 스택의 크기가 줄어들게 되고, 메모리 영역이 할당된 유저스택에는 추후 미사용될 데이터 즉, 보존할 필요가 없는 데이터도 포함되어 있을 가능성이 존재한다.
이 경우 해당 데이터가 불필요하게 메모리를 점유함으로써 다른 프로세스에서 사용 가능한 메모리 영역이 줄어들게 되고, 이는 메모리 영역을 비효율적으로 사용하게 되는 결과를 초래할 수 있다.
본 발명은, 상기한 문제점을 해결하고자 하는 것으로, 소정 프로세스의 초기화가 완료된 이후, 보존할 필요가 없는 데이터가 불필요하게 메모리 영역을 점유하지 않도록 관리함으로써, 메모리 영역의 활용도를 높일 수 있는 전자장치 및 그 제어방법을 제공하는 것이다.
본 발명 일 실시예에 따른 전자장치는, 저장부; 저장부에 저장된 프로그램을 실행하는 프로세서; 및 프로그램의 실행에 대응하여, 프로그램을 로드하는 메모리를 포함하며, 프로그램은, 운영체제 및 응용프로그램을 포함하고, 응용프로그램의 프로세스에 유저스택이 할당되고, 프로세스의 실행에 따라 유저스택의 데이터가 메모리의 일 영역에 저장되며, 운영체제는, 유저스택의 데이터에 대한 변동이 중지된 동안, 유저스택의 데이터 중에서 미사용될 데이터가 저장된 메모리의 영역을 반환하여, 반환된 영역을 다른 프로세스가 사용할 수 있도록 한다. 이에 의하여, 유저스택의 데이터 중에서 보존할 필요가 없는 데이터가 할당된 메모리의 영역을 반환함으로써, 메모리를 효율적으로 사용할 수 있다.
운영체제는, 프로세스가 유저모드에서 커널모드로 진입하는 때 메모리의 영역을 반환할 수 있다. 이에, 프로세스의 실행과정에서 미사용될 데이터가 저장된 메모리의 영역이 적절하게 반환된다.
반환되는 메모리의 영역은 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 결정될 수 있다. 이에, 보존할 필요가 없는 미사용될 데이터가 저장된 영역을 선택적으로 반환 가능하다.
프로세스는 하나 이상의 태스크로 구성되며, 프로세스의 실행에 따라 각 태스크 단위로 유저스택이 생성되어, 생성된 유저스택에 메모리의 일 영역이 할당될 수 있다.
운영체제는, 실행중인 태스크가 유저모드에서 커널모드로 진입하는 때 실행중인 태스크에 대해 생성된 유저스택이 할당된 메모리의 영역 중에서 미사용될 데이터가 저장된 메모리의 영역을 반환할 수 있다.
실행중인 태스크로부터 시스템 콜 또는 인터럽트가 발생하면, 운영체제가 유저모드에서 커널모드로 진입할 수 있다.
실행중인 태스크가 유저모드에서 커널모드로 진입하면, 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 반환되는 메모리의 영역이 결정될 수 있다.
운영체제는, 프로세스가 커널모드로 동작하는 동안, 대기중인 태스크들의 유저스택에 할당된 메모리의 영역 중에서 미사용될 데이터가 저장된 메모리의 영역을 반환할 수 있다. 이에, 대기중인 다수의 태스크에 대해 할당된 메모리의 영역을 효율적으로 반환할 수 있다.
운영체제는, 프로세스가 커널모드로 동작하는 동안, 소정 데몬을 실행하여 대기중인 태스크들의 메모리의 영역을 반환할 수 있다.
대기중인 태스크들의 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 반환되는 메모리의 영역이 결정될 수 있다.
운영체제는, 프로세스가 커널모드로 동작중인 동안 메모리의 영역을 반환할 수 있다.
한편, 본 발명 일 실시예에 따른, 저장부, 저장부에 저장된 프로그램을 실행하는 프로세서 및 프로그램의 실행에 대응하여 프로그램을 로드하는 메모리를 포함하는 전자장치의 제어방법은, 응용프로그램의 실행에 따라 프로세스에 할당되는 유저스택의 데이터를 메모리의 일 영역에 저장하는 단계; 유저스택의 데이터에 대한 변동이 중지된 동안, 운영체제가 유저스택의 데이터 중에서 미사용될 데이터가 저장된 메모리의 영역을 다른 프로세스가 사용할 수 있도록 반환하는 단계를 포함한다. 이에 의하여, 유저스택의 데이터 중에서 보존할 필요가 없는 데이터가 할당된 메모리의 영역을 반환함으로써, 메모리를 효율적으로 사용할 수 있다.
메모리의 영역을 반환하는 단계에서, 프로세스가 유저모드에서 커널모드로 진입하는 때 메모리의 영역을 반환할 수 있다. 이에, 프로세스의 실행과정에서 미사용될 데이터가 저장된 메모리의 영역이 적절하게 반환된다.
메모리의 영역을 반환하는 단계는, 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 반환되는 메모리의 영역을 결정하는 단계를 포함할 수 있다. 이에, 보존할 필요가 없는 미사용될 데이터가 저장된 영역을 선택적으로 반환 가능하다.
프로세스는 하나 이상의 태스크로 구성되며, 프로세스의 실행에 따라 각 태스크 단위로 유저스택이 생성되어, 생성된 유저스택에 메모리의 일 영역이 할당될 수 있다.
실행중인 태스크가 유저모드에서 커널모드로 진입하는 때 실행중인 태스크에 대해 생성된 유저스택이 할당된 메모리의 영역 중에서 미사용될 데이터가 저장된 메모리의 영역을 반환하는 단계를 더 포함할 수 있다.
실행중인 태스크로부터 시스템 콜 또는 인터럽트가 발생하면, 운영체제가 유저모드에서 커널모드로 진입하는 단계; 및 운영체제가 유저모드에서 커널모드로 진입하면, 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 반환되는 메모리의 영역을 결정하는 단계를 더 포함할 수 있다.
프로세스가 커널모드로 동작하는 동안, 대기중인 태스크들의 유저스택에 할당된 메모리의 영역 중에서 미사용될 데이터가 저장된 메모리의 영역을 반환하는 단계를 더 포함할 수 있다. 이에, 대기중인 다수의 태스크에 대해 할당된 메모리의 영역을 효율적으로 반환할 수 있다.
운영체제는, 프로세스가 커널모드로 동작하는 동안, 소정 데몬을 실행하여 대기중인 태스크들의 메모리의 영역을 반환할 수 있다.
대기중인 태스크들의 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 반환되는 메모리의 영역을 결정하는 단계를 더 포함할 수 있다.
상기한 바와 같은 본 발명의 전자장치 및 그 제어방법에 따르면, 유저스택의 데이터 중에서 보존할 필요가 없는 미사용될 데이터가 할당된 메모리의 영역이 반환되도록 함으로써, 메모리를 효율적으로 사용하여 실질적으로 메모리를 절감하는 효과가 있다.
또한, 본 발명은, 태스크가 유저모드로부터 커널모드로 전환될 때 해당태스크에 대해 생성된 유저스택에 할당된 메모리 영역을 반환하도록 제어함으로써, 유저스택의 데이터에 대한 변동이 중지된 동안 효율적으로 미사용되는 메모리의 영역을 반환할 수 있다.
또한, 본 발명은, 커널모드에서 동작하는 소정 데몬에 의해 대기중인 태스크들의 유저스택에 할당된 영역 중에서 미사용될 데이터가 저장된 영역을 일률적으로 반환함으로써, 기존의 메모리 회수(reclaim)와는 상이한 매커니즘에 의해 메모리 영역의 활용도를 향상시키는 효과가 있다.
도 1은 본 발명 일 실시예에 의한 전자장치의 구성을 도시한 블록도이다.
도 2는 본 발명 일 실시예에 따른 전자장치에서 운영체제의 구성을 도시한 도면이다.
도 3 내지 도 6은 본 발명 일 실시예에 따른 전자장치에서 메모리의 구조를 도시한 도면이다.
도 7은 본 발명 일 실시예에 따른 전자장치의 제어방법을 도시한 흐름도이다.
도 8 내지 도 10은 본 발명 일 실시예에 따른 전자장치의 제어방법의 구체적인 동작을 설명하기 위한 도면이다.
도 11은 본 발명 일 실시예 따른 메모리 영역의 할당을 개념적으로 도시한 것이다.
도 12는 본 발명 다른 실시예에 따른 전자장치의 제어방법을 도시한 흐름도이이다.
도 13은 본 발명 다른 실시예에 따른 전자장치의 제어방법의 구체적인 동작을 설명하기 위한 도면이다.
이하에서는 첨부 도면을 참조하여 본 발명의 실시예들을 상세히 설명한다. 도면에서 동일한 참조번호 또는 부호는 실질적으로 동일한 기능을 수행하는 구성요소를 지칭하며, 도면에서 각 구성요소의 크기는 설명의 명료성과 편의를 위해 과장되어 있을 수 있다. 다만, 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 이하의 실시예에 설명된 구성 또는 작용으로만 한정되지는 않는다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다.
본 발명의 실시예에서, 제1, 제2 등과 같이 서수를 포함하는 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용되며, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 또한, 본 발명의 실시예에서, '구성되다', '포함하다', '가지다' 등의 용어는 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 또한, 본 발명의 실시예에서, '모듈' 혹은 '부'는 적어도 하나의 기능이나 동작을 수행하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있으며, 적어도 하나의 모듈로 일체화되어 구현될 수 있다. 또한, 본 발명의 실시예에서, 복수의 요소 중 적어도 하나(at least one)는, 복수의 요소 전부뿐만 아니라, 복수의 요소 중 나머지를 배제한 각 하나 혹은 이들의 조합 모두를 지칭한다.
도 1은 본 발명 일 실시예에 의한 전자장치의 구성을 도시한 블록도이다.
일 실시예에 따르면, 전자장치(1)는, 도 1에 도시된 바와 같이, 저장부(100), 메모리(200) 및 프로세서(300)를 포함한다.
저장부(100)에는 프로그램이 저장된다. 저장부(100)에 저장된 프로그램은 운영체제(OS)와 응용프로그램(이하, 사용자 응용프로그램 또는 유저 어플리케이션 이라고도 한다)을 포함한다. 운영체제는 커널을 포함하거나, 또는 운영체제가 커널에 대응할 수 있다.
커널은 운영체제의 핵심이 되는 프로그램으로, 시스템을 통제하여 운영체제의 다른 부분 및 응용프로그램의 수행에 필요한 다양한 서비스를 제공하고, 시스템을 구성하는 중요한 자원들(프로세서, 메모리, 파일, 주변장치 등)을 관리한다. 본 발명 실시예에서, 후술하는 메모리 영역의 반환은 운영체제 즉, 커널에 의해 수행된다.
본 명세서에서의 운영체제는 시스템 하드웨어를 관리할 뿐 아니라 전자장치(1) 내부의 프로그램을 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어를 의미한다. 또한, 운영체제는 프로그램과 전자장치(1)의 하드웨어 사이의 중재 역할을 수행한다.
응용프로그램은 커널에게 요청하여 하드웨어에 접근 가능하다. 커널은 응용프로그램으로부터 요청을 받으면 하드웨어에 명령을 내리고, 결과를 다시 응용프로그램에게 전달한다.
저장부(100)는 전자장치(1)에 공급되는 전원이 차단되더라도 데이터들이 남아있어야 하며, 변동사항을 반영할 수 있도록 쓰기 가능한 비휘발성 저장장치로 마련된다. 예를 들면, 저장부(100)는 하드디스크(HDD), 플래시메모리(flash memory), EPROM 또는 EEPROM 중 적어도 하나를 포함할 수 있다.
메모리(200)는 저장부(100)에 저장된 프로그램의 실행에 대응하여, 해당 프로그램을 로드한다. 메모리(200)는 휘발성 메모리(volatile memory)로서, DRAM 또는 SRAM 과 같은 랜덤 액세스 메모리(RAM)를 포함한다.
가상메모리(virtual memory)는 RAM 을 관리하는 방식의 하나로, 물리적으로 존재하지 않는 가상적인 메모리 공간을 의미한다. 프로그램이 실행되면, 그에 대응하는 프로세스의 태스크 별로 데이터가 가상메모리로부터 물리메모리(physical memory) 즉, 실제 메모리(200)로 로드된다. 이하에서 특별한 언급이 없으면, ‘메모리’라는 용어는 가상메모리와 구분되는 것으로서 물리메모리를 지칭하기로 한다.
메모리(200)는 메모리 주소(address)를 통해 접근이 가능한데, 주소는 가상메모리의 가상 주소(virtual address)와 물리메모리의 물리 주소(physical address)로 구분할 수 있다. 물리 주소는 메모리(200)의 직접적인 위치를 가리키고 가상 주소는 물리 주소와 상관없이 각 태스크마다 할당하는 논리적인 주소를 뜻하며, 프로세서(300)가 만들어내는 주소이다. 프로그램 안에서 포인터 변수 등이 보여주는 주소는 가상 주소이다.
가상 주소는 커널에 의해 수행되는 내부적인 메모리 관리 기능을 통해 물리 주소로 변환되어 실제 메모리(200)에 매핑된다. 이를 위해, 가상 주소를 물리 주소로 변환하는 기법이 필요하며, 일례로서 페이징(paging) 기법이 사용될 수 있다.
프로세서(300)는 저장부(100)에 저장된 프로그램을 실행한다. 프로세서(300)는 프로그램이 저장된 저장부(100)로부터 프로그램의 적어도 일부를 메모리(200)로 로드하고, 로드된 프로그램을 실행하는 적어도 하나의 범용 프로세서로 구현된다. 예를 들면, 프로세서(300)는 CPU(Central Processing Unit), AP(application processor), 또는 마이크로프로세서(microprocessor) 중 적어도 하나를 포함할 수 있다.
프로세서(300)가 저장부(100)에 저장된 프로그램을 실행하면, 그에 대응하는 프로세스의 각 태스크에 대응하는 데이터가 메모리(200)에 로드됨으로써, 해당 프로세스가 메모리(200)의 영역을 점유하는 상태가 된다.
일 실시예로서, 프로세서(300)의 동작은 전자장치(1)와 별도로 마련되는 컴퓨터프로그램제품(미도시)에 저장된 컴퓨터프로그램으로 구현될 수 있다. 이 경우, 컴퓨터프로그램제품은 컴퓨터프로그램에 해당하는 인스트럭션이 저장된 메모리와, 프로세서를 포함한다. 이에 따라, 전자장치(1)는 별도의 컴퓨터프로그램제품에 저장된 컴퓨터프로그램을 다운로드 및 실행하여, 프로세서(300)의 동작을 수행할 수 있다.
또한, 일 실시예로서, 프로세서(300)의 동작은 기록매체에 저장되며 컴퓨터가 판독 가능한 프로그램으로 구현될 수도 있다. 기록매체에 저장된 프로그램 즉, 데이터는 프로세서(300)에 의해 직접 액세스되어 실행되거나, 컴퓨터 시스템이 상호 결합된 유무선 네트워크를 통해 구현되는 전송매체를 통해 전자장치(1)로 다운로드되어 실행됨으로써, 동작을 수행할 수 있다.
일 실시예에서 전자장치(1)는 방송국의 송출장비로부터 수신되는 방송신호, 방송정보, 또는 방송데이터 중 적어도 하나에 기초한 방송 영상을 처리하는 텔레비전(TV)과 같은 디스플레이장치를 포함한다.
다른 실시예에서 전자장치(1)는 휴대폰, 스마트폰(smart phone), 태블릿(table)과 같은 스마트패드(smart pad), 스마트워치(smart watch)나 머리 장착형 디스플레이(HMD, head mounted display)와 같은 웨어러블 장치(wearable device)를 포함하는 모바일장치를 포함한다.
또 다른 실시예에서 전자장치(1)는 랩탑(laptop) 또는 데스크탑(desktop)을 포함하는 컴퓨터(PC), 셋탑박스(set-top box, STB), 블루레이나 DVD 등의 광학 디스크 재생장치 등의 영상소스를 포함한다.
즉, 본 발명 실시예에 따른 전자장치(1)는 TV, 모바일장치 등의 다양한 형태로 구현될 수 있는 바, 전자장치(1)에 포함되는 구성은 상기한 일 실시예에 의해 한정되지 않고, 일부 구성을 제외하여 구성되거나, 추가적인 다른 구성, 예를 들면 영상을 표시하는 디스플레이나, 외부장치와의 통신을 수행하는 유무선 통신모듈(와이파이(Wi-Fi), 블루투스(Bluetooth) 등)과 같은 전자소자를 더 포함할 수 있다.
프로세서(300)는 응용프로그램이 운영체제에 치명적인 데이터에 접근하여 수정하거나 삭제하는 것을 방지하기 위해 유저모드와 커널모드의 두 가지 모드를 지원한다. 프로세서(300)는 유저모드보다 커널모드에 높은 권한을 부여함으로써, 오동작을 유발하는 응용프로그램이 시스템 전체의 안정성을 해치지 않도록 보장할 수 있다.
도 2는 본 발명 일 실시예에 따른 전자장치에서 운영체제의 구성을 도시한 도면이다. 도 3 내지 도 6은 본 발명 일 실시예에 따른 전자장치에서 메모리의 구조를 도시한 도면이다.
도 2에 도시된 바와 같이, 유저모드에서는 응용프로그램이 실행된다.
유저모드에서 실행중인 프로그램 즉, 프로세스는 하나 이상의 태스크로 구성된다. 각 태스크에는 자신만의 유저스택(user stack)이 할당되고, 해당 스택을 활용하여 프로그램 코드가 수행된다. 본 발명 일 실시예에 따른 전자장치(1)에서 태스크는 메모리(200)를 사용하는 주체가 된다.
또한, 프로세스는 쓰레드(thread) 단위로 수행된다. 다시 말해, 쓰레드는 프로세스가 실행되는 흐름을 나타낸다. 프로세스는 하나 이상의 쓰레드를 가지며, 프로세스에 포함된 쓰레드들은 병렬로 수행될 수 있다. 쓰레드는 자신을 생성한 태스크와 동일한 PID(process identifier)를 갖는다.
즉, 이하에서 태스크는 자원을 소유하는 단위로서, 쓰레드는 수행의 단위로서 이해될 수 있으며, 양자는 프로세스의 수행에 따른 동작을 설명하는 과정에서 서로 혼용될 수 있다.
커널모드에서는 태스크 매니지먼트, 메모리 매니지먼트, 파일 시스템, 디바이스 컨트롤 등의 서브 시스템들이 동작한다. 이들은 하드웨어에 대한 제어를 담당하고, 응용프로그램이 동작하는 데 필요한 서비스를 제공한다. 커널모드에서 동작하는 기능은 시스템 서비스 API(application programming interface) 형태로 구성되어, 유저모드에서 실행되는 응용프로그램에서 이를 사용할 수 있다.
유저모드에서 프로세서(300)에 의해 응용프로그램이 실행되면, 응용프로그램의 프로세스에 대해 각 태스크 단위로 유저스택이 생성되고, 그 생성된 유저스택에 메모리(200)의 일 영역이 할당된다. 할당된 메모리(200)의 영역에는 대응되는 유저스택의 데이터가 기록 즉, 저장 가능하다.
하나의 프로세스에는 하나의 가상 메모리(400)가 할당되어, 각 프로세스는 독립적으로 제공되는 자신만의 가상공간에서 작업할 수 있다.
가상 메모리(400)는 커널과 응용프로그램의 영역이 분리되는 구조를 갖는다. 일 실시예에서, 운영체제는, 도 3에 도시된 바와 같이, 동적 메모리영역의 시작점(P1)을 기준으로 하여 유저영역(응용프로그램 영역 또는 어플리케이션 영역 이라고도 한다)(410)과 커널영역(420)을 구분할 수 있다.
앞서 설명한 바와 같이, 운영체제는 커널모드와 유저모드 두 가지의 프로세서 접근모드를 사용한다. 커널모드는 유저영역(410)의 데이터에도 접근 가능하나, 유저모드는 커널영역(420)의 데이터로 접근이 허용되지 않는다.
유저영역(410)은 프로그램이 동작하기 위해 사용되는 메모리 공간으로, 도 3에 도시된 바와 같이, 코드(code) 영역, 데이터(data) 영역, BSS(block started by symbol) 영역, 힙(heap)영역, 스택(stack) 영역으로 구성된다. 유저영역(410)은 동적메모리 영역으로, 응용프로그램은 실행되면 각 태스크 단위로 유저영역(410)으로부터 영역을 할당받아 사용할 수 있다.
커널영역(420)은 운영체제가 저장되는 메모리 공간으로, 하나의 프로세스에 할당되는 총 메모리 공간 중에서 유저영역(210)을 제외한 나머지 영역이 커널영역(220)이 된다. 커널영역(420)은 단일 영역으로 커널모드를 사용하는 모든 프로세스에서 공유된다.
유저영역(410)의 스택영역(415)은 함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 영역이다. 각 태스크 별로 함수의 호출과 함께 유저스택이 생성되어 스택영역(415)에 할당되며, 함수의 호출이 완료되면 스택은 소멸한다. 이렇게 스택영역(415)에 저장되는 함수의 호출 정보를 스택프레임(stack frame)이라고 하며, 함수가 호출이 되면 스택프레임이 만들어진다.
하나의 프로세스에 속한 태스크/쓰레드들은 스택영역(415)을 제외한 다른 유저영역(410) 즉, 힙영역, 데이터영역, 코드영역은 공유한다.
스택영역(415)은 가상 메모리(400)의 높은 주소에서 낮은 주소의 방향으로 즉, 도 3의 아래에서 위 방향으로 데이터가 쌓이는 형태로 진행되며, LIFO(Last Input First Out)로 동작한다.
프로세서(300)는 스택영역(415)에서 데이터가 채워진 위치를 가리키는 레지스터인 스택포인터(SP)를 갖는다. 도 4를 참조하면, 스택영역(415)의 스택 시작에서 스택포인터(SP)가 가리키는 곳까지가 의미 있는 데이터가 채워진 영역(사용 영역)이고, 그 이후부터 스택 끝까지는 비어있는 영역(미사용 영역)이 된다. 스택영역(415)에 새로운 항목이 추가되거나 스택영역(415)에서 데이터가 제거되면, 스택포인터의 값이 증가하거나 감소한다.
의미 있는 데이터란 프로세스가 사용중인 데이터를 지칭한다. 미사용 영역에는 의미 없는 데이터 또는 프로세스가 미사용하는 데이터가 존재할 수 있으며, 이에 관해서는 도 6에서 자세하게 설명하기로 한다.
유저모드에서 프로세서(300)에 의해 응용프로그램이 실행되면, 도 5에 도시된 바와 같이, 프로세스의 각 태스크 별로 유저스택이 생성되어, 가상메모리(400)의 스택영역(415)에 할당된다.
프로세서(300)는 태스크 별로 가상 메모리(400)에 있는 데이터 중에서 현재 수행에 필요한 부분을 실제 메모리(200)에 기록 즉, 저장한다. 상기와 같은 방식으로, 여러 태스크들이 동시에 실행되면서 서로 다른 태스크에 영향을 주지 않고, 제한된 크기의 물리메모리의 영역을 활용할 수 있다.
일반적으로 프로세스는 그 실행 초반에는 초기화 과정으로 인해 함수를 호출하면서, 영역(415) 내에서 스택에 할당되는 범위가 늘어난다. 프로세스가 실행되면, 도 6에 도시된 바와 같이, 초기화 구간에서는 스택포인터 SP1의 위치에 대응하여 메모리(200)의 영역이 스택에 할당된다.
이후 함수가 리턴 되면 스택의 크기는 다시 줄어들어, 초기화가 완료되면, 도 6에 도시된 바와 같이, 스택포인터 SP2의 위치가 낮아진다. 다시 말해, 초기화 구간에서의 스택포인터 SP1와 비교하여, 스택포인터 SP2가 상대적으로 높은 주소를 가지도록 그 위치가 변경된다.
따라서, 프로세스의 초기화가 완료되면, 도 6에 도시된 바와 같이, 스택포인터 SP1와 SP2 사이 구간의 데이터는 추후 미사용될 데이터 즉, 보존할 필요가 없는 데이터가 된다.
종래에는 초기화가 완료된 이후에도 스택포인터 SP1의 위치에 대응하여 메모리(200)의 영역이 계속 할당됨으로써, 사용될 데이터뿐만 아니라 미사용될 데이터도 메모리(200)의 영역을 점유하게 되는 결과를 초래하였다.
본 발명 실시예에 따른 전자장치(1)에서는, 프로세스가 실행되면 마지막 스택포인터 SP2의 위치를 기준으로 미사용될 데이터에 할당된 메모리(200)의 영역을 반환(discard)하도록 제어함으로써, 반환된 영역을 다른 프로세스가 사용할 수 있게 된다. 여기서, 마지막 스택포인터 SP2의 위치는 유저스택의 데이터에 대한 변동이 중지되는 시점에 대응한다.
이하, 도면들을 참조하여 본 발명 일 실시예에 따른 전자장치(1)에서 메모리(200)의 영역을 관리하는 방법에 관해 설명한다.
도 7은 본 발명 일 실시예에 따른 전자장치의 제어방법을 도시한 흐름도이고, 도 8 내지 도 10은 도 7의 일 실시예에 따른 전자장치의 제어방법의 구체적인 동작을 설명하기 위한 도면이다. 도 11은 도 7의 일 실시예에 따른 메모리 영역의 할당을 개념적으로 도시한 것이다.
도 7에 도시된 바와 같이, 유저모드에서 프로세스의 실행에 따라 유저스택의 데이터가 메모리(200)의 일 영역에 저장된다(501). 구체적으로, 프로세서(300)가 응용프로그램을 실행하면, 도 8에 도시된 바와 같이, 해당 프로세스의 태스크 별로 대응하는 유저스택이 생성된다. 생성된 유저스택은 메모리(200)의 일 영역에 할당되며, 해당 유저스택의 데이터가 할당된 메모리(200)의 영역에 기록 즉, 저장된다. 여기서, 프로세스의 초기화 구간에서의 스택포인터의 위치(60)에 대응하여 메모리(200)의 영역이 할당된다.
단계 501과 같이 프로세스가 수행되는 과정에서, 운영체제가 유저모드에서 커널모드로 진입하는 이벤트가 발생할 수 있다(503). 구체적으로, 응용프로그램이 실행된 상태에서 태스크로부터 시스템 콜(system call) 또는 인터럽트(interrupt)가 있으면, 운영체제는 이를 유저모드에서 커널모드로 전환하는 이벤트로 인지한다.
예를 들면, Read File 함수 또는 File Open 함수는 실제로 파일로부터 데이터를 읽는 기능을 처리하는 내부 루틴의 호출이 필요하다. 이 루틴은 시스템 데이터 구조체에 접근하므로 커널모드에서 실행되어야 하므로, 유저모드에서 커널모드로 전환하게 하는 소정 인스터력션의 사용으로 가능하다. 운영체제는 이 인스트럭션을 통해 시스템 서비스가 요청됐음을 알아챌 수 있다.
도 8에서의 스택포인터(SP)는, 커널모드로의 진입 이벤트가 발생할 때의 마지막 스택포인터의 위치를 나타낸다. 따라서, 마지막 스택포인터(SP)로부터 초기화 구간에서의 스택포인터(60)까지의 구간(61)에 할당된 유저스택의 데이터는 보존할 필요가 없는 데이터로서, 미사용될 데이터가 된다.
단계 503에서의 이벤트 발생에 응답하여, 운영체제는 유저모드에서 커널모드로 전환한다(505). 구체적으로, 도 9에 도시된 바와 같이, 프로세스가 실행되고 있는 중에 단계 503의 이벤트로서, 예를 들어 라이브러리 함수의 File Open 함수(fopen)가 호출되면, fopen 내부에서 시스템 콜인 오픈(open)을 호출하면서 운영체제가 유저모드에서 커널모드로 전환된다.
단계 505에서 운영체제가 커널모드로 전환되면, 해당 태스크에 대하여 더 이상 유저스택이 생성되지 않으므로, 유저모드에서 이루어지는 유저스택의 데이터에 대한 변동은 중지된다. 그에 따라, 스택포인터의 위치도 더 이상 이동되지 않게 된다.
운영체제 즉, 커널은 해당 태스크의 유저스택의 데이터 중에서 미사용될 데이터가 저장된 메모리(200)의 영역을 반환한다(507). 즉, 단계 505에서 운영체제가 유저모드에서 커널모드로 진입하는 때가 해당 태스크에 대해 할당된 메모리(200)의 영역 중 일부(미사용될 데이터의 영역)을 반환하는 시점이 된다.
구체적으로, 마지막 스택포인터(SP)로부터 초기화 구간에서의 스택포인터(60)까지의 구간(61)에 할당된 유저스택의 데이터는 보존할 필요가 없는 데이터로서, 도 8과 같이, 해당 데이터가 저장된 메모리(200)의 영역이 반환된다. 그에 따라, 스택 시작으로부터 마지막 스택포인터(SP)까지의 구간(62)에 할당된 유저스택의 데이터만이 메모리(200)의 영역을 점유하게 된다.
그리고, 운영체제는 단계 505에서의 모드전환에 따라, 커널모드에서 시스템 자원을 이용한 작업을 실행한 뒤 응답을 응용프로그램에 반환하면서, 도 9에 도시된 바와 같이, 다시 유저모드로 전환된다(509). 프로세서(300)는, 도 10에 도시된 바와 같이, 이러한 방식으로 운영체제가 유저모드와 커널모드를 상호 전환하면서 시스템 전체의 안정성을 유지하도록 제어할 수 있다.
단계 505에서 운영체제가 유저모드로 전환되면, 단계 501에서 설명한 바와 같이 프로세스의 태스크 별로 유저스택이 생성되면서, 생성된 유저스택의 데이터가 메모리(200)의 일 영역에 할당 및 저장되는 동작이 계속 수행된다.
프로세스는 하나 이상의 태스크의 집합으로 구성되는 바, 상기의 일 실시예에서는, 도 11에 도시된 바와 같이, 프로세스의 실행에 따라 순차적으로 복수의 태스크(t1, t2, t3) 각각에 대응하여 유저스택이 생성될 수 있다.
구체적으로, 태스크 1(t1)에 대해 생성된 유저스택에 메모리(200)의 영역이 할당되어, 해당 영역에 각 유저스택의 데이터가 기록된다. 즉, 태스크 1(t1)에 대해 영역(71, 72)에 대응하여 메모리(200)의 영역이 할당된다. 그리고, 태스크 1이 시스템 콜 또는 인터럽트에 의해 커널모드로 진입하게 되면, 스택포인터(SP)의 위치에 기초하여 미사용될 데이터가 기록된 영역(71)을 반환한다. 커널모드에서 시스템 자원을 이용한 작업을 실행하고, 응답을 응용프로그램에 반환하면서, 태스크 1은 다시 유저모드로 전환된다.
다음으로, 태스크 2(t2)에 대해 생성된 유저스택에 메모리(200)의 영역이 할당되어, 해당 영역에 각 유저스택의 데이터가 기록된다. 즉, 태스크 2(t2)에 대해 영역(73, 74)에 대응하여 메모리(200)의 영역이 할당된다. 그리고, 태스크 2가 시스템 콜 또는 인터럽트에 의해 커널모드로 진입하게 되면, 스택포인터(SP)의 위치에 기초하여 미사용될 데이터가 기록된 영역(73)을 반환한다. 커널모드에서 시스템 자원을 이용한 작업을 실행하고, 응답을 응용프로그램에 반환하면서, 태스크 2는 다시 유저모드로 전환된다.
그리고, 태스크 3(t3)에 대해 생성된 유저스택에 메모리(200)의 영역이 할당되어, 해당 영역에 각 유저스택의 데이터가 기록된다. 즉, 태스크 3(t3)에 대해 영역(75, 76)에 대응하여 메모리(200)의 영역이 할당된다. 그리고, 태스크 3이 시스템 콜 또는 인터럽트에 의해 커널모드로 진입하게 되면, 스택포인터(SP)의 위치에 기초하여 미사용될 데이터가 기록된 영역(75)을 반환한다. 커널모드에서 시스템 자원을 이용한 작업을 실행하고, 응답을 응용프로그램에 반환하면서, 태스크 3은 다시 유저모드로 전환된다.
그에 따라, 태스크 1, 2, 3 (t1, t2, t3) 각각에 대한 스택포인터(SP)까지의 영역(72, 74, 76)에 대응하여 메모리(200)가 점유되고, 반환된 영역(71, 73, 75)에 대응하는 메모리(200)의 영역은 다른 프로세스가 자유롭게 사용 가능하다. 그러므로, 실질적으로 반환된 영역(71, 73, 75)에 대응하는 만큼의 메모리가 절감되는 효과가 발생한다.
도 12는 본 발명 다른 실시예에 따른 전자장치의 제어방법을 도시한 흐름도이고, 도 13은 도 12의 다른 실시예에 따른 전자장치의 제어방법의 구체적인 동작을 설명하기 위한 도면이다.
도 12에 도시된 바와 같이, 유저모드에서 프로세스의 실행에 따라 각태스크 별로 유저스택의 데이터가 메모리(200)의 일 영역에 저장된다(801). 구체적으로, 일 실시예의 단계 501에서 설명한 바와 같이, 태스크 각각에 대응하는 유저스택이 생성되고, 생성된 유저스택이 메모리(200)의 일 영역에 할당되어, 해당 유저스택의 데이터가 할당된 메모리(200)의 영역에 기록 즉, 저장된다.
여기서, 프로세스는 종료되어 시스템을 떠날 때까지 준비, 실행, 대기(보류) 상태 순으로 변화되며 실행되는 과정을 반복한다. 운영체제는 프로세서 스케줄러를 이용하여 프로세스 상태 변화를 관리한다.
프로세스는 하나 이상의 태스크/쓰레드로 구성되며, 각 태스크/쓰레드는 준비, 실행, 대기, 종료 상태로 구분된다. 프로세스의 실행 관점에서 설명하면, 하나의 프로세스는 다수의 실행단위 즉, 쓰레드로 구분되어, 실행상태의 쓰레드가 프로세서(300)를 점유하도록 활성화된다. 하나의 프로세스에 속한 쓰레드들은 자신의 정보를 위한 프로그램 카운터와 스택을 가지며, 하나 이상의 쓰레드가 대기상태라도 다른 쓰레드는 실행 가능하다.
이러한 대기상태의 쓰레드/태스크들은 커널모드로 전환되어, 도 13에 도시된 바와 같이, 스케줄러(Scheduler)의 대기 큐(Wait Queue)에서 대기하게 된다.
단계 801과 같이 다수의 태스크/쓰레드로 구성된 프로세스가 수행되는 상태에서, 커널모드에서 동작하는 소정 데몬(daemon)이 실행될 수 있다(803). 데몬은 운영체제의 백그라운드에서 동작하면서 특정한 서비스를 제공하는 프로세스(커널 태스크)로서, 미리 정해진 특정 이벤트의 발생에 응답하여 호출(call)될 수 있다. 여기서, 이벤트의 종류는 한정되지 않으며, 예를 들면 소정 주기로 해당 데몬을 실행하도록 미리 설정하거나, 미리 정해진 사용자입력의 발생 시 해당 데몬이 실행되도록 구현될 수 있다.
단계 803에서 실행된 데몬은, 도 13에 도시된 바와 같이, 대기중인 태스크들의 유저스택에 할당된 영역 중에서 스택포인터의 위치에 기초하여 미사용될 데이터가 저장된 메모리의 영역(91, 93, 95, 97, 99)을 일률적으로 반환(discard) 한다(803). 반환된 영역(91, 93, 95, 97, 99)에 대응하는 메모리(200)의 영역은 다른 프로세스가 사용 가능하게 됨으로써, 실질적으로 반환된 영역만큼 메모리가 절감되는 효과가 발생한다.
한편, 본 발명 실시예에 따른 전자장치(1)는 단계 501 내지 509의 동작 및 단계 801 내지 803의 동작과는 독립적으로, 메모리(200)에 올라와 있는 블록들 중 소정 기준에 따라 특정 프로세스의 데이터를 저장부(100)의 저장하는 스와핑(swapping)을 수행할 수 있다.
구체적으로, 프로세서(300)가 다음 실행할 프로세스를 저장부(100)로부터 읽어 메모리(200)로 로드하는 과정에서, 메모리(200)에 이 프로세스를 위한 공간이 부족한 경우가 발생될 수 있다. 이 경우, 커널모드에서 동작하는 스왑 데몬(kswapd)에 의해 현재 메모리(200)에 올라와 있는 프로세스의 데이터를 내보내고(swap out), 원하는 프로세스의 데이터를 불러들이는(swap in) 스와핑이 수행된다. 스왑 데몬(kswapd)은 도 12의 실시예의 단계 803에서 수행되는 데몬과는 상이한 것이다.
스와핑에 의해 스왑 아웃된 데이터에 할당되었던 메모리(200)의 공간이 비게 되면, 그 빈 공간에 스왑 인된 데이터가 할당된다. 스왑 아웃된 데이터는 저장부(100)의 스왑 영역 또는 스왑 디바이스에 저장하는 방식으로 회수(reclaim)된다.
상기와 같은 스와핑에서는 스택포인터와 관계없이 해당 프로세스의 스택이 할당된 모든 메모리의 영역이 회수 대상이 된다. 따라서, 스와핑에 의한 메모리 영역의 회수(reclaim)는, 본 발명 실시예들에서의 스택포인터를 기준으로 한 메모리 영역의 반환(discard)과는 구별된다.
이상, 바람직한 실시예들을 통하여 본 발명에 관하여 상세히 설명하였으나, 본 발명은 이에 한정되는 것은 아니며 특허청구범위 내에서 다양하게 실시될 수 있다.
1 : 전자장치 100 : 저장부
200 : 메모리 300 : 프로세서
400 : 가상메모리 410 : 유저영역
420 : 커널영역 415 : 스택영역

Claims (20)

  1. 전자장치에 있어서,
    저장부;
    상기 저장부에 저장된 프로그램을 실행하는 프로세서; 및
    상기 프로그램의 실행에 대응하여, 상기 프로그램을 로드하는 메모리를 포함하며,
    상기 프로그램은, 운영체제 및 응용프로그램을 포함하고,
    상기 응용프로그램의 프로세스에 유저스택이 할당되고,
    상기 프로세스의 실행에 따라 상기 유저스택의 데이터가 상기 메모리의 일 영역에 저장되며,
    상기 운영체제는, 상기 유저스택의 데이터에 대한 변동이 중지된 동안, 상기 유저스택의 데이터 중에서 미사용될 데이터가 저장된 상기 메모리의 영역을 반환하여, 상기 반환된 영역을 다른 프로세스가 사용할 수 있도록 하는 전자장치.
  2. 제1항에 있어서,
    상기 운영체제는, 상기 프로세스가 유저모드에서 커널모드로 진입하는 때 상기 메모리의 영역을 반환하는 전자장치.
  3. 제1항에 있어서,
    상기 반환되는 메모리의 영역은 상기 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 결정되는 전자장치.
  4. 제1항에 있어서,
    상기 프로세스는 하나 이상의 태스크로 구성되며,
    상기 프로세스의 실행에 따라 각 태스크 단위로 상기 유저스택이 생성되어, 상기 생성된 유저스택에 상기 메모리의 일 영역이 할당되는 전자장치.
  5. 제4항에 있어서,
    상기 운영체제는, 실행중인 태스크가 유저모드에서 커널모드로 진입하는 때 상기 실행중인 태스크에 대해 생성된 유저스택이 할당된 메모리의 영역 중에서 상기 미사용될 데이터가 저장된 상기 메모리의 영역을 반환하는 전자장치.
  6. 제5항에 있어서,
    상기 실행중인 태스크로부터 시스템 콜 또는 인터럽트가 발생하면, 상기 운영체제가 상기 유저모드에서 상기 커널모드로 진입하는 전자장치.
  7. 제5항에 있어서,
    상기 실행중인 태스크가 상기 유저모드에서 상기 커널모드로 진입하면, 상기 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 상기 반환되는 메모리의 영역이 결정되는 전자장치.
  8. 제4항에 있어서,
    상기 운영체제는,
    상기 프로세스가 커널모드로 동작하는 동안, 대기중인 태스크들의 유저스택에 할당된 메모리의 영역 중에서 상기 미사용될 데이터가 저장된 상기 메모리의 영역을 반환하는 전자장치.
  9. 제8항에 있어서,
    상기 운영체제는,
    상기 프로세스가 커널모드로 동작하는 동안, 소정 데몬을 실행하여 상기 대기중인 태스크들의 상기 메모리의 영역을 반환하는 전자장치.
  10. 제8항에 있어서,
    상기 대기중인 태스크들의 상기 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 상기 반환되는 메모리의 영역이 결정되는 전자장치.
  11. 제1항에 있어서,
    상기 운영체제는, 상기 프로세스가 커널모드로 동작중인 동안 상기 메모리의 영역을 반환하는 전자장치.
  12. 저장부, 상기 저장부에 저장된 프로그램을 실행하는 프로세서 및 상기 프로그램의 실행에 대응하여 상기 프로그램을 로드하는 메모리를 포함하는 전자장치의 제어방법에 있어서,
    응용프로그램의 실행에 따라 프로세스에 할당되는 유저스택의 데이터를 상기 메모리의 일 영역에 저장하는 단계;
    상기 유저스택의 데이터에 대한 변동이 중지된 동안, 운영체제가 상기 유저스택의 데이터 중에서 미사용될 데이터가 저장된 상기 메모리의 영역을 다른 프로세스가 사용할 수 있도록 반환하는 단계를 포함하는 전자장치의 제어방법.
  13. 제12항에 있어서,
    상기 메모리의 영역을 반환하는 단계에서, 상기 프로세스가 유저모드에서 커널모드로 진입하는 때 상기 메모리의 영역을 반환하는 전자장치의 제어방법.
  14. 제12항에 있어서,
    상기 메모리의 영역을 반환하는 단계는, 상기 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 상기 반환되는 메모리의 영역을 결정하는 단계를 포함하는 전자장치의 제어방법.
  15. 제12항에 있어서,
    상기 프로세스는 하나 이상의 태스크로 구성되며,
    상기 프로세스의 실행에 따라 각 태스크 단위로 상기 유저스택이 생성되어, 상기 생성된 유저스택에 상기 메모리의 일 영역이 할당되는 전자장치의 제어방법.
  16. 제15항에 있어서,
    실행중인 태스크가 유저모드에서 커널모드로 진입하는 때 상기 실행중인 태스크에 대해 생성된 유저스택이 할당된 메모리의 영역 중에서 상기 미사용될 데이터가 저장된 상기 메모리의 영역을 반환하는 단계를 더 포함하는 전자장치의 제어방법.
  17. 제16항에 있어서,
    상기 실행중인 태스크로부터 시스템 콜 또는 인터럽트가 발생하면, 상기 운영체제가 상기 유저모드에서 상기 커널모드로 진입하는 단계; 및
    상기 운영체제가 상기 유저모드에서 상기 커널모드로 진입하면, 상기 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 상기 반환되는 메모리의 영역을 결정하는 단계를 더 포함하는 전자장치의 제어방법.
  18. 제15항에 있어서,
    상기 프로세스가 커널모드로 동작하는 동안, 대기중인 태스크들의 유저스택에 할당된 메모리의 영역 중에서 상기 미사용될 데이터가 저장된 상기 메모리의 영역을 반환하는 단계를 더 포함하는 전자장치의 제어방법.
  19. 제18항에 있어서,
    상기 운영체제는,
    상기 프로세스가 커널모드로 동작하는 동안, 소정 데몬을 실행하여 상기 대기중인 태스크들의 상기 메모리의 영역을 반환하는 전자장치의 제어방법.
  20. 제18항에 있어서,
    상기 대기중인 태스크들의 상기 유저스택에 데이터가 채워진 위치를 가리키는 스택포인터에 기초하여 상기 반환되는 메모리의 영역을 결정하는 단계를 더 포함하는 전자장치의 제어방법.
KR1020180105223A 2018-09-04 2018-09-04 전자장치 및 그 제어방법 KR20200027204A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180105223A KR20200027204A (ko) 2018-09-04 2018-09-04 전자장치 및 그 제어방법
US17/266,758 US11907761B2 (en) 2018-09-04 2019-09-03 Electronic apparatus to manage memory for loading data and method of controlling the same
PCT/KR2019/011298 WO2020050578A1 (ko) 2018-09-04 2019-09-03 전자장치 및 그 제어방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180105223A KR20200027204A (ko) 2018-09-04 2018-09-04 전자장치 및 그 제어방법

Publications (1)

Publication Number Publication Date
KR20200027204A true KR20200027204A (ko) 2020-03-12

Family

ID=69722017

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180105223A KR20200027204A (ko) 2018-09-04 2018-09-04 전자장치 및 그 제어방법

Country Status (3)

Country Link
US (1) US11907761B2 (ko)
KR (1) KR20200027204A (ko)
WO (1) WO2020050578A1 (ko)

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08286933A (ja) * 1995-04-18 1996-11-01 Mitsubishi Electric Corp マルチタスクos装置
US5950221A (en) 1997-02-06 1999-09-07 Microsoft Corporation Variably-sized kernel memory stacks
US5903899A (en) * 1997-04-23 1999-05-11 Sun Microsystems, Inc. System and method for assisting exact Garbage collection by segregating the contents of a stack into sub stacks
US6938254B1 (en) 1997-05-06 2005-08-30 Microsoft Corporation Controlling memory usage in systems having limited physical memory
US6047125A (en) * 1997-10-01 2000-04-04 Sun Microsystems, Inc. Garbage collection system for improved use of memory by removal of reference conflicts
KR100304355B1 (ko) * 1997-12-17 2001-09-24 이계철 실시간시스템을위한스택관리방법
US6295640B1 (en) * 1998-05-08 2001-09-25 Apple Computer, Inc. Method and apparatus for distinguishing reference values from non-reference values in a runtime environment
KR100401560B1 (ko) * 1999-10-25 2003-10-17 엘지전자 주식회사 운영체제의 커널 스택 동적 할당 방법
US7055152B1 (en) * 2001-08-15 2006-05-30 Microsoft Corporation Method and system for maintaining buffer registrations in a system area network
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
GB2399897B (en) * 2003-03-26 2006-02-01 Advanced Risc Mach Ltd Memory recycling in computer systems
WO2004099985A1 (ja) * 2003-05-09 2004-11-18 Fujitsu Limited 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体
JP4589095B2 (ja) * 2004-12-14 2010-12-01 三菱電機株式会社 プログラム実行装置及びプログラム実行方法及びデータ領域管理プログラム
US7581220B1 (en) * 2005-11-22 2009-08-25 Symantec Operating Corporation System and method for modifying user memory from an arbitrary kernel state
JP5044816B2 (ja) * 2007-09-06 2012-10-10 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトを記憶・管理するシステム
JP5184268B2 (ja) * 2008-09-08 2013-04-17 株式会社エヌ・ティ・ティ・ドコモ 情報処理装置及びプログラム
US8327111B2 (en) * 2009-03-30 2012-12-04 International Business Machines Corporation Method, system and computer program product for batched virtual memory remapping for efficient garbage collection of large object areas
JP5381624B2 (ja) * 2009-11-04 2014-01-08 富士通株式会社 メモリ管理機能を有するプログラム及び装置
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US9021299B2 (en) * 2011-02-18 2015-04-28 Ab Initio Technology Llc Restarting processes
US8966203B2 (en) * 2013-01-04 2015-02-24 Microsoft Corporation Shared and managed memory unified access
US9529692B2 (en) * 2013-06-07 2016-12-27 Apple Inc. Memory management tools
CN105701025B (zh) * 2015-12-31 2019-07-23 华为技术有限公司 一种内存回收方法及装置

Also Published As

Publication number Publication date
US11907761B2 (en) 2024-02-20
WO2020050578A1 (ko) 2020-03-12
US20210311789A1 (en) 2021-10-07

Similar Documents

Publication Publication Date Title
US10901802B2 (en) Method and apparatus for implementing virtual GPU and system
US11531625B2 (en) Memory management method and apparatus
US20060282624A1 (en) Information processing apparatus, process control method and computer program therefor
WO2017176534A1 (en) Managing container pause and resume
WO2015169145A1 (zh) 内存管理方法和设备
US9021243B2 (en) Method for increasing free memory amount of main memory and computer therefore
US11360884B2 (en) Reserved memory in memory management system
KR101636892B1 (ko) 플래시 메모리 저장 장치에서 동적 메모리 할당에 의해 일어나는 자기 축출을 회피하는 방법
CN102667714B (zh) 支持访问由操作系统环境外的资源提供的功能的方法和系统
US20070294550A1 (en) Memory Management With Defragmentation In A Computing Device
TW200428210A (en) Memory management
US20070055841A1 (en) Memory allocation in a computer system
KR102063281B1 (ko) 파일에 접근하기 위한 방법과 장치, 및 저장 시스템
KR20200027204A (ko) 전자장치 및 그 제어방법
CN112654965A (zh) 动态模块的外部分页和交换
US11360901B2 (en) Method and apparatus for managing page cache for multiple foreground applications
KR20230081585A (ko) 연속 메모리 할당 영역의 크기를 조정하는 메모리 관리 방법 및 반도체 장치
US20230168822A1 (en) Memory management method and semiconductor device adjusting size of contiguous memory allocation area
JP2000222285A (ja) メモリー電力管理装置
CN101996141A (zh) 计算机系统、盘存储装置和控制所述计算机系统的方法
CN114510324B (zh) 一种挂载有ceph卷的KVM虚拟机的磁盘管理方法及系统
GB2492352A (en) Optimising application performance on basis of priority
Song et al. An Efficient Stack Management by The Selective Revocation of Mapping from Virtual Memory to Physical memory
US20070006204A1 (en) Rtfs controls queue of requests from os
JP2011257973A (ja) メモリ管理方法及びメモリ管理装置

Legal Events

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