KR100255503B1 - 통신 시스템의 통신 스택에 관련된 데이터를 전송하고 수신하기위한 시스템 및 그 방법 - Google Patents
통신 시스템의 통신 스택에 관련된 데이터를 전송하고 수신하기위한 시스템 및 그 방법 Download PDFInfo
- Publication number
- KR100255503B1 KR100255503B1 KR1019970072660A KR19970072660A KR100255503B1 KR 100255503 B1 KR100255503 B1 KR 100255503B1 KR 1019970072660 A KR1019970072660 A KR 1019970072660A KR 19970072660 A KR19970072660 A KR 19970072660A KR 100255503 B1 KR100255503 B1 KR 100255503B1
- Authority
- KR
- South Korea
- Prior art keywords
- header
- data
- datastream
- segment
- segments
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9021—Plurality of buffers per packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
데이터의 이동과 복사를 감소시키고 데이터 블록킹을 제공함으로써, 통신 시스템의 채널을 통해 데이터스트림을 전송하기 전에 데이터스트림의 구성을 관리하여 통신 시스템의 성능을 향상시킨다. 통신 스택의 상위 레이어로부터 수신한 다수의 헤더 세그먼트를 데이터스트림의 데이터스트림 헤더 영역에 복사하여, 상기 헤더 세그먼트가 상기 데이터스트림 헤더 영역에 순차적으로 저장되게 한다. 상기 데이터스트림 헤더 영역을 참조하는 엔트리를 구비한 데이터스트림 버퍼 목록을 작성한다. 상기 통신 스택의 상위 레이어로부터 수신된 데이터 세그먼트를 참조하는 버퍼 목록 엔트리도 또한 상기 데이터스트림 버퍼 목록에 저장된다. 상기 데이터 세그먼트는 통신 스택에서의 처리중에 상기 데이터스트림으로 물리적으로 이동되거나 복사되지 않는다. 대신에, 상기 데이터 세그먼트를 물리적으로 이동하거나 복사하지 않고 전송하기 위하여, 상기 통신 스택에 의하여 "가상" 데이터스트림을 작성한다. 상기 데이터스트림은, 먼저 상기 데이터스트림 버퍼 목록에 의하여 참조되는 데이터스트림 헤더 영역을 상기 채널에 직접 기록하고, 상기 데이터스트림 버퍼 목록 엔트리를 이용하여 상기 데이터 세그먼트를 그 원래의 기억 위치로부터 상기 통신 시스템의 채널로 직접 기록함으로써, 상기 시스템 입력/출력 인터페이스에 의하여 상기 채널을 통해 전송된다.
Description
본 발명은 데이터 통신에 관한 것으로서, 통신 시스템에서의 데이터의 전송(transmission)과 수신(receipt)에 관한 것이다.
통신 시스템 또는 네트워크는, 일반적으로 상기 네트워크상의 하나의 컴퓨터(즉, 노드)로부터 다른 것으로 상호 작용하여 데이터를 전송하는 컴퓨터 또는 컴퓨팅 시스템(computing system)의 집합으로 정의된다. 상기 노드의 기능적 성능의 범위는, 최소한의 국지적 처리 능력을 가진 터미널로부터 고속의 국지적 처리가 가능한 복잡한 멀티프로세서(multiprocessor)에까지 달한다. 하나의 노드는, 네트워크 인터페이스(network interface)가 네트워킹 표준 또는 아키텍쳐(networking standard or architecture)를 따른다는 것을 보증하기 위하여 요구되는 일련의 제어 기능(control function)을 통합한다. 이러한 제어 기능은, 기능에 바탕을 둔 집합(set)들로 분류될 수 있다. 예를 들면, 본 발명의 출원인인 인터내셔널 비즈니스 머신즈 코포레이션(International Business Machines Corporation)(이하, "IBM"이라 함.)에 의하여 개발된 시스템 네트워크 아키텍쳐(Systems Network Architecture)(이하, "SNA"라 함.)에서는, 링크(link)와 같은 실제의 네트워크 자원의 동작을 제어하는 물리적 장치(Physical Unit)(이하, "PU"라 함.)와, 애플리케이션과 같은 논리적인 소프트웨어에 기초한 개체(entity)를 제어하는 논리적 장치(Logical Unit)(이하, "LU"라 함.)가 상기 SNA에 의하여 정의된다. 다른 네트워킹 아키텍쳐는 유사한 기능적 분류(functional grouping)를 정의한다.
상기 노드들을 상호 접속하는 통신 설비의 범위도 또한 고속의 입력/출력(이하, "I/O"라 함.) 채널(channel)로부터 저속의 직통 전화 회선(point-to-point telephone line)에까지 달한다. 예를 들면, 상기 통신 설비를 구현하는 데에 사용되는 매체는 위성 링크(satellite link) 또는 광대역 광섬유(wide band optical fiber)가 포함될 수 있다.
도 1을 참조하면, 두 개의 노드를 가진 애플리케이션간 통신 네트워크(application-to-application communication network)의 구성요소를 도시하는 상위 레벨의 블록도로서, 이 경우에는, 직접 부착 환경(direct-attach environment)의 호스트 컴퓨터(host computer)(10)가 도시되었다. 애플리케이션간 통신 네트워크에 대한 이러한 형식의 관찰(view)은 때때로 "종단간(end-to-end)" 관찰로 불린다. 두 개의 호스트 컴퓨터(12 및 14)가 각각 도시되었다. 상기 호스트 컴퓨터는, 예를 들어, 본 발명의 출원인인 IBM사가 제작한 IBM 390 메인프레임 컴퓨터(mainframe computer)가 될 수 있다. 각 호스트 컴퓨터는 네트워크를 가로질러 데이터를 송신하기 위한 "아웃바운드(outbound)"측(16)과, 상기 네트워크를 가로질러 전송되는 데이터를 수신하기 위한 "인바운드(inbound)"측(18)을 구비한다. 또한, 상기 호스트 컴퓨터상에서 애플리케이션들(20 및 22)이 실행된다. 일단 애플리케이션이 데이터를 처리하고, 상기 데이터를 네트워크상의 다른 노드로 송신하여야 함을 요구하면, 그 다음에 상기 전송될 데이터는 상기 애플리케이션이 실행중인 노드의 통신 스택(24 및 26)에서 처리되고, 시스템의 "I/O" 인터페이스(28)를 통하여 전송된다. 시스템 I/O 인터페이스(28)는 또한 네트워크를 가로질러 전송되는 데이터의 수신을 지원하기 위하여 작용한다.
예를 들면, 본 발명은 도 2에 도시된 것과 유사한 통신 네트워크 환경에도 적용될 수 있다. 도 2에 도시된 바와 같은 통신 네트워크에는 두 개의 호스트 컴퓨터(50 및 52)가 도시되었다. 상기 도시된 호스트 컴퓨터(50)는, 본 발명에 따르는 통신 스택에서 상대적으로 대규모인 데이터 객체를 관리하기 위한 능력을 갖는다. 상기 컴퓨터(54)는 단지, 상기 호스트 컴퓨터(50)가 네트워크(60)를 가로질러 전송하기 위하여 처리한 데이터를 루팅(routing)하기 위한 네트워크상의 루터(router)로서 사용되는 제어기(controller)이다. 애플리케이션(62)은 호스트 컴퓨터(50)상에서 실행된다. 일단 애플리케이션이 데이터를 처리하고 상기 데이터를 네트워크상의 다른 노드로 송신하여야 함을 요구하면, 그 다음에 상기 전송될 데이터는 상기 통신 스택(64)에서 처리된다.
도 1 또는 도 2에 도시된 것과 같은 통신 시스템상의 통신은, 네트워크 아키텍쳐에 의하여 제어된다. 도 1 또는 도 2에 도시된 것과 같은 통신 시스템상에 구현된 네트워크 아키텍쳐의 하나로서, 본 발명의 출원인인 IBM사에 의하여 개발된 시스템 네트워크 아키텍쳐(SNA)가 있다. SNA는 사용자들이 통신 시스템상에 그들 자신의 사설 네트워크(private network)를 구축할 수 있도록 허용하기 위한 네트워크 아키텍쳐이다. SNA 네트워크는 머신들 또는 컴퓨터들(즉, 노드들)의 집합으로서 정의된다. SNA 네트워크에는 서로 다른 몇 가지 형식의 노드들이 있는데, 터미널(terminal)과, 상기 터미널 및 기타 주변기기의 동작(behavior)을 감시하는 제어기와, 주요 중앙 처리 장치(main central processing unit)의 작업을 경감하는 전위 처리기(front-end processor)와, 데이터 통신에 관련된 인터럽트 처리기(interrupt handling)와, 주요 호스트 컴퓨터 등이 포함된다. 본질적으로, SNA는 노드들이 상호간에 접속하고 통신하는 방법에 관하여 규정한다. 또한, SNA에 의하면, 서로 다른 형식의 워크스테이션이나 유사하지 않은 애플리케이션에 대한 별개의 통신 링크를 설치할 필요 없이, 또한 프로그램과 장치의 수를 감소시킴으로써, 시스템이 네트워크 자원을 공유할 수 있게 된다.
SNA 네트워크의 통신 스택의 기능은 몇 개의 레이어(layer)로 편제된다. 도 3을 참조하면, SNA 아키텍쳐를 구현하는 통신 시스템상의 주어진 노드에서 SNA의 계층적 레이어들(hierarchical layers)(100)을 도시하는 한 방법이 도시되었다. 상기 SNA 아키텍쳐하에서 동작하는 통신 네트워크의 각 노드는 일반적으로, 노드들간의 통신을 활성화할 수 있도록, 동일한 계층적 소프트웨어 구조를 갖는다. 도 3에 도시된 바와 같이, 통신 스택의 이러한 레이어들은, 하나의 머신으로부터 다른 머신으로 비트(bit)들을 물리적으로 이송(transport)하기 위하여 인접한 노드들을 물리적으로 또한 전기적으로 접속하는 물리적 제어 레이어(physical control layer)(102)와, 인접 노드간에 데이터를 전송하고, 보다 상위의 레이어들에 투명한 방식으로 전송 오류를 검출하고 복구하기 위하여 미가공 비트 스트림(raw bit stream)으로부터 프레임(frame)을 구성하는 데이터 링크 제어 레이어(data link control layer)(104)와, 발신처 노드(source node)와 수신처 노드(destination node)간에 데이터를 루팅(routing)하며, 네트워크의 데이터 트래픽(data traffic)을 제어하는 경로 제어 레이어(path control layer)(때때로 네트워크 레이어(network layer)이라 불림)(106)와, 이송 접속(transport connection)을 생성하고 관리하고 삭제하는 전송 제어 레이어(transmission control layer)(108)를 포함한다. 또한 상기 SNA 레이어들은, 대화(conversation)를 위하여 두 최종 사용자들간에 세션을 설정하고 제어할 수 있도록 세션의 종점간의 데이터 흐름을 동기화하는 데이터 흐름 제어 레이어(data flow control layer)(때때로 세션 레이어(session layer)이라 불림)(110)와, 서로 다른 프리젠테이션 매체(presentation media)를 위한 데이터의 포맷(format)을 지정하고, 자원의 공유를 조정하는 프리젠테이션 서비스 레이어(presentation service layer)(112)와, 분산형 데이터베이스 억세스와 문서 교환과 같은 애플리케이션 서비스(application service)를 제공하는 트랜잭션 서비스 레이어(transaction service layer)(114)와, 마지막으로 그 자체가 두 최종 사용자간의 대화에 관련된 네트워크 사용자 레이어(network user layer) 또는 애플리케이션 레이어(application layer)(116)를 포함한다.
상기 물리적 제어 레이어(102), 데이터 링크 제어 레이어(104), 경로 제어 레이어(106) 및 전송 제어 레이어(108)는, SNA 모델이 개방형 시스템 인터페이스 참조 모델(Open Systems Interface Reference Model)(이하, "OSI"라 함.)에 관련되므로, 상기 SNA 모델의 "하위(lower)" 레이어(120)이라 불린다. 상기 데이터 흐름 제어 레이어(110), 프리젠테이션 서비스 레이어(112) 및 트랜잭션 서비스 레이어(114)는 상기 아키텍쳐의 "상위(upper)" 레이어(122)이라 불린다. 마지막으로, 상기 상위 레이어(122)와 상기 하위 레이어(120)의 조합은 통신 스택(124)으로 표현된다.
상기 호스트 프로세서상에 존재하는 억세스 방식은 SNA 네트워크에 대한 제어원(source of control)을 제공한다. 상기 억세스 방식의 하나로서, SNA 네트워크의 애플리케이션 프로그램과 호스트 프로세서 및 다른 자원들 사이의 인터페이스를 제공하는 가상 통신 접근 방식(Virtual Telecommunication Access Method)(이하, "VTAM"이라 함)이 있다. 본질적으로, VTAM은, 동일한 또는 서로 다른 SNA 노드들의 터미널과 애플리케이션 프로그램간 및 애플리케이션들간의 통신을 제어하는 프로그램이다. VTAM 애플리케이션 프로그램과 호스트 및 네트워크 터미널간의 통신은 일반적으로 VTAM을 통하여서만 발생한다. VTAM은 또한 네트워크의 성능을 모니터(monitor)하며, 잠재적인 문제의 위치를 식별하고, 네트워크 오류로부터의 복구를 지원한다. VTAM은 다중 가상 기억(Multiple Virtual Storage)(이하, "MVS"라 함.) 운영 체계, 가상 머신/시스템 제품(Virtual Machine/System Product)(이하, "VM/SP"라 함.) 운영 체계 및 가상 기억 확장(Virtual Storage Extended)(이하, "VSE"라 함.) 운영 체계 등과 같은 가상 운영 체계(virtual operating system)의 제어하에 실행(run)된다. 상기 MVS 환경에서 동작중일 때에는, VTAM에 의하여 독립적인 SNA 네트워크가 상호간에 통신할 수 있게 된다.
VTAM 애플리케이션 프로그램은 다른 모든 프로그램과 유사한 운영 체계의 제어하에서 실행된다. 그러나, VTAM 애플리케이션 프로그램은 일반적으로, 그것이 네트워크의 터미널이나 기타 애플리케이션들과 통신하기 전에, VTAM에 접속된다. VTAM 애플리케이션 프로그램은 터미널과 통신하기 위하여 VTAM 매크로 명령(macro instruction)을 사용한다. 호스트 프로세서의 애플리케이션 프로그램은, 네트워크의 편성(organization)에 대하여 알고 있는 프로그램 없이도 네트워크의 어떤 곳에서도 사용될 수 있다. VTAM은 다음의 주요 기능을 제공한다. 즉, 네트워크의 시작(starting)과 정지(stopping); 네트워크 구성(configuration)의 동적 변경(dynamical changing); 네트워크 자원의 할당(allocation); 및 입력/출력 처리의 제어 등이 그것이다.
도 4를 참조하면, VTAM하에서 동작중인 통신 시스템(200)의 주요 구성요소가 도시되었는데, 여기에는 VTAM(206)과 VTAM 애플리케이션 프로그램(204)을 구비한 호스트 컴퓨터(host computer)(202)가 포함된다. 상기 호스트 컴퓨터(202)는 원격통신 네트워크(telecommunication network)(210)와 함께 부 기억 장치(즉, 보조 기억 장치)(208)에 접속된다. 상기 원격통신 네트워크(210)는 SNA 터미널 환경(212)과, 지역(local) 3270, BSC 및 시작/정지 터미널 환경(214)으로 구분된다. 특히, 상기 호스트 컴퓨터는 지역 3790 터미널(216) 및 지역 3270 터미널(218)과 같은 상기 지역 컴퓨터 및 터미널에 접속된다. 또한, VTAM은 NCP로 불리는 지역 통신 제어기(local communications controller)(220)에 접속되는데, 이것은 다시 원격 통신 제어기(remote communications controller)(222), 교환 회선(switched line)상의 터미널(224), 그리고 비교환 회선(nonswitched line)상의 터미널(226)에 순서대로 접속된다.
상기 SNA 네트워크 아키텍쳐와 VTAM은, "System Network Architecture," Concepts and Products, IBM, GC30-3072-3, "VTAM Concepts," Independent Study Program, IBM, 1982, 및 타넨바움(Tanenbaum)의 "computer Networks(2nd ed.)", Prentice Hall, Inc., 1988의 제 1 장에 상세히 기술되어 있으며, 모두 본 출원의 참고 자료로서 인용한다. VTAM은 또한, 미합중국 등록 특허 제 4,586,134 호인 "Computer Network Systems and Its Use for Information Unit Transmission"과 미합중국 등록 특허 제 5,027,269 호인 "Method and Apparatus for Providing Continuous Availability of Applications in a Computer Network"에 상세히 기술되어 있으며, 역시 모두 본 출원의 참고 자료로서 인용한다.
대부분의 통신 시스템에서의 데이터의 이동(movement)은 시스템의 효율(efficiency)에 심각한 영향을 줄 수 있다. 데이터 전송의 수와 주파수가 증가함에 따라, 메모리 버스(memory bus), 중앙 처리 장치(central processing unit)와 같은 프로세서의 구성요소의 이용률(utilization)이 현저히 증가한다. 구성요소의 비효율적인 사용으로 인하여 그 구성요소의 이용률이 최대 용량에 달하면, 상기 통신 시스템에 의하여 지원되는 전체 스루풋(throughput)은 심각하게 제한된다.
대규모인 데이터 객체의 전송이 시스템 성능에 미치는 부정적인 영향에도 불구하고, 산업계에서는 통신 시스템을 통하여 가능한 한 하나의 전송 동작으로 이러한 대규모인 데이터 객체를 전송하려는 경향을 보인다. 대규모인 데이터 객체의 전송은 특히 멀티미디어(multimedia), 이미지(image) 및 대규모의 파일 이송(large file transfer)에 관련된 애플리케이션에서 발생한다. 일단 애플리케이션이 상기 통신 시스템의 다른 노드로 전송될 상대적으로 대규모인 데이터 객체를 지정하면, 상기 상대적으로 대규모인 데이터 객체는, 상기 네트워크를 통한 전송을 위한 하나의 대규모인 데이터 버퍼로서의 통신 스택을 통하여 처리되며, 하나 또는 그 이상의 네트워크 패킷(network packet)을 포함할 수 있다. 다수의 네트워크 패킷을 위하여 하나의 전송 버퍼(transmit buffer)를 사용함으로써, 하나의 전송 동작을 통하여 다수의 네트워크 패킷을 전송할 수 있게 한다.
상기 통신 스택의 상대적으로 대규모인 데이터 객체를 상기 트랜잭션 서비스 레이어(114)로부터 상기 물리적 제어 레이어(102)를 통하여 처리하는 동안(도 3을 참조), 상기 상대적으로 대규모인 데이터 객체는 최대 전송 크기(transmission size)에 대한 네트워크의 제한(network restriction) 때문에, 보다 소규모인 데이터 객체로 분할될 수 있다. 또한, 프로토콜에 특유한 정보를 포함하는 헤더(header)가, 상기 통신 스택의 서로 다른 레이어에서 상기 상대적으로 대규모인 데이터 객체 및/또는 상대적으로 더 소규모인 데이터 객체의 새로이 생성된 세그먼트(segment)에 추가될 수도 있다. 새로이 생성된 헤더와 그에 결합된 데이터 세그먼트의 각각은, 다른 헤더 및 데이터 세그먼트와 별개이고 서로 떨어져 있는 통신 스택의 다음 레이어로 계속하여 전달된다. 상대적으로 대규모인 데이터 객체를 상대적으로 소규모인 데이터 객체와 그에 결합된 헤더로 분할하기 위한 방법 및 그 시스템에 관하여는, 본 발명의 출원인인 IBM사의 미합중국 특허 출원 제 08/802597 호인 "Systems and Methods for Managing the Processing of Relatively Large Data Objects in a Communications Stack"에 상세히 개시되어 있으며, 본 출원의 참고 자료로서 이를 인용한다.
통신 시스템의 채널을 통하여 대규모인 데이터 객체(예컨대, 다수의 데이터 세그먼트와 그에 결합된 헤더)를 전송하려는 목적을 달성하기 위하여, 상기 헤더와 그에 결합된 데이터 세그먼트는, 일단 상기 헤더와 그에 결합된 데이터 세그먼트가 상기 물리적 제어 레이어(102)(도 3을 참조)에 도달하면, 상기 통신 시스템의 채널을 통한 전송을 위하여 대규모인 데이터스트림(datastream)으로 조합된다. 이것은, 하나의 기록 명령(write command)으로 통신 시스템의 채널을 통하여 가능한 한 많은 데이터를 송신하기 위하여, 상기 헤더와 그에 결합된 데이터 세그먼트를 기록 전송 버퍼(write transmit buffer)내로 이동하거나 복사하고 상기 시스템 I/O 인터페이스(28)(도 1 및 도 2를 참조)를 이용함으로써, 상기 기록 전송 버퍼를 그 최대 용량까지 로드(load)할 것을 요구한다. 그리하여, 시스템 자원을 최대한 사용하려는 시도로서, 동일한 상대적으로 대규모인 데이터 객체로부터 생겨난 상기의 데이터 세그먼트와 그에 결합된 헤더에 대한, 하나의 기록 전송 버퍼의 데이터 블록킹(data blocking)은 데이터의 이동이나 복사로 귀결된다.
다수의 사용자를 지원하는 경우, 시스템의 성능을 향상시키기 위한 시도로서 현재의 또 다른 경향은 자원의 공유(resource sharing)이다. 다수의 사용자를 지원하기 위한 자원의 공유는 종종, 상기 시스템 I/O 인터페이스(28)(도 1 및 도 2 참조)에서의 데이터스트림의 멀티플렉싱(multiplexing) 또는 디멀티플렉싱(de-multiplexing)을 통하여 구현된다. 시스템 I/O 인터페이스의 한 예는, 본 발명의 출원인인 IBM에 의하여 개발된 IBM 390 시스템 I/O 인터페이스가 있다.
그러나, 자원을 공유하기 위한 노력의 결과로서 복잡성이 발생한다. 통신 시스템의 채널을 통하여 전송될 서로 다른 발신처(source)로부터 획득한 데이터는, 중앙 처리 장치와 입력/출력 설비 모두를 보다 효율적으로 사용하도록 하기 위하여, 상기 데이터를 하나의 기록 전송 버퍼 또는 입력/출력 동작 버퍼에 복사함으로써 조합된다. 이것은 종종, 멀티플렉싱을 이용함으로써 이루어진다. 전형적으로, 멀티플렉싱은 통신 시스템의 채널을 통하여 전송될 하나의 데이터스트림을 구성하는데 사용되는 하나의 데이터 버퍼로 상기 데이터를 이동시키거나 복사할 것을 요구한다. 이러한 데이터의 이동은 때때로 "데이터 블록킹(data blocking)"이라 불린다. "데이터 블록킹" 동안 수많은 데이터의 이동이 발생하며, 이것은 통신 스택과 통신 시스템의 성능 수준에 심각한 영향을 미친다.
통신 시스템의 노드 사이에 대규모인 데이터 객체를 처리하고 전송하는 멀티미디어 애플리케이션(multimedia application)과 같은 애플리케이션의 성능을 향상시키기 위하여는, 통신 스택에서, 또한 노드들 사이에서 처리되는 동안 데이터의 이동과 복사를 제거하거나 최소한 상당히 감소시켜야 한다. 데이터의 이동 및 복사를 회피하거나 최소한 감소시키기 위한 하나의 해법은, 분리된(separate) 헤더 및 관련 데이터 세그먼트를 독립된(individual) 헤더 및 데이터 세그먼트로서 통신 시스템의 채널을 통하여 전송하는 것이다. 이와 유사하게, 별개인 헤더와 데이터 세그먼트를 순차적 방식으로 데이터스트림에 이동시킴으로써 각 헤더 세그먼트가 그의 대응 데이터 세그먼트와 인접하도록 데이터스트림을 구축하는 것이 이미 알려져 있다. 그러나, 많은 통신 시스템은, 통신 시스템의 성능을 최적으로 유지하려는 시도로서 메모리의 어드레스 지정(memory addressing)에 제한(restriction)을 두고 있다.
메모리의 어드레스 지정에 대한 제한의 예로서, 어드레스 지정의 "경계" 요건(boundary requirement)에 대한 제한이 있다. 예를 들어, 2 킬로바이트의 경계 요건이 있다고 하자. 이 예에서는, 어드레스 1000 번지에 50 바이트 길이의 헤더가 저장되어 있다고 가정한다. 어드레스 5000 번지에 20 킬로바이트 길이의 대응 데이터가 저장되었다. 상기 헤더와 데이터를 참조하기 위하여 개별적인 버퍼 목록 엔트리가 요구된다. 이 예에 대하여 통신 시스템에 존재할 수 있는 가능한 제한은 다음과 같다. 즉, 실제의 데이터에 대한 포인터의 버퍼 목록은 2 킬로바이트의 증분(increment)으로 20 킬로바이트의 길이를 갖는 데이터를 포인팅(pointing)하여야 하며, 상기 20 킬로바이트 길이의 데이터 세그먼트는 2 킬로바이트의 경계에 정렬된다. 이 경계 요건에 대한 유일한 예외는, 제 1 엔트리가 반드시 2 킬로바이트의 길이를 가져야 하는 것은 아니며, 또한 2 킬로바이트의 경계에서 시작되어야 하는 것도 아니지만, 반드시 2 킬로바이트의 경계에서 끝나야 한다는 것과; 최후의 엔트리가 2 킬로바이트의 길이를 가져야 하는 것은 아니며, 또한 2 킬로바이트의 경계에서 끝나야 하는 것도 아니지만, 반드시 2 킬로바이트의 경계에서 시작되어야 한다는 것이다. 만약 상기 헤더가 그 대응 데이터 세그먼트로부터 개별적으로 저장되었다면, 개별적인 버퍼 목록이 모든 서로 다른 어드레스 영역에 대하여 요구되므로, 상기 헤더 세그먼트에 대한 개별적인 버퍼 목록이 요구된다.
상기의 예에서는, 각 세그먼트가 헤더와 대응 데이터를 포함하는 두 개의 세그먼트가 통신 시스템을 통하여 전송되어야 한다면, 모두 네 개의 엔트리(제 1 번 헤더 세그먼트, 제 1 번 데이터 세그먼트, 제 2 번 헤더 세그먼트, 제 2 번 데이터 세그먼트)를 가진 하나의 목록을 구성하기 위하여 데이터의 이동을 회피하는 것은, 일반적으로 버퍼 목록의 어드레스 규칙(address rule)(즉, 2 킬로바이트의 경계 요건)을 위반하지 않고는 이를 달성할 수 없게 된다.
종래 기술인 대안의 하나에서는, 헤더와 데이터 세그먼트를 모두 하나의 전송 버퍼로 복사하여, 상기 전송 버퍼가, 제 1 번 헤더 세그먼트; 제 1 번 데이터 세그먼트; 제 2 번 헤더 세그먼트; 제 2 번 데이터 세그먼트; ... 제 n 번 헤더 세그먼트; 제 n 번 데이터 세그먼트를 포함한다. 그 다음에, 하나의 전송 버퍼가 채널을 통하여 전송된다.
통신 시스템의 어드레스 제한을 고려하는 한편 데이터의 이동을 감소시키기 위한 다른 대안에서는, 통신 시스템의 채널을 통하여 전송될 헤더와 그에 결합된 데이터를 포함하는 각 세그먼트에 대한 개별적인 버퍼 목록을 제공한다. 결과적으로, 데이터의 복사나 이동이 발생하지 않는다. 그러나, 여기에서는, 데이터의 블록킹이 발생하지 않으므로, 채널을 통하여 전송중인 버퍼의 기억과 공간의 지나친 낭비를 야기하며, 입력/출력 프로시져(procedure)의 지나친 사용을 야기할 수 있다.
데이터의 이동이나 복사를 하지 않고 데이터의 블록킹을 구현하며 채널을 통한 전송을 위하여 데이터를 준비하기 위한 시도에 이미 사용된 또 다른 대안은, 상기 헤더를 그 크기에 무관하게 그 결합된 데이터 세그먼트와 별개로 또한 그로부터 이격되게 2 킬로바이트의 기억 영역에 복사하는 것이다. 결과적으로, 상기 헤더를 포함하는 기억 영역에는 대량의 "가비지(garbage)" 데이터가 또한 포함된다. 상기 "가비지" 데이터와 함께 상기 헤더는, 경계 정렬(boundary alignment)을 유지하기 위하여 상기 데이터와 별개로 채널을 통하여 전송된다.
불행하게도, 이러한 종래 기술의 대안들은, 통신 시스템의 메모리 제한을 준수하는 한편, 데이터의 복사와 이동의 문제에는 여전히 봉착해 있다. 예를 들어, 이러한 종래 기술의 대안들은 추가적인 기록 동작으로 귀결되는 추가적인 버퍼 목록을 요구할 수 있다. 나아가, 이러한 종래 기술의 대안들은, 어드레스 경계 제한에 따라 정렬을 유지하기 위하여 대량의 "가비지" 데이터가 전송되도록 할 수도 있다. 또한, "가비지" 데이터의 전송은 일반적으로 노드와 통신 시스템의 성능에 부정적인 영향을 줄 수 있다.
또한, 종래의 기술에서는, 상기 통신 스택이 데이터 세그먼트와 헤더의 크기에 무관하게 새로운 기억 장치 또는 버퍼를 획득할 것을 요구한다. 그러나, 이것은, 상기 세그먼트의 크기가 상기 상대적으로 대규모인 데이터 객체의 전체 크기와 아무런 관계를 갖지 않으므로 기억 장치의 지나친 낭비일 뿐만 아니라, 수많은 데이터의 복사와 이동에 의하여 상기 통신 스택의 성능에 심각한 영향을 주기도 한다.
따라서, 본 발명의 목적은, 통신 시스템의 성능을 향상시키는 한편, 통신 시스템에서 상대적으로 대규모인 데이터 객체를 전송하는 것을 관리하기 위한 방법 및 그 시스템과 컴퓨터 프로그램 제품을 제공하는 것이다.
본 발명의 다른 목적은, 데이터의 이동 및 복사를 감소시키는 한편, 데이터 블록킹을 이용하여 통신 시스템을 통한 데이터의 전송을 관리하기 위한 방법 및 그 시스템과 컴퓨터 프로그램 제품을 제공하는 것이다.
본 발명의 상기 목적들은, 통신 시스템의 성능을 향상시키기 위하여 노드들간에 대규모인 데이터 객체를 전송하는 것에 관련된 시스템에 의하여 달성되며, 특히 상기 통신 시스템의 채널을 통하여 다수의 데이터 세그먼트가 전송되기 전에, 상기 다수의 데이터 세그먼트의 처리 성능을 향상시키기 위한 시스템에 의하여 달성된다.
채널을 통하여 상기 데이터 세그먼트를 전송하기 전에 다수의 데이터 세그먼트의 처리를 관리하는 것은, 기억 장치의 낭비를 피하기 위하여 계속적으로 데이터 블록킹을 구현함과 함께 데이터스트림의 일부가 제어 데이터 또는 프라이멀(primal) 데이터를 포함하도록 구성될 것을 지시함으로써 달성된다. 상기 통신 스택의 데이터 링크 제어 레이어에서, 제어 데이터 또는 프라이멀 데이터가 데이터스트림 헤더 영역으로 복사되고, 상기 데이터스트림 버퍼의 제어 데이터 또는 프라이멀 데이터를 참조하기 위한 데이터스트림 버퍼 목록 엔트리가 작성되며, 애플리케이션 데이터 또는 스태틱(static) 데이터의 세그먼트를 참조하기 위한 데이터스트림 버퍼 목록 엔트리가 작성된다. 상기 애플리케이션 데이터 세그먼트는 단지 데이터스트림 버퍼 목록의 엔트리에 의하여만 참조된다. 그리하여, 애플리케이션 데이터의 이동이나 복사는 발생하지 않는다.
예를 들면, 하나의 데이터스트림 버퍼 목록을 사용하여 채널을 통해 전송될 수 있는 데이터(즉, 헤더 및 애플리케이션 데이터)의 최대량이 64 킬로바이트라고 가정한다. 상기 64 킬로바이트의 데이터스트림은, 데이터스트림 헤더 영역과 데이터스트림 데이터 영역으로 나눠질 수 있는데, 여기서 상기 데이터스트림 헤더 영역은 4 킬로바이트의 길이를 가지며, 상기 데이터스트림 데이터 영역은 60 킬로바이트의 길이를 갖는다. 상기 데이터스트림 헤더 영역은 상기 통신 스택에 의하여 생성된 다수의 헤더를 포함하며, 한편 상기 데이터스트림 데이터 영역은 역시 상기 통신 스택에 의하여 생성된 다수의 애플리케이션 데이터 세그먼트를 포함한다. 각 애플리케이션 데이터 세그먼트는 상기 데이터스트림 헤더 영역의 특정 헤더에 대응된다. 그리하여, 본 발명에 의하면, 데이터스트림 헤더 영역과 데이터스트림 데이터 영역을 구비한 데이터스트림을 전송시에 구성할 수있게 된다. 상기 데이터스트림 헤더 영역과 상기 데이터스트림 데이터 영역은, 상기 헤더 세그먼트와 데이터 세그먼트가 상기 데이터스트림에서 인접하지 않도록 포함된 하나의 선형 비트 스트림(linear bit stream)을 형성하고, 소정의 원격 노드에 의하여 상기 선형 비트 스트림으로부터 네트워크 데이터 요소가 구성될 수 있다.
본 발명은, 통신 시스템의 채널을 통하여 데이터가 전송됨에 따라 데이터스트림의 기억 장치의 낭비를 감소시키기 위하여, 데이터를 하나의 데이터스트림으로 조합할 필요가 있을 수 있다는 점에 대한 이해로부터 발생하였다. 또한, 통신 시스템은 데이터를 블록화하는 것과 상충되는 메모리 어드레스와 메모리 경계상의 제한을 줄 수 있다는 점을 이해하여야 한다. 나아가, 다양한 통신 시스템의 제한을 준수하면서 데이터를 블록화하는 것은 데이터의 과도한 이동 및 복사를 야기한다는 것을 이해하여야 한다. 만약 헤더와 데이터 세그먼트의 이동 및/또는 복사가 제거되거나 최소한 감소될 수 있다면, 성능이 향상될 수 있다.
따라서, 본 발명에 의하면, 데이터의 이동이나 복사를 감소시키고 메모리 경계의 제한을 준수하는 한편, 데이터 블록킹을 사용하여 데이터 링크 제어 레이어에서의 "가상(virtual)" 데이터스트림을 구성함으로써, 시스템의 I/O 인터페이스에 의하여 통신 시스템의 채널을 통한 전송의 준비로서 통신 스택에서 데이터를 처리한다. 멀티미디어 데이터 세그먼트와 대응 헤더 세그먼트는 데이터 링크 제어 레이어에서 통신 스택의 상위 레이어로부터 수신된다. 상기 멀티미디어 헤더 세그먼트는 데이터스트림 헤더 영역으로 복사되어, 상기 데이터스트림 헤더 영역에 순차적으로 저장된다. 상기 데이터스트림 헤더 영역의 헤더 세그먼트를 참조하는 엔트리를 구비한 데이터스트림 버퍼가 작성된다. 상위 레이어로부터 수신된 데이터 세그먼트를 참조하는 데이터스트림 버퍼 목록 엔트리도 또한 상기 데이터스트림 버퍼 목록에 저장된다. 상기 데이터 세그먼트는, 전송되기 전에 상기 데이터 링크 제어 레이어에서 상기 데이터스트림 데이터 영역으로 실제적으로 이동되거나 복사되는 것이 아니라, 상기 시스템 I/O 인터페이스에서 상기 통신 시스템의 채널로 직접 복사될 뿐이다. 결과적으로, 통신 스택에 의하여 전송되기 전에 단지 "가상" 데이터스트림만이 작성되며, 데이터의 실제적인 이동이나 복사는 감소된다.
채널을 통하여 실제로 전송되는 데이터스트림은, 상기 데이터스트림 헤더 영역에 저장된 헤더 세그먼트에 억세스하기 위하여 데이터스트림 버퍼 목록 엔트리를 사용함으로써, 또한 상기 헤더 세그먼트를 채널로 직접 기록함으로써, 상기 시스템 I/O 인터페이스에 의하여 전송될 때 작성된다. 상기 데이터스트림 버퍼 목록에 의하여 참조되는 모든 헤더 세그먼트가 채널에 기록된 후에, (이전에는 복사된 적이 없는) 상기 데이터 세그먼트는, 대응 데이터스트림 버퍼 목록 엔트리를 사용하여 그의 원래의 기억 위치로부터 통신 시스템의 채널로 직접 기록되며, 그리하여 데이터 블록킹을 구현하는 한편 중간에 데이터가 복사되는 것을 감소시킨다. 그 결과가 "대역외(out-of-band)" 헤더(즉, 데이터스트림에서 그 대응 데이터 세그먼트로부터 인접하지 않도록 위치한 헤더)를 구비한 데이터스트림이다.
상기 데이터스트림 헤더 영역은 단지 제어 데이터 또는 프라이멀 데이터만을 포함하도록 구성된다. 이러한 제어 데이터 또는 프라이멀 데이터는 종종 "비인접 프로토콜 데이터 유닛 헤더(discontiguous protocol data unit header)"(이하, "비인접 PDU"라 함)라 불린다. 네트워크 프로토콜 헤더와 같은 상기 프라이멀 데이터는 상기 비인접 PDU 헤더와 함께, 그러나 인접할 필요는 없이 상기 데이터스트림 헤더 영역에 존재한다. 데이터의 결합을 유지하기 위하여 하나의 비인접 PDU 헤더에 의하여 요구되는 만큼의 참조가 데이터스트림에 존재한다. 이러한 결합성(associative nature)은 데이터스트림 데이터 영역의 제어성(control nature)이 유지되는 한 하나의 스트림 또는 다수의 스트림을 통하여 유지된다.
상기 데이터스트림 데이터 영역은 언제나 상기 데이터스트림 헤더 영역의 말단에 의하여 나타나는 예정된 페이지 경계(page boundary)에서 시작된다. 이것은 상기 데이터스트림의 데이터 부분의 시작에 대한 일정한 오프셋(offset)을 생성한다. 데이터는 사용중인 현재의 최대 버퍼 크기와 일관성을 갖는 어떤 길이이어도 좋다. 그리하여, 전송될 모든 데이터 메시지는, 최대 수신기 버퍼의 크기에서 상기 데이터스트림 헤더 영역의 크기를 감한 크기까지의 어떤 크기로도 데이터스트림을 채울 수 있다.
마지막으로, 상기 데이터 링크 제어 레이어는 또한 상기 통신 시스템의 채널을 통하여 전송되는 실제의 데이터스트림을 상기 시스템 I/O 인터페이스를 통해 수신하며, 상기 개별적인 헤더와 그 대응 데이터 세그먼트를 재조립하기 위하여 상기 데이터스트림을 분리시킨다. 일단 헤더 세그먼트와 그 대응 데이터 세그먼트가 채널에서 수신된 데이터스트림으로부터 분리되면, 상기 헤더 세그먼트와 그 대응 데이터 세그먼트는 처리를 위하여 상기 통신 스택의 상위 레이어의 대기 행렬에 삽입된다. 이러한 분리 프로세스는, 상기 채널에서 수신된 전체 데이터스트림이 개별적인 헤더 세그먼트와 대응 데이터 세그먼트로 분리되어, 각 헤더 세그먼트와 대응 데이터 세그먼트가 통신 스택의 상위 레이어의 대기 행렬에 삽입될 때까지 계속된다.
도 1은 직접 부착 환경에서 두 개의 호스트 컴퓨터를 가진 애플리케이션간 통신 네트워크의 블록도.
도 2는 두 개의 호스트 컴퓨터와 네트워크 제어기를 가진 애플리케이션간 통신 네트워크의 구성요소의 블록도.
도 3은 도 1에 도시된 바와 같은 애플리케이션간 통신 네트워크의 특정 노드에서, 통신 시스템의 시스템 네트워크 아키텍쳐를 구현하기 위한 컴퓨터 소프트웨어의 견지로부터의 통신 스택의 네트워크 프로토콜 레이어의 개념적 블록도.
도 4는 도 3의 SNA 아키텍쳐를 구현할 수 있는 통신 시스템을 위한 VTAM의 주요 구성요소의 블록도.
도 5는 본 발명에 의한 토큰화된 공유 기억 장치 관리자를 가진 통신 시스템의 SNA 아키텍쳐를 위한 컴퓨터 소프트웨어의 견지로부터 본 통신 스택의 네트워크 프로토콜 레이어의 개념적 블록도.
도 6a 및 도 6b는 본 발명의 IDAW 데이터스트림 버퍼 목록과, 데이터스트림 헤더 영역 및 데이터스트림 데이터 영역을 포함하는 비인접 데이터스트림을 도시한 블록도.
도 7은 비인접 헤더 세그먼트와 데이터 세그먼트를 구비하는 데이터스트림을 통신 시스템의 채널을 통하여 처리하기 전에 IDAW 데이터스트림 버퍼 목록을 작성하는 것을 포함하여, 본 발명의 헤더 세그먼트와 대응 데이터 세그먼트의 처리를 도시한 블록도.
도 8은 본 발명에 의한 통신 시스템의 채널을 통하여 전송하기 위하여 다수의 헤더 세그먼트와 데이터 세그먼트를 처리하는 것에 관련된 동작을 설명하기 위한 흐름도.
도 9는 본 발명의 통신 스택에 의한 처리를 위하여, 통신 시스템의 채널에서 수신된 비인접 데이터스트림을 개별적인 헤더 세그먼트와 대응 데이터 세그먼트로 분리하는 것을 도시하는 블록도.
도 10 및 도 11은 본 발명의 통신 스택에 의한 처리를 위하여, 통신 시스템의 채널에서 수신한 데이터스트림을 개별적인 헤더 세그먼트와 대응 데이터 세그먼트로 분리하는 것에 관련된 동작을 설명하기 위한 흐름도.
* 도면의 주요 부분의 부호의 설명
10 : 호스트 컴퓨터 20, 22 : 애플리케이션들
24, 26 : 통신 스택 28 : 시스템 I/O 인터페이스
60 : 네트워크200 : 통신 시스템
204 : VTAM 애플리케이션 프로그램 206 : VTAM
208 : 보조 기억 장치 210 : 원격통신 네트워크
212 : SNA 터미널 환경
214 : 지역 3270, BSC 및 시작/정지 터미널 환경
216 : 지역 3790 터미널 218 : 지역 3270 터미널
220 : 지역 통신 제어기 222 : 원격 통신 제어기
224 : 교환 회선상의 터미널 226 : 비교환 회선상의 터미널
본 발명에 관하여, 본 발명의 바람직한 실시예가 도시된 첨부 도면을 참조하여 이하에서 상세히 설명한다. 그러나, 본 발명은 다수의 서로 다른 형태로 실시될 수 있으며, 이하에서 개시된 실시예로 한정되는 것으로 해석되어서는 아니되며, 본 명세서가 전체적이고 완전한 것으로서 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 본 발명의 범위를 충분히 전달하는 실시예인 것으로 해석되어야 한다. 전 명세서에 걸쳐 동일한 참조 번호는 동일한 구성요소(element)를 가리킨다.
본 발명은, 본질적으로 IBM사의 SNA 아키텍쳐와 VTAM 억세스 방식에 기반을 둔 환경내에서 기술된다. 상기 SNA 아키텍쳐 환경에서 상기 SNA 네트워크의 각 레이어(102 내지 116)는, 도 5에 일반적으로 도시된 바와 같은 본 발명의 토큰(token)화된 공유 기억 장치 관리자(shared storage manager)와 직접 통신한다. 본 발명에 의한 다수의 개별적인 헤더 세그먼트와 대응 데이터 세그먼트를 비인접 데이터스트림으로 처리하는 것의 관리와 상기 대응 데이터스트림의 분리는 상기 통신 스택의 어느 레이어에서도 발생할 수 있다. 본 발명의 바람직한 실시예에서는, 이러한 동작은 상기 데이터 링크 제어 레이어(104)(도 5를 참조)에서 발생한다. 상기한 바에 불구하고, 본 발명은, 상기 통신 스택의 레이어들을 통하여 상기 대규모인 데이터 객체가 진행됨에 따라, 상대적으로 대규모인 데이터 객체의 분할 및/또는 프로토콜에 특유한 정보를 포함하는 헤더를 각 데이터 세그먼트에 부착할 것을 요구하는 모든 형식의 네트워크 또는 네트워크 아키텍쳐에도 적용 가능하다.
도 6a 및 도 6b를 참조하면, 본 발명에 의한 다중 경로 채널(multipath channel)(이하, "MPC"라 함) 데이터스트림 구조를 도시한 블록도이다. 특히 간접 어드레스 워드(indirect address word)(이하, "IDAW"라 함) 데이터스트림 버퍼 목록과, 데이터스트림 헤더 영역 및 데이터스트림 데이터 영역을 포함하는 비인접 데이터스트림이 도시되었다. 상기 비인접 데이터스트림(350)(즉, MPC 데이터스트림)이 상기 통신 시스템의 채널을 통하여 전송되는 한편, IDAW 버퍼 목록(302)은 상기 통신 시스템의 채널을 통하여 전송되지 않는다. 또한, MPC 데이터스트림(350)은, 그것이 상기 시스템 I/O 인터페이스(28)(도 1 및 도 2를 참조)에 의하여 채널을 통하여 전송될 때의 MPC 데이터스트림으로서 도시되었다. 그것은 채널을 통하여 데이터스트림이 전송되기 전에 호스트 컴퓨터에서의 데이터스트림 구성요소의 기억 위치를 도시하는 것은 아니다.
MPC 데이터스트림(350)은 두 가지 주요 구성요소를 구비하는 바, 데이터스트림 헤더 영역(360)과 데이터스트림 데이터 영역(380)이 그것이다. 도 6a에 도시된 예를 들면, MPC 데이터스트림(350)은 2 킬로바이트의 경계 요건을 갖는다. 결과적으로, 이 예에서는, 상기 데이터스트림 헤더 영역(360)의 프라이멀 데이터와 상기 데이터스트림 데이터 영역(380)의 스태틱 데이터는 상기 2 킬로바이트의 경계상에 정렬되어야 한다.
도 6b를 참조하면, 상기 데이터스트림 헤더 영역(360)은, 다수의 헤더 세그먼트(362)뿐만 아니라 전체 MPC 데이터스트림에 대한 블록 헤더(block header)(361)를 포함하여 몇 개의 부분들을 구비한다. 상기 블록 헤더(361)는, 상기 데이터스트림의 길이와 같은, 전체 MPC 데이터스트림(350)에 관한 관리용 데이터를 포함한다.
상기 IDAW 버퍼 목록(302)은 실제의 데이터(즉, 헤더 데이터 및 애플리케이션 데이터)에 대한 포인터의 버퍼 목록이다. 상기 IDAW 버퍼 목록(302)은 두 개의 서로 다른 형식의 데이터에 대한 포인터를 포함하는 바, 즉 헤더 세그먼트에 대한 포인터(304)와, 애플리케이션 데이터 세그먼트에 대한 포인터(306)가 그것이다. IDAW 버퍼 목록(302)은, 채널 프로그램 IDAW 포인터(300)가 이를 포인팅한다. 상기 IDAW 버퍼 목록의 헤더 부분의 제 1 포인터(즉, HDR PTR 1)(304a)는 상기 MPC 데이터스트림(350)의 블록 헤더(361)를 포인팅한다. 상기 IDAW 버퍼 목록의 헤더 부분(304)의 그 이후의 각 포인터(예를 들어, HDR PTR 2)(304b)는 상기 데이터스트림 헤더 영역의 다른 2 킬로바이트의 초두를 포인팅한다. 상기 IDAW 버퍼 목록(302)의 데이터 포인터 부분(306)의 각 포인터는 MPC 데이터스트림(350)의 데이터스트림 데이터 영역의 또 다른 2 킬로바이트 부분을 포인팅한다. 예를 들어, DATA PTR 1(306)은 MPC 데이터스트림(350)의 스태틱 데이터 세그먼트(380a)의 초두를 포인팅한다.
헤더 세그먼트(362)는, 통신 시스템의 채널을 통한 전송을 위하여, 상기 통신 스택으로부터 수신된 각 헤더와 대응 데이터 세그먼트의 조합에 대하여 제공된다. 각 헤더 세그먼트(362)는, MPC 데이터스트림(350)의 다음 기본 PDU 헤더(367)에 대한 오프셋(362a)뿐만 아니라, 특정 헤더 세그먼트의 길이에 관한 관리용 데이터를 구비하는 기본(base) 프로토콜 데이터 유닛(protocol data unit)(이하, "PDU"라 함) 헤더(362a)를 포함한다. 나아가, 헤더 세그먼트(362)는, 프라이멀 데이터 헤더 세그먼트(즉, 프라이멀 데이터 A.1 내지 프라이멀 데이터 A.n)(362d.1 내지 362d.n)에 대한 변위(displacement)(362b)와, 대응 스태틱 데이터 세그먼트(즉, 스태틱 데이터 A.1 내지 스태틱 데이터 A.n)(380a.1 내지 380a.n)에 대한 변위(362c)를 또한 포함한다. 프라이멀 데이터는 SNA 또는 TCP/IP 헤더와 같은 네트워크 프로토콜 헤더를 참조하는 제어 데이터이다. 스태틱 데이터는 애플리케이션 데이터를 참조한다.
프라이멀 데이터 엔트리(362d.1 내지 362d.n)의 개수는 상기 결합된 스태틱 데이터에 대응하는 필요한 모든 프라이멀 데이터를 처리하기 위하여 소요되는 개수와 같다. 또한, 상기 MPC 데이터스트림(350)에 프라이멀 데이터 엔트리(362d)가 존재하므로, 상기 MPC 데이터스트림(350)에는 프라이멀 데이터 엔트리(예를 들어, 프라이멀 데이터 A.1)(362d.1)에 대한 변위(362b)가 같은 개수 존재할 것이다. 프라이멀 데이터에 대한 각 변위는 대응 프라이멀 데이터 엔트리를 고유하게 참조한다.
유사하게, 스태틱 데이터 세그먼트의 개수는, 상기 통신 스택으로부터 수신한 데이터 세그먼트를 처리하기 위하여 소요되는 개수와 같게 될 것이다. 각 프라이멀 데이터 변위와 프라이멀 데이터 엔트리 사이에는 고유한 일대일 대응이 존재한다. 유사하게, MPC 데이터스트림(350)의 각 스태틱 데이터 변위와 스태틱 데이터 엔트리 사이에는 일대일 대응이 존재한다.
도 7 내지 도 11은 본 발명에 의한 방법 및 그 시스템과 프로그램 제품을 도시한 블록도, 흐름도 및 제어 흐름도이다. 상기 블록도, 흐름도 및 제어 흐름도의 각 블록 또는 단계와 그들의 조합이 컴퓨터 프로그램 명령(computer program instruction)에 의하여 구현될 수 있음을 이해하여야 한다. 이러한 컴퓨터 프로그램 명령은 컴퓨터 또는 머신을 제작하기 위한 기타의 프로그램 가능 장치(programmable apparatus) 상에 로드(load)되어, 상기 컴퓨터 또는 기타의 프로그램 가능 장치 상에서 실행되는 상기 명령에 의하여 상기 블록도, 흐름도 또는 제어 흐름 블록 또는 단계 등에 규정된 기능을 구현하기 위한 수단을 생성한다. 또한, 이러한 컴퓨터 프로그램 명령은, 컴퓨터 또는 기타의 프로그램 가능 장치를 특정의 방식으로 기능하도록 하는, 컴퓨터에 의하여 판독 가능한 메모리에 저장되어, 상기 블록도, 흐름도 또는 제어 흐름 블록 또는 단계에 규정된 기능을 구현하기 위한 명령 수단을 포함하는 제조물(article of manufacture)을 생성한다. 또한, 상기 컴퓨터 프로그램 명령은, 컴퓨터에 의하여 구현되는 프로세스(process)를 생성하기 위하여, 상기 컴퓨터 또는 기타의 프로그램 가능 장치상에서 일련의 동작 가능 단계가 수행되도록 하기 위한 상기 컴퓨터 또는 기타의 프로그램 가능 장치상에 로드되어, 상기 컴퓨터 또는 기타의 프로그램 가능 장치상에서 실행되는 명령에 의하여 상기 블록도, 흐름도 또는 제어 흐름 블록 또는 단계에 규정된 기능을 구현하기 위한 단계들이 제공된다.
따라서, 상기 블록도, 흐름도 또는 제어 흐름도의 블록 또는 단계는, 상기 규정된 기능을 수행하기 위한 수단의 조합과, 상기 규정된 기능을 수행하기 위한 단계의 조합과, 상기 규정된 기능을 수행하기 위한 프로그램 명령 수단을 지원한다. 상기 블록도, 흐름도 또는 제어 흐름도의 블록 또는 단계와 그들의 조합은, 상기 규정된 기능 또는 단계, 또는 특수 목적 하드웨어 명령 및 컴퓨터 명령의 조합을 수행하는 특수 목적 하드웨어 기반 컴퓨터 시스템(special purpose hardware-based computer system)에 의하여 구현될 수 있음을 이해하여야 한다.
도 7을 참조하면, 데이터스트림을 전송하기 전에, IDAW 데이터스트림 버퍼 목록을 작성하는 것을 포함하여, 본 발명의 헤더 세그먼트와 대응 데이터 세그먼트의 처리를 도시한 블록도가 도시되었다. 상기 IDAW 데이터스트림 버퍼 목록(302)(도 6을 참조)의 작성과 상기 "가상" MPC 데이터스트림(350)(도 6을 참조)의 구축은 상기 통신 스택의 상위 레이어로부터 헤더와 대응 데이터 세그먼트를 수신하면서 시작된다. 하나 이상의 헤더 세그먼트와 그의 대응 데이터 세그먼트는 상기 데이터 링크 제어 레이어의 대기 행렬에 삽입된다. 상기 헤더와 대응 데이터 세그먼트는, 본 발명의 출원인인 IBM사의 미합중국 특허 출원 제 08/802,597 호인 "Systems and Methods for Managing the Processing of Relatively Large Data Objects in a Communications Stack"에 개시된 바와 같이, 통신 스택에 의하여 생성된다.
도 1의 제 1 단계에서, 상기 데이터 링크 제어 레이어는 상기 데이터스트림 헤더 영역을 위한 기억 장치를 획득하며, 상기 IDAW 데이터스트림 버퍼 목록(402)의 제 1 엔트리(402a)의 포인터로서 상기 데이터스트림 헤더 영역을 위한 어드레스에 대한 포인터를 저장한다. 그 다음에, 상기 데이터 링크 제어 레이어는, 제 2 단계에서, 상기 IDAW 버퍼 목록(402)의 상기 제 1 엔트리(402a)에 의하여 포인팅된 위치에 상기 데이터스트림 헤더 영역(404)을 구축하기 시작한다. 상기 데이터 링크 제어 레이어는 상기 블록 헤더(404a)와 상기 기본 PDU 헤더(404b)를 구축함으로써 상기 데이터스트림 헤더 영역을 구축한다. 그 다음에, 상기 데이터 링크 제어 레이어는, 제 3 단계에서, 상기 통신 스택의 상위 레이어로부터 수신된 상기 SNA 또는 다른 프로토콜 헤더(406)를 상기 데이터스트림 헤더 영역의 프라이멀 데이터 부분(404c)으로 복사한다.
그 다음에, 제 4 단계에서, 상기 데이터 링크 제어 레이어는, 상기 SNA 또는 다른 프로토콜 헤더(406)와, 상기 통신 스택으로부터 수신된 상기 SNA 헤더와 그의 대응 데이터 세그먼트에 대응하는 통신 스택의 내부 버퍼 목록을 사용하여, 2 킬로바이트의 증분(increment)을 갖는 상기 데이터 세그먼트의 어드레스에 대한 포인터를, 상기 IDAW 버퍼 목록(402b 내지 402n)에 엔트리로서 저장한다. 그 다음에, 제 5 단계에서, 상기 데이터 링크 제어 레이어는, 상기 프라이멀 데이터에 대한 변위(즉, D1)와, 상기 데이터 세그먼트 또는 스태틱 데이터에 대한 변위(즉, D2)를 상기 데이터스트림 헤더 영역에 저장한다. 상기 통신 스택의 내부 버퍼 목록은, 본 발명의 출원인인 IBM사의 미합중국 특허 출원 제 08/802,597 호인 "Systems and Methods for Managing the Processing of Relatively Large Data Objects in a Communications Stack"에 개시된 "버퍼 목록(XBUFLIST)"과 같은 형식을 취한다.
도 8을 참조하면, 도 8은 본 발명에 의한 통신 시스템의 채널을 통하여 전송하기 위한 준비로서 상기 데이터 링크 제어 레이어에서 다수의 헤더 세그먼트와 데이터 세그먼트를 처리하는 것에 관련된 동작을 설명하기 위한 흐름도이다. 요약하면, 도 8은 상기 IDAW 버퍼 목록(302)(도 6을 참조)과, 상기 MPC 데이터스트림의 데이터스트림 헤더 영역(360)(도 6을 참조)의 구성을 도시한다. 상기 데이터 링크 제어 레이어는 처리를 시작(단계 500)하여, 상기 데이터스트림 헤더 영역에 대한 상기 IDAW 버퍼 목록을 구성한다(단계 502). 상기 데이터스트림 헤더 영역에 대한 IDAW 엔트리의 구성은 도 7의 상기 제 1 단계에 해당한다. 다음으로, 상기 데이터 링크 제어 레이어는 상기 통신 스택으로부터 수신한 헤더와 대응 데이터 세그먼트의 처리를 시작한다. 특히, 다음 세 가지 조건중 어느 하나를 만족할 때까지 처리를 계속한다. 즉, (1) 상기 통신 스택으로부터 더 이상 수신되는 데이터가 없음(즉, 대기 행렬에 삽입된 데이터가 없음), 또는 (2) 상기 MPC 데이터스트림 헤더 영역이 충만됨, 또는 (3)상기 데이터스트림 데이터 영역이 충만됨 등의 조건이 그것이다(단계 504). 상기 데이터 링크 제어 레이어는, 처리하기 위하여 상기 통신 스택의 상위 레이어로부터 수신된 메시지(즉, 헤더 및 대응 데이터 세그먼트)를 대기 행렬에서 제외시킨다(단계 506). 그 다음에, 상기 데이터 링크 제어 레이어는 상기 데이터스트림 헤더 영역에 상기 기본 PDU 헤더를 구축한다(단계 508). 이 단계는 도 7의 제 2 단계에 해당한다.
그 다음에, 상기 데이터 링크 제어 레이어에서 상기 통신 스택의 상위 레이어로부터 수신한 상기 헤더와 데이터 세그먼트의 조합에 대한 내부 버퍼 목록에 억세스한다(단계 510). 상기 데이터 흐름 제어 레이어(110)로부터 수신한 상기 내부 버퍼 목록의 엔트리가 프라이멀 데이터인지의 여부에 대하여 판단한다. 만약 상기 상위 레이어로부터 수신한 버퍼 목록의 엔트리가 프라이멀 데이터에 대응한다면, 상기 내부 버퍼 목록 엔트리는, 상기 대응 프라이멀 데이터에 억세스하고, 상기 프라이멀 데이터를 상기 데이터스트림 헤더 영역으로 복사하는데 사용된다(단계 514). 이렇게 상기 프라이멀 데이터를 상기 데이터스트림 헤더 영역으로 복사하는 것은 도 7의 제 3 단계에 해당한다. 만약 상위 레이어로부터 수신한 상기 내부 버퍼 목록의 엔트리가 프라이멀 데이터가 아닌 것(즉, 스태틱 데이터인 것)으로 판단되었다면, 상기 스태틱 데이터의 위치를 포인팅하는 엔트리와 함께, 상기 IDAW 버퍼 목록의 엔트리가 생성된다. 각 2 킬로바이트의 스태틱 데이터에 대하여 별개의 IDAW 버퍼 목록 엔트리가 구성된다(단계 516). 상기 IDAW 버퍼 목록 엔트리의 구성은 도 7의 제 4 단계에 해당한다.
그 다음에, 상기 데이터가 프라이멀 데이터이든 스태틱 데이터이든, 상기 데이터에 대한 변위가 상기 MPC 데이터스트림의 데이터스트림 헤더 영역의 대응 헤더 세그먼트 부분에 저장된다(단계 518). 데이터스트림의 헤더 영역에 상기 데이터에 대한 변위를 저장하는 것은 도 7의 제 5 단계에 해당한다. 마지막으로, 상기 통신 스택의 상위 레이어로부터 수신한 내부 버퍼 목록에 엔트리가 더 남아있는지의 여부에 관하여 판단한다(단계 520). 만약 상위 레이어로부터 수신한 내부 버퍼 목록에 엔트리가 남아 있다면, 상기 내부 버퍼 목록의 여분의 엔트리를 처리하기 위하여, 제어를 상기 단계 510으로 복귀시킨다. 만약 상위 레이어로부터 수신한 내부 버퍼 목록에 엔트리가 남아 있지 않다면, 여분의 데이터가 대기 행렬에 남아 있지 않거나, 상기 데이터스트림 헤더 영역이 충만하거나, 상기 데이터스트림 데이터 영역이 충만하거나 할 때까지 처리를 계속하기 위하여, 제어를 상기 단계 504로 복귀시킨다.
도 9를 참조하면, 상기 통신 시스템의 채널로부터 상기 MPC 데이터스트림을 수신함에 따라, 상기 데이터와 대응 헤더의 재조립을 도시한 블록도이다. 특히, 도 9는 상기 데이터 링크 제어 레이어에 의한 상기 통신 시스템의 수신 노드에서의 상기 IDAW 버퍼 목록의 구축과 통신 스택 내부 버퍼 목록의 구축을 도시한다. 도 9는 상기 기억 장치 관리자(즉, 통신 기억 장치 관리자 데이터 기억 장치(CSM DS))(602)에 의하여 유지되는 데이터 기억 영역을 도시한다. 상기 데이터 기억 영역(602)은, 상기 기억 장치 관리자로부터 상기 데이터 링크 제어 레이어에 의하여 요청된 공유 메모리 버퍼를 포함한다.
도 9의 제 1 단계에서, 상기 데이터 링크 제어 레이어는, 상기 통신 시스템의 채널을 통하여 상기 MPC 데이터스트림(350)(도 6을 참조)을 수신하기 위하여 상기 IDAW 버퍼 목록(604)을 구성하기 시작한다. 상기 데이터 링크 제어 레이어는, 제 1 단계에서, 상기 IDAW 버퍼 목록(604a)에 상기 데이터스트림의 데이터스트림 헤더 영역에 대한 참조를 입력함으로써, 2 킬로바이트의 증분으로 상기 IDAW 버퍼 목록의 엔트리를 구성하기 시작한다. 그 다음에, 상기 데이터 링크 제어 레이어는, 상기 IDAW 버퍼 목록(604b 내지 604n)에 상기 데이터스트림의 MPC 데이터스트림 데이터 영역 부분에 대한 참조를 입력함으로써, 2 킬로바이트의 기억 증분(storage increment)으로 상기 IDAW 버퍼의 엔트리를 구성하기 시작한다.
도 9의 제 3 단계에서, 일단 상기 채널로부터 데이터를 판독하면, 상기 데이터 링크 제어 레이어는 수신된 헤더 및 결합된 데이터 세그먼트 각각에 대한 기억 블록(block of storage)을 예약한다. 그 다음에, 상기 데이터 링크 제어 레이어는 상기 MPC 데이터스트림의 데이터스트림 헤더 영역으로부터 상기 프라이멀 데이터(예를 들어, SNA 헤더)를 획득하고, 제 4 단계에서, 상기 데이터 링크 제어 레이어에 의하여 예약된 상기 기억 블록(608)의 기억 블록(610)으로 상기 프라이멀 데이터를 복사한다. 그 다음에, 도 9의 제 5 단계에서, 상기 데이터 링크 제어 레이어는, 상기 채널을 통하여 수신하여 저장한 스태틱 데이터(602a)와 상기 저장된 SNA 헤더(610)에 대응하는 내부 버퍼 목록을 작성한다. 상기 버퍼 목록 엔트리는 상기 스태틱 데이터와 상기 프라이멀 데이터 모두에 대하여 구축된다. 제 6 단계에서, 상기 스태틱 데이터에 대한 버퍼 목록 엔트리(612)는, 상기 버퍼의 어드레스 또는 상기 버퍼로의 오프셋을 저장함으로써 구축되며, 상기 버퍼는 상기 스태틱 데이터(612a), 상기 버퍼에 저장된 상기 스태틱 데이터의 길이(612b), 상기 주토큰 또는 부토큰(이 예에서는 "TK2"로 표시됨)(612c) 및 상기 세그먼트가 "스태틱"임을 나타내는 표시(예컨대, "S")(612d)를 포함한다.
상기 프라이멀 데이터(예를 들어, SNA 헤더)에 대한 내부 버퍼 목록 엔트리(614)도 또한 구축된다. 상기 헤더(610)에 대한 상기 내부 버퍼 목록 엔트리는, 다른 내부 버퍼 목록 엔트리와 유사하게, 헤더가 내부 통신 스택 기억 장치(608)에 저장된 위치에 대한 어드레스(614a)를 포함한다. 또한, 상기 통신 스택은, 상기 헤더(610)의 길이(614b)를 내부 버퍼 목록 엔트리에 저장하며, 이 버퍼 목록 엔트리에 대한 토큰이 존재하지 않는다는 것을 표시하는 영(0)을 내부 버퍼 목록 엔트리에 배치하며, 상기 저장된 데이터(610)가 "프라이멀"임을 표시한다(예를 들어, "P")(614d). 일단 상기 내부 버퍼 목록이 구축되면, 이 버퍼 목록은 통신 스택의 상위 레이어에서의 처리를 위하여 대기 행렬에 삽입된다.
도 10 및 도 11을 참조하면, 도 10 및 도 11은 통신 스택에 의한 처리를 위하여, 통신 시스템의 채널에서 수신한 비인접 데이터스트림을 개별적인 헤더 세그먼트와 그의 대응 데이터 세그먼트로 분리하는 것에 관련된 동작을 설명하기 위한 흐름도로서, 이하에서 설명한다. 상기 통신 스택의 데이터 링크 제어 레이어는, 상기 분리 프로세스를 시작(단계 700)하여, 상기 IDAW 버퍼 목록과 상기 데이터스트림 헤더 영역에 대한 기억 장치를 요구한다(단계 702). 그 다음에, 상기 통신 스택은, 상기 데이터스트림의 데이터스트림 헤더 영역을 참조하는 상기 IDAW 버퍼 목록의 일부를 구성한다(단계 704). 상기 MPC 데이터스트림의 상기 데이터스트림 헤더 영역을 참조하는 상기 IDAW 버퍼 목록의 엔트리를 구성하는 것은 도 9의 제 1 단계에 해당한다. 그 다음에, 상기 통신 스택은, 상기 I/O 설비가 비활성화될 때까지 상기 데이터스트림의 실제 헤더 세그먼트를 처리하기 시작한다(단계 706). 채널로부터 데이터를 판독하기 전에, 상기 데이터 링크 제어 레이어는 상기 기억 장치 관리자로부터 공유 메모리 버퍼를 요구한다. 그 다음에, 상기 통신 스택은 상기 데이터스트림 데이터 영역(즉, 스태틱 데이터)을 참조하는 상기 IDAW 버퍼 목록의 일부를 구성한다(단계 710). 이러한 IDAW 버퍼 목록의 엔트리는 상기 공유 메모리 버퍼를 포인팅한다. 상기 데이터스트림 데이터 영역을 참조하는 상기 IDAW 버퍼 목록 엔트리를 구성하는 것은 도 9의 제 2 단계에 해당한다. 그 다음에, 상기 통신 스택은, 상기 입력/출력 설비를 통하여, 상기 데이터(즉, 상기 프라이멀 데이터 및 상기 스태틱 데이터)를 상기 헤더 및 데이터 세그먼트 영역으로 읽어들인다(단계 712). 상기 통신 스택은 상기 MPC 데이터스트림의 데이터스트림 헤더 영역으로부터의 개별적인 PDU 헤더를 처리하기 위하여 진행한다.
만약 단계 714에서 상기 MPC 데이터스트림의 상기 데이터스트림 헤더 영역에 PDU 헤더가 없는 것으로 판단되었다면, 다른 데이터스트림을 수신하기 위한 준비를 하기 위하여 제어는 상기 단계 706으로 복귀한다. 그렇지 않다면, 상기 통신 스택은 상기 통신 스택 내부 버퍼 목록을 구축하기 위한 통신 스택 내부의 기억 장치를 할당(단계 716)하고, 그리하여 상기 프로토콜 헤더에 대한 엔트리를 예약한다. 상기 통신 스택 내부의 기억 장치를 할당하는 것(단계 716)은 도 9의 제 3 단계에 해당한다.
그 다음에, 상기 데이터스트림의 상기 PDU 헤더 세그먼트에 프라이멀 데이터가 존재하는지의 여부에 관하여 판단한다(단계 718). 만약 상기 데이터스트림 헤더 영역에 프라이멀 데이터가 존재하는 것으로 판단되었다면, 상기 통신 스택은 상기 프라이멀 데이터를 상기 내부 통신 스택 기억 장치로 복사한다(단계 720). 상기 프라이멀 데이터를 상기 내부 통신 스택 기억 장치로 복사하는 것(단계 720)은 도 9의 제 4 단계에 해당한다. 그 다음에, 상기 통신 스택은, 상기 데이터의 어드레스 또는 오프셋과, 상기 데이터의 길이 및 기타 정보를 저장함으로써 상기 통신 스택 내부 버퍼 목록에 대한 버퍼 목록 엔트리를 작성한다(단계 722). 상기 내부 버퍼 목록 엔트리를 구성하는 것(단계 722)은 도 9의 제 5 단계에 해당한다.
그 다음에, 처리해야 할 PDU 요소가 더 존재하는지의 여부에 관하여 판단한다(단계 724). 만약 더 이상 처리해야 할 PDU 요소가 존재하지 않는다면, 상기 데이터는 상기 통신 스택의 다음 상위 레이어의 대기 행렬에 삽입되고(단계 726), 제어는 상기 데이터스트림 헤더 영역의 추가적인 PDU를 처리하기 위하여 상기 단계 714로 복귀한다. 만약 처리해야 할 PDU 요소가 남아 있다면, 제어는 상기 헤더 세그먼트의 추가적인 데이터를 처리하기 위하여 상기 단계718로 복귀한다.
만약 상기 단계 718에서 상기 데이터스트림 헤더 영역에 데이터가 없는 것으로 판단되었다면, 하나 이상의 PDU가 상기 공유 메모리 버퍼에 존재하는지의 여부에 관하여 판단한다(단계 728). 만약 추가적인 PDU가 상기 공유 메모리 버퍼에 존재하지 않는다면, 상기 통신 스택은 상기 기억 장치 관리자로부터 부토큰을 획득(단계 730)하고, 상기 특정의 데이터에 대응하는 내부 버퍼 목록에 상기 획득한 부토큰을 저장한다(단계 732). 만약 상기 단계 728에서 상기 공유 메모리 버퍼에 더 이상의 PDU가 없는 것으로 판단되었다면, 상기 통신 스택은 상기 내부 버퍼 목록에 주토큰을 저장한다(단계 732). 상기 내부 버퍼 목록에 상기 부토큰 또는 주토큰을 저장하는 것(단계 732)은 도 9의 제 6 단계에 해당한다. 주토큰 및 부토큰과 내부 버퍼 목록은, 본 발명의 출원인인 IBM사의 미합중국 특허 출원인 "Systems and Methods for Controlling the Transmission of Relatively Large Data Objects in a Communications Stack" 및 미합중국 특허 출원인 "Systems and Methods for Managing the Processing of Relatively Large Data Objects in a Communications Stack"에 상세히 개시되어 있으며, 본 출원의 참고 자료로서 이를 인용한다.
본 발명에 의하면, 본 발명에 의하면, 데이터의 이동이나 복사를 감소시키고 메모리 경계의 제한을 준수하는 한편, 데이터 블록킹을 사용하여 데이터 링크 제어 레이어에서의 "가상(virtual)" 데이터스트림을 구성함으로써 통신 시스템의 성능을 향상시킬 수 있다.
상기한 바와 같이, 본 발명의 전형적인 바람직한 실시예를 첨부된 도면과 함께 상세히 설명하였으며, 특정의 용어가 채용되었으나 그들은 일반적이고 기술적인 의미로만 사용된 것이지 그 제한을 위한 것이 아니다. 본 발명의 범위는 첨부된 특허 청구의 범위에 의하여 밝혀진다.
Claims (33)
- 네트워크 채널을 통해 전송하기 위하여, 다수의 데이터 세그먼트와 다수의 헤더 세그먼트를 데이터스트림으로 조립하기 위한 방법에 있어서 - 상기 데이터 세그먼트의 각각은 상기 헤더 세그먼트의 각각에 유일하게 대응하며, 상기 네트워크 채널은 일반적으로 상기 네트워크 채널을 통해 상기 데이터 세그먼트와 대응 헤더 세그먼트를 효율적으로 전송할 수 있도록 상기 데이터 세그먼트의 각각이 상기 유일하게 대응하는 헤더 세그먼트의 각각과 인접될 것을 요구함 - ,상기 다수의 헤더 세그먼트를 데이터스트림 버퍼의 데이터스트림 헤더 영역으로 복사하는 단계 - 상기 헤더 세그먼트는 상기 데이터스트림 버퍼의 데이터스트림 헤더 영역에 순차적으로 저장됨 - ;상기 데이터스트림 버퍼의 데이터스트림 헤더 영역에 저장된 상기 헤더 세그먼트의 각각을 그에 대응하는 상기 데이터 세그먼트의 각각에 결합하는 단계; 및상기 데이터스트림 버퍼의 데이터스트림 헤더 영역의 상기 헤더 세그먼트를 참조하는 엔트리와 상기 데이터 세그먼트를 참조하는 엔트리를 포함하는 데이터스트림 버퍼 목록을 작성하는 단계를 포함하며,상기 데이터 세그먼트, 상기 데이터스트림 버퍼 목록 및 데이터스트림 헤더 영역을 구비한 상기 데이터스트림 버퍼는 집합적으로, 상기 데이터스트림의 전송시까지 상기 데이터 세그먼트를 물리적으로 이동하거나 복사하지 않고 상기 네트워크 채널을 통해 전송하기 위한 데이터스트림을 형성하는 데에 사용될 수 있으며, 상기 데이터스트림은 데이터스트림 헤더 영역의 헤더 세그먼트가 그 대응하는 데이터스트림 데이터 영역의 데이터 세그먼트로부터 인접하지 않고 데이터스트림에 위치할 수 있도록 데이터스트림 헤더 영역과 데이터스트림 데이터 영역을 구비하고, 상기 데이터스트림은 상기 네트워크 채널상에서의 상기 데이터스트림의 전송시 형성되는데이터스트림 조립 방법.
- 제 1 항에 있어서,상기 네트워크 채널을 통해 상기 다수의 헤더 세그먼트를 구비한 데이터스트림 헤더 영역을 전송하는 단계;상기 데이터스트림 버퍼 목록에 의하여 참조되는 상기 다수의 데이터 세그먼트를 획득하는 단계; 및상기 단계에서 획득한, 상기 데이터스트림 버퍼 목록에 의하여 참조되는 상기 다수의 데이터 세그먼트를 데이터스트림 데이터 영역으로서 상기 네트워크 채널을 통해 전송하는 단계를 더 포함하며,상기 데이터스트림 헤더 영역의 상기 헤더 세그먼트와 상기 데이터스트림 데이터 영역의 상기 데이터 세그먼트의 조합이 상기 데이터스트림을 형성하며, 상기 데이터스트림 헤더 영역의 상기 헤더 세그먼트가 그 대응하는 상기 데이터스트림 데이터 영역의 데이터 세그먼트로부터 상기 데이터스트림에서 인접하지 않도록 위치한데이터스트림 조립 방법.
- 제 1 항에 있어서,상기 조립 방법은 다수의 레이어를 구비한 통신 스택에서 실시되며, 상기 복사하는 단계는, 상기 통신 스택의 상기 다수의 레이어의 한 레이어로부터 상기 데이터 세그먼트와 상기 헤더 세그먼트를 수신하는 단계 다음에 수행되는데이터스트림 조립 방법.
- 제 1 항에 있어서,상기 데이터스트림 버퍼의 상기 데이터스트림 헤더 영역은 블록 헤더 부분을 구비하며, 상기 복사하는 단계는 상기 블록 헤더 부분에 데이터스트림에 특유한 정보를 저장하는 단계 다음에 수행되는데이터스트림 조립 방법.
- 제 1 항에 있어서,상기 결합하는 단계가,상기 데이터스트림의 데이터스트림 헤더 영역의 상기 헤더 세그먼트의 각각과 상기 데이터스트림 데이터 영역의 상기 헤더 세그먼트의 각각에 대응하는 상기 데이터 세그먼트 사이의 변위(displacement)를 판단하는 단계; 및상기 판단된 변위를, 상기 데이터 세그먼트의 어느 하나에 대응하는 상기 헤더 세그먼트의 어느 하나와 결합하여, 상기 데이터스트림 헤더 영역에 저장하는 단계를 포함하는데이터스트림 조립 방법.
- 제 3 항에 있어서,상기 통신 스택은, 가상 통신 접근 방식(Virtual Telecommunication Access Method)(VTAM) 시스템에 구현된 통신 스택인데이터스트림 조립 방법.
- 다수의 레이어를 구비한 통신 스택에서, 네트워크 채널에서 수신된 비인접 데이터스트림으로부터의 헤더 세그먼트와 대응 데이터 세그먼트를 조립하기 위한 방법에 있어서 - 상기 수신된 비인접 데이터스트림은 다수의 헤더 세그먼트를 구비한 데이터스트림 헤더 영역과 다수의 데이터 세그먼트를 구비한 데이터스트림 데이터 영역을 포함하며, 상기 데이터 세그먼트의 각각은 상기 헤더 세그먼트의 어느 하나에 유일하게 대응하며, 상기 데이터 세그먼트의 각각은 상기 대응하는 헤더 세그먼트와 인접하지 않는 관계로 상기 데이터스트림에 위치함 - ,상기 비인접 데이터스트림의 상기 헤더 세그먼트의 어느 하나를 참조하는 헤더 엔트리와, 상기 헤더 세그먼트의 어느 하나에 유일하게 대응되는 상기 비인접 데이터스트림의 데이터 세그먼트의 어느 하나를 참조하는 데이터 엔트리를 구비하는 데이터스트림 버퍼 목록을 작성하는 단계;헤더 세그먼트 버퍼에 상기 하나의 헤더 세그먼트를 저장하는 단계;데이터 세그먼트 버퍼에 상기 하나의 데이터 세그먼트를 저장하는 단계; 및상기 통신 스택의 제 2 레이어에, 상기 하나의 데이터 세그먼트와, 상기 고유하게 대응하는 하나의 헤더 세그먼트를 인접하지 않도록 전달하는 단계 - 상기 하나의 데이터 세그먼트는, 상기 헤더 세그먼트에 결합된 데이터 세그먼트를 물리적으로 이동하거나 복사하지 않고, 상기 결합된 하나의 헤더 세그먼트와 인접하지 않도록 상기 통신 스택의 제 2 레이어로 전달됨 - 를 포함하는데이터스트림 조립 방법.
- 제 7 항에 있어서,상기 작성하는 단계가,상기 비인접 데이터스트림의 상기 헤더 세그먼트의 어느 하나를 식별하는 단계;상기 데이터스트림 버퍼 목록에 상기 식별된 하나의 헤더 세그먼트를 참조하기 위한 헤더 포인터를 저장하는 단계;상기 비인접 데이터스트림의 데이터 세그먼트로서 상기 식별된 하나의 헤더 세그먼트에 유일하게 대응하는 데이터 세그먼트를 식별하는 단계; 및상기 데이터스트림 버퍼 목록에 상기 식별된 하나의 데이터 세그먼트를 참조하기 위한 데이터 포인터를 저장하는 단계를 포함하는데이터스트림 조립 방법.
- 제 7 항에 있어서,상기 인접하지 않도록 전달하는 단계가,상기 하나의 데이터 세그먼트에 대한 통신 스택 내부 버퍼 목록을 작성하는 단계 - 상기 내부 버퍼 목록은 상기 하나의 데이터 세그먼트 및 상기 결합된 하나의 헤더 세그먼트와 고유하게 결합됨 - ; 및상기 내부 버퍼 목록을 상기 통신 스택의 하나의 레이어로부터 상위 레이어로 전달하는 단계 - 상기 하나의 데이터 세그먼트는, 상기 헤더 세그먼트에 결합된 데이터 세그먼트를 물리적으로 이동하거나 복사하지 않고, 상기 결합된 헤더 세그먼트와 인접하지 않도록 상기 통신 스택의 상위 레이어로 전달됨 - 를 포함하는데이터스트림 조립 방법.
- 제 9 항에 있어서,상기 통신 스택 내부 버퍼 목록을 작성하기 위한 단계가,상기 하나의 데이터 세그먼트를 대표하는 토큰을 작성하는 단계 - 상기 토큰은 상기 대응 데이터 세그먼트와 고유하게 결합됨 - ;상기 하나의 헤더 세그먼트에 대응하는 상기 하나의 데이터 세그먼트를 고유하게 참조하기 위한 버퍼 목록 헤더 포인터를 작성하는 단계;상기 내부 버퍼 목록에 상기 토큰을 저장하는 단계; 및상기 내부 버퍼 목록에 상기 버퍼 목록 헤더 포인터를 저장하는 단계를 포함하는데이터스트림 조립 방법.
- 제 7 항에 있어서,상기 통신 스택은, 가상 통신 접근 방식(Virtual Telecommunication Access Method)(VTAM) 시스템에 구현된 통신 스택인데이터스트림 조립 방법.
- 네트워크 채널을 통해 전송하기 위하여, 다수의 데이터 세그먼트와 다수의 헤더 세그먼트를 데이터스트림으로 조립하기 위한 시스템에 있어서 - 상기 데이터 세그먼트의 각각은 상기 헤더 세그먼트의 각각에 유일하게 대응하며, 상기 네트워크 채널은 일반적으로 상기 네트워크 채널을 통해 상기 데이터 세그먼트와 대응 헤더 세그먼트를 효율적으로 전송할 수 있도록 상기 데이터 세그먼트의 각각이 상기 유일하게 대응하는 헤더 세그먼트의 각각과 인접될 것을 요구함 - ,데이터스트림 헤더 영역을 구비한 데이터스트림 버퍼;상기 다수의 헤더 세그먼트를 데이터스트림 버퍼의 데이터스트림 헤더 영역으로 복사하기 위한 수단 - 상기 헤더 세그먼트는 상기 데이터스트림 버퍼의 데이터스트림 헤더 영역에 순차적으로 저장됨 - ;상기 데이터스트림 버퍼의 데이터스트림 헤더 영역에 저장된 상기 헤더 세그먼트의 각각을 그에 대응하는 상기 데이터 세그먼트의 각각에 결합하기 위한 수단; 및상기 데이터스트림 버퍼의 데이터스트림 헤더 영역의 상기 헤더 세그먼트를 참조하는 엔트리와 상기 데이터 세그먼트를 참조하는 엔트리를 포함하는 데이터스트림 버퍼 목록을 작성하기 위한 수단을 포함하며,상기 데이터 세그먼트, 상기 데이터스트림 버퍼 목록 및 데이터스트림 헤더 영역을 구비한 상기 데이터스트림 버퍼는 집합적으로, 상기 데이터스트림의 전송시까지 상기 데이터 세그먼트를 물리적으로 이동하거나 복사하지 않고 상기 네트워크 채널을 통해 전송하기 위한 데이터스트림을 형성하는 데에 사용될 수 있으며, 상기 데이터스트림은 데이터스트림 헤더 영역의 헤더 세그먼트가 그 대응하는 데이터스트림 데이터 영역의 데이터 세그먼트로부터 인접하지 않고 데이터스트림에 위치할 수 있도록 데이터스트림 헤더 영역과 데이터스트림 데이터 영역을 구비하고, 상기 데이터스트림은 상기 네트워크 채널상에서의 상기 데이터스트림의 전송시 형성되는데이터스트림 조립 시스템.
- 제 12 항에 있어서,상기 네트워크 채널을 통해 상기 다수의 헤더 세그먼트를 구비한 데이터스트림 헤더 영역을 전송하기 위한 수단;상기 데이터스트림 버퍼 목록에 의하여 참조되는 상기 다수의 데이터 세그먼트를 획득하기 위한 수단; 및상기 단계에서 획득한, 상기 데이터스트림 버퍼 목록에 의하여 참조되는 상기 다수의 데이터 세그먼트를 데이터스트림 데이터 영역으로서 상기 네트워크 채널을 통해 전송하기 위한 수단을 더 포함하며,상기 데이터스트림 헤더 영역의 상기 헤더 세그먼트와 상기 데이터스트림 데이터 영역의 상기 데이터 세그먼트의 조합이 상기 데이터스트림을 형성하며, 상기 데이터스트림 헤더 영역의 상기 헤더 세그먼트가 상기 데이터스트림 데이터 영역의 해당 데이터 세그먼트로부터 상기 데이터스트림에서 인접하지 않도록 위치한데이터스트림 조립 시스템.
- 제 12 항에 있어서,상기 조립 시스템은 다수의 레이어를 구비한 통신 스택과 동작 가능하게 접속되며, 상기 통신 스택의 상기 다수의 레이어의 한 레이어로부터 상기 데이터 세그먼트와 상기 헤더 세그먼트를 수신하기 위한 수단을 더 포함하는데이터스트림 조립 시스템.
- 제 12 항에 있어서,상기 데이터스트림 버퍼의 상기 데이터스트림 헤더 영역은 블록 헤더 부분을 구비하며, 상기 블록 헤더 부분에 데이터스트림에 특유한 정보를 저장하기 위한 수단을 더 포함하는데이터스트림 조립 시스템.
- 제 12 항에 있어서,상기 결합하기 위한 수단이,상기 데이터스트림의 데이터스트림 헤더 영역의 상기 헤더 세그먼트의 각각과 상기 데이터스트림 데이터 영역의 상기 헤더 세그먼트의 각각에 대응하는 상기 데이터 세그먼트 사이의 변위(displacement)를 판단하기 위한 수단;상기 판단된 변위를, 상기 데이터 세그먼트의 어느 하나에 대응하는 상기 헤더 세그먼트의 어느 하나와 결합하여, 상기 데이터스트림 헤더 영역에 저장하기 위한 수단을 포함하는데이터스트림 조립 시스템.
- 제 14 항에 있어서,상기 통신 스택은, 가상 통신 접근 방식(Virtual Telecommunication Access Method)(VTAM) 시스템에 구현된 통신 스택인데이터스트림 조립 시스템.
- 다수의 레이어를 구비한 통신 스택에서, 네트워크 채널에서 수신된 비인접 데이터스트림으로부터의 헤더 세그먼트와 대응 데이터 세그먼트를 조립하기 위한 시스템에 있어서 - 상기 수신된 비인접 데이터스트림은 다수의 헤더 세그먼트를 구비한 데이터스트림 헤더 영역과 다수의 데이터 세그먼트를 구비한 데이터스트림 데이터 영역을 포함하며, 상기 데이터 세그먼트의 각각은 상기 헤더 세그먼트의 어느 하나에 유일하게 대응하며, 상기 데이터 세그먼트의 각각은 상기 대응하는 헤더 세그먼트와 인접하지 않믐 관계로 상기 데이터스트림에 위치함 - ,상기 비인접 데이터스트림의 상기 헤더 세그먼트의 어느 하나를 참조하는 헤더 엔트리와, 상기 헤더 세그먼트의 어느 하나에 고유하게 대응되는 상기 비인접 데이터스트림의 데이터 세그먼트의 어느 하나를 참조하는 데이터 엔트리를 구비하는 데이터스트림 버퍼 목록을 작성하기 위한 수단;헤더 세그먼트 버퍼;헤더 세그먼트 버퍼에 상기 하나의 헤더 세그먼트를 저장하기 위한 수단;데이터 세그먼트 버퍼;데이터 세그먼트 버퍼에 상기 하나의 데이터 세그먼트를 저장하기 위한 수단; 및상기 통신 스택의 제 2 레이어에, 상기 하나의 데이터 세그먼트와, 상기 고유하게 대응하는 하나의 헤더 세그먼트를 인접하지 않도록 전달하기 위한 수단 - 상기 하나의 데이터 세그먼트는, 상기 헤더 세그먼트에 결합된 데이터 세그먼트를 물리적으로 이동하거나 복사하지 않고, 상기 결합된 하나의 헤더 세그먼트와 인접하지 않도록 상기 통신 스택의 제 2 레이어로 전달됨 - 을 포함하는데이터스트림 조립 시스템.
- 제 18 항에 있어서,상기 작성하기 위한 수단이,상기 비인접 데이터스트림의 상기 헤더 세그먼트의 어느 하나를 식별하기 위한 수단;상기 데이터스트림 버퍼 목록에 상기 식별된 하나의 헤더 세그먼트를 참조하기 위한 헤더 포인터를 저장하기 위한 수단;상기 비인접 데이터스트림의 데이터 세그먼트로서 상기 식별된 하나의 헤더 세그먼트에 고유하게 대응하는 데이터 세그먼트를 식별하기 위한 수단; 및상기 데이터스트림 버퍼 목록에 상기 식별된 하나의 데이터 세그먼트를 참조하기 위한 데이터 포인터를 저장하기 위한 수단을 포함하는데이터스트림 조립 시스템.
- 제 18 항에 있어서,상기 인접하지 않도록 전달하기 위한 수단이,상기 하나의 데이터 세그먼트에 대한 통신 스택 내부 버퍼 목록을 작성하기 위한 수단 - 상기 내부 버퍼 목록은 상기 하나의 데이터 세그먼트 및 상기 결합된 하나의 헤더 세그먼트와 고유하게 결합됨 - ;상기 내부 버퍼 목록을 상기 통신 스택의 하나의 레이어로부터 상위 레이어로 전달하기 위한 수단 - 상기 하나의 데이터 세그먼트는, 상기 헤더 세그먼트에 결합된 데이터 세그먼트를 물리적으로 이동하거나 복사하지 않고, 상기 결합된 헤더 세그먼트와 인접하지 않도록 상기 통신 스택의 상위 레이어로 전달됨 - 을 포함하는데이터스트림 조립 시스템.
- 제 20 항에 있어서,상기 통신 스택 내부 버퍼 목록을 작성하기 위한 수단이,상기 하나의 데이터 세그먼트를 대표하는 토큰을 작성하기 위한 수단 - 상기 토큰은 상기 대응 데이터 세그먼트와 고유하게 결합됨 - ;상기 하나의 헤더 세그먼트에 대응하는 상기 하나의 데이터 세그먼트를 고유하게 참조하기 위한 버퍼 목록 헤더 포인터를 작성하기 위한 수단;상기 내부 버퍼 목록에 상기 토큰을 저장하기 위한 수단; 및상기 내부 버퍼 목록에 상기 버퍼 목록 헤더 포인터를 저장하기 위한 수단을 포함하는데이터스트림 조립 시스템.
- 제 18 항에 있어서,상기 통신 스택은, 가상 통신 접근 방식(Virtual Telecommunication Access Method)(VTAM) 시스템에 구현된 통신 스택인데이터스트림 조립 시스템.
- 네트워크 채널을 통해 전송하기 위하여, 다수의 데이터 세그먼트와 다수의 헤더 세그먼트를 데이터스트림으로 조립하기 위한 컴퓨터 프로그램 제품에 있어서 - 상기 데이터 세그먼트의 각각은 상기 헤더 세그먼트의 각각에 고유하게 대응하며, 상기 네트워크 채널은 일반적으로 상기 네트워크 채널을 통해 상기 데이터 세그먼트와 대응 헤더 세그먼트를 효율적으로 전송할 수 있도록 상기 데이터 세그먼트의 각각이 상기 고유하게 대응하는 헤더 세그먼트의 각각과 인접될 것을 요구함 - ,컴퓨터에 의하여 판독 가능한 코드 수단이 구현된 컴퓨터에 의하여 판독 가능한 저장 매체를 포함하며,상기 컴퓨터에 의하여 판독 가능한 코드 수단은,상기 다수의 헤더 세그먼트를 데이터스트림 버퍼의 데이터스트림 헤더 영역으로 복사하기 위한 컴퓨터 명령 수단 - 상기 헤더 세그먼트는 상기 데이터스트림 버퍼의 데이터스트림 헤더 영역에 순차적으로 저장됨 - ;상기 데이터스트림 버퍼의 데이터스트림 헤더 영역에 저장된 상기 헤더 세그먼트의 각각을 그에 대응하는 상기 데이터 세그먼트의 각각에 결합하기 위한 컴퓨터 명령 수단; 및상기 데이터스트림 버퍼의 데이터스트림 헤더 영역의 상기 헤더 세그먼트를 참조하는 엔트리와 상기 데이터 세그먼트를 참조하는 엔트리를 포함하는 데이터스트림 버퍼 목록을 작성하기 위한 컴퓨터 명령 수단을 포함하며,상기 데이터 세그먼트, 상기 데이터스트림 버퍼 목록 및 데이터스트림 헤더 영역을 구비한 상기 데이터스트림 버퍼는 집합적으로, 상기 데이터스트림의 전송시까지 상기 데이터 세그먼트를 물리적으로 이동하거나 복사하지 않고 상기 네트워크 채널을 통해 전송하기 위한 데이터스트림을 형성하는 데에 사용될 수 있으며, 상기 데이터스트림은 데이터스트림 헤더 영역의 헤더 세그먼트가 그 대응하는 데이터스트림 데이터 영역의 데이터 세그먼트로부터 인접하지 않고 데이터스트림에 위치할 수 있도록 데이터스트림 헤더 영역과 데이터스트림 데이터 영역을 구비하고, 상기 데이터스트림은 상기 네트워크 채널상에서의 상기 데이터스트림의 전송시 형성되는데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
- 제 23 항에 있어서,상기 네트워크 채널을 통해 상기 다수의 헤더 세그먼트를 구비한 데이터스트림 헤더 영역을 전송하기 위한 컴퓨터 명령 수단;상기 데이터스트림 버퍼 목록에 의하여 참조되는 상기 다수의 데이터 세그먼트를 획득하기 위한 컴퓨터 명령 수단; 및상기 단계에서 획득한, 상기 데이터스트림 버퍼 목록에 의하여 참조되는 상기 다수의 데이터 세그먼트를 데이터스트림 데이터 영역으로서 상기 네트워크 채널을 통해 전송하기 위한 컴퓨터 명령 수단을 더 포함하며,상기 데이터스트림 헤더 영역의 상기 헤더 세그먼트와 상기 데이터스트림 데이터 영역의 상기 데이터 세그먼트의 조합이 상기 데이터스트림을 형성하며, 상기 데이터스트림 헤더 영역의 상기 헤더 세그먼트가 상기 데이터스트림 데이터 영역의 해당 데이터 세그먼트로부터 상기 데이터스트림에서 인접하지 않도록 위치한데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
- 제 23 항에 있어서,상기 조립은 다수의 레이어를 구비한 통신 스택에서 실시되며, 상기 컴퓨터에 의하여 판독 가능한 코드 수단은, 상기 통신 스택의 상기 다수의 레이어의 한 레이어로부터 상기 데이터 세그먼트와 상기 헤더 세그먼트를 수신하기 위한 컴퓨터 명령 수단을 더 포함하는데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
- 제 23 항에 있어서,상기 데이터스트림 버퍼의 상기 데이터스트림 헤더 영역은 블록 헤더 부분을 구비하며, 상기 컴퓨터에 의하여 판독 가능한 코드 수단은, 상기 블록 헤더 부분에 데이터스트림에 특유한 정보를 저장하기 위한 컴퓨터 명령 수단을 더 포함하는데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
- 제 23 항에 있어서,상기 결합하기 위한 컴퓨터 명령 수단이,상기 데이터스트림의 데이터스트림 헤더 영역의 상기 헤더 세그먼트의 각각과 상기 데이터스트림 데이터 영역의 상기 헤더 세그먼트의 각각에 대응하는 상기 데이터 세그먼트 사이의 변위(displacement)를 판단하기 위한 컴퓨터 명령 수단; 및상기 판단된 변위를, 상기 데이터 세그먼트의 어느 하나에 대응하는 상기 헤더 세그먼트의 어느 하나와 결합하여, 상기 데이터스트림 헤더 영역에 저장하기 위한 컴퓨터 명령 수단을 포함하는데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
- 제 25 항에 있어서,상기 통신 스택은, 가상 통신 접근 방식(Virtual Telecommunication Access Method)(VTAM) 시스템에 구현된 통신 스택인데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
- 다수의 레이어를 구비한 통신 스택에서, 네트워크 채널에서 수신된 비인접 데이터스트림으로부터의 헤더 세그먼트와 대응 데이터 세그먼트를 조립하기 위한 컴퓨터 프로그램 제품에 있어서 - 상기 수신된 비인접 데이터스트림은 다수의 헤더 세그먼트를 구비한 데이터스트림 헤더 영역과 다수의 데이터 세그먼트를 구비한 데이터스트림 데이터 영역을 포함하며, 상기 데이터 세그먼트의 각각은 상기 헤더 세그먼트의 어느 하나에 고유하게 대응하며, 상기 데이터 세그먼트의 각각은 상기 대응하는 헤더 세그먼트와 인접하지 않은 관계로 상기 데이터스트림에 위치함 - ,컴퓨터에 의하여 판독 가능한 코드 수단이 구현된 컴퓨터에 의하여 판독 가능한 저장 매체를 포함하며,상기 컴퓨터에 의하여 판독 가능한 코드 수단은,상기 비인접 데이터스트림의 상기 헤더 세그먼트의 어느 하나를 참조하는 헤더 엔트리와, 상기 헤더 세그먼트의 어느 하나에 고유하게 대응되는 상기 비인접 데이터스트림의 데이터 세그먼트의 어느 하나를 참조하는 데이터 엔트리를 구비하는 데이터스트림 버퍼 목록을 작성하기 위한 컴퓨터 명령 수단;헤더 세그먼트 버퍼에 상기 하나의 헤더 세그먼트를 저장하기 위한 컴퓨터 명령 수단;데이터 세그먼트 버퍼에 상기 하나의 데이터 세그먼트를 저장하기 위한 컴퓨터 명령 수단; 및상기 통신 스택의 제 2 레이어에, 상기 하나의 데이터 세그먼트와, 상기 고유하게 대응하는 하나의 헤더 세그먼트를 인접하지 않도록 전달하기 위한 컴퓨터 명령 수단 - 상기 하나의 데이터 세그먼트는, 상기 헤더 세그먼트에 결합된 데이터 세그먼트를 물리적으로 이동하거나 복사하지 않고, 상기 결합된 하나의 헤더 세그먼트와 인접하지 않도록 상기 통신 스택의 제 2 레이어로 전달됨 - 을 포함하는데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
- 제 29 항에 있어서,상기 작성하기 위한 컴퓨터 명령 수단이,상기 비인접 데이터스트림의 상기 헤더 세그먼트의 어느 하나를 식별하기 위한 컴퓨터 명령 수단;상기 데이터스트림 버퍼 목록에 상기 식별된 하나의 헤더 세그먼트를 참조하기 위한 헤더 포인터를 저장하기 위한 컴퓨터 명령 수단;상기 비인접 데이터스트림의 데이터 세그먼트로서 상기 식별된 하나의 헤더 세그먼트에 고유하게 대응하는 데이터 세그먼트를 식별하기 위한 컴퓨터 명령 수단; 및상기 데이터스트림 버퍼 목록에 상기 식별된 하나의 데이터 세그먼트를 참조하기 위한 데이터 포인터를 저장하기 위한 컴퓨터 명령 수단을 포함하는데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
- 제 29 항에 있어서,상기 인접하지 않도록 전달하기 위한 컴퓨터 명령 수단이,상기 하나의 데이터 세그먼트에 대한 통신 스택 내부 버퍼 목록을 작성하기 위한 컴퓨터 명령 수단 - 상기 내부 버퍼 목록은 상기 하나의 데이터 세그먼트 및 상기 결합된 하나의 헤더 세그먼트와 유일하게 결합됨 - ;상기 내부 버퍼 목록을 상기 통신 스택의 하나의 레이어로부터 상위 레이어로 전달하기 위한 컴퓨터 명령 수단 - 상기 하나의 데이터 세그먼트는, 상기 헤더 세그먼트에 결합된 데이터 세그먼트를 물리적으로 이동하거나 복사하지 않고, 상기 결합된 헤더 세그먼트와 인접하지 않도록 상기 통신 스택의 상위 레이어로 전달됨 - 을 포함하는데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
- 제 31 항에 있어서,상기 통신 스택 내부 버퍼 목록을 작성하기 위한 컴퓨터 명령 수단이,상기 하나의 데이터 세그먼트를 대표하는 토큰을 작성하기 위한 컴퓨터 명령 수단 - 상기 토큰은 상기 대응 데이터 세그먼트와 고유하게 결합됨 - ;상기 하나의 헤더 세그먼트에 대응하는 상기 하나의 데이터 세그먼트를 고유하게 참조하기 위한 버퍼 목록 헤더 포인터를 작성하기 위한 컴퓨터 명령 수단;상기 내부 버퍼 목록에 상기 토큰을 저장하기 위한 컴퓨터 명령 수단; 및상기 내부 버퍼 목록에 상기 버퍼 목록 헤더 포인터를 저장하기 위한 컴퓨터 명령 수단을 포함하는데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
- 제 29 항에 있어서,상기 통신 스택은, 가상 통신 접근 방식(Virtual Telecommunication Access Method)(VTAM) 시스템에 구현된 통신 스택인데이터스트림 조립을 위한 컴퓨터 프로그램 제품.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/802,598 US5983259A (en) | 1997-02-19 | 1997-02-19 | Systems and methods for transmitting and receiving data in connection with a communications stack in a communications system |
US8/802,598 | 1997-02-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980070206A KR19980070206A (ko) | 1998-10-26 |
KR100255503B1 true KR100255503B1 (ko) | 2000-05-01 |
Family
ID=25184175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970072660A KR100255503B1 (ko) | 1997-02-19 | 1997-12-23 | 통신 시스템의 통신 스택에 관련된 데이터를 전송하고 수신하기위한 시스템 및 그 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5983259A (ko) |
JP (1) | JPH10243051A (ko) |
KR (1) | KR100255503B1 (ko) |
CN (1) | CN1089973C (ko) |
CA (1) | CA2227366A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9992702B2 (en) | 2003-05-16 | 2018-06-05 | Sony Corporation | Wireless communication apparatus, a method of wireless communication, and a program for wireless communication |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6278532B1 (en) * | 1996-12-20 | 2001-08-21 | Link2It | Apparatus and method for reception and transmission of information using different protocols |
JP3223355B2 (ja) * | 1998-11-12 | 2001-10-29 | 株式会社エヌ・ティ・ティ・ドコモ | 通信制御方法、通信制御装置、記録媒体およびデータ端末 |
US6324583B1 (en) * | 1998-11-17 | 2001-11-27 | International Business Machines Corp. | Method and apparatus for enabling communication between dissimilar protocol stacks |
US6848003B1 (en) * | 1999-11-09 | 2005-01-25 | International Business Machines Corporation | Multi-node data processing system and communication protocol that route write data utilizing a destination ID obtained from a combined response |
KR100612003B1 (ko) * | 2000-02-26 | 2006-08-11 | 삼성전자주식회사 | 통신망에서 비트 스트림 송수신 장치 및 그 방법 |
US6791994B1 (en) | 2000-04-19 | 2004-09-14 | Rockwell Collins, Inc. | Method and apparatus for assigning receive slots in a dynamic assignment environment |
US6810022B1 (en) | 2000-08-29 | 2004-10-26 | Rockwell Collins | Full duplex communication slot assignment |
US6885651B1 (en) | 2000-08-29 | 2005-04-26 | Rockwell Collins | Maintaining an adaptive broadcast channel using both transmitter directed and receiver directed broadcasts |
US6781967B1 (en) | 2000-08-29 | 2004-08-24 | Rockwell Collins, Inc. | Scheduling techniques for receiver directed broadcast applications |
US20020078246A1 (en) * | 2000-12-19 | 2002-06-20 | Ing-Simmons Nicholas K. | Method and system for network protocol processing |
EP1379933A4 (en) * | 2001-02-24 | 2007-10-17 | Ibm | STORAGE SYSTEM ACCESS WITH LOW LATENCY |
US7325026B1 (en) | 2001-11-12 | 2008-01-29 | Compuware Corporation | Network communications analysis |
US20030161265A1 (en) * | 2002-02-25 | 2003-08-28 | Jingjun Cao | System for end user monitoring of network service conditions across heterogeneous networks |
US7185060B2 (en) * | 2003-03-26 | 2007-02-27 | Microsoft Corporation | Message processing pipeline for streams |
US6877730B2 (en) * | 2003-05-29 | 2005-04-12 | Btm Corporation | Powered clamp |
US7529895B2 (en) | 2003-08-22 | 2009-05-05 | International Business Machines Corporation | Method for prefetching non-contiguous data structures |
US7385999B1 (en) | 2003-10-20 | 2008-06-10 | Rockwell Collins, Inc. | Heuristics for combining inter-channel and intra-channel communications in a wireless communications environment |
US7249227B1 (en) * | 2003-12-29 | 2007-07-24 | Network Appliance, Inc. | System and method for zero copy block protocol write operations |
US7403780B2 (en) | 2004-02-19 | 2008-07-22 | Rockwell Collins, Inc. | Hybrid open/closed loop filtering for link quality estimation |
US7826372B1 (en) | 2004-03-26 | 2010-11-02 | Rockwell Collins, Inc. | Network routing process for regulating traffic through advantaged and disadvantaged nodes |
US7382799B1 (en) | 2004-05-18 | 2008-06-03 | Rockwell Collins, Inc. | On-demand broadcast protocol |
US7310380B1 (en) | 2004-05-28 | 2007-12-18 | Rockwell Collins, Inc. | Generic transmission parameter configuration |
US7397810B1 (en) | 2004-06-14 | 2008-07-08 | Rockwell Collins, Inc. | Artery nodes |
US7606171B1 (en) | 2005-07-28 | 2009-10-20 | Rockwell Collins, Inc. | Skeletal node rules for connected dominating set in ad-hoc networks |
JP5768683B2 (ja) * | 2011-11-28 | 2015-08-26 | 富士通株式会社 | 受信データ処理方法、通信装置、及びプログラム |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4228496A (en) * | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
SE448919B (sv) * | 1983-03-04 | 1987-03-23 | Ibm Svenska Ab | Metod for att overfora informationsenheter i ett datornetsystem, samt datornetsystem for genomforande av metoden |
US4926322A (en) * | 1987-08-03 | 1990-05-15 | Compag Computer Corporation | Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management |
US5055999A (en) * | 1987-12-22 | 1991-10-08 | Kendall Square Research Corporation | Multiprocessor digital data processing system |
US5027269A (en) * | 1989-04-27 | 1991-06-25 | International Business Machines Corporation | Method and apparatus for providing continuous availability of applications in a computer network |
US5269013A (en) * | 1991-03-20 | 1993-12-07 | Digital Equipment Corporation | Adaptive memory management method for coupled memory multiprocessor systems |
US5386536A (en) * | 1991-03-28 | 1995-01-31 | Courts; Howard R. | Apparatus and method for managing memory allocation |
US5278834A (en) * | 1992-05-26 | 1994-01-11 | Alcatel Network Systems, Inc. | Method for implementing a data communication protocol stack |
US5396614A (en) * | 1992-06-25 | 1995-03-07 | Sun Microsystems, Inc. | Method and apparatus for a secure protocol for virtual memory managers that use memory objects |
-
1997
- 1997-02-19 US US08/802,598 patent/US5983259A/en not_active Expired - Lifetime
- 1997-12-23 KR KR1019970072660A patent/KR100255503B1/ko not_active IP Right Cessation
-
1998
- 1998-01-16 CA CA002227366A patent/CA2227366A1/en not_active Abandoned
- 1998-01-19 CN CN98104273A patent/CN1089973C/zh not_active Expired - Lifetime
- 1998-02-09 JP JP10027638A patent/JPH10243051A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9992702B2 (en) | 2003-05-16 | 2018-06-05 | Sony Corporation | Wireless communication apparatus, a method of wireless communication, and a program for wireless communication |
US10582416B2 (en) | 2003-05-16 | 2020-03-03 | Sony Corporation | Wireless communication apparatus, a method of wireless communication, and a program for wireless communication |
Also Published As
Publication number | Publication date |
---|---|
KR19980070206A (ko) | 1998-10-26 |
US5983259A (en) | 1999-11-09 |
CN1195937A (zh) | 1998-10-14 |
CA2227366A1 (en) | 1998-08-19 |
CN1089973C (zh) | 2002-08-28 |
JPH10243051A (ja) | 1998-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100255503B1 (ko) | 통신 시스템의 통신 스택에 관련된 데이터를 전송하고 수신하기위한 시스템 및 그 방법 | |
US5920703A (en) | Systems and methods for managing the processing of relatively large data objects in a communications stack | |
KR100241218B1 (ko) | 통신 시스템내에서 상대적으로 대규모인 데이터 객체의 전송을 제어하기 위한 시스템 및 그 방법 | |
US6877048B2 (en) | Dynamic memory allocation between inbound and outbound buffers in a protocol handler | |
EP0993635B1 (en) | Method and apparatus for dynamic queue sizing | |
US6922408B2 (en) | Packet communication buffering with dynamic flow control | |
US5619650A (en) | Network processor for transforming a message transported from an I/O channel to a network by adding a message identifier and then converting the message | |
US5253342A (en) | Intermachine communication services | |
US6628615B1 (en) | Two level virtual channels | |
USRE37494E1 (en) | Transfer of messages in a multiplexed system | |
US7136355B2 (en) | Transmission components for processing VLAN tag and priority packets supported by using single chip's buffer structure | |
US20040030712A1 (en) | Efficient routing of packet data in a scalable processing resource | |
US9274586B2 (en) | Intelligent memory interface | |
US7532644B1 (en) | Method and system for associating multiple payload buffers with multidata message | |
KR102112270B1 (ko) | 다중계층 네트워크 환경에서 패킷을 처리하는 방법 및 그 장치 | |
US7330484B2 (en) | Method and system for transmitting packet chains | |
CN111083064A (zh) | 在多层网络环境中处理信息包的方法以及其装置 | |
US20030081597A1 (en) | Dynamic buffering in packet systems | |
Roehr | SNA Enhancements for Distributed Data Processing | |
Hidell et al. | The DTM Host/Network Interface—Hardware Overview, Software Design and Protocol Layering |
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: 20130124 Year of fee payment: 14 |
|
FPAY | Annual fee payment |
Payment date: 20140124 Year of fee payment: 15 |
|
FPAY | Annual fee payment |
Payment date: 20150127 Year of fee payment: 16 |
|
FPAY | Annual fee payment |
Payment date: 20160128 Year of fee payment: 17 |
|
FPAY | Annual fee payment |
Payment date: 20170125 Year of fee payment: 18 |
|
EXPY | Expiration of term |