KR19990064026A - 컴퓨터 시스템 또는 그 프로그램이 중지될 필요가 없는 객체 지향형 메쏘드 유지 보수 메카니즘 - Google Patents

컴퓨터 시스템 또는 그 프로그램이 중지될 필요가 없는 객체 지향형 메쏘드 유지 보수 메카니즘 Download PDF

Info

Publication number
KR19990064026A
KR19990064026A KR1019980702504A KR19980702504A KR19990064026A KR 19990064026 A KR19990064026 A KR 19990064026A KR 1019980702504 A KR1019980702504 A KR 1019980702504A KR 19980702504 A KR19980702504 A KR 19980702504A KR 19990064026 A KR19990064026 A KR 19990064026A
Authority
KR
South Korea
Prior art keywords
computer system
version
client program
processing unit
central processing
Prior art date
Application number
KR1019980702504A
Other languages
English (en)
Other versions
KR100301274B1 (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 KR19990064026A publication Critical patent/KR19990064026A/ko
Application granted granted Critical
Publication of KR100301274B1 publication Critical patent/KR100301274B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/02Arrangements for program control, e.g. control units using wired connections, e.g. plugboards
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명의 메쏘드 유지 보수 메카니즘(166)은 두 개의 서브메카니즘, 즉, 메쏘드 갱신 메카니즘(167)과 메쏘드 호출 관리자(170)로 이루어진다. 메쏘드 갱신 메카니즘(167)은 기존의 메쏘드들을 변경하는데 이용된다. 메쏘드 호출 관리자(170)는 활성 프로그램들이 구 버전의 메쏘드들을 계속해서 사용하는 동시에, 프로그램들이 재활성화되거나 또는 처음으로 활성화된 때에 새로운 메쏘드 버전들을 액세스할 수 있게 하는 방식으로 메쏘드들에 대한 호출들을 관리한다.

Description

컴퓨터 시스템 또는 그 프로그램이 중지될 필요가 없는 객체 지향형 메쏘드 유지 보수 메카니즘
1948년의 EDVAC 컴퓨터 시스템의 개발은 흔히 컴퓨터 시대의 개막이라 일컬어진다. 그 후, 컴퓨터 시스템은 미국인 생활 양식의 모든 측면으로 침투했다. 이러한 갑작스런 증가의 한가지 요인으로서 갖가지 임무를 효율적인 방식으로 수행할 수 있는 컴퓨터의 능력을 들 수 있다. 이들 임무를 수행하기 위해 컴퓨터 시스템에 의해 사용되는 메카니즘을 컴퓨터 프로그램이라고 한다.
컴퓨터 시스템과 마찬가지로, 컴퓨터 프로그램도 수년에 걸쳐 점차적으로 발전되어 왔다. EDVAC 시스템은 "1 어드레스" 컴퓨터 프로그래밍 언어로 불리웠던 것을 이용하였다. 이 언어는 단지 가장 초보적인 컴퓨터 프로그램만을 허용하였다. 1960년대까지 컴퓨터 프로그래밍 언어는 계속 진보하여, 컴퓨터 프로그램을, 너무 크고 복잡해서 그들의 개발 및 유지 보수를 관리하고 제어하기가 어렵게 하기에 이르렀다.
따라서, 1970년대에는 대형 컴퓨터 프로그램의 증가하는 복잡도 및 비용을 보다 잘 수용할 수 있는 프로그래밍 방법 및 환경을 개발하는데 초점이 맞춰졌다. 이러한 한가지 방법이 객체 지향형 프로그래밍(Object Oriented Programming;OOP)이다. OOP의 기본적 개념이 처음 개발된 후 어느 정도의 시간이 흘렀지만, OOP를 사용함으로써 컴퓨터 프로그래머의 효율을 크게 증가시킬 수 있다고 느껴졌기 때문에 OOP 시스템은 더욱 널리 보급되게 되었다. 놀랄 것도 없이, 객체가 OOP 기술의 중심이다. 단일 객체는 이 객체에 의해 제어되는 정보에 대해 컴퓨터 시스템에 의해 수행되는 단일의 동작 또는 동작들의 군을 나타낸다. 객체는 특정의 임무들을 수행하기 위해 함께 동작하는 독립적인 에이젼트(autonomous agents)로 생각할 수 있다. 때때로 객체들을 그룹화함으로써 전체 컴퓨터 프로그램이 이루어지기도 하며, 때로 객체는 보다 전통적인 컴퓨터 프로그램에 의해 단순히 액세스되어 하나의 특정 태스크 또는 보조태스크를 수행한다. 객체가 다른 객체에 의해 액세스되는지의 여부에 관계없이, 액세스된 객체는 서버 객체라 일컬어지고, 액세스하는 개체는 이 객체의 클라이언트라 일컬어진다.
이와 같이 OOP를 사용함으로써 프로그래머 효율이 크게 향상되었지만, 이러한 사용은 그와 함께 종래 기술의 메카니즘에 의해 여전히 극복되어야 할 몇가지 과제가 생겨났다. 이러한 한가지 과제는, 유지 보수되어야 할 서보 객체 또는 객체들에 대한 현재 액세스 요구를 갖는 클라이언트들과 문제를 일으키지 않는 방식으로 서버 객체를 유지 보수(즉, 갱신 및 수리)하는 것을 포함한다. 기존의 객체 유지 보수 메카니즘은 컴퓨터 시스템을 중지시킴으로써 또는 유지 보수를 요하는 객체를 사용중인 특정 프로그램을 불활성화시킴으로써 이러한 문제들을 피하였다. 시스템 또는 프로그램이 불활성화되면 정체(quiesce)되었다고 한다. 물론, 아주 사소한 유지 보수일 수도 있는 것을 수행하기 위해 임의 레벨의 시스템 활동을 중지시키는 것이 바람직하지 못하다는 것은 분명하다. 이것은, 직무상 그들의 컴퓨터 시스템을 매분마다 지속적으로 액세스할 필요가 있는 금융 및 재정 업무에서 특히 그러하다.
시스템 또는 프로그램을 중지시킬 필요없이 객체 유지 보수를 수행할 수 있는 메카니즘이 없다면, 상업용 컴퓨터 사용자들은 객체 지향형 기술의 장점을 충분히 활용할 수 없을 것이다.
발명의 개요
본 발명은 향상된 객체 지향형 유지 보수 메카니즘(an enhanced object-oriented maintenance mechanism)을 제공한다.
본 발명에 따른 메쏘드 유지 보수 메카니즘은 두 개의 서브메카니즘으로 이루어지는데, 메쏘드 갱신 메카니즘(a method update mechanism)과 메쏘드 호출 관리자(a method call manager)가 그것이다. 메쏘드 갱신 메카니즘은 기존의 메쏘드들을 변경(즉, 증강 또는 수리)하는 데 사용된다. 중요한 것은 이들 변경이 컴퓨터 시스템 또는 그의 프로그램중 어느 것도 중지시킬 필요없이 이루어질 수 있다는 사실이다.
메쏘드 호출 관리자는, 활성 프로그램이 구버전(old versions)의 메쏘드들을 계속해서 사용하면서, 동시에, 프로그램이 재활성화 또는 처음으로 활성화되었을 때 새로운 메쏘드 버전들에 대한 액세스를 제공할 수 있게 하는 방식으로, 메쏘드들에 대한 호출을 관리한다. 다른 말로 하면, 본 발명의 메쏘드 호출 관리자는 상이한 클라이언트들에게 서버 객체의 데이터에 대한 공유 액세스를 제공하면서도 이들 동일한 클라이언트들이 서버 객체의 상이한 버전의 메쏘드들을 사용하여 원하는 액세스를 성취할 수 있게 한다.
본 발명은 데이터 처리 시스템에 관한 것으로, 보다 구체적으로는, 객체 지향형 소스 코드(object-oriented source code)를 관리하는 것에 관한 것이다.
도 1은 본 발명에 따른 컴퓨터 시스템의 블록도,
도 2는 바람직한 실시예에 따라 본 발명의 메쏘드 갱신 메카니즘을 실행하는데 이용된 단계들을 도시하는 흐름도,
도 3a 및 3b는 바람직한 실시예에 따라 본 발명의 메쏘드 호출 관리자를 실행하는데 이용된 단계들을 도시하는 흐름도,
도 3c는 바람직한 실시예에서 사용된 데이터 구조를 예시하는 블록도,
도 3d는 바람직한 실시예에서 사용된 메쏘드 어레이 요소를 예시하는 블록도,
도 3e는 바람직한 실시예에서 사용된 활성 서비스 프로그램 추적 메카니즘을 예시하는 블록도이다.
객체 지향형 기술의 개요
본 발명의 배경 기술을 설명하면서 이미 언급한 바와 같이, 객체는 컴퓨터 시스템의 요구된 임무를 수행하기 위해 함께 동작하는 독립적인 에이젼트들로서 생각할 수 있다. 단일의 객체는 객체에 의해 제어되는 정보에 대해 컴퓨터 시스템에 의해 수행되는 단일의 동작 혹은 동작들의 군을 나타낸다. 이들 객체의 동작들을 "메쏘드(methods)"라고 하고, 객체에 의해 제어되는 정보를 "객체 데이터(object data)" 또는 간단히 "데이터"라고 부른다. 객체는 소위 "클래스(class)"의 구성 요소로서 생성("인스턴트화된다(instantiated)"고 함)된다. 클래스는 그의 구성 요소들을 정의하는데 사용된다. 클래스는 그들의 구성 요소 객체들에 의해 제어될 데이터와, 이러한 데이터에 액세스를 제공하기 위해 그들의 구성 요소 객체들이 가져야 할 메쏘드를 정의한다.
설명된 바와 같이, 객체 또는 프로그램이 제 2 객체에 의해 제어되는 데이터를 액세스할 필요가 있는 경우, 그 객체 또는 프로그램은 제 2 객체의 클라이언트로 간주된다. 제 2 객체에 의해 제어되는 데이터를 액세스하려면, 클라이언트 객체(즉, 클라이언트 메쏘드) 또는 클라이언트 프로그램의 메쏘드들중 하나가 제 2 객체를 호출하여 이 제 2 객체에 의해 제어되는 데이터에 대한 액세스를 획득한다. 그리고 나서, 피호출 객체의 메쏘드들중 하나(즉, 이 경우에 서버 메쏘드)를 사용하여 피호출 객체(즉, 서버 객체)에 의해 제어되는 데이터를 액세스 및/또는 조작한다.
상세한 설명
도 1은 본 발명에 따른 컴퓨터 시스템의 블록도를 도시한다. 바람직한 실시예의 컴퓨터 시스템은 상급 IBM AS/400 컴퓨터 시스템이다. 그러나, 당 분야에 숙련된 자라면, 본 발명의 메카니즘 및 장치가, 컴퓨터 시스템이 복잡한 다중 사용자 컴퓨팅 장치이냐 단일 사용자 워크스테이션이냐에 관계없이 어떤 컴퓨터 시스템에도 동등하게 적용됨을 알 것이다. 도 1의 분해도에 도시된 바와 같이, 컴퓨터 시스템(100)은 주 메모리(140)에 접속된 주 또는 중앙 처리 장치(CPU)(105), 터미널 인터페이스(145), 대용량 저장 인터페이스(155) 및 네트워크 인터페이스(160)를 포함한다. 이들 시스템 구성 요소들은 시스템 버스(150)를 사용하여 상호접속된다. 컴퓨터 시스템(100)이 단지 하나의 주 CPU 및 하나의 시스템 버스를 포함하는 것으로 도시되었지만, 본 발명은, 복수의 CPU를 갖는 컴퓨터 시스템 및 제각기 상이한 방식으로 상이한 기능들을 수행하는 복수의 버스들을 갖는 컴퓨터 시스템에도 동등하게 적용되는 것으로 이해되어야 한다.
본 바람직한 실시예에서 사용된 인터페이스들(AS/400 용어로 입/출력 프로세서로 불림)은 제각기, CPU(105)로부터 집중적인 계산을 요하는 처리를 분담하기 위해 사용되는 별도의 완전 프로그램된(fully programmed) 마이크로프로세서들을 포함한다. 그러나, 당 분야에 숙련된 자라면 본 발명이 유사한 기능을 수행하기 위해 단순히 I/O 어댑터를 사용하는 컴퓨터 시스템에도 동등하게 적용됨을 알 것이다. 터미널 인터페이스(145)는 하나 이상의 터미널을 컴퓨터 시스템(100)에 직접 접속하는데 사용된다. 이들 터미널은 비지능적 또는 완전 프로그램가능 워크스테이션일 수도 있으며, 시스템 관리자 및 컴퓨터 프로그래머로 하여금 컴퓨터 시스템(100)과 통신할 수 있게 하는데 사용된다. 네트워크 인터페이스(160)는 다른 컴퓨터 시스템 및/또는 워크스테이션들을 네트워크 방식으로 컴퓨터 시스템(100)에 접속시키는데 사용된다. 본 발명은 어느 하나의 네트워킹 메카니즘에 한정되지 않는다. 컴퓨터 시스템(100)은 현재의 아날로그 및/또는 디지탈 기법을 사용하여, 또는 미래의 어떤 네트워크 메카니즘을 통해 다른 시스템들에 접속될 수도 있다.
대용량 저장 인터페이스(155)는 DASD 장치(185)와 같은 대용량 저장 장치를 컴퓨터 시스템(100)에 접속시키는데 사용된다.
주 메모리(140)는 애플리케이션 프로그램(110), 컴파일러(172), 오퍼레이팅 시스템(165)을 포함한다. 애플리케이션 프로그램(110) 및 오퍼레이팅 시스템(165)이 주 메모리(140)에 상주하는 것으로 도시되었지만, 당 분야에 숙련된 자라면 이들 개체가, 프로그램이 실행을 위해 통상 저속 대용량 저장장치로부터 고속 주 메모리로 로딩된다는 사실을 이런 식으로 나타내기 위해 도시되었음을 알 것이다. 이런 식으로 이들 프로그램을 도시한 것이, 이들이 동시에 주 메모리(140)에 반드시 모두 완전히 포함됨을 의미하는 것으로 여겨져서는 안된다. 또한, 본 명세서에서 컴퓨터 시스템 메모리라 함은 컴퓨터 시스템의 메모리(즉, 주 메모리(140)와 DASD 장치(185)로 표시된 것)를 전체로서 총칭하여 지칭하는데 사용됨을 알아야 한다. 당 분야에 숙련된 자라면, 또한, 주 메모리(140)내에 도시된 프로그램이 반드시 컴퓨터 시스템(100)상에 모두 상주해야 할 필요는 없음을 알 것이다. 예를 들어, 애플리케이션 프로그램들(110)중 하나 이상의 프로그램이 다른 시스템상에 상주하여 컴퓨터 시스템(100)상에 상주하는 하나 이상의 프로그램들과의 협력 작업시에 이용될 수도 있다. 이것은 원격 프로시쥬어 호출(remote procedure call;RPC)과 같은 잘 알려진 클라이언트-서버 메카니즘들중 하나를 사용하여 성취될 수 있다.
애플리케이션 프로그램(110)은 또한 객체(112)를 포함하는 것으로 도시되어 있다. 객체(112)들 각각은 데이터와 적어도 하나의 메쏘드를 포함할 수도 있는데, 이것은 도시되지 않았다. 앞서 설명한 바와 같이, 클라이언트 메쏘드는 피호출 객체에 의해 제어되는 정보를 액세스하기 위해 또는 그 외의 방법으로 정보를 조작하기 위해 서버 메쏘드를 호출해야 한다. 하나의 메쏘드가 클라이언트 메쏘드라거나 서버 메쏘드라고 하는 것은 상대적임에 유의해야 한다. 즉, 제 2 메쏘드에 대해 클라이언트 메쏘드라 지칭되는 메쏘드는 또한 제 3 메쏘드에 대해서는 서버 메쏘드일 수도 있다. 애플리케이션 프로그램(110)은 역시 객체(112)를 액세스하는 비 객체 지향형 프로그램을 포함함에 또한 주목해야 한다. 또한, 클라이언트 프로그램이라는 말은 클라이언트 메쏘드 또는 비 객체 지향형 클라이언트 프로그램을 총칭하여 지칭하는 것으로 간주되어야 한다. 그러나, 앞서 설명된 클라이언트-서버 환경에서 (본 명세서에서 사용되는) 클라이언트 프로그램이란, 클라이언트 컴퓨터 시스템으로부터 입력되는 요구를 처리하는 서버 컴퓨터 시스템상의 메카니즘이지, 클라이언트 컴퓨터 시스템상에서 실행되는 동안 요구를 발생하는 프로그램이 아님을 알아야 한다.
컴파일러(172)는 이후 설명하는 바와 같이 소스 코드를 실행가능 코드로 컴파일하는데 사용된다.
오퍼레이팅 시스템(165)은 당업계에 알려진 OS/400과 같은 멀티태스킹 오퍼레이팅 시스템이지만, 당 분야에 숙련된 자라면 본 발명의 사상 및 범주가 어느 하나의 오퍼레이팅 시스템에 한정되지 않음을 이해할 것이다. 오퍼레이팅 시스템(165)은 또한 메쏘드 유지 보수 메카니즘(166)을 포함하는 것으로 도시되어 있으며, 이러한 메쏘드 유지 보수 메카니즘(166)은 메쏘드 갱신 메카니즘(167) 및 메쏘드 호출 관리자(170)를 포함한다. 메쏘드 갱신 메카니즘(167)은 객체(112)의 메쏘드들을 수리 및/또는 갱신하는데 사용된다. 이후 도 2와 관련된 부분에서 매우 상세히 설명되는 메쏘드 갱신 메카니즘(167)은, 객체(112)를 변경하고자 할 때 컴퓨터 시스템(100)을 중지시키거나 애플리케이션 프로그램(110)들중 어느 것을 불활성화시키지 않는다. 메쏘드 호출 관리자(170)는 실행 프로그램으로 하여금 구 버전 객체(112)를 사용하여 계속해서 실행할 수 있도록 하면서 이들 동일한 실행 프로그램의 처리가 완료된 후 그들이 신 버전의 객체를 액세스할 수 있도록 하는데 사용된다.
중요한 것은, 본 발명이 전적으로 기능적인 컴퓨터 시스템 환경에서 설명되었지만(그리고 앞으로도 그럴 것이지만), 당 분야에 숙련된 자라면 본 발명이 플로피 디스크, CD 롬 또는 다른 형태의 기록가능 매체를 통해, 또는 임의 형태의 전자 전송 메카니즘을 통해 프로그램 제품으로써 배포될 수 있음을 이해하여야 한다는 것이다.
도 2는 메쏘드 갱신 메카니즘(167)의 흐름도이다. 블록(200)에서, 컴퓨터 시스템(100)을 위한 새로운 서비스 프로그램이 생성된다. "서비스 프로그램"이라 는 것은 AS/400 용어의 특정된 사용이다. 서비스 프로그램은 특정 클래스의 각 메쏘드에 할당된 태스크 또는 보조태스크를 수행하기 위해 CPU(105)상에서 실행되는 실제 프로그램 인스트럭션들을 포함한다. 상이한 용어법(예를 들면, 유닉스 라이브러리 또는 OS/2 동적 링크 라이브러리)을 사용하여 설명될 수도 있지만, 당 분야에 숙련된 자라면 AS/400 서비스 프로그램의 개념이 당 분야에 잘 알려져 있음을 알 것이다.
서비스 프로그램의 최초의 생성은 잘 알려진 소스 코드 편집기 또는 생성기중 어느 것을 사용하여 성취될 수 있다. 일단 서비스 프로그램이 생성되면, 블록(205)에서 메쏘드 갱신 메카니즘(167)이 컴파일러(172)로 하여금 이 새로운 서비스 프로그램을 컴파일하도록 한다. 당 분야에 잘 알려진 바와 같이, 서비스 프로그램의 소스 코드 버전을 컴파일하면 서비스 프로그램의 객체 코드 표현물이 생성된다. 이 단계에서는 암시적으로 프로그램 명칭 대 컴퓨터 시스템 메모리 위치의 연관성이 생성된다. 일단 서비스 프로그램이 컴파일되면, 컴파일러(172)는 컴퓨터 시스템(100)의 디렉토리 서비스(directory services)에 서비스 프로그램 명칭과 포인터를 부가한다(블록(210)). 디렉토리 서비스는 컴퓨터 시스템(100)의 모든 프로그램들(즉, 애플리케이션 프로그램 및 서비스 프로그램 등)에 대한 컴퓨터 시스템 메모리 위치를 알아내어 프로그램 명칭이 제공되었을 때 정확한 메모리 위치를 복귀시킬 책임이 있다. 일단 서비스 프로그램 명칭 및 포인터가 디렉토리 서비스에 부가되면, 메쏘드 갱신 메카니즘(167)은 클래스 객체를 새로운 서비스 프로그램 명칭으로 갱신한다(블록(215)). 일단 클래스 객체가 새로운 서비스 프로그램을 포함하도록 갱신되면, 이 클래스 객체를 클라이언트 프로그램이 사용할 수 있다. 이러한 후자의 단계의 중요성은 이후 도 3a 내지 3e와 관련하여 설명된다. 메쏘드 갱신 메카니즘(167)은, 새로운 서비스 프로그램을 부가할 때 컴퓨터 시스템(100) 또는 그의 프로세스들중 어느것도 중지시키지 않는다.
도 3a는 메쏘드 호출 관리자(170)의 흐름도이다. 우선, 메쏘드 호출 관리자(170)는 종래의 객체 지향형 메카니즘에서 찾아볼 수 없는 감독 메카니즘임을 아는 것이 중요하다. 종래의 서버 메쏘드 호출문은 프로세서가 단순히 호출된 서버 메쏘드를 실행하도록 하는 인스트럭션들로 컴파일된다. 이들 종래의 메카니즘과 달리, 본 발명의 컴파일러(172)는 메쏘드 호출문을, 메쏘드 호출 관리자(170)를 활성화하여 메쏘드 호출 관리자(170)에게 호출될 서버 메쏘드의 메쏘드 서명(method signature)을 보내는 인스트럭션들로 컴파일한다. 메쏘드 호출 관리자(170)는 호출을 올바른 메쏘드로 경로배정(routing)할 책임을 진다. 메쏘드 호출 경로내에 메쏘드 호출 관리자(170)를 배치함으로써 메쏘드 호출들에 대한 관리 기능을 수행할 수 있게 된다. 이러한 한가지 기능이 메쏘드 버전 부여(versioning)이며, 이후 설명된다.
블록(305)에서, 메쏘드 호출 관리자(170)는 호출을 올바른 메쏘드 테이블 엔트리로 분해한다. 도 3c는 이러한 동작이 어떻게 수행되는지를 논리적으로 나타낸다. 본 발명의 메쏘드 분해의 정확한 세부사항들은 본 명세서에서 참조로 인용되는 미국 특허 제 5,404,525 호에 개시되어 있다. 일반적인 예로서, 본 명세서에서는 클라이언트 메쏘드가 객체(370) 메쏘드를 호출하고 있다고 가정한다. 도 3c에 도시된 바와 같이, 객체(370)는 객체 데이터(371) 및 클래스 객체 포인터를 포함한다. 객체(370)는 주 메모리(140)의 공유 메모리로 알려진 부분에 상주한다. 공유 메모리의 개념은 한 순간에 복수의 프로세스에 의해 동시 액세스될 수 있는 주 메모리(140) 부분을 의미하는 것으로 당 분야에 숙련된 자에게 잘 알려져 있다. 공유 메모리는 개념상, 단일 프로세스에 의해 사용되도록 예약된 주 메모리(140)의 일부인 프로세스 국부 메모리(local memory)에 반대되는 것이다.
일단 호출이 발생하면, 메쏘드 호출 관리자(170)는 호출된 메쏘드의 명칭을 적절한 메쏘드 테이블 엔트리로 분해한다. 메쏘드 호출 관리자(170)는 이러한 동작을 우선 객체(370)내에 포함된 클래스 객체 포인터를 사용하여 클래스 객체(372)의 동작 부분에 대한 액세스를 획득함으로써 수행한다. (클래스 객체들의 정확한 세부사항들에 대한 것은 앞서 인용된 특허를 참조하시오.) 메쏘드 호출 관리자(170)는 클래스 객체(372)로부터 메쏘드 테이블(376)에 대한 액세스를 획득하여 올바른 엔트리(도면중에는 엔트리(378)로 표시됨)를 찾는다. 블록(310)에서, 메쏘드 호출 관리자(170)는 호출된 메쏘드에 대한 적절한 메쏘드 위치 어레이(도 3c에서 메쏘드 위치 어레이들(380, 381, 382) 참조)로의 메쏘드 어레이 포인터를 추적한다. 각각의 메쏘드 위치 어레이는 통상 적어도 하나의 어레이 요소를 포함하게 된다. 그러나 해당 메쏘드가 지금까지 호출된 적이 없으면(즉, 이번이 첫 번째 호출이면), 메쏘드 호출 관리자(170)는 자신의 처리중 이 단계에서 비어 있는 어레이를 검색하게 된다. 이 경우, 메쏘드 호출 관리자(170)는 서비스 프로그램 명칭(374)과 연관된 서비스 프로그램을 로딩하려고 시도한다(도 3a의 블록(320)). 서비스 프로그램 명칭(374)은 클래스 객체(380)에 포함되어 있다.
서비스 프로그램은 해당 클래스에 대해 정의되고 구현된 모든 메쏘드들(본 실시예의 경우 클래스 객체(380)의 메쏘드들)에 대한 실제의 실행가능 코드를 포함한다. 서비스 프로그램 명칭(374)은 그 클래스에 대한 최신 버전의 서비스 프로그램의 명칭을 포함한다. 로딩이 실패하면, 메쏘드 호출 관리자(170)는 에러 신호를 송출(블록(335))한 후 호출중인 메쏘드로 제어를 복귀(블록(340))시킨다. 서비스 프로그램 로딩이 성공적이면, 메쏘드 호출 관리자는 이 새로운 서비스 프로그램을 현재의 프로세스에 대한 활성 서비스 프로그램 리스트에 부가한다(블록(326)). 이 후자의 단계는 이후 도 3e와 연관된 부분에서 매우 상세히 설명된다. 그리고 나서, 메쏘드 호출 관리자는 이 클래스에 대한 메쏘드 위치 어레이들(즉, 메쏘드 위치 어레이들(380, 381, 382)) 각각의 앞에 새로운 요소를 부가한다. 일단 이러한 동작이 이루어지면, 메쏘드 호출 관리자는 서비스 프로그램으로부터 적절한 메쏘드를 액세스하여 호출한다(블록(342, 350)). 메쏘드 호출 관리자(170)는 이들 단계를 각각의 메쏘드 위치 어레이 요소내에 포함된 정보를 액세스함으로써 성취한다.
도 3d는 바람직한 실시예의 메쏘드 위치 어레이 요소를 매우 상세히 도시한다. 메쏘드 어레이 요소(386)는 서비스 프로그램 포인터(387) 및 실행 엔트리 번호(implementation entry number)(388)를 포함한다. 실행 엔트리 번호(388)는 서비스 프로그램으로의 오프셋(offset)이다. 그러면, 메쏘드 호출 관리자(170)는 이 포인터(387) 및 실행 엔트리 번호(388)를 사용하여 적절한 실행 메쏘드를 액세스해서 호출한다. 본 바람직한 실시예에서는 실행 메쏘드가 서비스 프로그램내 소정의 장소에 위치할 수 있도록 실행 번호(388)가 사용되었지만, 대안적으로 단순히 메쏘드 테이블 엔트리내 메쏘드 어레이 포인터들의 서열과 서비스 프로그램내 실행 메쏘드 서열간에 소정 유형의 논리적 대응성이 존재하도록 함으로써 오프셋이 필요없도록 할 수 있다.
여기서, 메쏘드 테이블 엔트리와 실행가능 코드간의 간접성(indirection)이 본 발명의 데이터 공유 및 메쏘드 버전 부여 기능의 핵심 측면임에 주목해야 한다. 이러한 간접성은 메쏘드 위치 어레이들의 내포를 허용하며, 이것은 또한 버전 부여를 허용한다. 그러나 당 분야에 숙련된 자라면, 이러한 간접성과 어레이 조합에 의해 제공되는 기능이 다른 구조를 사용함으로써 성취될 수 있으며, 본 발명은 이러한 개시된 특정 구조에 제한되지 않음을 알 것이다. 메쏘드 프로그램은 처리를 완료한 후, 메쏘드 호출 관리자(170)에게로 제어를 복귀시킨다(블록(352)). 그리고 나서, 메쏘드 호출 관리자(170)는 호출중인 메쏘드(즉, 클라이언트 메쏘드)로 제어를 복귀시킨다(블록(353)).
다시 도 3a의 블록(315)으로 돌아가서, 메쏘드 위치 어레이가 실제로 적어도 하나의 요소를 포함하고 있다고 가정한다. 이 경우, 메쏘드 호출 관리자(170)는 메쏘드 위치 어레이에 식별된 서비스 프로그램들중 하나가 활성 프로세스에 의해 이전에 로딩된 적이 있는지의 여부를 체크한다(블록(330)). AS/400 시스템의 경우, 이것은 프로세스 리스트를 액세스함으로써 성취된다. 도 3e는 본 바람직한 실시예의 프로세스 리스트를 도시한다. 프로세스 리스트(390)는 컴퓨터 시스템(100)상의 활성 프로세스들의 리스트이다. 각 프로세스 리스트 엔트리는 활성 서비스 프로그램 리스트(활성 프로그램 리스트(395, 396, 397) 참조)에 대한 포인터를 포함한다.
이들 각 리스트는 제각기의 프로세스에 대해 활성이 되는 서비스 프로그램들을 나타낸다. 리스트의 각 요소는 서비스 프로그램(즉, 특정 클래스에 대한 실제의 모든 실행 방법들)에 대한 포인터와 해당 프로세스의 일부로서 실행중인 특정 서비스 프로그램의 활성화에 의해 할당되는 모든 변수 값들을 포함한다. 여기서, 본 발명이 서버 방법들 및 활성 서비스 프로그램 리스트내 그들의 서비스 프로그램의 존재에 초점을 맞추고 있지만, 클라이언트 프로그램들은 동일하거나 상이한 서비스 프로그램을 사용하여 동일한 프로세스의 일부로서 또한 실행중임을 주목해야 한다. 또한, "활성(activation)"이라는 용어는 프로세스의 일부로서 실행을 위해 로딩된 서비스 프로그램을 나타내기 위해 사용되는 AS/400 시스템의 특정한 전문용어이다. 당 분야에 숙련된 자라면, 물론 다른 용어(예를 들면, 로딩된 이미지 또는 로딩된 동적 링크 라이브러리)로 나타낼 수도 있지만, AS/400에서 활성의 개념이 당 분야에 잘 알려져 있음을 알 것이다.
도 3e에 도시된 바와 같이, 프로세스 1 및 프로세스 32는 모두 활성 서비스 프로그램 X를 갖는다. 그러나 이들 활성 서비스 프로그램들 각각은 서비스 프로그램 X내의 실행 메쏘드들에 의해 정의된 전역적 변수들(서비스 프로그램 명칭에 "변수(variables)"를 나타내는 "V"를 붙여서 표시함)에 저장된 상이한 값들을 갖게 됨을 알아야 한다. 당 분야에 숙련된 자라면, 변수 값들을 처리하는 것이 메쏘드 버전 부여의 근본적인 문제이며, 본 발명에 의해 극복됨을 알게 될 것이다. 클라이언트 프로그램은, 변수 값들이 변수 정의에 대한 변경을 통해 손상될 수 있기 때문에 하나의 활성 상태로부터 다른 상태로 간단히 스위칭될 수 없다. 본 발명은 이러한 문제를, 클라이언트 프로그램이 자신의 프로세스를 자연스럽게 종료할 때까지 계속해서 동일한 메쏘드 버전(들) 및 연관된 변수 정의를 사용할 수 있게 함으로써 해결한다. "자연스럽게(naturally)"라 함은, 프로세스가 자신의 처리를 종료하여 정지해서, 중앙 프로세서상에서 더 이상 실행중이지 않거나 정규의 과정중에 중앙의 프로세서상에서 더 이상 실행될 예정이 아닌 것을 의미한다. 즉, 프로세스는 어떤 다른 프로세스(예를 들면, 메쏘드 유지 보수 메카니즘)에 의해 너무 빨리 중지되지 않고 완료할 수 있게 허용된다.
메쏘드 위치 어레이에 식별된 서비스 프로그램들중 하나가 요구중인 프로세스에 대한 활성 서비스 프로그램 리스트중에 또한 존재하면, 메쏘드 호출 관리자(170)는 알아서 이 서비스 프로그램내의 실행 메쏘드를 액세스하여 호출한다(블록(342, 350)). 해당 메쏘드 위치 어레이에 의해 식별된 서비스 프로그램들중 어느 것도 요구중인 프로세스에 대한 활성 서비스 프로그램 리스트에 존재하지 않으면, 메쏘드 호출 관리자(170)는 서비스 프로그램 명칭(374)으로부터 새로운 서비스 프로그램의 로딩을 시도한다(도 3a의 블록(365)). 메쏘드 호출 관리자(170)는 컴퓨터 시스템(100)의 디렉토리 서비스를 사용함으로써 서비스 프로그램 명칭(374)을 해당 서비스 프로그램에 대한 포인터에 매핑(map)한다(디렉토리 서비스는 도 2와 관련된 부분에서 설명됨).
로딩에 실패하면, 메쏘드 호출 관리자(170)는 에러 신호를 송출(블록(343))한 후 호출중인 메쏘드로 제어를 복귀시킨다(블록(344)). 서비스 프로그램의 로딩에 성공하면, 메쏘드 호출 관리자(170)는 새로운 서비스 프로그램을 현재 프로세스에 대한 활성 서비스 프로그램들에 부가한다(블록(346)). 그리고 나서, 메쏘드 호출 관리자(170)는 최신 서비스 프로그램으로의 포인터가 메쏘드 위치 어레이 요소들중에 존재하는지의 여부(즉, 해당 클래스의 메쏘드들중 어느 것이 최근의 서비스 프로그램을 사용하여 호출되었는지의 여부)를 체크한다(블록(349)). 존재하지 않으면, 메쏘드 호출 관리자(170)는 이 클래스에 대한 메쏘드 위치 어레이들(메쏘드 위치 어레이들(380, 381, 382)) 각각의 앞에 새로운 요소를 부가한다. 일단 이러한 동작이 완료되면, 메쏘드 호출 관리자는, 이미 설명된 바와 같이 진행하여, 서비스 프로그램으로부터 적절한 메쏘드를 액세스하여 호출한다(블록(342, 350)).
보다 구체적인 예로서, 메쏘드 호출 관리자(170)가 프로세스 1(도 3e 참조)하에서 실행중인 프로그램으로부터의 호출을 처리하는 방법과 프로세스 32(도 3e 참조)하에서 실행중인 프로그램에 의해 호출을 처리하는 방법을 비교해 보자. 두 클라이언트 프로그램이 객체(370)의 첫 번째 메쏘드(즉, 메쏘드 위치 어레이(380)에 의해 표시된 메쏘드)를 호출한다고 가정한다. 앞서 설명된 바와 같이, 각각의 메쏘드는 메쏘드 호출 관리자(170)를 호출하여 메쏘드 호출 관리자(170)에게 호출될 메쏘드의 메쏘드 서명을 전송함으로써 호출을 행한다. 이것은 도 3a의 블록(300)에 도시된다. 블록(305)에서, 메쏘드 호출 관리자(170)는 호출을 올바른 메쏘드 테이블 엔트리로 분해한다. 이러한 두 실시예의 경우에서, 엔트리는 도 3c의 메쏘드 테이블 엔트리(378)가 된다.
블록(310)에서, 메쏘드 호출 관리자(170)는 객체(370)의 첫 번째 메쏘드에 대해 적절한 메쏘드 위치 어레이(이 경우 메쏘드 위치 어레이(380))로의 메쏘드 어레이 포인터를 추적하게 된다. 메쏘드 위치 어레이(380)는 3개의 어레이 요소들을 포함하며, 이것은 호출된 메쏘드의 3개의 상이한 버전이 클라이언트에 의해 이전에 호출되었음을 의미한다. 따라서, 블록(315)은 프로세스 1 또는 프로세스 32가 미해결중인지의 여부에 관계없이 긍정적으로 응답된다. 다음으로, 메쏘드 호출 관리자(170)는 메쏘드 위치 어레이(380)내의 서비스 프로그램이 활성 프로세스에 의해 이전에 로딩되었는지의 여부를 판정한다(블록(345)). 앞서 설명된 바와 같이, 메쏘드 호출 관리자는 이러한 판정을 도 3e의 프로세스 리스트(390)를 참조함으로써 수행하게 된다. 프로세스 1의 경우에, 메쏘드 호출 관리자(170)는 서비스 프로그램 A가 이전에 실제로 로딩되었음을 판정하게 된다. 따라서, 메쏘드 호출 관리자(170)는 메쏘드 위치 어레이(380)의 요소 a에 포함된 정보를 사용하여 서비스 프로그램 A의 실행 메쏘드(즉, 도 3c상의 서비스 프로그램(385)으로서 도시됨)를 액세스하여 호출하게 된다(도 3a의 블록(342) 및 블록(350) 참조). 각 서비스 프로그램이 각각의 메쏘드 위치 어레이에 논리적으로 접속되며(즉, 도 3c에 도시된 바와 같이), 각각의 활성 서비스 프로그램이 또한 그 프로세스에 논리적으로 접속됨(즉, 도 3e에 도시된 바와 같음)에 유의해야 한다.
그러나 프로세스 32의 경우에, 메쏘드 호출 관리자(170)는 메쏘드 위치 어레이(380)의 어레이 요소들중 어느 것도 프로세스 32에 의해 이전에 로딩된 서비스 프로그램에 대한 위치 정보를 포함하지 않음을 알게 된다. 따라서, 메쏘드 호출 관리자(170)는 서비스 프로그램 명칭(374)으로부터 새로운 서비스 프로그램의 로딩을 시도한다(도 3a의 블록(365)). 여기서, 서비스 프로그램 명칭(374)에 포함된 명칭이 서비스 프로그램 C의 명칭이라고 가정하자.
로딩에 실패하면, 메쏘드 호출 관리자(170)는 에러 신호를 송출(블록(343))한 후 호출중인 메쏘드로 제어를 복귀시킨다(블록(344)). 그러나, 여기서, 서비스 프로그램 C의 로딩에 성공했다고 가정하자. 이 때 메쏘드 호출 관리자(170)는 서비스 프로그램 C를 프로세스 32에 대한 활성 서비스 프로그램 리스트에 부가한다(블록(346)). 그리고 나서, 메쏘드 호출 관리자(170)는 서비스 프로그램 C가 메쏘드 위치 어레이내에 존재하는지의 여부(즉, 해당 클래스의 메쏘드들중 어느 것이 서비스 프로그램 C를 사용하여 호출된 적이 있는지의 여부)를 체크한다(블록(349)). 도 3c에 도시된 바와 같이, 서비스 프로그램 C(즉, 서비스 프로그램(383))는 메쏘드 위치 어레이내에 존재한다. 따라서, 메쏘드 호출 관리자(170)는 메쏘드 위치 어레이(380)의 요소 c에 포함된 정보를 사용하여 서비스 프로그램 C의 실행 메쏘드 1을 액세스하여 호출하게 된다(도 3b의 블록(342, 350) 참조).
여기서, 상기한 실시예는 두 개의 상이한 프로세스들(즉, 프로세스 1 및 프로세스 32)이 객체(370)의 객체 데이터(371)을 공유할 수 있으며, 그럼에도 불구하고 동일한 메쏘드의 상이한 두 버전(서비스 프로그램 A 및 C의 버전)을 사용하고 있음을 나타냄에 주목해야 한다. 또한, 프로세스 1은 자연스럽게 실행을 종료한 후 자동으로 최신 메쏘드 버전(즉, 본 실시예에서 서비스 프로그램 C의 메쏘드 버전)을 액세스하게 됨(즉, 왜냐하면 서비스 프로그램 A가 활성 서비스 프로그램 리스트(395)로부터 삭제됨)을 주목해야 한다.
본 발명의 장점
본 발명의 첫 번째 장점은 컴퓨터 시스템 또는 그 프로그램들중 어느것도 중지시킬 필요없이 객체들을 갱신 또는 수정할 수 있다는 것이다.
본 발명의 두 번째 장점은 실행중인 프로그램이 충분히 자신의 처리를 완료할 때까지 객체의 구 버전을 사용하여 계속해서 실행할 수 있게 한다는 것이다.
본 발명의 세 번째 장점은 프로그램이 동일한 객체의 구 객체 버전을 액세스중일지라도 새로운 객체 버전이 이용가능하게 되면 새로운 객체 버전에 대한 액세를 프로그램에 제공한다는 것이다.
본 발명의 네 번째 장점은 프로그램으로 하여금 서버 객체의 데이터를 공유할 수 있게 하면서도 이들 동일한 프로그램이 서버 객체 메쏘드들의 상이한 버전을 이용할 수 있게 한다는 것이다.
본 발명의 다섯 번째 장점은 프로그램으로 하여금 서버 객체 데이터를 공유할 수 있게 하면서도 이들 동일한 프로그램의 서브세트가 새로운 서버 메쏘드들의 버전을 이용할 수 있게 한다는 것이다.
이상 본 명세서에 개시된 실시예들은 본 발명 및 그의 실시 응용을 가장 잘 설명하여 당 분야에 숙련된 자가 본 발명을 제조 및 사용할 수 있도록 하기 위한 예로서 제공되었다. 그러나 당 분야에 숙련된 자라면, 이상의 설명 및 실시예들이 예시 및 설명만을 목적으로 제공된 것임을 알 것이다. 이상의 상세한 설명은 본 발명을 총망라하거나 개시된 정확한 형태로 제한하지 않는다. 후속하는 청구범위의 사상 및 범주로부터 벗어나지 않고 이상의 개시내용에 비추어 다수의 수정 및 변경이 가능하다.

Claims (17)

  1. ① 버스와,
    ② 중앙 처리 장치와,
    ③ 상기 버스를 통해 상기 중앙 처리 장치에 접속되는 컴퓨터 시스템 메모리와,
    ④ 상기 컴퓨터 메모리 시스템에 저장되는, 메쏘드(a method)를 갖는 적어도 하나의 객체(at least one object)―상기 메쏘드는 상기 중앙 처리 장치상에서 실행되기 위해 상기 컴퓨터 시스템 메모리에 저장되며, 제 1 버전(a first version) 및 제 2 버전(a second version)을 가짐―
    를 포함하는 컴퓨터 시스템.
  2. 제 1 항에 있어서,
    제 1 클라이언트 프로그램(a first client program)과 제 2 클라이언트 프로그램(a second client program)을 더 포함하고,
    상기 제 1 클라이언트 프로그램은 상기 중앙 처리 장치상에서 제 1 프로세스의 일부(part of a first process)로서 실행되고, 상기 제 2 클라이언트 프로그램은 상기 중앙 처리 장치상에서 제 2 프로세스의 일부(part of a second process)로서 실행되며,
    상기 제 1 프로세스 및 상기 제 2 프로세스는 멀티태스킹 오퍼레이팅 시스템(a multitasking operating system)의 제어하에 상기 중앙 처리 장치상에서 실행되고, 상기 제 1 클라이언트 프로그램은 상기 메쏘드의 상기 제 1 버전을 사용하며, 상기 제 2 클라이언트 프로그램은 상기 메쏘드의 상기 제 2 버전을 사용하는
    컴퓨터 시스템.
  3. 제 1 항에 있어서,
    상기 객체는 데이터를 갖고, 상기 데이터는 상기 메쏘드의 상기 제 1 버전을 통해 상기 제 1 클라이언트 프로그램에 의해, 그리고 상기 메쏘드의 상기 제 2 버전을 통해 상기 제 2 클라이언트 프로그램에 의해 액세스되는 컴퓨터 시스템.
  4. 제 1 항에 있어서,
    상기 메쏘드의 상기 제 1 버전 및 상기 메쏘드의 상기 제 2 버전은 메쏘드 갱신 메카니즘(a method update mechanism)을 사용하여 생성되는 컴퓨터 시스템.
  5. ① 버스와,
    ② 중앙 처리 장치와,
    ③ 상기 버스를 통해 상기 중앙 처리 장치에 접속되는 컴퓨터 시스템 메모리와,
    ④ 상기 중앙 처리 장치상에서 멀티태스킹 오퍼레이팅 시스템의 제어하에 실행되는 제 1 프로세스와,
    ⑤ 상기 중앙 처리 장치상에서 상기 제 1 프로세스의 일부로서 실행되는 클라이언트 프로그램과,
    ⑥ 상기 컴퓨터 시스템 메모리내에 저장되는, 메쏘드를 갖는 적어도 하나의 객체―상기 메쏘드는 상기 중앙 처리 장치상에서 실행되기 위해 상기 컴퓨터 시스템 메모리내에 저장되고 제 1 버전을 가지며, 상기 메쏘드의 상기 제 1 버전은 상기 클라이언트 프로그램에 의해 현재 사용됨―와,
    ⑦ 메쏘드 갱신 메카니즘(a method update mechanism)을 포함하는 메쏘드 유지 보수 메카니즘(a method maintenance mechanism)―상기 메쏘드 갱신 메카니즘은 상기 제 1 프로세스를 중지하지 않고 상기 메쏘드의 제 2 버전을 생성하는데 사용됨―
    을 포함하는 컴퓨터 시스템.
  6. 제 5 항에 있어서,
    상기 메쏘드 유지 보수 메카니즘은 메쏘드 호출 관리자(a method call manager)를 더 포함하며, 상기 메쏘드 호출 관리자는 상기 제 1 프로세스가 자연스럽게 종료할 때까지 상기 클라이언트 프로그램으로부터 발생된 호출들을 상기 메쏘드의 상기 제 1 버전으로 경로배정하는 컴퓨터 시스템.
  7. 제 5 항에 있어서,
    상기 메쏘드 호출 관리자는 상기 클라이언트 프로그램으로부터의 호출들을 상기 메쏘드의 상기 제 2 버전으로 경로배정하고, 상기 클라이언트 프로그램은 제 2 프로세스의 일부로서 실행되며, 상기 제 2 프로세스는 상기 메쏘드 프로그램의 상기 제 2 버전이 생성된 후 개시되는 컴퓨터 시스템.
  8. ① 버스와,
    ② 중앙 처리 장치와,
    ③ 상기 버스를 통해 상기 중앙 처리 장치에 접속되는 컴퓨터 시스템 메모리와,
    ④ 상기 중앙 처리 장치상에서 멀티태스킹 오퍼레이팅 시스템의 제어하에 실행되는 제 1 프로세스와,
    ⑤ 상기 중앙 처리 장치상에서 상기 제 1 프로세스의 일부로서 실행되는 클라이언트 프로그램과,
    ⑥ 상기 컴퓨터 시스템 메모리내에 저장되는, 메쏘드를 갖는 적어도 하나의 객체―상기 메쏘드는 상기 중앙 처리 장치상에서 실행되기 위해 상기 컴퓨터 시스템 메모리에 저장되고 제 1 버전을 가지며, 상기 메쏘드의 상기 제 1 버전은 상기 클라이언트 프로그램에 의해 현재 사용됨―와,
    ⑦ 상기 제 1 프로세스가 자연스럽게 종료할 때까지 상기 클라이언트 프로그램으로부터 발생된 호출들을 상기 메쏘드의 상기 제 1 버전으로 경로배정하고, 상기 클라이언트 프로그램이 제 2 프로세스의 부분으로서 실행중일 때 상기 클라이언트 프로그램으로부터의 호출들을 상기 메쏘드의 상기 제 2 버전으로 경로배정하는 메쏘드 호출 관리자―상기 제 2 프로세스는 상기 메쏘드 프로그램의 상기 제 2 버전이 생성된 후에 개시됨―
    를 포함하는 컴퓨터 시스템.
  9. ① 기록가능한 매체와,
    ② 상기 기록가능한 매체상에 기록되는 메쏘드 호출 관리자를 포함하되,
    상기 메쏘드 호출 관리자는 적어도 하나의 객체가 컴퓨터 시스템 메모리에 저장된 컴퓨터 시스템상에서 사용되고, 상기 적어도 하나의 객체는 메쏘드를 가지며, 상기 메쏘드는 상기 컴퓨터 시스템 메모리에 저장되어 중앙 처리 장치상에서 실행되고, 상기 메쏘드는 제 1 버전 및 제 2 버전을 갖되, 상기 메쏘드의 상기 제 1 버전이 생성되어 상기 컴퓨터 시스템상에서의 실행을 위해 이용가능하게 된 후, 상기 메쏘드의 제 2 버전이 생성되어 상기 컴퓨터 시스템상에서의 실행을 위해 이용가능하게 되며, 상기 메쏘드 호출 관리자는 상기 컴퓨터 시스템상에서 상기 클라이언트 프로그램이 상기 중앙 처리 장치상에서 제 1 프로세스의 일부로서 실행중인 경우 상기 제 1 프로세스가 자연스럽게 종료할 때까지 상기 클라이언트 프로그램으로부터 발생된 호출들을 상기 메쏘드의 상기 제 1 버전으로 경로배정하고, 상기 클라이언트 프로그램이 제 2 프로세스의 일부로서 실행중일 때 상기 클라이언트 프로그램으로부터의 호출들을 상기 메쏘드의 상기 제 2 버전으로 경로배정하는데 사용되며, 상기 제 2 프로세스는 상기 메쏘드 프로그램의 상기 제 2 버전이 생성된 후에 개시되는
    프로그램 제품(a program product).
  10. 제 1 컴퓨터 시스템으로부터 제 2 컴퓨터 시스템으로 프로그램 제품을 전송하는 방법에 있어서,
    ① 상기 제 1 컴퓨터 시스템과 상기 제 2 컴퓨터 시스템간에 접속을 설정하는 단계와,
    ② 상기 제 1 컴퓨터 시스템으로부터 상기 제 2 컴퓨터 시스템으로 상기 프로그램 제품을 전송하는 단계를 포함하되,
    상기 프로그램 제품은 메쏘드 호출 관리자를 포함하고, 상기 메쏘드 호출 관리자는 적어도 하나의 객체가 컴퓨터 시스템 메모리에 저장된 컴퓨터 시스템상에서 사용되며, 상기 적어도 하나의 객체는 메쏘드를 갖고, 상기 메쏘드는 중앙 처리 장치상에서 실행되기 위해 상기 컴퓨터 시스템 메모리에 저장되며, 상기 메쏘드는 제 1 버전 및 제 2 버전을 갖되, 상기 메쏘드의 제 1 버전이 생성되어 상기 컴퓨터 시스템상에서 실행되기 위해 이용가능하게 된 후 상기 제 2 버전이 생성되어 상기 컴퓨터 시스템상에서 실행되기 위해 이용가능하게 되며, 상기 메쏘드 호출 관리자는 상기 컴퓨터 시스템상에서 상기 클라이언트 프로그램이 상기 중앙 처리 장치상에서 제 1 프로세스의 일부로서 실행중인 경우 상기 제 1 프로세스가 자연스럽게 종료할 때까지 상기 클라이언트 프로그램으로부터 발생된 호출들을 상기 메쏘드의 상기 제 1 버전으로 경로배정하고, 상기 클라이언트 프로그램이 제 2 프로세스의 일부로서 실행중일 때 상기 클라이언트 프로그램으로부터의 호출들을 상기 메쏘드의 상기 제 2 버전으로 경로배정하는데 사용되며, 상기 제 2 프로세스는 상기 메쏘드 프로그램의 상기 제 2 버전이 생성된 후에 개시되는
    프로그램 제품 전송 방법.
  11. ① 버스와,
    ② 중앙 처리 장치와,
    ③ 상기 버스를 통해 상기 중앙 처리 장치에 접속되는 컴퓨터 시스템 메모리와,
    ④ 상기 중앙 처리 장치상에서 멀티태스킹 오퍼레이팅 시스템의 제어하에 실행되는 제 1 프로세스와,
    ⑤ 상기 중앙 처리 장치상에서 상기 제 1 프로세스의 일부로서 실행되는 클라이언트 프로그램과,
    ⑥ 공유 메모리(shared memory)에 저장되며, 데이터 및 메쏘드를 갖는 적어도 하나의 객체―상기 메쏘드는 상기 중앙 처리 장치상에서 실행되기 위해 상기 컴퓨터 시스템 메모리에 저장되며, 제 1 버전 및 제 2 버전을 가짐―와,
    ⑦ 제 1 클라이언트 프로그램으로부터의 호출들을 상기 제 1 메쏘드 버전으로 경로배정하고 제 2 클라이언트 프로그램으로부터의 호출들을 상기 제 2 메쏘드 버전으로 경로배정하여 상기 제 1 및 제 2 클라이언트 프로그램 모두가 상기 데이터를 공유할 수 있게 하는 메쏘드 호출 관리자
    를 포함하는 컴퓨터 시스템.
  12. ① 기록가능한 매체와,
    ② 상기 기록가능한 매체상에 기록된 메쏘드 호출 관리자를 포함하되,
    상기 메쏘드 호출 관리자는 적어도 하나의 객체가 공유 메모리에 저장된 컴퓨터 시스템 상에서 사용되며, 상기 적어도 하나의 객체는 데이터 및 메쏘드를 갖고, 상기 메쏘드는 중앙 처리 장치상에서 실행되기 위해 상기 컴퓨터 시스템 메모리에 저장되며, 상기 메쏘드는 제 1 버전 및 제 2 버전을 갖고, 상기 메쏘드 호출 관리자는 제 1 클라이언트 프로그램으로부터의 호출들을 상기 제 1 메쏘드 버전으로 경로배정하고 제 2 클라이언트 프로그램으로부터의 호출들을 상기 제 2 메쏘드 버전으로 경로배정하여 상기 제 1 및 제 2 클라이언트 프로그램이 모두 상기 데이터를 공유할 수 있게 하는
    프로그램 제품.
  13. 제 1 컴퓨터 시스템으로부터 제 2 컴퓨터 시스템으로 프로그램 제품을 전송하는 방법에 있어서,
    ①상기 제 1 컴퓨터 시스템과 상기 제 2 컴퓨터 시스템간에 접속을 설정하는 단계와,
    ② 상기 제 1 컴퓨터 시스템으로부터 상기 제 2 컴퓨터 시스템으로 상기 프로그램 제품을 전송하는 단계를 포함하되,
    상기 프로그램 제품은 메쏘드 호출 관리자를 포함하고, 상기 메쏘드 호출 관리자는 적어도 하나의 객체가 공유 메모리에 저장된 컴퓨터 시스템상에서 사용되며, 상기 적어도 하나의 객체는 데이터 및 메쏘드를 갖고, 상기 메쏘드는 중앙 처리 장치상에서 실행되기 위해 상기 컴퓨터 시스템 메모리에 저장되며, 상기 메쏘드는 제 1 버전 및 제 2 버전을 갖고, 상기 메쏘드 호출 관리자는 제 1 클라이언트 프로그램으로부터의 호출들을 상기 제 1 메쏘드 버전으로 경로배정하고 제 2 클라이언트 프로그램으로부터의 호출들을 상기 제 2 메쏘드 버전으로 경로배정하여 상기 제 1 및 제 2 클라이언트 프로그램 모두가 상기 데이터를 공유할 수 있게 하는
    프로그램 제품 전송 방법.
  14. ① 버스와,
    ② 중앙 처리 장치와,
    ③ 상기 버스를 통해 상기 중앙 처리 장치에 접속되는 컴퓨터 시스템 메모리와,
    ④클라이언트 프로그램과,
    ⑤ 상기 컴퓨터 시스템 메모리에 저장되는, 메쏘드를 갖는 적어도 하나의 객체―상기 메쏘드는 상기 중앙 처리 장치상에서 실행되기 위해 상기 컴퓨터 시스템 메모리에 저장됨―와,
    ⑥ 상기 클라이언트 프로그램에 대한 관리 기능(administrative functions)을 수행하는데 사용되며, 상기 메쏘드에 대한 호출의 일부로서 활성화되는 메쏘드 호출 관리자
    를 포함하는 컴퓨터 시스템.
  15. ① 기록가능한 매체와,
    ② 상기 기록가능한 매체상에 기록되는 메쏘드 호출 관리자를 포함하되,
    상기 메쏘드 호출 관리자는 적어도 하나의 객체가 컴퓨터 시스템 메모리에 저장된 컴퓨터 시스템상에서 사용되며, 상기 적어도 하나의 객체는 메쏘드를 갖고, 상기 메쏘드는 중앙 처리 장치상에서 실행되기 위해 상기 컴퓨터 시스템 메모리에 저장되며, 상기 메쏘드 호출 관리자는 상기 클라이언트 프로그램에 대한 감독 기능을 수행하는데 이용되고 상기 메쏘드에 대한 호출의 일부로서 활성화되는
    프로그램 제품.
  16. 제 1 컴퓨터 시스템으로부터 제 2 컴퓨터 시스템으로 프로그램 제품을 전송하는 방법에 있어서,
    ① 상기 제 1 컴퓨터 시스템과 상기 제 2 컴퓨터 시스템간에 접속을 설정하는 단계와,
    ② 상기 제 1 컴퓨터 시스템으로부터 상기 제 2 컴퓨터 시스템으로 상기 프로그램 제품을 전송하는 단계를 포함하되,
    상기 프로그램 제품은 메쏘드 호출 관리자를 포함하고, 상기 메쏘드 호출 관리자는 적어도 하나의 객체가 컴퓨터 시스템 메모리에 저장된 컴퓨터 시스템상에서 이용되며, 상기 적어도 하나의 객체는 메쏘드를 갖고, 상기 메쏘드는 중앙 처리 장치상에서 실행되기 위해 상기 컴퓨터 시스템 메모리에 저장되며, 상기 메쏘드 호출 관리자는 상기 클라이언트 프로그램에 대한 감독 기능을 수행하는데 이용되고 상기 메쏘드에 대한 호출의 일부로서 활성화되는
    프로그램 제품 전송 방법.
  17. 컴퓨터 시스템에서 객체 메쏘드들을 호출하는 방법에 있어서,
    ① 객체 메쏘드의 제 1 버전을 호출하는 단계―상기 객체의 상기 제 1 버전은 제 1 프로세스의 일부로서 실행중인 제 1 클라이언트 프로그램에 의해 호출됨―와,
    ② 상기 객체의 상기 메쏘드의 제 2 버전을 호출하는 단계―상기 객체의 상기 제 2 버전은 제 2 프로세스의 일부로서 실행중인 제 2 클라이언트 프로그램에 의해 호출됨―
    를 포함하는 컴퓨터 시스템에서 객체 메쏘드들을 호출하는 방법.
KR1019980702504A 1995-10-12 1996-10-02 컴퓨터시스템및프로그램제품전송방법 KR100301274B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US8/542,147 1995-10-12
US08/542,147 US6112253A (en) 1995-10-12 1995-10-12 Object-oriented method maintenance mechanism that does not require cessation of the computer system or its programs
US08/542,147 1995-10-12
PCT/US1996/015834 WO1997014091A1 (en) 1995-10-12 1996-10-02 Object-oriented method maintenance mechanism that does not require cessation of the computer system

Publications (2)

Publication Number Publication Date
KR19990064026A true KR19990064026A (ko) 1999-07-26
KR100301274B1 KR100301274B1 (ko) 2001-09-06

Family

ID=24162538

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980702504A KR100301274B1 (ko) 1995-10-12 1996-10-02 컴퓨터시스템및프로그램제품전송방법

Country Status (7)

Country Link
US (2) US6112253A (ko)
EP (1) EP0855056B1 (ko)
JP (1) JP3771589B2 (ko)
KR (1) KR100301274B1 (ko)
DE (1) DE69618221T2 (ko)
TW (1) TW459200B (ko)
WO (1) WO1997014091A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE29611558U1 (de) 1996-07-05 1997-08-07 Siemens Ag Vorrichtung zur Erfassung von analogen Meßsignalen für die akustische Diagnose von Prüflingen
US6175855B1 (en) * 1996-12-20 2001-01-16 Siemens Aktiengesellschaft Method for instantiating a class having different versions
DE19734413C1 (de) * 1997-08-08 1999-01-07 Ericsson Telefon Ab L M Verfahren zum Aufrüsten einer Datenbank
US6442753B1 (en) * 1997-08-28 2002-08-27 International Business Machines Corporation Apparatus and method for checking dependencies among classes in an object-oriented program
US6272521B1 (en) 1997-12-08 2001-08-07 Object Technology Licensing Corporation Apparatus and method for allowing object-oriented programs created with different framework versions to communicate
GB2334117A (en) * 1998-02-04 1999-08-11 Ibm Performing semantic concurrency control in dispatching server computer client requests
US6377546B1 (en) * 1998-05-12 2002-04-23 International Business Machines Corporation Rate guarantees through buffer management
CA2375517A1 (en) * 1999-06-18 2000-12-28 Symantec Corporation Method and apparatus to rename open files
DE19954407A1 (de) * 1999-11-12 2001-05-17 Gfs Systemtechnik Gmbh & Co Kg Verfahren zum direkten Aufrufen einer Funktion mittels eines Softwaremoduls durch einen Prozessor mit einer Memory-Management-Unit (MMU)
US6560614B1 (en) * 1999-11-12 2003-05-06 Xosoft Inc. Nonintrusive update of files
US6735774B1 (en) * 2000-10-23 2004-05-11 Hewlett-Packard Development Company, L.P. Method and apparatus for system call management
US7031989B2 (en) * 2001-02-26 2006-04-18 International Business Machines Corporation Dynamic seamless reconfiguration of executing parallel software
US7010791B2 (en) * 2001-09-20 2006-03-07 Intel Corporation Method for implementing multiple type hierarchies
WO2004055685A1 (ja) * 2002-12-18 2004-07-01 International Business Machines Corporation Webサービス提供システム、そのためのサーバ装置、コンピュータ・システムをWebサービス提供システムのためのサーバ装置として制御するための制御方法、および該制御方法を実行するためのプログラムおよび記録媒体
US6978452B2 (en) * 2003-04-02 2005-12-20 Beach Unlimited Llc Upgrading digital media servers
US20050039196A1 (en) * 2003-08-13 2005-02-17 Sasidharan Prasanth Nalini Method and system for using a library
GB2412192B (en) * 2004-03-18 2007-08-29 Advanced Risc Mach Ltd Function calling mechanism
US7665077B2 (en) * 2004-10-18 2010-02-16 Microsoft Corporation System and method for sharing objects between applications in a virtual runtime environment
US8051426B2 (en) * 2007-01-04 2011-11-01 Microsoft Corporation Co-routines native to a virtual execution environment
US20090076628A1 (en) * 2007-09-18 2009-03-19 David Mark Smith Methods and apparatus to upgrade and provide control redundancy in process plants
US20090172645A1 (en) * 2007-12-27 2009-07-02 Sap Ag Call stack evaluation to assure proper framework access
CN102467832A (zh) * 2010-11-04 2012-05-23 信诺科技有限公司 物件导向的复合功能电子书
CN103853527A (zh) 2012-11-29 2014-06-11 国际商业机器公司 切换多线程程序中的对象锁定模式的方法和系统
US9509697B1 (en) * 2014-09-15 2016-11-29 Symantec Corporation Systems and methods for authorizing attempts to access shared libraries
JP6895803B2 (ja) * 2017-05-24 2021-06-30 三菱電機株式会社 プラント監視制御システムの保守計算機及び保守プログラム

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4500952A (en) * 1980-05-23 1985-02-19 International Business Machines Corporation Mechanism for control of address translation by a program using a plurality of translation tables
US4498132A (en) * 1981-05-22 1985-02-05 Data General Corporation Data processing system using object-based information and a protection scheme for determining access rights to such information and using multilevel microcode techniques
US4731734A (en) * 1983-10-17 1988-03-15 Data General Corporation Digital computer system incorporating object-based addressing and access control and tables defining derivation of addresses of data from operands in instructions
US4558413A (en) * 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US4809170A (en) * 1987-04-22 1989-02-28 Apollo Computer, Inc. Computer device for aiding in the development of software system
US5179703A (en) * 1987-11-17 1993-01-12 International Business Machines Corporation Dynamically adaptive environment for computer programs
US5175828A (en) * 1989-02-13 1992-12-29 Hewlett-Packard Company Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison
US5297283A (en) * 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
US5187790A (en) * 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes in an object based computer operating system
AU650242B2 (en) * 1989-11-28 1994-06-16 International Business Machines Corporation Methods and apparatus for dynamically managing input/output (I/O) connectivity
US5495610A (en) * 1989-11-30 1996-02-27 Seer Technologies, Inc. Software distribution system to build and distribute a software release
US5181162A (en) * 1989-12-06 1993-01-19 Eastman Kodak Company Document management and production system
US5075848A (en) * 1989-12-22 1991-12-24 Intel Corporation Object lifetime control in an object-oriented memory protection mechanism
JP2591217B2 (ja) * 1990-02-06 1997-03-19 日本電気株式会社 オブジェクトクラス定義情報実装装置
US5265206A (en) * 1990-10-23 1993-11-23 International Business Machines Corporation System and method for implementing a messenger and object manager in an object oriented programming environment
EP0496494A3 (en) * 1991-01-22 1993-05-12 International Business Machines Corporation Software maintenance system
US5263155A (en) * 1991-02-21 1993-11-16 Texas Instruments Incorporated System for selectively registering and blocking requests initiated by optimistic and pessimistic transactions respectively for shared objects based upon associated locks
JPH05257664A (ja) * 1991-12-12 1993-10-08 Internatl Business Mach Corp <Ibm> バージョン独立のオブジェクト指向アプリケーション・プログラムを生成するシステム及び方法
US5276901A (en) * 1991-12-16 1994-01-04 International Business Machines Corporation System for controlling group access to objects using group access control folder and group identification as individual user
GB9126779D0 (en) * 1991-12-17 1992-02-12 Int Computers Ltd Security mechanism for a computer system
US5493661A (en) * 1992-03-06 1996-02-20 International Business Machines Corporation Method and system for providing a program call to a dispatchable unit's base space
US5414812A (en) * 1992-03-27 1995-05-09 International Business Machines Corporation System for using object-oriented hierarchical representation to implement a configuration database for a layered computer network communications subsystem
US5274823A (en) * 1992-03-31 1993-12-28 International Business Machines Corporation Interrupt handling serialization for process level programming
US5327562A (en) * 1992-05-06 1994-07-05 Microsoft Corporation Method for implementing virtual function tables in a compiler for an object-oriented programming language
US5410703A (en) * 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
US5339430A (en) * 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system
US5392433A (en) * 1992-09-25 1995-02-21 International Business Machines Corporation Method and apparatus for intraprocess locking of a shared resource in a computer system
US5404525A (en) * 1992-09-30 1995-04-04 International Business Machines Corporation Efficient method router that supports multiple simultaneous object versions
JPH06110678A (ja) * 1992-09-30 1994-04-22 Toshiba Corp プログラム実行方式及び実行プログラムの動的変更方法
US5596754A (en) * 1992-10-29 1997-01-21 Digital Equipment Corporation Method for performing private lock management
US5414852A (en) * 1992-10-30 1995-05-09 International Business Machines Corporation Method for protecting data in a computer system
US5359730A (en) * 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
JPH06187134A (ja) * 1992-12-18 1994-07-08 Fujitsu Ltd ロードモジュール更新方法
JPH076106A (ja) * 1992-12-18 1995-01-10 Internatl Business Mach Corp <Ibm> ソフトウェア配布方法及びシステム
US5535389A (en) * 1993-01-26 1996-07-09 International Business Machines Corporation Business process objects with associated attributes such as version identifier
JPH07200279A (ja) * 1993-12-28 1995-08-04 Toshiba Corp オブジェクト管理システム及びネットワーク管理システム
US5586304A (en) * 1994-09-08 1996-12-17 Compaq Computer Corporation Automatic computer upgrading
US5682533A (en) * 1994-09-27 1997-10-28 Telefonaktiebolaget Lm Ericsson (Publ) Updating software within a telecommunications switch without interrupting existing communication and neither moving nor converting data

Also Published As

Publication number Publication date
US6112253A (en) 2000-08-29
JPH10512079A (ja) 1998-11-17
EP0855056A1 (en) 1998-07-29
US6029206A (en) 2000-02-22
EP0855056B1 (en) 2001-12-19
DE69618221D1 (de) 2002-01-31
EP0855056A4 (en) 1999-01-13
KR100301274B1 (ko) 2001-09-06
TW459200B (en) 2001-10-11
WO1997014091A1 (en) 1997-04-17
DE69618221T2 (de) 2002-08-22
JP3771589B2 (ja) 2006-04-26

Similar Documents

Publication Publication Date Title
KR100301274B1 (ko) 컴퓨터시스템및프로그램제품전송방법
US5341478A (en) Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5619710A (en) Method and apparatus for object-oriented invocation of a server application by a client application
EP0472279B1 (en) Apparatus for implementing data bases to provide object-oriented invocation of applications
US5440744A (en) Methods and apparatus for implementing server functions in a distributed heterogeneous environment
EP0735474B1 (en) Method and apparatus for generation and installation of distributed objects on a distributed object system
US5692183A (en) Methods and apparatus for providing transparent persistence in a distributed object operating environment
CN100498699C (zh) 在运行时系统中共享对象
US6029207A (en) Apparatus and method for dynamic linking of computer software components
US20060253844A1 (en) Computer architecture and method of operation for multi-computer distributed processing with initialization of objects
US6892202B2 (en) Optimistic transaction compiler
EP1645959A2 (en) Grouping of run-time components in entity domains
US20020174161A1 (en) Java startup wrapper
Evans et al. Zones, contracts and absorbing changes: An approach to software evolution
JP3019915B2 (ja) 手続き呼出し方法
Evans This paper should be referenced thus: Huw Evans and Peter Dickman. Zones, Contracts and Absorbing Change: An Approach to Software Evolution. In Pro-ceedings of the Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA’99), volume 34 of SIGPLAN Notices, pages, 415-434, Denver, Colorado, USA, October 1999. ACM. The BibTex is

Legal Events

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

Payment date: 20100615

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee