KR19980086589A - Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴 - Google Patents

Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴 Download PDF

Info

Publication number
KR19980086589A
KR19980086589A KR1019980013051A KR19980013051A KR19980086589A KR 19980086589 A KR19980086589 A KR 19980086589A KR 1019980013051 A KR1019980013051 A KR 1019980013051A KR 19980013051 A KR19980013051 A KR 19980013051A KR 19980086589 A KR19980086589 A KR 19980086589A
Authority
KR
South Korea
Prior art keywords
data
data processing
processing apparatus
program name
token
Prior art date
Application number
KR1019980013051A
Other languages
English (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 제프리 엘. 포맨
Publication of KR19980086589A publication Critical patent/KR19980086589A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5629Admission control
    • H04L2012/5631Resource management and allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

하나 이상의 상주 운영 시스템을 구비한 컴퓨터 시스템에서, 데이터 프로세싱 툴(data processing tool)이 도입된다. 판독/수신 명령어를 수신함과 동시에, 특수한 인터페이스 함수 호출이 발행되고, 판독/수신 요구 애플리케이션 또는 프로세서와 관련된 토큰 및 프로그램 명이 저장된다. 그 후, 임의의 데이터 통신 프로토콜들을 식별하기 위한 소켓 기술어 파일(socket descriptor file)이 생성된다. 게다가, 프로그램 명, 토큰 정보 및 소켓 기술어에 관한 정보를 포함하는 시스템 제어표 엔트리(system control table entry)도 생성된다. 일단 데이터가 수신되면, 이 파일에 의해 판독/수신 명령어를 처리할 수 있게 되고 관련된 프로세싱 정보를 요구 애플리케이션/프로세서에 되돌려 줄 수 있게 된다.

Description

TCP/IP 소켓 애플리케이션을 이용한 시스템 자원 저감 툴
본 발명은 TCP/IP 소켓 애플리케이션(socket application) 등과 같은 통신 세션(communication session) 동안에 발행되는 판독 함수(read function)와 같은 소정의 명령어를 처리하는 동안에 시스템에 의해 이용되는 자원들을 저감하도록 고안된 툴(tool)에 관한 것이다.
호스트 시스템 네트워크 또는 다른 유사한 멀티-호스트 컴퓨터 환경에서는, 동시에 데이터를 요구하고 액세스하거나 서로 다른 상주 애플리케이션들을 동시에 실행할 수 있는 다수의 프로세서들과 호스트들이 공존한다. 그런 환경에서는 데이터 프로세싱 시스템들을 이용하여 환경 도처의 서로 다른 위치들에 필요한 데이터를 보유함으로써 서로 다른 애플리케이션들의 프로세싱에 편의를 제공한다. 이로써, 원격 호스트 또는 유저에게 단일 이미지를 프리젠트(present)할 수 있게 되고 프로세서 컴플렉스(processor complexes)에 의한 작업 부담의 균형이 이루어지게 된다. 데이터는, 원격 호스트들에 링크되고 다른 호스트 시스템들에 링크되어 환경 내의 통신 링크들의 네트워크를 형성하는 하나 이상의 호스트 시스템들 내에 보유될 수 있다. 링크 상의 한 호스트로부터 링크 상의 다른 호스트로 메시지를 송신하기 위하여, 메시지의 루트를 정하고 컴플렉스 또는 환경 내의 링크 상의 적당한 호스트 컴퓨터들에 액세스함으로써 통신을 제어하기 위한 프로토콜이라 불리는 통신 규약이 확립된다. 일반적으로 이들 통신 프로토콜은 데이터 통신 제품의 기능 및 구조를 정의하는 텔레프로세싱 아키텍처(teleprocessing architecture)의 일부로서 존재한다.
그런 통신 네트워크 또는 환경에서는, 하나 이상의 운영 시스템(operating system)에 의해 제공되는 기능적 인터페이스(functional interface)인 애플리케이션 프로그램 인터페이스(이하, API라 함)가 또한 제공되어 하이 레벨 언어로 작성된 애플리케이션 프로그램이 상기 운영 시스템의 특정 데이터 또는 함수들을 이용할 수 있게 된다. 어떤 경우에는, API가 인터페이스 ― 그를 통해 애플리케이션 프로그램이 액세스 방법과 상호 대화(interact)를 함 ―로서 기능하기도 한다. 멀티태스킹 운영 시스템에서는, 운영 시스템에 대한 애플리케이션 프로그램 요구(request)가 API를 통하여 이루어져서, 종료될 태스크 또는 프로세스가 요구에 의해 자동적으로 기동된다. 병렬 프로세싱 환경에서는, 컴퓨터 아키텍처는, 다수의 태스크들을 고속으로 동시에 처리하기 위하여, 다수의 상호 접속된 프로세서들을 사용하여 다량의 데이터에 액세스한다. 그런 환경에서는, 멀티태스킹 운영 시스템은 적시의 태스크 프로세싱을 위하여 API에 크게 의존한다.
요구되는 태스크 프로세싱을 적시 방식(timely manner)으로 수행하기 위하여, 다수의 API들은 프로세서 그룹들 간의 복잡한 통신을 수행하기 위한 일련의 집합 연산들(a set of collective operations)을 정의한다. 집합 연산들과 관련된 몇 가지 장점이 있는데, 그 중에는 사용의 용이성과 성능이 있다. 그러나, 집합 연산들을 사용하는 데에는 한 가지 큰 단점이 있다. 대부분의 경우에, 이들 집합 연산들의 다수가 동기적(synchronous)이며, 그 연산들은 태스크의 성능을 위한 시간이 되기까지 프로세서를 블록(block)하기 때문에, 블로킹 연산들(blocking operations)들로 알려져 있다. 애초부터 그 태스크들이 동기적이 아닌 애플리케이션에 대한 해법은 논-블로킹(non-blocking) 또는 비동기 집합 연산들을 이용하는 것이다. 논-블로킹 연산들에 의해 각 태스크가 그 자신의 페이스로 진행될 수 있고, 주기적으로 그 연산들의 종료를 테스트하거나 필요할 경우 대기할(wait) 수 있다. 그러나, 논-블로킹 연산들 역시 어떤 단점들을 갖고 있다. 예를 들면, 대기할 필요가 있거나 또는 내부 의존 상황에 처했을 경우, 유저에게 제어권을 되돌려서 결정을 하게 해야 한다. 그 이유는, 비동기 집합 연산들이 이용되는 논-블로킹 환경에서는, 전체 연산이 어떠한 태스크 또는 프로세서 시간도 블록할 수 없게 되어 있기 때문이다. 이런 의존성 때문에, 연산을 블록할 수 있는 프로세스의 단계(stage)는 하나도 없다.
그러나, 제어권을 유저에게 되돌리는 것은 문제의 일부분에 불과하다. 제어권이 유저에게 되돌려진 후의 한 가지 중요한 문제는, 예를 들면 최초의 내부 의존 상황이 해결된 때와 같이, 연산이 재개될 수 있는 때를 통지하는 문제이다. 두 번째 관련 문제는, 일단 유저가 연산을 재개할 것을 결정하면 인터럽트가 발생하기 바로 전과 동일한 프로세싱 위치로 되돌아가는 것이다.
블로킹 연산과 논-블로킹 연산 모두에서 발생되는 또 다른 공통의 관련 문제는, 성능 문제 및 시스템 유휴 시간(system idle time)을 해결하는 것이다. read() 또는 recvfrom() call(호출)과 같은 소정의 명령어들은, 판독 또는 수신 명령어(read or receive command)의 데이터가 요구 애플리케이션에 의해 수신될 때까지 시스템 환경이 처리 중인 연산들을 일시적으로 중지할 것을 요구한다. 데이터가 프로세싱에 즉시 이용될 수 없는 경우에, 그 데이터가 이용될 수 있을 때까지 애플리케이션에 이용될 수 있는 대부분의 자원들이 중지 상태에 있게 되며 더 이상의 프로세싱이 불가능하게 된다. 블로킹 모드에서는, 명령어 프로세싱의 순차성에 따라, 전체 프로세스 환경은, 명령어 프로세싱의 다음 단계가 수행될 수 있기 전에, 인입되는 데이터(in-coming data)를 기다려야 한다. 논-블로킹 모드에서는, 여전히 데이터가 즉시 이용될 수 없는 경우에, 프로세스 환경은 그런 이용 가능성(availability)을 계속하여 체크하여 비동기 연산을 동기 연산이 되도록 하거나 또는 연산을 종료하고 유저에게 제어권을 되돌려야 하는데, 이는 또 다른 문제를 일으킨다. 고성능의 트랜잭션 지향 시스템(transaction oriented system)에서는, 그런 데이터의 이용 불가능성의 결과로서 다수의 프로세스들이 모두 동시에 중지될 가능성이 있다. 그 결과, 시스템은 자원들을 다 써 버려서, 어떤 새로운 프로세스들이 디스패치(dispatch)될 가능성이 없어질 수 있다.
하나 이상의 상주 운영 시스템을 구비한 컴퓨터 시스템에서, 데이터 프로세싱 툴(data processing tool)이 도입된다. 이 툴은, 판독/수신 명령어를 수신함과 동시에 우선 특수한 인터페이스 함수 호출을 발행한다. 그 후, 시스템은 복귀하여 다른 연산들을 계속하여 수행할 수 있으며, 운영 시스템은 특정 판독/수신 명령어를 발행하는 임의의 애플리케이션 또는 프로세서와 관련된 토큰 및 프로그램 명을 저장할 것이다. 그 후, 임의의 데이터 통신 프로토콜들을 식별하기 위한 소켓 기술어(socket descriptor)가 생성된다. 게다가, 프로그램 명 및 토큰 정보를 데이터 구조 포맷으로 저장하고 그것들을 상기 소켓 기술어와 관련시키기 위한 파일 기술어(file descriptor)를 구비한, 시스템 제어표 엔트리(system control table entry)도 생성된다. 일단 데이터가 도달하면, 이 시스템 제어표의 위치를 알아내고 소켓 기술어의 소재에 관하여 저장된 정보를 찾아냄으로써 요구 애플리케이션 또는 프로세서를 식별한다. 그 후, 요구 프로그램의 프로그램 명을 획득한 후에 새로이 도달한 데이터를 처리하기 위한 새로운 프로세스가 생성되고 최종적으로 판독/수신 명령어가 처리된다.
도 1은 사용되는 통신 프로토콜의 개념상의 층 구성을 도시하는 블록도.
도 2는 본 발명의 개요에 관한 흐름도.
도 3은 본 발명의 특정 실시예에 관한 흐름도.
* 도면의 주요부분에 대한 부호의 설명
102 : 링크 층
104 : 머신-대-머신 층
106 : 포트-대-포트 층
108 : 애플리케이션 레벨
발명으로 간주되는 요지는 명세서의 결론부에 자세히 지적되고 명백하게 청구되어 있다. 그러나, 본 발명의 부가적인 목적 및 이점과 더불어 실제 구성 및 방법에 대해서는, 첨부 도면들과 관련된 이하의 설명을 참조함으로써 잘 이해될 수 있다.
수 개의 호스트 및/또는 원격 호스트들이 컴퓨터 네트워크로 접속되어 있는 경우, 그들간의 통신을 설정하고 유지할 필요가 생긴다. 통신이 가능하도록 하기 위하여, 호스트 컴퓨터들의 네트워크는 통신 링크들을 포함하는데, 그들 링크에는 서로 다른 종류의 호스트 컴퓨터들이 접속된다. 링크 상의 한 호스트로부터 링크 상의 다른 호스트로 메시지들이 송신되도록 하기 위하여, 통신 링크들을 제어하고 메시지의 루트를 정하고 링크 상의 적당한 호스트 컴퓨터들에 액세스하기 위한 프로토콜이라 불리는 규약들이 확립된다.
도 1에 도시된 바와 같이, 개념적으로 통신 프로토콜들이 층 구조를 이루는 것으로서 볼 수 있는데, 각 프로토콜 층은 그 바로 아래 층에 의해 제공되는 서비스들을 이용한다. 최하층은 하드웨어 레벨에서 작용하고 특정한 타입의 단일 네트워크 상의 호스트들 간의 데이터 전송을 제어하는 링크 층(102)이다. 다음의 상부층은 동일한 물리적 컴플렉스에 직접 접속되지 않은 호스트들 간에 통신할 수 있는 능력을 제공하는 머신-대-머신 (MM : Machine-to-Machine)(104) 층이다. 이 층의 널리 이용되는 예가 인터네트 프로토콜 (IP : Internet Protocol)이다. 인터네트 IP는 표준적인 소프트웨어 통신 패키지들의 사용을 허용하는 표준적인 산업용 통신 프로토콜이다.
다음의 상부 프로토콜 층은, 서로 다른 애플리케이션 프로그램들을 실행하는 다수의 프로세서들이 원격 호스트들에서의 원격 프로세스들과 동시에 통신할 수 있게 해주는 포트-대-포트 (PP : Port-to-Port)(106) 층이다. PP 층은 MM 프로토콜 층을 이용하여 호스트 머신들 간에 데이터를 전송한다. PP 층은, 프로세서에 국부 통신 포트(local communication port)를 할당하고 그 포트를 원격 호스트 상의 원격 포트에 접속시키고 그 국부 포트와 원격 포트간에 데이터를 전송하는 애플리케이션 층에 대해 인터페이스를 제공한다. 그런 PP 전송 프로토콜의 예들로는, TCP(Transmission Control Protocol), UDP(User Datagram Protocol) 및 XNS(Xerox Network System)이 있다. TCP는 IP 프로토콜 스위트 (IP suite of protocol)(TCP/IP)를 이용하는 장치들에서 동작할 수 있다.
최상층은 애플리케이션 레벨(108)이다. API들 역시 이 레벨에 존재한다. 게다가, 소켓 애플리케이션(socket application)들과 같은 다른 통신 애플리케이션도 이 레벨에 존재한다. 소켓 애플리케이션은 포트 식별자들을 TCP/IP 또는 다른 통신 세션 어드레스들과 연관시킴으로써 생성되는 고유의 호스트 식별자(host identifier)이다.
임의의 하이 레벨 애플리케이션, 특히 소켓 애플리케이션을 실행하는 동안에, 소정 타입의 명령어들로 인해 프로세싱 붕괴(processing disruption) 또는 자원들의 일시적인 펜딩(pending)이 초래될 수 있다. 이는 대개 데이터가 즉시 이용될 수 없는 경우이다. 예를 들면, TCP 프로토콜은 데이터에 액세스하기 위하여 read() 명령어를 이용했다. UDP는 TCP 프로토콜의 read() 명령어와 매우 유사한 유사 명령어 recv()/recvfrom() 함수 호출을 이용한다. read(), recv() 또는 recvfrom()의 어느 경우이든지 수신될 데이터(on-coming data)를 예상하여 프로세서에 의해 많은 부분의 메모리가 할당되고 준비된다. 이 할당되는 메모리 블록은 대개 최대 길이 또는 Max 데이터 길이가 32K에서 2 Megs 사이의 범위에 있을 수 있는 것으로 알려져 있다.
데이터가 즉시 수신되지 않는 경우, 데이터가 이용될 수 있을 때까지, 애플리케이션에 이용될 수 있는 대부분의 자원들은 중지 상태에 있게 되고 더 이상의 처리가 허용되지 않는다. 고성능 시스템에서는, 이로 인해 동시에 다수의 프로세서이 중지될 수 있다. 이 시스템 또는 프로세서 이용 불가능성은 후에 상세히 설명하겠지만 시스템이 블로킹 집합 연산을 실행하든지 또는 논-블로킹 집합 연산을 수행하든지 상관없이 발생된다.
A) 블로킹 연산
애플리케이션 또는 시스템이 블로킹 모드로 동작하는 경우, 프로세싱 연산들은 동기 모드로 수행된다. read(), recv() 또는 recvfrom() 명령어가 발행되었는데도 데이터가 즉시 이용될 수 없는 경우에 전체 시스템은 동기적으로 동작하기 않기 때문에, 데이터 바이트들이 인입될(come in) 때까지는 모든 스레드(thread)들은 유휴 상태로 있어야 한다. 데이터가 이용될 수 있을 때까지 더 이상의 프로세싱이 불가능하다. 더욱이 데이터의 수신을 위해 메모리의 많은 영역이 할당되어야 하기 때문에, 전체 시스템 환경이 영향을 받을 수 있다.
B) 논-블로킹 연산
논-블로킹 연산을 실행하는 동안에, 시스템의 프로세싱은 비동기적이며 따라서 데이터 판독/수신 명령어가 발행된 후에 프로세스는 블로킹 연산에서와 같은 식으로 유휴 상태에 놓이지 않는다. 그럼에도 불구하고, 데이터 수신 전의 전체 프로세스의 연산은 블로킹 모드로 동작하고 있는 때와 매우 유사하다. 논-블로킹 모드에서는, 시스템은 판독되는 데이터의 이용 가능성을 체크하고 데이터가 여전히 이용될 수 없음을 알아낼 때마다 결정을 해야 한다. 이 결정은, 연속적인 원리(continuous basis)에 기초하여 데이터의 이용 가능성을 계속하여 체크하거나 - 이는 블로킹 연산의 상황과 거의 유사한 상황을 발생시킴 -, 또는 현재 유휴 상태에 있는 프로세서들의 연속적인 연산에 필요한 공간 할당을 붕괴시키고 개조함으로써 할당된 메모리 공간을 재할당(reassign)해야 하는 것이다.
블로킹 또는 논-블로킹 어느 경우이든지, 최대 길이(Max 데이터 길이), 또는 데이터의 수신을 위해 할당된 메모리는 고성능 프로세스 시스템 내에서 이용될 수 있는 자원들의 연속적인 이용 가능성에 큰 문제를 일으킨다.
본 발명은 액티베이트_온_리시트 메커니즘을 통하여 상기 문제를 해결한다. 도 2에 도시된 바와 같이, (202)에 도시된 read(), recv(), recvfrom() 또는 다른 유사한 함수 호출 또는 명령어들을 수신함과 동시에, 본 발명은 액티베이트_온_리시트() 명령어라 불리는 새로운 함수 호출 (API)을 발행한다(204). 기본적으로, 이 새로운 함수 호출은 아무런 명령어도 발행되지 않은 것처럼 프로세스의 연산이 계속되도록 하여(206), 데이터의 첫 번째 바이트들이 도달하는 때까지 최초의 프로세스가 실행된다. 그러나, 어떤 상황에서는, 판독/수신(read/receive)이 발행된 후에 프로세스를 실제로 종료시킬 필요가 있을 수 있다. 본 발명의 대체 실시예에서는, 이 문제가 해결된다. 그런 경우에, 판독/수신의 최초의 발행에 의해 개시된 프로세스는 자원들을 자유롭게 하기 위하여 우선 종료되어야 한다. 그러나, 액티베이트_온_리시브 명령어 호출은 그런 종료에도 불구하고 요구 데이터를 얻는 일을 계속할 것이며 데이터가 도달하면, 이전 경우에서처럼 새로운 프로세스가 생성될 것이다. 어느 경우이든지, 인입되는 데이터의 적어도 일부를 수신하도록 바람직하게는 4K의 임시 기억 위치(208)가 메모리에 할당된다. 이로써, 2 Megs까지의 큰 영역을 이용하는 종래 기술에 반하여, 그런 데이터의 수신을 위해 작은 영역의 메모리가 준비될 수 있게 된다. 게다가, 프로세서에 의해서 보다는 시스템 자체에 의해서 매번 메모리의 최초 4K가 할당되며, 이는 공간 및 메모리 이용 가능성을 가장 효과적으로 이용할 것이다. 그 이유는, 시스템이 임의의 이용 가능한 포켓(pocket) 내에 영역을 할당할 수 있기 때문이며, 이는 프로세서들만이 보는 것보다 시스템이 그런 이용 가능성을 더 잘 볼 수 있기 때문이다.
각각의 액티베이트_온_리시트 호출과 함께, 나중의 프로세싱이 가능하도록 수 개의 파라미터들도 전달된다(205). 도 3에 도시된 바와 같이, 전달되는 파라미터들은, 명령어 또는 호출을 발행하는 호스트 및 애플리케이션을 장차 식별하기 위한 토큰 포인터(token pointer), 프로그램 명 포인터(program name pointer) 및 소켓 기술어(socket descriptor)이다(330). 소켓 기술어는, 애플리케이션에 의해 이전의 socket() API 함수 호출로부터 얻어지는 정수이며 애플리케이션의 TCP/IP 또는 다른 유사 프로토콜의 데이터 통신 세션의 절반과 관련된다(332). 프로그램 명 포인터는 데이터가 프로토콜의 데이터 통신의 다른 절반으로부터 호스트에 도달했을 때 입력되는 프로그램 명의 어드레스이다. 토큰 포인터는, 애플리케이션이 프로세스들 간에 전달하는 데이터를 포함하는 8 바이트 토큰의 어드레스를 포함한다.
소켓 애플리케이션이 activate_on_receipt() 함수 호출을 발행한 후에, 운영 시스템은 파일 기술어(file descriptor)라 불리는 소켓 기술어와 관련된 데이터 구조 내에 8 바이트 토큰 및 프로그램 명을 저장한다(334). 데이터가 들어오기 시작한 후에, 운영 시스템은 activate_on_receipt() 함수 호출을 read() 또는 recvfrom() 함수 호출로 변환시킨다. 만일 activate_on_receipt()이 소정의 스트림 또는 접속(connection) 지향 (TCP) 소켓을 위하여 발행되었다면, 시스템은 activate_on_receipt() 함수 호출을 read() 함수 호출로 변환시킨다. 만일 activate_on_receipt()이 데이터그램(datagram) 또는 비접속(connectionless)(UDP) 소켓을 위하여 발행되었다면, 시스템은 activate_on_receipt() 함수 호출을 recvfrom() 함수 호출로 변환시킨다. read() 또는 recvfrom()은 (32K 또는 그 이상의 요구의) 최대 길이를 갖는 TCP/IP 스택에 대해 발행된다.
도 2의 (214)에 도시된 바와 같이 데이터의 첫 번째 바이트들이 도달한 때를 메커니즘에 통지한다. 그때 메커니즘은 할당된 임시 기억 위치의 크기가 인입되는 데이터의 크기를 수용하는지를 판정한다.
수신된 데이터가 4K 할당 공간과 같거나 그보다 작을 경우, 수신되는 데이터의 나머지를 수신하기 위하여 더 이상의 공간이 할당되지 않을 것이다. 그러나, 데이터가 4K보다 클 경우, 수신되는 전체 데이터를 수용하기 위하여 더 많은 공간이 할당될 것이다(216).
첫 번째 데이터 바이트들이 할당된 위치에 수신되면, activate_on_receipt() 명령어는 최초의 프로세스를 종료시키고/종료시키거나 호스트 내에 새로운 프로세스를 생성한다는 점에서 시스템을 기동(activate)한다. 그 후, 데이터는 판독, 처리 또는 전송된다(213). (데이터가 도달한 후에, 시스템은 새로운 기억 영역을 확보하여 이 새로운 기억 영역에 데이터를 복사할 필요가 있을 수 있다(218). 그 후, 일단 데이터가 수신되면 함수 호출이 수행될 수 있다(220 내지 222)). 이 프로세스는 다음과 같이 상세히 수행된다.
도 3에 도시된 바와 같이, 파일 기술어는 이 TCP/IP 소켓과 관련된 소켓 기술어는 물론 이전에 저장된 8 바이트 토큰 및 프로그램 명이 있는 시스템 제어표의 위치를 알아내는 데 사용된다(338). 시스템은 내부 헤더로부터 얻어진 데이터의 길이, 기억 블록의 어드레스, 8 바이트 토큰 및 소켓 기술어를 시스템에 의해 생성될 새로운 프로세스와 관련된 다른 제어 블록에 복사한다. 만일 파일 기술어가 메시지가 데이터그램 소켓으로부터 수신되었음을 나타내면, 시스템은 내부 헤더로부터의 메시지의 소스 어드레스를 새로운 프로세스와 관련된 블록에 복사한다. 그 후 시스템은 새로운 프로세스를 생성하고(339) 파일 기술어로부터 그 프로그램 명이 얻어진 프로그램에 들어간다.
데이터를 얻기 위하여, 새로운 프로그램은 프로세스 중에 시스템에 의해 전달된 데이터를 이용하여 표준적인 read(), recv(), 또는 recvfrom() 소켓 API 함수 호출을 발행한다. 이 함수 호출은 TCP/IP 또는 다른 유사한 프로토콜의 스택에 송신되지 않는데, 그 이유는 시스템은 이미 네트워크로부터의 데이터를 보유하고 있음을 알기 때문이다. 이 두 번째 read(), recv() 또는 recvfrom() 함수 호출의 목적은, 프로그램이 그 자신의 버퍼 또는 운영 시스템에 의해 얻어지는 버퍼로부터 데이터를 얻을 수 있게 하려는 것이다. 애플리케이션이 read(), recv() 또는 recvfrom() 함수 호출을 발행한 후에, 시스템은 애플리케이션에 의해 지정된 버퍼 내의 데이터를 애플리케이션에 되돌려 준다.
본 발명의 바람직한 실시예에서, 데이터가 4K의 할당된 공간보다 클 경우, 데이터의 첫 번째 바이트들이 할당된 공간에 수신된 후에, 데이터를 획득하기 위하여 (345)에 도시된 바와 같이 read(), recv() 또는 recvfrom() 명령어가 발행되는데, 이는 인입되는 데이터의 전송 및/또는 복사를 위해 최대 길이 또는 다른 적절히 긴 공간을 할당한다. 그러나, 만일 수신될 데이터가 최초 할당된 4K의 공간에 포함될 수 있다면, (350)에 도시된 바와 같이, 앞의 경우의 read(), recv() 또는 recvfrom() 명령어 대신에 또 다른 activate_on_receipt 명령어가 발행된다. 이 두 번째 activate_on_receipt 함수 호출은 할당된 4K의 메모리에서 시스템에 의한 데이터의 프로세싱을 가능케 하여, 더 많은 메모리 공간을 더 할당할 필요가 없게 된다. 바꾸어 말하면, 보다 긴 데이터 바이트의 복사를 수용하기 위하여 최대 길이 공간이 할당되지 않는다.
이상과 같이, 본 발명에 따르면, 시스템 이용 가능성 및 성능이 증가되고, 또한 시스템이 다수의 트랜잭션들을 처리할 수 있게 되어 시스템 제약으로 인해 시스템을 정지시킬 필요가 없게 된다.
이상, 특정의 바람직한 실시예들에 따라서 본 발명을 상세히 설명하였지만, 당 기술분야의 숙련자들에 의해 많은 변형 및 변경이 이루어질 수 있다. 따라서, 첨부된 특허청구범위에 의해 본 발명의 진정한 사상 및 범위 내에 속하는 그런 변형 및 변경들을 포함하고자 한다.

Claims (15)

  1. 하나 이상의 상주 운영 시스템(residence operating system)을 구비한 컴퓨터 시스템에서, 데이터 처리 장치에 있어서, 판독 명령어(read command)를 수신함과 동시에 액티베이트_온_리시트 프로그램 함수 호출(Activate_on_receipt program function call)을 발행(issue)하기 위한 수단과, 임의의 데이터 통신 프로토콜들을 식별하기 위한 소켓 기술어(socket descriptor)를 생성하기 위한 메커니즘과, 상기 프로그램 명 및 토큰 정보를 데이터 구조 포맷으로 저장하고 그것들을 상기 소켓 기술어와 관련시키기 위한 파일 기술어(file descriptor)를 갖는 시스템 제어표(system control table)와, 상기 요구 판독 명령어에 관련된 데이터를 수신함과 동시에, 상기 시스템 제어표의 위치를 알아내고, 상기 소켓 기술어 정보가 어디에 존재하는지를 알아내기 위한 수단과, 상기 컴퓨터 시스템 내에 새로운 프로세스를 생성하고 상기 시스템 제어표로부터 얻어진 상기 데이터를 요구하는 상기 프로그램의 프로그램 명을 입력하기 위한 수단과, 상기 판독 명령어를 처리하기 위한 수단을 포함하는 데이터 처리 장치.
  2. 제1항에 있어서, 상기 컴퓨터 시스템이 그 자신의 버퍼로부터 또는 그것의 상주 운영 시스템에 의해 얻어지는 임의의 다른 버퍼로부터 데이터를 획득할 수 있게 하도록 또 다른 판독 명령어를 발행하기 위한 수단을 더 포함하는 데이터 처리 장치.
  3. 제1항에 있어서, 상기 데이터가 처리되기 전에 상기 임시 기억 위치가 상기 인입되는 데이터(in-coming data)보다 크기가 작은 경우 또 다른 특수한 프로그램 인터페이스 함수 호출을 발행하기 위한 수단을 더 포함하는 데이터 처리 장치.
  4. 제3항에 있어서, 상기 인입되는 데이터를 위하여 새로운 기억 위치가 할당되고 상기 데이터는 상기 새로운 기억 위치에 복사되는 데이터 처리 장치.
  5. 제1항에 있어서, TCP/IP 통신 프로토콜이 이용되는 데이터 처리 장치.
  6. 제1항에 있어서, 상기 프로그램 명은 상기 프로그램 명을 지적하는 프로그램 명 포인터(program name pointer)라 불리는 파라미터에 의해 식별되는 데이터 처리 장치.
  7. 제1항에 있어서, 상기 토큰 명은 상기 프로그램 명을 지적하는 토큰 명 포인터(token name pointer)라 불리는 파라미터에 의해 식별되는 데이터 처리 장치.
  8. 제6항에 있어서, 상기 프로그램 명 포인터는, 상기 프로그램 명의 어드레스를 포함하고, 상기 데이터가 도달하는 때에 사용되고, 데이터 통신 세션(data communication session)을 수행하는 동안에 다른 포인터로부터 수신되는 데이터 처리 장치.
  9. 제7항에 있어서, 상기 토큰 포인터는 상기 애플리케이션이 상기 프로세스들 간에 전달하는 데이터를 갖는 8 바이트 토큰의 어드레스를 포함하는 데이터 처리 장치.
  10. 제9항에 있어서, 상기 토큰 명 파라미터는 길이가 8 바이트인 데이터 처리 장치.
  11. 제1항에 있어서, 상기 소켓 기술어는 상기 실행 중인 애플리케이션의 통신 세션과 관련된 파라미터인 데이터 처리 장치.
  12. 제1항에 있어서, 상기 소켓 기술어는 정수인 데이터 처리 장치.
  13. 상기 판독 명령어는 수신 명령어인 데이터 처리 장치.
  14. 제13항에 있어서, 상기 액티베이트_온_리시트 명령어는 데이터그램(datagram) 또는 비접속(connectionless) 소켓을 위하여 발행되는 데이터 처리 장치.
  15. 제14항에 있어서, 수신 명령어는 recvfrom() 명령어인 데이터 처리 장치.
KR1019980013051A 1997-05-29 1998-04-13 Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴 KR19980086589A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US86481497A 1997-05-29 1997-05-29
US8/864,814 1997-05-29

Publications (1)

Publication Number Publication Date
KR19980086589A true KR19980086589A (ko) 1998-12-05

Family

ID=25344132

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980013051A KR19980086589A (ko) 1997-05-29 1998-04-13 Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴

Country Status (2)

Country Link
JP (1) JPH10340238A (ko)
KR (1) KR19980086589A (ko)

Also Published As

Publication number Publication date
JPH10340238A (ja) 1998-12-22

Similar Documents

Publication Publication Date Title
US8549521B2 (en) Virtual devices using a plurality of processors
US7246167B2 (en) Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections
US7478390B2 (en) Task queue management of virtual devices using a plurality of processors
JP4690437B2 (ja) ネットワークアプリケーションにおける通信方法、通信装置及びそのためのプログラム
JP3553634B2 (ja) 相互接続インターフェース
KR100326864B1 (ko) 네트워크통신방법및네트워크시스템
US5761507A (en) Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US7921151B2 (en) Managing a plurality of processors as devices
US7784060B2 (en) Efficient virtual machine communication via virtual machine queues
US5638517A (en) Method and apparatus for transmitting a message from a computer system over a network adapter to the network by performing format conversion and memory verification
US20060190614A1 (en) Non-homogeneous multi-processor system with shared memory
US8533740B2 (en) Data processing system with intercepting instructions
JP2000020490A (ja) 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
US7640549B2 (en) System and method for efficiently exchanging data among processes
US9552225B2 (en) Data processing system with data transmit capability
KR19980086588A (ko) Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴
KR19980086589A (ko) Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴
KR19980086586A (ko) Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴
US5392426A (en) Method and apparatus for use in program operation, control and control block management and storage
US20010025324A1 (en) Data communication method and apparatus, and storage medium storing program for implementing the method and apparatus
KR19980086587A (ko) Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴
CA2237742A1 (en) A system resource reduction tool utilizing tcp/ip socket applications
JP2000227860A (ja) 並行アクセス制御方法とその装置及びマルチスレッドプロセス方法
Westall et al. MicroCIM: An Architectural and Owner's Manual.
Westall et al. An Architectural and Owner's Manual

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination