KR100350484B1 - 저장 디바이스에서 스택과 관련된 커랩션을 검출하기 위한장치 및 방법 - Google Patents

저장 디바이스에서 스택과 관련된 커랩션을 검출하기 위한장치 및 방법 Download PDF

Info

Publication number
KR100350484B1
KR100350484B1 KR1019990052272A KR19990052272A KR100350484B1 KR 100350484 B1 KR100350484 B1 KR 100350484B1 KR 1019990052272 A KR1019990052272 A KR 1019990052272A KR 19990052272 A KR19990052272 A KR 19990052272A KR 100350484 B1 KR100350484 B1 KR 100350484B1
Authority
KR
South Korea
Prior art keywords
stack
processor
stacks
storage device
protection
Prior art date
Application number
KR1019990052272A
Other languages
English (en)
Other versions
KR20000052371A (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 삼성전자 주식회사
Publication of KR20000052371A publication Critical patent/KR20000052371A/ko
Application granted granted Critical
Publication of KR100350484B1 publication Critical patent/KR100350484B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0763Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 기억 장치 내의 스택과 관련된 커랩션(corruption)을 검출하기 위한 기술에 관한 것이다. 본 발명의 일실시예에서, 처리 장치가 기억 장치 내의 스택에 인접하여 초기 상태를 갖는 다량의 정보를 입력하게 된다. 상기 처리 장치는 상기 정보가 초기 상태로부터 이탈되는 것을 확인하여 기억 장치 내의 스택과 관련된 커랩션을 검출하기 위하여 상기 다량의 정보를 검사한다.

Description

저장 디바이스에서 스택과 관련된 커랩션을 검출하기 위한 장치 및 방법{APPARATUS AND METHOD FOR DETECTING CORRUPTION ASSOCIATED WITH A STACK IN A STORAGE DEVICE}
본 발명은 다중 태스킹 시스템에 관한 것으로, 보다 상세히 설명하면 기억 장치 내의 스택과 관련된 커랩션(corruption)을 검출하기 위한 장치 및 방법에 관한 것이다.
실시간 내장 시스템(real time embeded system)은 종종 다양한 응용 조건을 충족시키기 위하여 다중 디스크 처리 환경을 제공한다. 다중 태스킹 환경에 있어서, 통상적으로 각각의 태스크에 대하여 개별 스택(즉, 개별 작업 공간)이 필요하다. 각각의 스택은, 해당 태스크에 필요한 동적 기능 변수(dynamic function variable)가 저장되는 하나의 위치 또는 일군의 위치를 제공한다. 일반적으로, 각 스택은 비순차적 메모리의 전용 공간에 할당될 수 있지만, 스택 각각은 순차 메모리의 전용 범위에 할당된다. 그럼에도 불구하고, 스택은 오버플로우(overflow) 및 언더플로우(underflow)의 영역에서 언제나 문제점들을 갖고 있다.
이러한 스택 오버플로우는 스택 메모리가 작업 부하 요구(workload demand)를 충족하기에 불충분할 때에 발생한다. 스택 언더플로우는 태스크가 너무 많은 기능 변수를 스택으로부터 팝핑(poping)하는 시도를 할 때에 발생한다. 이들 중 어느 하나가 동작하더라도 인접한 메모리의 커랩션을 야기시킨다. 인접한 메모리의 커랩션은 예측할 수 없는 결과를 발생시키며, 문제점의 임시 분석(즉, 문제의 근원을 발견하는 것)이 곤란하게 된다.
스택 오버플로우 및 언더플로우 문제점에 대한 통상적인 해결책은 스택 메모리를 충분하게 과할당(over-allocate)하거나 하드웨어 기록 보호 수단을 사용하는 것이다. 첫째 해결책은 그러한 문제점들을 기본적으로 무시하지만, 그것이 절대 발생하지 않을 것으로 확신하지 못한다. 스택 커랩션이 동적 조건이므로, 이러한 해결책은 단점들을 내포한다. 둘째 해결책은 전술한 검출 문제를 해결하지만, 추가적인 복잡한 하드웨어의 구성 비용과 이에 따른 하드웨어 고장율의 증가를 초래한다.
전술한 스택 오버플로우 및 언더플로우 문제점에 대한 소프트웨어적인 해결책은 푸시(push) 동작이 발생할 때는 언제나 카운터에 하나를 가산시키고(즉, +1), 팝(pop) 동작이 발생할 때는 언제나 카운터로부터 하나를 감산함으로써(즉, -1), 스택 상에 존재하는 기능 변수들의 수를 트래킹하는 것이다. 그러나, 복잡한 푸시/팝 동작이 수행되면(즉, 푸시/팝 동작이 다수의 상이한 장소에서 이루어지게되면), 이러한 모든 장소가 필요한 가감 동작을 수행하는 것을 보장하기 곤란하다. 한편, 푸시 및 팝 동작을 수행하기 위한 중앙 집중식 과정 및/또는 기능이 생성될 수 있으며, 여기서 적정 가감 동작이 수행된다. 그러나, 이것은 이러한 과정 및/또는 기능을 불러내는 것이 요구됨으로써, 추가적인 메모리 공간 및 처리 시간을 필요로 한다.
이상에서와 같이, 전술한 스택 오버플로우 및 언더플로우 문제점들을 해결하고, 전술한 종래 해결책의 결점을 극복하는 기술을 제공하는 것이 바람직하다. 보다 상세하게는, 다중 태스킹 환경에서 스택 커랩션을 검출하기 위한 기술을 제공하는 것이 바람직하다.
본 발명의 주 목적은 기억 장치 내의 스택과 관련된 커랩션을 검출하기 위한 장치 및 방법을 제공하는 것이다.
상기 목적 이외의 본 발명의 다른 목적, 특징 및 장점은 첨부 도면과 관련한 하기의 상세한 설명으로부터 명백하게 될 것이다.
도 1은 본 발명에 따른 다중 태스킹 환경의 구현을 용이하게 하는 처리 시스템의 개략적 다이어그램이다.
도 2는 본 발명에 따라서 복수 개의 메시지를 그 수신 순서로 및/또는 그에 대응하는 사건의 발생 순서로 저장하기 위한 예시적인 메시지를 도시하는 도면이다.
도 3은 본 발명에 따라서, 태스크에 의하여 호출되는 서로 다른 기능과 관련된 변수를 저장하기 위하여 메모리 내의 스택 공간에 태스크가 할당되는 예시적인 스택 구조를 도시하는 도면이다.
도 4는 본 발명에 따른 복수 개의 스택과 이에 대응하는 복수 개의 보호 프레임을 갖는 예시적인 스택 구조를 도시하는 도면이다.
※도면의 주요 부분에 대한 부호의 설명※
1, 2, 42 : 스택
10 : 처리 시스템
12 : 프로세서
14 : 메모리
16 : 입력/출력 인터페이스
20 : 큐
44 : 보호 프레임
46 : 메모리 공간
본 발명에 따르면, 기억 장치 내의 스택과 관련된 커랩션을 검출하기 위한 기술이 제공된다. 본 기술은 프로세서가 메시지 큐(queue)로부터 메시지를 수신하여 태스크를 수행하고, 그 메시지에 저장된 정보에 기초하여 태스크를 수행하는데 필요한 하나 이상의 특정 기능을 불러내어 그 메시지를 처리하는, 다중 태스크 환경에서 유리하게 이용된다.
각각의 태스크 경우에, 대응하는 태스크를 수행하는데 필요한 것으로서 기능 변수를 저장하기 위하여 기억 장치, 예를 들면 메모리 내에 스택이 형성된다. 그릇된 태스크, 기능 또는 스택 자체로 인하여 스택과 관련된 커랩션이 발생할 수 있다.
본 기술은 디지털 마이크로프로세서와 같은 처리 장치를 구비함으로써 실현되며, 기억 장치 내의 스택에 인접하여 다량의 정보를 입력할 수 있다. 상기 다량의 정보는 예를 들면, 비트 패턴, 프로세서 판독가능 어드레스 또는 프로세서 판독가능 명령어와 같은 기 설정된 다양한 특성을 나타낼 수 있는 초기 상태를 갖는다. 상기 다량의 정보가 기억 장치 내의 스택에 인접하여 삽입된 이후에, 처리 장치는 상기 정보가 초기 상태로부터 이탈되는 것을 확인함으로써 기억 장치 내의 스택과 관련된 커랩션을 검출하고 기억 장치 내의 스택과 관련된 커랩션을 검출하도록 소정의 동작이 발생한 이후에 다량의 정보를 검사한다.
제1 동작 시에, 상기 다량의 정보가 기억 장치 내의 스택에 인접하여 삽입된 이후에 데이터가 스택에 부가된다. 통상 푸시(push) 동작이라고 불리는 이러한 제1 동작은 다량의 정보가 초기 상태로부터 이탈되는 것을 유발시킬 수 있다. 검사에 의해 이러한 이탈이 확인되면, 푸시 동작은 기록되며, 교정 조치가 취해질 수 있다.
제2 동작에 있어서, 상기 다량의 정보가 기억 장치 내의 스택과 인접하여 삽입된 이후에 데이터는 스택으로부터 삭제된다. 팝(pop) 동작이라 불리는 이러한 제2 동작도 또한 다량의 정보가 초기 상태로부터 이탈되는 것을 유발시킬 수 있다.검사에 의해 이러한 이탈이 확인되면, 팝 동작은 기록되며, 교정 조치가 취해질 수 있다.
초기 상태로부터의 이탈이 확인된 이후에, 처리 장치는 일반적으로 상기 다량의 정보를 초기 상태로 복원함으로써, 초기 상태로부터의 연속적인 이탈을 검출할 수 있다.
본 발명의 일 실시예에 있어서, 처리 장치는 기억 장치 내의 스택 상부에 인접하여 다량의 제1 정보를 삽입하며, 기억 장치 내의 스택 하부에 인접하여 다량의 제2 정보를 삽입한다. 본 실시예에 따르면, 스택 오버플로우와 언더플로우 상태를 검출할 수 있다.
도 1은 본 발명에 따른 다중 태스킹 환경의 구현을 용이하게 하기 위하여 적어도 하나의 프로세서(P)(12), 메모리(M)(14), 그리고 버스(18)에 의해 서로 접속된 삽입/출력 인터페이스(16)를 구비하는 처리 시스템(10)을 도시한다. 이러한 다중 태스킹 환경에 있어서, 프로세서(12)는 일반적으로 메시지 큐로부터 메시지를 검색하고, 메시지에 저장된 정보에 기초하여 태스크를 수행하는데 필요한 하나 이상의 특정 기능을 불러내어 메시지를 처리함으로써 그 태스크를 수행한다. 메시지는 통상적으로 삽입/출력 인터페이스(16)를 통해 처리 시스템(10)에 의하여 수신된 사건(event)을 확인한다. 또는, 메시지가 처리 시스템(10) 내에서 발생하는 사건을 확인할 수 있다. 여하튼, 각각의 메시지는 메시지 큐 내에서 수신된 순서로 저장되거나, 대응하는 사건의 발생 순서로 저장되는 것이 일반적이다. 예를 들면, 도 2에는 수신된 순서로 저장되거나, 대응하는 사건의 발생 순서로 저장된 복수 개의 메시지를 갖는 메시지 큐(20)가 도시되어 있다. 이러한 큐(20)는 메모리(14)내에 위치하는 것이 일반적이다.
다시 도1을 참조하면, 메모리(14)는 또한 운용 시스템 소프트웨어를 구비하는 것이 일반적인데, 처리 시스템(10)이 기동할 때 이 소프트웨어에 의하여 프로세서(12)는 복수 개의 태스크를 설정하여 대응하는 복수 개의 전용 작업 공간이나 스택을 메모리(14) 내에서 할당한다. 각각의 스택은 하나의 기억장소 또는 일군의 기억장소를 메모리(14) 내에 제공하며, 여기서 해당 태스크 수행을 위해 필요한 기능 변수들이 저장될 수도 있다. 예를 들면, 도 3에는 스택 구조(30)가 도시되어 있는데, 여기서 각각의 태스크는 각각의 태스크를 위해 불러내어진 다른 기능들(Functions)과 관련된 변수(Variable)를 저장하기 위하여 메모리(14) 내에서 스택 공간에 할당된다. 도 3은 순차 메모리의 전용 범위를 포함하는 스택을 각각 도시하고 있지만, 본 발명에 따르면, 스택은 후술된 바와 같이 비순차 메모리의 전용 공간을 포함할 수 있다.
다시 도 1을 참조하면, 각각의 태스크는 처리 시스템(10)이 기동할 때 대응하는 태스크를 따라 통상 설정되는 기능들의 집합체이다. 각각의 기능은 기능의 호출, 기능 매개변수 및 지역 변수의 저장을 포함하는 예정된 본형(template)을 구비한다. 각각의 기능들을 불러오는 횟수는 알려져 있지 않다. 또한 불러오게 되는 기능들의 개수도 알려져 있지 않다. 이들 두 가지 요소의 조합은 스택 크기를 알 수 없게 한다. 이에 대해서는 다음 페이지에서 설명하기로 한다. 이러한 메모리 필요 조건들은 컴파일 시간(compile time)에서 완전히 알려져 있지 않은 것이일반적이다. 따라서, 이러한 지식의 결여에 기인하여, 처리 시스템(10)이 기동될 때 각각의 태스크에 대하여 할당되는 스택 공간의 크기는 종종 부적합하며, 스택 오버플로우(overflow) 및 언더플로우(underflow)가 보호 수단이 없이 쉽게 발생할 수 있다.
동작 시에, 운용 시스템 소프트웨어에 의하여 프로세서(12)가 작업 부하 요구 및 우선권에 기초하여 특정 태스크를 동작시킨다. 태스크는 프로세서가 메시지 큐로부터 제1 메시지를 수신할 때 메시지 처리를 개시한다. 프로세서(12)는 메시지에 속한 정보에 기초하여 태스크를 수행하는데 필요한 하나 이상의 특정 기능을 불러내어 메시지를 처리한다. 각각의 기능이 불려질 때, 추가적인 스택 공간이 사용된다.
스택의 동적 표시양상(dynamic aspect)은 그 깊이이다. 즉, 필요한 스택의 깊이는, 메시지를 처리하기 위하여 기능 변수가 스택 상에 푸시 및 팝될 때 얼마나 많은 기능 변수가 어떤 단일의 실행 드래드(execution thread)를 위한 스택 상에 위치하느냐에 의거한다. 이것은 반복과 같은 구현기술에 기인하여 속성상 비결정적이다. 따라서, 스택의 요구되는 깊이의 이러한 비결정적 속성 에 기인하여, 처리 시스템(10)이 기동할 때 각각의 태스크에 대하여 할당된 스택 공간의 크기는 종종 부적합하며, 스택 오버플로우 및 언더플로우가 보호 수단 없이 쉽게 발생될 수 있다.
본 발명의 실시예에 따르면, 스택 오버플로우와 언더플로우를 방지하기 위하여 보호 수단이 채용된다. 즉, 스택 각각의 상부 및 하부에 보호 프레임(guardframe)이 삽입되어, 스택 오버플로우 및 언더플로우에 의하여 야기된 스택 커랩션이 보호 기능에 의하여 검출될 수 있게 한다. 스택 커랩션이 검출되면, 스택 커랩션의 원인이되는 기능을 설정할 수 있으며, 교정 조치가 취해질 수 있다.
도 4는 본 발명에 따른 복수 개의 스택(42)과 대응하는 복수 개의 보호 프레임(44)을 갖는 스택 구조(40)를 도시한다. 각각의 보호 프레임(44)은 대응하는 스택(42)과 상접하며, 메모리(14)에서 하나 이상의 바이트 단위로 저장된 고정 비트 패턴을 포함하는 것이 바람직하다. 예를 들면, 보호 프레임(44)은 교호(Alternate) 하는 1(즉, 논리 레벨 1)과 0(즉, 논리 레벨 0)의 비트 패턴을 포함하는 바이트들의 시퀀스로 구성될 수 있다. 또한, 보호 프레임(44)은 프로세서(12)가 몇몇 예정된 위치 또는 상태에 도달하도록 하는 어드레스 또는 명령어를 갖는 바이트들의 시퀀스로 구성될 수 있다.
각각의 보호 프레임(44)의 크기는 그 구현과는 독립적이지만, 언제나 대응하는 스택(42)과 비교하여 비교적 작다. 중요한 문제로는, 보호 프레임(44) 각각이 랜덤 데이터 패턴과 구별되도록 충분히 커야하고, 인접 스택에 대하여 커랩션을 방지하기에 충분히 커야하며, 성능 상의 부담이 되지 않도록 충분히 작아야 하는 것이다. 이 점에서, 두 개의 물리적으로 인접한 스택[예를 들면, 도 4에서 스택(1)과 스택(2)]이 동일한 보호 프레임[예를 들면, 도 4에서 스택(1)과 스택(2) 사이에 위치하는 보호 프레임(44)]을 공유할 수 있는 것에 주목하여야 한다. 그러나, 두 개의 스택이 물리적으로 인접하지 않으면(즉, 두 개의 스택이 다른 목적으로 전용되는 메모리 공간에 의하여 분리되면), 통상적으로 각각의 스택에 대하여 별개의보호 프레임이 요구된다(즉, 두 개의 스택은 하나의 보호 프레임을 공유할 수 없다). 예를 들면, 스택(2)과 스택(N) 사이의 메모리 공간(46)이 다른 목적으로 전용되면(즉, 메모리 공간(46)이 하나 이상의 스택에 전용되지 않으면), 메모리 공간(46)에서 스택(2)이나 스택(N)에 인접한 스택이 존재하지 않을 뿐만 아니라, 스택(2)이나 스택(N) 어느 것도 메모리 공간(46) 내의 다른 스택과 함께 보호 프레임을 공유할 수 없다.
기능 변수가 스택(42) 상에 푸시되거나 또는 그로부터 팝될 때마다, 보호 기능에 의하여 적정 보호 프레임(44)이 검사된다. 예를 들면, 기능 변수가 스택(42) 상에 푸시되면, 보호 기능은 스택(42)의 하부에서 보호 프레임(44)을 검사하여, 기능의 최소 공간 필요 조건에 기초하여 오버플로우가 발생하였는지 또는 발생할 것인지를 알 수 있다. 보호 프레임(44)이 커랩션(예를 들면, 중복 기재)되었을 때 또는 기능의 최소 공간 요구를 만족시키기에 불충분한 메모리가 존재할 때 오버플로우가 발생한다. 보호 기능이 오버플로우가 발생하였거나 또는 발생할 수 있을 것으로 설정하게되면, 이 보호 기능은 오펜딩(offending) 기능 및 태스크를 기록하고, 태스크 클린업 및 레크레이션을 개시한다. 태스크의 일부가 클린업되면, 보호 프레임(44)은 미리 커랩션된 상태로 복원된다.
이와 반대의 경우로서, 기능 변수가 스택(42)으로부터 팝되면, 보호 기능은 스택(42)의 상부에서 보호 프레임을 검사하여, 언더플로우가 발생하였는가를 확인한다. 스택(42) 상에 기능 변수가 존재하지 않고 팝 기능이 수행되면 언더플로우가 발생한다. 이러한 경우에 보호 프레임(44)은 커랩션된다. 이것은 스택 깊이혼동을 야기하는 태스크, 기능 또는 심지어 스택(42)의 몇몇 종류의 커랩션이 존재할 때 통상적으로 발생한다. 보호 기능은 언더플로우가 발생하였는지를 측정하면, 보호 프레임은 오펜딩 기능 및 태스크를 기록하고, 태스크 클린업 및 레크레이션을 개시한다. 다시, 태스크 클린업의 일부로서, 보호 프레임(44)이 미리 커랩션된 상태로 복원된다.
이러한 보호 기능은 푸시 또는 팝 작용이 발생할 때는 언제나 호출되는 별도의 기능인 것에 주목하여야 한다. 즉, 보호 기능은 보호 프레임과 협력하여 스택 오버플로우 및 언더플로우 문제에 대한 소프트웨어에 기초한 해결책으로서, 초과 메모리 할당 및 하드웨어 기록 보호 시스템과 같은 전통적인 해결책의 단점을 극복한다. 게다가, 종래 소프트웨어 해결책과 달리, 본 발명의 보호 기능 및 보호 프레임 해결책은 카운터를 유지 관리하거나 계산을 수행할 필요가 없다. 즉, 본 발명의 보호 기능 및 보호 프레임 해결책은 최소의 오버헤드를 필요로 한다.
스택 오버플로우 및 언더플로우 문제에 대한 본 발명의 보호 기능 및 보호 프레임 해결책은 스택 커랩션을 검출하고, 인접한 스택의 커랩션을 방지하며 그리고 오펜딩 기능, 태스크 및 소프트웨어를 격리하기 위한 기구를 제공한다. 이러한 기구를 동작시키면, 실시간 내장 컨트롤러의 신뢰성이 개선된다. 이러한 부가적인 장점은 하드웨어 기록 보호 수단이 없는 기존의 시스템과 메모리 마이닝(mining)을 필요로 하는 시스템에 적용될 수 있는 것이다.
본 발명은 본원에 기술된 특정 실시예에 의하여 보호 범위가 제한되지 않는다. 본원에 기술된 것 이외에 본 발명의 여러 가지 수정이 전술한 설명 및 도면으로부터 당업자에게 명백할 것이다. 따라서, 이러한 수정은 본 발명의 청구 범위에 속하는 것으로 간주된다.

Claims (25)

  1. 프로세서와, 상기 프로세서에 의해 처리될 태스크들 각각의 수행을 위한 기능 변수가 저장되는 스택들이 형성되는 기억 장치를 포함하는 처리 시스템에서, 상기 기억장치의 스택들과 관련된 커랩션을 상기 프로세서에 의해 검출하기 위한 방법에 있어서,
    상기 각 스택들에 인접하는 보호 프레임들을 형성하고 상기 각 보호 프레임들에 초기 상태를 가지는 미리 설정된 정보를 삽입하는 단계와,
    상기 프로세서에 의한 태스크 수행중에 상기 보호 프레임들중 해당하는 프레임에 삽입된 설정 정보의 상태가 초기 상태로부터 이탈하였는지 검사함으로써 해당하는 스택에서 커랩션이 발생하였는지를 검출하는 단계를 포함하는 것을 특징으로 하는 커랩션 검출 방법.
  2. 제1항에 있어서, 상기 설정 정보는 비트 패턴임을 특징으로 하는 커랩션 검출 방법.
  3. 제1항에 있어서, 상기 설정 정보는 프로세서 판독가능 어드레스임을 특징으로 하는 커랩션 검출 방법.
  4. 제1항에 있어서, 상기 설정 정보는 프로세서 판독가능 명령어임을 특징으로 하는 커랩션 검출 방법.
  5. 제1항에 있어서, 상기 검사하는 단계는 상기 프로세서에 의해 해당하는 프레임의 스택상에 기능 변수가 푸시(push)되는 경우에 수행됨을 특징으로 하는 커랩션 검출 방법.
  6. 제5항에 있어서, 상기 검사 결과 커랩션이 발생한 것으로 검출되는 경우, 상기 푸시 결과에 따른 태스크를 기록하는 단계를 더 포함하는 것을 특징으로 하는 커랩션 검출 방법.
  7. 제1항에 있어서, 상기 검사하는 단계는 상기 프로세서에 의해 해당하는 프레임의 스택상에 기능 변수가 풀(pull)되는 경우에 수행됨을 특징으로 하는 커랩션 검출 방법.
  8. 제7항에 있어서, 상기 검사 결과 커랩션이 발생한 것으로 검출되는 경우, 상기 풀 결과에 따른 태스크를 기록하는 단계를 더 포함하는 것을 특징으로 하는 커랩션 검출 방법.
  9. 제6항 또는 제8항에 있어서, 상기 기록하는 단계를 수행한 후 해당하는 보호 프레임을 복원하는 단계를 더 포함하는 것을 특징으로 하는 커랩션 검출 방법.
  10. 제1항에 있어서, 상기 각 스택들에 형성되는 보호 프레임들은 상기 각 스택들의 상부 및 하부에 인접하는 보호 프레임들임을 특징으로 하는 커랩션 검출 방법.
  11. 기억 장치 내의 스택과 관련된 커랩션을 검출하기 위한 시스템에 있어서,
    프로세서와;
    상기 프로세서에 의해 처리될 태스크들 각각의 수행을 위한 기능 변수가 저장되는 스택들이 형성되는 기억 장치를 포함하며;
    상기 프로세서는 상기 각 스택들에 인접하는 보호 프레임들을 형성하고 상기 각 보호 프레임들에 초기 상태를 가지는 미리 설정된 정보를 삽입하고, 태스크 수행중에 상기 보호 프레임들중 해당하는 프레임에 삽입된 설정 정보의 상태가 초기 상태로부터 이탈하였는지 검사함으로써 해당하는 스택에서 커랩션이 발생하였는지를 검출하는 동작을 수행함을 특징으로 하는 커랩션 검출 시스템.
  12. 제11항에 있어서, 상기 설정 정보는 비트 패턴임을 특징으로 하는 커랩션 검출 시스템.
  13. 제11항에 있어서, 상기 설정 정보는 프로세서 판독가능 어드레스임을 특징으로 하는 커랩션 검출 시스템.
  14. 제11항에 있어서, 상기 설정 정보는 프로세서 판독가능 명령어임을 특징으로 하는 커랩션 검출 시스템.
  15. 제11항에 있어서, 상기 프로세서는 해당하는 프레임의 스택상에 기능 변수가 푸시(push)되는 경우에 상기 검사하는 동작을 수행함을 특징으로 하는 커랩션 검출 시스템.
  16. 제15항에 있어서, 상기 프로세서는 상기 검사 결과 커랩션이 발생한 것으로 검출되는 경우, 상기 푸시 결과에 따른 태스크를 기록하는 동작을 더 수행함을 특징으로 하는 커랩션 검출 시스템.
  17. 제11항에 있어서, 상기 프로세서는 해당하는 프레임의 스택상에 기능 변수가 풀(pull)되는 경우에 상기 검사하는 단계를 수행함을 특징으로 하는 커랩션 검출 시스템.
  18. 제17항에 있어서, 상기 프로세서는 상기 검사 결과 커랩션이 발생한 것으로 검출되는 경우, 상기 풀 결과에 따른 태스크를 기록하는 동작을 더 수행함을 특징으로 하는 커랩션 검출 시스템.
  19. 제16항 또는 제18항에 있어서, 상기 프로세서는 상기 기록하는 동작을 수행한 후 해당하는 보호 프레임을 복원하는 동작을 더 수행함을 특징으로 하는 커랩션 검출 시스템.
  20. 제11항에 있어서, 상기 각 스택들에 형성되는 보호 프레임들은 상기 각 스택들의 상부 및 하부에 인접하는 보호 프레임들임을 특징으로 하는 커랩션 검출 시스템.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1019990052272A 1998-11-23 1999-11-23 저장 디바이스에서 스택과 관련된 커랩션을 검출하기 위한장치 및 방법 KR100350484B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US9/197,993 1998-11-23
US09/197,993 1998-11-23
US09/197,993 US7380245B1 (en) 1998-11-23 1998-11-23 Technique for detecting corruption associated with a stack in a storage device

Publications (2)

Publication Number Publication Date
KR20000052371A KR20000052371A (ko) 2000-08-25
KR100350484B1 true KR100350484B1 (ko) 2002-08-28

Family

ID=22731571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990052272A KR100350484B1 (ko) 1998-11-23 1999-11-23 저장 디바이스에서 스택과 관련된 커랩션을 검출하기 위한장치 및 방법

Country Status (2)

Country Link
US (1) US7380245B1 (ko)
KR (1) KR100350484B1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7849444B2 (en) * 2004-12-21 2010-12-07 National Instruments Corporation Test executive with buffer overwrite detection for parameters of user-supplied code modules
US7613954B2 (en) * 2004-12-21 2009-11-03 National Instruments Corporation Test executive with stack corruption detection
US7797505B2 (en) * 2005-04-25 2010-09-14 Hewlett-Packard Development Company, L.P. Program stack handling
US8510596B1 (en) * 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US7661016B2 (en) * 2006-02-23 2010-02-09 Librato, Inc. Method for a checkpoint library to detect corruption by an application
US7991962B2 (en) * 2007-12-10 2011-08-02 International Business Machines Corporation System and method of using threads and thread-local storage
US8239836B1 (en) * 2008-03-07 2012-08-07 The Regents Of The University Of California Multi-variant parallel program execution to detect malicious code injection
US8099636B2 (en) * 2008-07-15 2012-01-17 Caterpillar Inc. System and method for protecting memory stacks using a debug unit
US8245002B2 (en) * 2008-10-08 2012-08-14 International Business Machines Corporation Call stack protection
FR2974648A1 (fr) * 2011-04-29 2012-11-02 St Microelectronics Rousset Protection d'une memoire vive contre des attaques par injection de fautes
FR2977694A1 (fr) 2011-07-08 2013-01-11 St Microelectronics Rousset Microprocesseur protege contre un debordement de pile
US8930657B2 (en) * 2011-07-18 2015-01-06 Infineon Technologies Ag Method and apparatus for realtime detection of heap memory corruption by buffer overruns
US8677189B2 (en) * 2011-11-16 2014-03-18 GM Global Technology Operations LLC Recovering from stack corruption faults in embedded software systems
US9026866B2 (en) 2012-04-23 2015-05-05 Infineon Technologies Ag Method and system for realtime detection of stack frame corruption during nested procedure calls
US9223974B2 (en) * 2013-07-09 2015-12-29 Globalfoundries Inc. Anti-viral compiler
US10079841B2 (en) 2013-09-12 2018-09-18 Virsec Systems, Inc. Automated runtime detection of malware
US10354074B2 (en) 2014-06-24 2019-07-16 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
US9977897B2 (en) * 2014-07-16 2018-05-22 Leviathan Security Group, Inc. System and method for detecting stack pivot programming exploit
US9576128B1 (en) * 2016-01-06 2017-02-21 International Business Machines Corporation Interlinking routines with differing protections using stack indicators
US10228992B2 (en) 2016-01-06 2019-03-12 International Business Machines Corporation Providing instructions to facilitate detection of corrupt stacks
US10120745B2 (en) 2016-01-06 2018-11-06 International Business Machines Corporation Providing instructions to protect stack return addresses in a hardware managed stack architecture
US9582274B1 (en) 2016-01-06 2017-02-28 International Business Machines Corporation Architected store and verify guard word instructions
US9495237B1 (en) 2016-01-06 2016-11-15 International Business Machines Corporation Detection of corruption of call stacks
US9606855B1 (en) 2016-01-06 2017-03-28 International Business Machines Corporation Caller protected stack return address in a hardware managed stack architecture
US9514301B1 (en) 2016-01-06 2016-12-06 International Business Machines Corporation Interlinking modules with differing protections using stack indicators
CA3027728A1 (en) 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
JP6905190B2 (ja) * 2017-09-01 2021-07-21 富士通株式会社 情報処理装置およびスタック破壊検出プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0635733A (ja) * 1992-07-16 1994-02-10 Fujitsu Ltd スタック検出方式
JPH06168145A (ja) * 1991-02-08 1994-06-14 Hitachi Ltd スタック制御方式及びマイクロコンピュータ
JPH09167117A (ja) * 1995-12-15 1997-06-24 Hitachi Ltd マイクロコンピュータおよびこれを用いたリアルタイムシステム
JPH09198258A (ja) * 1996-01-19 1997-07-31 Nec Corp タスクスタックオーバーフロー検出回路

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5107457A (en) * 1989-04-03 1992-04-21 The Johns Hopkins University Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack
US5222220A (en) * 1989-11-16 1993-06-22 Mehta Hemang S Microprocessor stack built-in guards
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
US5572698A (en) * 1994-04-18 1996-11-05 Rolm Company System and method for allocating memory resources where the category of a memory resource determines where on a circular stack a pointer to the memory resource is placed
US5628016A (en) * 1994-06-15 1997-05-06 Borland International, Inc. Systems and methods and implementing exception handling using exception registration records stored in stack memory
US5630066A (en) * 1994-12-20 1997-05-13 Sun Microsystems, Inc. System and method for locating object view and platform independent object
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US6070198A (en) * 1995-10-19 2000-05-30 Hewlett-Packard Company Encryption with a streams-based protocol stack
US5907709A (en) * 1996-02-08 1999-05-25 Inprise Corporation Development system with methods for detecting invalid use and management of resources and memory at runtime
US5890181A (en) * 1996-11-14 1999-03-30 Kurzwell Applied Intelligence, Inc. System and method for remotely grouping contents of an action history stack
US5950221A (en) * 1997-02-06 1999-09-07 Microsoft Corporation Variably-sized kernel memory stacks
US6157999A (en) * 1997-06-03 2000-12-05 Motorola Inc. Data processing system having a synchronizing link stack and method thereof
US6161219A (en) * 1997-07-03 2000-12-12 The University Of Iowa Research Foundation System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints
US5949973A (en) * 1997-07-25 1999-09-07 Memco Software, Ltd. Method of relocating the stack in a computer system for preventing overrate by an exploit program
US6006323A (en) * 1998-05-20 1999-12-21 Industrial Technology Research Institute Intelligent multiple stack management unit
JP3552627B2 (ja) * 2000-02-04 2004-08-11 インターナショナル・ビジネス・マシーンズ・コーポレーション スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06168145A (ja) * 1991-02-08 1994-06-14 Hitachi Ltd スタック制御方式及びマイクロコンピュータ
JPH0635733A (ja) * 1992-07-16 1994-02-10 Fujitsu Ltd スタック検出方式
JPH09167117A (ja) * 1995-12-15 1997-06-24 Hitachi Ltd マイクロコンピュータおよびこれを用いたリアルタイムシステム
JPH09198258A (ja) * 1996-01-19 1997-07-31 Nec Corp タスクスタックオーバーフロー検出回路

Also Published As

Publication number Publication date
US7380245B1 (en) 2008-05-27
KR20000052371A (ko) 2000-08-25

Similar Documents

Publication Publication Date Title
KR100350484B1 (ko) 저장 디바이스에서 스택과 관련된 커랩션을 검출하기 위한장치 및 방법
EP0945797B1 (en) Method and apparatus for object-oriented interrupt system
CN1316362C (zh) 重定位在多线程计算机中共享的计算机数据的设备和方法
US5842016A (en) Thread synchronization in a garbage-collected system using execution barriers
CN101154180B (zh) 一种任务栈溢出的监测方法
US20070011415A1 (en) Apparatus and method for deterministic garbage collection of a heap memory
JPH0816457A (ja) 自動ガーベジ・コレクション方法
US6182244B1 (en) System and method for automatically initiating a tracing facility and dynamically changing the levels of tracing currently active
US5974249A (en) Zero footprint method and apparatus for expanding allocated memory space of a process using a virtual memory area
WO2005022387A2 (en) Circuit arrangement and method for supporting and monitoring a microcontroller
US6397243B1 (en) Method and device for processing several technical applications each provided with its particular security
CN112162893A (zh) 一种内存泄漏定位方法、装置及电子设备
FR2503900A1 (fr) Dispositif de reprise pour installation de traitement de donnees
JP2000155677A (ja) プログラムの暴走防止方法、そのためのコンピューターシステムと暴走防止プログラムを記録した記録媒体
JP2507579B2 (ja) 発生頻度別ロギング情報格納方式
JP2904130B2 (ja) プログラム誤動作検出開発支援装置およびプログラム誤動作検出方法
JPH06309236A (ja) メモリの不正書込み検出回路
WO2022043807A1 (en) Work stealing for concurrent marking garbage collection with finger pointer
JPH0695927A (ja) 障害情報記録方式
JPH11161506A (ja) 情報処理装置のディスパッチ方法、情報処理装置及びその記録媒体
JPH02253359A (ja) 動的割当て領域のデータ内容保護方式
JPH01300357A (ja) 電子ディスク装置
JPH05241861A (ja) オペレーティングシステムの空きメモリ管理方式
JPS60179855A (ja) プログラム実行ル−ト記録方法
JPH06282463A (ja) プログラムテストにおけるメモリ管理方法

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: 20120730

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20130730

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee