KR100258084B1 - Forced procedure call service implementation method - Google Patents

Forced procedure call service implementation method Download PDF

Info

Publication number
KR100258084B1
KR100258084B1 KR1019970062781A KR19970062781A KR100258084B1 KR 100258084 B1 KR100258084 B1 KR 100258084B1 KR 1019970062781 A KR1019970062781 A KR 1019970062781A KR 19970062781 A KR19970062781 A KR 19970062781A KR 100258084 B1 KR100258084 B1 KR 100258084B1
Authority
KR
South Korea
Prior art keywords
procedure
service
cross
call
debugging
Prior art date
Application number
KR1019970062781A
Other languages
Korean (ko)
Other versions
KR19990042078A (en
Inventor
전성익
최완
이은향
Original Assignee
이계철
대한민국전기통신공사
정선종
대한민국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 이계철, 대한민국전기통신공사, 정선종, 대한민국전자통신연구원 filed Critical 이계철
Priority to KR1019970062781A priority Critical patent/KR100258084B1/en
Publication of KR19990042078A publication Critical patent/KR19990042078A/en
Application granted granted Critical
Publication of KR100258084B1 publication Critical patent/KR100258084B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

PURPOSE: A method is provided to reduce procedures of recreating or recompiling a test program for the reexecution of the program. CONSTITUTION: If a procedure forced call service request message is received from a cross-debugging client(S1, S2), a service demon detects the request message in order to accept the request(S3). In case of accepting the request, the service demon prepares for a user procedure to perform forced call(S5, S6). And then, the user procedure performs the froced call(S7). If the service demon receives a message notifing that the forced call is completed, the service domon transmits the result of the service to the cross-debugging client(S8).

Description

프로시듀어 강제 호출 서비스 실현 방법How to Implement Procedure Forced Call Service

본 발명은 실시간 운영체계인 확장 가능한 실시간 운영체계(Scalable Real-time Operating System, 이하 SROS라 칭함)를 운영체계로 사용하는 대용량 교환 시스템에서 방대한 소프트웨어를 개발함에 있어 고급 디버깅을 할 수 있게 개발한 교처디버깅 서버에서의 프로시듀어 강제 호출 서비스 실현 방법에 관한 것이다.The present invention is developed to enable advanced debugging in developing massive software in a large-scale exchange system using a scalable real-time operating system (hereinafter referred to as SROS) as a real-time operating system. A method for implementing a procedure forced call service in a debugging server.

일반적으로 교환 시스템은 내장형(embedded) 응용분야이므로 유닉스(UNIX) 운영체계를 근간으로 하는 선 워크스테이션이나 크레이 컴퓨터 등의 호스트 컴퓨터에 편집 및 컴파일 환경을 두고 타겟인 교환 시스템용 목적 코드를 생산하여 타겟 교환 시스템에 다운로딩하여 실행시키는 방법을 사용한다.In general, since the exchange system is an embedded application field, the target system for the target exchange system is produced by providing an editing and compilation environment on a host computer such as a sun workstation or a cray computer based on the UNIX operating system. Download and run on the exchange system.

이러한 교차 개발 환경하에서 효과적인 시험환경 및 디버깅 환경을 제공하기 위해서는 호스트 컴퓨터에서 타겟 교환 시스템에서 실행하는 프로그램을 시험하고 디버깅할 수 있는 방법이 요구된다.In order to provide an effective test environment and debugging environment under such a cross-development environment, a method for testing and debugging a program running on a target exchange system on a host computer is required.

상기 요구사항의 일환으로 개발한 교차디버깅 서버는 타겟 교환 시스템에서 동작하며 호스트에 있는 교차 디버깅 클라이언트에 대한 디버깅 서비스를 수행하는 디버깅 서버로서의 역할을 담당한다.The cross-debugging server developed as part of the above requirements operates in the target switching system and serves as a debugging server that performs debugging services for the cross-debugging clients on the host.

본 발명은 SROS의 교차 디버깅 서버의 서비스 항목 중 하나인 프로시듀어 강제 호출 서비스 실현 방법에 관한 것이다.The present invention relates to a procedure forced call service realization method which is one of service items of a cross debugging server of SROS.

교차디버깅 서버의 프로시듀어 강제 호출 서비스란 디버깅 중인 사용자 프로그램의 임의의 프로시듀어를 강제로 임의의 시점, 임의의 프로세스에서 호출할 수 있도록 제공하는 디버깅 서비스이다.The forced procedure call service of the cross-debugging server is a debugging service that provides any procedure of a user program being debugged to be called at any time and in any process.

즉, 임의의 프로세스의 실행 수순에 있지 않은 프로시듀어를 강제로 호출할 수 있게 해 줌으로써 기존의 프로그램 실행 수순을 강제로 변경할 수 있게 해준다.In other words, by forcibly calling a procedure that is not in the execution order of any process, the existing program execution order can be forcibly changed.

종래에는 타겟 교환 시스템에서 실행하는 프로그램을 작성하거나 시험하는 경우 모든 경우의 수에 해당하는 시험 프로그램을 호스트 컴퓨터에서 작성하여 컴파일한 다음 타겟 교환 시스템으로 다운 로당하여 실행시켜 시험하고 오류가 발생할 경우 다시 호스트 컴퓨터에서 작성하여 컴파일한 다음 타겟 교환 시스템으로 다운로딩하여 시험하는 일련의 과정을 반복하는 방법으로 프로그램을 시험하거나 디버깅하였다.Conventionally, when writing or testing a program running on a target switching system, a test program corresponding to all cases is created and compiled on a host computer, downloaded to the target switching system, executed, tested, and re-hosted when an error occurs. The program was tested or debugged by repeating a series of procedures that were created and compiled on a computer, then downloaded and tested on the target exchange system.

이것은 하나의 소프트웨어를 시험하거나 디버깅하기 위해 프로그램을 구성하고 있는 모든 경우의 수 만큼의 시험 프로그램 작성 과정이 요구된다.This requires the creation of as many test programs as there are all cases that make up a program to test or debug a piece of software.

이러한 번거로운 시험 프로그램의 작성, 시험 및 디버깅 과정을 간소화시켜 효과적으로 수행할 수 있도록 하는 방법이 소프트웨어 생산성 향상 차원에서 강력히 요구된다.There is a strong demand for software productivity that simplifies the creation, testing, and debugging of these cumbersome test programs so that they can be efficiently executed.

상기 사항을 이루기 위해 본 발명은 프로그램을 구성하고 있는 모든 프로시듀어를 프로그램내의 임의의 프로세스에서 임의의 시점에 임의의 프로시듀어를 호출하여 실행시킬 수 있는 방법을 제공하여, 따로 시험에 필요한 실행 수순을 따르는 시험 프로그램을 재 작성하거나 재컴파일하여 재실행시키는 과정을 축소시키는 것을 목적으로 한다.In order to achieve the above, the present invention provides a method for executing all procedures constituting a program by calling any procedure at any time in any process in the program, and executing separately required for testing. The objective is to reduce the process of rewriting or recompiling a test program following the procedure.

도 1 은 본 발명에 따른 하드웨어 시스템 구성도,1 is a configuration diagram of a hardware system according to the present invention;

도 2 는 본 발명에 따른 소프트웨어 기능 블록구성도,2 is a software functional block diagram according to the present invention;

도 3 은 본 발명이 적용되는 프로시듀어 강제 호출 서비스 실현 전체 흐름도,3 is a flowchart illustrating a procedure forced call service realization according to the present invention;

도 4 는 본 발명에 따른 프로시듀어 강제 호출 서비스 요청 수락 단계 처리흐름도,4 is a flowchart of a procedure forced call service request accepting step according to the present invention;

도 5 는 본 발명에 따른 프로시듀어 강제 호출 서비스 준비 단계 처리흐름도,5 is a flowchart of a procedure forced call service preparation step according to the present invention;

도 6 은 본 발명에 따른 프로시듀어 강제 호출 서비스 실행 단계 처리흐름도,6 is a flowchart of a procedure forced call service execution step according to the present invention;

도 7 은 본 발명에 따른 프로시듀어 강제 호출 서비스 마무리 단계 처리흐름도.7 is a flowchart of a procedure forced call service finishing step according to the present invention;

<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

100 : 타겟 교환 시스템100: target exchange system

110 : 스위치 망110: switch net

120 : 운용보전 프로세서120: operation maintenance processor

130 : 호처리 프로세서130: call processing processor

140 : SROS의 교차 디버깅 서버140: cross debugging server in SROS

141 : 서비스 데몬141: service daemon

142 : 원격 통신 처리부142: remote communication processing unit

143 : 디버깅 서비스 엔진143: Debugging Service Engine

150 : 사용자 프로그램150: user program

151 : 프로세스151: process

200 : 이더넷200: Ethernet

300 : 호스트 컴퓨터300: host computer

310 : 교차 디버깅 클라이언트310: cross debugging client

상기 목적을 달성하기 위해 본 발명은 SROS를 운영체계로 하는 운용보전 프로세서와 호처리 프로세서가 스위치 망으로 서로 연결된 타겟 교환 시스템, 교환 소프트웨어의 편집, 컴파일 및 교차디버깅을 위한 호스트 컴퓨터 및 상기 타겟 교환 시스템과 호스트 컴퓨터를 서로 물리적으로 연결해주는 통신망을 구비하는 장치에 적용되는 교차 디버깅 서버의 프로시듀어 강제 호출 서비스 실현 방법에 있어서, 호스트 컴퓨터에 있는 교차디버깅 클라이언트로부터 프로시듀어 강제 호출 서비스 요청을 수락하는 단계, 프로시듀어 강제 호출 서비스를 준비하는 단계, 프로시듀어 강제 호출 서비스를 실행하는 단계, 프로시듀어 강제 호출 결과를 호스트 컴퓨터의 교차디버깅 클라이언트에게 전달하는 단계를 포함하는 것을 특징으로 한다.In order to achieve the above object, the present invention provides a target exchange system in which an operation maintenance processor and a call processing processor, each of which has a SROS as an operating system, are connected to each other via a switch network, a host computer for editing, compiling, and cross-debugging of exchange software, and the target exchange system. A method for realizing a procedure forced call service of a cross-debugging server applied to a device having a communication network that physically connects a host computer with a host computer, the method comprising: accepting a procedure forced call service request from a cross-debugging client in a host computer And preparing a procedure forced call service, executing a procedure forced call service, and delivering a result of the procedure forced call to a cross-debugging client of the host computer.

이하 첨부된 도면을 참조하여 본 발명을 상세히 설명하면 다음과 같다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명에 따른 하드웨어 시스템 구성도로서, SROS를 운영체계로 하는 운용보전 프로세서(OperationMaintenance Processorm, 이하 OMP라 칭함)(120)와 호처리 프로세서(Subscriber Call Processor, 이하 SCP라 칭함)(130)가 스위치 망(110)으로 연결된 타겟 교환 시스템(100), 유닉스(UNIX)를 운영체계로 하는 호스트 컴퓨터(300), 그리고 상기 타겟 교환 시스템(100)과 호스트 컴퓨터(300)를 물리적으로 연결해주는 이더넷(200)으로 이루어져 있다.1 is a block diagram of a hardware system according to the present invention, which includes an operation maintenance processor (OMP) 120 and a caller processor (SCP) 130 as an operating system 130. ) Physically connects the target exchange system 100 connected to the switch network 110, the host computer 300 running the UNIX operating system, and the target exchange system 100 and the host computer 300. Ethernet 200 is made up of.

본 발명은 상기 타겟 교환 시스템(100)의 OMP나 SCP에 교차 디버깅 서버가 장착된 SROS 운영체계를 실장한 호스트 컴퓨터에는 교차 디버깅 클라이언트를 탑재한 다음 호스트 컴퓨터(300)에서 타겟 교환 시스템에서 실행하는 사용자 프로그램을 시험하거나 디버깅하고자 할 때 사용하는 상기 타겟 교환 시스템(100)의 교차 디버깅 서버가 제공하는 프로시듀어 강제 호출 서비스 실현 방법에 관한 것이다.According to the present invention, a user running on a target exchange system on the host computer 300 is equipped with a cross debugging client on a host computer equipped with an SROS operating system equipped with a cross debugging server in an OMP or SCP of the target exchange system 100. The present invention relates to a method for implementing a forced-procedure service provided by a cross-debugging server of the target switching system 100 used to test or debug a program.

도 2는 본 발명에 따른 소프트웨어 기능 블록구성도로서, 프로시듀어 강제 호출 서비스를 제공하기 위한 SROS의 교차 디버깅 서버(140)는 하나 이상의 서비스 데몬(141), 디버깅 서비스 엔진(143) 그리고 원격 통신 처리부(142)로 구성된다.2 is a software functional block diagram according to the present invention, in which the cross debugging server 140 of SROS for providing a procedure compulsory calling service includes one or more service daemons 141, a debugging service engine 143, and remote communication. It consists of a processing unit 142.

상기 원격 통신 처리부(142)는 호스트 컴퓨터에 있는 교차 디버깅 클라이언트(310)와 원격 통신을 제어하여 서비스 데몬에게 교차 디버깅 클라이언트로부터 수신한 프로시듀어 강제 호출 서비스 요청 메시지를 전달하고, 서비스 데몬이 서비스 결과를 호스트 컴퓨터에 있는 교차 디버깅 클라이언트에게 전달하고자 할 경우 이를 전송하는 역할을 한다.The remote communication processing unit 142 controls remote communication with the cross-debugging client 310 in the host computer to deliver a procedure forced call service request message received from the cross-debugging client to the service daemon, and the service daemon receives the service result. If you want to deliver it to a cross-debugging client on the host computer, it sends it.

상기 서비스 데몬(141)은 교차 디버깅 클라이언트로부터의 프로시듀어 강제 호출 서비스 요청을 수락할지의 여부를 결정하고, 수락할 경우 디버깅 서비스 엔진(143)을 이용한 사용자 프로그램(150)내의 임의의 프로세스가 프로시듀어 강제 호출을 실행할 수 있도록 제반 여건을 조성하고, 프로시듀어 강제 호출 실행이 완료되었음을 감지하여 교차 디버깅 클라이언트에게 서비스 완료에 따른 서비스 결과를 전달하는 역할을 한다.The service daemon 141 determines whether to accept a procedure forced call service request from a cross-debugging client, and if so, any process in the user program 150 using the debugging service engine 143 may be It creates all conditions to execute the forced procedure call, detects that the procedure forced call execution is completed, and delivers the service result upon completion of the service to the cross-debugging client.

디버깅 서비스 엔진(143)은 교차 디버깅 클라이언트(310)가 요구한 사용자 프로그램(150)내의 프로세스(151)가 프로시듀어 강제 호출을 실행하게 해준다.The debugging service engine 143 allows the process 151 in the user program 150 requested by the cross debugging client 310 to execute a procedure forced call.

도 3은 본 발명이 적용되는 프로시듀어 강제 호출 서비스 실현 전체 흐름도로서, 먼저 교차 디버깅 클라이언트로부터의 프로시듀어 강제 호출 서비스 요청 메시지를 기다리는 것으로 시작하는(S1) 서비스 데몬은 교차 디버깅 클라이언트로부터의 프로시듀어 강제 호출 서비스 요청 메시지를 수신하면(S2) 요청 메시지를 조사하여 서비스 요청에 따른 수락 여부를 결정한다(S3).3 is a flowchart illustrating a procedure forced call service realization to which the present invention is applied. First, a service daemon starting with waiting for a procedure forced call service request message from a cross-debugging client (S1) is a program from a cross-debugging client. Upon receiving the procedure forced call service request message (S2), the request message is examined to determine whether to accept the service request (S3).

상기 서비스 요청 수락 여부를 판단하여(S4) 수락할 수 없으면 오류메시지를 교차 디버깅 클라이언트에게 전송하고(S5), 수락하는 경우에는 디버깅 서비스 엔진을 이용한 사용자 프로세스가 프로시듀어 강제 호출을 실행할 수 있도록 준비한다(S6).It is determined whether or not the service request is accepted (S4). If it is not accepted, an error message is transmitted to the cross-debugging client (S5). If the service request is accepted, the user process using the debugging service engine is prepared to execute a procedure forced call. (S6).

사용자 프로세스가 프로시듀어 강제 호출을 실행할 수 있도록 준비한 후 서비스 데몬이 준비한 제반 여건을 바탕으로 하여 디버깅 서비스 엔진을 이용한 사용자 프로세스는 프로시듀어 강제 호출을 실행한다(S7).After the user process prepares to execute the procedure forced call, the user process using the debugging service engine executes the procedure forced call based on various conditions prepared by the service daemon (S7).

상기 서비스 데몬은 사용자 프로세스가 프로시듀어 강제 호출을 실행하는 동안 기다렸다가 사용자 프로세스로부터 실행 완료 여부 메시지를 수신하면 교차 디버깅 클라이언트에게 서비스 결과를 전송하는 등의 프로시듀어 강제 호출 서비스를 마무리하는 작업을 수행한다(S8).The service daemon waits while the user process executes the procedure forced call and finishes the procedure forced call service such as sending the service result to the cross-debugging client when receiving the execution completion message from the user process. (S8).

도 4는 본 발명에 따른 프로시듀어 강제 호출 서비스 요청 수락 단계 처리흐름도로서, 프로시듀어 강제 호출 실행 단계에서 필요한 관련 정보를 저장하기 위한 메모리 장소를 마련하고(S3a), 교차 디버깅 클라이언트로부터 수신한 서비스 요청 메시지에서 메시지 길이, 강제 호출 프로시듀어의 시작 주소, 정적 링크 정보, 입력 파라미터 및 반환값 저장 공간에 대한 정보가 올바른지 조사하고(S3b), 올바른가를 판단한다(S3c).4 is a flowchart illustrating a procedure forced call service request accepting step according to the present invention, and prepares a memory location for storing related information required in the procedure forced call execution step (S3a), and receives from a cross debugging client. In the service request message, the message length, the start address of the forced call procedure, the static link information, the input parameter, and the return value information about the storage space are checked (S3b), and it is determined (S3c).

상기 판단 후 올바르지 않으면 오류메시지를 교차 디버깅 클라이언트에게 전송하고(S3d) 종료한다.If it is not correct after the determination, an error message is sent to the cross-debugging client (S3d), and the process ends.

판단 후 올바른 경우는, 프로시듀어 강제 호출 실행 단계에서 사용하기 위해 강제 호출할 프로시듀어 시작 주소, 호출형태, 정적링크, 입력 파라미터들 및 반환값 여부 등에 대한 관련 정보를 미리 마련해 놓은 장소에 저장한다(S3e).If it is correct after the decision, store it in a place where information related to the procedure start address, call type, static link, input parameters, and return value etc. to be forced is used for the procedure execution call execution step. (S3e).

상기 관련 정보를 마련해 놓은 장소에 저장한 후 교차 디버깅 클라이언트가 요구한 프로시듀어 강제 호출을 실행할 프로세스의 존재 여부를 조사한(S3f) 후 프로세스가 존재하는가를 판단한다(S3g).After storing the related information in a place where the related information is prepared, it is determined whether a process exists after the existence of a process for executing a procedure forced call requested by the cross-debugging client (S3f) (S3g).

상기 판단 후 존재하면, 그 프로세스가 속해 있는 프로그램의 상태가 프로그램 실행중단 상태인가를 판단하여(S3h) 만약 프로그램 실행중단 상태이면 오류메시지를 교차 디버깅에게 전송하고(S3d) 종료한다.If it exists after the determination, it is determined whether the state of the program to which the process belongs is a program execution stop state (S3h). If the program execution stop state, an error message is sent to cross debugging (S3d).

만약, 프로그램 실행중단 상태가 아닌 경우에는 프로시듀어 강제 호출 실행 단계에서 주소 재계산이 요구되는 입력 파라미터들 및 반환값 저장 장소들을 조사하여 관련 정보를 저장(S3i) 한 다음 프로시듀어 강제 호출 서비스 수락 단계를 완료한다(S3j).If the program is not in the execution stop state, the input parameters and return value storage locations for which address recalculation is required in the procedure forced call execution step are stored and related information is stored (S3i), and then the procedure forced call service is performed. Complete the acceptance step (S3j).

도 5는 본 발명에 따른 프로시듀어 강제 호출 서비스 준비 단계 처리흐름도로서, 프로시듀어 강제 호출 서비스를 준비하는 단계에서는 먼저, 프로시듀어 강제 호출을 실행할 사용자 프로세스의 실행을 중단시키고(S6a), 실행중단 되기 직전의 프로세스 상태정보를 교차 디버깅 서버의 프로세스 상태 관리 큐에 저장한다(S6b).5 is a flowchart of a procedure forced call service preparation step according to the present invention. In the process of preparing a procedure forced call service, first, execution of a user process to execute a procedure forced call is stopped (S6a). The process state information immediately before being suspended is stored in the process state management queue of the cross-debugging server (S6b).

프로시듀어 강제 호출 서비스를 수행하기 위해 강제로 실행 중단시킨 사용자 프로세스를 서비스가 완료되는 시점에 복원할 수 있도록 모든 레지스터들의 내용을 저장한다(S6c).The contents of all registers are stored so that a user process forcibly interrupted to perform a procedure forced call service can be restored at the time of completion of service (S6c).

상기 실행 중단시킨 사용자 프로세스가 프로시듀어 강제 호출을 실행하는데 필요한 프로세스 스택을 준비하고 스택 포인트를 재조정한다(S6d).The suspended user process prepares a process stack necessary for executing a procedure forced call and readjusts the stack point (S6d).

스택 포인터 재조정 작업이 완료되면, 실행 중단시킨 사용자 프로세스가 중앙처리장치(Central processing unit, 이하 CPU라 칭함)를 점유하게 될 때 프로시듀어를 강제 호출할 수 있도록 하여 주는 디버깅 서비스 엔진내의 서비스 실행 시작 지점에서 곧바로 실행할 수 있도록 프로그램 카운터(Program Counter, 이하 PC라 칭함)와 다음 프로그램 카운터(Next Program Counter, 이하 NPC라 칭함)를 강제 조정한(S6e) 다음, 프로세스의 상태변화없이 CPU만 점유하여 프로시듀어 강제 호출을 실행하도록 프로세스 스케쥴링을 위한 프로세스 준비 큐에 넣는다(S6f).When the stack pointer rebalancing is complete, the service execution in the debugging service engine is allowed to force the procedure to be called when the interrupted user process occupies the central processing unit (CPU). The program counter (hereinafter referred to as the PC) and the next program counter (hereinafter referred to as the NPC) are forced to run immediately at the point (S6e). It is put in the process preparation queue for process scheduling to execute the procedure forced call (S6f).

서비스 준비 단계에서 필요한 모든 과정이 완료되면, 서비스 데몬은 프로시듀어 강제 호출 서비스가 시작되었음을 호스트 컴퓨터에 있는 교차 디버깅 클라이언트에게 알려주는 것(S6g)을 마지막으로 서비스 준비 단계에서의 작업을 완료한다.When all the necessary steps are completed in the service preparation phase, the service daemon finally completes the work in the service preparation phase by informing the cross-debugging client on the host computer that the procedure forced call service has started (S6g).

도 6은 본 발명에 따른 프로시듀어 강제 호출 서비스 실행 단계 처리흐름도로서, 먼저 서비스 요청 수락단계에서 저장한 프로시듀어 강제 호출 서비스 관련 정보를 조회하여 주소 재계산이 요구되는 입력 파라미터들에 대한 정확한 주소를 계산하고(S7a) 입력 파라미터들을 프로시듀어 강제 호출시 전달할 수 있도록 프로시듀어 호출형태에 따른 파라미터 전달용 레지스터들의 값을 조정하여(S7b), 강제 호출하고자 하는 프로시듀어를 호출한다(S7c).6 is a flowchart of a procedure forced call service execution step according to the present invention. First, the procedure forced call service related information stored in the service request acceptance step is inquired to accurately input parameters requiring address recalculation. Compute the address (S7a) and adjust the values of the parameter passing registers according to the procedure call type so that the input parameters can be passed in the procedure forced call (S7b), and call the procedure to be forced to call ( S7c).

강제 호출하고자 하는 프로시듀어를 호출한 후 호출함에 따라 실행된 프로시듀어의 반환값이 저장된 레지스터의 내용을 따로 저장하고, 교차 디버깅 클라이언트로부터 반환값 전송 요청을 받았는지의 여부를 조사하여, 전송 요구를 받은 경우는 반환값 저장 장소의 주소가 재계산이 필요한지 조사하여, 필요한 경우 주소 재계산을 수행한다(S7d).After calling the procedure that you want to call, save the contents of the register where the return value of the executed procedure is stored separately, and check whether the request for sending the return value is received from the cross-debugging client. When the request is received, the address of the return value storage location is examined to determine whether it is necessary to recalculate and if necessary, the address is recalculated (S7d).

주소 재계산을 수행한 후 프로세스들의 스케쥴링을 중단시키고(S7e), 프로시듀어 강제 호출을 실행하기 전의 상태로 복귀할 수 있도록 프로세스 준비 큐에서 제외시킴과 아울러 프로세스의 상태를 프로시듀어 강제 호출을 실행하기 전의 상태로 복원시킨다(S7f).After performing the address recalculation, the process stops scheduling (S7e), removes the state of the process from the process preparation queue so that it can return to the state it was in before executing the procedure forced call, and also executes the procedure forced call. Restore to the state before execution (S7f).

프로세스의 상태를 프로시듀어 강제 호출을 실행하기 전의 상태로 복원시킨 후 프로시듀어의 강제 호출 실행을 완료하였음을 서비스 데몬에게 알리고(S7g), 서비스 준비 단계에서 저장하여 둔 레지스터들의 내용을 프로세스 제어 블록으로 로딩시킨다(S7h).After restoring the state of the process to the state it was in before executing the forced procedure call, inform the service daemon that the procedure has been forced to execute (S7g), and process the contents of the registers stored in the service preparation step. It is loaded into the block (S7h).

마지막으로, 서비스 요청 수락 단계에서 프로시듀어 강제 호출 서비스 수행에 필요한 정보를 저장하기 위해 할당해 놓은 메모리 자원을 해제시키고(S7i), 프로세스들의 스케줄링을 재개시킨다(S7j).Finally, the memory resource allocated to store the information required to perform the procedure forced call service in the service request acceptance step is released (S7i), and the scheduling of the processes is resumed (S7j).

도 7은 본 발명에 따른 프로시듀어 강제 호출 서비스 마무리 단계 처리흐름도로서, 서비스 데몬이 프로시듀어 강제 호출을 실행한 프로세스로부터 실행 종료 메시지를 받을 때까지 기다린다(S8a).7 is a flowchart illustrating a procedure forced call service finishing step according to the present invention, and waits until the service daemon receives an execution end message from a process that executes a procedure forced call (S8a).

실행종료 메시지를 수신하면, 정상적으로 실행하여 종료되었는지의 여부를 조사한다(S8b).When the execution end message is received, it is checked whether it has been normally executed and terminated (S8b).

종료되었는지 여부 조사 후 정상종료인가를 판단하여(S8c) 정상종료가 아닌 경우는 오류메시지를 교차 디버깅 클라이언트에게 전송하고(S8d) 프로시듀어강제 호출 서비스를 위해 실행중단시켰던 사용자 프로세스를 실행재개시키고(S8e) 종료한다.After checking whether or not it is terminated, it is judged whether it is normally terminated (S8c). If it is not normal, it sends an error message to the cross-debugging client (S8d) and resumes the user process that was stopped for the procedure forced calling service (S8d). S8e) End.

만약 정상적으로 실행하여 종료하였음을 확인한 경우는 교차 디버깅 클라이언트로부터 반환값 전송 요청을 받았는지의 여부를 판단하여(S8f) 반환값 전송이 필요없는 경우는 프로시듀어 강제 호출 서비스를 완료하였음을 교차디버깅 클라이언트에게 알린(S8g) 다음, 프로시듀어 강제 호출 서비스를 위해 실행 중단시킨 사용자 프로세스를 실행재개시키고(S8e) 종료한다.If it is confirmed that the program is normally executed and terminated, it is determined whether a request for sending a return value is received from the cross-debugging client (S8f). If no return value is required, the cross-debugging client indicates that the procedure forced call service is completed. (S8g) Next, the user process which has been suspended for the procedure forced call service is resumed (S8e) and terminated.

만약 교차디버깅 클라이언트로 전송할 반환값들이 있는 경우는 반환해야 하는 모든 내용을 포함하는 메시지를 구성하여 교차 디버깅 클라이언트에게 전송한(S8h) 다음, 프로시듀어 강제 호출 서비스를 위해 실행 중단시킨 사용자 프로세스를 실행재개시키고(S8e) 종료한다.If there are return values to be sent to the cross-debugging client, construct a message containing all the contents that should be returned, send it to the cross-debugging client (S8h), and then execute the user process that was suspended for the procedure forced call service. Resume (S8e) and end.

상술한 바와 같이 본 발명은 디버깅 중인 프로그램의 임의의 프로시듀어를 강제로 임의의 시점, 임의의 프로세스에서 호출할 수 있도록 하여, 즉, 임의의 프로세스의 실행 수순에 있지 않은 프로시듀어를 강제로 호출할 수 있게 하여, 프로그램 작성 과정이나 프로그램의 시험 및 디버깅 과정에서 반복하여 프로그램을 작성하거나 새로 프로그램을 컴파일하지 않고 온라인 상에서 효과적으로 수행할 수 있게 해 줌으로써 프로그램 작성 과정이나 시험 과정을 상당히 단축할 수 있으므로 소프트웨어의 생산성 향상에 기여하는 효과가 있다.As described above, the present invention allows any procedure of a program being debugged to be called at any point in time and in any process, that is, forcing a procedure not in the execution order of any process. Calls can be made, which significantly reduces the programming process or the test process by allowing the program to be repeated in the program writing process or the test and debugging process of the program, or effectively performed online without compiling a new program. This contributes to improving the productivity of the software.

Claims (5)

확장가능한 실시간 운용체계(SROS)를 운영체계로 하는 운용보전 프로세서와 호처리 프로세서가 스위치 망으로 서로 연결된 타겟 교환 시스템, 교환 소프트웨어의 편집, 컴파일 및 교차디버깅을 위한 호스트 컴퓨터 및 상기 타겟 교환 시스템과 호스트 컴퓨터를 서로 물리적으로 연결해주는 통신망을 구비하는 장치에 적용되는 교차 디버깅 서버의 프로시듀어 강제 호출 서비스 실현 방법에 있어서,A target exchange system in which an operation preservation processor and a call processing processor operating as a scalable real-time operating system (SROS) are interconnected by a switch network, a host computer for editing, compiling, and cross-debugging of the exchange software, and the target exchange system and the host. In the method of realizing a procedure forced call service of a cross-debugging server applied to a device having a communication network that physically connects computers with each other, 교차 디버깅 클라이언트로부터의 프로시듀어 강제 호출 서비스 요청 메시지를 기다림으로 시작하는 제 1 과정과;A first step of starting with waiting for a procedure forced call service request message from a cross debugging client; 서비스 데몬은 상기 교차 디버깅 클라이언트로부터의 프로시듀어 강제 호출 서비스 요청 메시지를 수신하여 조사하고 서비스 요청에 따른 수락 여부를 결정하는 제 2 과정과;The service daemon receives a procedure compulsory call service request message from the cross-debugging client, examines it, and determines whether to accept the service request; 상기 서비스 요청 수락 여부를 판단하여 수락할 수 없으면 오류메시지를 교차 디버깅 클라이언트에게 전송하는 제 3 과정과;A third step of determining whether to accept the service request and transmitting an error message to the cross-debugging client if it cannot accept the service request; 상기 판단 후 수락하는 경우 디버깅 서비스 엔진을 이용한 사용자 프로세스가 프로시듀어 강제 호출을 실행할 수 있도록 준비하는 제 4 과정과;A fourth step of preparing a user process using a debugging service engine to execute a procedure forced call when accepting the determination; 사용자 프로세스가 프로시듀어 강제 호출을 실행할 수 있도록 준비한 후 서비스 데몬이 준비한 제반 여건을 바탕으로 디버깅 서비스 엔진을 이용한 사용자 프로세스는 프로시듀어 강제 호출을 실행하는 제 5 과정과;A fifth process of preparing a user process to execute a procedure forced call and then executing a procedure forced call based on various conditions prepared by the service daemon; 상기 서비스 데몬은 사용자 프로세스가 프로시듀어 강제 호출을 실행하는 동안 기다렸다가 사용자 프로세스로부터 실행 완료 여부 메시지를 수신하면 교차 디버깅 클라이언트에게 서비스 결과를 전송하는 제 6 과정을 포함하는 것을 특징으로 하는 프로시듀어 강제 호출 서비스 실현 방법.The service daemon includes a sixth process of waiting for a user process to execute a procedure forced call and then transmitting a service result to the cross-debugging client when receiving the execution completion message from the user process. How to realize call service. 제 1 항에 있어서, 상기 제 2 과정은The method of claim 1, wherein the second process 프로시듀어 강제 호출 실행 단계에서 필요한 관련 정보를 저장하기 위한 메모리 장소를 마련하는 제 1 단계와;A first step of arranging a memory location for storing related information required in a procedure forced call execution step; 제 1 단계 수행 후 교차 디버깅 클라이언트로부터 수신한 서비스 요청 메시지에서 메시지 길이, 강제 호출 프로시듀어의 시작 주소, 정적 링크 정보, 입력 파라미터 및 반환값 저장 공간에 대한 정보가 올바른지 조사하고, 올바른가를 판단하는 제 2 단계와;In the service request message received from the cross-debugging client after performing the first stage, the message length, the start address of the forced call procedure, the static link information, the input parameters, and the return value storage space are examined and checked for correctness. A second step; 상기 판단 후 올바르지 않으면 오류메시지를 교차 디버깅 클라이언트에게 전송하고 종료하는 제 3 단계와;A third step of sending an error message to the cross debugging client and terminating if it is not correct after the determination; 상기 판단 후 올바른 경우 프로시듀어 강제 호출 실행 단계에서 사용하기 위해 강제 호출할 프로시듀어 시작 주소, 호출형태, 정적링크, 입력 파라미터들 및 반환값 여부에 대한 관련 정보를 미리 마련해 놓은 장소에 저장하는 제 4 단계와;If it is corrected after the determination, store the information related to the procedure start address, call type, static link, input parameters, and return value to be forced in order to use in the procedure forced call execution step. A fourth step; 상기 관련 정보를 마련해 놓은 장소에 저장한 후 교차 디버깅 클라이언트가 요구한 프로시듀어 강제 호출을 실행할 프로세스의 존재 여부를 조사한 후 프로세스가 존재하는가를 판단하는 제 5 단계와;A fifth step of determining whether the process exists after storing it in the place where the relevant information is prepared and checking whether there is a process to execute a procedure forced call requested by the cross-debugging client; 상기 판단 후 존재하면 그 프로세스가 속해 있는 프로그램의 상태가 프로그램 실행중단 상태인가를 판단하여 프로그램 실행중단 상태이면 오류메시지를 교차 디버깅에게 전송하고 종료하는 제 6 단계와;Determining whether the state of the program to which the process belongs is a program execution stop state, if it exists after the determination, and if the program execution stop state transmits an error message to cross debugging and terminates; 프로그램 실행중단 상태가 아닌 경우 프로시듀어 강제 호출 실행 단계에서 주소 재계산이 요구되는 입력 파라미터들 및 반환값 저장 장소들을 조사하여 관련 정보를 저장 한 후 프로시듀어 강제 호출 서비스 수락 단계를 완료하는 제 7 단계로 이루어진 것을 특징으로 하는 프로시듀어 강제 호출 서비스 실현 방법.If the program is not in a suspended state, the procedure for executing the procedure forced call service acceptance step is completed after the procedure forced call execution step examines the input parameters and return value storage locations for which address recalculation is required and stores the relevant information. A procedure forced call service realization method comprising the seven steps. 제 1 항에 있어서, 상기 제 4 과정은The method of claim 1, wherein the fourth process 프로시듀어 강제 호출을 실행할 사용자 프로세스의 실행을 중단시키고, 실행중단 되기 직전의 프로세스 상태정보를 교차 디버깅 서버의 프로세스 상태 관리 큐에 저장하는 제 1 단계와;Stopping the execution of the user process to execute the procedure forced call and storing the process state information immediately before the execution is stopped in the process state management queue of the cross-debugging server; 상기 프로시듀어 강제 호출 서비스를 수행하기 위해 강제로 실행 중단시킨 사용자 프로세스를 서비스가 완료되는 시점에 복원할 수 있도록 모든 레지스터들의 내용을 저장하는 제 2 단계와;A second step of storing contents of all registers so that a user process forcibly stopped to perform the procedure forced call service can be restored at the time of completion of the service; 상기 실행 중단시킨 사용자 프로세스가 프로시듀어 강제 호출 실행에 필요한 프로세스 스택을 준비하고 스택 포인트를 재조정하는 제 3 단계와;A third step in which the suspended user process prepares a process stack required for executing a procedure forced call and readjusts a stack point; 스택 포인터 재조정 작업이 완료 후, 실행 중단시킨 사용자 프로세스가 중앙처리장치를 점유하게 될 때 프로시듀어를 강제 호출할 수 있도록 하는 디버깅 서비스 엔진내의 서비스 실행 시작 지점에서 곧바로 실행할 수 있도록 프로그램 카운터와 다음 프로그램 카운터를 강제 조정하는 제 4 단계와;After the stack pointer rebalancing is complete, the program counter and the next program can be run directly from the service execution start point in the debugging service engine, which forces the procedure to be called when the interrupted user process occupies the central processing unit. A fourth step of forcibly adjusting the counter; 프로그램 카운터와 다음 프로그램 카운터를 강제 조정 후 프로세스의 상태변화없이 중앙처리장치만 점유하여 프로시듀어 강제 호출을 실행하도록 프로세스 스케쥴링을 위한 프로세스 준비 큐에 넣는 제 5 단계와;A fifth step of putting the program counter and the next program counter into a process preparation queue for process scheduling so as to execute a procedure forced call by occupying only the central processing unit without changing the state of the process after forcing adjustment; 서비스 준비 단계에서 필요한 모든 과정 완료 후, 서비스 데몬은 프로시듀어 강제 호출 서비스가 시작되었음을 호스트 컴퓨터에 있는 교차 디버깅 클라이언트에게 알려주는 것으로 마지막으로 서비스 준비 단계에서의 작업을 완료하는 제 6 단계로 이루어진 것을 특징으로 하는 프로시듀어 강제 호출 서비스 실현 방법.After completing all the necessary steps in the service preparation phase, the service daemon notifies the cross-debugging client on the host computer that the procedure forced-call service has started, finally consisting of the sixth phase of completing the work in the service preparation phase. A procedure forced call service realization method characterized by the above-mentioned. 제 1 항에 있어서, 상기 제 5 과정은The method of claim 1, wherein the fifth process 서비스 요청 수락단계에서 저장한 프로시듀어 강제 호출 서비스 관련 정보를 조회하여 주소 재계산이 요구되는 입력 파라미터들에 대한 정확한 주소를 계산하는 제 1 단계와;A first step of calculating correct addresses for input parameters for which address recalculation is required by querying the procedure forced call service related information stored in the service request accepting step; 상기 주소 재계산이 요구되는 입력 파라미터들에 대한 정확한 주소 계산 후 입력 파라미터들을 프로시듀어 강제 호출시 전달할 수 있도록 프로시듀어 호출형태에 따른 파라미터 전달용 레지스터들의 값을 조정하여 강제 호출하고자 하는 프로시듀어를 호출하는 제 2 단계와;The procedure to forcibly call by adjusting the values of the parameter transfer registers according to the procedure call type so that the input parameters can be delivered when the procedure is forcibly called after calculating the correct address for the input parameters for which the address recalculation is required. Calling a dewar; 강제 호출하고자 하는 프로시듀어를 호출한 후 호출함에 따라 실행된 프로시듀어의 반환값이 저장된 레지스터의 내용을 따로 저장하고, 교차 디버깅 클라이언트로부터 반환값 전송 요청을 받았는지의 여부를 조사하는 제 3 단계와;A third method for calling a procedure to be called and then storing the contents of the register where the return value of the executed procedure is stored separately, and investigating whether a request has been received from the cross-debugging client. Steps; 상기 교차 디버깅 클라이언트로부터 반환값 전송 요청 수신 여부 조사 후 전송 요구를 받은 경우 반환값 저장 장소의 주소가 재계산이 필요한지 조사하여, 필요한 경우 주소 재계산을 수행하는 제 4 단계와;A fourth step of checking whether an address of a return value storage location needs to be recalculated when receiving a request for transmission after receiving a return value request from the cross-debugging client, and performing recalculation of addresses if necessary; 주소 재계산을 수행한 후 프로세스들의 스케쥴링을 중단시키고, 프로시듀어 강제 호출을 실행하기 전의 상태로 복귀할 수 있도록 프로세스 준비 큐에서 제외시키며 프로세스의 상태를 프로시듀어 강제 호출을 실행하기 전의 상태로 복원시키는 제 5 단계와;After the address recalculation is performed, the processes are not scheduled, and they are removed from the process ready queue so that they can return to the state they were in before the execution of the forced procedure call, and the state of the process was restored to the state before the forced procedure call was executed. A fifth step of restoring; 프로세스의 상태를 프로시듀어 강제 호출을 실행하기 전의 상태로 복원시킨 후 프로시듀어의 강제 호출 실행을 완료하였음을 서비스 데몬에게 알리고, 서비스 준비 단계에서 저장하여 둔 레지스터들의 내용을 프로세스 제어 블록으로 로딩시키는 제 6 단계와;After restoring the state of the process to the state it was in before executing the procedure forced call, notify the service daemon that the procedure has been forced to execute, and load the contents of the registers saved in the service preparation step into the process control block. Sixth step of making; 상기 서비스 요청 수락 단계에서 프로시듀어 강제 호출 서비스 수행에 필요한 정보를 저장하기 위해 할당해 놓은 메모리 자원을 해제시키고, 프로세스들의 스케줄링을 재개시키는 제 7 단계로 이루어진 것을 특징으로 하는 프로시듀어 강제 호출 서비스 실현 방법.The compulsory call service comprising the seventh step of releasing the memory resources allocated to store the information required to perform the procedure forced call service in the service request acceptance step, and resumes the scheduling of processes. How to realize. 제 1 항에 있어서, 상기 제 6 과정은The method of claim 1, wherein the sixth process 서비스 데몬이 프로시듀어 강제 호출을 실행한 프로세스로부터 실행 종료 메시지를 받을 때까지 기다리는 제 1 단계와;A first step of waiting for a service daemon to receive an execution termination message from a process that executes a procedure forced call; 실행종료 메시지를 수신하면, 정상적으로 실행하여 종료되었는지의 여부를 조사하는 제 2 단계와;A second step of, upon receiving the execution completion message, whether to execute normally and to terminate; 종료되었는지 여부 조사 후 정상종료인가를 판단하여 정상종료가 아닌 경우 오류메시지를 교차 디버깅 클라이언트에게 전송하고 프로시듀어강제 호출 서비스를 위해 실행중단시켰던 사용자 프로세스를 실행재개시킨 후 종료하는 제 3 단계와;Determining whether it is normally terminated after checking whether it has been terminated, and if it is not normally terminated, transmitting an error message to the cross-debugging client, restarting the user process that was suspended for the procedure forced call service, and terminating it; 정상적으로 실행하여 종료하였음을 확인한 경우 교차 디버깅 클라이언트로부터 반환값 전송 요청을 받았는지의 여부를 판단하여 반환값 전송이 필요없는 경우 프로시듀어 강제 호출 서비스를 완료하였음을 교차디버깅 클라이언트에게 알리는 제 4 단계와;A fourth step of determining whether or not a request for sending a return value has been received from the cross-debugging client when notifying that the execution is successful and notifying the cross-debugging client that the procedure forced call service is completed when no return value is required. ; 프로시듀어 강제 호출 서비스를 완료하였음을 교차디버깅 클라이언트에게 알린 후 프로시듀어 강제 호출 서비스를 위해 실행 중단시킨 사용자 프로세스를 실행재개시키고 종료하는 제 5 단계와;A fifth step of notifying the cross-debugging client that the procedure forced call service is completed and then restarting and terminating the user process that has been suspended for the procedure forced call service; 교차디버깅 클라이언트로 전송할 반환값들이 있는 경우 반환해야 하는 모든 내용을 포함하는 메시지를 구성하여 교차 디버깅 클라이언트에게 전송한 후 프로시듀어 강제 호출 서비스를 위해 실행 중단시킨 사용자 프로세스를 실행재개시키고 종료하는 제 6 단계로 이루어진 것을 특징으로 하는 프로시듀어 강제 호출 서비스 실현 방법.If there are return values to be sent to the cross-debugging client, construct a message that contains all that should be returned, send it to the cross-debugging client, and then resume and terminate the user process that was suspended for the procedure forced call service. A procedure forced call service realization method comprising: a step.
KR1019970062781A 1997-11-25 1997-11-25 Forced procedure call service implementation method KR100258084B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970062781A KR100258084B1 (en) 1997-11-25 1997-11-25 Forced procedure call service implementation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970062781A KR100258084B1 (en) 1997-11-25 1997-11-25 Forced procedure call service implementation method

Publications (2)

Publication Number Publication Date
KR19990042078A KR19990042078A (en) 1999-06-15
KR100258084B1 true KR100258084B1 (en) 2000-06-01

Family

ID=19525568

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970062781A KR100258084B1 (en) 1997-11-25 1997-11-25 Forced procedure call service implementation method

Country Status (1)

Country Link
KR (1) KR100258084B1 (en)

Also Published As

Publication number Publication date
KR19990042078A (en) 1999-06-15

Similar Documents

Publication Publication Date Title
CN109634728B (en) Job scheduling method and device, terminal equipment and readable storage medium
US6345240B1 (en) Device and method for parallel simulation task generation and distribution
US6321181B1 (en) Device and method for parallel simulation
US7334162B1 (en) Dynamic distribution of test execution
CN111399897A (en) Application issuing method and system based on kubernets
CN108710536A (en) A kind of multi-level fine-grained virtualization GPU method for optimizing scheduling
CN111026530A (en) Task scheduling method and device, computer equipment and storage medium
CN115185787B (en) Method and device for processing transaction log
EP1327198A1 (en) A network component management system
CN112948077A (en) Batch processing method, device, equipment and storage medium
JP3701816B2 (en) Method and apparatus for notifying task termination
CN114924971A (en) Test environment deployment method and device
CN111082964B (en) Distribution method and device of configuration information
KR100258084B1 (en) Forced procedure call service implementation method
Shin et al. A distributed real-time operating system
US6338080B1 (en) Device and process for handling the execution of a job in a data processing system
AU2023200878B2 (en) Method, apparatus and device for software testing, and compute-readable storage medium
Itoh et al. A prototype of a concurrent behavior monitoring tool for testing of concurrent programs
JP2001265603A (en) Automatic division software distribution system and method therefor
Leangsuksun et al. Designs and experiments on heterogeneous mapping heuristics
KR100289039B1 (en) Method for executing control of process in cross debugging server
Fagg et al. Taskers and general resource managers: PVM supporting DCE process management
CN113986519B (en) Data scheduling processing method, device, equipment and storage medium
CN115421824B (en) Micro-service execution engine, running method and application method
Thuente et al. Rate-monotonic analysis of an advanced field artillery data system

Legal Events

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

Payment date: 20040302

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee