KR950010827B1 - 칠(chill) 분리 컴파일 시스템에서 재컴파일 최소화 방법 - Google Patents

칠(chill) 분리 컴파일 시스템에서 재컴파일 최소화 방법 Download PDF

Info

Publication number
KR950010827B1
KR950010827B1 KR1019930025356A KR930025356A KR950010827B1 KR 950010827 B1 KR950010827 B1 KR 950010827B1 KR 1019930025356 A KR1019930025356 A KR 1019930025356A KR 930025356 A KR930025356 A KR 930025356A KR 950010827 B1 KR950010827 B1 KR 950010827B1
Authority
KR
South Korea
Prior art keywords
file
interface
files
name
given
Prior art date
Application number
KR1019930025356A
Other languages
English (en)
Other versions
KR950015068A (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 KR1019930025356A priority Critical patent/KR950010827B1/ko
Publication of KR950015068A publication Critical patent/KR950015068A/ko
Application granted granted Critical
Publication of KR950010827B1 publication Critical patent/KR950010827B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

내용 없음.

Description

칠(CHILL) 분리 컴파일 시스템에서 재컴파일 최소화 방법
제1도는 본 발명이 적용되는 하드웨어 구성도.
제2도는 본 발명에서 적용되는 분리 컴파일 방법.
제3도는 본 발명에 따른 재컴파일 최소화 방법에 대한 처리 흐름도.
제4도는 화일 형상에 대한 자료 구조도.
* 도면의 주요부분에 대한 부호의 설명
101 : 메인 메모리 102 : 중앙처리 보드
103 : UNIX 운영체제부 104 : 보조 기억 장치
105 : 입출력 장치
본 발명은 CHILL 분리 컴파일 시스템에서 재컴파일 시 프로그램 수정으로 인한 일치성을 보장하는 범위내에서 재컴파일 횟수를 최소화하는 방법에 관한 것이다.
CHILL로써 큰 프로그램을 개발하기 위해서는 그것을 여러개의 화일로 나누어 개발하는 피스와이즈(Piecewise) 프로그래밍이 가능해야 한다. 큰 프로그램을 여러 화일로 나누기 위해서는 화일들 사이에 교환되는 이름의 바인딩 및 일치성 점검이 필요하며, 이를 수행하기 위해서 분리 컴파일 시스템을 개발하였다. CHILL 프로그램은 모듈로 구성되며, 모듈내에 선언된 이름은 그 모듈내에서만 사용할 수 있다. 이름을 모듈 밖으로 보여주기 위해서는 그랜트를 하며 모듈 밖에 선언된 이름을 사용하기 위해서는 시즈를 한다. 하나의 CHILL 프로그램이 모듈 깊이(module depth)가 1인 여러 모듈로 구성되어 있을 경우 가상적인 가장 바깥 모듈이 존재한다고 가정하며, 모듈 밖으로 그랜트되는 이름들은 가장 모듈에 복사하고 시즈되는 이름들은 가상 모듈에서 가져온다. 컴파일 단위를 하나 이상의 모듈을 포함하는 화일로 할 경우, 컴파일러는 화일 사이에 그랜트/시즈되는 이름들에 대한 바인딩 및 일치성 점검를 하여 항상 안전한 컴파일을 보장할 수 있어야 한다.
분리 컴파일 방법으로 프로그래밍할 경우 화일 사이에 교환되는 이름들로 인하여 이들 화일 사이에 의존관계가 존재하며, 한 화일이 수정되면 그 화일과 의존관계를 가지는 화일들의 재컴파일되어야 일치성을 유지할 수 있다. 따라서, 재컴파일 횟수를 최소화하기 위해서는 화일 사이의 의존성을 최소화시켜야 한다.
UNIX 운영체제 상에서 기존의 분리 컴파일은 화일 사이의 시간 의존 관계를 이용하여 하나의 화일이 수정되면 그와 의존 관계를 가지는 모든 화일이 재컴파일되므로, 실제로 관련 정보가 바뀌지 않더라도 재컴파일이 되는 현상이 빈번히 발생한다.
본 발명의 목적은 상기 종래 기술에 대한 제반 문제점을 해결하기 위해 안출된 것으로, 불필요한 재컴파일이 발생하지 않도록 하기 위해서 화일과 화일 사이의 의존 관계를 다른 화일에 영향을 미치는 이름에-화일 밖으로 그랜트되는 이름- 대해서 그 이름을 실제로 시즈하여 사용하는 화일의 리스트를 가지도록 하여 이름과 화일 사이의 의존관계를 구성하여 인터페이스 화일에 그랜트/시즈되는 인터페이스 정보와 함께 저장함으로써 재컴파일 시에는 수정된 부분과 인터페이스 화일의 내용을 비교하여 바뀐 이름이 있으면 그 이름과 의존관계를 가지는 화일을 재컴파일함으로써 재컴파일되는 화일의 수를 최소화하여 전체적인 컴파일 시간을 줄일 수 있도록 한 칠(CHILL) 분리컴파일 시스템에서 재컴파일의 최소화 방법을 제공하는 데 그 목적이 있다.
상기 목적을 달성하기 위하여 본 발명은, 메인 메모리 보드, 중앙처리 장치, 보조 기억 장치, 입/출력장치, 및 UNIX 운영 체제부를 구비한 하드웨어에 적용되는 칠(CHILL) 분리 컴파일 시스템에서 재컴파일의 최소화하는 방법에 있어서, 처음 컴파일과 재컴파일을 구분하는 제1단계 ; 상기 제1단계 수행 후, 처음 컴파일이면 아규먼트로 주어진 스펙 화일들에서 그랜트/시즈된 이름들에 대한 바인딩을 하여 시즈 화일 및 인터페이스 화일을 생성하는 제2단계 ; 상기 제1단계 수행 후, 재컴파일이면 주어진 인터페이스 화일의 내용이 유효한가를 검사하는 제3단계 ; 상기 제3단계 수행 후, 인터페이스 화일의 내용이 유효하지 않으면 인터페이스 화일을 지우고 처음으로 복귀하여 유효하면 인터페이스 화일 및 수정된 스펙 화일들을 분석하여 재컴파일되어야 할 시즈 화일들과 인터페이스 화일을 생성하는 제4단계 ; 를 포함하여 이루어지는 것을 특징으로 한다.
화일 사이의 의존성을 최소화하여 재컴파일 횟수를 최소화 할 수 있는 방법을 제시한다.
의존관계를 설명하기 위하여 다음과 같은 용어를 정의한다. A, B가 이름이고 B를 정의하기 위해서 A를 먼저 알아야 할 경우 A를 B의 프레디세서라 하며, B를 썩세서(successor)라 하고 A→B로 나타낸다. 예를 들면, synmode A=set(a1, a2), B=파워셋 A : 라 하면 A→B의 관계가 생기게 된다. 만약 A→B이고, B→C이면, A→C 가 성립된다. 또한, 관계는 쌍 방향으로 발생할 수 있다. 예를 들면 synmode D=ref E, E=struct(E1, A, E2 B, E3 D) ; 일 경우에는 D→E이고 E→D가 되어 D↔E가 성립하게 된다. 이름 사이의 프레디세서/썩세서 관계를 이용하여 모듈 사이의 프레디세서/썩세서 관계를 다음과 같이 정의할 수 있다.A1, A2, …An이 모듈 M내에 정의되었으면 M을 A1, A2, …An의 규정 모듈(defining module)이라 하고 M=DM(A1, A2, …An)으로 쓴다. M1, M2가 모듈이고 A, B가 이름일 때, 만약 M1=DM(a), M2=DM(b), A→B이면 M1→M2라 쓰고 M1을 M2의 프레디세서라 하고 M2를 썩세서라 한다. 이름 사이의 관계에서와 마찬가지로 모듈 관계에 있어서도 쌍방향 관계가 성립할 수 있다. 모듈 사이의 관계를 이용하여 화일 사이의 관계를 정의할 수 있으며, 만약 화일 F1내에 모듈 M1, M2가 있고 화일 F2에 M3가 있으며 M1→M2, M2→M3이면 F1→F2가 성립한다.
화일 사이의 의존관계를 이용하여 컴파일 과정을 관리하면 프리디세서 화일이 수정될 때마다 썩세서 화일이 재컴파일되어야 하므로 불필요한 컴파일이 빈번하게 일어난다. 본 발명은 화일 사이의 관계를 이용하여 컴파일 관리를 할 경우 불필요한 재컴파일이 일어나는 문제를 해결하여 컴파일 횟수를 최소화하기 위하여 화일 사이의 관계를 이름과 화일 사이의 관계로 변환하였다. 이름과 화일 사이의 관계는 각 화일 밖으로 그랜트되는 이름에 대해서 그 이름을 시즈하는 화일 리스트를 가짐으로써 그 이름에 대한 정보가 바뀔 경우에 관련된 화일들이 재컴파일이 되도록 한다. 따라서, 프레디세서 화일이 수정되더라도 썩세서 화일에서 시즈하는 이름이 바뀌지 않으면 재컴파일되지 않으므로 재컴파일 횟수를 최소화한다.
이하, 첨부된 도면을 참조하여 본 발명에 관하여 상세히 설명한다.
제1도는 본 발명이 적용되는 하드웨어의 블럭 구성도로서, 도면에서 101은 메인 메모리 보드, 102는 중앙처리 보드, 103는 UNIX 운영체제부, 104는 보조 기억 장치, 105는 입출력 장치를 각각 나타낸다.
도면에 도시된 각 블럭들의 기능을 살펴보면 다음과 같다.
메인 메모리(101)는 분리 컴파일이 수행될 때 컴파일러 및 네임 바인더가 탑재되는 보드이고, 중앙 처리 보드(102)는 메인 메모리에 탑재된 화일을 수행시키는 보드이다. 그리고, 보조 기억 장치(104)는 화일 및 데이타 등을 저장하는 장치로 메인 메모리에 탑재되지 않는 화일과 도구들이 저장된다. 입/출력 장치(105)는 분리 컴파일 수행에 필요한 화일 및 데이타, 수행중에 발생하는 모든 오류 메세지를 입/출력하는 장치이다. UNIX 운영체제부(103)는 상기의 보드 및 장치를 제어하며, 각 보드 및 장치간에 주고받는 메세지는 시스템 버스(106)를 통해 이루어진다.
제2도에서 분리 컴파일 과정을 처음 컴파일 과정과 재컴파일 과정으로 나누어 설명한다.
처음 컴파일 시 CHILL 컴파일러는 원시 화일들을 컴파일하여 스펙화일을 생성한다(201). 네임 바인더는 생성된 모든 스펙 화일을 분석하여 각 원시 화일에 대해 하나씩의 시즈 화일과 인터페이스 화일을 생성한다(202). 시즈 화일을 포함한 원시 화일을 컴파일하여 목적 화일을 생성한다(203).
원시 화일을 수정한 후 재 컴파일하는 과정은 다음과 같다. 수정된 원시 화일을 컴파일하여 스펙 화일을 생성한다(204). 네임 바인더는 기존에 존재하는 인터페이스 화일과 수정된 스펙 화일을 비교하여 바뀐 이름이 존재 할 경우 바뀐 이름으로 인하여 재컴파일되어야 할 화일들에 대한 시즈화일과 인터페이스 화일을 생성한다(205). 시즈 화일이 재생성되었거나 원시 화일이 수정되었을 경우 컴파일하여 목적 화일을 생성한다(206). 여기서, 스펙 화일은 원시 화일에서 화일 밖으로 보여주는 그랜트정보와 다른 화일로 부터 시즈되는 이름의 리스를 포함하는 화일이며 CHILL 컴파일러에 의하여 생성된다. 시즈 화일은 원시 화일에서 시즈하는 이름들에 대한 정보를 가지는 화일이며, 다른 화일에서 정의되고 원시 화일을 컴파일하기 위해 필요한 모든 정보를 가진다. 인터페이스화일은 화일간에 그랜트, 시즈와 같은 인터페이스 정보와 이름과 화일 사이의 의존관계 정보를 가지는 인터페이스 라이브러리 화일이다.
분리 컴파일 시스템에서 이름과 화일 사이의 의존 관계를 분석하여 재컴파일을 최소화하기 위한 작업을 하는 도구가 네임 바인더이다.
제3도는 본 발명에 따른 재컴파일을 최소화하는 방법에 대한 처리 흐름도이다.
처음 컴파일 시에는 스펙 화일들을 읽어들여 파싱한 후 가시성분석 및 어의 분석을 하여 화일 사이에 그랜트/시즈되는 이름들에 대한 바인딩 및 일치성 점검을 한다(301, 302, 303). 다음 단계로 인터페이스의 화일 형상을 구성한 후(304), 각 원시 화일에 대해서 시즈 화일을 생성하고 인터페이스 화일을 생성한다(305). 처음 컴파일과 재컴파일을 구분하는 방법은 기존에 생성된 인터페이스 화일이 존재하는가(301)에 따라 결정되며, 존재하면 재컴파일이 된다. 재컴파일 시네임 바인더는 인터페이스 화일을 읽어들여 파싱하여 화일 형상(제4도)과 프로그램 스트럭취 트리를 구성한다(306). 그 다음 화일 형상의 각 화일이 아규먼트로 주어졌는가를 검사한다(307). 만약 화일 형상에 있는 화일이 아규먼트로 주어지지 않았으면 그 전에 존재하던 화일이 없어진 것이므로 없어진 화일에서 그랜트한 이름을 시즈하여 사용한 화일에서는 시즈한 정보가 무효화된다. 따라서 인터페이스 화일을 지우고 처음부터 다시 시작한다(308). 그 다음 아규먼트로 주어진 각 화일에 대해서 인터페이스의 형상에 없는 화일이면 새로인 추가된 화일이므로 읽어들여 파싱하고 형상이 있으며 인터페이스 화일보다 나중에 수정되었을 경우 읽어들여 파싱한다(309). 인터페이스 화일의 내용과 수정된 화일의 내용을 비교하여 다른 화일에서 시즈하여 사용하는 이름의 그랜트되지 않은 것이 있으면 인터페이스 화일을 지우고 처음부터 다시 시작한다(310, 308). 다음 단계에서 가시성 분석 및 어의를 분석하여 각 모듈에서 그랜트/시즈한 이름에 대한 바인딩 및 일치성을 점검하고 어의를 분석한다(311). 다음에 각 모듈의 시즈된 이름들에 대해서 그 이름을 그랜트한 이름에 시즈한 화일 이름을 디팬드 화일(dependfile)에 넣어주어 이름과 화일 사이의 의존 관계를 구성한다(312). 인터페이스 화일의 인터페이스 부분과 수정된 부분의 인터페이스를 비교하여 바뀐 부분이 있으면 그로 인하여 영향을 받는 화일들에 대한 시즈 화일을 재생성되어야 할 화일리스트에 넣는다(313). 재생성되어야 할 시즈 화일들 및 인터페이스 화일을 생성하고 수행을 종료한다(314).
제4도는 인터페이스 화일내에서 보관하는 화일 형상에 대한 자료구조도이다.
화일 형상은 주어진 화일들에 대한 화일 이름 리스트와 각 화일내에 있는 모듈 이름 리스트를 가지는데, 도면에 도시한 바와 같이 각 화일에 대해서는 화일 이름 및 그화일내에 존재하는 모듈 이름들을 보관하기 위한 엔트리에 대한 포인터와, 다른 화일 엔트리에 포인터를 가진다. 이와 같이 주어진 화일들에 대한 화일 이름 및 모듈 이름에 대한 정보를 링크드 리스트로 보관한다.
따라서, 상기와 같은 단계를 구비하는 본 발명은 불필요한 재컴파일이 발생하지 않도록 하기 위하여 화일과 화일 사이의 의존 관계를 다른 화일에 영향을 미치는 이름에 대해서 그 이름을 실제로 시즈하여 사용하는 화일의 리스트를 가지도록 하여 이름과 화일 사이의 의존 관계를 구성하여 인터페이스 화일에 그랜트/시즈되는 인터페이스 정보와 함께 저장함으로서 재컴파일 시에는 수정된 부분과 인터페이스 화일의 내용을 비교하여 바뀐 이름이 있으면 그 이름과 의존관계를 가지는 화일을 재컴파일함으로써 재컴파일되는 화일의 수를 최소화하여 전체적인 컴파일 시간을 줄일 수 있는 효과가 있다.

Claims (4)

  1. 메인 메모리 보드(101), 중앙처리 장치보드(102), 보조 기억 장치(104), 입/출력장치(105), 및 UNIX 운영 체제부(103)를 구비한 하드웨어에 적용되는 칠(CHILL) 분리 재컴파일 최소화하는 방법에 있어서, 처음 컴파일과 재컴파일을 구분하는 제1단계(301) ; 상기 제1단계(301) 수행 후, 처음 컴파일이면 아규먼트로 주어진 스펙 화일들에서 그랜트/시즈된 이름들에 대한 바인딩을 하여 시즈 화일 및 인터페이스 화일을 생성하는 제2단계(302 내지 305) ; 상기 제1단계(301) 수행 후, 재컴파일이면 주어진 이터페이스 화일의 내용이 유효한가를 검사하는 제3단계(306 내지 310) ; 상기 제3단계(306 내지 310)수행 후, 인터페이스 화일의 내용이 유효하지 않으면 인터페이스 화일을 지우고 처음으로 복귀하며 유효할 경우 인터페이스 화일 및 수정된 스펙 화일들을 분석하여 재컴파일되어야 할 시즈 화일들과 인터페이스 화일을 생성하는 제4단계(308, 311 내지 314) ; 를 포함하여 이루어지는 것을 특징으로 하는 칠(CHILL) 분리 컴파일 시스템에서 재컴파일 최소화 방법.
  2. 제1항에 있어서, 상기 제2단계(302 내지 305)는, 스펙 화일들을 읽어들여 파싱한 후 가시성분석 및 어의 분석을 하는 제1과정(302, 303) ; 상기 제1과정(302, 303) 수행 후, 인터페이스의 화일 형상을 구성한 후, 각 원시 화일에 대해서 시즈 화일과 인터페이스 화일을 생성하는 제2과정(304, 305) ; 을 포함하여 이루어지는 것을 특징으로 하는 칠(CHILL) 분리 컴파일 시스템에서 재컴파일 최소화 방법.
  3. 제1항에 있어서, 상기 제3단계(306 내지 306)는, 인터페이스 화일을 읽어들여 파싱하여 화일 형상의 각 화일이 아규먼트로 주어졌는가를 검사하는 제1과정(306, 307) ; 상기 제1과정(306, 307) 수행 후, 화일 형상에 있는 화일이 아규먼트로 주어지지 않았으면 인터페이스 화일을 지우고 처음으로 복귀하며 아규먼트로 주어졌을 경우 아규먼트로 주어진 각 화일에 대해서 인터페이스의 형상에 없는 화일이면 아규먼트 화일을 파싱하고 인터페이스 화일의 내용과 수정된 화일의 내용을 비교하는 제2과정(308 내지 310) ; 을 포함하여 이루어지는 것을 특징으로 하는 칠(CHILL) 분리 컴파일 시스템에서 재컴파일 최소화 방법.
  4. 제1항에 있어서, 상기 제4단계(308, 311 내지 314)는, 인터페이스 화일 정보가 무효이면 인터페이스 화일을 지우고 처음으로 복귀하여 재수행하며 유효하면 가시성 분석 및 어의를 분석하는 제1과정(308, 311) ; 상기 제1과정(308, 311) 수행 후, 각 모듈의 시즈된 이름들에 대해 그 이름을 그랜트한 이름에 시즈하는 화일 이름을 디팬드 화일에 넣어 이름과 화일간의 의존 관계를 구성하여 재생성되어야 할 시즈 화일을 리스트에 넣은 제2과정(312, 313) ; 상기 제2과정(312, 313) 수행 후, 재생성되어야 할 시즈 화일들 및 인터페이스 화일을 생성하고 수행을 종료하는 제3과정(314) ; 을 포함하여 이루어지는 것을 특징으로 하는 칠(CHILL) 분리 컴파일 시스템에서 재컴파일 최소화 방법.
KR1019930025356A 1993-11-26 1993-11-26 칠(chill) 분리 컴파일 시스템에서 재컴파일 최소화 방법 KR950010827B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019930025356A KR950010827B1 (ko) 1993-11-26 1993-11-26 칠(chill) 분리 컴파일 시스템에서 재컴파일 최소화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019930025356A KR950010827B1 (ko) 1993-11-26 1993-11-26 칠(chill) 분리 컴파일 시스템에서 재컴파일 최소화 방법

Publications (2)

Publication Number Publication Date
KR950015068A KR950015068A (ko) 1995-06-16
KR950010827B1 true KR950010827B1 (ko) 1995-09-23

Family

ID=19369002

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930025356A KR950010827B1 (ko) 1993-11-26 1993-11-26 칠(chill) 분리 컴파일 시스템에서 재컴파일 최소화 방법

Country Status (1)

Country Link
KR (1) KR950010827B1 (ko)

Also Published As

Publication number Publication date
KR950015068A (ko) 1995-06-16

Similar Documents

Publication Publication Date Title
Ševčík et al. CompCertTSO: A verified compiler for relaxed-memory concurrency
US5822588A (en) System and method for checking the use of synchronization locks in a multi-threaded target program
Ŝevčik et al. Relaxed-memory concurrency and verified compilation
Carlsson et al. SICStus Prolog—the first 25 years
US6353925B1 (en) System and method for lexing and parsing program annotations
US7962904B2 (en) Dynamic parser
US7120898B2 (en) Intermediate representation for multiple exception handling models
US8640107B2 (en) Methods and arrangements for unified program analysis
US8141064B2 (en) Method and system for program transformation using flow-sensitive type constraint analysis
EP1280056B1 (en) Generation of debugging information
Stallman GNU compiler collection internals
US5367683A (en) Smart recompilation of performing matchup/difference after code generation
US6195792B1 (en) Software upgrades by conversion automation
US20080022260A1 (en) Method for accessing internal states of objects in object oriented programming
Luo et al. C11Tester: a race detector for C/C++ atomics
US5535392A (en) Using hint generation to cause portions of object files to remain the same
Goldthwaite Technical report on C++ performance
KR950010827B1 (ko) 칠(chill) 분리 컴파일 시스템에서 재컴파일 최소화 방법
Garcia et al. JaDA–the Java deadlock analyser
Štill et al. Weak memory models as LLVM-to-LLVM transformations
Chambers et al. Iterative type analysis and extended message splitting: Optimizing dynamically-typed object-oriented programs
Atterer Automatic test data generation from VDM-SL specifications
KR970001611B1 (ko) 칠 분리 컴파일 방법
Gustedt Modular C
Hopkins Renovating the collected algorithms from ACM

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20040831

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee