KR100346667B1 - 작업 종료를 통지하기 위한 방법 및 장치 - Google Patents

작업 종료를 통지하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR100346667B1
KR100346667B1 KR1019990013280A KR19990013280A KR100346667B1 KR 100346667 B1 KR100346667 B1 KR 100346667B1 KR 1019990013280 A KR1019990013280 A KR 1019990013280A KR 19990013280 A KR19990013280 A KR 19990013280A KR 100346667 B1 KR100346667 B1 KR 100346667B1
Authority
KR
South Korea
Prior art keywords
flexibility
list
target
job
target task
Prior art date
Application number
KR1019990013280A
Other languages
English (en)
Other versions
KR19990087928A (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 KR19990087928A publication Critical patent/KR19990087928A/ko
Application granted granted Critical
Publication of KR100346667B1 publication Critical patent/KR100346667B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 실패한(failing) 프로세스와 대화하고 있는 프로세스가 그 프로세스의 실패를 확실히 통지 받도록하기 위한 방법과 장치에 관한 것이다. 각 프로세스는 자신과 관련 있는 고유한 프로세스 식별자(PID)를 갖는다. 각 프로세스는 하나 이상의 엔트리를 갖는 유연성 목록(affinity list)을 선택 사양으로 갖는데, 각 엔트리는 프로세스가 실패할 경우 통지를 받을 프로세스의 식별자를 포함한다. 운영체제(OS) 커널의 유연성 서비스 호출에 의해 프로세스는, 동작 형태(추가 또는 삭제), 타겟 프로세스의 식별자, 통지 받을 프로세스의 식별자, 통지 받을 프로세스를 위해 생성될 이벤트 형태를 지정하는 타겟 프로세스(자신 또는 다른 프로세스 중 어느 하나)의 유연성 목록을 갱신한다. 프로세스가 실패할 경우, OS 커널의 프로세스 종료 서비스는 실패 프로세스의 유연성 목록을 검사하고, 그 목록에 있는 각 엔트리에 통지하기 위해서 통지 받을 것으로 지정된 프로세스에 대한 지정된 종류의 이벤트를 생성한다.

Description

작업 종료를 통지하기 위한 방법 및 장치 {METHOD AND APPARATUS FOR PROVIDING FOR NOTIFICATION OF TASK TERMINATION}
본 발명은 작업의 종료를 통지하기 위한 방법 및 장치에 관한 것으로, 구체적으로는 클라이언트/서버(client/server; C/S) 시스템에서 프로세스의 종료를 통지하기 위한 방법 및 장치에 관한 것이다.
클라이언트/서버 컴퓨팅 시스템은 당해 기술 분야에서 잘 알려져 있다. 클라이언트/서버 시스템에서는, 클라이언트 프로세스(또는 간단히 "클라이언트")가 동일 시스템 또는 다른 시스템의 서버 프로세스(또는 간단히 "서버")에, 지정된 서비스를 수행하도록 요구를 발행한다. 서버 프로세스는 이 요구를 수신하면 요구된 서비스를 수행하고 그 결과를 응답으로서 클라이언트 프로세스로 되돌려 보낸다.
단일 시스템에서 클라이언트/서버 응용 프로그램을 실행할 때, 클라이언트가 서버에 요구를 보내고 서버로부터의 응답을 기다려야 하는 경우가 자주 있다. 마찬가지로 복수의 서버 프로세스가 복수의 클라이언트 프로세스와 통신을 해야 하는경우도 있을 수 있다. 클라이언트가 서버로부터의 응답을 기다리고 있는 동안에 그 서버가 종료한 경우, 사용자나 오퍼레이터가 클라이언트 프로세스를 종료시키는 요구를 행할 때까지 클라이언트 프로세스가 대기 상태로 유지될 수 있다. 마찬가지로 서버가 클라이언트로부터의 응답을 기다리고 있는 동안에, 클라이언트가 종료하는 경우도 있다. 클라이언트와 서버의 논리에 타이머 콜(call)을 추가하여 대기 상태가 타임 아웃되도록 할 수 있지만, 그 경우, 경로가 불필요하게 길어지고, 클라이언트나 서버의 애플리케이션이 적당한 시간 간격을 얻는 것이 필요해진다.
유닉스(UNIX)(등록상표) 기반의 시스템에는, 복수의 프로세스간의 연결 상황을 계속 추적하는데 사용될 수 있는 여러 가지 프로그래밍 구성이 있다. 애플리케이션이 자식 프로세스(child process)를 생성하기 위해 포크 함수[fork()]나 스폰 함수[spawn()]를 사용하면, 그 두 프로세스는 유닉스 구조(framework)에 의해 서로 결합된다. 즉, 자식 프로세스가 종료되면 부모 프로세스(parent process)에 SIGCHLD 신호가 전송된다. 부모 프로세스가 종료되면, 자식 프로세스에 SIGHUP 신호가 전송된다. 그러나 대화 중인 서버와 클라이언트 프로세스는 일반적으로 이러한 부모 자식 관계 이외의 방법으로 서로 결합되어 있으므로, 이러한 메커니즘은 유닉스 기반 시스템에서 일반적인 통지 메커니즘으로는 거의 사용되지 않는다.
상기 문제는 이하에 설명하는 본 발명의 PID 유연성(有緣性) 서비스에 의해 해결된다. 용어 PID는 프로세스 식별자(process id: PID)를 나타낸다. 서버 프로세스와 클라이언트 프로세스는 모두 고유의 PID를 갖는다. PID 유연성 서비스는 클라이언트 프로세스와 서버 프로세스의 한 쪽이 종료될 때 대기 중인 다른 프로세스에 신호를 보내고 그 사실을 통지하는 메커니즘이 되도록 유연성 또는 결합을 클라이언트 프로세스와 서버 프로세스 사이에 생성하는데 사용된다.
본 발명에 따르면, 운영 체제(OS)의 각 프로세스는 프로세스 종료시 (신호를 통해서) 그 사실을 통지 받기 원하는 프로세스를 식별하는 PID 유연성 목록을 선택 사양으로 갖는다. PID 유연성 서비스는 클라이언트가 자신의 PID를 서버의 PID 유연성 목록에 추가하는 메커니즘 또는 서버가 자신의 PID를 클라이언트의 PID 유연성 리스트에 추가하는 메커니즘을 제공한다. 어느 프로세스가 PID 유연성 서비스를 사용할 것인지는 애플리케이션에 달려있다.
본 발명의 동작의 한 예로, 클라이언트가 메시지 대기 행렬(message queue)을 사용하여 서버에 요구를 보내려는 경우를 생각해보자. (msgsnd 시스템 호출을 발행해서) 서버의 입력 대기 행렬에 요구를 넣기 전에, 클라이언트는 자신의 PID를 서버의 PID 유연성 목록에 추가하는 PID 유연성 서비스를 호출한다. 그 후, 클라이언트는 msgsnd 시스템 호출을 발행하여, 서버의 입력 대기 행렬에 그 요구를 넣는다. 그 후, 클라이언트는 msgrcv 시스템 호출을 발행하여, 서버로부터의 응답을 기다린다. 이 메시지 대기 행렬에서 기다리는 동안, 서버가 종료될 수 있다. 이러한 일이 일어나면, 커널(kernel)은 PID 유연성 목록을 조사하고, PID 유연성 목록에 있는 (PID로 표시되는) 각 프로세스에 신호를 전송한다. 이 신호는 클라이언트 프로세스를 msgrcv 대기 상태로부터 깨워서 현재 요구를 실패로 처리하고 제어권을 호출측 프로세스로 되돌릴 수 있게 한다.
메시지 대기 행렬을 사용한 C/S 통신의 전술한 설명은 프로세스들이 통신할 수 있는 방법의 한가지 예에 불과하다. 이들 프로세스가 공유 메모리, 세마포 또는 임의의 다른 통신 메커니즘을 사용할 수도 있다. 이 예에서는 클라이언트와 서버를 간단한 단일 스레드형 프로세스(single-threaded process)로서 설명하고 있다. 서버를 다중 스레드로 하고, 복수의 클라이언트로부터의 많은 요구를 동시에 처리시키는 것도 가능하다. 만일 이러한 서버가 종료된다면, 자신의 PID 유연성 목록에 있는 모든 클라이언트에 그 사실이 통지된다.
도 1은 PID 유연성 서비스, 프로세스 정보 블록, 프로세스 식별자(PID) 유연성 목록으로 전달되는 파라미터 목록을 도시한 도면.
도 2는 다른 프로세스의 PID를 자신의 PID 유연성 목록에 추가하기 위한 순서와 논리 및 호출측 프로세스의 종료 결과를 도시한 도면.
도 3은 호출자의 PID를 타겟 프로세스의 PID 유연성 목록에 추가하기 위한 순서와 논리 및 타겟 프로세스의 종료에 의해 시작되는 동작을 도시한 도면.
도 4는 PID 유연성 서비스로 보내는 엔트리와 함께 엔트리 삭제 처리를 도시한 도면.
도 5는 PID 유연성 서비스의 엔트리 추가 논리를 도시한 도면.
도 2, 3을 참조하면, 본 발명의 바람직한 실시예는 시스템의 커널 주소 공간(204) 내에 PID 유연성 서비스(PID_AFFINITY)(221)를 포함하고, 상기 시스템은 또한 프로세스(206)(프로세스 A)와 프로세스(216)(프로세스 B)를 포함하는 하나 또는 그 이상의 사용자 주소 공간(202)을 갖는다. 커널 주소 공간(204)은 중앙 처리 장치(CPU), 주 기억 장치와 보조 기억 장치, 및 당해 기술 분야에서 종래부터 알려져 있고 그 때문에 여기에서는 도시하지 않는 여러 가지 주변 장치를 갖는 범용 컴퓨터 상에서 사용자 주소 공간(202) 내의 하나 또는 그 이상의 사용자 프로그램과 함께 실행되는 운영 체제(OS)의 커널(별도로 도시하지 않음)의 일부이다. 본 발명은 특정의 하드웨어 또는 소프트웨어 플랫폼에 제한되지는 않지만, S/390 Parallel Enterprise ServerTMG4 또는 G5 프로세서 등의 IBM S/390(등록상표) 프로세서 상에서 실행되는 IBM OS/390(등록상표) 운영체제의 일부로서 실장되는 것이 바람직하다.
도 1을 참조하면, 시스템의 각 프로세스는 자신과 관련된 프로세스 정보 블록(PIB)(114)을 갖는다. 각 PIB(114)는 프로세스를 고유하게 식별하는 프로세스 식별자(PID)(116) 및 PID 유연성 목록(PAL)(120)을 지시하는 포인터(118)뿐만 아니라, 본 발명과 관련이 없고 따라서 도시되지 않은 다른 항목들을 포함한다. PID를 목록(120)에 추가하는 PID 유연성 서비스(221)가 호출될 때마다, 엔트리(122)가 목록 안에 작성된다. 각 엔트리(221)는 이벤트를 통지받을 프로세스의 PID(124)와, 신호 번호가 될 수 있는 이벤트 종류(126)를 포함한다.
PID 유연성 파라미터 목록(PL)(100)은 애플리케이션 프로그램에 의해 지정되고 PID 유연성 서비스(221)에 입력되는 파라미터 및 PID 유연성 서비스(221)로부터 출력되는 파라미터를 포함한다. 이들 파라미터는 기능 코드(102), 타겟 프로세스 파라미터(104), 이벤트 프로세스 파라미터(106), 이벤트 파라미터(108), 리턴 코드(110)를 포함한다. 파라미터들(102-108)은 호출측 애플리케이션으로부터 PID 유연성 서비스(221)로 공급되는 입력 파라미터들이고, 리턴 코드(110)는 PID 유연성 서비스(221)로부터 호출측 애플리케이션으로 리턴되는 출력 파라미터이다.
기능 코드(102)는 애플리케이션 프로그램이 요구하고 있는 PID 유연성 서비스 기능을 지정한다. 지원된 기능 코드(102)는 엔트리(122)를 유연성 목록(120)에 추가하기도 하고 엔트리(122)를 유연성 목록(120)에서 삭제하기도 한다.
타겟 프로세스 파라미터(104)는 그 유연성 목록(120)이 기능 코드 파라미터(102)에 의해 지정된 오퍼레이션의 타겟인 타겟 프로세스(PID에 의해 식별되는)를 지정한다.
지정된 이벤트 프로세스 파라미터(106)의 사용 방법은 기능 코드 파라미터(102)의 지정에 따라 다르다. 이벤트 프로세스 파라미터(106)는 타겟 프로세스가 종료할 때 이벤트를 송달하는 프로세스를 식별한다. 애플리케이션이 엔트리(122)를 유연성 목록(120)에 추가하는 기능 코드(102)를 지정하는 경우에는, 이 파라미터의 내용(106)은 타겟 프로세스 파라미터(104)에 의해 지정된 프로세스의 유연성 목록(120) 내의 엔트리(124)에 복사된다. 애플리케이션이 유연성 목록(120)으로부터 엔트리(122)를 삭제하도록 기능 코드(102)를 지정하면, 이 파라미터의 내용(106)은 타겟 프로세스 파라미터(104)에 의해 지정된 프로세스의 유연성 목록(120)에 존재하는 엔트리(124)와 비교된다. 일치하는 프로세스 식별자(124)를 갖는 엔트리(122)가 발견되면, 그 엔트리는 소거되어 재사용될 수 있다.
이벤트 파라미터(108)는 타겟 프로세스(104)가 종료하는 경우에 생성하는 이벤트(126)를 지정한다. 기능 코드 파라미터(102)가 엔트리(122)의 삭제를 요구하고 있을 때에는 이 이벤트 파라미터(108)는 사용되지 않는다. 기능 코드 파라미터(102)가 엔트리(122)를 유연성 목록(120)에 추가하도록 지정하는 경우, 이 파라미터의 내용(108)은 타겟 프로세스 파라미터(104)에 의해 지정된 프로세스의 유연성 목록(120) 내의 엔트리(126)에 복사된다.
다섯 번째 파라미터(110)는 PID 유연성 서비스에 의해 생성된 리턴 코드를 포함한다. 리턴 코드는 PID 유연성 서비스의 성공 또는 실패를 애플리케이션 프로그램에 알려주는데 사용된다.
도 2는 클라이언트 프로그램이 자신의 PID를 서버의 PID 유연성 목록(120)에 추가하는 경우의 PID 유연성 서비스(221)의 사용법을 도시하고 있다. 도 2는 사용자 주소 공간(202)과 커널 주소 공간(204)을 도시하고 있다. 커널 주소 공간(204)은 애플리케이션이 다른 사용자 주소 공간(202)과 통신할 수 있도록 해주는 서비스가 제공되는 곳이다. 이 예에서, 사용자 주소 공간(202)은 서버 주소 공간(216)(프로세스 B)과 통신하는 클라이언트 주소 공간(206)(프로세스 A)을 포함한다.
클라이언트(206)는 초기에 작업 요구를 서버(216)에 할당한다(단계 208). 앞에서 논의한 바와 같이, 이것을 실시하는 하나의 수단은 메시지를 메시지 대기 행렬에 넣는 것이다. 단계 208에서 작업 요구를 할당한 후, 클라이언트(206)는 커널 주소 공간(204) 안의 대기 기능(212)을 호출하여 서버(216)의 응답을 기다린다(단계 210). 대기 기능(212)은 범용 대기 기능이거나, 메시지 또는 신호를 기디라는 msgrcv와 같은 기능이 될 수 있다. 이것은 유닉스 시스템에서의 표준적인 프로그래밍 관습이다. 상술한 바와 같이, 예를 들면, 본 명세서에 참조되어 본 발명의 일부를 이루고 저자가 W.R. Stevens이며 1990년에 출판한 책 "유닉스 네트웍 프로그래밍(UNIX Network Programming)"의 126-137면에 의하면, 유닉스 시스템에서는 메시지를 다른 프로세스로 보내고자 하는 프로세스가 msgsnd 시스템 호출을 발행하여, 메시지를 메시지 대기 행렬에 넣을 수 있다. 그 후, 이 다른 프로세스는 이것을 받아서 msgrcv 시스템 호출을 차례로 발행하여, 메시지 대기 행렬로부터 메시지를 추출할 수 있다.
프로세스 B로서 도시되어 있는 서버 공간(216)에서, 서버는 클라이언트(206)로부터 작업 요구를 수신한다(단계 218). 이것을 msgrcv와 같은 기능을 사용해서 실시하여, 단계 208에서 클라이언트(206)가 메시지 대기 행렬에 넣어진 메시지를 수신할 수 있다. 단계 218에서 작업 요구를 수신한 후, 서버(216)는 추가를 지정한 기능 코드(102), 프로세스 B(자신)의 타겟 프로세스 PID(104), 프로세스 A의 이벤트 프로세스(106), 및 특정 신호가 될 수 있는 이벤트(108)를 갖는 본 발명의 PID 유연성 서비스(pid_affinity)(221)를 호출한다(단계 220). 이 단계가 완료되면, 만일 어떤 일이 발생하여 서버 프로세스(216)를 종료하는 경우, 클라이언트 프로세스(206)가 요구된 이벤트(108)에 의해 통지 받았음이 보증된다.
다음으로, 서버(216)는 단계 208에서 할당된 작업 요구를 처리한다(단계 220). 오류가 발생하지 않는다고 가정하면, 서버(216)는 작업 요구를 처리하고(단계 222), 그 후 클라이언트(206)에게 완료를 통지한다(단계 226). 이 통지는 작업 요구의 결과와 함께 클라이언트(206)에게 메시지를 전송함으로써 실시될 수 있다. 서버(216)에서 나온 msgsnd는 msgrcv 대기(212) 중인 클라이언트(206)를 깨운다. 단계 226에서 클라이언트 프로세스(206)에 통지한 후, 서버(216)는 프로세스 B(216)(그 자신)로 설정된 타겟 프로세스(104)의 PID 유연성 목록(120) 안의 엔트리(122)를 삭제하는 기능 코드(102)로 PID 유연성 서비스(221)를 호출한다(단계 228). 이벤트 프로세스(106)는 프로세스 A(206)로 설정된다. PID 유연성 서비스(221)가 그 요구의 처리를 완료한 후, 클라이언트 프로세스(206)의 엔트리(122)는 서버 프로세스(216)의 PID 유연성 리스트(120)에서 삭제된다.
이 서버 처리 중에 종료 이벤트(224)가 발생하며, 서버가 단계 226에서의 작업 요구의 처리를 완료하지 못하게 되었다고 가정한다. 이 경우에는 커널(204)이 프로세스 종료(230)를 제어한다. 프로세스 종료(230)의 일부분으로서, 커널은 그 종료 프로세스(216)의 PID 유연성 목록(120)에 있는 모든 엔트리(122)를 처리한다. PID 유연성 목록(120)에 있는 엔트리가 채워지면(단계 232), 커널은 이벤트(126)를 생성하고, 그 이벤트(126)의 목표를 PID 유연성 목록(120)의 엔트리(122)에 있는 PID(124)로 한다.
단계(234)에서의 이벤트 생성에 의해 대기 상태(212)(단계 236)에 있는 타겟 프로세스(206)가 재개되어(단계 236), 프로세스 A(206)의 이벤트 출구(238)의 비정상 이벤트(126)의 송달이 개시된다. 이벤트 출구(238)에 있는 클라이언트 코드는 이것이 응답을 기다리고 있던 서버(216)(프로세스 B)의 종료를 통지받는다(단계 240). 그 후, 클라이언트 이벤트 출구(238)는 요구를 종료할 것인지 아니면 재시도할 것인지를 결정할 수 있다. 통지가 있었을 때 클라이언트가 무엇을 할지는 본 발명을 구성하지 아니하므로 설명하지 않는다.
도 3은 PID 유연성 서비스(221)에 의해 지원되는 다른 모델을 도시하고 있다. 이 경우에서는 클라이언트 프로세스(302)(프로세스 C)가 곧 통신할 서버 프로세스(320)(프로세스 D)의 PID를 결정한다. 이것은 공유 메모리, 구성 파일, 또는 본 발명과 관련이 없는 기타의 수단들을 이용하여 실시될 수 있다. 그 후, 클라이언트 프로세스(302)는 추가의 기능 코드(102), 프로세스 D(320)(서버)를 타겟으로 하는 타겟 프로세스 PID(104), 프로세스 C(302)(클라이언트 자신)로 설정된 이벤트 프로세스(106), 및 그 요구를 처리하고 있는 동안에 서버(320)가 종료한 경우에 수신하고자 하는 이벤트(108)를 갖는 PID 유연성 서비스(221)를 호출한다(단계 304).
클라이언트(302)는 그 후, 메시지 대기 행렬 또는 기타의 통신 메커니즘을 통하여 서버 프로세스(320)에 작업을 할당한다(단계 306). 클라이언트(302)는 그 후, 대기 서비스(212)를 호출하여 서버(320)로부터의 응답을 기다린다(단계 308). 대기 서비스(212)는 요구의 기능이 완료되거나 비정상 이벤트가 수신될 때까지 클라이언트(302)를 수면 상태에 놓는다.
그 동안에 서버(320)는 작업 요구를 수신하고(단계 322), 작업을 처리한다(단계 324). 모든 작업이 성공적으로 수행되면, 서버(320)는 클라이언트(302)에 작업의 완료를 통지한다(단계 328). 단계 328에서의 통지에 의해, 클라이언트 프로세스(302)는 성공을 표시하는 리턴 코드로 대기 기능(212)을 빠져나가게 한다. 대기 상태로부터 되돌아와 제어를 회복하면, 클라이언트(302)는 단계 304에서 실시된 호출을 취소하는(단계 310) PID 유연성 서비스(221)를 호출한다. 단계 310에서의 호출은 기능 코드(102)를 삭제 요구로 설정하고, 타겟 프로세스 파라미터(104)가 서버 프로세스 D(320)를 식별하며, 이벤트 프로세스 파라미터(106)가 상기 클라이언트(302)를 식별한다.
종료 이벤트(326)가 서버(320)에서 발생하면, 프로세스 종료 서비스(process_term)(230)가 개시된다. 프로세스 종료 서비스(230)는 서버 프로세스 D(320)의 PID 유연성 목록(120) 안의 각 엔트리에 대해 수행되고(단계 232), 이것이, 요구된 이벤트(126)를 생성하여, 타겟 PID(124)로 송달된다(단계 224). 이 경우에, 타겟 PID(124)는 클라이언트 프로세스 C(302)를 식별하고, 이벤트(126)는 단계 304에서 이벤트 파라미터(108)에 전달되는 것이다.
이벤트가 단계 234에서 생성되는 경우, 그에 의해, 클라이언트 프로세스 C(302)가 중단한 대기(212)로부터 발췌된다(단계 340). 대기 기능(212)은 단계 308 후에 호출자에게 리턴되는 대신, 제어권을 이벤트 출구(311)로 넘긴다. 이벤트 출구(311)는 서버 프로세스(D)의 종료를 통지받는다(단계 312). 이 시점에서, 클라이언트 코드(302)는 요구를 종료시키든지, 재실행 하든지 또는 다른 서비스를 요구할 수 있다.
도 4는 PID 유연성 서비스(221)의 처리를 도시하고 있다. 최초에, 서비스(221)는 호출자의 파라미터가 타당한지를 검사한다(단계 402). 기능 코드(102), 타겟 프로세스 PID(104), 이벤트 프로세스 PID(106), 또는 이벤트(108)가 무효이면, 서비스(221)는 고유의 실패 리턴 코드를 설정하고(단계 404) 호출자에게 리턴된다(단계 406). 모든 파라미터가 유효하다고 가정하면, 서비스(221)는 타겟 프로세스(104)를 프로세스 잠금 처리한다(단계 408). 이 잠금 처리에 의해, 다중 호출자에 대한 타겟 프로세스(104)의 PID 유연성 목록(120)(이하, PAL이라고 부름)의 갱신이 축차적으로 행해진다.
타겟 프로세스(104)가 아직 PAL(120)을 갖고 있지 않으면(단계 410), PAL(120)용의 기억부가 획득되고, PAL(120)의 위치가 프로세스 정보 블록(PIB)(114)의 필드(116)에 저장된다(단계 412). 다음으로, 추가 처리가 요구되고 있는지 또는 삭제 처리가 요구되고 있는지를 판정하기 위해 기능 코드(102)가 테스트된다(단계 416). 추가 처리가 요구되고 있는 경우, 처리는 도 5에 설명된 바와 같다(단계 418).
삭제 처리의 경우, 입력된 이벤트 프로세스 PID(106)와 일치하는 PID(124)를 가진 엔트리(122)를 찾기 위해 PAL(120)을 스캐닝한다(단계 414). 일치되는 엔트리가 발견되면(단계 420), 그 엔트리(122)는 소거되고, PAL(120)에 있는 마지막 엔트리(122)는 소거된 엔트리로 이동되어, 테이블은 빈틈 없는 상태로 유지된다(단계 422). 그 후, 프로세스 잠금은 해제되고, 제어권은 호출자에게 리턴된다(단계 406). 엔트리(122)가 발견되지 않으면, 삭제 단계 422가 실행되지 않고 프로세스 잠금이 해제되어, 제어권은 호출자에게 리턴된다(단계 406).
도 5는 엔트리를 PAL(120)에 추가하는 처리를 도시하고 있다. 타겟 프로세스 PID(104)가 테스트되어, 호출자의 PID(116)와 동일한지의 여부가 판정된다(단계 502). 양자의 PID가 일치하면, 호출측 프로세스가 종료되는 경우에, 이벤트 프로세스(106)로 신호(이벤트 108)가 송달되는 것을 의미한다. 엔트리(122)를 PAL(120)에 추가하기 전에, 호출측 프로세스가 신호(이벤트 108)를 이벤트 프로세스(106)에 보낼 수 있는지의 여부를 판정하기 위한 검사가 실시된다(단계 504). 호출자가 신호(이벤트 108)를 전송하는 것이 허용되지 않으면, 서비스는 에러 코드를 설정하고(단계 508), 프로세스 잠금을 해제하여 호출자에게 리턴된다(단계 518).
초기 검사 후, 코드는 PAL(120) 전체에 걸쳐 루프를 수행한다(단계 506). PAL(120) 안의 엔트리(122)를 조사하여, 현재 PID(124)가 이벤트 PID(108)와 동일하면(단계 510), 이벤트 PID(106)를 엔트리(124) 내의 PID 상에 저장하고, 이벤트(108)를 엔트리(122) 내의 이벤트(126) 상에 저장함으로써 엔트리(122)가 오버레이된다(단계 512). 단계 510에서 PID가 일치되지 않으면, 그리고 PAL(120)에 다른 엔트리가 있으면(단계 514), 단계 506에서 루프가 계속된다.
이벤트 PID(106)가 PAL 안에서 발견되지 않으면, 새 엔트리(122)가 선택된다. 이것은 통상적으로 PAL(120) 내의 사용되지 않은 다음번 엔트리(122)를 사용하는 것에 불과하다. PAL(120)이 모두 채워지면, 더 큰 새로운 PAL이 획득되고, 이전의 PAL은 새로운 PAL에 복사되며, 새로운 PAL의 주소는 PIB(114)의 필드(116)에 저장된다. 프로세스는 잠겨있으므로(단계 408), 이 동작은 안전하게 수행될 수 있다. 이전의 PAL을 새로운 PAL에 복사한 후에, 이전의 PAL은 자유롭게 된다. 그 후, 단계 512에서와 같이 PAL 안의 미사용 엔트리(122)를 사용하여 새로운 엔트리가 저장된다. 프로세스 잠금은 해제되고 제어권은 호출자에게 리턴된다(단계 518).
본 발명의 특정한 실시예가 도시되고 설명되었지만 추가한 청구항의 범위 내에서 여러 가지 변경과 확장이 이루어질 수 있다는 것은 당업자에게 명백하다.
본 발명에 따르면, 운영 체제(OS)의 각 프로세스는 선택 사양으로 프로세스 종료시 (신호를 통해서) 그 사실을 통지 받기 원하는 프로세스를 식별하는 PID 유연성 목록을 갖는다. 따라서 클라이언트가 서버로부터 응답을 기다리고 있는데 서버가 종료되면, 대기 클라이언트 프로세스에 종료 통지를 보내므로 클라이언트 프로세스는 사용자나 오퍼레이터가 클라이언트 프로세스 종료 요구를 보낼 때까지 대기 상태로 행업되지 않고 작업을 계속 수행할 수 있다.

Claims (15)

  1. 복수의 대화형 작업을 갖는 정보 처리 시스템에서 작업 종료를 통지하는 방법으로써,
    a) 하나 이상의 각 타겟 작업마다 상기 타겟 작업의 종료시에 통지를 받아야 할 다른 작업의 하나 이상의 엔트리를 포함하는 유연성 목록을 정의하는 단계와,
    b) 타겟 작업 및 다른 작업을 지정하는 유연성 요구를 수신하는 것에 응답하여, 상기 타겟 작업에 관해 정의된 유연성 목록에 나머지 다른 작업의 엔트리를 추가하는 단계와,
    c) 타겟 작업의 종료를 검출하는 것에 응답하여, 상기 타겟 작업에 관해 정의된 상기 유연성 목록에 포함되는 나머지 다른 각각의 작업에 통지하는 단계
    를 포함하는 것인 작업 종료 통지 방법.
  2. 제1항에 있어서,
    상기 유연성 요구가 상기 타겟 작업으로부터 나오는 것인 작업 종료 통지 방법.
  3. 제1항에 있어서,
    상기 유연성 요구가 상기 다른 타겟 작업으로부터 나오는 것인 작업 종료 통지 방법.
  4. 제1항에 있어서,
    상기 유연성 요구는 제1 형태를 가지며, 상기 방법은,
    타겟 작업 및 다른 작업을 지정하는 제2 형태의 유연성 요구를 수신한 것에 응답하여, 상기 타겟 작업에 관해 정의된 상기 유연성 목록으로부터 나머지 다른 작업의 엔트리를 삭제하는 단계를 더 포함하는 것인
    작업 종료 통지 방법.
  5. 제1항에 있어서,
    상기 추가 단계는,
    a) 유연성 목록이 상기 타겟 작업에 관해서 이미 정의되었는지의 여부를 판정하는 단계와,
    b) 유연성 목록이 상기 타겟 작업에 관해서 이미 정의되어 있다면, 상기 타겟 작업에 관해 정의된 유연성 목록에 나머지 다른 작업의 엔트리를 추가하는 단계와,
    c) 유연성 목록이 상기 타겟 작업에 관해서 미리 정의되어 있지 않다면, 상기 타겟 작업에 관해 유연성 목록을 정의하고, 상기 타겟 작업에 관해 정의된 유연성 목록에 나머지 다른 작업의 엔트리를 추가하는 단계
    를 포함하는 것인 작업 종료 통지 방법.
  6. 제1항에 있어서,
    상기 작업이 별개의 주소 공간을 갖는 프로세스인 것인 작업 종료 통지 방법.
  7. 제1항에 있어서,
    상기 작업은 사용자 작업이며, 상기 단계들은 운영체제 커널에 의해 수행되는 것인 작업 종료 통지 방법.
  8. 제1항에 있어서,
    상기 유연성 요구가 상기 타겟 프로세스에 관해 정의된 상기 유연성 목록 상에서 수행되는 동작의 형태를 지정하는 것인 작업 종료 통지 방법.
  9. 제1항에 있어서,
    상기 유연성 요구가 상기 타겟 작업의 종료시에 상기 나머지 다른 작업을 위해 생성되는 이벤트를 지정하는 것인 작업 종료 통지 방법.
  10. 복수의 대화형 작업을 갖는 정보 처리 시스템에서 작업 종료를 통지하는 장치로써,
    a) 하나 이상의 각 타겟 작업마다 상기 타겟 작업의 종료시에 통지를 받아야 할 다른 작업의 하나 이상의 엔트리를 포함하는 유연성 목록을 정의하는 수단과,
    b) 타겟 작업 및 다른 작업을 지정하는 유연성 요구를 수신한 것에 응답하여, 나머지 다른 작업의 엔트리를 상기 타겟 작업에 관해 정의된 유연성 목록에 추가하는 수단과,
    c) 타겟 작업의 종료를 검출한 것에 응답하여 상기 타겟 작업에 관해 정의된 상기 유연성 목록에 포함되는 나머지 다른 각각의 작업에 통지하는 수단
    을 포함하는 것인 작업 종료 통지 장치.
  11. 제10항에 있어서,
    상기 유연성 목록은 제1 형태를 가지며, 상기 장치는,
    타겟 작업 및 다른 작업을 지정하는 제2 형태의 유연성 요구를 수신한 것에 응답하여, 타겟 작업에 관해 정의된 상기 유연성 목록으로부터 나머지 다른 작업의 엔트리를 삭제하는 수단을 더 포함하는 것인 작업 종료 통지 장치.
  12. 제10항에 있어서,
    상기 추가 수단은,
    a) 유연성 목록이 상기 타겟 작업에 관해서 이미 정의되었는지의 여부를 판정하는 수단과,
    b) 유연성 목록이 상기 타겟 작업에 관해서 이미 정의되어 있다면, 상기 타겟 작업에 관해 정의된 유연성 목록에 나머지 다른 작업의 엔트리를 추가하는 수단과,
    c) 유연성 목록이 상기 타겟 작업에 관해서 미리 정의되어 있지 않다면, 상기 타겟 작업에 관해 유연성 목록을 정의하고, 상기 타겟 작업에 관해 정의된 유연성 목록에 나머지 다른 작업의 엔트리를 추가하는 수단
    을 포함하는 것인 작업 종료 통지 장치.
  13. 머신으로 판독 가능하며, 작업 종료를 통지하기 위한 방법 단계를 실행하는 머신 실행 가능한 명령 프로그램을 유형으로 구현하는 프로그램 기억 장치로써,
    상기 방법 단계는,
    a) 하나 이상의 각 타겟 작업마다 상기 타겟 작업의 종료시에 통지를 받아야 할 다른 작업의 하나 이상의 엔트리를 포함하는 유연성 목록을 정의하는 단계와,
    b) 타겟 작업 및 다른 작업을 지정하는 유연성 요구를 수신한 것에 응답하여, 상기 타겟 작업에 관해 정의된 유연성 목록에 나머지 다른 작업의 엔트리를 추가하는 단계와,
    c) 타겟 작업의 종료를 검출한 것에 응답하여, 상기 타겟 작업에 관해 정의된 상기 유연성 목록에 포함되는 나머지 다른 각각의 작업에 통지하는 단계
    를 포함하는 것인 프로그램 기억 장치.
  14. 제13항에 있어서,
    상기 유연성 요구는 제1 형태를 가지며,
    상기 방법 단계는 타겟 작업 및 다른 작업을 지정하는 제2 형태를 갖는 유연성 요구 수신에 응답하여 상기 타겟 작업을 위해 정의된 유연성 목록으로부터 나머지 다른 작업에 대한 엔트리를 삭제하는 단계를 더 포함하는 프로그램 기억장치.
  15. 제13항에 있어서,
    a) 유연성 목록이 상기 타겟 작업을 위해서 이미 정의되었는지의 여부를 결정하는 단계와,
    b) 유연성 목록이 상기 타겟 작업을 위해서 이미 정의되어 있다면, 상기 타겟 작업을 위해 정의된 유연성 목록에 나머지 다른 작업에 대한 엔트리를 추가하는 단계와, 및
    c) 유연성 목록이 상기 타겟 작업을 위해서 미리 정의되어 있지 않다면, 상기 타겟 작업을 위한 유연성 목록을 정의하고, 상기 타겟 작업을 위해 정의된 유연성 목록에 나머지 다른 작업에 대한 엔트리를 추가하는 단계
    로 구성되는 추가 단계
    를 포함하는 프로그램 기억 장치.
KR1019990013280A 1998-05-18 1999-04-15 작업 종료를 통지하기 위한 방법 및 장치 KR100346667B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/080,504 US6907605B1 (en) 1998-05-18 1998-05-18 Method and apparatus for providing for notification of task termination
US9/080,504 1998-05-18
US09/080,504 1998-05-18

Publications (2)

Publication Number Publication Date
KR19990087928A KR19990087928A (ko) 1999-12-27
KR100346667B1 true KR100346667B1 (ko) 2002-07-31

Family

ID=22157811

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990013280A KR100346667B1 (ko) 1998-05-18 1999-04-15 작업 종료를 통지하기 위한 방법 및 장치

Country Status (4)

Country Link
US (1) US6907605B1 (ko)
EP (1) EP0959406A3 (ko)
JP (1) JP3701816B2 (ko)
KR (1) KR100346667B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018089339A1 (en) * 2016-11-10 2018-05-17 Trilliant Networks, Inc. Method and system for affinity load balancing

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7603448B2 (en) 2000-12-15 2009-10-13 Wind River Systems, Inc. System and method for managing client processes
US7702800B2 (en) 2000-12-18 2010-04-20 International Business Machines Corporation Detecting and handling affinity breaks in web applications
US6807606B2 (en) 2000-12-18 2004-10-19 International Business Machines Corp. Distributed execution coordination for web caching with dynamic content
US6823360B2 (en) 2000-12-18 2004-11-23 International Business Machines Corp. Cofetching in a command cache
US6877025B2 (en) 2000-12-18 2005-04-05 International Business Machines Corp. Integrated JSP and command cache for web applications with dynamic content
US8423674B2 (en) * 2001-06-02 2013-04-16 Ericsson Ab Method and apparatus for process sync restart
GB2395578A (en) * 2002-11-22 2004-05-26 Ibm Fault tracing in systems with virtualization layers
US7558986B2 (en) * 2005-05-26 2009-07-07 United Parcel Service Of America, Inc. Software process monitor
US8332826B2 (en) * 2005-05-26 2012-12-11 United Parcel Service Of America, Inc. Software process monitor
US7823021B2 (en) * 2005-05-26 2010-10-26 United Parcel Service Of America, Inc. Software process monitor
US20120331469A1 (en) * 2011-06-21 2012-12-27 Motorola Mobility, Inc. Gracefully shutting down a computer process
CN104063288B (zh) * 2013-03-22 2016-05-25 腾讯科技(深圳)有限公司 进程管理方法及装置
CN106020958A (zh) * 2016-05-17 2016-10-12 北京金山安全软件有限公司 一种获取文件占用进程的方法、装置及电子设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4980824A (en) * 1986-10-29 1990-12-25 United Technologies Corporation Event driven executive
US5060150A (en) * 1987-01-05 1991-10-22 Motorola, Inc. Process creation and termination monitors for use in a distributed message-based operating system
US5390329A (en) 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US5230051A (en) * 1990-09-04 1993-07-20 Hewlett-Packard Company Distributed messaging system and method
US5249291A (en) * 1990-11-20 1993-09-28 International Business Machines Corporation Method and apparatus for consensual delegation of software command operations in a data processing system
EP0490595B1 (en) * 1990-12-14 1998-05-20 Sun Microsystems, Inc. Method for operating time critical processes in a window system environment
US5305455A (en) * 1990-12-21 1994-04-19 International Business Machines Corp. Per thread exception management for multitasking multithreaded operating system
JP3128898B2 (ja) 1991-11-05 2001-01-29 富士通株式会社 タスク終了処理装置
US5317738A (en) * 1992-02-18 1994-05-31 Ncr Corporation Process affinity scheduling method and apparatus
US5515538A (en) 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
JP2519390B2 (ja) * 1992-09-11 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション デ―タ通信方法及び装置
EP0592080A2 (en) * 1992-09-24 1994-04-13 International Business Machines Corporation Method and apparatus for interprocess communication in a multicomputer system
US5452459A (en) * 1993-01-08 1995-09-19 Digital Equipment Corporation Method and apparatus for allocating server access in a distributed computing environment
JP3527765B2 (ja) 1993-11-29 2004-05-17 富士通株式会社 プログラムキャッシュ装置
JP2682811B2 (ja) 1994-03-22 1997-11-26 インターナショナル・ビジネス・マシーンズ・コーポレイション データ記憶管理システム及び方法
US5801690A (en) * 1995-03-24 1998-09-01 Motorola, Inc. Method for managing termination of a multi-processing software application
CA2146170C (en) * 1995-04-03 2001-04-03 Matthew A. Huras Server detection of client process termination
US5960178A (en) * 1997-08-08 1999-09-28 Bell Communications Research, Inc. Queue system and method for point-to-point message passing having a separate table for storing message state and identifier of processor assigned to process the message

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018089339A1 (en) * 2016-11-10 2018-05-17 Trilliant Networks, Inc. Method and system for affinity load balancing
US10616317B2 (en) 2016-11-10 2020-04-07 Trilliant Networks, Inc. Method and system for affinity load balancing

Also Published As

Publication number Publication date
JPH11345131A (ja) 1999-12-14
EP0959406A3 (en) 2008-02-13
KR19990087928A (ko) 1999-12-27
EP0959406A2 (en) 1999-11-24
JP3701816B2 (ja) 2005-10-05
US6907605B1 (en) 2005-06-14

Similar Documents

Publication Publication Date Title
KR100346667B1 (ko) 작업 종료를 통지하기 위한 방법 및 장치
US5564051A (en) Automatic update of static and dynamic files at a remote network node in response to calls issued by or for application programs
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
US5377350A (en) System for cooperative communication between local object managers to provide verification for the performance of remote calls by object messages
US6868442B1 (en) Methods and apparatus for processing administrative requests of a distributed network application executing in a clustered computing environment
EP0436559B1 (en) Data processing network
AU746391B2 (en) Method and system for facilitating distributed software development in a distribution unaware manner
US7124409B2 (en) Automatic software installation on heterogeneous networked computer systems
US20020162049A1 (en) Method for correcting a program running on computer system
US6470346B2 (en) Remote computation framework
JP2001522086A (ja) 宣言型パラダイムをサポートするステートレスなウェブ環境におけるトランザクションを実行するための方法および装置
JP4056465B2 (ja) マルチスレッド・アプリケーションにおけるスレッド実行を管理するための方法及び装置
JPH07141206A (ja) プロセス境界にまたがってオブジェクト間の通信を行う方法及びシステム
JPH06202996A (ja) 加入者分散2相コミット・プロトコルの拡張機能
WO2002048886A2 (en) Telecommunications platform with processor cluster and method of operation thereof
JPH09259002A (ja) デバッグ支援装置
US6735716B1 (en) Computerized diagnostics and failure recovery
JP2002505474A (ja) ルックアップ・サービスに対するアクセスを容易にするための方法及びシステム
JP3670017B2 (ja) 分散型多重プロセッサにおける順序付けされた信頼できる信号送出
Fagg et al. Taskers and general resource managers: PVM supporting DCE process management
JPH0799674A (ja) 情報処理装置の部分ファイル更新方式
JP3586943B2 (ja) プログラムロード装置と方法
JPH07219789A (ja) 複数スレッド・システムにおける外部事象を処理する方法
KR100332050B1 (ko) 응용 프로그램의 시스템 명령어 실시간 수행장치 및 방법
JPH1021099A (ja) コンピュータシステムおよびプロセス実行制御方法

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: 20090701

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee