KR19990077378A - 통신시스템의 분산 처리 방법 및 장치 - Google Patents

통신시스템의 분산 처리 방법 및 장치 Download PDF

Info

Publication number
KR19990077378A
KR19990077378A KR1019980705553A KR19980705553A KR19990077378A KR 19990077378 A KR19990077378 A KR 19990077378A KR 1019980705553 A KR1019980705553 A KR 1019980705553A KR 19980705553 A KR19980705553 A KR 19980705553A KR 19990077378 A KR19990077378 A KR 19990077378A
Authority
KR
South Korea
Prior art keywords
sentence
compiler
execution
data
language
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
KR1019980705553A
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 내쉬 로저 윌리엄
Publication of KR19990077378A publication Critical patent/KR19990077378A/ko
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Computer And Data Communications (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

본 발명은 통신네트워크의 제어를 위한 분산형 처리에 관한 것으로서, 시스템 실행 기준에 대한 기능적인 필요조건이 종래의 컴파일러에 의해서는 무시되지만(디버깅을 위해 프로그램의 단일 프로세서 버전에 대한 컴파일을 허용하기 위해) 분산형 시스템의 호스트 컴퓨터(10)에 대한 코드를 컴파일할 때 시스템 데이터(318)를 고려하여 전치 컴파일러(316)에 의해 해석되는 객체지향 언어(예를 들어 C++)의 주석 필드로서 입력될 수 있는 분산형 객체 시스템에 대한 컴파일러를 포함하고, 이 시스템은 통신시스템인 것이 바람직한 것을 특징으로 한다.

Description

통신시스템의 분산 처리 방법 및 장치
본 발명은 분산형 처리, 배타적이지는 않지만 특히 통신네트워크의 제어를 위한 분산형 처리에 관한 것이다. 특히, 본 발명은 분산형 프로세서에 구현된 제어 시스템을 개발하고, 갱신하는 것과 관련이 있고, 이 분산형 처리는 객체 지향 방식으로 구현되는 것이 바람직하다.
고대역폭, 낮은 지연의 정보 흐름을 지원하는 통신네트워크가 점점 요구되고 있다. 요구되는 대역폭은 초당 킬로비트에서 초당 메가비트, 심지어 초당 기가비트(특히 예를 들어 VOD, 움직임이 가미된 공유 시뮬레이션 및 분산형 컴퓨팅)로 빠르게 나아가고 있다.
"지능형 네트워크"를 제공함으로써 특정 번호로의 호출 재지정, 스위칭 센터에 연결된 복수의 호스트 컴퓨터상에서의 컴퓨터 프로그램 실행(예를 들어 100대 까지)이 용이해진다. 특정 고객에게 서비스가 제공되는(예를 들어 고객이 호출하는 특정 번호에 대해 경로가 지정되는) 방식은 호스트 컴퓨터상에 그 고객과 관련하여 저장된 데이터에 의존한다. 따라서, 수십 또는 수백개의 호스트 컴퓨터상에는 수백만의 가입자 레코드가 존재할 수 있다.
1995년 4월, BT 기술 저널, Vol 13 No. 2에 실린 P.A. Martin의 "Twenty-twenty vision - 21세기의 지능형 시스템을 위한 소프트웨어 체계"에서 본 발명자는 요구되는 분산형 처리를 구현하기 위해 객체지향 기술을 사용할 것을 제안하였다.
객체지향 기술에 대한 설명은 예를 들어 1993년 7월, BT 기술 저널, Vol 11 No. 3에 실린 E.L. Cusack와 E.S. Cordingley의 "객체지향 기술"에서 찾을 수 있다. 이 용어가 항상 정확하게 사용되지는 않지만, 여기서 객체지향 컴퓨팅은 데이터가 호출 프로그램 또는 루틴에 의해 액세스 가능하지는 않고 "밀폐된" 형태로 저장되어 그 데이터를 판독, 기록 및 편집할 수 있는 관련 프로그렘에 의해서만 액세스 가능한 컴퓨팅 기술에 관한 것이다. 데이터 레코드와 관련 프로그램은 "객체"로서 인용된다. 객체로의 통신과 객체로부터의 통신은 일반적으로 "메시지 전송"에 의한다. 즉, 객체에 대한 호출은 데이터값을 전송하고, 객체내에 포함된 프로그램 중 하나를 동작시켜 데이터값을 리턴한다.
객체지향 방식을 이용하고자 하는 프로그래머는 다양한 언어를 사용할 수 있다. 이들 중에서 현재 가장 일반적인 것은 C++이다.
분산형 처리는 단일 프로세서 동작과는 몇가지 측면에서 상이하다. 먼저, 다른 프로그램 또는 데이터가 호출 프로그램과 동일한 호스트 컴퓨터에 위치하는지 아니면 다른 호스트 컴퓨터에 위치하는지에 따라 서로 다른 액세스 기술이 요구될 수 있다. 프로그램 또는 데이터의 위치는 또한 다른 프로그램으로부터 도달될 수 있는 속도에 영향을 미친다. 또한, 하나 이상의 호스트 컴퓨터가 고장일 때 다른 컴퓨터들은 동작중일 수도 있다.
분산형 컴퓨팅은 일반적으로 한 컴퓨터의 "클라이언트" 프로그램이 함수를 실행하거나 클라이언트 프로그램이 요구한 데이터를 리턴하는 다른 컴퓨터의 "서버" 프로그램에 신호를 보내는 "클라이언트-서버" 구성을 사용함으로써 실행된다.
객체지향 기술은 분산형 처리에 널리 적용되지는 않았다. 이런 관점에서 해당 기술 상태에 대한 요약은 1991년 런던의 피트만 출판사에서 펴낸 Blair G.의 "객체지향 프로그래밍 시스템"(ISBN 0-273-03132-5), 특히 223-243페이지, 제 9 장에 기술된 David Hutchison과 Jonathan Valpole의 "분산형 시스템과 객체"에서 찾을 수 있다. 이전의 시도들은 분산형 처리를 다루기 위해 현존하는 컴퓨터 언어에 새로운 구문을 부가하거나 종래의 객체지향 프로그래밍을 확장하는데 새로운 컴퓨터 언어를 만들어 내었다.
한 태양에 있어서, 본 발명은 통신시스템을 제어하기 위해 복수의 호스트 컴퓨터에서의 분산형 처리에 사용하기 위한 코드를 발생하는 컴파일러(또는 전치 컴파일러)를 제공하고, 상기 컴파일러는 다른 컴파일러에 의해 컴파일 가능한 제 1 문장을 포함하는 컴퓨팅 언어로 기록된 소스 프로그램을 수신하도록 구성되며, 상기 컴파일러 또는 전치 컴파일러는 다중프로세서 동작에 대한 프로그램을 적합시키기 위해 상기 시스템에 대한 실행 기준을 포함하고, 다른 컴파일러는 무시하는 제 2 문장에 대해 동작하도록 구성된다. 상기 제 2 문장은 주석 필드에 존재하는 것이 바람직하다.
편의상 상기한 본 발명의 태양은 보다 일반적인 컴파일러와 함께 사용될 수 있는 전치 컴파일러를 포함하지만, 본 발명의 기능요소들은 재기록형 컴파일러에 직접 포함될 수도 있다.
따라서, 상기한 본 발명의 태양에 따르면, 소스 코드는 단일 프로세서상에서 프로그램 제작자에 의해 종래의 컴파일러로 실행을 위해 컴파일되고 검사될 수 있고, 다중프로세서 시스템상에서의 실행을 위해 본 발명의 컴파일러에 의해 컴파일되기 전에 다중프로세서 환경에 특유한 제 2 문장은 단일 호스트 컴퓨터에 의해 무시된다. 이에 의해 프로그래머는 실시간으로 검사할 필요 없이 프로그램의 기본적인 동작을 확인할 수 있다.
다른 태양에 있어서, 본 발명은 분산형 객체 시스템에 대한 컴파일러를 제공하고, 여기서 시스템 실행 기준에 대한 기능적인 요구가 입력되고, 기능 또는 요구가 일치하는지를 확인하기 위해 컴파일 동안 해석된다.
예를 들어, 시스템 실행 기준은 응답 시간, 객체 수 또는 데이터 보전일 수 있다.
상기 태양에 있어서, 기능적인 요구는 각각의 객체 및/또는 객체의 클래스에 대해 저장 가능한 것이 바람직하다.
편의상, 기능적인 요구는 상기 제 1 태양에서 인용된 제 2 문장을 사용하여 지정된다.
본 발명의 다른 태양과 실시예는 이하에 기술되고 청구되는 바와 같다.
이하 첨부한 도면을 참조하여 적당한 예를 통해서 본 발명의 실시예를 구성한다.
도 1은 본 발명을 구현하는 통신시스템의 구성요소를 나타내는 블럭도,
도 2는 도 1의 시스템의 다른 실시예를 나타내는 블럭도,
도 3은 도 1 및 도 2의 시스템의 일부를 형성하는 호스트 컴퓨터의 구성요소를 나타내는 블럭도,
도 4는 도 1 및 도 2의 시스템의 일부를 형성하는 컴파일러 장치의 구성요소를 나타내는 블럭도,
도 5는 도 4의 컴파일러 장치의 동작을 나타내는 흐름도,
도 6은 도 5에서 실행된 처리의 단계들의 결과를 나타내는 설명도,
도 7a는 도 1의 일부를 형성하는 인텔리전스 도메인내에 저장된 데이터의 구조를 나타내는 도면,
도 7b는 도 1의 일부를 형성하는 트랜스포트 도메인내에 저장된 데이터의 구조를 나타내는 도면,
도 8은 도 7a의 한 구성요소의 메모리내의 데이터 구조를 나타내는 도면,
도 9는 도 4의 컴파일러 장치를 적용할 수 있는 소스 코드를 나타내는 도면,
도 10은 도 10 내지 도 14를 포함하는 전치 컴파일러 처리의 일부를 나타내는 흐름도,
도 11은 상기 처리의 다른 부분을 나타내는 도면,
도 12는 상기 처리의 다른 부분을 나타내는 도면,
도 13은 상기 처리의 다른 부분을 나타내는 도면 및
도 14는 상기 처리의 다른 부분을 나타내는 도면이다.
도 1에 있어서, 본 발명에 따라 생성된 통신시스템은 트랜스포트 도메인(6)을 구성하는 통신채널(4)(예를 들어 마이크로파 채널, 광파이버 케이블, 동축 구리케이블 또는 상기한 것 중 어느 하나에 수반된 가상회로)에 의해 서로 연결된 복수의 스위칭 센터 또는 교환기(2a, 2b)를 포함한다. 트랜스포트 도메인(6)에는 호스트 컴퓨터(10a, 10b)를 서로 연결하는 시그널링 링크(12a, 12b, 12c)를 통한 스위칭 센터(2a, 2b)와의 시그널링 통신에 있어서 복수의 호스트 컴퓨터(10a, 10b)를 포함하는 인텔리전스 도메인(8)이 연결된다. 예를 들어, 2개의 도메인은 시그널링 시스템(7)(SS7)과 같은 프로토콜을 사용하여 서로 연결될 수 있다.
비디오 플레이어(16)와 같은 광대역 통신장치와 전화(14a, 14b)와 같은 최종 사용자 단말 장치 또는 설비는 공동으로 로컬 루프 접속(20a, 20b, 20c)(예를 들어 광파이버, 셀룰러 무선 또는 비틀린 한 쌍의 구리 케이블 링크)를 통해 트랜스포트 도메인(6)에 연결된 최종 사용자 도메인(18)을 포함한다.
또한, 비디오 플레이어(24)와 같은 서비스(예를 들어 비디오 서비스)를 제공하는 설비와 ISDN 채널 또는 다른 고대역 링크와 같은 로컬 루프 접속(28a, 28b, 28c)을 통해 트랜스포트 도메인(6)과 연결된 컴퓨터 단말(26)로 구성되는 서비스 제공자 도메인(22)이 제공된다.
주지된 방식에 있어서, 최종 사용자 단말 장치(14 또는 16)는 트랜스포트 도메인(6)을 통해 서비스 제공자 도메인(22)으로 요청을 전송하는데 사용된다. 그 결과, 채널은 트랜스포트 도메인(6)을 통해 셋업되고, 서비스 제공자 도메인(22)은 채널을 통해 최종 사용자 도메인(18)으로 서비스를 전송한다(예를 들어 실시간 비디오 필름 또는 전자적인 형태의 데이터 파일을 전송함으로써).
종래의 간단한 구형 전화 서비스(POTS)에 있어서, 트랜스포트 도메인(6)은 단순히 트랜스포트 경로를 셋업하기 위해 최종 사용자 도메인에서 발생된 호출된 번호에 의해 제어된다. 그러나, 현재 트랜스포트 도메인의 "지능형 네트워크" 제어는 인텔리전스 도메인(8)에 의해 제공된다. 인텔리전스 도메인(8)은 트랜스포트 도메인(6)으로부터 호출된 번호 및/또는 호출되는 번호를 수신하고, 호출된 또는 호출되는 번호 중 어느 하나 또는 이들 모두에 따라 몇가지 호출 처리를 실행한다. 인텔리전스 도메인은 통상 번호 변환 서비스를 제공하고, 여기서 호출된 전화번호는 서비스를 발송하는 호출을 제공하기 위해 다른 번호로 변환된다. 이 경우에 있어서, 호출된 번호는 호스트 컴퓨터(10) 중 하나에 저장된 기록에 대응하고, 이것은 대응하는 새 번호를 발생하기 위해 링크(12) 중 하나의 신호에 응답하여 액세스된다.
일반적으로, 트랜스포트 도메인(6)에서의 이벤트의 발생(최종 사용자 도메인(18)로부터의 호출의 개시와 같은)에 응답하여 인텔리전스 도메인은 제어 정보를 제공하여 트랜스포트 도메인(6)을 제어한다.
다른 데이터가 또한 인텔리전스 도메인내에 저장된다. 이 실시예에 있어서, 각각의 고객에 대한 주기적인 요금청구를 할 수 있도록 각각의 호출에 대한 요금청구 데이터가 인텔리전스 도메인에 저장된다.
도 2에 있어서, 인텔리전스 도메인(8)은 또한 네트워크 서버(11a-11c)를 통해 호스트 컴퓨터(10)에 연결된, 프로그램화된 워크스테이션으로 구성되는 컴파일러 장치와, 컴파일러 장치(30), 호스트(10) 및 서버(11) 사이에서 동작하는 광역네트워크(WAN)를 포함한다.
서버는 또한 인터넷(32)에 포함된 하나 이상의 월드와이드웹(WWW) 서버 컴퓨터에 연결되며, 또한 (예를 들어, 로컬 패킷 스위칭 노드를 통해) 인터넷에 연결된 편집 단말(15a-15d)에 연결된다.
도 3에 있어서, 각각의 호스트 컴퓨터(10)는 WAN을 통해 서버(11)에 연결된 통신 하드웨어(100), 프로세서(102) 및 랜덤 액세스 메모리 형태의 고속 액세스 기억장치와 자기 또는 광디스크 드라이브 형태의 오프라인 기억장치를 포함하는 기억장치(104)를 포함하는 메인프레임 또는 서버를 포함한다.
기억장치(104)내에는 운영체계(106)(예를 들어 UNIX(TM)), 객체 관리자 프로그램(108) 및 클래스 코드(110)와 객체 데이터를 포함하는 객체 모델이 저장되어 있고, 이들 모두는 아래에서 보다 상세히 논의될 것이다.
각각의 편집 단말(15)은 개인용 컴퓨터를 포함하고, 모뎀을 통해 사용자 설비측의 대응하는 전화(14)를 갖는 공통 전화 소켓에 연결된다.
따라서 각각의 편집 단말(15)은 프로세서, 스크린 출력장치, 입력장치(예를 들어 키보드 또는 마우스와 같은 커서 제어장치) 및 그래픽 사용자 환경(예를 들어 WINDOWS(TM)), 통신 프로그램 및 객체 브라우저 프로그램)을 포함하는 기억장치(RAM, ROM 및 하드디스크)를 포함한다.
도 4에 있어서, 컴파일러 장치는 WAN 서버(11)에 연결된 통신 인터페이스 회로기판(300), 프로세서(302) 및 고속 액세스 메모리(RAM)과 고용량 기억장치(예를 들어 하드디스크)를 포함하고, 운영체계(예를 들어 UNIX(TM)), C++ 컴파일러 프로그램(312)(예를 들어 선 마이크로시스템의 SunPRO와 같은), 아래 보다 상세히 기술되는 전치 컴파일러(316) 및 새로운 프로그램에 포함되는 표준 함수와 정의(서브프로그램 또는 서브루틴을 나타내는)을 저장하는 라이브러리(314)를 저장하는 기억장치(304)(개별적으로 표시되지 않음)를 포함한다.
C++ 컴파일러는 종래와 마찬가지로 재배치 가능한 2진 코드로 컴파일하는 컴파일러와, 라이브러리(314)에 저장된 2진 코드 루틴과 2진 코드를 연결하고, 실행을 위해 메모리 어드레스 공간에 연결된 코드를 배치시키는 링커 프로그램(312b)를 포함한다. 이 컴파일러는 또한 일반적으로 부가적인 코드를 읽어들이는 'include'문장과 같은 컴파일러 지령을 해석하고, 컴파일 동안 다른 동작을 실행하는 전치 프로세서를 포함한다.
또한 C++ 프로그램을 정의하는 입력 소스 코드(예를 들어 입력장치(320)를 통해 입력되거나 통신회로(300)를 통해 다운로드되거나 기억장치(304)내에 포함된 디스크 드라이브를 통해 로드된)를 저장하는 기억영역(308)과, C++ 컴퓨터(312)에 의해 발생된 실행 가능한 코드(즉, 컴파일러 프로그램의 제어하에서 동작하는 프로세서(302)에 의해)를 저장하는 기억영역(310)을 포함한다. 또한 분산형 프로세서(10)의 수에 관한 시스템 데이터, 각 프로세서(10)가 이용가능한 기억장치의 용량 및 프로세서(10)의 동작 속도 등을 저장하는 기억영역(318)을 포함한다.
프로세서(102)는 실행 가능한 코드 기억영역(310)에서 실행 가능한 코드를 발생하기 위해 소스 기억영역(308)의 소스 코드에 대하여 C++ 컴파일러(312) 또는 소스 기억영역(308)의 소스 코드에 대하여 C++ 컴파일러(312) 이전의 전치 컴파일러(316) 중 어느 하나를 선택적으로 실행하도록 구성된다.
전자의 경우에 있어서, 생성된 코드는 적당한 단일 프로세서에서 실행할 것이다. 이 실시예에서 프로세서(302) 자체는 C++ 컴파일러에 의해 상기 방식으로 직접 발생된 코드를 실행할 수 있도록 구성되고, 사용자는 프로그램이 일반적으로 예측한 바와 같이 동작하는지를 즉시 검사할 수 있다.
후자의 경우에 있어서, 전치 컴파일러(316)는 먼저 소스 기억영역(308)의 소스 코드를 처리하고(코드가 실행되는 호스트(10)를 포함하는 분산형 시스템과 관련한 시스템 데이터를 고려하여), 컴파일러(312)에 의해 실행 가능한 코드 기억영역(310)의 생성된 실행 가능한 코드로 컴파일되는 소스 기억영역(308)의 수정된 소스 코드를 발생한다. 그러나, 상기 실행 가능한 코드는 다중 분산형 호스트(10)에서 실행하기 위한 것이기 때문에 컴파일러 장치(30)에서 반드시 실행 가능한 것은 아니다.
도 5에 있어서, 감시 프로그램(307)의 제어하에서 컴파일러(30)의 일반적인 동작은 다음과 같다.
스텝(202)에서, 소스 코드는 소스 코드 기억영역(308)으로 (예를 들어, 입력장치(320)를 통해) 입력된다. 스텝(204)에서, 운영요원은 소스 기억영역(308)의 소스 코드를 편집하도록 결정할 수 있고, 여기서 편집된 텍스트는 (예를 들어, 종래의 텍스트 처리기를 통해) 소스 기억영역(308)에 입력된다.
일단 상기 편집이 종료하면, 스텝(206)에서, 사용자는 소스 코드를 국부적으로 검사할 것인지를 선택할 수 있다. 그와 같이 한 경우에 있어서, 스텝(208)에서 프로세서는 실행 가능한 코드 기억영역(310)에서 실행 가능한 코드를 발생하기 위해 소스 기억영역(308)의 소스 코드에 대하여 C++ 컴파일러(312)를 실행하고, 스텝(210)에서 프로세서(302)는 실행 가능한 코드를 실행한다. 의미없는 동작을 차단하고, 사용자가 어떤 일이 발생하는지를 볼 수 있도록 출력 스크린(322)에 표시하는 것과 같은 동작을 대신 사용한다.
실행중에 오류가 발생하는 경우에 있어서, 스텝(212)에서 사용자는 소스 코드 기억영역(308)의 소스 코드를 편집하기 위해 스텝(204)로 리턴할 것인지를 결정할 수 있다. 소스 코드가 충분하다고 생각되면, 스텝(214)에서 수정된 코드를 발생하기 위해 소스 코드 기억영역(308)의 소스 코드에 전치 컴파일러(316)가 적용되고, 이 수정된 코드는 스텝(216)에서 실행 가능한 코드 기억영역(310)의 실행 가능한 코드를 발생하기 위해 C++ 컴파일러에 의해 컴파일된다. 다음에 이것은 스텝(218)에서 WAN 서버(11)를 통해 분산형 호스트 컴퓨터(10)로 전송된다. 이것은 도 6에 도식적으로 표시되어 있다.
이후 인텔리전스 도메인내에 이용된 데이터 모델을 간단히 기술한다. 이하에서, 각각의 "객체"는 데이터 필드의 수를 포함하는 데이터 레코드이고, 이것은 다만 그 객체에 대응하는 코드에 의해서 액세스된다(1 대 다의 관계로, 객체의 클래스와 관련한 동일한 코드가 그 클래스의 모든 객체를 액세스한다는 의미에서).
종래와 마찬가지로, 객체는 클래스로 그룹화되고, 동일 클래스의 객체들은 서로 다른 데이터이지만 동일한 포맷을 포함한다. 각각의 객체는 또한 데이터에 대해 동작하고, 일반적으로 그와 같이 행하는 유일한 수단을 구성하는 하나 이상의 서브루틴(일반적으로 "매서드" 또는 "함수"라 함)과 연관된다.
동일 클래스의 서로 다른 객체와 연관된 서브루틴이 수신하고, 대응하는 데이터를 리턴하는 포맷은 동일하다(즉, 동일 클래스의 모든 객체는 공통 인터페이스를 갖는다). 사실, C++에서 서브루틴은 코드와 객체가 1 대 다의 관계가 되도록 동일 클래스의 모든 객체에 대해 1번만 표현된다(즉, 서브루틴에 대한 코드는 1번만 저장된다). 따라서, 코드는 각 객체가 아니라 객체의 클래스와 연관된다.
객체지향 프로그래밍에서는 일반적인 것으로서 객체의 각 클래스는 보다 포괄적인 클래스의 일부이다. 이 경우에 코드는 보다 포괄적인 클래스("슈퍼클래스")와 관련하여 대신 저장될 수 있다. 객체 관리자(108)는 각각의 객체를 구성하는 데이터 위치의 목록을 포함하고, 객체 호출시에 객체 관리자는 클래스 코드 기억영역(110)내의 관련된 서브루틴 코드를 액세스하고, 객체 기억영역(112)내의 관련된 객체에 대한 데이터의 어드레스를 코드에 제공한다.
도 7에 있어서, 이 실시예에서 인텔리전스 도메인의 호스트(10)내에 제공된 객체는 새로운 고객의 가입에 대해 형성되고, 고객이 자발적으로 벗어나거나 네트워크로부터 차단되면 파기되며, 고객의 요구가 변할 때 편집되는 복수의 고객 객체(500)(수천만의 고객의 각각과 관련된 데이터를 저장하는 것), 호출의 개시로 형성되고, 호출 종료후에 파기되는 복수의 호출 객체(600a-600c) 및 각각이 고객 단말 설비의 항목과 관련이 있고, 네트워크에 대한 고객 단말 설비의 제 1 접속시에 형성되는 복수의 통신장치 객체(700a-700c)를 포함한다.
도 7b에 있어서, 이 실시예에서 트랜스포트 도메인(6)의 스위칭 센터(2a, 2b...)는 또한 각각이 스위칭 센터내 스위치와 스위치의 포트를 나타내는 객체(800a-800b, 900a-900f)가 저장되는 호스트 컴퓨터를 포함한다. 따라서, 각각의 스위치 객체(800)는 어떤 한 순간에 대응하는 스위치의 상태에 대한 레코드를 포함한다. 이들 객체는 메모리내에 영구적으로 존재하고, 스위칭 센터(2)에 존재하는 물리적인 장치에 대한 1 대 1 사상을 갖으며, 그 결과 포트 또는 스위치 객체에 대한 기록은 각각의 포트 또는 스위치의 상태를 변경하고, 포트 또는 스위치 객체에 대한 판독은 대응하는 물리적인 장치의 실제 상태를 정확히 반영한다.
예를 통해서 고객 객체내 데이터의 구조가 도 8에 도시되어 있다.
객체(500)에 의해 유지된 속성 데이터는 (고객이 종업원이거나 약간 다른 이상한 상태 또는 정상적인 고객인 것을 나타내는) 고객 형태 필드(502), 사용자 ID 필드(504), 객체(500)가 형성되는(편의상 http/TCP/IP 포맷으로) 호스트(10)를 나타내는 호스트 필드(506)를 포함한다.
또한 고객에게 제공된 서비스와 관련한 데이터, 예를 들면, 정상적인 고객 전화번호(필드(508)), 특정한 시각에 다시 경로지정되는 고객의 호출의 전화번호(필드(510)) 및 호출이 다시 경로지정되는 시각(필드(512))이 저장되어 있다.
마지막으로 고객에 대한 요금청구 정보가 각각의 호출에 대하여 호출된(및/또는 호출하는) 전화번호, 호출 날짜와 시간 및 호출 비용(필드(514))을 저장하는 호출 로그 필드(514)의 형태로 저장되어 있다.
이 정보의 서로 다른 부분들은 서로 다른 개인에 의해 액세스되어야 한다. 예를 들어 고객에게 제공되는 서비스를 규정하는 필드(508-512)는 최종 사용자 단말(15)을 통해 고객 서비스 직원 또는 고객 자신에 의해서 편집될 수 있고, 반면에 요금청구 데이터(필드(514))는 네트워크를 운영하는 요금청구 및 회계 직원에 의해서만 기록 가능해야 한다. 확실히, 최종 사용자 단말(15)로부터 자신의 요금청구 기록을 재기록할 수 있는 고객은 없다.
동작에 있어서, 트랜스포트 도메인에서의 이벤트의 발생(최종 사용자 도메인내 "오프 후크(off hook)" 상태에 대한 모니터링과 같은)은 인텔리전스 도메인의 객체와 연관된 코드의 동작을 호출한다. 예를 들어 최종 사용자 도메인에서 오프 후크되는 전화에 대하여 새로운 "호출" 객체(600)를 형성하기 위한 코드가 호출된다. 호출된 번호가 검출될 때, 그것은 시그널링 링크(12)를 통해 인텔리전스 도메인(8)으로 전송되고, 호출하는 측의 고객 객체(500)는 그의 요금청구 레코드 필드를 수정하기 위해 활성화되며, 호출된 측의 고객 객체(500)는 호출이 발송되어야 하는 번호를 결정하고, 이 정보는 다음에 호출이 전송되는 경로를 셋업하기 위해 트랜스포트 도메인내의 스위치 객체(800)로 전송된다.
호출의 전송 동안 인텔리전스 도메인의 기능은 대개 제한된다. 온 후크 이벤트의 검출에 대하여 호출을 클리어하면, 고객 객체(500)와 연관된 요금청구 함수 코드는 요금청구 데이터 필드를 갱신하고, 호출 객체는 객체 관리자(108)에 의해 삭제된다.
도 9는 도 8의 데이터에 대응하는 클래스 형태(고객)를 선언하는 C++ 소스 코드(100)를 나타낸다. 이것은 C++ 컴파일러(312)에 의해 작동된 문장을 구성하는 부분(1000a)과 C++ 컴파일러(312)에 의해 무시된 주석 문장을 구성하는 부분(1000b)을 포함한다.
그러나, 본 실시예에 따르면, 주석 문장 부분(1000b)은 전치 컴파일러(316)에 의해 작동된다. 각각의 주석 문장(1002b-1012b)은 컴파일러(312)에 이어지는 내용을 무시하도록 지시하는 "//" 기호가 우선한다.
주석 필드의 내용은 전적으로 프로그래머를 위한 서식 정리를 위한 것이고, 따라서 C++ 컴파일러(312)에 의해서는 완전히 무시된다. 본 실시예 있어서, 전치 컴파일러(316)가 주석 문장을 해석하도록 구성된다.
본 실시예에 있어서, 주석 필드의 내용은 분산형 시스템을 구성하는 객체와 관련한 기능적인(또는 성능) 명세 데이터를 포함한다. 특히, 명세 데이터는 다음을 지정하는 데이터를 포함한다.
(a) 주어진 클래스에서 예측된 객체의 수(또는 메모리 공간의 전체 대응하는 크기)
(b) 가용성, 즉 액세스를 위해 객체를 확실히 이용할 수 있는 액세스 순간의 확률
(c) 액세스 가능성 - 즉, 객체(또는 그 안의 특정 데이터)가 호출될 수 있는 서로 다른 액세스 포인트의 수(예를 들어 객체를 액세스해야 하는 단말 또는 메인프레임의 수)
(d) 보안 - 여러 가지 데이터에 대해 각각의 사용자가 갖는 액세스 권한(즉, 그들이 액세스하는지, 만약 그렇다면 그들이 판독하고, 기록하거나 이들 양자를 모두 할 수 있는지)
(e) 등시성 - 즉, 주어진 객체 또는 처리가 동시에 호출될 수 있는 다른 처리의 수
(f) 즉시성 - 즉, 처리가 확실히 종료되는 최대, 평균 및/또는 최소 시간
여러 가지 애플리케이션에 대한 이런 기능적인 기준의 통상적인 값들은 다음과 같다.
몇가지 가능한 애플리케이션과 이들의 기능적인 치수
크기(mb) 가용성(%) 액세스(포인트) 등시성(애플리케이션) 보전(예/아니오) 즉시성(최소/평균/최대)
지능형전화네트워크 1000 99.999 100M 10,000 0/1/100
원격 대면 10 90 10 2 아니오 0/0/0
공유가상현실 100 90 100 10 아니오 0/1/2
기업컴퓨팅 100,000 99.99 10M 1,000 0/1/10
다시 도 9에 있어서, 문장(1002a)은 객체 called "Customer"의 클래스를 정의하고, 문장(1002b)은 이 클래스의 객체가 시간의 99.99%를 확실히 이용할 수 있다는 것을 지정한다.
문장(1004a)는 32바이트 어레이 called "name"을 정의하고, 문장(1004b)은 고객 지원 서비스(CSS) 처리가 내용에 대한 판독 및 기록 액세스를 가져야 하고, 어떤 다른 처리는 판독 전용 액세스를 가져야 한다(그 결과 고객 지원 서비스 직원만이 클래스 고객의 객체에 저장된 가입자명을 변경할 수 있는데, 이는 단일 고객과 관련이 있다)는 것을 지정한다.
문장(1008a)은 함수 "Customer"을 정의하고, 문장(1008b)는 고객 지원 서비스가 액세스를 갖는 것을 지정한다. 문장(1006b)은 함수 "Customer"에 대한 최소, 평균 및 최대 실행 시간(㎳)을 지정한다.
문장(1010a)은 고객 객체에 대한 청구서를 프린트하는 printBill이라는 무효 함수(즉 어떤 결과도 리턴하지 않는 것)를 선언하고, 문장(1010b)은 대응하는 최소, 평균 및 최대 응답시간을 지정한다.
마지막으로 문장(1012a)은 호출이 조정되어야 할 때 구동되는 무효 함수 called callDelivered를 선언하고, 문장(1012b)은 그 함수에 대한 최소, 평균 및 최대 응답시간을 지정한다.
따라서 현재 상태에서 도 9의 코드는 실행 가능한 C++ 문장(1000a)과 주석(1000b)을 포함하고, 이것은 정상적으로 실행하는 C++ 프로그램으로 컴파일되며, 컴파일러(312)는 주석 문장(1000b)에 의해 규정된 기능적인 명세에 대한 고려하지 않는다.
한편, 전치 컴파일러(316)에 의해 처리될 때, 기능적인 기준(1000b)는 아래에 보다 상세히 설명되는 바와 같이 새로운 컴파일 가능한 C++ 코드를 발생하고, 컴파일러에 대한 지령을 발생하는데 있어서 영향을 미친다.
객체의 크기/수
객체의 각 클래스는 예측되는 그 클래스의 객체의 수 또는 요구된 기억장치 공간의 대응하는 크기 중 어느 하나를 나타내는 크기 문장과 연관될 수 있다. 일반적으로, 본 발명의 실시예는 예측된 객체의 수와 관련된 문장을 해석하고(이렇게 하는 것이 프로그래머에게는 보다 쉽기 때문에), 이것을 선언된 객체의 수와 클래스에 대해 선언된 데이터 형태의 크기의 합을 곱함으로써 필요한 메모리 크기로 변환하도록 구성된다.
도 10에 있어서, 스텝(2002)에서 전치 컴파일러는 클래스와 연관된 크기 문장을 판독하고, 각각을 메모리 공간 크기(메가바이트)로 변환하며, 그런 메모리 크기의 모두의 합을 형성하도록 구성된다.
계산된 객체 모델의 전체 크기가 1메가바이트 UNIX 처리에 적합할 만큼 충분히 작으면, 전치 컴파일러는 컴파일러에 코드를 단일 처리로 컴파일하도록 하는 지령을 기록한다(스텝(2006)). 이로 인해 모든 객체가 동일한 어드레스 공간에 존재하기 때문에 컴파일러가 객체에 레퍼런스에 의해 데이터를 전송하는 것을 허용할 때 이용될 수 있는 어드레스 할당이 간단해진다.
그렇지 않으면, 스텝(2008)에서, 전치 컴파일러(316)는 컴파일러에 다중 UNIX 처리로 코드를 컴파일하도록 하는 지령을 기록한다. 스텝(2010)에서, 전치 컴파일러(316)는 코드가 컴파일되는 목표 호스트 프로세서의 최소 수를 선택할 수 있다.
선택 스텝(2004, 2010)은 얼마나 많은 메모리를 각각의 호스트(10)에서 이용할 수 있는지를 나타내는 시스템 데이터 기억장치(318)에 저장된 데이터에 따라 실행될 수 있다.
다른 실시예에서, 계산된 객체 모델의 크기는 또한 다른 방식으로 어드레스 할당 방법을 제어하는데 사용될 수 있다. 예를 들어 객체 모델의 크기는 컴파일러에 메모리 어드레스 할당(여기서 모든 객체는 동일한 메모리 공간내에 위치할 수 있다), 파일 어드레스 할당(보다 많은 수의 객체에 대하여) 또는 객체 UID 중에서 선택하도록 지시하거나 또는 가상 메모리 포인터를 사용하도록 하는데 사용될 수 있다.
가용성
특정 객체의 높은 가용성을 보장하는 한가지 특별한 방법은 객체에 대한 복수의 사본을 형성하는(그리고, 물론 가능한 동일한 모든 사본의 데이터를 갱신하는) 것이다 주어진 객체의 가용성은 그 객체가 응답하는 시간에 거의 반비례한다. 따라서, 바람직한 객체의 사본 수는 가용성 비율과 객체의 평균 응답 시간에 거의 비례한다.
따라서, 도 11에 있어서, 스텝(3002)에서 전치 컴파일러(316)는 객체들의 클래스에 대해 필요한 가용성을 판독하도록 구성되고, 스텝(2004)에서 그 클래스의 객체에 대해 표시된 평균 실행시간을 판독하도록 구성된다.
다음에, 스텝(3006)에서, 전치 컴파일러는 필요한 정도의 가용성을 제공하기 위해 병렬로 존재하는 객체의 사본 수를 선택하고, 스텝(3008)에서 전치 컴파일러는 필요한 사본 수가 동시에 실시간으로 (서로 다른 호스트(10)에서) 형성되도록 하기 위해 그 클래스에 대한 구성자 코드(클래스의 새로운 객체를 실증하는)를 확장한다.
스텝(3006)에서 선택된 수는 일반적으로 데이터 보존을 유지하기 위해 하나일 것이고(이 경우에 전치 컴파일러(316)는 단계(3008)에서 부가적인 코드를 기록하지 않는다), 높은 가용성이 필요한 경우에는 2개 이상의 사본이 상기한 바와 같이 클래스 응답 시간과 필요한 가용성에 기초하여 선택된다.
다른 실시예에서, 목표 액세스 시간에 관련되고, 그에 따라 복사 객체의 바람직한 수를 형성하기 보다는 오히려 지정된 수의 복사 객체가 선택될 수 있고(예를 들어 2), 객체에 대한 액세스 시간은 이를 수용하기 위해 변경될 수 있다(아래에 보다 상세히 기술되는 최소 및 최대내에서).
액세스 가능성
여러 호스트 컴퓨터(10)가 WAN(11, 12)의 여러 위치에 연결될 때, 몇몇 특정한 호스트 컴퓨터(10)는 다른 것 보다 짧은 특정 단말(15) 또는 호스트(10)에 대한 통신경로를 갖는다. 이 데이터는 시스템 데이터 메모리(318)에 저장된다. 따라서, 객체에 액세스하는 단말에 연결된 호스트(10)에 객체를 저장하는 것이 유리하다.
도 12에 있어서, 스텝(4002)에서 전치 컴파일러(316)는 각각의 데이터 선언에 대하여 신원(예를 들어 사용자, 고객 지원, 서비스 제공자, 요금청구 또는 규정자)과 그 클래스의 객체에 액세스하는 단말(15)의 수를 판독하고, 스텝(4004)에서 그 클래스의 새로운 객체가 이들 단말에 대한 최적 액세스를 제공하도록 저장되어야 하는 호스트 컴퓨터(10)를 시스템 데이터 메모리(318)에 저장된 데이터를 사용하여 결정한다.
스텝(4006)에서, 전치 컴파일러(316)는 스텝(4004)에서 선택된 특정 호스트(10)와 연관된 클래스의 새로운 객체를 형성하기 위해 모든 요청을 전송하도록 하기 위해 서로 다른 호스트 컴퓨터(10)에 대해 컴파일된 컴파일러에 객체 관리자(108)를 수정하도록 하기 위해 새로운 소스 코드를 부가할 수 있다.
보안
스텝(4008)에서, 전치 컴파일러(316)는 데이터의 특정 항목을 변경하는 함수를 구동하고 있는 객체 또는 처리의 신원을 조사하고, 그 신원이 예상된 사용자 목록에 따르는 경우에만 액세스를 허용하기 위해 새로운 소스 코드를 부가한다. 따라서, 직원 데이터는 예를 들어 직원 단말에 의해서만 판독되거나 기록될 수 있다.
등시성
한 객체의 데이터에 대해 복수의 등시 액세스가 가능하고, 제 1 객체가 또한 동시에 액세스될 수 있는 다른 객체를 액세스하는 경우에 모순된 상황이 발생할 수 있다. 따라서, 본 실시예에 있어서, 모순을 방지하는 몇가지 수단이 제공된다. 도 13에 있어서, 스텝(5002)에서 전치 컴파일러(316)는 각각의 클래스에 대하여 그 클래스의 객체에 액세스할 수 있는 등시 처리의 수를 판독한다. 등시성 정보가 포함되지 않거나 등시 처리의 수가 명쾌하게 1로 지정되어 있으면, 스텝(5004)에서 다른 동작이 취해지지 않는다. 주어진 객체 클래스에 대하여 스텝(5004)에서 등시 처리가 지정된 수(2 또는 보다 큰 수)를 초과하면, 스텝(5006)에서 등시 제어 방법이 그 클래스에 대해 선택되는데, 본 실시예에서는 간단한 잠금 처리일 수 있고, 이에 의해 객체가 액세스된 후 그 액세스가 중단될 때까지 다른 액세스를 할 수는 없다.
스텝(5008)에서, 컴파일러에 관련된 클래스에 대한 코드에 대해 잠금 단계를 부가하도록 하는 부가적인 소스 코드가 최초 소스 코드에 부가된다.
즉시성
각 호스트(10)는 다중 작업 운영체계(106)를 사용하여 병렬로 서로 다른 객체에 대한 복수의 처리를 동작하게 될 것이다.
도 14에 있어서, 스텝(6002)에서 전치 컴파일러는 각 클래스와 연관된 실행 시간을 판독한다. 모든 평균 실행시간의 총계에 따라 스텝(6004)에서 전치 컴파일러는 각 호스트 컴퓨터(10)에 대하여 시스템 데이터 메모리(318)에 기록된 메모리의 크기에 따라 이용 가능한 메모리내 전체 필요한 액세스 시간에 반비례하는 캐시 크기를 제공하기 위해 각 호스트 컴퓨터(10)에 대한 캐시 크기를 설정하도록 하는 컴파일러 지령을 포함한다.
스텝(6006)에서, 각각의 클래스 정의에 대하여 단시간의 평균 또는 최대 실행 시간이 지정되는지가 검사되고, 만약 그렇다면 스텝(6008)에서 평균 실행시간에 반비례하여 그 클래스에 대한 우선순위 가중이 선택되고, 스텝(6010)에서, 소스 코드가 클래스의 구동(또는 클래스내의 특정 함수 또는 동작) 이후 지정된 시간이 경과했는지를 검사하는 타이머를 구현하는 것과 관련된 클래스에 대해 정의된 코드에 부가되고, 만약 그렇다면 동작을 중지한다.
선택된 가중값은 각 객체가 실행되는 우선순위가 설정되는 것에 따라각각의 호스트(10)에 대해 객체 관리자(108)가 사용하기 위해 컴파일러에 의해 컴파일되는 가중값 리스트에 기록되고, 그 결과 장시간의 평균 응답시간을 갖는 객체는 비교적 낮은 우선순위의 대기를 부여받고, 운영체계(106)에 의해 "배경" 작업으로 처리된다.
요약
따라서, 전치 컴파일러(316)의 동작후, 소스 코드 기억영역(308)에 저장된 확장된 소스 코드는 부가적인 소스 코드와 다음 중 어느 하나에 의해 기능적인 또는 실행 기준을 구현하는 컴파일러 지령을 포함한다.
(a) 클래스 코드(110)에 부가적인 코드 또는 데이터를 부가하거나
(b) 호스트 컴퓨터(10) 모두에 대하여 객체 관리자 코드(108)를 변경하거나
(c) 컴파일러에 서로 다른 호스트 컴퓨터(10)에 대한 개별적인 객체 관리자 버전을 발생하도록 지시한다.
이 확장된 소스 코드에 따라 컴파일러는 입력 소스 코드의 각각의 선언된 클래스에 대한 클래스 코드(110)를 포함하는 실행 가능한 코드 파일을 발생하고, 또한 각 호스트 컴퓨터(10)에 대한 객체 관리자(108)를 포함할 수 있다.
각각의 호스트 컴퓨터(10)에 대한 객체 관리자(108)의 코드의 컴파일하기 보다는 오히려 그의 동작을 변경하기 위해 각 호스트 컴퓨터(10)에 대한 객체 관리자(108)에 의해 이용디는 데이터 파일을 대신 제공하는 것이 바람직하다.
따라서, 예를 들어 새로운 호스트 컴퓨터의 부가 또는 호스트 컴퓨터에서 이용 가능한 메모리의 확장과 같은 이용 가능한 시스템 정보의 변경 때문에, 또는 객체의 하나 이상의 클래스의 함수가 변경되기 때문에 통신시스템이 변경될 때, 상기한 바와 같이 상기한 국부 검사후 전치 컴파일과 컴파일 처리가 반복되고, 새로운 실행 가능한 파일은 광역네트워크를 통해 각각의 호스트(10)로 전송된다.
새로운 호스트 컴퓨터가 다른 변화 없이 시스템에 간단히 부가되는 경우에 현재 호스트 컴퓨터의 방식으로 실행하도록 이전에 컴파일된 실행 가능한 파일의 사본이 간단히 광역네트워크를 통해 새로운 호스트 컴퓨터로 제공될 수 있다.
따라서, 제 1 형태의 컴파일러에 의해 무시되는 문장(예를 들어 주석 문장)으로 시스템 특정 필요조건을 제공함으로써 해제에 앞서 시스템의 기본적인 기능에 대한 간단한 국부 검사를 할 수 있고, 따라서 시스템이 사용상 변경될 때 호스트 컴퓨터(10)의 가능한 다운 시간을 최소로 줄일 수 있다는 것을 알 수 있다.
다른 대안적인 실시예와 변형
이상의 설명으로부터 많은 변형 및 대체가 가능하다는 것을 알 수 있을 것이다. 예를 들어 상기한 이유 때문에 본 발명을 종래의 C++ 컴파일러와 함께 작용하는 전치 컴파일러로서 제공하는 것이 편리하지만, 마찬가지로 본 발명을 종래의 컴파일러에 결합하는 것도 가능하다(그리고 사실 전치 컴파일러와 컴파일러의 조합은 정확히 이를 포함하는 것으로 간주될 수 있다).
당연히 본 발명은 C++ 뿐만 아니라 분산형 환경에 제공되는 Smalltalk(TM)와 같은 다른 객체지향 언어와 함께 사용 가능하다. 보다 일반적으로, 비 객체지향 언어와 함께 비 분산형 시스템에서 동일한 기술을 이용하는 것도 가능하다.
본 발명은 통신시스템내 컴파일러 장치를 포함하는 것으로 기술되었지만, 실제 통신시스템내의 컴파일러 장치는 권한이 다르고, 국제 통신네트워크를 통해 호스트 컴퓨터에 연결될 수 있다는 것을 알 수 있을 것이다. 따라서, 보호는 사용되는 통신네트워크와 조합되거나 분리된 컴파일러 장치에 대해 청구되어있다.
당연히, 예를 들어 공유 분산형 컴퓨팅과 같은 통신 이외의 애플리케이션도 가능하다.
다른 많은 대안과 변형들은 당업자에게는 명백할 것이다. 따라서 본 발명은 첨부한 특허청구범위로 포함되든지 그렇지 않든지 여기에 개시된 내용 중 어느 하나 및 전체를 포함시키기 위한 것이다.
본 출원과 동일자로 출원되고, 같은 제목을 갖는 우리의 다른 영국특허출원 9600823.0는 본 발명과 함께 사용가능하고, 그대로 여기에 인용상 포함되어 있다.
특히, 형태 모델을 형성하는 여기에 기술된 매커니즘은 각각의 객체 관리자(108)에 의해 사용되도록 컴파일된 실행 가능한 코드의 일부로서 제공되는 본 발명에 따라 인식된 기능적인 실행 데이터를 기술하는 각각의 객체에 대한 부가적인 데이터 필드를 포함하도록 확장되는 것이 바람직하다. 이런 방식에 있어서, 동일한 실행 가능한 프로그램이 각각의 호스트 컴퓨터(10)에 제공될 수 있고, 기억장치(318)에 저장된 시스템 정보를 사용할 필요가 없어진다.

Claims (19)

  1. 서로 연결된 복수의 컴퓨터(10)와 상기 컴퓨터(10)에 대한 제어 프로그램을 컴파일하는 장치(30)로 구성되는 분산형 제어 시스템을 포함하고, 상기 장치(30)는 컴퓨터 언어로 주지되어 있고, 다른 컴파일러에 의해 컴파일되는 제 1 문장을 포함하는 컴퓨터 언어의 소스 프로그램을 컴파일하도록 구성되고, 컴파일러(312, 316)는 또한 상기 시스템에 대한 성능 기준을 포함하고, 상기 다른 컴파일러에 의해서는 무시되는 제 2 문장에 대해 작용하도록 구성되는 것을 특징으로 하는 통신시스템.
  2. 제 1 항에 있어서,
    상기 제 2 문장은 상기 언어의 주석 필드에 제공되는 것을 특징으로 하는 통신시스템.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 컴퓨터(10)는 연관된 데이터 판독 및/또는 기록 제어 프로그램과 함께 제어 데이터를 객체 레코드에 저장하도록 구성되는 것을 특징으로 하는 통신시스템.
  4. 제 3 항에 있어서,
    상기 제 2 문장은 상기 제어 프로그램에 의해 얻어지는 실행시간과 관련이 있는 것을 특징으로 하는 통신시스템.
  5. 제 4 항에 있어서,
    상기 실행시간은 최소 실행 시간, 평균 실행 시간 및 최대 실행 시간 중 하나 이상을 포함하는 것을 특징으로 하는 통신시스템.
  6. 제 3 항에 있어서,
    상기 제 2 문장은 상기 시스템에서 예상된 대응하는 상기 레코드의 수와 관련이 있는 것을 특징으로 하는 통신시스템.
  7. 제 3 항에 있어서,
    상기 제 2 문장은 상기 데이터 레코드가 액세스될 수 있는 시스템내의 액세스 포인트의 수와 관련이 있는 것을 특징으로 하는 통신시스템.
  8. 제 3 항에 있어서,
    상기 제 2 문장은 상기 데이터 레코드 또는 그의 일부에 액세스하도록 허용되는 사용자의 목록과 관련이 있는 것을 특징으로 하는 통신시스템.
  9. 제 3 항에 있어서,
    상기 제 2 문장은 상기 데이터가 즉시 이용할 수 있어야 하는 정도와 관련이 있는 것을 특징으로 하는 통신시스템.
  10. 분산형 컴퓨팅 시스템의 실행을 위한 기능적인 필요조건을 수용하도록 구성되고, 상기 기능적인 필요조건을 얻기 위해 상기 시스템의 컴퓨터와 관련한 저장된 데이터에 따라 상기 기능적인 필요조건을 해석하도록 구성되는 것을 특징으로 하는 분산형 컴퓨팅 시스템을 위한 컴파일러 장치.
  11. 제 10 항에 있어서,
    컴퓨팅 언어의 소스 코드 프로그램을 수용하는 수단(308)과, 상기 컴퓨팅 언어로 주지되어 있고, 다른 컴파일러에 의해 컴파일되는 제 1 문장(1000a)을 판독하고 컴파일하도록 구성된 수단(312)을 포함하고, 제 2 문장(1000b)을 판독하고 컴파일하는 수단(316, 312)은 분산형 컴퓨팅 시스템의 실행을 위한 기능적인 필요조건을 구성하고, 제 2 문장(1000b)은 상기 다른 컴파일러에 의해서는 무시되는 것을 특징으로 하는 컴파일러 장치.
  12. 제 11 항에 있어서,
    상기 제 2 문장은 상기 언어에서 주석 필드를 포함하는 것을 특징으로 하는 컴파일러 장치.
  13. 제 12 항에 있어서,
    상기 언어는 객체지향 언어를 포함하는 것을 특징으로 하는 컴파일러 장치.
  14. 제 13 항에 있어서,
    상기 언어는 C++ 또는 그의 변형을 포함하는 것을 특징으로 하는 컴파일러 장치.
  15. 제 11 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 언어에 대한 종래의 컴파일러(312)와 상기 제 2 문장을 판독하고, 상기 컴파일러(312)에 의해 해석되는 대응하는 소스 코드, 컴파일러 지령 및/또는 다른 문을 발생하도록 구성된 전치 컴파일러(316)를 포함하는 것을 특징으로 하는 컴파일러 장치.
  16. 제 11 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 컴파일러(312)는 상기 제 2 문장에 따라 분산형 컴퓨팅 시스템의 서로 다른 컴퓨터(10)에서의 실행을 위해 복수의 실행 가능한 코드 출력 파일을 발생하도록 제어되는 것을 특징으로 하는 컴파일러 장치.
  17. 제 16 항에 있어서,
    상기 컴파일러(312)는 또한 상기 제 2 문장의 내용을 무시하는 단일 프로세서에서의 실행을 위해 단일 실행 가능한 코드 파일을 발생하도록 제어되는 것을 특징으로 하는 컴파일러 장치.
  18. 소스 코드의 구조를 정의하는 제 1 문장과, 시스템 실행 기준 및/또는 시스템 특정 실행 데이터를 지정하는 제 2 문장을 포함하는 소스 코드를 발생하는 단계,
    상기 제 2 문장을 무시하면서 상기 제 1 문장을 컴파일하는 단계,
    상기 컴파일된 제 1 문장의 실행을 검사하는 단계,
    이의 만족할 만한 실행시에 분산형 컴퓨팅 시스템에서의 실행을 위해 상기 제 1 문장을 상기 제 2 문장에 포함된 정보에 따라 다시 컴파일하는 단계 및
    상기 분산형 시스템의 컴퓨터에 컴파일된 데이터를 분산하는 단계를 포함하는 것을 특징으로 하는 분산형 컴퓨팅 시스템에서의 실행을 위해 코드를 발생하는 방법.
  19. 제 18 항에 있어서,
    상기 분산형 시스템은 통신시스템인 것을 특징으로 하는 방법.
KR1019980705553A 1996-01-16 1997-01-07 통신시스템의 분산 처리 방법 및 장치 Ceased KR19990077378A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB9600854.5A GB9600854D0 (en) 1996-01-16 1996-01-16 Distributed processing
GB9600854.5 1996-01-16

Publications (1)

Publication Number Publication Date
KR19990077378A true KR19990077378A (ko) 1999-10-25

Family

ID=10787110

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980705553A Ceased KR19990077378A (ko) 1996-01-16 1997-01-07 통신시스템의 분산 처리 방법 및 장치

Country Status (13)

Country Link
US (2) US6438746B1 (ko)
EP (1) EP0875028B1 (ko)
JP (1) JP3878217B2 (ko)
KR (1) KR19990077378A (ko)
CN (2) CN100557569C (ko)
AU (1) AU707109B2 (ko)
CA (1) CA2240508C (ko)
DE (1) DE69734348T2 (ko)
GB (1) GB9600854D0 (ko)
MX (1) MX9805682A (ko)
NO (1) NO983263D0 (ko)
NZ (1) NZ325380A (ko)
WO (1) WO1997026595A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7152200B2 (en) * 1997-12-31 2006-12-19 Qwest Communications International Inc. Internet-based database report writer and customer data management system
DE19919874A1 (de) * 1999-04-30 2000-11-02 Univ Dresden Tech Verfahren zur Informationsübergabe bei der Steuerung von Abläufen
US6772140B1 (en) * 1999-11-01 2004-08-03 Harris-Exigent, Inc. Hierarchical syntax for satellite command and control directives
US20020129345A1 (en) * 2000-09-27 2002-09-12 Tilden Mark D. Scripting business logic in a distributed object oriented environment
JP2002116917A (ja) * 2000-10-05 2002-04-19 Fujitsu Ltd オブジェクト指向型プログラミング言語によるソース・プログラムをコンパイルするコンパイラ
US7346849B1 (en) * 2001-04-03 2008-03-18 Cypress Semiconductor Corp. Executable code derived from user-selectable links embedded within the comments portion of a program
US7707544B2 (en) * 2002-12-05 2010-04-27 Bea Systems, Inc. System and method for generating and reusing software application code with source definition files
GB0303270D0 (en) 2003-02-13 2003-03-19 Renishaw Plc A machine tool control process and apparatus therefor
US7185215B2 (en) * 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US20040187099A1 (en) * 2003-03-20 2004-09-23 Convergys Information Management Group, Inc. System and method for processing price plans on a device based rating engine
JP5396979B2 (ja) * 2009-04-10 2014-01-22 日本電気株式会社 ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム
CN110825378B (zh) * 2019-09-17 2023-07-18 秦皇岛米格教育科技有限公司 基于程序积木的编程系统和控制系统
US20240176600A1 (en) * 2022-11-30 2024-05-30 Tencent America LLC Intelligent Adaptation of Source Code for Multi-Purpose Compilation
CN115658078B (zh) * 2022-12-27 2023-03-17 金篆信科有限责任公司 数据库的预编译处理方法、装置、设备及介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991010191A1 (en) * 1989-12-26 1991-07-11 Fujitsu Limited Object oriented distributed processing system
US5307499A (en) * 1990-11-30 1994-04-26 Singapore Computer Systems Limited Interpretive object-oriented facility which can access pre-compiled classes
US5327561A (en) * 1991-09-20 1994-07-05 International Business Machines Corporation System and method for solving monotone information propagation problems
DE4131380A1 (de) * 1991-09-20 1993-03-25 Siemens Ag Verfahren zur adaption einer objektorientierten applikation
US5717929A (en) * 1993-03-30 1998-02-10 Sanyo Electric Co., Ltd. Apparatus and method for program execution, and image reproduction apparatus with special effects utilizing such apparatus and method
US5539907A (en) * 1994-03-01 1996-07-23 Digital Equipment Corporation System for monitoring computer system performance
GB9600823D0 (en) * 1996-01-16 1996-03-20 British Telecomm Distributed processing
US5960200A (en) * 1996-05-03 1999-09-28 I-Cube System to transition an enterprise to a distributed infrastructure
US5892950A (en) * 1996-08-09 1999-04-06 Sun Microsystems, Inc. Interface for telecommunications network management

Also Published As

Publication number Publication date
DE69734348T2 (de) 2006-07-06
NO983263L (no) 1998-07-15
NZ325380A (en) 1999-07-29
MX9805682A (es) 1998-11-29
GB9600854D0 (en) 1996-03-20
CN100557569C (zh) 2009-11-04
DE69734348D1 (de) 2005-11-17
CN101154165A (zh) 2008-04-02
US6438746B1 (en) 2002-08-20
JP2000503430A (ja) 2000-03-21
EP0875028B1 (en) 2005-10-12
WO1997026595A1 (en) 1997-07-24
EP0875028A1 (en) 1998-11-04
CN1208481A (zh) 1999-02-17
NO983263D0 (no) 1998-07-15
CA2240508A1 (en) 1997-07-24
US6343374B1 (en) 2002-01-29
AU1387997A (en) 1997-08-11
CA2240508C (en) 2005-10-18
AU707109B2 (en) 1999-07-01
JP3878217B2 (ja) 2007-02-07

Similar Documents

Publication Publication Date Title
US6216262B1 (en) Distributed processing
US6072953A (en) Apparatus and method for dynamically modifying class files during loading for execution
US6370687B1 (en) Network computer system and substitute compile server
US7934212B2 (en) Apparatus, system and method for detecting old versions of an applet in a client browser's JVM
US5884097A (en) Data structure and methods for defining and using attribute data blocks to instantiate objects and describe changes to objects
US20030093420A1 (en) Method and system for retrieving sharable information using a hierarchically dependent directory structure
JP2002525744A (ja) テキスト・オブジェクトのコンパイル方法およびシステム
KR19990077378A (ko) 통신시스템의 분산 처리 방법 및 장치
JP2002518732A (ja) パラメータなし既存ライブラリ互換パラメータ付き型実装方法
EP1002267A1 (en) Method and apparatus for static and dynamic generation of information on a user interface
US6256779B1 (en) Distributed processing
Wen et al. BrowserVM: Running unmodified operating systems and applications in browsers
Orr et al. Dynamic program monitoring and transformation using the OMOS object server
Puder A cross-language framework for developing ajax applications
Forin et al. Parallel processing with Agora
AU747018B2 (en) Distributed processing
Beguelin et al. Tools for monitoring, debugging, and programming in PVM
CA2437742C (en) Distributed processing
Lepreau et al. Program Specialization Using the OMOS System
Møller Automatic Specialization of Client/Server Interfaces
Orr et al. Department of Computer Science University of Utah Salt Lake City, UT 84112

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 19980716

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20020107

Comment text: Request for Examination of Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20040329

Patent event code: PE09021S01D

E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20040628

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20040329

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I