KR100216533B1 - 병행 chill 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법 - Google Patents

병행 chill 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법 Download PDF

Info

Publication number
KR100216533B1
KR100216533B1 KR1019960061301A KR19960061301A KR100216533B1 KR 100216533 B1 KR100216533 B1 KR 100216533B1 KR 1019960061301 A KR1019960061301 A KR 1019960061301A KR 19960061301 A KR19960061301 A KR 19960061301A KR 100216533 B1 KR100216533 B1 KR 100216533B1
Authority
KR
South Korea
Prior art keywords
event
recording
file
history
event history
Prior art date
Application number
KR1019960061301A
Other languages
English (en)
Other versions
KR19980043443A (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 KR1019960061301A priority Critical patent/KR100216533B1/ko
Publication of KR19980043443A publication Critical patent/KR19980043443A/ko
Application granted granted Critical
Publication of KR100216533B1 publication Critical patent/KR100216533B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

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)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 호스트 시스템에서 병행 CHILL 프로그램의 결정적 재실행을 위하여 병행 CHILL 프로그램 실행시 발생되는 사건 이력을 효율적으로 기록하는 방법을 제공하는 데에 그 목적이 있다.
본 발명은 병행 CHILL 프로그램 실행시 발생하는 각각의 사건에 대한 동작과 사건정보를 기록하는 작업을 런타임 라이브러리로 구성하여, 병행 CHILL 프로그램 디버깅을 위한 사건 이력 기록에 이용하므로서, 사건 이력 기록을 위해 원시 프로그램을 변경할 경우 또는 런타임 시스템 및 운영체제를 변경할 경우 발생하는 기존 방법의 문제점 및 불편함을 제거하게 되었다.

Description

병행 CHILL 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법(The event history recording method for the deterministic replay of concurrent CHILL program)
본 발명품은 CHILL 언어의 병행 처리 기능을 사용하여 작성된 병행 프로그램의 실행을 중앙처리 장치, 메인 메모리, 보조 기억장치, 입출력 장치 등을 갖춘 컴퓨터 시스템에서 결정적으로 재실행하기 위한 사건 이력(event history)을 기록하는 방법에 관한 것이다.
일반적으로 병행 언어가 제공하는 병행 처리 및 동기화 기능은 컴파일러, 런타임 시스템 및 운영체제 등의 지원을 받아 실행된다. 병행 언어로 작성된 프로그램을 디버깅하기 위해서는 오류가 발생한 상황을 재현하는 것이 필수적이며, 이를 위한 방법으로는 병행 프로그램 실행시 발생하는 사건 이력을 기록하고, 이를 이용하여 병행 프로그램을 재실행하는 것이 보편적인 방법이다.
사건 이력을 기록하기 위해 사용된 종래의 기법들은 실행될 원시 프로그램에 사건 기록을 위한 명령문들을 삽입하였거나, 런타임 시스템 또는 운영체제를 변경하여 수행하였다.
사건 기록을 위해 원시 프로그램을 변경하여 사용하는 경우에는 삽입된 명령문들로 인하여 원래 실행될 명령문의 실행에 영향을 끼쳐 원하지 않는 연산을 수행하게 되는 탐침 효과(probe effect)의 문제점이 발생할 수 있으며, 운영체제나 런타임 시스템이 변경되면 이 변경된 부분을 수요 또는 처리하기 위해 이를 추적하며 디버깅하는 디버깅 도구도 함께 변경되어야 하는 어려움이 발생한다.
상기 문제점을 해결하기 위한 본 발명의 목적은 런타임시스템의 기능을 포함하는 재실행 지원 시스템을 라이브러리로 구현하고, 병행 CHILL 프로그램의 재실행을 지원하기 위한 사건 이력을 기록하는 효율적인 방법을 제공하는 데에 있다.
제1도는 본 발명이 적용되는 하드웨어 구성도
제2도는 본 발명을 위해 작성되는 런타임 라이브러리의 구성을 도시한 도면
제3도는 본 발명에 따른 사건 이력을 기록하는 방법에 대한 전체처리 흐름도
제4도는 본 발명에 따른 각각의 사건을 기록하는 방법에 대한 상세처리 흐름도
* 도면의 주요부분에 대한 부호의 설명
1 : 중앙처리장치 2 : 메인 메모리
3 : 보조기억장치 4 : 입출력장치
11, 14 : 런타임 라이브러리의 모듈 12 : 사건처리기
13 : 사건 정보 기록기
상기 목적을 달성하기 위하여 본 발명의 특징은 병행 CHILL 프로그램의 결정적 재실행에 영향을 주는 사건의 동작과 사건 정보의 기록을 위한 처리를 런타임 라이브러리로 구현하고, 구현된 런타임 라이브러리와 병행 프로그램을 함께 컴파일 하여 실행화일을 만들어 내는 단계와, 실행화일을 실행시켜 실행시 발생한 사건 이력을 기록하는 단계로 이루어짐을 특징으로 한다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다.
제1도는 본 발명이 적용되는 하드웨어의 구성도로서, 이에 도시된 바와 같이 중앙처리 장치(1)와, 메인 메모리(2)와, 보조 기억장치(3)와, 입출력 장치(4)가 시스템 버스로 서로 연결 구성된 컴퓨터에 범용 운영체제를 띄운 시스템이다.
사건 이력 기록을 위한 병행 CHILL 프로그램은 호스트 시스템의 메인 메모리(2)에 탑재되어 중앙처리 장치(1)에서 실행되고, 입출력 장치(4)를 통하여 각종 명령어들의 입력과 실행결과 및 오류 메시지의 출력이 이루어지며, 각 장치간에 주고받는 메시지는 시스템 버스를 통하여 이루어진다. 이때, 범용 운영체제는 프로그램들과 장치들을 제어한다.
보조 기억장치(3)에는 사건 이력 기록을 위한 런타임 라이브러리와, CHILL 언어로 작성된 원시 프로그램 화일과, 데이터 파일이 저장되며, 메모리(2)에 탑재되지 않은 파일과 도구들도 여기에 저장된다.
제2도는 본 발명을 위해 작성되는 런타임 라이브러리의 구성을 도시한 도면으로서, 이를 참조하여 런타임 라이브러리를 설명하면 다음과 같다.
런타임 라이브러리는, CHILL 언어에 정의된 프로세스의 생성/소멸, 메시지 송/수신, 임계 구역(critical region) 진입/탈출, 프로세스 지연/재실행 등의 사건을 처리한는 모듈(11), (14)로 구성되어 있다.
각각의 사건을 처리하기 위한 모듈(11 또는 14)은 해당 사건의 동작을 처리하는 사건 처리기(12)와 병행 CHILL 프로그램 재실행을 지원하기 위한 사건 정보를 기록하는 사건 정보 기록기(13)로 구성되어 있다.
이렇게 작성된 런타임 라이브러리는 병행 CHILL 프로그램과 함께 컴파일되어 병행 CHILL 프로그램의 재실행을 지원하는 사건 이력을 기록하기 위한 실행화일을 생성한는데 사용된다.
제3도는 본 발명에 따른 사건 이력을 기록하는 방법에 대한 전체처리 흐름도로서, 이를 참조하여 사건 이력을 기록하는 방법을 설명하면 다음과 같다.
먼저, 런타임 라이브러리(21)와 병행 CHILL 프로그램(22)을 함께 컴파일(23)하여 병행 CHILL 프로그램의 재실행을 지원하는 사건 이력을 기록하기 위한 실행화일을 생성(24)한다.
실행화일을 실행(25)하면 사건 이력을 기록할 파일을 생성하여 열고(26), 주프로세스의 실행이 시작(27)되어 프로그램의 실행이 시작되는데, 이때, 실행되는 코드의 종류를 검사(28)한다.
실행되는 코드가 일반문이면, 코드를 실행(29)하고 계속해서 다음에 실행될 코드의 종류를 검사(28)한다.
실행되는 코드가 런타임 라이브러리에 미리 정의된 사건에 대한 호출문이면, 사건에 대한 처리와 사건 정보를 기록(30)하고, 실행되고 있는 병행 프로세스가 남아 있는지를 검사(31)한다.
모든 병행 프로세스가 종료하지 않았으면, 계속해서 상기 과정(28, 30, 31 또는 28, 29)을 반복하여 실행한다.
모든 병행 프로세스가 종료하였으면, 주 프로세스의 실행을 종료(32)하고 사건 이력을 기록한 파일을 닫고(33) 병행 CHILL 프로그램의 실행 및 사건 이력의 기록을 종료한다.
제4도는 본 발명에 따른 각각의 사건을 기록하는 방법에 대한 상세처리 흐름도로서, 이를 참조하여 각각의 사건을 기록하는 방법을 설명하면 다음과 같다.
병행 프로그램은 여러 개의 프로세스가 동시에 수행되면서 어느 한 순간에 같은 사건에 대한 처리를 동시에 요구할 수가 있다. 이럴 경우 요구된 사건 처리를 순서적으로 처리할 수 있는 방법이 필요하게 된다. 여기서는 여러 개의 프로세스에서 동시 다발적으로 수행되고 있는 사건에 대한 정보를 하나의 파일에 순서적으로 기록하기 위한 방법으로 세마포 변수를 이용하여 처리한다.
먼저 제3도에서 실행코드 종류(28)가 사건 호출문인 경우, 사건 처리/기록(30)을 하는데, 이때, 그 사건이 처리해야 하는 동작을 우선 처리(41)하게 된다. 다음에 사건 정보를 사건 이력 기록 파일에 기록하기 위해 다른 어떤 프로세스가 이 파일에 정보를 기록하고 있는지를 표시하는 세마포 변수의 값을 검사(42)한다. 세마포 변수의 값이 0이면 다른 프로세스가 현재 사건 이력 기록 파일을 사용중이라는 의미이고, 1이면 이 파일은 사용하지 않고 있다는 것을 표시한다.
세마포 변수의 값이 0이면 세마포 변수의 값이 1이 될 때까지 세마포 변수의 값을 계속 검사하면서 대기(43, 42)하고 있는다.
세마포 변수의 값이 1로 바뀌면, 세마포 변수의 값을 0으로 변경(44)하여 다른 프로세스에게 사용중임을 알린 다음 한번에 하나의 작업이 보장되어야만 안전하게 처리되는 부분인 임계 구역 내의 작업을 실행(45)한다. 즉, 사건 정보를 사건 이력 기록 파일에 기록(46)하는 작업이 이곳에서 이루어진다.
임계 구역 내의 작업이 끝나면(47) 이곳을 다른 프로세스에서 사용할 수 있도록 세마포 변수의 값을 1로 변경(48)하고 호출한 프로세스로 복귀(49)하므로서 사건 정보를 사건 이력 기록 파일에 기록하는 작업을 마치게 된다.
그러므로, 상술한 바와 같이 본 발명은 병행 CHILL 프로그램의 결정적 재실행을 지원하는 사건 이력의 기록을 런타임 시스템의 기능을 포함하는 라이브러리로 구현하는 방법을 제시하여 사건 이력 기록을 위해 원시 프로그램을 변경할 경우에 발생하는 탐침효과 또는 런타임 시스템 및 운영체제를 변경하는 경우에 발생하는 병행 CHILL 프로그램의 재실행을 위한 디버깅 도구의 변경과 같은 문제점 및 불편함을 제거하여 병행 CHILL 프로그램의 디버깅이 더 쉬어졌다는 데에 그 효과가 있다.

Claims (5)

  1. 병행 CHILL 프로그램과 런타임 라이브러리를 함께 컴파일하여 실행화일을 생성하는 단계, 실행화일을 실행하면서 생성되는 모든 병행 프로세스들이 종료될 때까지 각 프로세서에서 발생하는 사건에 대한 이력을 하나의 파일에 기록하는 단계를 수행하는 것을 특징으로 하는 병행 CHILL 프로그램의 사건 이력 기록 방법
  2. 제 1항에 있어서, 발생한 사건을 기록하는 방법은, 세마포 변수를 이용하여 사건 정보를 기록하는 작업을 임계 구역으로 설정하여 순서적으로 사건 정보를 기록하는 것을 특징으로 하는 병행 CHILL 프로그램의 결정적 재실행을 위한 사건 이력 기록방법
  3. 제 2 항에 있어서, 세마포 변수를 이용하여 사건 정보를 기록하는 작업을 임계 구역으로 설정하여 순서적으로 사건 정보를 기록하는 방법을 해당 사건의 동작과 함께 런타임 라이브러리로 만들어서 병행 CHILL 프로그램 컴파일에 이용하는 것을 특징으로 하는 병행 CHILL 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법.
  4. 런타임 라이브러리와 병행 CHILL 프로그램을 컴파일 하여 실행화일을 생성하는 단계와, 실행화일을 실행하고 사건이력 기록화일을 생성하여 여는 단계와, 주 프로세스를 시작하고 실행코드 종류를 판단하여 일반문이면 코드를 실행하는 단계와, 상기 실행코드의 종류가 사건 호출문이면 사건 처리/기록 루틴을 수행하는 단계와, 모든 병행 프로세스가 종료될 때까지 실행코드 종류에 따른 코드 실행 또는 사건처리/기록을 수행한 주 프로세스를 종료하고 사건이력 파일을 닫아 종료하는 단계를 수행하도록 이루어진 것을 특징으로 하는 병행 CHILL 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법.
  5. 제4항에 있어서, 상기 사건 처리/기록 루틴을 수행하는 단계는, 사건이 발생하면, 해당 사건이 처리해야 하는 동작을 우선 처리하는 단계와, 사건 처리후 세마포 변수가 다른 프로세스가 현재 사건이력 파일을 사용 하지 않음을 나타내는 1이 될 때까지 기다리고, 세마포 변수가 1이 되면, 그 세마포 변수 값을 0으로 변경시켜 사용중임을 알리는 단계와, 임계구역 내의 작업을 실행하여 사건 정보를 사건이력 파일에 기록하는 단계와, 임계구역 실행을 종료하고 상기 세마포 변수 값을 0으로 변경시킨 후 호출한 프로세스로 복귀하는 단계를 수행하도록 이루어진 것을 특징으로 하는 병행 CHILL 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법.
KR1019960061301A 1996-12-03 1996-12-03 병행 chill 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법 KR100216533B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019960061301A KR100216533B1 (ko) 1996-12-03 1996-12-03 병행 chill 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960061301A KR100216533B1 (ko) 1996-12-03 1996-12-03 병행 chill 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법

Publications (2)

Publication Number Publication Date
KR19980043443A KR19980043443A (ko) 1998-09-05
KR100216533B1 true KR100216533B1 (ko) 1999-08-16

Family

ID=19485552

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960061301A KR100216533B1 (ko) 1996-12-03 1996-12-03 병행 chill 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법

Country Status (1)

Country Link
KR (1) KR100216533B1 (ko)

Also Published As

Publication number Publication date
KR19980043443A (ko) 1998-09-05

Similar Documents

Publication Publication Date Title
US6263489B1 (en) Method and apparatus for debugging of optimized code
US6161216A (en) Source code debugging tool
US6434741B1 (en) Method and apparatus for debugging of optimized code using emulation
US5960198A (en) Software profiler with runtime control to enable and disable instrumented executable
US7316005B2 (en) Data race detection using sequential program analysis
US6078744A (en) Method and apparatus for improving compiler performance during subsequent compilations of a source program
US5911073A (en) Method and apparatus for dynamic process monitoring through an ancillary control code system
Korel et al. Application of Dynamic Slicing in Program Debugging.
Mellor-Crummey Compile-time support for efficient data race detection in shared-memory parallel programs
JP2004164554A (ja) プログラム実行監視装置および方法
Xu et al. Efficient checkpointing of java software using context-sensitive capture and replay
US20080127118A1 (en) Method and system for dynamic patching of software
JPH0748182B2 (ja) プログラム・エラー検出方法
CN111984524A (zh) 故障注入方法、故障模拟方法、故障注入装置及存储介质
Sathyanathan et al. Incremental whole program optimization and compilation
KR100216533B1 (ko) 병행 chill 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법
KR20060035077A (ko) 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법
Ness et al. Regression containment through source change isolation
JP3903514B2 (ja) 未定義変数検出の最適化コンパイラ装置
KR100340049B1 (ko) 시나리오를 이용한 칠 프로그램 시험 방법
JPH1115695A (ja) プログラムテストパターン自動生成システム
JPH05233357A (ja) シンボリックデバッグ方法
KR0175469B1 (ko) 칠프로그램 변수의 가시성 제어방법
KR0121767B1 (ko) 병행 칠(chill) 프로그램 디버깅 방법
Gross Bisection Debugging.

Legal Events

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

Payment date: 20040401

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee