KR100304355B1 - 실시간시스템을위한스택관리방법 - Google Patents

실시간시스템을위한스택관리방법 Download PDF

Info

Publication number
KR100304355B1
KR100304355B1 KR1019970069696A KR19970069696A KR100304355B1 KR 100304355 B1 KR100304355 B1 KR 100304355B1 KR 1019970069696 A KR1019970069696 A KR 1019970069696A KR 19970069696 A KR19970069696 A KR 19970069696A KR 100304355 B1 KR100304355 B1 KR 100304355B1
Authority
KR
South Korea
Prior art keywords
stack
memory
fault
real
address
Prior art date
Application number
KR1019970069696A
Other languages
English (en)
Other versions
KR19990050564A (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 KR1019970069696A priority Critical patent/KR100304355B1/ko
Publication of KR19990050564A publication Critical patent/KR19990050564A/ko
Application granted granted Critical
Publication of KR100304355B1 publication Critical patent/KR100304355B1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
본 발명은 실시간 시스템을 위한 스택 관리 방법에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은, 사용자 모드에서 할당된 메모리 이상을 사용할 경우에 즉시 감지하고, 시스템 모드에서 스택의 범람이 일어나지 않도록 하여 프로세스의 스택 범람으로 인한 메모리 손상을 방지함으로써 시스템을 안전하게 보호하며, 필요 이상으로 많은 메모리를 할당하지 않아도 시스템이 안전하게 동작되도록 하여 시스템 자원 사용의 효율성을 높일 수 있는 실시간 시스템을 위한 스택 관리 방법을 제공하고자 함.
3. 발명의 해결방법의 요지
본 발명은, 실시간 시스템을 위한 프로세스의 스택 관리 방법에 있어서, 시스템 스택 할당부를 통해 실시간 시스템을 위한 시스템 스택 메모리를 할당하는 제 1 단계; 프로세스 생성중 입력된 스택 메모리 할당 요구에 따라, 프로세스 스택 할당부를 통해 각 프로세스별로 필요한 프로세스 스택 메모리를 할당하는 제 2 단계; 프로세스 수행중 폴트 발생시에, 스택 폴트 처리부에서 발생된 스택 관련 폴트를 처리하는 제 3 단계; 및 프로세스 소멸중 입력된 스택 메모리 회수 요구에 따라, 해당 스택 메모리를 회수하는 제 4 단계를 포함함.
4. 발명의 중요한 용도
본 발명은 실시간 시스템에서의 프로세스 스택 관리 등에 이용됨.

Description

실시간 시스템을 위한 스택 관리 방법{Stack management method for real-time system}
본 발명은 실시간 시스템에서 프로세스의 실행을 제어하여 고 신뢰성이 요구되는 실시간 시스템을 위한 안전하고 효율적인 프로세스의 스택 관리 방법에 관한 것이다.
일반적으로, 프로세스의 스택은 사용자 모드의 프로세스 실행 및 시스템 콜을 하여 시스템 모드로 동작될 때 지역 변수들 및 프로시져 호출시의 파라미터 전달 등 실행 시간에 소요되는 공간을 위하여 사용되는 메모리 영역으로서 프로세스수행시 이러한 메모리 영역의 내용을 읽기 및 쓰기를 하여 사용된다.
종래의 메모리 영역을 관리하는 기술은 크게 세 가지로 분류할 수 있는데, 이러한 종래의 메모리 영역을 관리하는 기술을 살펴보면 다음과 같다.
첫째, 대부분의 실시간 시스템에서는 시스템 메모리 전체를 하나의 주소 공간으로 설정하여 프로세스 지정 또는 디폴트 값으로 메모리를 할당하여 사용자 모드 및 시스템 모드의 구분없이 사용된다. 이때, 할당된 스택 이상을 쓰더라도 감지할 방법이 없으므로 시스템 메모리를 손상하여 시스템의 정상적인 동작을 보장하지 못하는 문제점이 있었다.
둘째, 이러한 문제점을 개선하기 위한 방법으로 시스템 메모리를 사용자 공간 및 시스템 공간으로 분리하고, 사용자 프로세스 요구 크기 또는 디폴트 크기에 시스템 모드에서 수행될 필요 크기를 더하여 메모리를 할당하여 이를 스택으로 사용한다.
그러나, 이러한 방법은 사용자 용도로 할당된 스택의 범람시 감지되지 않으므로 시스템 모드에서 동작하고자 할 경우에 이미 사용자 모드에서 시스템 스택 메모리를 많이 사용한 후일 수 있으므로 이 또한 시스템 메모리 손상 및 시스템 모드에서 중대 폴트가 유발되어 시스템 장애를 일으킬 수 있는 문제점이 있었다.
셋째, 상기 두 번째 방법과 유사한 방법으로 메모리 공간 자체를 연속하지 않고 다른 공간의 영역으로 분리한다.
그러나, 이러한 세 번째 방법 역시 중앙처리장치(CPU : Central Processing Unit)에서 하드웨어적으로 기능이 제공되는 경우에만 가능하며, 이 또한 시스템 모드에서의 스택 범람을 감지할 수 없는 문제점이 있었다. 또한, 이러한 내포된 문제점으로 인하여 기존의 실시간 시스템에서 프로세스를 실행시킬 경우에 시스템의 안전도를 높이기 위해 필요 이상으로 많은 메모리를 스택 영역으로 할당하여 실시간 시스템에서 중요 자원인 메인 메모리의 운용이 효율적이지 못한 문제점이 있었다.
본 발명은 상기한 바와 같은 종래의 제반 문제점을 해결하기 위하여 안출된 것으로서, 사용자 모드에서 할당된 메모리 이상을 사용할 경우에 즉시 감지하고, 시스템 모드에서 스택의 범람이 일어나지 않도록 하여 프로세스의 스택 범람으로 인한 메모리 손상을 방지함으로써 시스템을 안전하게 보호하며, 필요 이상으로 많은 메모리를 할당하지 않아도 시스템이 안전하게 동작되도록 하여 시스템 자원 사용의 효율성을 높일 수 있는 실시간 시스템을 위한 스택 관리 방법을 제공하는데 그 목적이 있다.
도 1 은 본 발명이 적용되는 하드웨어 시스템의 일예를 도시한 블록 구성도.
도 2 는 본 발명에 따른 전체적인 스택 관리 방법에 대한 일실시예 흐름도.
도 3a 는 본 발명에 따른 시스템 스택 할당부의 스택 관리 방법에 대한 일실시예 흐름도.
도 3b 는 본 발명에 이용되는 시스템 스택 관리를 위한 데이터의 구조도.
도 3c 는 본 발명에 이용되는 시스템 스택 할당부 수행후의 시스템 메모리 및 관련 데이터 구조값의 설정 상태도.
도 4a 는 본 발명에 따른 프로세스 스택 할당부의 스택 관리 방법에 대한 일실시예 흐름도.
도 4b 는 본 발명에 이용되는 프로세스 스택 관리를 위한 데이터의 구조도.
도 4c 는 본 발명에 이용되는 프로세스 스택 할당부 수행후의 시스템 메모리 및 관련 데이터 구조값의 설정 상태도.
도 5a 는 본 발명에 따른 스택 폴트 처리부의 스택 관리 방법에 대한 일실시예 흐름도.
도 5b 는 본 발명에 이용되는 시스템내의 모든 스택 구조를 나타낸 상태도.
도 5c 는 본 발명에 이용되는 사용자 논리 주소 영역 및 물리 주소 영역의 상관 관계를 나타낸 상태도.
도 6a 는 본 발명에 따른 스택 회수부의 스택 관리 방법에 대한 일실시예 흐름도.
도 6b 는 본 발명에 이용되는 스택 회수부 수행후의 메모리 상태도.
*도면의 주요 부분에 대한 부호의 설명
10 : 타겟 시스템 20 : 통신망
30, 40 : 호스트 시스템
상기 목적을 달성하기 위한 본 발명은, 실시간 시스템을 위한 프로세스의 스택 관리 방법에 있어서, 시스템 스택 할당부를 통해 실시간 시스템을 위한 시스템 스택 메모리를 할당하는 제 1 단계; 프로세스 생성중 입력된 스택 메모리 할당 요구에 따라, 프로세스 스택 할당부를 통해 각 프로세스별로 필요한 프로세스 스택 메모리를 할당하는 제 2 단계; 프로세스 수행중 폴트 발생시에, 스택 폴트 처리부에서 발생된 스택 관련 폴트를 처리하는 제 3 단계; 및 프로세스 소멸중 입력된 스택 메모리 회수 요구에 따라, 해당 스택 메모리를 회수하는 제 4 단계를 포함하여 이루어진 것을 특징으로 한다.
본 발명은 고 신뢰성이 요구되는 실시간 시스템에서 프로세스의 실행을 제어함에 있어 그 실행 환경이 되는 프로세스의 스택 메모리의 관리 방법에 관한 것으로서, 사용자 모드에서 프로세스에 할당된 스택 메모리 이상을 사용할 경우 즉각적으로 감지되도록 하며, 시스템 모드에서는 스택 범람이 일어나지 않도록 하여, 프로세스 스택 범람으로 인한 메모리 손상을 방지하여 시스템을 안전하게 보호하며, 필요 이상으로 많은 메모리를 할당하지 않아도 시스템이 안전하도록 하여 시스템 자원 사용의 효율성을 높이고자 한다.
이를 위해, 본 발명은 시스템에 필요한 스택 메모리를 할당하고, 프로세스 생성 요구가 입력되면 프로세스 수행에 필요한 스택 메모리를 할당하며, 수행중 스택 폴트가 발생했을 때 이를 처리하고, 프로세스의 종료시 할당된 스택 메모리를 회수한다.
이를 통해, 본 발명은 고 신뢰성이 요구되는 실시간 시스템의 신뢰성을 높일 수 있으며, 주요 자원인 주기억장치의 효율적인 사용으로 시스템의 비용을 절감할 수 있다.
상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이다. 이하, 첨부된 도면을 참조하여 본 발명의 바람직한 일실시예를 상세히 설명한다.
도 1 은 본 발명이 적용되는 하드웨어 시스템의 일예를 도시한 블록 구성도이다.
타겟 시스템(10)은 교환망(13)으로 서로 연동되는 다수의 가입자 호처리 프로세서(11,12) 및 운용 보전 프로세서(14)와, 운용자 터미널(15)을 구비한다.
다수의 가입자 호처리 프로세서(11,12)는 메모리 관리 유니트(MMU : Memory Management Unit)(111-1)가 실장된 주처리 장치(111), 주기억 장치(112), 및 망접속 장치(113)를 구비한다.
다수의 가입자 호처리 프로세서(11,12)는 가입자의 호를 제어하고, 교환망(13)을 통해 운용 보전 프로세서(14)와 연동된다.
주처리 장치(111)는 메모리 관리 유니트(MMU)(111-1)를 실장하며, 주기억장치(112) 및 망접속 장치(113)를 제어한다.
망접속 장치(113)는 교환망(13)과의 접속을 수행한다.
운용 보전 프로세서(14)는 망접속 장치(141), 입출력 제어 장치(142), 주처리 장치(143), 주기억 장치(144), 보조 기억 장치(145), 및 통신 접속 장치(146)를 구비한다.
운용 보전 프로세서(14)는 교환 시스템에서 가입자들의 상태를 관리하고, 통신망(20)과 연동하여 다수의 호스트 시스템(30,40)과 통신한다.
주처리 장치(143)는 메모리 관리 유니트(MMU)(143-1)를 실장하며, 주기억 장치(144), 망접속 장치(141), 입출력 제어 장치(142), 및 통신 접속 장치(146)를 제어한다.
망접속 장치(141)는 교환망(13)을 통해 다수의 가입자 호처리 프로세서(11,12)와 연동되고, 통신 접속 장치(146)는 통신망(20)을 통해 다수의 호스트 시스템(30,40)과 연동된다.
입출력 제어 장치(142)는 보조 기억 장치(145) 및 운용자 터미널(15)을 제어한다. 여기서, 보조 기억 장치(145)는 가입자의 데이터를 저장 및 관리하고, 운용자 터미널(15)은 운용자의 명령어를 입력받는다.
다수의 호스트 시스템(30,40)은 프로그램을 개발하는 시스템이다.
본 발명의 바람직한 실시예로, 실시간 시스템에서 스택을 효율적으로 관리하기 위해서는 다수의 호스트 시스템(30,40)에서 개발되어 통신망(20)을 통해 타겟 시스템(10)내의 주기억 장치(112,144)에 로딩되어 실행되는 소프트웨어인 사용자 프로세스들의 수행시 필요한 스택 메모리를 주기억장치(112,144)내에서 효율적으로 운용하여야 한다.
도 2 는 본 발명에 따른 전체적인 스택 관리 방법에 대한 일실시예 흐름도로서, 실시간 시스템을 위한 프로세스 스택 메모리의 관리 절차를 나타낸다.
먼저, 시스템 스택 할당부를 통하여 시스템을 위한 스택 메모리를 할당한다(201).
이후, 프로세스 생성 과정중 스택 메모리 할당 요구를 입력받으면(202), 프로세스 스택 할당부를 통하여 각 프로세스별로 필요한 스택 메모리를 할당한다(203).
다음으로, 프로세스 수행 과정중 폴트 발생을 입력받으면(204), 스택 폴트처리부에서 스택 관련 폴트 처리를 한다(205).
마지막으로, 프로세스 소멸 과정중 스택 메모리 회수 요구를 입력받으면(206), 해당 스택 메모리를 회수한다(207).
상기한 바와 같은 실시간 시스템을 위한 전체적인 프로세스 스택 메모리의 관리 방법에 대한 상세 관리 과정을 설명하면 다음과 같다.
도 3a 는 본 발명에 따른 시스템 스택 할당부의 스택 관리 방법에 대한 일실시예 흐름도이다.
시스템 스택 할당부에서는 먼저 운영체제(OS : Operating System)가 로딩되는 영역의 앞부분을 커널 스택으로 할당하고(301), 커널스택시작주소(kernel_stack_base) 및 커널스택끝주소(kernel_stack_end) 변수값을 설정한다(302).
이후, 운영체제(OS)가 로딩되는 영역의 뒷부분을 인터럽트 스택으로 할당한다(303). 이때, 인터럽트는 계속 중첩될 수 있으며, 이로 인하여 스택이 많이 소요될 수 있다.
따라서, 이를 사용자 정의 스택과 공유하여 사용할 경우에 시스템 모드의 스택 범람으로 인해 시스템의 중요 폴트로 인식되거나 시스템 메모리를 손상시킬 수 있으며, 프로세스별로 할당할 필요가 없으므로 시스템내 고유하게 하나를 할당한다.
다음으로, 인터럽트스택시작주소(intr_stack_base) 및 인터럽트스택끝주소(intr_stack_end)의 변수값을 설정한 후(304), 종료한다.
도 3b 는 본 발명에 이용되는 시스템 스택 관리를 위한 데이터 구조도이다.
커널스택시작주소(kernel_stack_base)(311)는 커널 스택의 시작을 나타내는 변수이고, 커널스택끝주소(kernel_stack_end)(312)는 커널 스택의 끝을 나타내는 변수이다.
인터럽트스택시작주소(intr_stack_base)(313)는 인터럽트 스택의 시작을 나타내는 변수이고, 인터럽트스택끝주소(intr_stack_end)(314)는 인터럽트 스택의 끝을 나타내는 변수이다.
시스템 스택 할당부 수행후의 시스템 메모리 및 관련 데이터 구조값의 설정 상태는 도 3c와 같이 구성한다.
도 3c를 참조하면, 운용체제(OS)의 앞뒤로 시스템 스택 메모리를 설정하므로 시스템 메모리의 크기가 변경되더라도 영향을 받지않고 일정한 값을 유지할 수 있으며, OS 앞의 유휴 메모리를 낭비하지 않고 사용할 수 있는 장점이 있다.
도 4a 는 본 발명에 따른 프로세스 스택 할당부의 스택 관리 방법에 대한 일실시예 흐름도이다.
먼저, 프로세스 생성 과정중 스택 할당 요구를 입력받으면(401), 프로세스 스택 할당부는 지정된 크기 또는 지정되지 않은 경우에 디폴트 크기에 메모리 관리 유니트(MMU)에서 지정되는 페이지 크기 하나를 더한 만큼의 메모리를 할당한다(402).
이후, 프로세스 스택 관리를 위한 데이터 구조인 사용자 스택시작물리주소(stack_base) 및 사용자 스택끝물리주소(stack_end)값을 설정하고, 이에 해당하는 논리 주소인 사용자 가상스택시작논리주소(vm_stack_base) 및 사용자 가상스택끝논리주소(vm_stack_end)값을 설정하며, 스택증가시 물리주소(stack_grow)값을 0으로 초기화 한다(403).
다음으로, 논리 주소 및 할당된 물리 주소가 번역될 수 있도록 메모리 관리 유니트(MMU) 맵핑 테이블을 설정한다(404). 여기서, 맵핑시의 모드는 시스템 사용자 읽기/쓰기/실행(SRWXURWX) 모드로 설정된다.
이후, 가산된 상위 한 페이지는 시스템 콜 운용을 위한 메모리 영역으로 사용자 모드에서는 사용하지 못하도록 보호 구역으로 설정되는데, 사용자 모드가 시스템 읽기/쓰기/실행(SRWX) 모드로 변경된다(405).
다음으로, 기존의 상위 한 페이지를 메모리 관리 유니트(MMU)에서 플러쉬 한다(406). 이는 이후 보호 구역에 접근하는 경우에 새로이 설정된 모드로 메모리 관리 유니트(MMU)에 로딩하기 위함이다.
마지막으로, CPU에서 인식할 수 있는 레지스터 값에 스택 주소를 설정한 후(407), 종료한다.
도 4b 는 본 발명에 이용되는 프로세스 스택 관리를 위한 데이터의 구조도이다.
메모리 관리 유니트(MMU)를 통해 주소 번역이 일어나는 메모리 관리 구조에서는 논리 주소와 물리 주소의 2가지가 존재하는데, 그 물리 주소는 사용자 스택시작물리주소(stack_base) 및 사용자 스택끝물리주소(stack_end)로 구분되며, 그 논리 주소는 사용자 가상스택시작논리주소(vm_stack_base) 및 사용자 가상스택끝논리주소(vm_stack_end)이다.
그리고, 스택증가시 물리주소(stack_grow)는 스택 범람시 스택 증가가 일어난 경우의 할당된 물리 주소를 나타내는 값이다.
프로세스 스택 할당부 수행후의 시스템 메모리 및 관련 데이터 구조값의 설정 상태는 도 4c와 같이 구성한다.
보호 구역은 사용자 요구 스택위에 할당된 보호 구역으로 시스템만이 접근 가능한 모드로 설정되어 이후 사용자 모드에서 실행시 사용자에게 할당된 크기를 넘어가면 이를 감지할 수 있도록 구성한다.
도 5a 는 본 발명에 따른 스택 폴트 처리부의 스택 관리 방법에 대한 일실시예 흐름도이다.
먼저, CPU에서 발생되는 트랩이 입력된다(501). 여기서, 트랩은 사용자 프로그램의 수행중 발생하여 CPU에서 감지하는 하드웨어 또는 소프트웨어적인 예외 상황을 의미한다.
이후, 입력된 트랩이 인터럽트인지를 판단한다(502).
판단결과, 입력된 트랩이 인터럽트이면 스택을 시스템의 인터럽트 스택으로 천이하고(503), 일반적인 인터럽트를 처리한 후(504), 종료한다.
판단결과, 입력된 트랩이 인터럽트가 아니면 메모리 폴트이고 스택 포인터가 보호 구역내에 있는지를 검사한다(505).
만약, 메모리 폴트이고 스택 포인터가 보호 구역내에 있으면, 스택증가시 물리주소(stack_grow) 변수값이 0인지를 판단하여 이미 스택 증가가 일어난 상태인가를 조사한다(506).
조사결과, 변수값이 0으로 스택 증가가 일어나지 않은 상태이면, 메모리 한 페이지를 할당하고(507), 논리 주소를 기존 논리 주소와 연속되게 한 페이지를 확장하고 사용자 가상스택끝주소(vm_stack_end)값을 변경한다(508).
이후, 할당된 주소를 스택증가시 물리주소(stack_grow)값에 설정한 후(509), 확장된 스택 영역에 대해 시스템 읽기/쓰기/실행(SRWX) 모드로 설정하여 보호 구역으로 메모리 관리 유니트(MMU) 맵핑을 추가한다(510).
다음으로, 이전 보호 구역의 모드를 시스템 일반 모드인 사용자 읽기/쓰기/실행(SRWXURWX) 모드로 변경하여 보호 구역을 해제한 후(511), 기존 보호 구역의 페이지를 메모리 관리 유니트(MMU)에서 플러쉬한다(512).
그리고, 스택이 증가되었으므로 폴트 발생 위치로 돌려보내 재실행하면 정상적으로 수행된다(513).
한편, 메모리 폴트이고 스택 포인터가 보호 구역내에 없거나, 메모리 폴트이고 스택 포인터가 보호 구역내에 있고 스택증가시 물리주소(stack_grow) 변수값이 0이외의 다른 값으로 이미 스택 증가가 한번 일어난 상태이면, 사용자 프로그램에 문제가 있는 것으로 간주하여 스택 포인터가 유효한 값인지를 조사한다(514).
조사결과, 스택 포인터가 정상적인 값이 아니면, 폴트 처리에 사용할 스택을 위하여 커널 스택 영역으로 이동하고(515), 폴트 정보를 출력한다(516).
조사결과, 스택 포인터가 정상적이면, 바로 폴트 정보를 출력한다(516). 여기서, 스택 포인터값이 유효한 경우에 3가지로 구분될 수 있는데, 이는 커널 스택,인터럽트 스택, 및 사용자 프로그램 스택이다(도 5b 참조).
마지막으로, 폴트가 발생한 프로세스의 수행을 정지시키고(517), 다른 프로세스로 스케줄링이 일어나도록 하여 시스템이 정상적으로 가동될 수 있도록 한다(518).
도 5c 는 본 발명에 이용되는 사용자 논리 주소 영역 및 물리 주소 영역의 상관 관계를 나타낸 상태도이다.
본 발명의 바람직한 실시예로, 이전 보호 구역을 해제하여 사용자 모드에서 사용할 수 있도록 하고, 새로운 보호 구역을 설정하여 이 경계에 도달하면 폴트가 발생하도록 구성한다.
도 6a 는 본 발명에 따른 스택 회수부의 스택 관리 방법에 대한 일실시예 흐름도이다.
먼저, 프로세스 삭제 과정중 스택 메모리 회수 요구가 있으면(601), 사용자 스택시작물리주소(stack_base) 및 사용자 스택끝물리주소(stack_end)값으로 초기에 할당된 스택 영역을 회수한다(602).
이후, 사용자 가상스택시작물리주소(vm_stack_base) 및 사용자 가상스택끝물리주소(vm_stack_end)로 메모리 관리 유니트(MMU) 맵핑을 해제한다(603).
다음으로, 스택증가시 물리주소(stack_grow)가 0인지를 판단하여(604), 스택증가시 물리주소(stack_grow)가 0이 아니면 스택증가시 물리주소(stack_grow)로 메모리 한 페이지를 회수하고(605), 스택증가시 물리주소(stack_grow)가 0이면 수행을 종료한다.
상기한 바와 같은 스택 회수부 수행후의 메모리 상태가 도 6b에 도시되었다.
사용자의 논리 주소 및 시스템 메모리의 물리 주소의 맵핑은 해제되고, 시스템 물리 주소 메모리는 회수되어 시스템 풀 영역으로 리턴된다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정되는 것이 아니다.
상기한 바와같은 본 발명에 따르면, 고 신뢰성이 요구되는 실시간 시스템의 신뢰성을 높이고, 주요 자원인 주 기억장치의 효율적인 사용으로 시스템의 비용을 절감할 수 있는 효과가 있다.

Claims (5)

  1. 실시간 시스템을 위한 프로세스의 스택 관리 방법에 있어서,
    시스템 스택 할당부를 통해 실시간 시스템을 위한 시스템 스택 메모리를 할당하는 제 1 단계;
    프로세스 생성중 입력된 스택 메모리 할당 요구에 따라, 프로세스 스택 할당부를 통해 각 프로세스별로 필요한 프로세스 스택 메모리를 할당하는 제 2 단계;
    프로세스 수행중 폴트 발생시에, 스택 폴트 처리부에서 발생된 스택 관련 폴트를 처리하는 제 3 단계; 및
    프로세스 소멸중 입력된 스택 메모리 회수 요구에 따라, 해당 스택 메모리를 회수하는 제 4 단계
    를 포함하는 실시간 시스템을 위한 스택 관리 방법.
  2. 제 1 항에 있어서,
    상기 제 1 단계는,
    운영체제(OS)가 로딩되는 영역의 앞부분을 커널 스택으로 할당하는 제 5 단계;
    커널 스택 시작 및 끝 주소(kernel_stack_base, kernel_stack_end)를 나타내는 변수값을 설정하는 제 6 단계;
    운영체제(OS)가 로딩되는 영역의 뒷 부분을 인터럽트 스택으로 할당하는 제 7 단계; 및
    인터럽트 스택의 시작 및 끝 주소(intr_stack_base, intr_stack_end)의 변수값을 설정하는 제 8 단계
    를 포함하는 실시간 시스템을 위한 스택 관리 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 제 2 단계는,
    프로세스 생성 과정중 스택 할당 요구를 입력받는 제 9 단계;
    지정된 크기 혹은 지정되지 않은 경우에, 상기 프로세스 스택 할당부가 디폴트 크기에 메모리 관리 유니트(MMU)에서 지정되는 페이지 크기 하나를 더한 만큼의 메모리를 할당하는 제 10 단계;
    사용자 스택 시작 및 끝 물리주소(stack_base, stack_end)값을 설정하고, 해당 사용자 가상 스택 시작 및 끝 논리주소(vm_stack_base, vm_stack_end)값을 설정하며, 스택증가시 물리주소(stack_grow)값을 영(0)으로 초기화하는 제 11 단계;
    할당된 물리주소 및 논리주소로 메모리 관리 유니트(MMU) 맵핑 테이블을 설정하는 제 12 단계;
    가산된 상위 한 페이지를 시스템 콜 운용을 위한 메모리 영역으로 사용자 모드에서 사용하지 못하도록 보호 구역으로 설정하는 제 13 단계;
    기존의 상위 한 페이지를 상기 메모리 관리 유니트(MMU)에서 플러쉬하는 제 14 단계; 및
    중앙처리장치(CPU)에서 인식할 수 있는 레지스터값에 스택 주소를 설정하는 제 15 단계
    를 포함하는 실시간 시스템을 위한 스택 관리 방법.
  4. 제 3 항에 있어서,
    상기 제 3 단계는,
    상기 중앙처리장치에서 발생되는 트랩이 입력되면, 입력된 트랩이 인터럽트인지를 판단하는 제 16 단계;
    상기 제 16 단계의 판단결과, 입력된 트랩이 인터럽트이면, 스택을 시스템의 인터럽트 스택으로 천이하고, 일반적인 인터럽트를 처리하는 제 17 단계;
    상기 제 16 단계의 판단결과, 입력된 트랩이 인터럽트가 아니면, 메모리 폴트이고 스택 포인터가 보호 구역내에 있는지를 판단하는 제 18 단계;
    상기 제 18 단계의 판단결과, 메모리 폴트이고 스택 포인터가 보호 구역내에 있으면, 스택증가시 물리주소(stack_grow) 변수값이 영(0)인지를 판단하는 제 19 단계;
    상기 제 19 단계의 판단결과, 상기 변수값이 영(O)으로 스택 증가가 일어나지 않은 상태이면, 메모리 한 페이지를 할당하고, 논리 주소를 기존 논리 주소와연속되게 할당하는 제 20 단계;
    할당된 주소를 스택증가시 물리주소(stack_grow)값에 설정한 후, 확장된 스택 영역에 대해 상기 메모리 관리 유니트(MMU)를 맵핑하는 제 21 단계;
    이전 보호 구역의 모드를 시스템 일반 모드로 변경하여 보호 구역을 해제하는 제 22 단계;
    기존 보호 구역의 페이지를 상기 메모리 관리 유니트(MMU)에서 플러쉬한 후 폴트 발생 위치로 리턴하여 재실행하는 제 23 단계;
    상기 제 18 및 제 19 단계의 판단결과, 메모리 폴트이고 스택 포인터가 보호 구역내에 없거나, 메모리 폴트이고 스택 포인터가 보호 구역내에 있고 스택증가시 물리주소(stack_grow) 변수값이 영(0)이외의 다른 값으로 이미 스택 증가가 한번 일어난 상태이면, 사용자 프로그램에 문제가 있는 것으로 간주하여 스택 포인터가 유효한 값인지를 판단하는 제 24 단계;
    상기 제 24 단계의 판단결과, 스택 포인터가 정상적인 값이 아니면 커널 스택 영역으로 이동하고, 폴트 정보를 출력하는 제 25 단계;
    상기 제 24 단계의 판단결과, 스택 포인터가 정상적인 값이면, 바로 폴트 정보를 출력하는 제 26 단계; 및
    폴트가 발생한 프로세스의 수행을 정지시키고, 다른 프로세스로 스케줄링하는 제 27 단계
    를 포함하는 실시간 시스템을 위한 스택 관리 방법.
  5. 제 4 항에 있어서,
    상기 제 4 단계는,
    프로세스 삭제 과정중 스택 메모리 회수 요구를 수신하는 제 28 단계;
    사용자 스택 시작 및 끝 물리주소(stack_base, stack_end)값으로 초기에 할당된 스택 영역을 회수하는 제 29 단계;
    사용자 가상 스택 시작 및 끝 물리주소(vm_stack_base, vm_stack_end)로 상기 메모리 관리 유니트(MMU)의 맵핑을 해제하는 제 30 단계;
    스택증가시 물리주소(stack_grow)가 영(0)인지를 판단하는 제 31 단계;
    상기 제 31 단계의 판단결과, 스택증가시 물리주소(stack_grow)가 영(0)이 아니면 스택증가시 물리주소(stack_grow)로 메모리 한 페이지를 회수하고, 스택증가시 물리주소(stack_grow)가 영(0)이면 수행을 종료하는 제 32 단계
    를 포함하는 실시간 시스템을 위한 스택 관리 방법.
KR1019970069696A 1997-12-17 1997-12-17 실시간시스템을위한스택관리방법 KR100304355B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970069696A KR100304355B1 (ko) 1997-12-17 1997-12-17 실시간시스템을위한스택관리방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970069696A KR100304355B1 (ko) 1997-12-17 1997-12-17 실시간시스템을위한스택관리방법

Publications (2)

Publication Number Publication Date
KR19990050564A KR19990050564A (ko) 1999-07-05
KR100304355B1 true KR100304355B1 (ko) 2001-09-24

Family

ID=37529882

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970069696A KR100304355B1 (ko) 1997-12-17 1997-12-17 실시간시스템을위한스택관리방법

Country Status (1)

Country Link
KR (1) KR100304355B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100846451B1 (ko) * 2006-12-12 2008-07-16 한국전자통신연구원 멀티 쓰레드 기반 센서 운영체제 환경에서의 스택 할당방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100401560B1 (ko) * 1999-10-25 2003-10-17 엘지전자 주식회사 운영체제의 커널 스택 동적 할당 방법
KR100420268B1 (ko) * 2001-12-21 2004-03-02 한국전자통신연구원 스택을 이용한 커널 스케줄링 방법
KR101017351B1 (ko) 2007-05-02 2011-02-28 한국전자통신연구원 멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택재할당 방법
KR20200027204A (ko) * 2018-09-04 2020-03-12 삼성전자주식회사 전자장치 및 그 제어방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR920005138B1 (ko) * 1989-12-30 1992-06-26 한국전기통신공사 전전자 교환 시스템의 메모리 관리 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR920005138B1 (ko) * 1989-12-30 1992-06-26 한국전기통신공사 전전자 교환 시스템의 메모리 관리 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
김종현, 컴퓨터 조직과 구조, 1998(미국1996), (주)사이텍미디어, 269-282및466-468페이지 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100846451B1 (ko) * 2006-12-12 2008-07-16 한국전자통신연구원 멀티 쓰레드 기반 센서 운영체제 환경에서의 스택 할당방법

Also Published As

Publication number Publication date
KR19990050564A (ko) 1999-07-05

Similar Documents

Publication Publication Date Title
US6240531B1 (en) System and method for computer operating system protection
US6351794B1 (en) Computer resource management system
US4347565A (en) Address control system for software simulation
EP2588957B1 (en) Cooperative memory resource management via application-level balloon
US5437033A (en) System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
US6996828B1 (en) Multi-OS configuration method
US5386565A (en) Method and system for controlling/monitoring computer system having plural operating systems to run thereon
US5727178A (en) System and method for reducing stack physical memory requirements in a multitasking operating system
US7434224B2 (en) Plural operating systems having interrupts for all operating systems processed by the highest priority operating system
US5459869A (en) Method for providing protected mode services for device drivers and other resident software
JP3954088B2 (ja) 論理分割された(lpar)計算機でシステム・ファームウェア更新を安全に実行する機構
US7712104B2 (en) Multi OS configuration method and computer system
US5063499A (en) Method for a correlating virtual memory systems by redirecting access for used stock instead of supervisor stock during normal supervisor mode processing
US20060294519A1 (en) Virtual machine control method and program thereof
JPH02502764A (ja) 多重処理を行なう方法および構成
US20080168112A1 (en) Detecting Illegal Reuse of Memory with Low Resource Impact
US7552434B2 (en) Method of performing kernel task upon initial execution of process at user level
US7546600B2 (en) Method of assigning virtual process identifier to process within process domain
US6895583B1 (en) Task control block for a computing environment
KR100304355B1 (ko) 실시간시스템을위한스택관리방법
Wiseman et al. Eliminating the threat of kernel stack overflows
JP2005122334A (ja) メモリダンプ方法、メモリダンプ用プログラム及び仮想計算機システム
US7814288B2 (en) Protecting memory operations involving zero byte allocations
JPS6376028A (ja) 仮想計算機システムにおける命令ステツプ実行制御方式
KR100336717B1 (ko) 실시간 시스템을 위한 다중 쓰레드의 주소 공간 관리 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20040630

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee