KR101785540B1 - 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치 - Google Patents

비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치 Download PDF

Info

Publication number
KR101785540B1
KR101785540B1 KR1020160099001A KR20160099001A KR101785540B1 KR 101785540 B1 KR101785540 B1 KR 101785540B1 KR 1020160099001 A KR1020160099001 A KR 1020160099001A KR 20160099001 A KR20160099001 A KR 20160099001A KR 101785540 B1 KR101785540 B1 KR 101785540B1
Authority
KR
South Korea
Prior art keywords
processor
emulation
context
state information
interrupt
Prior art date
Application number
KR1020160099001A
Other languages
English (en)
Other versions
KR20170105394A (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 KR20170105394A publication Critical patent/KR20170105394A/ko
Application granted granted Critical
Publication of KR101785540B1 publication Critical patent/KR101785540B1/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치에 관한 것이다. 일실시예에 따른 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법에 있어서, 하드웨어 인터럽트 요청이 발생한 경우, 프로그램 실행 컨텍스트로부터 전환된 인터럽트 컨텍스트에서 기록 에뮬레이션 동작을 수행하는 단계, 상기 기록 에뮬레이션 동작을 수행하는 것에 대응하여, 상기 인터럽트 컨텍스트로부터 전환된 에뮬레이션 컨텍스트에서 프로세서의 상태정보를 저장장치에 저장하는 단계 및 상기 프로세서의 상태정보를 저장장치에 저장한 후, 상기 에뮬레이션 컨텍스트로부터 전환된 인터럽트 컨텍스트에서 상기 요청된 하드웨어 인터럽트를 처리하는 단계를 포함할 수 있다.

Description

비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치{EMULATION METHOD AND APPARATUS FOR PROCESSING REQUEST FOR NON-DETERMINISTIC HARDWARE INTERRUPT}
본 발명은 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치에 관한 것이다.
운영체제(OS)가 실행되는 시스템에는 다양한 인터럽트 요청(interrupt request)이 발생할 수 있다. 이와 같은 인터럽트 요청은 현재 실행중인 프로그램과 별개로 언제 어디서 발생할지 비결정적이다.
인터럽트 요청의 비결정적인 특성은, 인터럽트 요청을 처리하는 에뮬레이션 과정 상의 소프트웨어 디버깅, 에뮬레이션 기록 및 재현, 시스템 가상화 및 백업/복원에서 해결하기 어려운 문제로 알려져 있다. 인터럽트 요청을 처리하는 에뮬레이션 방법에는 하드웨어적으로 트레이스(trace)를 저장하고 이를 기반으로 프로그램 행위를 재현하는 방법, 소프트웨어적으로 이벤트를 기록하고 재현하는 방법 및 체크포인트를 이용하는 방법의 세가지 방법이 주로 이용된다.
이와 같은 종래의 에뮬레이션 방법들은 기록 및 재현 등의 정확도가 낮기 때문에 동일한 시점 및 동일한 장소에서 인터럽트 요청이 발생하더라도, 이를 재현하는 것이 불가능한 경우가 있으며, 인터럽트 요청을 처리하기 위해 가상 머신 또는 별도의 하드웨어를 구비해야 하는 경우가 있다.
본 발명은 기록 및 재현 과정에 있어 낮은 정확도를 가지는 종래의 에뮬레이션 방법들의 문제를 해결하기 위한 것이다. 본 발명에 따르면 비결정적인 인터럽트 요청을 처리하기 위해 에뮬레이션 기록 및 재현이 필요한 경우, 인빌드(in-build) 형태로 인터럽트 요청을 처리함으로써 높은 정확도로 에뮬레이션 기록 및 재현이 가능하다.
일실시예에 따른 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법에 있어서, 하드웨어 인터럽트 요청이 발생한 경우, 프로그램 실행 컨텍스트로부터 전환된 인터럽트 컨텍스트에서 기록 에뮬레이션 동작을 수행하는 단계, 상기 기록 에뮬레이션 동작을 수행하는 것에 대응하여, 상기 인터럽트 컨텍스트로부터 전환된 에뮬레이션 컨텍스트에서 프로세서의 상태정보를 저장장치에 저장하는 단계 및 상기 프로세서의 상태정보를 저장장치에 저장한 후, 상기 에뮬레이션 컨텍스트로부터 전환된 인터럽트 컨텍스트에서 상기 요청된 하드웨어 인터럽트를 처리하는 단계를 포함할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법에 있어서, 상기 요청된 하드웨어 인터럽트를 처리하는 단계는, 상기 요청된 하드웨어 인터럽트가 처리된 후, 상기 인터럽트 컨텍스트를 상기 프로그램 실행 컨텍스트로 전환하는 단계 및 상기 전환된 프로그램 실행 컨텍스트에서, 상기 하드웨어 인터럽트 요청의 발생으로 중지된 프로세스를 재개하는 단계를 포함할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법에 있어서, 상기 기록 에뮬레이션 동작을 수행하는 단계는, 상기 프로그램 실행 컨텍스트에서 실행 중인 프로세스를 중지하는 단계를 포함할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법에 있어서, 상기 저장장치에 저장되는 프로세서의 상태정보는, 상기 하드웨어 인터럽트 요청이 발생한 때 및 상기 기록 에뮬레이션 동작이 수행된 때의 프로세서의 상태정보를 포함하며, 상기 프로세서의 상태정보는 컨텍스트 상태 간 상호배타성을 유지하기 위해 저장되는 것을 특징으로 할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트 요청을 처리하는 에뮬레이션 방법에 있어서, 하드웨어 인터럽트에 대한 에뮬레이션 요청이 발생한 경우, 프로그램 실행 컨텍스트에서 탐색 에뮬레이션 동작을 수행하는 단계, 상기 탐색 에뮬레이션 동작을 수행하는 것에 대응하여, 상기 프로그램 실행 컨텍스트로부터 전환된 에뮬레이션 컨텍스트에서 프로세서의 상태정보를 로드(load)하는 단계, 상기 로드된 프로세서의 상태정보에 포함된 상기 인터럽트 요청의 발생 위치에 브레이크포인트를 설정하는 단계 및 상기 브레이크포인트를 설정한 후, 상기 에뮬레이션 컨텍스트로부터 전환된 프로그램 실행 컨텍스트에서 상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는지 판단하는 단계를 포함할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트 요청을 처리하는 에뮬레이션 방법에 있어서, 상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는지 판단하는 단계는, 상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는 경우, 상기 프로그램 실행 컨텍스트로부터 전환된 디버그 컨텍스트에서 재현 에뮬레이션 동작을 수행하는 단계, 상기 디버그 컨텍스트로부터 전환된 에뮬레이션 컨텍스트에서, 상기 이벤트가 발생한 때의 프로세서의 상태정보와 상기 로드된 프로세서의 상태정보를 상기 수행된 재현 에뮬레이션 동작을 통해 비교하는 단계, 상기 이벤트가 발생한 때의 프로세서의 상태정보와 상기 로드된 프로세서의 상태정보가 다를 경우, 상기 프로그램 실행 컨텍스트로 복귀하여 상기 이벤트 발생으로 중지된 프로세스를 재개하는 단계를 포함할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트 요청을 처리하는 에뮬레이션 방법에 있어서, 상기 재현 에뮬레이션 동작을 수행하는 단계는, 상기 프로그램 실행 컨텍스트에서 실행 중인 프로세스를 중지하는 단계를 포함할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트 요청을 처리하는 에뮬레이션 방법에 있어서, 상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는지 판단하는 단계는, 상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는 경우, 상기 프로그램 실행 컨텍스트로부터 전환된 디버그 컨텍스트에서 재현 에뮬레이션 동작을 수행하는 단계, 상기 디버그 컨텍스트로부터 전환된 에뮬레이션 컨텍스트에서, 상기 이벤트가 발생한 때의 프로세서의 상태정보와 상기 로드된 프로세서의 상태정보를 상기 수행된 재현 에뮬레이션 동작을 통해 비교하는 단계, 상기 이벤트가 발생한 때의 프로세서의 상태정보와 상기 로드된 프로세서의 상태정보가 동일한 경우, 상기 이벤트가 발생한 때의 프로세서의 상태정보에 포함된 복귀 정보를 상기 로드된 프로세서의 상태정보에 포함된 복귀 정보로 변경하는 단계 및 상기 변경된 복귀 정보에 따라, 상기 에뮬레이션 컨텍스트로부터 전환된 인터럽트 컨텍스트에서 상기 요청된 하드웨어 인터럽트를 처리하는 단계를 포함할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트 요청을 처리하는 에뮬레이션 방법에 있어서, 상기 재현 에뮬레이션 동작을 수행하는 단계는, 상기 프로그램 실행 컨텍스트에서 실행 중인 프로세스를 중지하는 단계를 포함할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트 요청을 처리하는 에뮬레이션 방법에 있어서, 상기 요청된 하드웨어 인터럽트를 처리하는 단계는, 상기 요청된 하드웨어 인터럽트가 처리된 후, 상기 인터럽트 컨텍스트를 상기 프로그램 실행 컨텍스트로 전환하는 단계 및 상기 전환된 프로그램 실행 컨텍스트에서, 상기 하드웨어 인터럽트 요청의 발생으로 중지된 프로세스를 재개하는 단계를 포함할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트 요청을 처리하는 에뮬레이션 방법에 있어서, 상기 로드된 프로세서의 상태정보는, 상기 하드웨어 인터럽트 요청이 발생한 때 및 기록 에뮬레이션 동작이 실행된 때의 프로세서의 상태정보를 포함하며, 상기 프로세서의 상태정보는 컨텍스트 상태 간 상호배타성을 유지하기 위해 저장되는 것을 특징으로 할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 장치에 있어서, 저장장치 및 프로세서를 포함하고, 상기 프로세서는, 하드웨어 인터럽트 요청이 발생한 경우, 프로그램 실행 컨텍스트로부터 전환된 인터럽트 컨텍스트에서 기록 에뮬레이션 동작을 수행하고, 상기 기록 에뮬레이션 동작을 수행하는 것에 대응하여, 상기 인터럽트 컨텍스트로부터 전환된 에뮬레이션 컨텍스트에서 프로세서의상태정보를 상기 저장장치에 저장하고, 상기 프로세서의 상태정보를 저장장치에 저장한 후, 상기 에뮬레이션 컨텍스트로부터 전환된 인터럽트 컨텍스트에서 상기 요청된 하드웨어 인터럽트를 처리할 수 있다.
일실시예에 따른 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 장치에 있어서, 저장장치 및 프로세서를 포함하고, 상기 프로세서는, 하드웨어 인터럽트에 대한 에뮬레이션 요청이 발생한 경우, 프로그램 실행 컨텍스트에서 탐색 에뮬레이션 동작을 수행하고, 상기 탐색 에뮬레이션 동작을 수행하는 것에 대응하여, 상기 프로그램 실행 컨텍스트로부터 전환된 에뮬레이션 컨텍스트에서 프로세서의 상태정보를 상기 저장장치로부터 로드(load)하고, 상기 로드된 프로세서의 상태정보에 포함된 상기 에뮬레이션 요청의 발생 위치에 브레이크포인트를 설정하고, 상기 브레이크포인트를 설정한 후, 상기 인터럽트 컨텍스트로부터 전환된 프로그램 실행 컨텍스트에서 상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는지 판단할 수 있다.
본 발명의 일실시예에 따르면, 인빌드(in-build) 형태로 인터럽트 요청을 처리함으로써 높은 정확도로 에뮬레이션 기록 및 재현이 가능하다.
본 발명의 일실시예에 따르면, 입출력장치와 같은 주변 장치를 구비하지 않은 백업용 미러링 서버가 주서버의 행동을 복제할 수 있다. 이에 따라, 주서버가 파괴되거나 동작 불가능한 상황에 처하더라도 미러링 서버를 통해 주서버의 데이터를 복구할 수 있다.
본 발명의 일실시예에 따르면, 시스템이 외부로부터 실제 공격을 받은 적이 없더라도 공격에 대한 기록을 에뮬레이션할 수 있으며, 이를 통해 시스템의 성능이나 문제점을 미리 탐색할 수 있다.
도 1은 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 장치를 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션을 기록하는 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션을 재현하는 방법을 설명하기 위한 도면이다.
도 4는 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션을 기록하는 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션을 재현하는 방법을 설명하기 위한 도면이다.
도 6은 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션을 재현하는 방법을 설명하기 위한 도면이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 “연결되어” 있다거나 “접속되어” 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 “직접 연결되어” 있다거나 “직접 접속되어” 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 “~사이에”와 “바로~사이에” 또는 “~에 직접 이웃하는” 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, “포함하다” 또는 “가지다” 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 장치를 설명하기 위한 도면이다.
일실시예에 따른 에뮬레이션 장치(100)는 프로세서(110), 저장장치(120), 기록 에뮬레이션 모듈(130), 탐색 에뮬레이션 모듈(140) 또는 재현 에뮬레이션 모듈(150) 중 적어도 하나를 포함할 수 있다.
프로세서(110)는 시스템 운영체제(OS)를 통해 소프트웨어를 실행할 수 있다. 시스템 운영체제는 소프트웨어 또는 각종 함수가 실행되는 환경으로서 복수의 컨텍스트를 포함할 수 있다. 예를 들어, 시스템 운영체제는 프로그램 실행 컨텍스트, 인터럽트 컨텍스트, 에뮬레이션 컨텍스트 또는 디버그 컨텍스트 등의 실행 컨텍스트를 포함할 수 있다. 프로세서(110)는 시스템 운영체제에 포함된 복수의 컨텍스트들을 상호 전환하는 동작을 수행할 수 있다.
시스템 운영체제에 포함된 컨텍스트들은 상호 배타적이며 다른 컨텍스트의 소프트웨어 실행 및 상태에 영향을 주지 않는다. 예를 들어, ARM 프로세서는 상호독립적인 컨텍스트 구현이 용이하도록 프로그램 상태 모드(program status mode)를 제공한다. 일실시예에 따라, ARM 프로세서의 IRQ(Interrupt Request) 모드를 인터럽트 컨텍스트로 정의할 수 있다. ARM 프로세서에서 브레이크포인트 이벤트가 발생하면 자동으로 진입하는 Prefetch Abort 모드를 디버그 컨텍스트로 정의할 수 있다. ARM 프로세서의 User 모드, Supervisor 모드 및 System 모드를 프로그램 실행 컨텍스트로 정의할 수 있다. 또한, ARM 프로세서의 Prefetch Abort 모드에 대응하는 디버그 컨텍스트와 상호배타적으로 동작하도록 별도로 구현된 컨텍스트로써 에뮬레이션 컨텍스트를 정의할 수 있다.
저장장치(120)는 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 저장장치(120)는, 예를 들면, 에뮬레이션 장치(100)에 포함된 구성요소와 관련된 명령 또는 데이터를 저장할 수 있다. 저장장치(120)는 소프트웨어 및/또는 프로그램을 저장할 수 있다. 프로그램은, 예를 들면, 커널, 미들웨어, 어플리케이션 프로그래밍 인터페이스(application programming interface(API)), 및/또는 어플리케이션 프로그램(또는 "어플리케이션") 등을 포함할 수 있다.
기록 에뮬레이션 모듈(130)은 에뮬레이션을 기록하는 기능 및 동작을 수행할 수 있는 하드웨어를 의미할 수 있다. 기록 에뮬레이션 모듈(130)은 에뮬레이션을 기록하는 기능 및 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수 있고, 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예를 들어 프로세서 또는 마이크로 프로세서를 의미할 수도 있다. 프로세서(110)는 기록 에뮬레이션 모듈(130)을 이용하여 에뮬레이션을 저장장치(120)에 기록하는 동작인 기록 에뮬레이션 동작을 수행할 수 있다. 기록 에뮬레이션 동작은 인터럽트 요청이 발생한 때의 프로세서의 상태정보와 기록 에뮬레이션 모듈이 실행된 때의 프로세서의 상태정보를 저장장치(120)에 저장하는 동작을 포함할 수 있다. 인터럽트 요청이 발생한 때의 프로세서의 상태정보와 기록 에뮬레이션 모듈이 실행된 때의 프로세서의 상태정보는 컨텍스트의 상호배타성을 유지하기 위해 저장되는 상태정보들이다.
탐색 에뮬레이션 모듈(140)은, 에뮬레이션을 탐색하는 기능 및 동작을 수행할 수 있는 하드웨어를 의미할 수 있다. 탐색 에뮬레이션 모듈(140)은 에뮬레이션을 탐색하는 기능 및 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수 있고, 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예를 들어 프로세서 또는 마이크로 프로세서를 의미할 수도 있다. 프로세서(110)는 탐색 에뮬레이션 모듈(140)을 이용하여 저장장치(120)에 저장된 에뮬레이션을 탐색하는 동작인 탐색 에뮬레이션 동작을 수행할 수 있다. 탐색 에뮬레이션 동작은 프로세서의 상태정보를 저장장치(120)로부터 로드(load)하는 동작을 포함할 수 있다. 저장장치로부터 로드된 프로세서의 상태정보에는 인터럽트 요청이 발생한 때의 프로세서의 상태정보와 기록 에뮬레이션 모듈이 실행된 때의 프로세서의 상태정보가 포함될 수 있다.
재현 에뮬레이션 모듈(150)은, 에뮬레이션을 재현하는 기능 및 동작을 수행할 수 있는 하드웨어를 의미할 수 있다. 재현 에뮬레이션 모듈(150)은 에뮬레이션을 재현하는 기능 및 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수 있고, 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예를 들어 프로세서 또는 마이크로 프로세서를 의미할 수도 있다. 프로세서(110)는 재현 에뮬레이션 모듈(150)을 이용하여 에뮬레이션을 재현하는 기능 및 동작을 수행하는 재현 에뮬레이션 동작을 수행할 수 있다. 재현 에뮬레이션 동작은 브레이크포인트에 대응하는 이벤트가 발생한 지점 및 시점이 인터럽트 요청이 발생한 지점 및 시점에 해당하는지 확인하기 위하여, 브레이크포인트에 대응하는 이벤트가 발생한 때의 프로세서의 상태정보와 저장장치로부터 로드된 프로세서의 상태정보를 비교하는 동작을 포함할 수 있다. 재현 에뮬레이션 동작은, 브레이크포인트에 대응하는 이벤트가 발생한 때의 프로세서의 상태정보와 저장장치로부터 로드된 프로세서의 상태정보가 동일한 경우, 브레이크포인트에 대응하는 이벤트가 발생한 때의 프로세서의 상태정보에 포함된 복귀 정보를 저장장치로부터 로드된 프로세서의 상태정보에 포함된 복귀 정보로 변경하는 동작을 포함할 수 있다.
상기한 모듈들은 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및/또는 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다.
도 2는 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션을 기록하는 방법을 설명하기 위한 도면이다.
단계(210)에서, 프로세서는 시스템 운영체제의 인터럽트 컨텍스트에서 기록 에뮬레이션 동작을 수행할 수 있다. 예를 들어, 하드웨어 인터럽트에 대한 요청이 발생한 경우, 프로세서는 시스템 운영체제의 프로그램 실행 컨텍스트를 인터럽트 컨텍스트로 전환할 수 있다. 이렇게 전환된 인터럽트 컨텍스트에서, 프로세서는 기록 에뮬레이션 동작을 수행할 수 있다. 기록 에뮬레이션 동작은 인터럽트 요청이 발생한 때의 프로세서의 상태정보와 기록 에뮬레이션 동작이 수행된 때의 프로세서의 상태정보를 저장장치에 저장하는 동작을 포함할 수 있다. 인터럽트 요청이 발생한 때의 프로세서의 상태정보와 기록 에뮬레이션 동작이 수행된 때의 프로세서의 상태정보는 컨텍스트의 상호배타성을 유지하기 위해 저장되는 상태정보들이다.
단계(220)에서, 프로세서는 시스템 운영체제의 에뮬레이션 컨텍스트에서프로세서의 상태정보를 저장장치에 저장할 수 있다. 예를 들어, 기록 에뮬레이션 동작을 수행하는 것에 대응하여, 프로세서는 인터럽트 컨텍스트를 에뮬레이션 컨텍스트로 전환할 수 있다. 이렇게 전환된 에뮬레이션 컨텍스트에서, 프로세서는 기록 에뮬레이션 동작을 통해 프로세서의 상태정보를 저장장치에 저장할 수 있다. 기록 에뮬레이션 동작은 인터럽트 요청이 발생한 때의 프로세서의 상태정보와 기록 에뮬레이션 모듈이 실행된 때의 프로세서의 상태정보를 저장장치에 저장하는 동작을 포함할 수 있다.
단계(230)에서, 프로세서는 시스템 운영체제의 인터럽트 컨텍스트에서, 앞서 요청된 하드웨어 인터럽트를 처리할 수 있다. 예를 들어, 프로세서의 상태정보를 저장장치에 저장한 후, 프로세서는 에뮬레이션 컨텍스트를 인터럽트 컨텍스트로 전환할 수 있다. 이렇게 전환된 인터럽트 컨텍스트에서, 프로세서는 앞서 요청된 하드웨어 인터럽트를 처리할 수 있다. 요청된 하드웨어 인터럽트를 처리한 후, 프로세서는 인터럽트 컨텍스트를 프로그램 실행 컨텍스트로 전환할 수 있다.
도 3은 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션을 재현하는 방법을 설명하기 위한 도면이다.
단계(310)에서, 프로세서는 프로그램 실행 컨텍스트에서 탐색 에뮬레이션 동작을 수행할 수 있다. 예를 들어, 하드웨어 인터럽트에 대한 에뮬레이션 요청이 발생한 경우, 프로세서는 프로그램 실행 컨텍스트에서 탐색 에뮬레이션 동작을 수행할 수 있다. 또한, 탐색 에뮬레이션 동작의 수행에 대응하여, 프로세서는 프로그램 실행 컨텍스트를 에뮬레이션 컨텍스트로 전환할 수 있다.
단계(320)에서, 프로세서는 탐색 에뮬레이션 동작을 통해 저장장치에 저장된 프로세서의 상태정보를 로드(load) 할 수 있다. 저장장치에 저장된 프로세서의 상태정보에는 하드웨어 인터럽트 요청이 발생한 때 및 기록 에뮬레이션 동작이 수행된 때의 프로세서의 상태정보가 포함될 수 있다.
단계(330)에서, 프로세서는 로드된 프로세서의 상태정보에 포함된 인터럽트 요청의 발생 위치에 브레이크포인트를 설정할 수 있다. 즉, 저장장치로부터 로드된 프로세서의 상태정보에는 하드웨어 인터럽트 요청이 발생한 때 및 기록 에뮬레이션 동작이 수행된 때의 프로세서의 상태정보와 함께, 하드웨어 인터럽트 요청의 발생 위치에 대응하는 상태정보가 포함될 수 있다. 브레이크포인트는 실행중인 프로그램을 의도적으로 잠시 또는 아예 멈추게 하는 지점 또는 시점 의미하는 것으로서 디버깅을 목적으로 설정될 수 있다. 브레이크포인트는 이미 실행중인 프로그램에 대한 정보를 알아내기 위한 수단으로 사용될 수 있다. 사용자는 브레이크포인트를 설정하며 원하는 시점에 프로그램 실행을 중단하기 위한 조건도 설정할 수 있다.
단계(340)에서, 프로세서는 설정된 브레이크포인트에 대응하는 이벤트가 발생하는지 판단할 수 있다. 예를 들어, 브레이크포인트 설정이 완료되면, 프로세서는 에뮬레이션 컨텍스트를 프로그램 실행 컨텍스트로 전환할 수 있다. 이렇게 전환된 프로그램 실행 컨텍스트에서, 프로세서는 설정된 브레이크포인트에 대응하는 이벤트가 발생하는지 판단할 수 있다.
도 4는 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션을 기록하는 방법을 설명하기 위한 도면이다.
일실시예에 따르면, 시스템 운영체제의 프로그램 실행 컨텍스트에서 소프트웨어가 실행되는 중 비결정적인 하드웨어 인터럽트 요청이 발생할 수 있다. 예를 들어, 사용자가 키보드 버튼을 누르는 경우 키보드 인터럽트 요청이 중앙처리유닛인 프로세서에 전달될 수 있다.
단계(410)에서, 프로세서는 하드웨어 인터럽트 요청을 전달받고 프로그램 실행 컨텍스트에서 실행 중인 소프트웨어를 중지할 수 있다. 이와 동시에, 프로세서는 프로그램 실행 컨텍스트를 인터럽트 컨텍스트로 전환할 수 있다.
단계(420)에서, 프로세서는 인터럽트 컨텍스트에서 기록 에뮬레이션 모듈을 실행할 수 있다. 프로세서는 기록 에뮬레이션 모듈의 실행에 대응하여 인터럽트 컨텍스트를 에뮬레이션 컨텍스트로 전환할 수 있다. 프로세서는 기록 에뮬레이션 모듈을 이용하여 에뮬레이션을 저장장치에 기록하는 동작인 기록 에뮬레이션 동작을 수행할 수 있다. 기록 에뮬레이션 동작은 인터럽트 요청이 발생한 때(410)의 프로세서의 상태정보와 기록 에뮬레이션 모듈이 실행된 때(420)의 프로세서의 상태정보를 저장장치에 저장하는 동작을 포함할 수 있다. 인터럽트 요청이 발생한 때(410)의 프로세서의 상태정보와 기록 에뮬레이션 모듈이 실행된 때(420)의 프로세서의 상태정보는 컨텍스트의 상호배타성을 유지하기 위해 저장되는 상태정보들이다.
단계(430)에서, 프로세서는 에뮬레이션 컨텍스트에서 프로세서의 상태정보를 저장장치에 저장할 수 있다. 예를 들어, 기록 에뮬레이션 동작의 수행에 대응하여, 프로세서는 인터럽트 컨텍스트를 에뮬레이션 컨텍스트로 전환할 수 있다. 이렇게 전환된 에뮬레이션 컨텍스트 상태에서, 프로세서는 기록 에뮬레이션 동작을 통해 프로세서의 상태정보를 저장장치에 저장할 수 있다. 기록 에뮬레이션 동작은 인터럽트 요청이 발생한 때의 프로세서의 상태정보와 기록 에뮬레이션 모듈이 실행된 때의 프로세서의 상태정보를 저장장치에 저장하는 동작을 포함할 수 있다. 저장장치에 저장되는 상태정보에는 프로세서의 레지스터 값과 스택 메모리 값들이 포함될 수 있다.
단계(430)에서 프로세서의 상태정보를 저장장치에 저장하는 동작이 완료되면, 프로세서는 에뮬레이션 컨텍스트를 인터럽트 컨텍스트로 전환할 수 있다. 프로세서는 인터럽트 컨텍스트에서 기록 에뮬레이션 모듈을 실행함과 동시에 기록 에뮬레이션 모듈이 실행된 때의 프로세서의 상태정보를 이용하여 복귀 지점을 설정할 수 있다. 복귀 지점(440)의 상태정보는 기록 에뮬레이션 모듈이 실행된 때(420)의 프로세서의 상태정보와 동일하게 설정될 수 있다. 다시 말해, 에뮬레이션 컨텍스트에서 인터럽트 컨텍스트로 전환된 때(440)의 프로세서의 상태정보와 기록 에뮬레이션 모듈이 실행된 때(420)의 프로세서의 상태정보는 동일하게 설정될 수 있다. 인터럽트 컨텍스트에서 에뮬레이션 컨텍스트로 전환이 시작될 때(420)의 상태정보와 에뮬레이션 컨텍스트에서 인터럽트 컨텍스트로 전환이 완료될 때(440)의 상태정보를 동일하게 설정함으로써 컨텍스트 간의 상호배타성을 유지할 수 있다.
단계(450)에서, 프로세서는 앞서 요청된 인터럽트를 처리할 수 있다. 예를 들어, 단계(410)에서 키보드를 통해 요청된 하드웨어 인터럽트를 처리하기 위해, 프로세서는 입력된 키보드 값을 시스템 운영체제 내의 버퍼에 저장하는 동작을 수행할 수 있다.
단계(450)에서 요청된 인터럽트의 처리가 완료되면, 프로세서는 인터럽트 컨텍스트를 프로그램 실행 컨텍스트로 전환할 수 있다. 프로그램 실행 컨텍스트에서 인터럽트 요청이 발생할 경우, 프로세서는 인터럽트 요청이 발생한 때의 프로세서의 상태정보를 이용하여 복귀 지점을 설정할 수 있다. 복귀 지점(460)의 상태정보는 인터럽트 요청이 발생한 때(410)의 프로세서의 상태정보와 동일하게 설정될 수 있다. 다시 말해, 프로그램 실행 컨텍스트에서 인터럽트 요청이 발생한 때(410)의 프로세서의 상태정보와 인터럽트 컨텍스트에서 프로그램 실행 컨텍스트로 전환된 때(460)의 프로세서의 상태정보는 동일하게 설정될 수 있다. 프로그램 실행 컨텍스트에서 인터럽트 요청이 발생한 때(410)의 프로세서의 상태정보와 인터럽트 컨텍스트에서 프로그램 실행 컨텍스트로 전환된 때(460)의 프로세서의 상태정보를 동일하게 설정함으로써 컨텍스트 간의 상호배타성을 유지할 수 있다.
단계(460)에서, 프로세서는 프로그램 실행 컨텍스트에서 인터럽트 요청이 발생하기 전에 실행 중이던 프로세스를 재개할 수 있다.
도 5는 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션을 재현하는 방법을 설명하기 위한 도면이다.
일실시예에 따르면, 시스템 운영체제의 프로그램 실행 컨텍스트에서 소프트웨어가 실행되는 중, 저장장치에 기록된 인터럽트에 대한 에뮬레이션 요청이 발생할 수 있다.
단계(510)에서, 프로세서는 인터럽트에 대한 에뮬레이션 요청을 전달받고 프로그램 실행 컨텍스트에서 실행 중인 소프트웨어를 중지할 수 있다. 이와 동시에, 프로세서는 탐색 에뮬레이션 모듈을 실행할 수 있다. 프로세서는 탐색 에뮬레이션 모듈의 실행에 대응하여 프로그램 실행 컨텍스트를 에뮬레이션 컨텍스트로 전환할 수 있다.
단계(520)에서, 프로세서는 탐색 에뮬레이션 모듈을 이용하여 저장장치에 저장된 에뮬레이션을 탐색하는 동작인 탐색 에뮬레이션 동작을 수행할 수 있다. 탐색 에뮬레이션 동작은 프로세서의 상태정보를 저장장치로부터 로드(load)하는 동작을 포함할 수 있다. 저장장치로부터 로드된 프로세서의 상태정보에는 인터럽트 요청이 발생한 때의 프로세서의 상태정보와 기록 에뮬레이션 모듈이 실행된 때의 프로세서의 상태정보가 포함될 수 있다.
단계(530)에서, 프로세서는 로드(load)된 프로세서의 상태정보에 포함된 인터럽트 요청의 발생 위치에 브레이크포인트를 설정할 수 있다. 즉, 저장장치로부터 로드된 프로세서의 상태정보에는 하드웨어 인터럽트 요청이 발생한 때 및 기록 에뮬레이션 동작이 수행된 때의 프로세서의 상태정보와 함께, 하드웨어 인터럽트 요청의 발생 위치에 대응하는 상태정보가 포함될 수 있다. 프로세서는 인터럽트 요청의 발생 위치에 대응하는 상태정보에 디버그 기능을 이용하여 브레이크포인트를 설정할 수 있다.
단계(540)에서, 브레이크포인트 설정이 완료된 후, 프로세서는 에뮬레이션 컨텍스트를 프로그램 실행 컨텍스트로 전환할 수 있다. 전환된 프로그램 실행 컨텍스트에서, 프로세서는 탐색 에뮬레이션 모듈의 실행으로 중지된 소프트웨어를 다시 실행할 수 있다.
단계(550)에서, 프로세서는 소프트웨어를 실행하면서 브레이크포인트에 대응하는 이벤트가 발생하는지 판단할 수 있다. 예를 들어, 프로세서는 프로그램 실행 컨텍스트에서 소프트웨어를 작동시키던 중 인터럽트 요청의 발생 위치에 대응하는 명령어를 실행할 수 있다. 프로세서를 통해 명령어가 실행되면, 브레이크포인트에 대응하는 이벤트가 발생할 수 있다. 브레이크포인트에 대응하는 이벤트가 발생하면, 프로세서는 프로그램 실행 컨텍스트를 디버그 컨텍스트로 전환할 수 있다.
단계(560)에서, 프로세서는 디버그 컨텍스트에서 재현 에뮬레이션 모듈을 실행할 수 있다. 프로세서는 재현 에뮬레이션 모듈을 이용하여 에뮬레이션을 재현하는 기능 및 동작을 수행하는 재현 에뮬레이션 동작을 수행할 수 있다. 프로세서는 재현 에뮬레이션 모듈의 실행에 대응하여, 디버그 컨텍스트를 에뮬레이션 컨텍스트로 전환할 수 있다.
단계(570)에서, 프로세서는 에뮬레이션 컨텍스트에서 재현 에뮬레이션 동작을 통해 상태정보를 비교할 수 있다. 예를 들어, 재현 에뮬레이션 동작은 브레이크포인트에 대응하는 이벤트가 발생한 지점 및 시점(550)이 인터럽트 요청이 발생한 지점 및 시점(410)에 해당하는지 확인하기 위하여, 브레이크포인트에 대응하는 이벤트가 발생한 때(550)의 프로세서의 상태정보와 저장장치로부터 로드된 프로세서의 상태정보를 비교하는 동작을 포함할 수 있다. 이 때, 저장장치로부터 로드된 프로세서의 상태정보에는 인터럽트 요청이 발생한 때의 프로세서의 상태정보가 포함될 수 있다.
단계(570)에서 비교된 두 개의 상태정보가 서로 다를 경우, 브레이크포인트에 대응하는 이벤트가 발생한 지점 및 시점(550)은 인터럽트 요청이 발생한 지점 및 시점(410)이 아니므로 인터럽트 요청에 대한 에뮬레이션 루틴을 실행하지 않는다. 프로세서는 에뮬레이션 컨텍스트를 디버그 컨텍스트로 전환할 수 있다.
단계(580)에서, 프로세서는 디버그 컨텍스트를 프로그램 실행 컨텍스트로 전환할 수 있다.
단계(590)에서, 프로세서는 프로그램 실행 컨텍스트에서 브레이크포인트에 대응하는 이벤트가 발생하기 전에 실행 중이던 프로세스를 재개할 수 있다.
일실시예에 따라, 상기 컨텍스트들간의 상호배타성을 유지하기 위해, 탐색 에뮬레이션 모듈이 실행된 때(510)의 프로세서의 상태정보와 에뮬레이션 컨텍스트에서 프로그램 실행 컨텍스트로 전환된 때(540)의 프로세서의 상태정보는 동일하게 설정될 수 있다. 마찬가지로, 재현 에뮬레이션 모듈이 실행된 때(560)의 프로세서의 상태정보와 에뮬레이션 컨텍스트에서 디버그 컨텍스트로 전환된 때(580)의 프로세서의 상태정보는 동일하게 설정될 수 있다. 브레이크포인트에 대응하는 이벤트가 발생한 때(550)의 프로세서의 상태정보와 디버그 컨텍스트에서 프로그램 실행 컨텍스트로 전환된 때(590)의 프로세서의 상태정보는 동일하게 설정될 수 있다.
도 6은 본 발명의 일실시예에 따라, 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션을 재현하는 방법을 설명하기 위한 도면이다.
일실시예에 따르면, 시스템 운영체제의 프로그램 실행 컨텍스트에서 소프트웨어가 실행되는 중, 저장장치에 기록된 인터럽트에 대한 에뮬레이션 요청이 발생할 수 있다.
단계(600)에서, 프로세서는 인터럽트에 대한 에뮬레이션 요청을 전달받고 프로그램 실행 컨텍스트에서 실행 중인 소프트웨어를 중지할 수 있다. 이와 동시에, 프로세서는 탐색 에뮬레이션 모듈을 실행할 수 있다. 프로세서는 탐색 에뮬레이션 모듈의 실행에 대응하여 프로그램 실행 컨텍스트를 에뮬레이션 컨텍스트로 전환할 수 있다.
단계(605)에서, 프로세서는 탐색 에뮬레이션 모듈을 이용하여 저장장치에 저장된 에뮬레이션을 탐색하는 동작인 탐색 에뮬레이션 동작을 수행할 수 있다. 탐색 에뮬레이션 동작은 프로세서의 상태정보를 저장장치로부터 로드(load)하는 동작을 포함할 수 있다. 저장장치로부터 로드된 프로세서의 상태정보에는 인터럽트 요청이 발생한 때의 프로세서의 상태정보와 기록 에뮬레이션 모듈이 실행된 때의 프로세서의 상태정보가 포함될 수 있다.
단계(610)에서, 프로세서는 로드(load)된 프로세서의 상태정보에 포함된 인터럽트 요청의 발생 위치에 브레이크포인트를 설정할 수 있다. 즉, 저장장치로부터 로드된 프로세서의 상태정보에는 하드웨어 인터럽트 요청이 발생한 때 및 기록 에뮬레이션 동작이 수행된 때의 프로세서의 상태정보와 함께, 하드웨어 인터럽트 요청의 발생 위치에 대응하는 상태정보가 포함될 수 있다. 프로세서는 인터럽트 요청의 발생 위치에 대응하는 상태정보에 디버그 기능을 이용하여 브레이크포인트를 설정할 수 있다.
단계(615)에서, 브레이크포인트 설정이 완료된 후, 프로세서는 에뮬레이션 컨텍스트를 프로그램 실행 컨텍스트로 전환할 수 있다. 전환된 프로그램 실행 컨텍스트에서, 프로세서는 탐색 에뮬레이션 모듈의 실행으로 중지된 소프트웨어를 다시 실행할 수 있다.
단계(620)에서, 프로세서는 소프트웨어를 실행하면서 브레이크포인트에 대응하는 이벤트가 발생하는지 판단할 수 있다. 예를 들어, 프로세서는 프로그램 실행 컨텍스트에서 소프트웨어를 작동시키던 중 인터럽트 요청의 발생 위치에 대응하는 명령어를 실행할 수 있다. 프로세서를 통해 명령어가 실행되면, 브레이크포인트에 대응하는 이벤트가 발생할 수 있다. 브레이크포인트에 대응하는 이벤트가 발생하면, 프로세서는 프로그램 실행 컨텍스트를 디버그 컨텍스트로 전환할 수 있다.
단계(625)에서, 프로세서는 디버그 컨텍스트에서 재현 에뮬레이션 모듈을 실행할 수 있다. 프로세서는 재현 에뮬레이션 모듈을 이용하여 에뮬레이션을 재현하는 기능 및 동작을 수행하는 재현 에뮬레이션 동작을 수행할 수 있다. 프로세서는 재현 에뮬레이션 모듈의 실행에 대응하여, 디버그 컨텍스트를 에뮬레이션 컨텍스트로 전환할 수 있다.
단계(630)에서, 프로세서는 에뮬레이션 컨텍스트에서 재현 에뮬레이션 동작을 통해 상태정보를 비교할 수 있다. 예를 들어, 재현 에뮬레이션 동작은 브레이크포인트에 대응하는 이벤트가 발생한 지점 및 시점(620)이 인터럽트 요청이 발생한 지점 및 시점(410)에 해당하는지 확인하기 위하여, 브레이크포인트에 대응하는 이벤트가 발생한 때(620)의 프로세서의 상태정보와 저장장치로부터 로드된 프로세서의 상태정보를 비교하는 동작을 포함할 수 있다. 이 때, 저장장치로부터 로드된 프로세서의 상태정보에는 인터럽트 요청이 발생한 때의 프로세서의 상태정보가 포함될 수 있다.
단계(630)에서 비교된 두 개의 상태정보가 서로 같을 경우, 브레이크포인트에 대응하는 이벤트가 발생한 지점 및 시점(550)은 인터럽트 요청이 발생한 지점 및 시점(410)에 해당하므로 프로세서는 인터럽트 요청에 대한 에뮬레이션 루틴을 실행할 수 있다.
단계(635)에서, 프로세서는 재현 에뮬레이션 모듈을 이용하여 상태정보에 포함된 복귀 정보를 교체할 수 있다. 예를 들어, 단계(605)에서 탐색 에뮬레이션 동작을 통해 로드(load)된 인터럽트의 상태정보에는 컨텍스트 전환과 관련된 복귀 정보가 포함될 수 있다.
일실시예에 따르면, 상기 로드된 인터럽트의 상태정보에 포함된 복귀 정보에는 에뮬레이션 컨텍스트를 인터럽트 컨텍스트로 전환하는 것과 관련된 정보가 포함될 수 있다. 에뮬레이션 컨텍스트를 인터럽트 컨텍스트로 전환하는 것과 관련된 정보는 기록 에뮬레이션 모듈이 실행될 때(도 4, 420)의 프로세서의 상태정보로부터 추출될 수 있다. 예를 들어, 프로세서는 기록 에뮬레이션 모듈의 실행에 대응하여 인터럽트 컨텍스트를 에뮬레이션 컨텍스트로 전환할 수 있으므로, 이와 반대로 전환할 수도 있다.
일실시예에 따르면, 상기 로드된 인터럽트의 상태정보에 포함된 복귀 정보에는 인터럽트 컨텍스트를 프로그램 실행 컨텍스트로 전환하는 것과 관련된 정보가 포함될 수 있다. 인터럽트 컨텍스트를 프로그램 실행 컨텍스트로 전환하는 것과 관련된 정보는 인터럽트 요청이 발생된 때(도 4, 410)의 프로세서의 상태정보로부터 추출될 수 있다. 예를 들어, 프로세서는 하드웨어 인터럽트 요청을 전달받은 것에 대응하여 프로그램 실행 컨텍스트를 인터럽트 컨텍스트로 전환할 수 있으므로, 이와 반대로 전환할 수도 있다.
프로세서는 재현 에뮬레이션 모듈이 실행된 때(625)의 프로세서의 상태정보에 포함된 복귀 정보를 로드된 인터럽트의 상태정보에 포함된 복귀 정보로 교체할 수 있다. 교체된 복귀 정보는 에뮬레이션 컨텍스트를 인터럽트 컨텍스트로 전환하는 것과 관련된 정보 및 인터럽트 컨텍스트를 프로그램 실행 컨텍스트로 전환하는 것과 관련된 정보를 포함할 수 있다.
단계(640)에서, 프로세서는 에뮬레이션 컨텍스트를 인터럽트 컨텍스트로 전환할 수 있다. 로드된 인터럽트의 상태정보에 포함된 복귀 정보에는 에뮬레이션 컨텍스트를 인터럽트 컨텍스트로 전환하는 것과 관련된 정보가 포함되어 있으므로, 프로세서는 단계(635)에서 교체된 복귀 정보를 이용하여 에뮬레이션 컨텍스트를 인터럽트 컨텍스트로 전환할 수 있다.
단계(645)에서, 프로세서는 요청된 인터럽트를 인터럽트 컨텍스트에서 처리할 수 있다. 프로세서는 직접적인 하드웨어 인터럽트 요청이 발생하지 않은 경우에도, 직접적인 하드웨어 인터럽트 요청이 발생한 것처럼 요청된 인터럽트를 처리할 수 있다. 예를 들어, 프로세서는 저장장치에 기록된 에뮬레이션을 재현함으로써, 직접적인 하드웨어 인터럽트가 발생한 때와 동일하게 요청된 인터럽트를 처리할 수 있다. 저장장치에는 요청된 인터럽트에 대한 에뮬레이션이 기록되어 있고, 기록된 에뮬레이션을 재현 에뮬레이션 모듈을 통해 재현할 수 있으므로, 직접적인 하드웨어 인터럽트 요청이 발생하지 않은 경우에도 요청된 인터럽트를 처리할 수 있다.
단계(645)에서 요청된 인터럽트의 처리가 완료되면, 프로세서는 인터럽트 컨텍스트를 프로그램 실행 컨텍스트로 전환할 수 있다. 프로세서는 단계(635)에서 교체된 복귀 정보를 이용하여 인터럽트 컨텍스트를 프로그램 실행 컨텍스트로 전환할 수 있다.
단계(650)에서, 프로세서는 프로그램 실행 컨텍스트에서 인터럽트 요청이 발생하기 전에 실행 중이던 프로세스를 재개할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (14)

  1. 복수의 컨텍스트를 포함하는 시스템 운영체제(OS)가 실행되며 상기 복수의 컨텍스트 간의 전환을 수행하는 프로세서 및 상기 프로세서의 상태정보가 저장되는 저장장치를 포함하는 에뮬레이션 장치가 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법에 있어서,
    상기 프로세서가, 하드웨어 인터럽트 요청이 발생한 경우 프로그램 실행 컨텍스트로부터 인터럽트 컨텍스트로 전환하여, 기록 에뮬레이션 동작을 수행하는 단계;
    상기 프로세서가, 상기 기록 에뮬레이션 동작을 수행하는 것에 대응하여 상기 인터럽트 컨텍스트로부터 에뮬레이션 컨텍스트로 전환하고, 상기 프로세서의 상태정보를 상기 저장장치에 저장하는 단계; 및
    상기 프로세서가, 상기 프로세서의 상태정보를 상기 저장장치에 저장한 후 상기 에뮬레이션 컨텍스트로부터 상기 인터럽트 컨텍스트로 전환하여, 상기 요청된 하드웨어 인터럽트를 처리하는 단계
    를 포함하는 에뮬레이션 방법.

  2. 제1항에 있어서,
    상기 요청된 하드웨어 인터럽트를 처리하는 단계는,
    상기 요청된 하드웨어 인터럽트가 처리된 후, 상기 인터럽트 컨텍스트를 상기 프로그램 실행 컨텍스트로 전환하는 단계; 및
    상기 전환된 프로그램 실행 컨텍스트에서, 상기 하드웨어 인터럽트 요청의 발생으로 중지된 프로세스를 재개하는 단계
    를 포함하는 에뮬레이션 방법.
  3. 제1항에 있어서,
    상기 기록 에뮬레이션 동작을 수행하는 단계는,
    상기 프로그램 실행 컨텍스트에서 실행 중인 프로세스를 중지하는 단계를 포함하는 에뮬레이션 방법.
  4. 제1항에 있어서,
    상기 저장장치에 저장되는 프로세서의 상태정보는,
    상기 하드웨어 인터럽트 요청이 발생한 때 및 상기 기록 에뮬레이션 동작이 수행된 때의 프로세서의 상태정보를 포함하며,
    상기 프로세서의 상태정보는 컨텍스트 상태 간 상호배타성을 유지하기 위해 저장되는 것을 특징으로 하는 에뮬레이션 방법.
  5. 복수의 컨텍스트를 포함하는 시스템 운영체제(OS)가 실행되며 상기 복수의 컨텍스트 간의 전환을 수행하는 프로세서 및 상기 프로세서의 상태정보가 저장되는 저장장치를 포함하는 에뮬레이션 장치가 비결정적인 하드웨어 인터럽트 요청을 처리하는 에뮬레이션 방법에 있어서,
    상기 프로세서가, 하드웨어 인터럽트에 대한 에뮬레이션 요청이 발생한 경우 프로그램 실행 컨텍스트에서 탐색 에뮬레이션 동작을 수행하는 단계;
    상기 프로세서가, 상기 탐색 에뮬레이션 동작을 수행하는 것에 대응하여 상기 프로그램 실행 컨텍스트로부터 에뮬레이션 컨텍스트로 전환하고, 상기 프로세서의 상태정보를 로드(load)하는 단계;
    상기 프로세서가, 상기 로드된 프로세서의 상태정보에 포함된 상기 인터럽트 요청의 발생 위치에 브레이크포인트를 설정하는 단계; 및
    상기 프로세서가, 상기 브레이크포인트를 설정한 후, 상기 에뮬레이션 컨텍스트로부터 상기 프로그램 실행 컨텍스트로 전환하여, 상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는지 판단하는 단계를 포함하는 에뮬레이션 방법.
  6. 제5항에 있어서,
    상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는지 판단하는 단계는,
    상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는 경우, 상기 프로그램 실행 컨텍스트로부터 전환된 디버그 컨텍스트에서 재현 에뮬레이션 동작을 수행하는 단계;
    상기 디버그 컨텍스트로부터 전환된 에뮬레이션 컨텍스트에서, 상기 이벤트가 발생한 때의 프로세서의 상태정보와 상기 로드된 프로세서의 상태정보를 상기 수행된 재현 에뮬레이션 동작을 통해 비교하는 단계;
    상기 이벤트가 발생한 때의 프로세서의 상태정보와 상기 로드된 프로세서의 상태정보가 다를 경우, 상기 프로그램 실행 컨텍스트로 복귀하여 상기 이벤트 발생으로 중지된 프로세스를 재개하는 단계
    를 포함하는 에뮬레이션 방법.
  7. 제6항에 있어서,
    상기 재현 에뮬레이션 동작을 수행하는 단계는,
    상기 프로그램 실행 컨텍스트에서 실행 중인 프로세스를 중지하는 단계를 포함하는 에뮬레이션 방법.
  8. 제5항에 있어서,
    상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는지 판단하는 단계는,
    상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는 경우, 상기 프로그램 실행 컨텍스트로부터 전환된 디버그 컨텍스트에서 재현 에뮬레이션 동작을 수행하는 단계;
    상기 디버그 컨텍스트로부터 전환된 에뮬레이션 컨텍스트에서, 상기 이벤트가 발생한 때의 프로세서의 상태정보와 상기 로드된 프로세서의 상태정보를 상기 수행된 재현 에뮬레이션 동작을 통해 비교하는 단계;
    상기 이벤트가 발생한 때의 프로세서의 상태정보와 상기 로드된 프로세서의 상태정보가 동일한 경우, 상기 이벤트가 발생한 때의 프로세서의 상태정보에 포함된 복귀 정보를 상기 로드된 프로세서의 상태정보에 포함된 복귀 정보로 변경하는 단계; 및
    상기 변경된 복귀 정보에 따라, 상기 에뮬레이션 컨텍스트로부터 전환된 인터럽트 컨텍스트에서 상기 요청된 하드웨어 인터럽트를 처리하는 단계
    를 포함하는 에뮬레이션 방법.
  9. 제8항에 있어서,
    상기 재현 에뮬레이션 동작을 수행하는 단계는,
    상기 프로그램 실행 컨텍스트에서 실행 중인 프로세스를 중지하는 단계를 포함하는 에뮬레이션 방법.
  10. 제8항에 있어서,
    상기 요청된 하드웨어 인터럽트를 처리하는 단계는,
    상기 요청된 하드웨어 인터럽트가 처리된 후, 상기 인터럽트 컨텍스트를 상기 프로그램 실행 컨텍스트로 전환하는 단계; 및
    상기 전환된 프로그램 실행 컨텍스트에서, 상기 하드웨어 인터럽트 요청의 발생으로 중지된 프로세스를 재개하는 단계
    를 포함하는 에뮬레이션 방법.
  11. 제5항에 있어서,
    상기 로드된 프로세서의 상태정보는,
    상기 하드웨어 인터럽트 요청이 발생한 때 및 기록 에뮬레이션 동작이 실행된 때의 프로세서의 상태정보를 포함하며,
    상기 프로세서의 상태정보는 컨텍스트 상태 간 상호배타성을 유지하기 위해 저장되는 것을 특징으로 하는 에뮬레이션 방법.
  12. 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 장치에 있어서,
    저장장치; 및
    복수의 컨텍스트를 포함하는 시스템 운영체제(OS)가 실행되며 상기 컨텍스트 간의 전환을 수행하는 프로세서를 포함하고,
    상기 프로세서는,
    하드웨어 인터럽트 요청이 발생한 경우 프로그램 실행 컨텍스트로부터 인터럽트 컨텍스트로 전환하여, 기록 에뮬레이션 동작을 수행하며,
    상기 기록 에뮬레이션 동작을 수행하는 것에 대응하여 상기 인터럽트 컨텍스트로부터 에뮬레이션 컨텍스트로 전환하고, 상기 프로세서의 상태정보를 상기 저장장치에 저장하고,
    상기 프로세서의 상태정보를 저장장치에 저장한 후, 상기 에뮬레이션 컨텍스트로부터 상기 인터럽트 컨텍스트로 전환하여, 상기 요청된 하드웨어 인터럽트를 처리하는 에뮬레이션 장치.
  13. 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 장치에 있어서,
    저장장치; 및
    복수의 컨텍스트를 포함하는 시스템 운영체제(OS)가 실행되며 상기 컨텍스트 간의 전환을 수행하는 프로세서를 포함하고,
    상기 프로세서는,
    하드웨어 인터럽트에 대한 에뮬레이션 요청이 발생한 경우 프로그램 실행 컨텍스트에서 탐색 에뮬레이션 동작을 수행하고,
    상기 탐색 에뮬레이션 동작을 수행하는 것에 대응하여 상기 프로그램 실행 컨텍스트로부터 에뮬레이션 컨텍스트로 전환하여, 상기 프로세서의 상태정보를 상기 저장장치로부터 로드(load)하고,
    상기 로드된 프로세서의 상태정보에 포함된 상기 에뮬레이션 요청의 발생 위치에 브레이크포인트를 설정하고,
    상기 브레이크포인트를 설정한 후 상기 에뮬레이션 컨텍스트로부터 상기 프로그램 실행 컨텍스트로 전환하여, 상기 설정된 브레이크포인트에 대응하는 이벤트가 발생하는지 판단하는 에뮬레이션 장치.
  14. 제1항 내지 제11항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한 기록 매체.

KR1020160099001A 2016-03-09 2016-08-03 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치 KR101785540B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20160028486 2016-03-09
KR1020160028486 2016-03-09

Publications (2)

Publication Number Publication Date
KR20170105394A KR20170105394A (ko) 2017-09-19
KR101785540B1 true KR101785540B1 (ko) 2017-11-15

Family

ID=60033330

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160099001A KR101785540B1 (ko) 2016-03-09 2016-08-03 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101785540B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102462864B1 (ko) * 2017-12-22 2022-11-07 한국전자통신연구원 멀티 코어를 이용한 동적 바이너리 인스트루멘테이션 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006091967A (ja) 2004-09-21 2006-04-06 Matsushita Electric Ind Co Ltd 情報処理装置、およびデバッグ装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006091967A (ja) 2004-09-21 2006-04-06 Matsushita Electric Ind Co Ltd 情報処理装置、およびデバッグ装置

Also Published As

Publication number Publication date
KR20170105394A (ko) 2017-09-19

Similar Documents

Publication Publication Date Title
US7783867B2 (en) Controlling instruction execution in a processing environment
US7356735B2 (en) Providing support for single stepping a virtual machine in a virtual machine environment
KR101249693B1 (ko) 서브루틴 복귀 메카니즘 선택
KR102025078B1 (ko) 단일 스텝 실행을 이용한 코드 진단
US9465617B1 (en) Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode
US7685579B2 (en) Method and apparatus for performing adjustable precision exception handling
KR101696490B1 (ko) 부분 리부팅 복구 장치 및 방법
CN111133418B (zh) 在例外屏蔽更新指令之后允许未中止的事务处理
US9697040B2 (en) Software replayer for transactional memory programs
CN110892384A (zh) 对处理器未定义行为依赖的重放时间行程跟踪
CN115935631A (zh) 用于车机设备的测试系统和方法、存储介质
CN102708015A (zh) 基于cpu不可屏蔽中断系统问题诊断的调试方法
US9864708B2 (en) Safely discovering secure monitors and hypervisor implementations in systems operable at multiple hierarchical privilege levels
KR101785540B1 (ko) 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치
US20110202903A1 (en) Apparatus and method for debugging a shared library
JP6920286B2 (ja) 例外処理
US11030075B2 (en) Efficient register breakpoints
JP5452336B2 (ja) 周辺機器障害模擬システム、周辺機器障害模擬方法および周辺機器障害模擬プログラム
JP2018531462A6 (ja) 例外処理
US20170371732A1 (en) Method for debugging static memory corruption
JP5235900B2 (ja) 命令実行を容易にするためのバッファの使用
KR102052816B1 (ko) 비휘발성 주기억장치 환경에서 에러 복구 방법 및 그 시스템
KR20210087431A (ko) 트랜잭션 메모리를 위한 장치 및 데이터 처리 방법
US11726811B2 (en) Parallel context switching for interrupt handling
KR101395007B1 (ko) 복수의 프로세서를 이용한 스냅샷 이미지 처리 장치 및 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right