KR20080097582A - 멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택재할당 방법 - Google Patents

멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택재할당 방법 Download PDF

Info

Publication number
KR20080097582A
KR20080097582A KR1020070042626A KR20070042626A KR20080097582A KR 20080097582 A KR20080097582 A KR 20080097582A KR 1020070042626 A KR1020070042626 A KR 1020070042626A KR 20070042626 A KR20070042626 A KR 20070042626A KR 20080097582 A KR20080097582 A KR 20080097582A
Authority
KR
South Korea
Prior art keywords
stack
data area
size
new
data
Prior art date
Application number
KR1020070042626A
Other languages
English (en)
Other versions
KR101017351B1 (ko
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 KR1020070042626A priority Critical patent/KR101017351B1/ko
Priority to US12/031,248 priority patent/US7930510B2/en
Publication of KR20080097582A publication Critical patent/KR20080097582A/ko
Application granted granted Critical
Publication of KR101017351B1 publication Critical patent/KR101017351B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • 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)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본원 발명은 멀티 쓰레드 운영 체제(multi-threaded operating system)에서의 동적 쓰레드 스택 재할당 방법에 관한 것으로서, 구체적으로는 무선 센서 노드용 임베디드 시스템에서 멀티 쓰레드 운영 체제의 동적 쓰레드 스택 재할당 방법에 관한 것이다.
본 발명에 따른 멀티 쓰레드 기반 운영체제에서의 동적 스레드 스택 재할당 방법은, 멀티 쓰레드 각각에 대한 스택의 데이터 영역 크기 및 비데이터 영역의 크기를 측정하는 단계와, 상기 멀티 쓰레드 각각에 대해 상기 측정된 스택의 데이터 영역 크기에 기반하여 각 스택의 비데이터 영역의 새로운 크기를 결정하는 단계와, 각 스택의 비데이터 영역 크기를 상기 결정된 새로운 크기로 조정하는 단계를 포함한다.
본 발명에 따르면, 소스 코드의 분석 없이도 기존의 정적인 스택 할당 기법을 사용하는 것보다 메모리 공간의 사용량을 절감할 수 있는 효과가 있다.
무선 센서 네트워크, 멀티 쓰레드 운영체제, 스택 할당

Description

멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택 재할당 방법{Dynamic stack reallocating method in multi-threaded operating system}
도 1은 멀티 쓰레드 운영체제의 전형적인 메모리 맵 구조도.
도 2는 본 발명의 일실시예에 따른 동적 쓰레드 재할당 방법의 수행 과정을 도시한 도면.
도 3은 본 발명에 따른 스택 재할당 과정의 일 예를 도시한 도면.
도 4는 본 발명에 따른 스택 재할당 과정의 다른 예를 도시한 도면.
도 5는 본 발명의 일실시예에 따른 스택 재할당 알고리즘을 도시한 도면.
본원 발명은 멀티 쓰레드 운영 체제(multi-threaded operating system)에서의 동적 쓰레드 스택 재할당 방법에 관한 것으로서, 구체적으로는 무선 센서 노드용 임베디드 시스템에서 멀티 쓰레드 운영 체제의 동적 쓰레드 스택 재할당 방법에 관한 것이다.
무선 센서 네트워크는 수백 혹은 수천 개의 무선 센서 노드들로 이루어진다. 이들 센서 노드들은 정보를 수집하고 정보를 가공하여 이웃 노드들과 통신을 한다. 일반적으로, 무선 센서 노드용 노드는 2K~10KB의 작은 메모리를 장착하고 있으며 저전력, 저가격을 이유로 메모리 하드웨어 보호장치, 즉 MMU (Memory Management Unit)가 없는 경우가 일반적이다. 이러한 메모리 제약적인 임베디드 시스템에서도 여러 태스크들을 병렬로 수행하기 위해서 멀티 쓰레드 운영체제가 필요하다.
일반적으로, 멀티 쓰레드 기반 운영 체제에서는 각 쓰레드마다 일정한 크기의 쓰레드 스택이 메모리 공간내에 할당된다. 고정된 크기의 스택 할당 방법은, 쓰레드 생성시에 해당 쓰레드가 사용할 스택 공간을 정적인 크기로 할당하며 프로그램 실행시에는 변하지 않는다. 따라서 쓰레드가 할당 받은 스택 공간의 작은 일부만 사용할 경우에도 남는 공간은 심각한 메모리 낭비를 일으키게 된다. 또한, 이 방법에서는 스택 메모리를 더 필요로 하는 다른 쓰레드가 메모리를 더 이상 사용할 수 없게 되는 취약성을 갖고 있어서 스택 오버플로우와 같은 문제를 쉽게 일으킬 수 있다.
이러한 문제를 해결하기 위해, 소스 코드 분석에 의한 쓰레드 스택 메모리 운영 방식이 존재하였으나 소스 코드 분석은 매우 복잡하고 어려우며 시간이 많이 걸린다는 단점을 갖고 있다.
따라서, 본 발명은 메모리 공간 제약적인 센서 노드의 멀티 쓰레드 운영체제에서 메모리 공간을 효율적으로 사용하기 위한 동적 쓰레드 스택 재할당 방법을 제공하는 것을 목적으로 한다.
본 발명의 다른 목적은 센서 노드의 멀티 쓰레드 운영체제에서 프로그램 실 행중에 측정되는 스택 사용량 정보에 기반하여 쓰레드 스택을 동적으로 재할당하는 방법을 제공하는 것이다.
전술한 목적 달성을 위해, 본 발명의 일 특징에 따른 멀티 쓰레드 기반 운영체제에서의 동적 스레드 스택 재할당 방법은, 멀티 쓰레드 각각에 대한 스택의 데이터 영역 크기 및 비데이터 영역의 크기를 측정하는 단계와, 상기 멀티 쓰레드 각각에 대해 상기 측정된 스택의 데이터 영역 크기에 기반하여 각 스택의 비데이터 영역의 새로운 크기를 결정하는 단계와,각 스택의 비데이터 영역 크기를 상기 결정된 새로운 크기로 조정하는 단계를 포함한다.
일 실시예에서, 상기 각 스택의 비데이터 영역 크기를 조정하는 단계는 하위 스택의 현재 비데이터 영역 크기와 새로운 비데이터 영역 크기간 차이가 존재하는 경우에 상기 하위 스택에 인접한 상위 스택의 데이터 영역을 상기 차이만큼 상위 메모리 영역으로 이동시키거나 하위 메모리 영역으로 이동시키는 단계를 포함한다.
이하, 첨부 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. 그러나, 다음에 예시하는 본 발명의 실시예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시예에 한정되는 것은 아니다. 본 발명의 실시예는 당업계에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되어지는 것이다.
도 1은 멀티 쓰레드 운영체제의 전형적인 메모리 맵을 도시한다. 도시된 바와 같이, 힙(heap) 영역(110)은 스택 영역(120, 130)과 공유가 가능하여 힙 영 역(110)이 증가하면 스택 영역(120, 130)이 감소하며 그 역도 마찬가지이다. 스택 영역은 크게 시스템 스택 영역(120)과 사용자 스택 영역(130)으로 나뉘며, 멀티 쓰레드 각각은 사용자 스택 영역(120)을 분할하여 할당받는다. 쓰레드 스택(S1,S2,S3,S4)은 다시 데이터 영역과 비데이터 영역으로 나뉘며, 데이터 영역(x1,x2,x3,x4)은 전체 스택 공간에서 스택 데이터를 포함하는 영역이고 비데이터 영역(y1,y2,y3,y4)은 아직까지 스택 데이터를 갖지 않았던 영역이다.
비데이터 영역은 전체 스택 공간에서 데이터 영역을 뺀 나머지 부분이다. 비데이터 영역의 크기는 데이터 영역의 크기를 고려하여 결정되어야 한다. 비데이터 영역의 크기가 너무 크면 스택 메모리 낭비가 심하며, 너무 작으면 스택 오버플로우가 생길 수 있다. 일반적으로, 비데이터 영역의 크기는 데이터 영역의 크기의 10~20% 수준이 적당한 것으로 알려져 있다.
도 2는 본 발명의 일실시예에 따른 동적 쓰레드 재할당 방법의 수행 과정을 도시한다. 도시된 바와 같이, 프로그램이 실행되는 도중에 주기적으로 틱 인터럽트(tick interrupt)가 발생한다. 틱 인터럽트는 일정한 시간 간격으로 주기적으로 발생하는 타이머 인터럽트이다. 틱 인터럽트가 주기적으로 발생할 때마다, 인터럽트 서비스 루틴은 쓰레드 스택의 재할당을 수행한다.
구체적으로, 단계(210)에서, 각 쓰레드 스택의 데이터 영역 크기 및 비데이터 영역의 크기를 계산한다. 데이터 영역 크기를 측정한 후에 전체 스택 크기로부터 데이터 영역 크기를 감산함으로서 비데이터 영역의 크기를 계산할 수 있다.
다음, 단계(220)에서, 각 쓰레드 스택의 데이터 영역의 크기를 고려해 비데이터 영역의 새로운 크기를 결정한다. 데이터 영역은 실제로 데이터가 저장된 부분이므로 조정될 수 없다. 따라서, 전체 스택 크기는 비데이터 영역의 크기를 조정함으로써만 제어될 수 있다.
비데이터 영역의 크기가 너무 작다면 증가시켜야 하고, 반대로 너무 크다면 축소하여야 한다. 비데이터 영역의 최적 크기는 어플리케이션마다 다르므로, 간단하게 결정될 수는 없다. 본 발명의 일실시예에 따르면, 다음 사항을 고려하여 비데이터 영역의 최적 크기를 결정할 수 있다.
(1) 새로운 비데이터 영역의 크기는 현재 데이터 영역의 크기를 고려하여 결정한다. 현재 데이터 영역이 크다면 비데이터 영역도 증가시킬 필요가 있다. (예를 들면, 일실시예에서, 비데이터 영역의 크기는 데이터 영역 크기의 10~20%로 결정될 수 있다.)
(2) 새로운 비데이터 영역의 크기는 선정된 임계치 이상이어야 한다. 일반적으로, 임의의 함수가 호출되면, 일정 바이트 개수에 해당하는 데이터들이 스택에 저장될 것이다.(예를 들면, 현재 레지스터값들은 스택에 저장되어야 한다.)
(3) 현재 비데이터 영역의 크기가 너무 작다면 증가시킬 필요가 있고, 너무 크다면 축소시킬 필요가 있다. 그러나, 축소시키는 과정에서 스택 오버플로우 문제가 발생하지 않도록 하여야 할 것이다.
마지막으로, 단계(230)에서, 단계(220)에서 정해진 대로 각 쓰레드 스택의 비데이터 영역의 크기를 재조정한다. 비데이터 영역의 크기 조정은 하위 스택부터 상위 스택 순서로 순차적으로 수행되며, 스택의 데이터 영역을 상위 메모리 영역으로 또는 하위 메모리 영역으로 이동함으로써 이루어진다. 이때, 스택 데이터는 손상되지 않아야 하며, 오버헤드가 최소로 발생하여야 한다.
도 3은 본 발명에 따른 스택 재할당 과정의 일 예를 보여준다. 이 예에서는 4개의 쓰레드가 존재하여 각 쓰레드마다 100바이트 크기의 쓰레드 스택을 갖고 있다고 가정한다. 각 쓰레드 스택의 데이터 영역, 비데이터 영역의 크기를 (xi, yi)(1<= i <= 쓰레드 개수)로 표시하면, 도 3(a)에 도시된 바와 같이 4개의 쓰레드 스택은 (50, 50), (80, 20), (60, 40), (60, 40)이다. 이후, 새로운 스택 크기의 결정 과정에서, 각 쓰레드 스택의 새로운 비데이터 영역의 크기 (
Figure 112007033003011-PAT00001
,
Figure 112007033003011-PAT00002
,
Figure 112007033003011-PAT00003
,
Figure 112007033003011-PAT00004
)는 (30, 60, 30, 20)으로 결정되었다고 가정한다. 이 예에서 쓰레드 스택의 새 비데이터 영역으로 바뀌는 과정은 다음과 같다.
(1) 스택은 하위 어드레스쪽으로 늘어난다. 따라서, 스택 1의 데이터 영역(x1)은 스택 1의 비데이터 영역 크기(y1)의 제어와 상관없으므로 변동될 필요가 없다.
(2) 도 3(b)에 도시된 바와 같이, 스택 2의 데이터 영역(x2)이 스택 1의 비데이터 영역(y1)을 30 바이트로 만들기 위해서 20 바이트 아래로 이동한다 (이 과정에서 스택 2의 비데이터 영역(y2)이 40바이트가 된다).
(3) 도 3(c)에 도시된 바와 같이, 스택 3의 데이터 영역(x3)이 스택 2의 비데 이터 영역(y2)을 60바이트로 만들기 위해 20바이트 위로 이동한다 (이 과정에서 스택 3의 비데이터 영역(y3)은 20바이트가 된다).
(4) 도 3(d)에 도시된 바와 같이, 스택 4의 데이터 영역(x4)이 스택 3의 비데이터 영역(y3)을 30바이트로 만들기 위해 10바이트 위로 이동한다. (이 과정에서 스택 4의 비데이터 영역(y4)은 30바이트가 된다.)
(5) 도 3(e)에 도시된 바와 같이, 스택 4의 비데이터 영역(y4)은 20바이트로 조정된다.
전술한 과정 (2)에서 스택 2의 데이터 영역(x2)이 하위 영역으로 이동하는 것을 스택 1의 데이터 영역(x1)이 스택 2의 데이터 영역(x2)을 Pull(끌어당김)한다고 표현될 수 있다. 유사하게, 전술한 (3) 및 (4)에서는 xi가 xi+1를 Push(밈)한다고 표현될 수 있다.
정리하면, △yi=
Figure 112007033003011-PAT00005
-
Figure 112007033003011-PAT00006
로 정의할 때, △yi = 0 이라면, xi+ 1를 이동시킬 필요가 없다. △yi> 0 이라면, xi가 xi+ 1를 △yi 만큼 Push 한다. (Push(xi+1,△yi)라 표현함). 유사하게, △yi< 0라면, xi가 xi+ 1를 △yi 만큼 Pull 한다 (Pull(xi+1,-△yi)라 표현함).
그러나, 도 3에 도시된 예는 데이터 영역의 이동 과정에서 이웃 데이터 영역 과 오버랩이 발생하지 않는 단순한 경우를 예로 든 것이지만, 오버랩이 발생하는 경우도 있다.
도 4는 스택 재할당 과정에서 데이터 영역의 오버랩 문제가 발생하는 경우를 도시한다. 도 4(a)에 도시된 바와 같이, (x1,y1)= (60,20), (x2,y2)= (80,20), (x3,y3)= (50, 60), (x4,y4)= (50,60)이고, 이후, 새로운 스택 크기의 결정 과정에서, 각 쓰레드 스택의 새로운 비데이터 영역의 크기 (
Figure 112007033003011-PAT00007
,
Figure 112007033003011-PAT00008
,
Figure 112007033003011-PAT00009
,
Figure 112007033003011-PAT00010
)는 (50,40,30,50)으로 결정되었다고 가정한다. 여기서, △y1 = 30이므로, y1이 50 바이트가 되기 위해서는 Push(x2, 30)이 필요하다. 그러나, x2를 30바이트만큼 상위 메모리 영역으로 이동시킨다면 x3의 영역을 10 바이트만큼 손상시키는 오버랩 문제가 발생한다. 따라서, 오버랩이 발생하지 않도록 하기 위해서는 x3의 영역을 먼저 상위 영역으로 이동시킨 후에 x2의 영역을 위쪽으로 이동시켜야 한다. 동일한 상황이 x3과 x4의 사이에서도 발생한다면 push 동작이 반복적으로(recursively) 수행될 필요가 있다.
도 4에 도시된 예를 참조하여 오버랩을 고려한 스택 재할당 과정을 설명한다.
(1) 하위 스택의 비데이터 영역(y1)을 50 바이트로 만들기 위해 Push(x2, 30)를 수행하기 이전에, x2는 x3을 50(△y1 +△y2) 바이트만큼 push 한다. push 동작이 수행되면, 도 4(b)에 도시된 바와 같이, y2가 70바이트로 된다.
(2) 이제, Push(x2, 30)를 수행한다. x1이 x2를 30바이트만큼 push 하더라도 x2와 x3간에 오버랩이 발생하지 않는다. Push(x2, 30)이 수행된 후에, 도 4(c)에 도시된 바와 같이, y1은 50 바이트가 되고 y2는 40 바이트가 된다.
(3) y3을 30 바이트로 만들기 위해 Push(x4, 20)을 수행하더라도 오버랩 문제는 발생하지 않는다(도 4(d) 참조).
(4) y4는 50 바이트로 조정된다(도 4(e) 참조).
이와 같이, 본 발명에 따른 스택 재할당을 수행하는데 있어서 데이터 영역의 push 동작을 수행하기에 이전에 오버랩 문제가 발생하는지 여부를 판단하여야 할 것이다. 이하 도 5를 참조하여 오버랩을 고려한 스택 재할당을 좀더 구체적으로 살펴보기로 한다.
도 5는 본 발명의 일실시예에 따른 스택 재할당 알고리즘을 도시한 도면이다. 도면에 도시된 바와 같이, 오버랩이 발생하는 경우에 함수 "PushPull(xi+1,△yi)"이 반복적으로 수행됨을 알 수 있다. 함수 "PushPull(xi+1,△yi)"의 기능은 오버랩을 고려하여 xi에 대한 push 및 pull 동작의 조합된 동작을 수행하는 함수이다. 구체적으로, PushPull(xi+1,△yi)는 다음과 같이 표현될 수 있다.
Figure 112007033003011-PAT00011
즉,
(1) i번째 스택의 현재 비데이터 영역 크기와 새로운 비데이터 영역 크기간 차이(△yi)가 0보다 작으면, i번째 스택의 데이터 영역(xi)가 i+1번째 스택의 데이터 영역(xi+1)을 △yi 만큼 Pull한다. (즉, xi+ 1를 △yi 만큼 하위 메모리 영역으로 이동시킨다.)
(2) 해당 스택의 현재 비데이터 영역 크기와 새로운 비데이터 영역 크기간 차이(△yi)가 0보다 크지만 그 값이 yi +1보다 작거나 같다면 오버랩이 발생하지 않을 것으로 판단하고, xi가 xi+ 1를 △yi 만큼 Push 한다. (즉, xi+ 1를 △yi만큼 상위 메모리 영역으로 이동시킨다.)
(3) 그러나, 해당 스택의 현재 비데이터 영역 크기와 새로운 비데이터 영역 크기간 차이(△yi)가 0보다 크고 그 값도 yi +1보다 크다면, xi+ 1를 △yi만큼 Push 할 경우에 오버랩이 발생할 것으로 판단된다. 따라서, 이 경우에는 오버랩이 발생하지 않도록 1개 이상 상위 스택의 데이터 영역들에 대한 일련의 push 동작이 수행되어야 할 것이다. 가령, k번째 스택의 데이터 영역(xk,k>=i+2)에서 오버랩 문제가 해결된 다고 가정할 때, xi에서 xk까지의 데이터 영역은 오버랩없이 이동될 수 있다. xk가 xk + 1를 push한다고 할때, push될 메모리량은
Figure 112007033003011-PAT00012
가 된다.
따라서,
Figure 112007033003011-PAT00013
가 수행된다.
전술한 본 발명은 하나 이상의 제조물상에 구현된 하나 이상의 컴퓨터 판독가능 매체로서 제공될 수 있다. 제조물은, 플로피 디스크, 하드 디스크, CD ROM, 플래시 메모리 카드,PROM, RAM, ROM, 또는 자기 테이프를 들 수 있다. 일반적으로, 컴퓨터 판독가능 프로그램은 임의의 프로그래밍 언어로 구현될 수 있다. 사용될 수 있는 언어의 일부 예에는 C, C++, 또는 JAVA가 포함된다.
이상에서, 본 발명에 따른 실시예들에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 특허청구범위와 발명의 상세한 설명 및 첨부한 도면의 범위 안에서 여러 가지로 변형하여 실시하는 것이 가능하고 이 또한 본 발명에 속한다.
이상과 같이 본 발명은 프로그램 수행 도중에 각 쓰레드 스택 사용량을 측정하고 스택 사용량에 따라 스택 영역을 동적으로 재할당함으로써 기존의 정적 쓰레드 스택 할당 방식보다 스택 공간 사용 효율을 더욱 높일 수 있다.
또한, 이 방식은 소스 코드의 분석과 같은 복잡한 과정이 필요 없으므로 보다 간단하게 구현하여 원하는 목적을 달성할 수 있다는 장점이 있다.

Claims (14)

  1. 멀티 쓰레드 기반 운영체제에서의 동적 스레드 스택 재할당 방법에 있어서, 상기 방법은,
    멀티 쓰레드 각각에 대한 스택의 데이터 영역 크기 및 비데이터 영역의 크기를 측정하는 단계와,
    상기 멀티 쓰레드 각각에 대해 상기 측정된 스택의 데이터 영역 크기에 기반하여 각 스택의 비데이터 영역의 새로운 크기를 결정하는 단계와,
    각 스택의 비데이터 영역 크기를 상기 결정된 새로운 크기로 조정하는 단계
    를 포함하는 동적 쓰레드 스택 재할당 방법.
  2. 제1항에 있어서, 상기 방법은 센서 노드에서 수행되는 동적 쓰레드 스택 재할당 방법.
  3. 제1항에 있어서, 상기 방법은 틱 인터럽트가 발생할 때마다 수행되는 동적 쓰레드 스택 재할당 방법.
  4. 제1항에 있어서, 상기 각 스택의 비데이터 영역의 새로운 크기를 결정하는 단계에서 새로운 크기는 선정된 임계치 이상으로 결정되는 동적 쓰레드 스택 재할당 방법.
  5. 제1항에 있어서, 상기 각 스택의 비데이터 영역에 대한 새로운 크기를 결정하는 단계에서 새로운 크기는 데이터 영역 크기의 10 내지 20%로 결정되는 동적 쓰레드 스택 재할당 방법.
  6. 제1항에 있어서, 상기 각 스택의 비데이터 영역 크기를 조정하는 단계는 하위 스택부터 상위 스택으로 순차적으로 수행되는 동적 쓰레드 스택 재할당 방법.
  7. 제6항에 있어서, 상기 각 스택의 비데이터 영역 크기를 조정하는 단계는 하위 스택의 현재 비데이터 영역 크기와 새로운 비데이터 영역 크기간 차이가 존재하는 경우에 상기 하위 스택에 인접한 상위 스택의 데이터 영역을 상기 차이만큼 상위 메모리 영역으로 이동시키거나 하위 메모리 영역으로 이동시키는 단계를 포함하는 동적 쓰레드 스택 재할당 방법.
  8. 제7항에 있어서, 상기 하위 스택의 현재 비데이터 영역 크기와 새로운 비데이터 영역 크기간 차이가 0보다 작은 경우에는 상기 인접한 상위 스택의 데이터 영역을 상기 크기 차이만큼 하위 메모리 영역으로 이동시키는 동적 쓰레드 스택 재할당 방법.
  9. 제7항에 있어서, 하위 스택의 현재 비데이터 영역 크기와 새로운 비데이터 영역 크기간 차이가 0보다 큰 경우에는 상기 인접한 상위 스택의 데이터 영역을 상기 크기 차이만큼 상위 메모리 영역으로 이동시키는 동적 쓰레드 스택 재할당 방법.
  10. 제9항에 있어서, 상기 각 스택의 비데이터 영역 크기를 조정하는 단계는, 상기 인접한 상위 스택의 데이터 영역을 상위 메모리 영역으로 이동시키기 이전에, 인접한 스택간 오버랩이 발생하는지 판단하는 단계를 더 포함하는 동적 쓰레드 스택 재할당 방법.
  11. 제10항에 있어서, 상기 하위 스택의 현재 비데이터 영역 크기와 새로운 비데이터 영역 크기간의 차이가 상기 하위 스택에 인접한 상위 스택의 비데이터 영역 크기보다 큰 경우에 오버랩이 발생할 것으로 판단하는 동적 쓰레드 스택 재할당 방법.
  12. 제10항에 있어서, 상기 오버랩이 발생할 것으로 판단되는 경우에 적어도 1개 이상의 상위 스택의 데이터 영역을 상위 메모리 영역으로 이동시키는 단계를 더 포함하는 동적 쓰레드 스택 재할당 방법.
  13. 제1항 내지 제12항중 어느 하나의 항에 따른 방법을 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 기록매체.
  14. 제13항에 있어서, 상기 컴퓨터 프로그램은 센서 노드 운영체제의 인터럽스 서비스 루틴에 포함되는 컴퓨터 판독가능 기록매체.
KR1020070042626A 2007-05-02 2007-05-02 멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택재할당 방법 KR101017351B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070042626A KR101017351B1 (ko) 2007-05-02 2007-05-02 멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택재할당 방법
US12/031,248 US7930510B2 (en) 2007-05-02 2008-02-14 Dynamic stack allocating method in multi-threaded operating systems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070042626A KR101017351B1 (ko) 2007-05-02 2007-05-02 멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택재할당 방법

Publications (2)

Publication Number Publication Date
KR20080097582A true KR20080097582A (ko) 2008-11-06
KR101017351B1 KR101017351B1 (ko) 2011-02-28

Family

ID=39940401

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070042626A KR101017351B1 (ko) 2007-05-02 2007-05-02 멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택재할당 방법

Country Status (2)

Country Link
US (1) US7930510B2 (ko)
KR (1) KR101017351B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8478956B2 (en) 2009-11-13 2013-07-02 Samsung Electronics Co., Ltd. Computing system and method controlling memory of computing system

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101164194B1 (ko) * 2008-12-11 2012-07-10 한국전자통신연구원 멀티 쓰레드 기반의 정적 스택 할당 방법
KR101612780B1 (ko) * 2009-11-13 2016-04-18 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법
CN103294517B (zh) * 2012-02-22 2018-05-11 国际商业机器公司 堆栈溢出保护装置、堆栈保护方法、相关编译器和计算装置
US10114573B1 (en) 2017-04-26 2018-10-30 International Business Machines Corporation Dynamic reduction of stack-overflow errors in a recursive data-serialization algorithm

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5950221A (en) * 1997-02-06 1999-09-07 Microsoft Corporation Variably-sized kernel memory stacks
KR100304355B1 (ko) 1997-12-17 2001-09-24 이계철 실시간시스템을위한스택관리방법
US6381738B1 (en) * 1999-07-16 2002-04-30 International Business Machines Corporation Method for optimizing creation and destruction of objects in computer programs
KR100401560B1 (ko) 1999-10-25 2003-10-17 엘지전자 주식회사 운영체제의 커널 스택 동적 할당 방법
KR100336717B1 (ko) * 1999-12-21 2002-05-13 오길록 실시간 시스템을 위한 다중 쓰레드의 주소 공간 관리 방법
US6993754B2 (en) * 2001-11-13 2006-01-31 Hewlett-Packard Development Company, L.P. Annotations to executable images for improved dynamic optimization functions
US7222343B2 (en) 2003-01-16 2007-05-22 International Business Machines Corporation Dynamic allocation of computer resources based on thread type
US7356812B2 (en) * 2003-09-30 2008-04-08 Intel Corporation Passing parameters by implicit reference

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8478956B2 (en) 2009-11-13 2013-07-02 Samsung Electronics Co., Ltd. Computing system and method controlling memory of computing system

Also Published As

Publication number Publication date
US7930510B2 (en) 2011-04-19
KR101017351B1 (ko) 2011-02-28
US20080276063A1 (en) 2008-11-06

Similar Documents

Publication Publication Date Title
JP5868429B2 (ja) 領域に基づくガベージ・コレクタを用いてクラスを漸進的にアンロードするための方法、コンピュータ・プログラム製品、および装置
KR100289628B1 (ko) 멀티태스킹 기능의 정보처리시스템을 위한 자원관리방법및 그 장치
US8104026B2 (en) Compiler register allocation and compilation
US8838928B2 (en) Memory management and method for allocation using free-list
KR101017351B1 (ko) 멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택재할당 방법
EP2175370A1 (en) System and method of using pooled thread-local character arrays
US20180217779A1 (en) Multiple stage garbage collector
CN105453054B (zh) 基于堆区域的内容动态选择垃圾收集算法的系统和方法
CN105574141B (zh) 一种对数据库进行数据迁移的方法和装置
US20100138460A1 (en) Memory power control method and memory power control program
EP3577565B1 (en) Garbage collector
CN110543338A (zh) 一种文件的动态加载方法及装置
US11347698B2 (en) Garbage collection for hash-based data structures
KR101612780B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법
US20020165901A1 (en) Characterization of objects of a computer program while running same
US20120198184A1 (en) Memory management method, computer system and computer readable medium
JP6750368B2 (ja) 仮想マシン制御プログラム、仮想マシン制御方法および仮想マシン制御装置
US7792880B2 (en) Method and apparatus for efficient implementation of discontiguous objects
US20060236065A1 (en) Method and system for variable dynamic memory management
KR100846451B1 (ko) 멀티 쓰레드 기반 센서 운영체제 환경에서의 스택 할당방법
US8607245B2 (en) Dynamic processor-set management
US9218275B2 (en) Memory management control system, memory management control method, and storage medium storing memory management control program
CN102693325B (zh) 一种文件存储方法和装置
JP2924725B2 (ja) バッファ割り当て制御システム
CN105573920A (zh) 存储空间管理方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B601 Maintenance of original decision after re-examination before a trial
E801 Decision on dismissal of amendment
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20090603

Effective date: 20110211

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140123

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee