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

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

Info

Publication number
KR19990087928A
KR19990087928A KR1019990013280A KR19990013280A KR19990087928A KR 19990087928 A KR19990087928 A KR 19990087928A KR 1019990013280 A KR1019990013280 A KR 1019990013280A KR 19990013280 A KR19990013280 A KR 19990013280A KR 19990087928 A KR19990087928 A KR 19990087928A
Authority
KR
South Korea
Prior art keywords
flexibility
list
target task
target
job
Prior art date
Application number
KR1019990013280A
Other languages
English (en)
Other versions
KR100346667B1 (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) 시스템에서 프로세스 종료 통지를 제공하기 위한 방법 및 장치에 관한 것이다.
클라이언트/서버 컴퓨팅 시스템은 잘 알려진 기술이다. 클라이언트/서버 시스템에서, 클라이언트 프로세스(또는 간단히 "클라이언트")는 동일 시스템 또는 다른 시스템 중 어느 하나의 시스템 상에서 특정 서비스를 수행하도록 서버 프로세스(또는 간단히 "서버")에 요구를 발행한다. 이 요구를 수신하면, 서버 프로세스는 요구된 서비스를 수행하고 응답 결과를 클라이언트 프로세스로 보낸다.
단일 시스템에서 클라이언트/서버 응용 프로그램을 작성할 경우, 클라이언트가 서버에 요구를 보내고 서버의 응답을 기다려야 하는 경우가 자주 있다. 마찬가지로 복수의 클라이언트 프로세스와의 통신을 필요로 하는 복수의 서버 프로세스가 있을 수 있다. 클라이언트가 서버로부터 응답을 기다리고 있는데 서버가 종료되면, 클라이언트 프로세스는 사용자나 오퍼레이터가 클라이언트 프로세스 종료 요구를 보낼 때까지 대기 상태로 행업될 수 있다. 마찬가지로 서버가 클라이언트로부터의 응답을 기다리고 있는데, 서버가 클라이언트를 종료시킬 수 있다. 클라이언트와 서버 양자는 일정 시간이 경과하면 대기를 중단하는 타이머 호출 기능을 로직에 추가 할 수 있지만, 그 경우 경로가 불필요하게 길어지고, 적당한 시간 간격을 결정하기 위한 클라이언트나 서버의 애플리케이션이 요구된다.
유닉스(UNIX) 기반 시스템에서는, 복수의 프로세스들 사이의 연결을 계속 추적하는데 사용될 수 있는 여러 가지 프로그래밍 구조가 있다. 애플리케이션이 자식 프로세스(child process)를 생성하기 위해 포크 함수(fork())나 스폰 함수(spawn())를 사용하면, 그 두 프로세스는 유닉스 구조(framework)에 의해 함께 묶인다. 즉, 자식 프로세스가 종료되면 부모 프로세스(parent process)에 SIGCHLD 신호가 전송된다. 부모 프로세스가 종료되면, 자식프로세스에 SIGHUP 신호가 전송된다. 그러나 대화형(interacting) 서버와 클라이언트 프로세스는 일반적으로 이러한 부모 자식 관계에 의해 묶이지 않으므로, 이러한 메커니즘은 유닉스 기반 시스템에서 일반적인 통지 메커니즘으로는 거의 사용되지 않는다.
상기 문제에 대한 해결책은 이하에 설명하는 본 발명의 PID 유연성(affinity) 서비스에 의해 제공된다. 용어 PID는 프로세스 식별자(process id: PID)를 나타낸다. 서버 프로세스와 클라이언트 프로세스는 모두 고유의 PID를 갖는다. PID 유연성 서비스는 클라이언트 프로세스와 서버 프로세스 간의 유연성 또는 결합(bond)을 생성하는데 사용되므로, 한 프로세스가 종료되면 다른 대기 프로세스에 그 사실을 통지하는 신호를 공급하는 메커니즘이 제공된다.
본 발명에 따르면, 운영 체제(OS)의 각 프로세스는 선택 사양으로 프로세스 종료시 (신호를 통해서) 그 사실을 통지 받기 원하는 프로세스를 식별하는 PID 유연성 목록을 갖는다. PID 유연성 서비스는 클라이언트가 자신의 PID를 서버의 PID 유연성 목록에 추가하는 메커니즘 또는 서버가 자신의 PID를 클라이언트의 PID 유연성 리스트에 추가하는 메커니즘을 제공한다. 어느 프로세스가 PID 유연성 서비스를 사용할 것인지는 애플리케이션에 달려있다.
본 발명의 동작의 한 예로, 클라이언트가 메시지 큐(message queue)를 사용하여 서버에 요구를 시작하려는 경우를 생각해보자. (msgsnd 시스템 호출을 발행해서) 서버의 입력 큐 상에 요구를 놓기 전에, 클라이언트는 자신의 PID를 서버의 PID 유연성 목록에 추가하기 위해 PID 유연성 서비스를 호출한다. 그 후 클라이언트는 서버의 입력 큐에 요구를 놓기 위해 msgsnd 시스템 호출을 발행한다. 그 후 클라이언트는 서버로부터의 응답을 기다리기 위해 msgrcv 시스템 호출을 발행한다. 이 메시지 큐를 기다리는 동안, 서버가 종료될 수 있다. 이러한 일이 일어나면, 커널(kernel)은 PID 유연성 목록을 보고 그 목록에 있는 각 프로세스(PID로 표시됨)에 신호를 전송한다. 이러한 신호는 클라이언트 프로세스를 msgrcv 대기 상태에서 깨워서 현재 요구를 실패(fail)로 처리하고 제어권을 호출 프로세스로 되돌린다.
메시지 큐를 사용한 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)를 포함하는데, 상기 시스템은 또한 프로세스 A(206)와 프로세스 B(216)를 포함하는 하나 이상의 사용자 주소 공간(202)을 갖는다. 커널 주소 공간(204)은 운영 체제 커널(별도로 도시하지 않음)의 일부분이며, 그 커널은 사용자 주소 공간(202) 내의 하나 이상의 사용자 프로그램과 함께, 중앙 처리 장치를 갖는 범용 컴퓨터, 주 기억 장치와 보조 기억 장치, 및 통상의(그래서 예시하지 않음) 여러 가지 주변 장치 상에서 실행된다. 본 발명이 특정 하드웨어 플랫폼이나 소프트웨어 플랫폼에 제한되지는 않지만, 바람직한 실시예는 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 유연성 파라미터 목록(PID_AFFINITY PARAMETER LIST; 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)는 (타겟 프로세스의 PID로 식별되는 바와같이) 타겟 프로세스를 지정하는데, 그 타겟 프로세스의 유연성 목록(120)은 함수 코드 파라미터(102)에 의해 지정된 동작의 타겟이다.
지정된 이벤트 프로세스 파라미터(106)는 지정된 함수 코드 파라미터(102)에 기초한 서로 다른 용도를 갖는다. 이벤트 프로세스(106)는 타겟 프로세스가 종료될 경우 이벤트가 전달되는 프로세스를 식별한다. 애플리케이션이 엔트리(122)를 유연성 목록(120)에 추가하도록 함수 코드 파라미터(102)를 지정할 경우, 해당 파라미터의 내용(106)은 타겟 프로세스 파라미터(104)에 의해 지정된 프로세스의 유연성 목록(120)에 있는 엔트리(124) 내로 복사된다. 애플리케이션이 유연성 목록(120)에서 엔트리(122)를 지우도록 함수 코드 파라미터(102)를 지정하면, 상기 파라미터의 내용(106)은 타겟 프로세스 파라미터(104)에 의해 지정된 프로세스의 유연성 목록(120)에 있는 기존 엔트리(124)와 비교된다. 매칭 프로세스 식별자(124)를 갖는 엔트리(122)가 발견되면, 그 엔트리는 소거되고 재사용될 수 있다.
이벤트 파라미터(108)는 타겟 프로세스(104)가 종료될 경우 생성될 이벤트(126)를 지정한다. 이러한 이벤트 파라미터(108)는 함수 코드 파라미터(102)가 엔트리(122)의 삭제를 요구할 경우에는 사용되지 않는다. 함수 코드 파라미터(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)(단계 210)에 있는 대기 함수(WAIT)(212)를 호출하여 서버(216)의 응답을 기다린다. 대기 함수(212)는 범용 대기 함수이거나, 메시지나 신호를 대기하는 msgrcv와 같은 함수가 될 수 있다. 이것은 유닉스 시스템에서 실행되는 표준 프로그래밍의 구현 예이다. 상술한 바와 같이, 예를 들면, 본 명세서에 참조되어 본 발명의 일부를 이루는 W.R. Stevens가 1990년에 출판한 유닉스 네트웍 프로그래밍(UNIX Network Programming), 126-137면에는, 유닉스 시스템에서 메시지를 다른 프로세스로 전송하고자하는 프로세스는 메시지를 메시지 큐에 놓기 위해서 msgsnd 시스템 호출을 발행할 수 있다. 그 후 상기 다른 프로세스는 메시지 큐에서 메시지를 가져오기 위해 msgrcv 시스템 호출을 차례로 발행할 수 있다.
프로세스 B로 도시된 서버 공간(216)에서, 서버는 클라이언트(206)(단계 218)로부터 작업 요구를 수신한다. 이것은 단계(208)에서 클라이언트(206)에 의해 메시지 큐에 놓여진 메시지를 수신하기 위해 msgrcv와 같은 함수를 사용하여 달성된다. 단계(218)에서 작업 요구를 수신한 후, 서버(216)는 추가할 함수 코드(102), 프로세스 B(자신)의 타겟 프로세스 PID(104), 프로세스 A의 이벤트 프로세스(106), 특정 신호가 될 수 있는 이벤트(108)와 함께 본 발명의 PID 유연성 서비스(pid_affinity)(221)를 호출한다. 일단 이 단계(218)가 완료되고, 서버 프로세스(216)를 종료하는 임의의 이벤트가 발생하면, 클라이언트 프로세스(206)가 요구된 이벤트(108)에 의해 통지 받았음이 보증된다.
다음으로, 서버(216)는 단계(208)에 할당된 작업 요구를 처리한다(단계 220). 오류가 발생하지 않았다고 가정하면, 서버(216)는 작업 요구를 처리하고(단계 222), 그 후 클라이언트(206)에게 완료를 통지한다(단계 226). 이것은 작업 요구의 결과와 함께 클라이언트(206)에게 메시지를 전송함으로써 달성된다. 서버(216)에서 나온 msgsnd 함수는 msgrcv 대기 상태(212)에 있는 클라이언트(206)를 깨운다. 단계(226)에서 서버(216)는 클라이언트 프로세스(206)에게 통지한 후, 함수 코드(102)와 함께 PID 유연성 서비스(221)를 호출하여 프로세스 B(216)(그 자신)(단계 228)로 설정된 타겟 프로세스(104)에 대한 PID 유연성 목록(120)에 있는 엔트리(122)를 삭제한다. 이벤트 프로세스(106)는 프로세스 A(206)로 설정된다. PID 유연성 서비스(221)가 요구를 완료한 후, 클라이언트 프로세스(206)에 대한 엔트리(122)는 서버 프로세스(216)에 대한 PID 유연성 리스트(120)에서 삭제된다.
상기 서버의 프로세스가 처리되는 동안, 서버가 단계(226)에서 작업 요구가 완료되지 못하도록 방지하는 종료 이벤트(224)가 발생했다고 가정하자. 이 경우 커널(204)은 프로세스 종료(230)에서 제어권을 갖는다. 프로세스 종료(230)의 일부분으로, 커널은 프로세스(216)를 종료하기 위한 PID 유연성 목록(120)에 있는 임의의 엔트리(122)를 다룬다. PID 유연성 목록(120)에 있는 엔트리가 채워지면(단계 232), 커널은 이벤트(126)을 생성하고, PID 유연성 목록(120)의 엔트리(122)에 있는 PID(124)에 대한 상기 이벤트(126)를 목표로 삼는다.
단계(234)에서 이벤트가 생성되면 타겟 프로세스(206)가 대기 상태(212)(단계 236)에서 동작 재개되도록 하여, 프로세스 A(206)의 이벤트 출구(EVENT_EXIT)(238)로 비정상 이벤트(126)의 전달을 트리거한다. 서버로부터 응답 대기 중이던 이벤트 출구(238)에 있는 클라이언트 코드는 서버(216)(프로세스 B)의 종료를 통지받는다(단계 240). 그 후 클라이언트 이벤트 출구(238)는 요구를 종료할 것인지 아니면 재시도할 것인지를 결정할 수 있다. 클라이언트가 통지를 받는 경우 클라이언트가 해야 할 동작은 본 발명을 구성하지 아니하므로 본 명세서에서 상세히 설명되지는 않는다.
도 3은 PID 유연성 서비스(221)에 의해 지원되는 다른 모델을 도시하고 있다. 이 경우 클라이언트 프로세스(302)(프로세스 C)는 곧 통신을 시작할 서버 프로세스(320)(프로세스 D)의 PID를 결정한다. 이것은 공유 메모리, 구성 파일, 또는 본 발명과 관련이 없는 기타 다른 수단들에 의해 달성될 수 있다. 그 후, 클라이언트 프로세스(302)는 추가 함수 코드(102), 프로세스 D(320)(서버)용 타겟 프로세스(104) PID, 프로세스 C(302)(클라이언트 자신)로 설정된 이벤트 프로세스(106), 및 서버(320)가 요구를 처리하는 동안 종료되는 경우 수신하고자하는 이벤트(108)과 함께 PID 유연성 서비스(221)를 호출한다(단계 304).
클라이언트(302)는 그 후 메시지 큐나 기타 다른 통신 메커니즘을 통하여 서버 프로세스(320)에 작업을 할당한다(단계 306). 클라이언트(302)는 그 후 서버(320)로부터 응답이 올 동안 대기하기 위해 대기 서비스(212)를 호출한다. 대기 서비스(212)는 요구된 함수가 완료되거나 비정상 이벤트가 수신될 때까지 클라이언트(302)를 수면 상태에 놓이도록 한다.
그 동안에 서버(320)는 작업 요구를 수신하고(단계 322), 작업을 처리한다(단계 324). 모든 작업이 성공적으로 수행되면, 서버(320)는 클라이언트(302)에게 작업이 완료되는 시점을 통지한다(단계 328). 단계(328)에서의 상기 통지는 클라이언트 프로세스(302)가 성공을 표시하는 리턴 코드와 함께 대기 함수(212)를 빠져나가도록 만든다. 클라이언트(302)는 대기 상태에서 제어권을 넘겨받으면 PID 유연성 서비스(221)를 호출하여, 단계(304)에서 이루어진 호출을 취소한다(단계 310). 단계(310)에서의 상기 호출은 함수 코드(102)를 요구 삭제로 설정하고, 타겟 프로세스(104)는 서버 프로세스 D(320)를 식별하며, 이벤트 프로세스(106)는 상기 클라이언트(302)를 식별한다.
종료 이벤트(326)이 서버(320)를 히트(hit)하면, 그 이벤트(326)는 프로세스 종료 서비스(process_term)(230)를 트리거한다. 프로세스 종료 서비스(230)는 서버 프로세스 D(320)와, PID 유연성 목록의 각 엔트리에 대한 PID 유연성 목록(120) 전체를 통해 수행되여(단계 232), 타겟 PID(124)에 요구된 이벤트(126)을 생성한다(단계 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)가 무효(invalid)이면, 서비스(221)는 고유한 실패 리턴 코드를 설정하고(단계 404) 호출자에게 리턴된다(단계 406). 모든 파라미터가 유효하면, 서비스(221)는 타겟 프로세스(104)를 위한 프로세스 잠금을 얻는다(단계 408). 이러한 잠금은 다중 호출자에 대한 타겟 프로세스(104)의 PID 유연성 목록(120)(PAL)에 대한 갱신 정보를 연속적으로 전송한다.
타겟 프로세스(104)에 아직 PAL(120)이 없으면(단계 410), 기억장치에서 PAL(120)을 획득하고, PAL(120)의 위치가 필드(116)에 있는 프로세스 정보 블록(PIB)에 저장된다(단계 412). 다음으로 처리 요구가 추가인지 또는 삭제인지를 결정하기 위해 함수 코드(102)를 테스트한다(단계 416). 추가 처리가 요구된 경우, 처리는 5에 설명된 바와 같다(단계 418).
삭제 프로세스이면, 입력으로서 전달된 이벤트 프로세스 PID(106)와 일치하는 PID(124)를 가진 엔트리(122)를 찾기 위해 PAL(120)을 스캐닝한다(단계 414). 일치되는 엔트리가 발견되면(단계 420), 그 엔트리(122)는 소거되고, PAL(120)에 있는 마지막 엔트리(122)는 테이블을 팩(pack) 상태로 유지하기 위해 소거된 엔트리로 이동된다(단계 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). PID가 단계(510)에서 일치되지 않고, PAL(120)에 엔트리가 더 있으면(단계 514), 단계(506)에서 루프를 계속 수행한다.
이벤트 PID(106)가 PAL에서 발견되지 않으면, 새 엔트리(122)가 선택된다. 이것은 통상적으로 PAL(120) 내의 사용되지 않은 다음번 엔트리(122)를 사용하는 것에 불과하다. PAL(120)이 모두 채워지고, 더 큰 새로운 PAL이 획득되면, 이전의 PAL은 새로운 PAL에 복사되고 새로운 PAL의 주소는 필드(116)에 있는 PIB(114)에 저장된다. 프로세스가 잠겨있으므로(단계 408), 이러한 동작은 안전하게 수행될 수 있다. 이전의 PAL을 새로운 PAL에 복사한 후에, 이전의 PAL은 자유롭게 된다. 상기 새로운 엔트리는 단계(512)에서와 같이 PAL에 있는 미사용 엔트리(122)를 사용하여 저장된다. 프로세스 잠금은 해제되고 제어권은 호출자에게 리턴된다(단계 518).
본 발명의 특정한 실시예가 도시되고 설명되었지만 추가한 청구항의 범위 내에서 여러 가지 변경과 확장이 이루어질 수 있다는 것은 당업자에게 명백하다.
본 발명에 따르면, 운영 체제(OS)의 각 프로세스는 선택 사양으로 프로세스 종료시 (신호를 통해서) 그 사실을 통지 받기 원하는 프로세스를 식별하는 PID 유연성 목록을 갖는다. 따라서 클라이언트가 서버로부터 응답을 기다리고 있는데 서버가 종료되면, 대기 클라이언트 프로세스에 종료 통지를 보내므로 클라이언트 프로세스는 사용자나 오퍼레이터가 클라이언트 프로세스 종료 요구를 보낼 때까지 대기 상태로 행업되지 않고 작업을 계속 수행할 수 있다.

Claims (15)

  1. 복수의 대화형 작업을 갖는 정보 취급 시스템 내에서 작업 종료 통지를 제공하는 방법에 있어서,
    a) 하나 이상의 타겟 작업 각각에 대해서 타겟 작업의 종료시에 통지를 받아야 할 다른 작업에 대한 하나 이상의 엔트리를 포함하는 유연성(affinity) 목록을 정의하는 단계;
    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) 하나 이상의 타겟 작업 각각에 대해서 타겟 작업의 종료시에 통지를 받아야 할 다른 작업에 대한 하나 이상의 엔트리를 포함하는 유연성(affinity) 목록을 정의하는 수단;
    b) 타겟 작업 및 다른 작업을 지정하는 유연성 요구의 수신에 응답하여, 나머지 다른 작업용 엔트리를 타겟 작업을 위해 정의된 유연성 목록에 추가하는 수단; 및
    c) 타겟 작업의 종료 검출에 응답하여 상기 타겟 작업을 위해 정의된 유연성 목록에 포함된 나머지 다른 작업 각각에 통지하는 수단
    을 포함하는 작업 종료 통지 제공 장치.
  11. 제10항에 있어서,
    상기 유연성 목록은 제1 형태를 가지며,
    타겟 작업 및 다른 작업을 지정하는 제2 형태를 갖는 유연성 요구 수신에 응답하여, 타겟 작업을 위해 정의된 유연성 목록으로부터 나머지 다른 작업에 대한 엔트리를 삭제하는 수단을 추가로 포함하는 작업 종료 통지 제공 장치.
  12. 제10항에 있어서,
    a) 유연성 목록이 상기 타겟 작업을 위해서 이미 정의되었는지의 여부를 결정하는 수단;
    b) 유연성 목록이 상기 타겟 작업을 위해서 이미 정의되어 있다면, 상기 타겟 작업을 위해 정의된 유연성 목록에 나머지 다른 작업에 대한 엔트리를 추가하는 수단; 및
    c) 유연성 목록이 상기 타겟 작업을 위해서 미리 정의되어 있지 않다면, 상기 타겟 작업을 위한 유연성 목록을 정의하고, 상기 타겟 작업을 위해 정의된 유연성 목록에 나머지 다른 작업에 대한 엔트리를 추가하는 수단
    으로 구성되는 추가 수단
    를 포함하는 작업 종료 통지 제공 장치.
  13. 머신으로 판독 가능하며, 작업 종료의 통지를 제공하기 위한 방법 단계를 실행하기 위해 머신으로 실행 가능한 인스트럭션 프로그램을 유형적으로 구현하는 프로그램 기억 장치에 있어서,
    상기 방법 단계가
    a) 하나 이상의 타겟 작업 각각에 대해서 타겟 작업의 종료시에 통지를 받아야 할 다른 작업에 대한 하나 이상의 엔트리를 포함하는 유연성(affinity) 목록을 정의하는 단계;
    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 1998-05-18
US9/080,504 1998-05-18
US09/080,504 US6907605B1 (en) 1998-05-18 1998-05-18 Method and apparatus for providing for notification of task termination

Publications (2)

Publication Number Publication Date
KR19990087928A true KR19990087928A (ko) 1999-12-27
KR100346667B1 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)

Families Citing this family (15)

* 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
US6877025B2 (en) 2000-12-18 2005-04-05 International Business Machines Corp. Integrated JSP and command cache for web applications with dynamic content
US6823360B2 (en) 2000-12-18 2004-11-23 International Business Machines Corp. Cofetching in a command cache
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
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
US8332826B2 (en) * 2005-05-26 2012-12-11 United Parcel Service Of America, Inc. Software process monitor
US7558986B2 (en) * 2005-05-26 2009-07-07 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 北京金山安全软件有限公司 一种获取文件占用进程的方法、装置及电子设备
US10616317B2 (en) 2016-11-10 2020-04-07 Trilliant Networks, Inc. Method and system for affinity load balancing
US12020066B2 (en) * 2021-06-11 2024-06-25 International Busin ess Machines Corporation Asynchronous completion notification in a multi-core data processing system

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

Also Published As

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

Similar Documents

Publication Publication Date Title
US7127635B2 (en) Method for correcting a program running on a computer system
KR19990087928A (ko) 작업종료통지를제공하기위한방법및장치
JP3339482B2 (ja) 分散デバッグ装置及びデバッグ方法並びに制御プログラムを記録した記録媒体
JP3697148B2 (ja) 分散コンピュータ環境において、複数のマルチスレッド化プロセスに渡ってコミュニケータを設定する方法およびシステム
JP4056465B2 (ja) マルチスレッド・アプリケーションにおけるスレッド実行を管理するための方法及び装置
JPH07141206A (ja) プロセス境界にまたがってオブジェクト間の通信を行う方法及びシステム
JPH10143381A (ja) 遊休ワークステーションを共用するための装置および方法
US6470346B2 (en) Remote computation framework
US5794034A (en) Ordered and reliable maintenance of inter-process relationships in a distributed multiprocessor
CN110659104B (zh) 一种业务监控方法及相关设备
EP0205948A2 (en) Distributed data management mechanism
JP2001306341A (ja) コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
JPH09259002A (ja) デバッグ支援装置
US6735716B1 (en) Computerized diagnostics and failure recovery
US20040025007A1 (en) Restricting access to a method in a component
JP3670017B2 (ja) 分散型多重プロセッサにおける順序付けされた信頼できる信号送出
JPH07219789A (ja) 複数スレッド・システムにおける外部事象を処理する方法
Fagg et al. Taskers and general resource managers: PVM supporting DCE process management
JP3738701B2 (ja) トランザクション処理システムにおけるシステム設定方法
JP3586943B2 (ja) プログラムロード装置と方法
JPH10133860A (ja) Os配布・更新方法
JP2002149439A (ja) 分散処理システムにおけるサーバ切替え方法及びサーバ装置
JP2001155001A (ja) マルチプロセッサタスク制御方法及びタスク制御装置
WO2024174754A1 (zh) 处理器资源的管理方法、装置、云计算设备及存储介质
JPWO2007108133A1 (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