KR0164412B1 - 복수의 응용 프로세스 관리 방법 - Google Patents
복수의 응용 프로세스 관리 방법 Download PDFInfo
- Publication number
- KR0164412B1 KR0164412B1 KR1019950022176A KR19950022176A KR0164412B1 KR 0164412 B1 KR0164412 B1 KR 0164412B1 KR 1019950022176 A KR1019950022176 A KR 1019950022176A KR 19950022176 A KR19950022176 A KR 19950022176A KR 0164412 B1 KR0164412 B1 KR 0164412B1
- Authority
- KR
- South Korea
- Prior art keywords
- program
- database
- file
- unique number
- programs
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 여러 개의 응용 프로세스를 관리하는 방법에 관한 것으로서, 관리하고자 하는 프로그램을 프로그램 데이타 베이스에 등록하는 제1과정: 등록된 프로그램 중 적어도 하나 이상의 관리하고자 하는 프로그램을 프로세스로 생성하여 실행하는 제2과정: 상기 제2과정에서 실행되고 있는 프로세스가 실행 중에 비정상적으로 죽었을 경우, 죽은 프로세스와 죽은 프로세스에 관련된 프로세스를 복구처리하는 제3과정을 포함함을 특징으로 한다.
본 발명에 의하면, 여러 개의 프로세스로 구성된 하나의 응용 소프트웨어에 대한 관리를 유닉스 운영체제의 초기화(init) 프로세스보다 효율적이며 안정적으로 할 수 있다.
Description
제1도는 응용 프로세스 관리기의 구성을 나타내는 블럭도.
제2a도는 응용 프로세스 관리 방법을 도시한 흐름도.
제2b도는 프로그램 등록 과정을 도시한 흐름도.
제2c도는 프로세스 재시작부의 처리과정을 도시한 흐름도.
제2d도는 자식신호(SIGCLD) 처리부의 처리과정을 도시한 흐름도.
제2e도는 종료(kill)프로세스부의 처리과정을 도시한 흐름도.
제2f도는 출생(spawn) 프로세스부의 처리과정을 도시한 흐름도.
제3도는 데이타 베이스에서 등록프로그램 삭제방법을 도시한 흐름도.
제4도는 데이타 베이스에서 등록프로그램 수정방법을 도시한 흐름도.
제5도는 데이타 베이스에서 등록프로그램 검색방법을 도시한 흐름도
제6도는 프로그램 정보를 백업하는 방법을 도시한 흐름도.
제7도는 프로세스의 상태를 표시하는 방법을 도시한 흐름도.
제8도는 실행중인 프로세스를 강제로 중단시키는 방법을 도시한 흐름도.
제9a도 및 제9b도는 관리 대상에 속하지 않는 프로세스를 관리하는 방법을 도시한 흐름도.
제10도는 응용 프로세스의 로그 사항을 기록하는 장소를 지정하는 방법을 도시한 흐름도.
본 발명은 프로세스 관리 방법에 관한 것으로서, 특히 복수의 응용 프로세스를 관리하는 방법에 관한 것이다.
일반적인 유닉스 계열의 운영체제를 사용하는 컴퓨터 시스템에는 초기화(init)라는 프로세스가 있다. 이 프로세스는 여러가지 기능을 수행하는 것으로서, 그 중의 한 가지 기능은 초기화테이블(inittab)이라는 화일에 등록된 프로그램을 시스템이 부팅될 때 자동으로 수행을 시작하게 하며, 자동으로 수행이 시작된 프로세서들이 종료(kill)되었을 경우에는 그 프로그램을 다시 시작시켜 준다. 또한 부팅이 된 후라도 'telinit'이라는 프로그램을 통해 시스템이 셧다운(shutdwon) 될 때까지 초기화테이블(inittab)화일에 등록되지 않은 프로그램을 초기화테이블(inittab)화일에 등록된 화일과 같이 취급하면 관리해준다. 이 기술의 중요한 점은 프로세스가 종료 되었을 때 그 프로세스를 다시 시작시켜 준다는 것이다.
그런데 상기 초기화(init) 프로세스를 통해 프로세스를 관리하고자 할 때 다음과 같은 문제점이 있다.
첫째, 초기화(init) 프로세스의 기능은 관리 단위가 하나의 프로세스에 한정된다. 따라서 여러개의 프로세스가 하나의 작업을 수행하기 위해 서로 연관 되어져 있고, 그 프로세스들이 수행상에 선후관계가 있을 경우, 초기화(init0 프로세스에 의해 관리되기가 어렵다.
왜냐하면 초기화(init) 프로세스는 하나의 프로세스가 종료되었다면 단지 그 프로세스 만을 다시 살려줄 뿐 그 프로세스와 관련된 선후 관계에서 뒤쪽에 있는 다른 프로세스들을 강제적으로 종료 한 후에 다시 살려 주는 방법이 없다.
둘째, 시스템이 부팅된 후에 사용자가 어떤 응용(application) 프로그램을 수행시켰고 그 프로그램이 현재 수행되고 있는 상황에서 그 프로세스에 대한 관리를 하고자 할 경우에 초기화(init) 프로세스에게 그 프로그램과 프로세스를 알려줄 수 있는 방법이 없다.
셋째, 초기화(init) 프로세스에는 새로운 프로세스의 생성과 종료(kill)된 것에 대한 기록이 남아있지 않다. 그래서 어떤 프로세스가 언제 시작되었고 언제 어떤 이유에 의해 종료되었는지 알 수 없다.
상술한 문제점을 해결하기 위한 본 발명은 어떤 하나의 목적을 달성하기 위해 다수의 프로그램이 그룹을 형성하여 여러 개의 프로세스들이 서로 연관을 맺고 동작하고 있을 때, 관리되어질 프로그램을 등록하고, 그것들을 지정된 순서에 따라 수행시키며, 이 중 한 프로세스가 어떤 원인에 의하여 종료되었을 경우 그것과 관련된 프로세스들을 강제적으로 종료 시키고, 주어진 순서대로 프로세스들을 다시 살려 줄 수 있도록 한다. 그리고 현재 그 부동산에 대응하는 프로세스들의 수행 상태를 보여주며, 각각의 프로세스에 대해 중단 및 재수행을 가능하게 해주며, 또한 관리되어지는 전체 프로세스의 생사에 관한 로그(log)화일을 생성해준다. 이와 같은 기능을 하는 프로그램을 '응용 프로세스 관리기'(Application Process Manager : APM)라고 부르기로 한다.
본 발명의 제1목적은 상기 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리하는 방법을 제공하는 데 있다.
본 발명의 제2목적은 응용프로세스 관리기를 이용하여 응용프로세스 관리시 응용 프로그램을 등록한 후 필요할 때에 등록된 프로그램을 프로그램 데이타 베이스에서 삭제하는 방법을 제공하는 데 있다.
본 발명의 제3목적은 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리시 응용 프로그램을 등록한 후 등록된 프로그램의 정보에 관한 데이타를 데이타 베이스에서 수정하는 방법을 제공하는데 있다.
본 발명의 제4목적은 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리시 응용 프로그램을 등록한 후 등록된 프로그램을 데이타 베이스에서 검색하는 방법을 제공하는 데 있다.
본 발명의 제5목적은 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리 작업을 종료하기 위해 관리하고 있던 프로그램 정보를 백업하는 방법을 제공하는데 있다.
본 발명의 제6목적은 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리시 응용 프로세스의 상태를 표시하는 방법을 제공하는 데 있다.
본 발명의 제7목적은 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리시 실행 중인 프로세스를 강제로 중단시키는 방법을 제공하는 데 있다.
본 발명의 제8목적은 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리할 때에 데이타 베이스에 등록된 프로그램 중 관리대상에 속하지 않는 프로세스를 관리하는 방법을 제공하는데 있다.
본 발명의 제9목적은 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리할 때에 응용 프로세스의 로그(log) 사항을 기록하는 장소를 지정하는 방법을 제공하는데 있다.
상기의 제1목적을 달성하기 위한 본 발명에 의한 응용 프로세스 관리 방법은 프로그램에 대한 정보를 저장하고 관리하는 프로그램 데이타 베이스에 관리하고자 하는 프로그램을 등록하는 제1과정: 상기 제1과정에서 등록된 프로그램 중 적어도 하나 이상의 관리하고자 하는 프로그램을 프로세스로 생성하여 실행하는 제2과정: 및 상기 제2과정에서 실행되고 있는 프로세스가 실행 중에 소프트웨어 에러 등 비정상적으로 죽었을 경우, 죽은 프로세스 그리고 죽은 프로세스와 선후 관계를 맺으며 수행되는 프로세스들을 함께 복구하는 제3과정을 포함함을 특징으로 하여 이루어진다.
한편 응용 프로세스 관리 방법에 있어서, 상기 제1과정은 상기 프로그램 데이타 베이스에서 할당되지 않은 프로그램 고유번호(ID)를 찾아 등록하고자 하는 프로그램에 고유번호(ID)를 부여하는 과정 : 상기 프로그램 데이타 베이스에서 필요로 하는 프로그램에 대한 정보를 받아들이는 과정: 및 상기 과정에서 받아들인 정보 값이 유효하면 프로그램 데이타 베이스에 저장하는 과정을 특징으로한다.
그리고 응용 프로그램 관리 방법에 있어서, 상기 프로그램 데이타 베이스에서 필요로 하는 정보는 등록될 프로그램의 고유번호(ID): 프로그램의 그룹에 대한 고유번호(ID): 프로그램 이름: 프로그램 그룹 이름: 프로세스의 표준 입력을 대신하는 화일인 입력 간접 화일: 프로세스의 표준 출력을 대신하는 화일인 출력 간접 화일: 프로세스의 표준 에러를 대신하는 화일인 에러 간접 화일: 프로그램의 환경 세팅을 위한 변수와 값으로 된 환경: 실제적으로 프로그램이 수행되어질 명령: 프로세스가 종료되었을 경우 프로그램 관리기의 동작 형태를 나타내는 동작 형태: 프로그램 관리기가 프로세스를 죽을 때 사용되는 종료 신호(killing signal) : 그룹으로 묶여진 프로그램 들 중에서 마스터가 되는 프로그램을 표시하는 마스터 프로그램 플래그 : 및 프로그램 그룹내에서 우선 순위가 뒤인 프로그램들의 리스트를 나타내는 자식 프로그램 리스트로 구성됨을 특징으로 한다.
또한 응용 프로그램 관리방법에 있어서, 상기 제2과정은 시작하고자 하는 프로그램의 범위를 받아들이는 제11과정: 상기 제11과정에서 받아들인 프로그램이 만일 하나의 프로그램일 경우, 프로그램 고유번호(ID)를 가지고 관련된 자식 프로세스를 다 죽이고 나서 프로세스를 생성(fork)하여 실행(exec)시키는 제12과정: 상기 제11과정에서 받아들인 프로그램이 만일 프로그램의 그룹일 경우, 등록된 프로그램의 데이타 베이스에서 그룹의 첫번째 시작 프로그램(마스터 프로그램)을 찾아 마스터 프로그램 고유번호(ID)를 가지고 관련된 자식 프로세스를 다 죽이고 나서, 프로그램 그룹내의 프로그램 수행 순서대로 프로세스를 생성하여 실행시키는 제13과정: 및 상기 제11과정에서 받아들인 프로그램이 만일 데이타 베이스에 등록된 모든 프로그램일 경우, 데이타 베이스에서 마스터 프로그램이 존재하지 않을 때까지 제13과정을 수행하는 제14과정을 특징으로 한다.
또한 상기 응용 프로그램 관리 방법에 있어서, 상기 제3과정은 죽은 프로세스의 고유번호(ID)를 얻어 데이타 베이스에서 관련된 프로그램을 찾는 과정: 프로그램 고유번호(ID), 프로세스 고유번호(ID), 죽은 원인, 시간등을 가지고 기록 화일에 기록하는 과정:및 프로그램 고유번호(ID)를 가지고 자식 프로세스를 죽이고 나서, 프로세스를 생성하여 실행시키는 과정들을 관련된 자식 프로세스 수 만큼 반복해서 수행함을 특징으로 한다.
상기의 제2목적을 달성하기 위한 본 발명에 의한 프로그램 데이타 베이스에 등록된 프로그램을 삭제하는 방법은 삭제하고자 하는 프로그램의 범위를 받아 들이는 과정: 프로그램 데이타 베이스에서 상기 입력된 범위에 해당되는 프로그램을 찾는 과정: 삭제할 프로그램을 선택하는 과정: 상기 과정에서 선택한 프로그램의 각 정보영역을 디스플레이하는 과정: 및 프로그램 데이타 베이스에서 프로그램을 삭제하는 과정을 포함함을 특징으로 하여 이루어진다.
상기의 제3목적을 달성하기 위한 본 발명에 의한 응용 프로세스 관리시 등록 과정에서 등록된 프로그램에 대한 정보를 프로그램 데이타 베이스에서 수정하는 방법은 수정하고자 하는 프로그램의 범위를 받아 들이는 과정: 프로그램 데이타 베이스에서 상기 입력된 범위에 해당되는 프로그램을 찾는 과정: 수정할 프로그램을 선택하는 과정: 수정할 정보 영역을 선택하여 정보영역의 값을 입력하는 과정:및 입력된 정보영역의 값을 프로그램 데이타 베이스에 저장하는 과정을 포함함을 특징으로 하여 이루어진다.
상기의 제4목적을 달성하기 위한 본 발명에 의한 응용 프로세스 관리시 등록 과정에서 등록된 프로그램을 프로그램 데이타 베이스에서 검색하는 방법은 검색하고자 하는 프로그램의 범위를 받아 들이는 과정: 프로그램 데이타 베이스에서 상기 입력된 범위에 해당되는 프로그램을 찾는 과정: 및 상기 과정에서 찾은 프로그램의 각 정보영역을 디스플레이하는 과정을 포함함을 특징으로 하여 이루어진다.
상기의 제5목적을 달성하기 위한 본 발명에 의한 응용 프로세스 관리시 관리작업을 종료하기 위해 관리하던 프로그램 정보를 백업하는 방법은 프로그램 정보를 저장하고 있던 백업용 저장화일이 존재하면 삭제하는 과정: 프로그램 정보를 저장하고 있는 저장화일을 백업용 저장화일로 바꾸는 과정: 및 프로그램 데이타 베이스에 저장된 프로그램들의 각 정보영역의 정보를 저장화일에 저장하는 과정을 포함함을 특징으로 하여 이루어진다.
상기의 제6목적을 달성하기 위한 본 발명에 의한 응용 프로세스 관리시 프로세스의 상태를 표시하는 방법은 디스플레이 할 프로그램의 범위를 받아들이는 과정: 상기 과정에서 받아들인 프로그램에 대하여 프로그램 데이타 베이스에서 현재 수행중인 프로세스에 대한 프로세스 고유번호(ID)를 얻는 과정: 상기 과정에서 얻어진 프로세스 고유번호에 대해서 프로세스 상태를 얻는 과정: 및 화면에 각 프로세스의 상태를 디스플레이하는 과정을 포함함을 특징으로 하여 이루어진다.
상기의 제7목적을 달성하기 위한 본 발명에 의한 응용 프로세스 관리시 실행중인 프로세스를 강제로 중단시키는 방법은 중단시킬 프로그램의 범위(프로그램 고유번호(ID), 그룹 고유번호(ID), 프로그램 전체)를 받아들이는 과정: 범위가 프로그램이면, 죽은 프로세서의 재실행 여부를 표시하는 출생(spawn) 플래그를 '재실행 아님'으로 표시하고 선택된 프로그램 고유번호(ID)를 가진 프로세스에게 종료 신호(killing signal)를 보내어 프로세스 죽이는 과정: 범위가 프로그램 그룹이면, 데이타 베이스에서 프로그램 그룹에서 처음 시작하는 프로그램(마스터 프로그램)을 찾아 죽은 프로세스의 재실행 여부를 표시하는 출생(spawn) 플래그를 '재실행 아님'으로 표시하고 관련된 자식 프로세스들의 수행 순서의 역순으로 자식 프로세스를 죽이는 과정: 범위가 프로그램 전체이면 상기 프로그램 그룹에서 수행하는 과정을 마스터 프로그램이 없을 때까지 반복하는 과정: 및 종료 시킨 모든 프로세스가 실제적으로 종료 될 때까지 기다리는 과정을 포함함을 특징으로 하여 이루어진다.
상기의 제8목적을 달성하기 위한 본 발명에 의한 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리할 때에 데이타 베이스에 등록된 프로그램 중 관리 대상에 속하지 않은 프로세스를 관리하는 방법은 관리하고자 하는 프로그램을 폴링 방식으로 관리하기 위해 프로그램의 폴링모드를 세팅하는 과정: 폴링을 하기 위해 운영체제가 응용 프로세스 관리기에게 일정 시간마다 신호를 보내어, 프로세스의 동작 완료 여부를 검사하게 하고, 프로세스가 동작중이면 그대로 두고, 프로세스가 동작 완료되었으면 다시 동작시키는 함수를 수행하도록 하는 알람(alarm)을 준비하는 과정: 폴링할 프로그램을 받아들여 폴링모드가 온(ON)이면, 폴링을 하기 위해 프로세스의 고유번호(ID)를 받아들이는 과정: 상기 과정의 프로세스 고유번호(ID)에 해당하는 프로세스가 살아있으면 데이타 베이스에서 프로세스 고유번호(ID)를 저정한 후, 상기 알람(alarm) 함수가 작동되어 있지 않고 있으면 알람(alarm)을 작동시켜 프로세스를 관리하는 과정: 및 상기 과정에서 폴링할 프로그램의 폴링모드가 OFF이면, 데이타 베이스에서 해당 프로세스 고유번호(ID)를 제거하고, 폴링 모드가 ON인 프로그램이 없으면 작동중인 알람(alarm)을 중지시키는 과정을 포함함을 특징으로 하여 이루어 진다.
상기의 제9목적을 달성하기 위한 본 발명에 의한 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리할 때에 응용 프로세스의 로그(log) 사항을 기록하는 장소를 지정하는 방법은 현재의 로그(log) 모드의 종류를 화면에 보여주는 과정: 새로운 로그(log) 모드를 받아들이는 과정: 로그 모드가 메세지 큐이면 메세지 큐 고유번호를 받아들여 메세지 큐를 만들고, 로그 모드가 화일이면 화일이름을 받아들여 화일을 오픈하는 과정: 이전의 로그 모드가 닫힌다는 정보를 가지고 등재기(logger)를 호출하는 과정: 이전의 로그 모드가 화일이었다면 클로즈(close)하는 과정: 로그모드를 새로운 로그모드로 세팅하는 과정: 새로운 로그 모드가 오픈되었다는 정보를 가지고 등재기(logger)를 호출하는 과정: 새로운 로그 모드에 대한 정보를 특정 화일에 기록하는 과정을 포함함을 특징으로 하여 이루어진다.
이하에서 첨부한 도면을 참조하여 본 발명을 상세히 설명한다.
제1도는 응용 프로세스 관리기를 구성하고 있는 블럭도를 도시한 것이다.
메뉴 구동부(100)는 응용프로세스 관리기(APM)의 사용자 인터페이스를 제공하기 위한 메뉴를 구동하는 모듈로서, 커서(Cursor)를 이용하여 사용자가 응용프로세스 관리기(APM)의 기능 모듈을 선택할 수 있도록 해 준다. 프로그램 수정부(102)는 데이타 베이스에 등록된 프로그램의 정보 영역을 수정하는 기능 모듈이며, 프로그램 삭제부(104)는 데이타 베이스에 등록된 프로그램을 삭제하는 기능 모듈이고, 프로그램 검색부(106)는 프로그램 데이타 베이스에 등록된 프로그램중 찾고자 하는 프로그램을 검색하는 기능 모듈이다. 그리고 프로그램 등록부(108)는 데이타 베이스에 프로그램을 최초로 등록하거나 응용프로세스 관리기 운용중 관리하기를 원하는 프로그램을 추가하는 기능 모듈이고, 프로그램 저장부(110)는 응용프로세스 관리기의 사용을 종료할 때 종료할 시점의 응용프로세스 관리기 상태를 저장하기 위한 기능 모듈이다. 프로그램 상태 표시부(112)는 응용프로세스 관리기 운용중 프로세스의 상태를 표시하는 기능 모듈이고, 재실행(Restart)부는 프로그램을 프로세스로 바꾸어 실행하거나 응용프로세스 관리기 운용중 죽은 프로세스를 다시 실행하는 기능 모듈이다. 그리고 중지(Stop)부 (116)는 응용프로세스 관리기 운용중 프로세스를 강제로 죽이고자 할 때 사용하는 기능 모듈이다. 자식신호(SIGCLD)처리부(118)는 프로세스가 죽을 때 인터럽트의 일종인 신호(signal)를 발생하는데 이를 처리하는 기능 모듈이고, 알람신호(SIGALRM)처리부(126)는 일정한 시간 마다 유닉스 커널이 알람(alarm) 함수에 의해 신호을 보내 주면 이를 처리하는 기능 모듈이다. 등록 프로그램 데이타 베이스(130)는 등록된 프로그램에 대한 정보를 저장하는 모듈로서 다음과 같은 정보 영역(field)을 가지고 있다.
1) 등록될 프로그램의 프로그램 고유번호(ID);
2) 프로그램의 그룹에 대한 고유번호(ID);
3) 프로그램 이름;
4) 프로그램 그룹 이름;
5) 프로세스의 표준 입력을 대신하는 화일인 입력 간접 화일;
6) 프로세스의 표준 출력을 대신하는 화일인 출력 간접 화일;
7) 프로세스의 표준 에러를 대신하는 화일인 에러 간접 화일;
8) 프로그램의 환경 세팅을 위한 변수와 값으로 된 환경;
9) 실제적으로 프로그램이 수행되어질 명령;
10) 프로세스가 종료되었을 경우 프로그램 관리기의 동작 형태를 나타내는 동작형태(action type);
여기서 동작형태에는 재출생(respawn), 일회용(once), 대기(wait)의 세 가지가 있는데, 재출생(respawn)는 프로세스를 다시 시작시키라는 의미이고, 일회용(once)는 프로세스를 한 번만 실행 시키라는 의미이며, 대기(wait)는 프로세스가 끝날 때까지 기다리라는 뜻이다.
11) 프로그램 관리기가 프로세스를 죽을 때 사용되는 종료 신호(killing signal);
12) 그룹으로 묶여진 프로그램들 중에서 마스터가 되는 프로그램을 표시하는 마스터 프로그램 플래그;
13) 프로그램 그룹내에서 우선 순위가 뒤인 프로그램들의 리스트를 나타내는 자식 프로그램 리스트;
14) 현재 수행중인 프로세스의 고유번호(ID)를 나타내는 프로세스 고유번호(ID);
15) 프로세스가 비정상적으로 죽은 것인지 프로세스 관리기에 의해 강제로 죽은 것인지 나타내는 출생 플래그(spawn flag);
여기서 만일 출생(spawn) 플래그의 상태가 참(true)이면 프로세스가 비정상적으로 죽은 것을 의미하고, 출생(spawn) 플래그의 상태가 거짓(false)으로 되어 있으면 응용프로세스 관리기에 의해 강제로 죽은 것임을 뜻한다.
16) 프로그램 관리기가 구동된 뒤로 강제적으로 중지시키기 전까지 프로세스가 최초로 시작한 시간을 나타내는 시작시간(start time);
17) 현재 프로세스가 시작된 시간을 나타내는 현재 시작 시간(current start time);
18) 프로그램 관리기가 시작된 뒤로 강제적으로 중지시키기 전까지 프로그램 관리기가 프로세스를 다시 실린(respawn) 횟수를 나타내는 리스폰(respawn) 횟수.
한편 폴링 온/오프(Polling ON/OFF)부 (124)는 프로그램 데이타 베이스에 등록되어 있는 프로그램 중에서 관리대상에 포함되지 않은 프로세스를 관리할 때 사용하는 기능모듈이며, 로그 모드 변경부(Log Mode Changer, 128)는 프로세스의 로그에 대한 사항을 기록할 장소 즉 화일 또는 메세지 큐(queue)를 변경하는 기능모듈이다. 그리고 등재기(Logger, 132)는 로그 종류에 따라 적당한 메세지를 만들어 로그모드에 따라 화일 또는 메세지 큐(queue)에 메세지를 기록하는 모듈이다.
그리고 종료(kill) 프로세스부(120)는 프로세스를 죽이는(kill) 모듈이며, 출생(spawn) 프로세스부(122)는 프로세스를 출생(spawn) 하는 모듈이다.
이상에서 설명한 응용 프로세스 관리기의 구성요소를 기반으로 본 발명의 동작을 설명하면 다음과 같다.
제2a도는 응용 프로세스를 관리하는 방법을 도시한 흐름도이다.
프로그램을 관리하기 위해서는 먼저 관리할 프로그램을 등록시켜야 한다.
이를 위해서 우선 메뉴 구동부(100)를 구동하여 메뉴 상에서 프로그램 등록부(108)를 선택한다. 그리고 나서 관리하고자 하는 프로그램을 등록부를 구동하여 프로그램 데이타 베이스에 등록을 한다. (200단계) 그리고 등록된 프로그램 중 적어도 하나 이상의 관리하고자 하는 프로그램을 재시작부(114)를 구동하여 종료 프로세스부(120)와 출생(spawn) 프로세스부(122)를 호출하여 프로세스를 생성(fork)하고, 실행(exec) 시킨다.. (202단계) 이렇게 하여 응용 프로세스 관리기가 프로세스를 관리하고 있다가 만일 실행되고 있던 프로세스가 소프트웨어 에러 등 비정상적으로 죽었을 경우, 인터럽트가 발생되고 (204단계), 죽은 프로세스와 죽은 프로세스에 관련된 프로세스(같은 그룹의 프로세스)를 자식신호(SIGCLD) 처리부(118)를 구동하여 죽은 프로세스와 그와 관련된 프로세스를 모두 죽이고 나서 다시 생성하여 복구 처리함으로써 (206단계), 복수의 응용 프로세스를 관리한다. 이상의 과정은 기존의 프로그램 외에 새로이 프로그램을 등록할 경우에도 마찬가지이다. 한편 상기 200 단계와 202 단계 및 204 단계를 보다 상세히 설명하면 다음과 같다.
제2b도는 상기 200 단계에서 프로그램 등록부(108)에서 프로그램을 등록하는 과정을 흐름도로 보다 상세하게 도시한 것이다. 등록 프로그램 데이타 베이스(130)에서 할당되지 않고 비어있는 프로그램 고유번호(ID)를 찾아 새로운 프로그램에 프로그램 고유번호(ID)를 부여한다. (210단계) 데이타 베이스에서 필요로 하는 정보들을 정보영역에 입력한다. (211단계) 여기서는 등록 프로그램 데이타 베이스(130)가 가지고 있는 프로그램 속성 중 상기 1)-13)까지의 정보를 순서대로 받아 들인다. 그리고 나서 입력된 각 정보 값이 유효한가 확인한 후(212단계), 틀린 값이 있을 때는 다시 입력하고(213단계), 데이타 베이스에 저장 여부를 보아(214단계), 저장할 것이면 저장하고 종료하고(215단계), 저장하지 않을 것이면 바로 종료함으로써 하나의 프로그램에 대한 등록부의 등록을 종료한다.
한편 관리하고자 하는 프로그램들의 등록이 끝나면 재시작부를 구동하여 프로세스의 관리를 시작한다. 제2c도는 상기 202 단계를 보다 상세히 설명하기 위해 도시한 흐름도이다. 재시작부(114)는 다음과 같은 과정으로 이루어 진다. 먼저 재시작할 프로그램의 범위를 입력으로 받는다. (220단계) 여기서는 프로그램의 범위로 '프로그램 고유번호(ID)', '그룹 고유번호(ID), '프로그램 전체'의 세가지 중 하나를 입력할 수 있다. 입력된 프로그램의 범위를 검사하여(221단계), 만일 범위가 프로그램 고유번호(ID) 이면 프로그램 고유번호(ID)를 가지고 종료 프로세스부(120)를 호출하여(222단계), 해당 프로세스를 종료한다. 해당 프로세스가 실제적으로 종료 될 때까지 기다린후(223단계), 종료 되고나면 프로그램 고유번호(ID)를 가지고 출생(spawn) 프로세스부(122)를 호출하여 해당 프로세스를 재시작 하게 한 후(224단계), 종료한다. 여기서 종료 프로세스부와 출생(spawn)프로세스부의 설명은 편의상 뒤에서 하기로 한다.
만일 범위로 그룹 고유번호(ID)가 입력되면 데이타 베이스에서 그룹의 마스터 프로그램을 찾는다. (225단계) 여기서 마스터 프로그램이란 어떤 목적을 달성하기 위한 복수 개의 프로그램이 있을 때 프로그램의 실행 순서가 정해지게 되고 이때 첫번째로 실행되어야 할 프로그램을 뜻한다. 마스터 프로그램이 찾아지면 마스터 프로그램 고유번호(ID)를 가지고 종료 프로세스부를 호출하여 (226단계) 찾아진 마스터 프로그램 고유번호(ID)에 해당하는 프로세스와 자식 프로세스들을 종료하게 한다. 종료 시킨 모든 프로세스가 실제적으로 종료 될때까지 기다려 종료이 되고나면(227단계), 마스터 프로그램 고유번호(ID)를 가지고 출생(spawn) 프로세스부를 호출하여(228단계), 그룹에 해당하는 프로세스를 재시작하게 한 후 종료한다.
만일 범위로 프로그램 전체를 선택했다면, 데이타 베이스에서 마스터 프로그램을 찾는다. (229단계) 마스터 프로그램을 발견하면 찾은 마스터 프로그램 고유번호(ID)를 가지고 종료 프로세스부를 호출하여 해당되는 프로세스를 종료한다. (231단계) 그리고 나서 또 다른 마스터 프로그램이 있는가 검사하여 있으면 상기 과정을 반복하고, 없으면 종료(kill)시킨 모든 프로세스가 실제적으로 종료(kill) 될 때까지 기다린다. (232단계) 해당되는 모든 프로세스가 종료 되고 나면 데이타 베이스에서 마스터 프로그램을 찾아(233단계), 찾은 마스터 프로그램 고유번호(ID)를 가지고 출생(spawn) 프로세스부를 호출하여 해당되는 프로세스를 다시 시작하게 된다. (235단계) 만일 데이타 베이스에서 마스터 프로그램이 더 이상 존재하지 않으면 종료한다.
한편 상기 재시작부가 구동되면 프로세스의 관리가 진행 중에 있게 된다. 이 때 시작된 프로세스가 종료되어 인터럽트가 발생될 수 있다. 이 인터럽트는 사용자가 실행중인 프로세스를 실행을 중지시키기 위해 강제적으로 가하는 중지(stop) 인터럽트와 프로그램상의 어떤 비정상적인 상태로 인해 발생하는 비정상적인(abnormal) 상태 인터럽트로 나눌 수 있다. stop 인터럽트의 경우는 뒤에 나오는 제8도에서 설명하기로 하고 먼저 비정상적인 상태의 인터럽트를 기술한다.
인터럽트가 비정상적인 상태에서의 인터럽트인 경우는 다음과 같이 진행된다. 제2d도는 상기 206 단계를 보다 상세히 설명하기 위해 도시한 흐름도이다. 먼저 비정상적인 상태가 발생하면 자식신호(SIGCLD) 처리부를 호출한다. 자식신호(SIGCLD) 처리부는 다음과 같은 과정으로 진행된다. 먼저 종료 된 자식 프로세스(child process)가 있는가 검사하여(250단계), 없으면 종료한다. 만일 죽은 자식 프로세스가 있으면 죽은 자식 프로세스(child process)의 고유번호(ID)를 얻는다. (251단계) 상기 과정에서 얻은 프로세스 고유번호(ID)를 가지고 데이타 베이스에서 관련된 프로그램을 찾는다. (252단계) 만일 찾지 못했으면 프로세스 고유번호(pid)나 원인만을 가지고 등재기(logger)를 호출하여 로그(log) 종류에 따라 적당한 메세지를 만들어 로그 모드에 따라 화일 또는 메세지 큐(queue)에 메세지를 기록한다. (254단계) 만일 죽은 자식 프로세스에 관련된 프로그램을 찾았으면, 프로그램 고유번호, 프로세스 고유번호, 죽은 원인, 시간 등을 가지고 등재기(logger)를 호출하여 로그(log) 종류에 따라 적당한 메세지를 만들어 로그 모드에 따라 화일 또는 메세지 큐(queue)에 메세지를 기록한다. (255단계) 그리고 나서 응용프로세스 관리기에 의해 죽은 프로세스인가 검사한다. (256단계) 즉 중지 인터럽트로 죽은 프로세스인가 검사하여, 중지 인터럽트로 죽은 프로세스이면 프로세스의 재시작을 뜻하는 출생플래그(spawnflag)를 참(true)으로 세팅하고 프로그램의 종료 상태를 '중지'로 하고(257), 상기 과정으로 가서 다시 죽은 자식 프로세스가 있는가 검사한다. 만일 응용프로세스 관리기에 의해 죽은 프로세스가 아니면 프로그램의 동작형태(action type)가 재출생(respawn)인가 검사하여(259단계), 재출생(respawn)이 아니면 프로그램의 종료상태를 '완료'로 한다.(259단계) 만일 동작형태가 재출생(respawn)이면, 프로그램 고유번호(ID)를 가지고 종료 프로세스부를 호출한다. (260단계) 그리고 종료시킨 프로세스들이 모두 죽을 때까지 기다린 후(261단계), 종료(kill)가 되고나면 프로그램 고유번호(ID)를 가지고 출생(spawn) 프로세스부를 호출하여 죽은 프로세스를 살린 후(262단계), 종료(kill)된 프로세스가 존재하면 상기 과정을 계속하고 존재하지 않으면 종료한다.
한편 이상에서 설명한 내용중 종료(kill) 프로세스부(120)와 출생(spawn) 프로세스부(122)를 상세히 설명한다. 제2e도는 종료(kill) 프로세스부의 흐름도를 도시한 것으로서, 종료(kill) 프로세스부의 동작은 다음과 같이 이루어진다. 먼저 프로그램 데이타 베이스(130)에 있는 자식(child) 프로그램 리스트를 역순으로바꾼다. (270단계) 여기서 자식 프로그램 리스트란 하나의 목적을 이루기 위해 여러 프로그램들이 그룹을 형성하고 있을 때 각 프로그램들의 수행 순서를 말하며 연결리스트(linked list)로 되어 있다. 상기 270 단계에 이어 출생플래그(spawnflag)를 거짓(false)으로 한 후(271단계), 자식 프로세스의 프로세스 고유번호(pid)와 종료신호(killing signal)를 얻어 종료신호(killing signal)를 프로세스 고유번호(pid)에 해당하는 프로세스로 전송하여 (272단계) 프로세스를 죽인다. 그리고 나서 종료 할 자식(child) 프로그램이 더 있으면 다시 상기 271단계로 가고, 더 이상 없으면 입력된 프로그램의 고유번호(ID)를 가진 프로세스로 종료신호(killing signal)를 보내어(274단계) 프로세스를 종료한다.
그리고 자식(child) 리스트를 원래 순서대로 바꾼 후(275단계), 종료한다.
제2f도는 출생(spawn) 프로세스부(122)의 흐름도를 도시한 것으로서 출생(spawn) 프로세스부는 다음과 같이 동작한다. 프로세스가 죽었다 살았다하는 과정을 지나치게 자주 수행하면 이 프로세스는 비정상적이다.
따라서 이런 프로세스는 다시 살릴 필요가 없다. 그리하여 먼저 프로세스가 최근 120초 동안 10회 이상 출생(spawn) 되었는지 검사한다. (280단계) 만일 10회 이상 출생(spawn) 되었으면 이 프로그램의 상태를 가지고 등재기(logger)를 호출하고(282단계), 종료한다. 만일 10회 이상 출생(spawn)되지 않았으면 입력된 프로그램을 유닉스의 생성(fork)와 실행(exec)를 통해 출생(spawn)시킨다. (283단계) 그리고 나서 출생(spawn)된 프로세스에 대한 자료를 가지고 등재기(logger)를 호출한 후(284), 프로그램의 동작형태가 wait인지 검사한다.(285단계) 동작형태가 대기(wait)이면 출생(spawn)된 프로세스가 종료될 때까지 기다리고(286), 만일 동작형태가 대기(wait)가 아니면 바로 자식(child)이 더 있는지 검사한다. (287) 자식(child)이 더 없으면 종료하고, 더 있으면 자식 프로그램에 대한 자료를 데이타 베이스에서 찾아 생성(fork)과 실행(exec)을 통해 프로세스를 출생(spawn) 시킨다. (288단계) 그리고 나서 출생(spawn)된 프로세스에 대한 자료를 가지고 등재기(logger)를 호출하여 로그(log) 종류에 따라 적당한 메세지를 만들어 로그 모드에 따라 화일 또는 메세지 큐(queue)에 메세지를 기록한 후(289단계), 자식(child) 프로그램의 동작형태가 대기(wait)인가 검사하여 대기(wait)가 아니면 상기 과정을 수행하고, 대기(wait)이면 출생(spawn)된 프로세스가 종료될 때까지 기다려서(291단계), 더 이상 자식(child)이 없으면 종료한다.
한편 제3도는 응용 프로세스 관리시 등록 프로그램 데이타 베이스에서 등록된 프로그램을 삭제하는 방법에 대한 흐름도를 도시한 것으로서, 이에 대한 설명은 다음과 같다. 먼저 삭제하고자 하는 프로그램의 범위를 받아 들인다. (300단계) 여기서의 프로그램의 범위는 프로그램 단위, 프로그램 그룹 단위, 등록된 프로그램 전체의 세가지 경우로 나누어 진다. 입력을 받아 들인 후 데이타 베이스에서 해당 프로그램을 찾는다.(310단계) 찾아진 프로그램을 기초로 삭제할 프로그램을 선택하여 (320단계), 선택된 프로그램의 각 정보 영역을 디스플레이한다. (330단계) 그리고 나서 삭제할 것인지 확인한 후(340), 프로그램 데이타 베이스에서 삭제한 후(350단계), 종료한다.
제4도는 응용 프로그램 관리시 등록과정에서 등록된 프로그램에 대한 정보를 프로그램 데이타 베이스에서 수정하는 방법에 대한 흐름도를 도시한 것으로서, 이에 대한 설명은 다음과 같다. 먼저 수정할 프로그램의 범위를 입력으로 받는다. (400단계) 여기서도 마찬가지로 프로그램의 입력 범위는 세가지로 나누어진다. 수정할 프로그램의 범위를 입력으로 받으면 데이타 베이스에서 해당 프로그램을 찾는다. (402단계) 찾았으면 수정할 프로그램을 선택한 후(404단계), 수정할 정보 영역이 있는지 검사하여(406단계), 있으면 정보영역 번호를 선택하여(408단계), 정보영역 값을 입력한다. (410단계) 그리고 입력된 값이 유호하면 상기 406단계로 가서 수정할 정보 영역이 더 있는지 검사하고 유효하지 않으면 원래 값으로 복귀하여 (414단계), 상기 406단계로 간다. 더 이상 수정할 정보 영역이 없으면 수정된 값을 저장할 것인지 확인하여(416단계), 데이타 베이스에 저장을 한 후(418단계), 종료한다.
제5도는 응용 프로세스 관리시 등록된 프로그램을 데이타 베이스에서 검색하는 방법에 대한 흐름도를 도시한 것으로서, 이에 대한 설명은 다음과 같다. 먼저 검색할 프로그램의 범위를 받아들인다. (500단계) 여기서의 프로그램 범위도 상기의 세가지 경우로 나누어 진다. 데이타 베이스에서 해당 프로그램을 찾는다. (510단계) 찾은 프로그램의 각 정보영역을 디스플레이한다. (520단계) 디스플레이된 정보영역을 방향 키를 가지고 선택하여 키입력에 따라 프로그램을 검색한다. (540단계) 만일 'ESC' 키입력이 있으면 검색을 종료한다.
제6도는 응용 프로세스 관리시 관리작업을 종료하기 위해 관리하고 있던 프로그램 정보를 백업하는 방법에 대한 흐름도를 도시한 것으로서, 이에 대한 설명은 다음과 같다. 먼저 프로그램 정보를 저장하고 있던 백업용 저장화일(.apm.tab.bak)이 존재하는지 검사하여 (600단계), 있으면 이 화일을 삭제하고 (610단계), 저장화일(.apm.tab)이 있는지 검사하여(620단계) 저장화일(.apm.tab)의 이름을 백업용 저장화일(.apm.tab.bak)로 화일 이름을 바꾼다. (630단계) 그리고 나서 데이타 베이스에 저장된 프로그램들의 각 정보 영역을 저장화일(.apm.tab)에 저장한 후(640단계), 종료한다.
제7도는 응용 프로세스 관리시 프로세스의 상태를 표시하는 방법에 대한 흐름도를 도시한 것으로서, 이에 대한 설명은 다음과 같다. 먼저 디스플레이 할 프로그램의 범위를 받아들인다. (700단계) 여기서의 프로그램 범위도 상기와 마찬가지로 세가지 경우로 나누어 진다. 각 프로그램에 대하여 데이타 베이스에서 현재 수행중인 프로세스의 고유번호(ID)를 얻는다. (710단계) 그리고 나서 얻어진 프로세스 고유번호(ID)에 대해서 프로세스의 상태를 얻고나서(720단계), 화면에 각 프로세스의 상태를 디스플레이한다. (730단계) 그리고 나서 연속 모드인지 검사하여 연속모드이면 수면(sleep)한 후 (750단계), 상기 710단계로 간다. 연속모드가 아니면 종료한다. 여기서 연속모드란 일정시간 마다 반복하여 프로세스의 상태를 보여 주는 모드를 의미하고, 연속모드가 아니면 한번만 프로세스의 상태를 보여주는 모드이다.
제8도는 응용 프로세스 관리시 실행중인 프로세스를 강제로 중단시키는 방법에 대한 흐름도를 도시한 것으로서, 이에 대한 설명은 다음과 같다. 중지(stop)시킬 프로그램의 범위를 입력으로 받는다. (800단계) 이 때에도 마찬가지로 프로그램 고유번호(ID), 그룹 고유번호(ID), 프로그램 전체의 세가지 경우가 있을 수 있다. 범위를 체크하여(810단계), 범위가 프로그램 고유번호(ID) 일 경우 프로그램 고유번호(ID)를 가지고 상기 제2e도에서 설명한 종료 프로세스부를 호출하여 해당 프로세스를 종료한 후(820단계), 종료 시킨 모든 프로세스가 실질적으로 종료 될 때까지 기다려서 종료이 되고 나면(880단계), 종료한다. 만일 범위가 그룹 고유번호(ID)일 경우 데이타 베이스에서 그룹의 마스터 프로그램을 찾아(830단계), 마스터 프로그램 고유번호(ID)를 가지고 종료 프로세스부를 호출한 후(840단계), 상기 880 단계를 행한다. 만일 범위가 전체 프로그램 일 경우 데이타 베이스에서 마스터 프로그램을 찾아(850단계), 찾은 마스터 프로그램 고유번호(ID)를 가지고 종료 프로세스부를 호출하여 해당 프로세스를 종료 하고(870단계), 다시 마스터 프로그램을 찾는다. 마스터 프로그램이 더 이상 존재하지 않을 경우에는 상기 880 단계, 즉 종료시킨 모든 프로세스가 실제적으로 종료될 때까지 기다린 후 종료한다.
제9a도 및 제9b도는 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리할 때에 데이타 베이스에 등록된 프로그램 중 관리 대상에 속하지 않는 프로세스를 관리하는 방법을 흐름도로 도시한 것으로서, 이에 대한 설명은 다음과 같다. 먼저 폴링할 프로그램을 입력으로 받아들여(900), 폴링모드를 체크한다.(902단계) 받아들인 프로그램의 폴링모드가 오프(OFF)이면 프로세스 고유번호(ID)를 입력으로 받아(904단계), 해당 프로세스가 살아 있는지 확인한다. (906단계) 확인한 결과(908단계), 만일 프로세스가 동작 중이면 받아들인 프로그램의 폴링 모드를 온(ON) 상태가 되도록 하고 데이타 베이스에 프로세스 고유번호(ID)를 저장한 후(910단계), 데이타 베이스에 이미 폴링되고 있는 다른 프로세스가 있는지 체크하여(912단계), 만일 없으면 알람(alarm)을 작동시키고 (914단계), 종료한다. 여기서 알람(alarm)은 일정시간 후 운영체제가 '알람신호(SIGALRM)'라는 신호를 보내도록 하는 함수이다. 상기 908단계에서 확인한 결과 만일 프로세스가 생존하고 있지 않으면 바로 종료한다. 그리고 상기 912 단계에서 데이타 베이스에 이미 폴링되고 있는 다른 프로세스가 있으면 바로 종료한다.
한편 상기 902 단계에서 폴링모드가 온(ON)이면 해당 프로그램을 폴링하고 있었는가 체크하여(916단계), 폴링하고 있었으면 데이타 베이스에서 프로세스 고유번호(ID)를 제거하고(918단계), 이미 폴링되고 있는 다른 프로세스가 있는가 체크한다.(920단계) 상기 920단계에서 체크하여 없으면 알람(alarm)를 중지시키고(922단계), 있으면 바로 종료한다. 한편 상기 916단계에서 폴링하고 있지 않았으면 바로 종료한다.
한편 상기 제9a도에서 알람(alarm) 함수가 동작하면 일정시간 후 운영체제에서 '알람신호(SIGALRM)'라는 신호를 보내 준다. 이 신호는 알람신호(SIGALRM) 처리부에서 처리를 하게 된다. 이를 흐름도로 도시한 것이 제9b도이다. 이에 대한 설명을 하면 다음과 같다.
'알람신호(SIGALRM)' 라는 인터럽트가 입력되면 알람신호(SIGALRM) 처리부는 먼저 폴링 모드로 세팅되어 있는 프로그램을 찾는다. (950) 만일 폴링 모드로 세팅된 프로그램을 찾았으면 데이타 베이스에서 해당 되는 프로그램의 프로세스 고유번호(ID)를 얻어 그 프로세스가 살아있는지 검사한다. (954단계) 검사하여 죽지않고 살아있으면 다시 상기 950단계로 가서 폴링모드로 세팅된 또 다른 프로그램을 찾고, 만일 죽었으면 프로그램 고유번호(ID), 프로세스 고유번호(ID), 시간등을 가지고 등재기(logger)를 호출한다. (958) 그리고 나서 동작형태(action type)를 검사하여(960), 동작형태가 재출생(respawn) 이면 종료 프로세스를 호출하고(962), 종료 시킨 프로세스가 죽을 때까지 기다린 후(964단계), 죽었으면 출생(spawn) 프로세스를 호출하여 프로세스를 생성한 후(966단계), 프로그램의 폴링 모드를 오프(OFF)로 하여 (968단계) 응용프로세스 관리기가 직접 프로세스를 관리한다. 그리고 다시 상기 950 단계로 가서 폴링 모드가 세팅된 또 다른 프로그램이 있는가 찾아서 있으면 상기 954단계로 가고, 만일 폴링 모드가 세팅된 프로그램이 없으면 등록된 프로그램 중 폴링 모드가 온(ON)된 프로그램이 있는가 체크하여(970단계), 있으면 알람(alarm)을 발생시키고(972) 종료하고, 없으면 바로 종료한다.
제10도는 응용 프로세스 관리기를 이용하여 응용 프로세스를 관리할 때에 응용 프로세스의 로그(log) 사항을 기록하는 장소를 지정하는 방법을 흐름도로 도시한 것으로서, 이에 대한 설명은 다음과 같다. 먼저 현재의 로그(log) 모드를 화면에 보여준다. (1000단계) 그리고 새로운 로그 모드를 입력으로 받아들인 후(1010단계), 입력된 로그 모드가 무엇인지 검사한다. (1020 단계) 새로운 로그 모드가 메세지 큐(message queue)이면 메세지 큐 고유번호(ID)를 입력으로 받아(1030단계), 메세지 큐를 생성한다. (1040단계) 그러나 나서 이전의 로그 모드가 닫힌다는(close) 정보를 가지고 등재기(logger0를 호출하고(1070단계), 이전의 로그 모드가 파일인지 검사하여(1075단계), 화일이었다면 화일을 닫는다. (1080단계) 그리고 나서 로그 모드를 새로운 로그 모드로 바꾸고(1090단계), 로그 모드가 열렸다는 정보를 가지고 등재기(logger)를 호출한다. (1100단계) 만일 1075단계에서 이전의 로그모드가 파일이 아니면, 바로 1090단계로 진행한다. 그리고 새로운 로그 모드에 대한 정보를 특정 화일에 기록한 후(1110단계), 종료한다.
한편 상기 1020 단계에서 새로운 로그 모드가 화일이면 화일 이름을 받아들이고(1050단계), 화일을 연 후(1060단계), 상기 1070 단계로 간다. 그리고 상기 1020 단계에서 새로운 로그 모드가 없으면 바로 1070 단계를 수행한다.
상술한 바와 같이 본 발명에 의하면, 여러 개의 프로세스로 구성된 하나의 응용 소프트웨어에 대한 관리를 유닉스 운영체제의 초기화(init) 보다 효율적이며 안정적으로 할 수 있다.
Claims (14)
- 프로그램에 대한 정보를 저장하고 관리하는 프로그램 데이타 베이스에 관리하고자 하는 프로그램을 등록하는 제1과정; 상기 제1과정에서 등록된 프로그램 중 적어도 하나 이상의 관리하고자 하는 프로그램을 프로세스로 생성하여 실행하는 제2과정; 및 상기 제2과정에서 실행되고 있는 프로세스가 실행 중에 소프트웨어 에러 등 비정상적으로 죽었을 경우, 죽은 프로세스 그리고 죽은 프로세스와 선후 관계를 맺으며 수행되는 프로세스들을 함께 복구하는 제3과정을 포함함을 특징으로 하는 응용 프로세스 관리 방법.
- 제1항에 있어서, 상기 제1과정은 상기 프로그램 데이타 베이스에서 할당되지 않은 프로그램 고유번호(ID)를 찾아 등록하고자 하는 프로그램에 고유번호를 부여하는 과정; 상기 프로그램 데이타 베이스에서 필요로 하는 프로그램에 대한 정보를 받아들이는 과정; 및 상기 과정에서 받아들인 정보 값이 유효하면 프로그램 데이타 베이스에 저장하는 과정을 특징으로 하는 응용 프로세스 관리방법.
- 제2항에 있어서, 상기 프로그램 데이타 베이스에서 필요로 하는 정보는 등록될 프로그램의 프로그램 고유번호(ID); 프로그램의 그룹에 대한 고유번호; 프로그램 이름;프로그램 그룹 이름; 프로세스의 표준 입력을 대신하는 화일인 입력 간접 화일; 프로세스의 표준 출력을 대신하는 화일인 출력 간접 화일; 프로세스의 표준 에러를 대신하는 화일인 에러 간접 화일; 프로그램의 환경 세팅을 위한 변수와 값으로 된 환경; 실제적으로 프로그램이 수행되어질 명령; 프로세스가 종료되었을 경우 프로그램 관리기의 동작 형태를 나타내는 동작 형태; 프로그램 관리기가 프로세스를 죽을 때 사용되는 종료신호(killing signal); 그룹으로 묶여진 프로그램들 중에서 마스터가 되는 프로그램을 표시하는 마스터 프로그램 플래그; 및 프로그램 그룹내에서 우선 순위가 뒤인 프로그램들의 리스트를 나타내는 자식 프로그램 리스트로 구성됨을 특징으로 하는 응용 프로세스 관리방법.
- 제1항에 있어서, 상기 제2과정은 시작하고자 하는 프로그램의 범위를 받아들이는 제11과정; 상기 제11과정에서 받아들인 프로그램이 만일 하나의 프로그램일 경우, 프로그램 고유번호(ID)를 가지고 관련된 자식 프로세스를 다 죽이고 나서 프로세스를 생성(fork)하여 실행(exec)시키는 제12과정; 상기 제11과정에서 받아들인 프로그램이 만일 프로그램의 그룹일 경우, 등록된 프로그램의 데이타 베이스에서 그룹의 첫번째 시작 프로그램(마스터 프로그램)을 찾아 마스터 프로그램 고유번호(ID)를 가지고 관련된 자식 프로세스를 다 죽이고 나서, 프로그램 그룹내의 프로그램 수행 순서대로 프로세스를 생성하여 실행시키는 제13과정; 및 상기 제11과정에서 받아들인 프로그램이 만일 데이타 베이스에 등록된 모든 프로그램일 경우, 데이타 베이스에서 마스터 프로그램이 존재하지 않을 때까지 제13과정을 수행하는 제14과정을 특징으로 하는 응용 프로세스 관리방법.
- 제1항에 있어서, 상기 제3과정은 죽은 프로세스의 고유번호(ID)를 얻어 데이타 베이스에서 관련된 프로그램을 찾는 과정; 프로그램 고유번호, 프로세스 고유번호, 죽은 원인, 시간 등을 가지고 기록 화일에 기록하는 과정; 및 프로그램 고유번호(ID)를 가지고 자식 프로세스를 죽이고 나서, 프로세스를 생성하여 실행시키는 과정들을 관련된 자식 프로세스 수 만큼 반복해서 수행함을 특징으로 하는 응용 프로세스 관리방법.
- 응용 프로세스 관리시 프로그램 데이타 베이스에 등록된 프로그램을 삭제하는 방법에 있어서, 삭제하고자 하는 프로그램의 범위를 받아 들이는 과정; 프로그램 데이타 베이스에서 상기 입력된 범위에 해당되는 프로그램을 찾는 과정; 삭제할 프로그램을 선택하는 과정; 상기 과정에서 선택한 프로그램의 각 정보영역을 디스플레이하는 과정; 및 프로그램 데이타 베이스에서 프로그램을 삭제하는 과정을 포함함을 특징으로 하는 등록 프로그램 데이타 베이스의 등록된 프로그램 삭제 방법.
- 응용 프로세스 관리시 등록 과정에서 등록된 프로그램에 대한 정보를 프로그램 데이타 베이스에서 수정하는 방법에 있어서, 수정하고자 하는 프로그램의 범위를 받아 들이는 과정; 프로그램 데이타 베이스에서 상기 입력된 범위에 해당되는 프로그램을 찾는 과정; 수정할 프로그램을 선택하는 과정; 수정할 정보영역을 선택하여 정보영역의 값을 입력하는 과정; 및 입력된 정보영역의 값을 프로그램 데이타 베이스에 저장하는 과정을 포함함을 특징으로 하는 등록 프로그램 데이타 베이스의 프로그램 수정 방법.
- 응용프로세스 관리시 등록 과정에서 등록된 프로그램을 프로그램 데이타 베이스에서 검색하는 방법에 있어서, 검색하고자 하는 프로그램의 범위를 받아 들이는 과정; 프로그램 데이타 베이스에서 상기 입력된 범위에 해당되는 프로그램을 찾는 과정; 및 상기 과정에서 찾은 프로그램의 각 정보영역을 디스플레이하는 과정을 포함함을 특징으로 하는 등록 프로그램 데이타 베이스의 프로그램 검색 방법.
- 제8항에 있어서, 검색하고자 하는 프로그램의 범위는 프로그램, 프로그램 그룹, 프로그램 전체의 세가지 경우로 나누어짐을 특징으로 하는 등록 프로그램 데이타 베이스의 프로그램 검색 방법.
- 응용 프로세스 관리시 관리작업을 종료하기 위해 관리하던 프로그램 정보를 백업하는 방법에 있어서, 프로그램 정보를 저장하고 있던 백업용 저장화일이 존재하면 삭제하는 과정; 프로그램 정보를 저장하고 있는 저장화일을 백업용 저장화일로 바꾸는 과정; 및 프로그램 데이타 베이스에 저장된 프로그램들을 각 정보영역의 정보를 저장화일에 저장하는 과정을 포함함을 특징으로 하는 관리작업 종료시 프로그램 데이타 베이스의 프로그램 백업 방법.
- 응용 프로세스 관리시 프로세스의 상태를 표시하는 방법에 있어서, 디스플레이 할 프로그램의 범위를 받아들이는 과정; 상기 과정에서 받아들인 프로그램에 대하여 프로그램 데이타 베이스에서 현재 수행중인 프로세스에 대한 프로세스 고유번호(ID)를 얻는 과정; 상기 과정에서 얻어진 프로세스 고유번호에 대해서 프로세스 상태를 얻는 과정; 및 화면에 각 프로세스의 상태를 디스플레이하는 과정을 포함함을 특징으로 하는 프로세스 상태 표시 방법.
- 응용 프로세스 관리시 실행 중인 프로세스를 강제로 중단시키는 방법에 있어서, 중단시킬 프로그램의 범위(프로그램 고유번호(ID), 그룹 고유번호, 프로그램 전체)를 받아들이는 과정; 범위가 프로그램이면, 죽은 프로세스의 재실행 여부를 표시하는 출생(spawn) 플래그를 '재실행 아님' 으로 표시하고 선택된 프로그램 고유번호를 가진 프로세스에게 종료신호(killing signal)을 보내어 프로세스 죽이는 과정; 범위가 프로그램 그룹이면, 데이타 베이스에서 프로그램 그룹에서 처음 시작하는 프로그램(마스터 프로그램)을 찾아서 죽은 프로세스의 재실행 여부를 표시하는 출생(spawn) 플래그를 '재실행 아님'으로 표시하고 관련된 자식 프로세스들의 수행 순서의 역순으로 자식 프로세스를 죽이는 과정; 범위가 프로그램 전체이면 상기 프로그램 그룹에서 수행하는 과정을 마스터 프로그램이 없을 때까지 반복하는 과정; 및 종료 시킨 모든 프로세스가 실제적으로 종료 될 때까지 기다리는 과정을 포함함을 특징으로 하는 실행 중인 프로세스를 강제로 중단시키는 방법.
- 응용 프로세스를 관리할 때에 데이타 베이스에 등록된 프로그램 중 관리 대상에 속하지 않은 프로세스를 관리하는 방법에 있어서, 관리하고자 하는 프로그램을 폴링 방식으로 관리하기 위해 프로그램의 폴링모드를 세팅하는 과정; 폴링을 하기 위해 운영 체제에서 일정시간 마다 신호를 보내어, 프로세스의 생사를 검사하게 하고, 프로세스가 살아 있으면 그대로 두고, 프로세스가 죽었으면 다시 살리는 함수인 알람(alarm)을 준비하는 과정; 폴링할 프로그램을 받아들여 폴링모드가 오프이면, 폴링을 하기 위해 프로세스의 고유번호(ID)를 받아 들이는 과정; 상기 과정의 프로세스 고유번호에 해당하는 프로세스가 살아 있으면 데이타 베이스에서 프로세스 고유번호를 저장한 후, 상기 알람(alarm) 함수가 작동되어 있지 않고 있으면 알람(alarm)을 작동시켜 프로세스를 관리하는 과정; 및 상기 과정에서 폴링할 프로그램의 폴링모드가 온(ON)이면, 데이타 베이스에서 해당 프로세스 고유번호를 제거하고, 폴링 모드가 온인 프로그램이 없으면 작동중인 알람(alarm)을 중지시키는 과정을 포함함을 특징으로 하는 데이타 베이스에 등록된 프로그램 중 관리 대상에 속하지 않는 프로세스를 관리하는 방법.
- 응용 프로세스를 관리할 때에 응용 프로세스의 로그 사항을 기록하는 장소를 지정하는 방법에 있어서, 현재의 로그 모드의 종류를 화면에 보여주는 과정; 새로운 로그 모드를 받아들이는 과정; 로그 모드가 메세지 큐이면 메세지 큐 고유번호를 받아들여 메세지 큐를 만들고, 로그 모드가 화일이면 화일 이름을 받아들여 화일을 오픈하는 과정; 이전의 로그 모드가 닫힌다는 정보를 가지고 등재기(logger)를 호출하는 과정; 이전의 로그 모드가 화일이었다면 화일을 닫는 과정; 로그모드를 새로운 로그모드로 세팅하는 과정; 새로운 로그 모드가 오픈되었다는 정보를 가지고 등재기(logger)를 호출하는 과정; 새로운 로그 모드에 대한 정보를 특정 화일에 기록하는 과정을 포함함을 특징으로 하는 프로세스 기록 저장 장소 지정 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950022176A KR0164412B1 (ko) | 1995-07-25 | 1995-07-25 | 복수의 응용 프로세스 관리 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950022176A KR0164412B1 (ko) | 1995-07-25 | 1995-07-25 | 복수의 응용 프로세스 관리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR970007625A KR970007625A (ko) | 1997-02-21 |
KR0164412B1 true KR0164412B1 (ko) | 1999-01-15 |
Family
ID=19421589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950022176A KR0164412B1 (ko) | 1995-07-25 | 1995-07-25 | 복수의 응용 프로세스 관리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR0164412B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010064807A (ko) * | 1999-12-18 | 2001-07-11 | 이계철 | 프로세스 동적 제어 장치 및 그 방법 |
KR100462988B1 (ko) * | 2000-11-24 | 2004-12-23 | 엘지전자 주식회사 | 컴퓨터 시스템의 다중 프로세스 관리 방법 |
KR100445889B1 (ko) * | 2001-10-10 | 2004-08-25 | 엘지전자 주식회사 | 에이티엠 교환기에서 프로세스 상태 관리 방법 |
US7373558B2 (en) * | 2004-09-23 | 2008-05-13 | Intel Corporation | Vectoring process-kill errors to an application program |
-
1995
- 1995-07-25 KR KR1019950022176A patent/KR0164412B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR970007625A (ko) | 1997-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2258252C (en) | Delta model processing logic representation and execution system | |
US7080105B2 (en) | System and method for data backup | |
CN106708740B (zh) | 脚本测试方法及装置 | |
US20080244589A1 (en) | Task manager | |
JP2001134454A (ja) | コンピューティング環境において構成要素を更新する方法、システムおよび製造品 | |
US5761407A (en) | Message based exception handler | |
CN111666141A (zh) | 任务调度方法、装置、设备及计算机存储介质 | |
CN114979029B (zh) | 一种虚拟机器人的控制方法、装置、设备及存储介质 | |
US20080172669A1 (en) | System capable of executing workflows on target applications and method thereof | |
US8472034B2 (en) | Job control device, job control file, job control method, and job control program | |
KR0164412B1 (ko) | 복수의 응용 프로세스 관리 방법 | |
JP2000078169A (ja) | サーバ設定装置 | |
CN117252559A (zh) | 业务流程的处理方法、装置、计算机设备、存储介质 | |
WO1995032476A1 (en) | A system and method for creating design configurations and for controlling the execution of multiple design tools | |
CN114598604A (zh) | 虚拟网络功能实例信息的监控方法、监控装置及终端 | |
JP3586943B2 (ja) | プログラムロード装置と方法 | |
US20070022108A1 (en) | Predicate-logic retrieval system | |
JP2002196939A (ja) | 常駐プロセスの起動・終了制御装置とその制御方法及びその方法を記録した記録媒体 | |
CN115981746A (zh) | 基于Windows的任务计划非常规自启动方法、装置及相关介质 | |
CN117667170A (zh) | 一种服务器负载感知的Linux内核自动升级方法及系统 | |
JPH03265033A (ja) | 端末プログラム起動管理方式 | |
CN116841983A (zh) | 数据回滚方法、装置及计算机可读存储介质 | |
JPH0546452A (ja) | コミツトメント制御システム | |
KR100926832B1 (ko) | 망 요소 관리를 위한 효율적인 형상화 방법 | |
CN118227471A (zh) | 一种动态依赖驱动的软件测试任务组织系统及组织方法 |
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: 20070830 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |