KR19990072483A - 애플리케이션프로그램과네트워크장치구동기프로그램사이의통신방법및시스템 - Google Patents
애플리케이션프로그램과네트워크장치구동기프로그램사이의통신방법및시스템 Download PDFInfo
- Publication number
- KR19990072483A KR19990072483A KR1019990004251A KR19990004251A KR19990072483A KR 19990072483 A KR19990072483 A KR 19990072483A KR 1019990004251 A KR1019990004251 A KR 1019990004251A KR 19990004251 A KR19990004251 A KR 19990004251A KR 19990072483 A KR19990072483 A KR 19990072483A
- Authority
- KR
- South Korea
- Prior art keywords
- program
- data unit
- program object
- data
- application
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
본 발명은 중재 구조 소프트웨어를 통해 애플리케이션 프로그램과 네트워크 장치 구동기 프로그램 사이의 통신 방법으로서,
(a) 상기 애플리케이션 프로그램으로부터, 상기 중재 구조 소프트웨어의 일부인 제1 프로그램 객체로 애플리케이션 데이터 유닛을 공급하는 단계와,
(b) 상기 애플리케이션 데이터 유닛에 대해 상기 제1 프로그램 객체의 제1 기능을 수행하는 단계와,
(c) 결과로 나타난 제1 데이터 유닛을, 상기 제1 프로그램 객체로부터, 상기 중재 구조 소프트웨어의 일부인 제2 프로그램 객체로 공급하는 단계와,
(d) 상기 제1 데이터 유닛에 대해 상기 제2 프로그램 객체의 제2 기능을 수행하는 단계와,
(e) 상기 결과로 나타난 제2 데이터 유닛을 상기 네트워크 장치 구동기 프로그램으로 공급하는 단계를 포함한다.
본 발명은 또한 중재 구조 소프트웨어를 통해 애플리케이션 프로그램과 네트워크 장치 구동기 프로그램간 통신 및 그 반대로 통신하는 시스템으로서,
(a) 상기 중재 구조 소프트웨어의 일부이며, 상기 데이터 유닛에 대해 제1 기능을 수행하는 제1 프로그램 객체로서, 상기 데이터 유닛은, 상기 애플리케이션 프로그램으로 전송되고 상기 애플리케이션 프로그램으로부터 전송되며, 상기 제1 프로그램 객체로 전송되고 상기 제1 프로그램 객체로부터 전송되는, 상기 제1 프로그램 객체와,
(b) 상기 중재 구조 소프트웨어의 일부이며, 상기 데이터 유닛에 대해 제2 기능을 수행하는 제2 프로그램 객체로서, 상기 데이터 유닛은, 상기 제2 프로그램 객체로 전송되고, 상기 제2 프로그램 객체로부터 전송되며, 상기 네트워크 구동기로 전송되고, 상기 네트워크 구동기로부터 전송되는, 상기 제2 프로그램 객체를 포함한다.
Description
본 발명은 객체 지향 프로그램을 가능하게 하는 객체 지향 운영 시스템(OS)에서 중재 구조 소프트웨어를 통해 애플리케이션 프로그램과 네트워크 장치 구동기 프로그램간 통신 방법 및 시스템에 관한 것이다.
분산 컴퓨팅 환경에서, 기계나 컴퓨터 시스템에서 실행되는 애플리케이션 프로그램은 네트워크를 통해 서로 통신한다. 이들 통신은 여러 세트의 규칙에 따라 발생하는데, 이들 규칙을 네트워크 프로토콜이라 한다. 모든 필요한 통신 기능을 제공하기 위해서 여러 세트의 규칙은 다루기 용이한 크기의 그룹으로 분할되는데, 각 그룹은 일부 특정 세트의 통신 기능을 수행하는데 필요한 규칙들만을 포함한다.
공지된 네트워크 프로토콜은 한 계층 위에 다른 계층이 사용되는 층들의 중재 구조 소프트웨어로 구성된다. 이들 층의 조합 혹은 중재 구조 소프트웨어를 네트워크 프로토콜 스택이라 한다. 이들 스택의 최하위엔 물리 구동기(physical driver)가 배치되는데, 이 구동기는 실제 네트워크와 데이터를 주고받는 것을 맡는다. 스택의 최상위엔 사용자 애플리케이션 프로그램이 배치되는데, 이 프로그램은 데이터를 발생하고 소모시킨다. 사용자 애플리케이션 프로그램이 사용하는 데이터는 물리 네트워크으로 보내지기 전에, 프로그램 스택을 통해 하류로 이동하는데, 여기서 데이터는 모든 프로토콜 층에 의해 조작된 후 최종으로 최하위 층에 도달하여 이 조작된 데이터가 물리 네트워크에 넣어진다. 마찬가지로, 물리 구동기가 데이터를 수신할 때, 데이터는 사용자 애플리케이션 프로그램으로 전달되기 전에 프로토콜 스택을 통해 상류로 이동한다.
본 발명은 중재 구조 소프트웨어를 통해 애플리케이션 프로그램과 네트워크 장치 구동기 사이의 통신 방법에 있어서,
a. 상기 애플리케이션 프로그램으로부터, 상기 중재 구조 소프트웨어의 일부인 제1 프로그램 객체로 애플리케이션 데이터 유닛을 공급하는 단계와,
b. 상기 애플리케이션 데이터 유닛에 대해 상기 제1 프로그램 객체의 제1 기능을 수행하는 단계와,
c. 결과로 나타난 제1 데이터 유닛을, 상기 제1 프로그램 객체로부터, 상기 중재 구조 소프트웨어의 일부인 제2 프로그램 객체로 공급하는 단계와,
d. 상기 제1 데이터 유닛에 대해 상기 제2 프로그램 객체의 제2 기능을 수행하는 단계와,
e. 상기 결과로 나타난 제2 데이터 유닛을 상기 네트워크 장치 구동기 프로그램으로 공급하는 단계를 포함하는 애플리케이션 프로그램과 네트워크 장치 구동기 프로그램 사이의 통신 방법을 제공한다.
상기 중재 구조 소프트웨어의 상기 기술한 2개의 프로그램 객체 혹은 프로토콜 객체 외에도 본 발명은 2개 이상의 프로그램 객체로부터 및 이에 데이터 유닛을 공급하는 단계를 또한 포함한다.
본 발명은 중재 구조 소프트웨어를 통해 네트워크 장치 구동기 프로그램과 애플리케이션 프로그램간 통신 방법에 있어서,
a. 상기 네트워크 장치 구동기 프로그램으로부터, 상기 중재 구조 소프트웨어의 일부인 제1 프로그램 객체 혹은 프로토콜 객체로 제1 데이터 유닛을 공급하는 단계와,
b. 상기 제1 데이터 유닛에 대해 상기 제1 프로그램 객체의 제1 기능을 수행하는 단계와,
c. 결과로 나타난 제2 데이터 유닛을, 상기 제1 프로그램 객체로부터, 상기 중재 구조 소프트웨어의 일부인 제2 프로그램 객체로 공급하는 단계와,
d. 상기 제2 데이터 유닛에 대해 상기 제2 프로그램 객체의 제2 기능을 수행하는 단계와,
e. 상기 결과로 나타난 애플리케이션 데이터 유닛을 상기 애플리케이션 프로그램으로 공급하는 단계를 포함하는 네트워크 장치 구동기 프로그램과 애플리케이션 프로그램간 통신 방법을 또한 제공한다.
본 발명에 따른 방법은 최적의 실행 환경을 제공하며 실행 시 스택을 구축 및 변경할 수 있게 하며, 무복사 구조(zero-copy architecture)를 가능하게 하며, 자동적으로 내부 이벤트를 로깅한다.
각각의 프로그램 객체 혹은 모듈은 네트워크 프로토콜을 제공하며 모든 프로그램 객체는 함께 네트워크 프로토콜 스택을 제공한다.
2개의 프로그램 객체 혹은 모듈간 데이터 전송은 상호접속된 큐-객체(queue-objects)를 통해 달성된다. 상호접속된 큐-객체 내에서 데이터 유닛에의 참조는 프로그램 객체간에 전달된다.
바람직한 실시예에서, 2개의 프로그램 객체간 접속을 위해 한 큐를 사용하는 대신에, 한 큐 이상이 구현될 수 있으며, 상이한 큐에 상이한 우선순위, 즉 한 큐를 정규 트래픽용으로 사용하고 다른 큐를 긴급 데이터 유닛 전송용으로 사용할 수 있다. 또 다른 실시예에서, 2개 이상의 우선순위 레벨, 즉 정규 및 긴급 우선순위를 갖는 큐들이 제공된다.
또 다른 실시예에서, 데이터 유닛이 프로토콜 스택 하류로 이동할 때, 예를 들면 헤더 혹은 종단부로서 프로토콜 제어 정보를 부가하는 것이 가능하다. 이 부가를 "캡슐화(encapsulation)"이라 한다. 데이터 유닛이 스택 상류로 이동할 때, 이 프로토콜 제어 정보는 다시 제거된다. 이 제거를 "역캡슐화(decapsulation)"이라 한다. 다중 데이터에서 데이터 유닛이 하류로 혹은 상류로 전달될 필요가 있다면, 이것을 "단편화(fragmentation)"라 한다. 다중 데이터 유닛을 결합하는 것을 "역단편화(defragmentation)"라 한다.
본 발명은 애플리케이션 프로그램이 실행될 동안 중재 구조에서 프로그램 객체가 부가되거나 제거되는 방법을 또한 제공한다. 이것은 애플리케이션 프로그램을 인터럽트하지 않고 혹은 컴퓨터 시스템을 재 부팅하지 않고서도 네트워크와의 통신 규칙을 변경할 수 있게 한다.
본 발명은 중재 구조 소프트웨어를 통해 애플리케이션 프로그램과 네트워크 장치 구동기 프로그램간 통신 및 그 반대로 통신하는 시스템에 있어서,
(a) 상기 중재 구조 소프트웨어의 일부이며, 상기 데이터 유닛에 대해 제1 기능을 수행하는 제1 프로그램 객체로서, 상기 데이터 유닛은, 상기 애플리케이션 프로그램으로 전송되고 상기 애플리케이션 프로그램으로부터 전송되며, 상기 제1 프로그램 객체로 전송되고 상기 제1 프로그램 객체로부터 전송되는, 상기 제1 프로그램 객체와,
(b) 상기 중재 구조 소프트웨어의 일부이며, 상기 데이터 유닛에 대해 제2 기능을 수행하는 제2 프로그램 객체로서, 상기 데이터 유닛은, 상기 제2 프로그램 객체로 전송되고, 상기 제2 프로그램 객체로부터 전송되며, 상기 네트워크 구동기로 전송되고, 상기 네트워크 구동기로부터 전송되는, 상기 제2 프로그램 객체를 포함하는, 애플리케이션 프로그램과 네트워크 장치 구동기 프로그램간 통신 시스템을 또한 제공한다.
본 발명은 중재 구조 소프트웨어를 통해 네트워크 장치 구동기 프로그램과 애플리케이션 프로그램간 통신방법에 있어서,
a. 상기 애플리케이션 프로그램으로부터, 상기 중재 구조 소프트웨어의 일부인 제1 프로그램 객체 혹은 프로토콜 객체로 제1 데이터 유닛을 공급하는 단계와,
b. 상기 애플리케이션 데이터 유닛에 대해 상기 제1 프로그램 객체의 제1 기능을 수행하는 단계와,
c. 결과로 나타난 제1 데이터 유닛을, 상기 제1 프로그램 객체로부터, 상기 중재 구조 소프트웨어의 일부인 제2 프로그램 객체로 공급하는 단계와,
d. 상기 제1 데이터 유닛에 대해 상기 제2 프로그램 객체의 제2 기능을 수행하는 단계와,
e. 상기 결과로 나타난 제2 데이터 유닛을 상기 네트워크 장치 구동기 프로그램으로 공급하는 단계를 포함하는 네트워크 장치 구동기 프로그램과 애플리케이션 프로그램간 통신방법을 또한 제공한다.
도 1은 네트워크에 접속된 개인용 컴퓨터를 개략적으로 도시한 도면.
도 2는 공지된 층 프로토콜 스택을 도시한 도면.
도 3은 본 발명에 따른 방법 및 시스템의 바람직한 실시예에 따른 방법 및 시스템을 도시한 도면.
도 4는 프로그램 객체간 공유된 메모리 풀을 도시한 도면.
도 5a는 데이터 유닛의 메모리 레이아웃을 도시한 도면.
도 5b는 데이터 유닛의 논리구조를 도시한 도면.
도 6a는 UDP 헤더가 부가된 데이터 유닛의 메모리 레이아웃을 도시한 도면.
도 6b는 UDP 헤더가 부가된 데이터 유닛의 논리구조를 도시한 도면.
도 7a는 2개의 IP 패킷으로 단편화한 후 및 헤더의 삽입 후의 도 6a의 메모리 레이아웃을 도시한 도면.
도 7b는 2개의 IP 패킷으로 단편화한 후 및 헤더의 삽입 후의 도 6b의 메모리 레이아웃을 도시한 도면.
※ 도면의 주요 부분에 대한 부호의 설명 ※
1 : 중앙 처리 장치 2 : 랜덤 액세스 메모리
3 : 독출 전용 메모리 4 : 버스
5 : 네트워크 어댑터 6 : 호스트 컴퓨터
7 : 네트워크 8 : 애플리케이션 프로그램 층
9 : 전송 프로토콜 10 : 네트워크 층
11 : 링크 층 12-16, 20, 21 : 프로토콜 객체
17, 18 : 장치 구동기 프로그램
22 : 메모리 풀 23, 24 : SDU
25 : SDU 관리자
동일부분에 동일 참조부호를 할당한 첨부한 도면을 참조하여 바람직한 실시예에 의해 본 발명을 설명한다.
도 1은 중앙 처리 장치(1), 랜덤 액세스 메모리(2), 독출 전용 메모리(3) 및 네트워크 어댑터(5)를 포함하며, 이들 모두가 버스(4)를 통해 접속된 개인용 컴퓨터 혹은 워크스테이션을 도시한 것이다. 네트워크 어댑터(5)는 네트워크(7)에 접속되고, 이어서 이 네트워크는 호스트 컴퓨터(6)에 접속된다. 개인용 컴퓨터 대신, 셀룰라폰과 같은 소형 내장형 시스템부터 대형 고성능 비디오 서버에 이르기까지 광범위한 다양한 장치가 사용될 수 있다.
층 구조로서, 예를 들면 7개의 층으로 프로토콜을 구현하는 프레임워크를 정의하는 범세계 통신에 표준인 OSI 모델의 네트워크 프로토콜에 결합되는 네트워크 프로토콜이 알려져 있다.
도 2에 4개의 층 프로토콜 스택이 도시되어 있는데, 여기서 애플리케이션 프로그램 층(8)은 특정 애플리케이션 프로그램의 상세를 처리하며, 트랜스포트층(9)은 2개의 호스트간 데이터 흐름을 제공하며, 네트워크 층(10)은 네트워크 주위로 데이터 유닛의 이동을 처리하며 링크 네트워크(11)은 네트워크와 실제 물리적인 인터페이스를 처리하는 네트워크 장치 구동기 프로그램을 포함한다.
인터넷 모델(TCP/IP)은 4개 층 프로토콜 스택이다. 애플리케이션 프로그램 층(8)은 파일을 다운로딩하거나 업로딩하는 파일 전송 프로토콜(FTP), 전자 우편을 위한 간단한 우편 전송 프로토콜(SMTP) 등을 포함한다. 트랜스포트층(9)은 데이터의 올바른 전달을 검증하는 것을 맡고 있는 송신 제어 프로토콜(TCP)이다. TCP는 에러 혹은 손실된 데이터를 검출하여 데이터가 정확하고 완전하게 수신될 때까지 재송신을 시작하게 하기 위해 지원(support) 정보를 부가한다. 또 다른 트랜스포트층(9)은 사용자 데이터그램 프로토콜(UDP)로서, 이것은 데이터 유닛이 이들의 목적지에 도달하였는지 여부를 체크하지 않고, 한 호스트에서 다른 호스트로 데이터 유닛(데이터그램)를 보낸다. 이 실시예에서 애플리케이션 프로그램은 신뢰성 있는 전달을 맡고 있다. 네트워크 층(10)의 예로서 인터넷 프로토콜(IP)은 네트워크를 통해 메시지를 보내는 루팅 메카니즘을 제공한다. 파일 전송 프로토콜(FTP) 혹은 간단한 우편 전송 프로토콜(SMTP)과 같은 애플리케이션 프로그램은 각각 상이한 네트워크 사이트간에 다운로딩 및 업로딩을 할 수 있게 하고 네트워크 사이트간에 전자 우편 메시지를 주고 받을 수 있도록 제공된다. 링크 층(11)은 ATM, IEEE 1394 혹은 이서넷 네트워크를 구현하기 위해 제공된다.
바람직한 실시예에 따라 분화된 실행 환경 혹은 메타스페이스라고 하는 것이 이의 최상위에서 동작하는 프로그램 객체에 대해 제공된다. 각각의 메타스페이스는 예를 들면 특정 요구에 맞게 된 그 자신의 메시지 전달 방식을 갖고 있다. 네트워크 프로토콜 및 네트워크 프로토콜 스택을 위해 분화된 메타스페이스를 mNET라 하며, 장치 구동기 프로그램을 지원하는 메타스페이스를 mDrive라 하며, 애플리케이션 프로그램을 프로그램하기 위한 메타스페이스를 mCOOP라 한다.
mDrive 상의 물리 구동기가 데이터 유닛을 수신할 때, 이 데이터 유닛은 mNet 상의 프로토콜 객체를 통해 이동한 후 mCoop에서 실행되는 사용자 애플리케이션에 의해 소모된다. 요약하여, 장치 구동기 프로그램은 mDrive에서 실행되고, 네트워크 프로토콜 객체는 mNet에서 실행되며, 애플리케이션 객체는 mCoop에서 실행된다. 이들 전용 환경으로서 예를 들면 프로토콜 및 프로토콜 스택의 구현을 위한 mNet를 구축하면 필요로 하는 특정 기능성에 최대한의 지원이 제공된다는 이점이 있다.
mNet 메타스페이스에서, 네트워크 프로토콜은 소정 세트의 방법 혹은 기능을 구비한 모듈이라 하는 하나 이상의 프로그램 객체를 통해 구현된다. 프로토콜 스택은 다중의 모듈을 큐 객체에 상호접속함으로써 구현된다. 데이터 유닛은 한 세트의 상호접속 모듈을 통해서 이동하는데, 각각의 모듈은 데이터 유닛에 어떤 작용, 즉 헤더 및 종단부를 더하거나 제거하며, 데이터 유닛을 단편화하거나 역단편화 등을 수행한 후 이를 다음 모듈로 보낸다.
도 3은 다른 메타스페이스 중에서 mNet 메타스페이스 및 이의 위치를 도시한 것이다. 데이터 유닛이 mCoop 상의 애플레이케이션 프로그램 객체(10 또는 11)에 의해 발생될 때, 이 데이터 유닛은 mNet 상에서 실행되는 프로토콜 객체(12-16) 하류로 이동하며, 여기서 데이터 유닛은 모든 프로그램 객체에 의해 조작된다. 프로그램 객체(12)는 인터넷 모델에서 전송 제어 프로토콜(TCP)이며, 프로그램 객체(13)는 사용자 데이터그램 프로토콜(UDP)이며, 프로그램 객체(14)는 인터넷 프로토콜(IP)로서, 이것은 직렬 통신회선을 통해 다이얼 업 액세스를 제공하는 것이며, 프로그램 객체(16)은 ATM-인터페이스를 제공한다.
조작된 데이터 유닛이 최하위층에 도달할 때, 이 데이터 유닛은 직렬 구동기 및 ATM-구동기 각각을 제공하는 mDrive에서 실행되는 장치 구동기 프로그램(17 혹은 18)에 의해 물리 네트워크에 넣어진다.
모듈은 소정 세트의 방법을 갖는다. 이들 방법은 어떤 작용 혹은 기능이 모듈에 의해 수행될 필요가 있을 때 실시된다. 이 소정 세트의 방법에 대한 제한으로 프로토콜 스택을 구축할 때 모듈간 통신이 더욱 쉬어진다. 그러나 설치할 때 혹은 실행 시, 별도의 방법을 갖는 모듈로 확장하는 것이 가능하다.
소정 세트의 방법을 이하 기술한다.
?? Init : 이 방법은 모듈이 생성될 때 활성화된다.
?? OpenTop, OpenBottom : 지시된 측에서 이 모듈에의 큐가 생성되고 있다. 모듈은 큐를 받거나 거절할 수 있다.
?? RejectTop, RejectBottom : 이 모듈에 개방된 큐는 연루된 2개의 모듈 중 한 모듈에 의해 거절되었다.
?? AcceptTop, AcceptBottom : 이 모듈에 개방된 큐는 연루된 양 모듈에 의해 받아들여졌다.
?? ServiceTop, ServiceBottom : 하나 이상의 SDU는 이 모듈의 최상위 혹은 최하위에 접속된 큐에 대해 처리되도록 대기하고 있다.
?? CloseTop, CloseBottom : 지정된 측에서 이 모듈에 접속된 큐는 닫혀지고 있다.
?? TimeOut : 이 방법은 이 모듈에 대한 타이머가 종료될 때는 언제나 호출될 것이다.
?? Debug : 테스트 및 디버그하는데 사용되는 특별한 방법.
모듈의 최상위는 다음 상위의 프로토콜층을 구현하는 모듈로 이끄는 큐에 접속한다. 모듈의 최하위는 다음 하위의 프로토콜층을 구성하는 모듈로 이끄는는 큐에 접속한다.
본 발명의 바람직한 실시예에서 큐의 2개의 기본 형태로서 원소(atomic) 큐 및 스트리밍 큐가 존재한다. 원소 큐는 SDU 경계를 유지하는데, 수신기는 송신기에 의해 큐에 기입되었던 상기 SDU를 그 큐로부터 정확하게 읽을 것이다. 스트리밍 큐에서, 수신기는 송신기에 의해 원래 기입되었던 SDU의 크기와 다른 크기로 그 큐로부터 SDU를 읽을 수 있다. 또한 스트리밍 큐로부터 읽혀진 데이터는 큐로부터 실제 제거되지 전에 명백하게 인지되어야 한다.
또 다른 바람직한 실시예에서 프로그램 객체 혹은 모듈은 하나 이상의 큐를 사용하여 상호접속될 수 있다. 우선순위 메카니즘을 사용하여, 한 큐는 정규 트래픽용으로 사용될 수 있고 다른 큐는 긴급 데이터 전송용으로 사용될 수 있다. 긴급 큐로부터 데이터는 먼저 시스템에 의해 모듈로 제공될 것이다.
본 발명의 또 다른 바람직한 실시예에서, 프로그램 객체는 큐들을 상호접속함으로써 양방향으로 상호접속되는데, 이 큐들은 SDU를 전달하는 2개의 우선순위 레벨, 즉 정규 우선순위 및 긴급 우선순위를 갖는다. SDU가 긴급 우선순위로 큐에 보내질 때, 모든 다른 SDU가 정규 우선순위로 보내지기 전에 그 큐의 다른 말단에 도달할 것이다.
모듈간에 정보를 전달하는데 사용되는 기본 데이터를 서비스 데이터 유닛(SDU)라 한다. SDU는 모든 모듈이 공유하는 동적 메모리 버퍼이며, 가능한 한 데이터의 물리적 복사를 회피하도록 데이터 조작을 위해 사용된다.
모듈은 항상 다음 단계를 통해 반복한다.
- 큐로부터 SDU를 수신한다.
- SDU를 처리하여 모듈의 내부 상태를 갱신한다.
- 하나 이상의 SDU를 다음 모듈로 보낸다.
- 선택적으로 후처리를 수행한다.
- 수신될 다음 SDU를 대기한다.
모듈은 실행시 큐를 사용하여 상호접속될 수 있다. 이들 큐는 또한 언제든지 제거될 수 있다. 이것은 동적인 생성 및 프로토콜 스택의 구성을 가능하게 한다.
mNet 상에 프로토콜 스택을 어떠한 방식으로 동적으로 구축할 수 있는가를 보인 코딩의 예를 이하에 제공한다. 먼저 코드는 mNet::Find Service를 사용하여 모든 프로토콜 스택 모듈을 찾는다. 모듈은 이어서 mNetQueue::Open Service를 사용하여 원소 큐(atomic queue)에 상호접속된다.
데이터 유닛은 한 세트의 상호접속된 모듈을 통해 이동하며 각각의 모듈은 다음 모듈로 데이터 유닛을 전달하기 전에, 이들 데이터 유닛에 어떤 작용을 수행한다. 모든 이들 조작은 가능한 한 빠르게 수행될 필요가 있기 때문에, 데이터 유닛은 반드시 복사될 필요가 없다. 그 대신 데이터 유닛 및 큐를 가르키는 데이터 참조가 모듈간에 전달된다. 그러므로, 모든 SDU는 데이터 유닛의 메모리 풀(pool)을 관리하는 중앙 SDU 관리자에 의해 관리된다. 이 메모리 풀은 mNet SDU 관리자와 모든 mNet 모듈 및 큐간에 공유된다. 도 4에서, 프로그램 객체(20 및 21)의 SDU(23 및 24)는 SDU 관리자(25)에 의해 관리되는 메모리 풀(22) 내에 있다. 한 프로그램 객체(20)에서 다른 프로그램 객체(21)로 갈 때, 공유된 메모리 풀(22) 내에서 SDU(23 혹은 24)가 물리적으로 복사되거나 이동되는 것을 피하기 위해서, SDU는 참조를 사용하여 저장되는데, 이 참조는 도 5 내지 도 7에 도시한 바와 같이, SDU의 메모리 위치, 및 SDU 내의 데이터 유닛의 오프셋 및 크기를 가르키고 있다.
사용자 데이터그램 프로토콜(UDP)을 사용하여 ATM 네트워크를 통해 데이터 유닛을 보내는 프로그램 애플리케이션을 고찰한다. 애플리케이션 프로그램은 먼저 애플리케이션 데이터 유닛을 포함하는 SDU를 구축한다. 메모리 풀(22)의 원래의 SDU 메모리 레이아웃을 도 5a에 도시하였으며, 이의 논리구조를 도 5b에 도시하였다. SDU에 포함된 데이터는 가변 크기의 데이터 유닛로 저장되며, 실제 SDU는 어떤 오프셋으로 데이터 유닛을 함께 결합하여 구성된다. 이어서 SDU는 UDP 모듈로 향한다. UDP 모듈은 SDU 앞에 적합한 UDP 헤더를 부가한다. SDU 조직화에 대한 이러한 작용의 효과를 도 6a에 예시하였는데, 이 도면에 결과로 나타난 SDU 메모리 레이아웃을 도시하였으며, 도 6b에 그 논리구조를 도시하였다. 이어서 UDP 모듈은 SDU를 IP 모듈로 전달한다. IP 모듈은 필요하게 된 경우 UDP 데이터그램을 단편화하여 IP 헤더를 모든 단편에 부가한다. SDU에 대한 단편화 및 IP 헤더 삽입 효과를 도 7a 및 도 7b에 도시하였다. 이어서 데이터 유닛은 이를 네트워크를 통해 보내는 ATM 구동기로 전달된다. 이들 조작 전체를 통해 SDU 데이터 유닛은 결코 복사되거나 이동되지 않는다. 연루된 유일한 작용은 SDU에 대한 참조를 재조직화하고 SDU 내에 데이터 유닛의 오프셋 및 크기를 재조직화하는 것이다. 이것은 통신방법을 고속 및 신뢰성있게 한다.
전술한 바와 같이 SDU를 관리함으로써 다음의 잇점이 제공된다.
- 데이터는 SDU간에 공유될 수 있다. 즉 한 SDU에서 다른 SDU로 데이터의 복사나 이동은 데이터를 물리적으로 복사하거나 이동하는 대신 참조 및 참조 카운터를 유지함으로써 행해진다.
- SDU로부터 데이터를 더하고 제거하는 것은 SDU 내용을 물리적으로 복사하거나 이동시키지 않고서도 달성될 수 있다.
- SDU 데이터는 메모리 내에서 연속적으로 저장될 필요가 없다.
또 다른 바람직한 실시예에서, SDU는 SDU 풀 내에 조직화, 즉 생성, 할당되는데, 이들은 메모리 버퍼를 공유한다. 모든 프로그램 객체 혹은 모듈에는 하나의 단일 SDU 풀이 부착되는데, 이것은 SDU를 생성하며 SDU에 대해 데이터를 할당한다. 바람직한 실시예에서, 중재 구조 소프트웨어 및 애플리케이션 프로그램은 특정 사용에 최적화된 상이한 SDU 풀을 갖는다. SDU 풀은 하나 이상의 프로그램 객체 혹은 모듈간에 공유될 수 있는 것이다. 이의 잇점은 중요한 프로그램 객체에 더욱 큰 SDU 풀을 할당할 수 있는 한편 덜 중요한 프로그램 객체의 경우 더 작은 SDU이면 충분할 것이라는 것이다. SDU 풀은 또한 프로토콜 스택의 지역 흐름 제어 메카니즘을 간접적으로 제공한다.
본 발명의 또 다른 실시예에서, 기호명을 사용하여 프로그램 객체나 모듈이 다른 프로그램 객체나 모듈을 찾게 하도록 명명(naming) 서비스가 제공된다. 즉 특정 하드웨어 구성의 내부 통신 메카니즘과 기호명간에 매핑이 제공된다. 이들 명칭은 앞서 기술한 참조에 의해 그 역으로 매핑될 수 있다.
본 발명은 상기 주어진 실시예로 제한되지 않는다. 본 발명의 범위는 다음의 청구범위로 정해지며, 상기 실시예에 대한 많은 수정이 본 발명의 범위 내에서 가능하다.
Claims (19)
- 중재 구조(intermediate structure) 소프트웨어를 이용한 애플리케이션 프로그램과 네트워크 장치 구동기 프로그램 사이의 통신 방법으로서,(a) 상기 애플리케이션 프로그램으로부터, 상기 중재 구조 소프트웨어의 일부인 제1 프로그램 객체로, 애플리케이션 데이터 유닛을 공급하는 단계와,(b) 상기 애플리케이션 데이터 유닛에 대해 상기 제1 프로그램 객체의 제1 기능을 수행하는 단계와,(c) 결과로 나타난 제1 데이터 유닛을, 상기 제1 프로그램 객체로부터, 상기 중재 구조 소프트웨어의 일부인 제2 프로그램 객체로 공급하는 단계와,(d) 상기 제1 데이터 유닛에 대해 상기 제2 프로그램 객체의 제2 기능을 수행하는 단계와,(e) 상기 결과로 나타난 제2 데이터 유닛을 상기 네트워크 장치 구동기 프로그램으로 공급하는 단계를 포함하는, 애플리케이션 프로그램과 네트워크 장치 구동기 프로그램 사이의 통신 방법.
- 제 1 항에 있어서, 상기 데이터 유닛은 상호접속된 큐-객체(queue-objects)를 통해 공급되는 방법.
- 제 1 항에 있어서, 프로그램 객체간 데이터 유닛의 공급은, 상기 데이터 유닛의 메모리 위치를 가리키는 참조(reference)를 전달함으로써 행해지는 방법.
- 제 2 항에 있어서, 상기 데이터 유닛은 상호접속된 큐-객체를 통해 공급되며, 상기 큐-객체는 상이한 우선순위(priorities)를 갖는 방법.
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서, 프로그램 객체는 상기 애플리케이션 프로그램의 실행 시간동안 부가되는 방법.
- 제 1 항 내지 제 5 항 중 어느 한 항에 있어서, 프로그램 객체는 상기 애플리케이션 프로그램의 실행 시간동안 제거되는 방법.
- 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 프로그램 객체의 기능을 수행하고 데이터 유닛을 다른 프로그램 객체로 공급한 후에, 상기 프로그램 객체의 부가적인 기능이 수행되는 방법.
- 제 2 항 또는 제 3 항에 있어서, 상기 (a) 단계 및/또는 상기 (c) 단계는 상기 데이터 유닛에 정보를 부가하거나, 데이터 유닛으로부터 정보를 제거하는 단계를 더 포함하는 방법.
- 제 3 항에 있어서, 데이터 유닛을 데이터 유닛 부분들로 분할하는 단계, 또는 데이터 유닛 부분들을 데이터 유닛으로 결합하는 단계를 더 포함하는 방법.
- 제 1 항 내지 제 9 항 중 어느 한 항에 있어서, 하나 이상의 데이터 유닛을 포함하는 서비스 데이터 유닛을 제공하는 방법.
- 제 10 항에 있어서, 상기 서비스 데이터유닛을 참조하여 데이터 유닛을 참조하는 방법.
- 제 1 항 내지 제 11 항 중 어느 한 항에 있어서, 상기 애플리케이션 프로그램과 상기 네트워크 장치 구동기 프로그램 사이의 통신을 위해 특화된 실행 환경을 더 제공하는 방법.
- 제 1 항 내지 제 12 항 중 어느 한 항에 있어서, 데이터 유닛은 특정 사용에 적합한 데이터 유닛 풀 내에 조직화된 방법.
- 제 1 항 내지 제 13 항 중 어느 한 항에 있어서, 상기 하드웨어의 내부 통신 메커니즘과 기호명(symbol name) 사이의 매핑을 위해 명명 서비스를 제공하는 방법.
- 중재 구조 소프트웨어를 이용해 애플리케이션 프로그램과 네트워크 장치 구동기 프로그램 사이의 통신용 시스템으로서,(a) 상기 중재 구조 소프트웨어의 일부이며, 상기 데이터 유닛에 대해 제1 기능을 수행하는 제1 프로그램 객체로서, 상기 데이터 유닛은, 상기 애플리케이션 프로그램으로 전송되고 상기 애플리케이션 프로그램으로부터 전송되며, 상기 제1 프로그램 객체로 전송되고 상기 제1 프로그램 객체로부터 전송되는, 상기 제1 프로그램 객체와,(b) 상기 중재 구조 소프트웨어의 일부이며, 상기 데이터 유닛에 대해 제2 기능을 수행하는 제2 프로그램 객체로서, 상기 데이터 유닛은, 상기 제2 프로그램 객체로 전송되고, 상기 제2 프로그램 객체로부터 전송되며, 상기 네트워크 구동기로 전송되고, 상기 네트워크 구동기로부터 전송되는, 상기 제2 프로그램 객체를 포함하는, 애플리케이션 프로그램과 네트워크 장치 구동기 프로그램 사이의 통신 시스템.
- 제 15 항에 있어서, 서비스 데이터 유닛은 참조를 사용하여 메모리부 내에 저장된 시스템.
- 제 15 항 또는 제 16 항에 있어서, SDU 관리자가 제공된 시스템.
- 중재 구조 소프트웨어를 이용한 네트워크 장치 구동기 프로그램과 애플리케이션 프로그램 사이의 통신 방법으로서,(a) 상기 네트워크 장치 구동기 프로그램으로부터, 상기 중재 구조 소프트웨어의 일부인 제1 프로그램 객체 혹은 프로토콜 객체로 제1 데이터 유닛을 공급하는 단계와,(b) 상기 제1 데이터 유닛에 대해 상기 제1 프로그램 객체의 제1 기능을 수행하는 단계와,(c) 결과로 나타난 제2 데이터 유닛을, 상기 제1 프로그램 객체로부터, 상기 중재 구조 소프트웨어의 일부인 제2 프로그램 객체로 공급하는 단계와,(d) 상기 제2 데이터 유닛에 대해 상기 제2 프로그램 객체의 제2 기능을 수행하는 단계와,(e) 상기 결과로 나타난 애플리케이션 데이터 유닛을 상기 애플리케이션 프로그램으로 공급하는 단계를 포함하는 네트워크 장치 구동기 프로그램과 애플리케이션 프로그램 사이의 통신 방법.
- 제 4 항에 있어서, 큐-객체 내에 데이터 유닛을 전달하는 2개 이상의 우선순위가 제공되는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP98200379A EP0935192A1 (en) | 1998-02-09 | 1998-02-09 | Method and system for communication between application programs and a network |
EP98200379.0 | 1998-02-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR19990072483A true KR19990072483A (ko) | 1999-09-27 |
Family
ID=8233369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990004251A KR19990072483A (ko) | 1998-02-09 | 1999-02-08 | 애플리케이션프로그램과네트워크장치구동기프로그램사이의통신방법및시스템 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7069561B1 (ko) |
EP (1) | EP0935192A1 (ko) |
JP (1) | JP2000067017A (ko) |
KR (1) | KR19990072483A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101065114B1 (ko) * | 2003-06-19 | 2011-09-16 | 텍사스 인스트루먼츠 인코포레이티드 | 프로그래밍 언어 표현에서 장치 드라이버 메모리로의 액세스 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7003571B1 (en) * | 2000-01-31 | 2006-02-21 | Telecommunication Systems Corporation Of Maryland | System and method for re-directing requests from browsers for communication over non-IP based networks |
US8090856B1 (en) * | 2000-01-31 | 2012-01-03 | Telecommunication Systems, Inc. | Intelligent messaging network server interconnection |
US7689696B2 (en) * | 2000-01-31 | 2010-03-30 | Telecommunication Systems, Inc. | System and method for re-directing requests from browsers for communications over non-IP based networks |
US7290266B2 (en) * | 2001-06-14 | 2007-10-30 | Cisco Technology, Inc. | Access control by a real-time stateful reference monitor with a state collection training mode and a lockdown mode for detecting predetermined patterns of events indicative of requests for operating system resources resulting in a decision to allow or block activity identified in a sequence of events based on a rule set defining a processing policy |
CN1317868C (zh) * | 2002-05-28 | 2007-05-23 | 中兴通讯股份有限公司 | 一种基于类模板管理器的通讯报文处理设备和方法 |
US7523220B2 (en) * | 2003-09-17 | 2009-04-21 | Microsoft Corporation | Metaspace: communication middleware for partially connected mobile ad hoc networks |
JP5033343B2 (ja) * | 2006-03-28 | 2012-09-26 | 株式会社野村総合研究所 | ジョブ管理装置およびジョブ管理方法 |
JP5401385B2 (ja) * | 2010-03-31 | 2014-01-29 | 株式会社ミツトヨ | 通信ソフトウェア |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5619647A (en) * | 1994-09-30 | 1997-04-08 | Tandem Computers, Incorporated | System for multiplexing prioritized virtual channels onto physical channels where higher priority virtual will pre-empt a lower priority virtual or a lower priority will wait |
US5754854A (en) * | 1994-11-14 | 1998-05-19 | Microsoft Corporation | Method and system for providing a group of parallel resources as a proxy for a single shared resource |
US6393496B1 (en) * | 1995-11-09 | 2002-05-21 | Curtis A. Schwaderer | Operating system and network independent application program interface for use in an intelligent communication device |
US5954794A (en) * | 1995-12-20 | 1999-09-21 | Tandem Computers Incorporated | Computer system data I/O by reference among I/O devices and multiple memory units |
US5826010A (en) * | 1996-02-12 | 1998-10-20 | Banyan Systems, Inc. | Predefined access rights for undefined attributes in a naming service |
US6535929B1 (en) * | 1996-07-02 | 2003-03-18 | Sun Microsystems, Inc. | Universal communication mechanism for applications running in a multitasking environment |
US6289393B1 (en) * | 1996-09-03 | 2001-09-11 | Insession Inc. | System, method and article of manufacture for transaction processing and monitoring of independent interacts |
US6253255B1 (en) * | 1997-05-08 | 2001-06-26 | Microsoft Corporation | System and method for batching data between transport and link layers in a protocol stack |
US6807667B1 (en) * | 1998-09-21 | 2004-10-19 | Microsoft Corporation | Method and system of an application program interface for abstracting network traffic control components to application programs |
-
1998
- 1998-02-09 EP EP98200379A patent/EP0935192A1/en not_active Withdrawn
-
1999
- 1999-02-08 KR KR1019990004251A patent/KR19990072483A/ko not_active Application Discontinuation
- 1999-02-08 US US09/246,271 patent/US7069561B1/en not_active Expired - Fee Related
- 1999-02-09 JP JP11031519A patent/JP2000067017A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101065114B1 (ko) * | 2003-06-19 | 2011-09-16 | 텍사스 인스트루먼츠 인코포레이티드 | 프로그래밍 언어 표현에서 장치 드라이버 메모리로의 액세스 |
Also Published As
Publication number | Publication date |
---|---|
EP0935192A1 (en) | 1999-08-11 |
US7069561B1 (en) | 2006-06-27 |
JP2000067017A (ja) | 2000-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7827295B2 (en) | Protocol stack | |
KR101941416B1 (ko) | 네트워킹 기술들 | |
Kleinpaste et al. | Software support for outboard buffering and checksumming | |
US7519650B2 (en) | Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms | |
EP2312807B1 (en) | Method and system for enabling zero-copy transmission of streaming media data | |
US6877048B2 (en) | Dynamic memory allocation between inbound and outbound buffers in a protocol handler | |
US7461160B2 (en) | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory | |
US6434620B1 (en) | TCP/IP offload network interface device | |
US6751665B2 (en) | Providing window updates from a computer to a network interface device | |
US7865633B2 (en) | Multiple context single logic virtual host channel adapter | |
US20080002578A1 (en) | Network with a constrained usage model supporting remote direct memory access | |
EP0889623A2 (en) | System and method for efficient remote disk I/O | |
Buonadonna et al. | Queue pair IP: a hybrid architecture for system area networks | |
US6760304B2 (en) | Apparatus and method for receive transport protocol termination | |
US20040260841A1 (en) | Method, apparatus, and system for internet protocol communication over intelligent platform management bus | |
US20080263171A1 (en) | Peripheral device that DMAS the same data to different locations in a computer | |
KR19990072483A (ko) | 애플리케이션프로그램과네트워크장치구동기프로그램사이의통신방법및시스템 | |
Steenkiste | Design, implementation, and evaluation of a single‐copy protocol stack | |
TW200302413A (en) | Netbufs: communication protocol packet buffering using paged memory management | |
Wadge | Achieving gigabit performance on programmable ethernet network interface cards | |
Riddoch et al. | Distributed computing with the CLAN network | |
Brustoloni et al. | Copy emulation in checksummed, multiple-packet communication | |
Walsh | DART: Fast application-level networking via data-copy avoidance | |
RU2257678C2 (ru) | Модульный масштабируемый коммутатор и способ распределения кадров в сети быстрого ethernet | |
Kay | Path IDs: a mechanism for reducing network software latency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |