KR19990076180A - 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간접근에 의한 시스템 장애 조기 발견 방법 - Google Patents

리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간접근에 의한 시스템 장애 조기 발견 방법 Download PDF

Info

Publication number
KR19990076180A
KR19990076180A KR1019980010890A KR19980010890A KR19990076180A KR 19990076180 A KR19990076180 A KR 19990076180A KR 1019980010890 A KR1019980010890 A KR 1019980010890A KR 19980010890 A KR19980010890 A KR 19980010890A KR 19990076180 A KR19990076180 A KR 19990076180A
Authority
KR
South Korea
Prior art keywords
command
address
user
program
data
Prior art date
Application number
KR1019980010890A
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 KR1019980010890A priority Critical patent/KR19990076180A/ko
Publication of KR19990076180A publication Critical patent/KR19990076180A/ko

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

리스크 기반의 내장된 시스템을 개발함에 있어, 유효하지 않은 메모리 주소를 접근하는 오류에 의한 시스템 장애를 조기에 발견하여 방지하는 방법에 관하여 개시한다. 본 방법의 바람직한 실시예는, 프로그램이 시작되면, CPU로 하여금 수행되는 모든 명령에 대하여 추적을 발생시키는 과정, 사용자 프로그램에서 명령의 종류를 검사하기 위하여 프로그램 카운터의 내용을 검사하는 과정, 이 프로그램 카운터가 코드 세그먼트의 경계내에 있는가의 여부를 묻는 과정, 이 프로그램 카운터가 코드 세그먼트의 경계내에 있다면, 명령을 패치하여 검사한 명령이 데이터를 접근하는 명령(Id, Ida, st)인지 검사하는 과정, 만일 데이터 접근 명령인 경우, 그 데이터 주소가 현재의 메모리 영역내의 유효한 주소인지를 판단하는 과정, 데이터 주소가 메모리 내에 있는 주소라면 명령을 실행하고, 다시 프로그램이 시작된 이후의 과정으로 되돌아 가는 과정, 및 데이터 주소가 메모리 밖으로의 경계를 접근하고 있거나 자유 메모리 영역에 접근하면, 사용자의 선택사양에 따라 명령의 실행을 중단할 것인가를 판단하여 행동하는 과정을 포함한다.

Description

리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법
본 발명은 리스크(Reduced Instruction Set Computer: RISC) 기반의 내장된 시스템(embedded system)에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법에 관한 것으로서, 특히 내장된 리스크 중앙 처리 장치(Central Processing Unit: 이하 CPU라 칭한다)인 i960을 이용한 내장된 시스템의 소프트웨어 개발에 있어서 유효하지 않은 메모리 주소(Invalid memory address)를 접근(access)함에 따른 시스템 정지 또는 장애를 별도의 장비없이, 내장된 CPU를 사용하는 전자, 통신 장비의 소프트웨어적인 검증으로 조기에 발견하는 방법에 관한 것이다.
통상적으로, 내장된 프로그램(Embedded Program)은 일반적인 컴퓨터 프로그램에 비해 완벽성을 기한다. 내장된 시스템에서의 프로그램 에러(Program Error)는 즉각 제품의 생산성과 직결되고 에러 처리 비용도 막대하게 소요된다. 따라서 내장된 시스템은 가급적 에러가 없어야 하지만, 리스크 기반의 내장된 시스템에서 소프트웨어를 개발하는 환경은 보통의 컴퓨터 시스템에 비해 그 개발 과정에서 사용할 수 있는 디버깅 도구(Debugging Tool)가 다양하지 못하다.
여러 가지 요인 중에서 실행 시간중에 일어나는 메모리 밖으로의 경계를 접근함으로써 발생하는 에러는 검출하기 가장 어렵다. 보통의 컴퓨터 시스템에서는 여러 가지 디버깅 도구가 있기 때문에 그리 어렵지 않으나, 내장된 시스템의 경우는 개발 환경이 그렇지 못하므로, 디버깅 작업 역시 매우 어렵다. 내장된 시스템의 개발에는 흔히 인 서킷 에뮬레이션(In-Circuit Emulator :ICE)이나 논리 분석기(Logic Analyzer)가 사용되나, 이들 장비의 가격은 매우 고가이고, 또 사용법을 배우기도 어려울 뿐더러, 시간을 많이 소모하는 작업이며, 효율적이지도 않다.
종래에는 예를 들어 여러 개발자가 같이 이더넷 스위치(Ethernet Switch) SS6016/100를 개발하는 경우, 개발자 각자마다 하나씩의 타겟 보드(Target Board) 즉, 개발 대상의 시스템을 가지고 소프트웨어를 개발하였고 소프트웨어 디버깅을 위해 인 서킷 에뮬레이터나 논리 분석기를 사용하였다. 인 서킷 에뮬레이터나 논리 분석기는 시스템의 심각한 장애(Critical Fault)를 감지하는데 아주 효과적인 장비이기는 하나, 항상 장비가 부족하였으며, 하나의 문제를 해결하기 위해 인 서킷 에뮬레이터에 트리거(어떠한 상황, 즉 이벤트(event)가 발생했을 때 특정 행동(action)을 유발시키는 것)를 걸어 놓고 보통 수십 시간씩 동작시켜야 했기 때문에 여러명의 개발자가 충분히 장비를 활용할 수 없었다. 소프트웨어 개발자는 다수이고, 인 서킷 에뮬레이터는 그 보다 적은 대수를 보유하고 있기 때문에 개발 기간이 길어지고 장비 사용으로 인한 비용 증가도 발생하였다.
i960 프로세서도 장애 취급 기계장치(Fault Handling mechanism)를 제공하는데, 이 장애 취급 기계장치는 정수 범람(integer overflow), 정의되지 않은 옵코드(undefined opcode), 램으로부터 코드 페치(code fetch from ram), 보호 장애(protection fault) 등의 장애만을 취급(handling)할 수 있다. 이런 종류의 장애들은 i960에 의해서 검출(detect)되며 i960내에서 처리된다. 또한, 디버깅 도구인 pROBE는 어떤 장애 또는 이벤트가 발생했을 때 단일 단계(single step)만을 지원하기 때문에 장기간 테스트(long-run test)시에는 사용이 불편하다는 문제점이 발생한다.
이 같은 불편을 해소하고자 좀 더 쉽게 소프트웨어만으로 시스템 충돌(Crash)을 검출할 수 있는 방법을 고안하게 되었다.
따라서, 본 발명은 상기된 바와 같은 문제점을 해결하기 위하여 창안된 것으로, 내장된 CPU를 사용하는 시스템에서 시스템 장애를 일으키는 요소를 소프트웨어적으로 검색하는 일련의 방법을 사용함으로써, 고가의 서킷 에뮬레이터나 논리 분석기없이 시스템의 장애를 실행 시간에 발견하게 해주어 개발비용 절감 및 개발 기간 단축을 위해, 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법을 제공하는 것을 목적으로 한다.
본 발명의 다른 목적과 장점은 아래의 발명의 상세한 설명을 읽고 아래의 도면을 참조하면 보다 명백해질 것이다.
도 1 은 본 발명에 따른 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애를 조기에 발견하는 과정을 나타낸 흐름도.
상기와 같은 목적을 달성하기 위하여 창안된 본 발명에 따른 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법의 바람직한 실시예는,
프로그램이 시작되면, CPU로 하여금 수행되는 모든 명령에 대하여 추적을 발생시키는 과정;
사용자 프로그램에서 명령의 종류를 검사하기 위하여 프로그램 카운터의 내용을 검사하는 과정;
상기 프로그램 카운터가 코드 세그먼트의 경계내에 있는가의 여부를 묻는 과정;
상기 프로그램 카운터가 코드 세그먼트의 경계내에 있다면, 명령을 패치하여 검사한 명령이 데이터를 접근하는 명령(Id, Ida, st)인지 검사하는 과정;
만일 데이터 접근 명령인 경우, 그 데이터 주소가 현재의 메모리 영역내의 유효한 주소인지를 판단하는 과정;
상기 데이터 주소가 메모리 내에 있는 주소라면 명령을 실행하고, 다시 상기 프로그램이 시작된 이후의 과정으로 되돌아 가는 과정; 및
상기 데이터 주소가 메모리 밖으로의 경계를 접근하고 있거나 자유 메모리 영역에 접근하면, 사용자의 선택사양에 따라 명령의 실행을 중단할 것인가를 판단하여 행동하는 과정을 포함한다.
본 발명에 있어서, 상기 프로그램 카운터가 코드 세그먼트의 경계내에 있는가의 여부를 묻는 과정에서 경계내에 없다면 실행을 멈추는 것이 바람직하고,
상기 사용자의 선택사양이란, 장애를 로그만 하고 수행할 것인지, 또는 사용자에게 통지를 할 것인지, 또는 수행을 중지할 것인지를 결정하는 것이 바람직하고,
상기 사용자의 선택사양에 따라 명령의 실행을 중단할 것인지를 판단하여 행동하는 과정은,
장애를 로그만 하고 계속 수행을 할 것인지, 또는 사용자에게 통지를 할 것인지, 또는 수행을 중지할 것이지를 결정하는 과정;
사용자가 선택하여 계속한다면, 상기 프로그램이 시작된 이후의 과정으로 다시 되돌아가는 과정; 및
계속하지 않는다면, 실행을 종료하는 과정으로 이루어지는 것이 바람직하고,
상기 방법은 내장된 시스템에서 모든 명령의 수행전에 유효하지 않은 명령을 검사함으로써 각 명령의 유효성을 검사하는 것이 바람직하며,
상기 방법은 데이터 주소를 접근하는 명령의 데이터 주소의 유효성을 검사하는 것이 바람직하며,
상기 과정들은 pROBE라는 디버거를 이용할 수 있는 것이 바람직하며,
상기 CPU는 내장된 리스크형 CPU인 것이 바람직하며,
상기 CPU가 트랩을 지원하지 않는 경우 타이머를 이용하는 것이 바람직하다.
본 발명은 리스크 기반의 내장된 시스템(RISC Based Embedded System)에서 동작하는 것을 전제로 하므로 리스크 CPU 기반의 내장된 시스템을 배경으로 하며, 리스크 CPU가 제공하는 장애 취급(Fault Handling)을 위한 추적(Trace) 기능과 추적 제어(Trace Control: TC) 레지스터와 타이머로 구성된다. 또한, 시스템 상에서 동작하는 소프트웨어로서 사용자가 제공하는 핸들러 루틴(Handler Routine)과 제어 루틴(Control Routine), 그리고 타이머 핸들러 루틴(Timer Handler Routine) 등으로 구성된다.
이하, 첨부한 도면을 참조하여 본 발명의 동작원리에 대하여 상세히 설명하면 다음과 같다.
이 알고리즘에서는 두 가지 타입의 검사를 수행한다. 첫째는, 유효하지 않은 명령(instruction)의 수행을 검사한다. 그 다음, 그 명령이 데이터 주소(Data address)를 참조(reference)하는지를 검사하고, 만일 그렇다면 그 데이터 주소가 유효한 공간에 존재하는지를 검사한다.
유효하지 않은 명령을 검사하는 이유는, 많은 시스템 충돌이 유효하지 않은 명령 주소로의 점프(jump)에 의해 발생하고 있기 때문이다. 두 번째 유효하지 않은 데이터 주소의 참조를 검사하는 것은 이 에러는 시스템의 동작을 전혀 예상치 못한 방향으로 이끌 수 있지만 탐지하기가 어렵기 때문이다. 실제로 이 유효하지 않은 데이터 주소 참조에 의한 에러는 개발자에게 하드웨어적인 에러로 보이기 쉬우며, 또한 경우에 따라서는 에러처럼 보이지 않기 때문에 디버깅 작업이 그만큼 지연되게 된다. 그러나 이 에러는 언젠가는 시스템을 정지시키는 결과를 낳고 있다. 이것은 특히, 개발자가 에러를 인식하지 못하고 제품을 생산하여 판매한 후에 발생할 경우 막대한 비용의 업그레이드(upgrade) 비용 지출을 초래할 수 있다.
도 1 은 본 발명에 따른 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애를 조기에 발견하는 과정을 나타낸 흐름도이다.
알고리즘의 주된 절차는, 프로그램이 시작되면(10) i960 CPU로 하여금 수행되는 모든 명령에 대하여 추적을 발생시키게 하고, 사용자 프로그램에서 명령의 종류를 검사하기 위하여 프로그램 카운터의 내용을 검사한다(12). 이 프로그램 카운터가 코드 세그먼트의 경계내에 있으면(14) 명령을 페치하여(16) 데이터를 접근하는 명령(Id, Ida, st)인지를 검사한다(18). 만일 데이터 접근 명령인 경우, 그 데이터 주소가 현재의 메모리 영역(memory region)내의 유효(valid)한 주소인지를 판단한다(20). 데이터 주소가 메모리 내에 있는 주소라면 명령을 실행하고(22), 데이터 주소가 메모리 밖으로의 경계(out of memory boundary)를 접근하고 있거나, 자유 메모리(free memory) 영역을 접근하면 사용자의 선택 사양에 따라 명령의 실행을 중단(24)할 것인가를 판단한 후 행동을 한다. 이러한 일련의 작업은 pROBE라는 디버거(debugger)를 이용하여 할 수도 있으나, 그 행동양식은 약간 다르다. pROBE는 사용자가 설정한 중지점(breakpoint)에 따라 이벤트가 발생했을 때 무조건 작업을 중지하고 단일 단계 명령 실행(single step instruction execution)을 제공하지만 주소의 유효성(validity)은 검사하지 않는다. 즉, 사용자가 눈으로 직접 확인을 하여야 한다. 이에 비해 이 알고리즘은 명령의 유효성과 데이터 주소의 유효성을 실시간에 검사하여, 장애 접근일 때 그냥 실행을 멈추는 것이 아니라 사용자가 미리 설정하나 양식에 따라 행동한다. 즉, 장애를 로그(log)만 하고 계속 수행을 할 것인지, 또는 사용자에게 통지(inform)를 할 것인지, 또는 수행을 중지할 것인지 등을 결정하게 된다.
본 발명은 다양하게 변형될 수 있고, 여러 가지 형태를 취할 수 있지만, 상기 발명의 상세한 설명에서는 그에 따라 특별한 실시예에 대해서만 기술하였다. 하지만, 본 발명은 명세서에서 언급된 특별한 형태로 한정되는 것이 아닌 것으로 이해되어야 하며, 오히려 본 발명은 첨부된 청구범위에 의해 정의된, 본 발명의 정신과 범위 내에 있는 모든 변형물, 균등물 및 대체물을 포함하는 것으로 이해되어야 한다.
상기와 같이 동작하는 본 발명의 효과는, 고가의 인 서킷 에뮬레이션이나 논리 분석기없이도 비유효한 메모리 접근을 검출할 수 있고, pROBE같은 디버깅 커널(debugging kernel)과는 달리 장애 발생 시 사용자가 정한 옵션에 따라 실행의 중지 여부를 결정할 수 있다는 것이다.
본 발명에서 제공하는 방법은 고가의 장비 없이 소프트웨어만으로 메모리 밖으로의 경계를 감지하여 시스템의 장애를 방지하는 것으로 개발 단계에서 유용하게 쓰일 수 있는 알고리즘이다. 특히 많은 소프트웨어 오류를 조기에 발견하여 수정할 수 있다는 잇점이 있다.

Claims (9)

  1. 프로그램이 시작되면, CPU로 하여금 수행되는 모든 명령에 대하여 추적을 발생시키는 과정;
    사용자 프로그램에서 명령의 종류를 검사하기 위하여 프로그램 카운터의 내용을 검사하는 과정;
    상기 프로그램 카운터가 코드 세그먼트의 경계내에 있는가의 여부를 묻는 과정;
    상기 프로그램 카운터가 코드 세그먼트의 경계내에 있다면, 명령을 패치하여 검사한 명령이 데이터를 접근하는 명령(Id, Ida, st)인지 검사하는 과정;
    만일 데이터 접근 명령인 경우, 그 데이터 주소가 현재의 메모리 영역내의 유효한 주소인지를 판단하는 과정;
    상기 데이터 주소가 메모리 내에 있는 주소라면 명령을 실행하고, 다시 상기 프로그램이 시작된 이후의 과정으로 되돌아 가는 과정; 및
    상기 데이터 주소가 메모리 밖으로의 경계를 접근하고 있거나 자유 메모리 영역에 접근하면, 사용자의 선택사양에 따라 명령의 실행을 중단할 것인가를 판단하여 행동하는 과정을 포함하는, 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법.
  2. 제 1 항에 있어서, 상기 프로그램 카운터가 코드 세그먼트의 경계내에 있는가의 여부를 묻는 과정에서 경계내에 없다면 실행을 멈추는, 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법.
  3. 제 1 항에 있어서, 상기 사용자의 선택사양이란, 장애를 로그만 하고 수행할 것인지, 또는 사용자에게 통지를 할 것인지, 또는 수행을 중지할 것인지를 결정하는 것인, 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법.
  4. 제 1 항에 있어서, 상기 사용자의 선택사양에 따라 명령의 실행을 중단할 것인지를 판단하여 행동하는 과정은,
    장애를 로그만 하고 계속 수행을 할 것인지, 또는 사용자에게 통지를 할 것인지, 또는 수행을 중지할 것이지를 결정하는 과정;
    사용자가 선택하여 계속한다면, 상기 프로그램이 시작된 이후의 과정으로 다시 되돌아가는 과정; 및
    계속하지 않는다면, 실행을 종료하는 과정으로 이루어진, 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법.
  5. 제 1 항에 있어서, 상기 방법은 내장된 시스템에서 모든 명령의 수행전에 유효하지 않은 명령을 검사함으로써 각 명령의 유효성을 검사하는, 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법.
  6. 제 1 항에 있어서, 상기 방법은 데이터 주소를 접근하는 명령의 데이터 주소의 유효성을 검사하는, 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법.
  7. 제 1 항에 있어서, 상기 과정들은 pROBE라는 디버거를 이용할 수 있는, 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법.
  8. 제 1 항에 있어서, 상기 CPU는 내장된 리스크형 CPU인, 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법.
  9. 제 8 항에 있어서, 상기 CPU가 트랩을 지원하지 않는 내장된 CPU인 경우 타이머를 이용하는, 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간 접근에 의한 시스템 장애 조기 발견 방법.
KR1019980010890A 1998-03-28 1998-03-28 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간접근에 의한 시스템 장애 조기 발견 방법 KR19990076180A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980010890A KR19990076180A (ko) 1998-03-28 1998-03-28 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간접근에 의한 시스템 장애 조기 발견 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980010890A KR19990076180A (ko) 1998-03-28 1998-03-28 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간접근에 의한 시스템 장애 조기 발견 방법

Publications (1)

Publication Number Publication Date
KR19990076180A true KR19990076180A (ko) 1999-10-15

Family

ID=65860999

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980010890A KR19990076180A (ko) 1998-03-28 1998-03-28 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간접근에 의한 시스템 장애 조기 발견 방법

Country Status (1)

Country Link
KR (1) KR19990076180A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100435783B1 (ko) * 2000-07-31 2004-06-12 엘지전자 주식회사 운영 체계에서 사용자 메모리 유효성 검증 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100435783B1 (ko) * 2000-07-31 2004-06-12 엘지전자 주식회사 운영 체계에서 사용자 메모리 유효성 검증 방법

Similar Documents

Publication Publication Date Title
US7536605B2 (en) Injection of software faults into an operational system
Sidiroglou et al. Building a reactive immune system for software services
Carreira et al. Xception: Software fault injection and monitoring in processor functional units
US6889167B2 (en) Diagnostic exerciser and methods therefor
CN110580226B (zh) 操作系统级程序的目标码覆盖率测试方法、系统及介质
KR101019209B1 (ko) 임베디드 소프트웨어의 인터페이스 자동 추출 장치 및 그방법
Gu et al. Error Sensitivity of the Linux Kernel Executing on PowerPC G4 and Pentium 4 Processors.
JP5905911B2 (ja) シングルステップ実行を用いる診断コード
KR20080050118A (ko) 임베디드용 소프트웨어의 오류 검출 방법
EP2615552A1 (en) System testing method
RU2454706C2 (ru) Способ отладки функционального программного обеспечения системы, установленной на борту летательного аппарата, и устройство для его осуществления
US7793160B1 (en) Systems and methods for tracing errors
US6237137B1 (en) Method and system for preventing unauthorized access to a computer program
Dovgalyuk Deterministic Replay of System's Execution with Multi-target QEMU Simulator for Dynamic Analysis and Reverse Debugging.
Barbosa et al. Assembly-level pre-injection analysis for improving fault injection efficiency
US20080127118A1 (en) Method and system for dynamic patching of software
US7526756B2 (en) Address watch breakpoints with basing pointers
Jiang et al. Fuzzing error handling code in device drivers based on software fault injection
US7100027B1 (en) System and method for reproducing system executions using a replay handler
Yu et al. VDTest: An automated framework to support testing for virtual devices
US5404499A (en) Semi-automatic program execution error detection
KR19990076180A (ko) 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간접근에 의한 시스템 장애 조기 발견 방법
Cioroaica et al. Accelerated simulated fault injection testing
Hin et al. Supporting RISC-V full system simulation in gem5
Bai et al. Hybrid static-dynamic analysis of data races caused by inconsistent locking discipline in device drivers

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
SUBM Submission of document of abandonment before or after decision of registration