[go: up one dir, main page]

KR101365838B1 - 개선된 분산형 커널 운영 시스템 - Google Patents

개선된 분산형 커널 운영 시스템 Download PDF

Info

Publication number
KR101365838B1
KR101365838B1 KR1020060049352A KR20060049352A KR101365838B1 KR 101365838 B1 KR101365838 B1 KR 101365838B1 KR 1020060049352 A KR1020060049352 A KR 1020060049352A KR 20060049352 A KR20060049352 A KR 20060049352A KR 101365838 B1 KR101365838 B1 KR 101365838B1
Authority
KR
South Korea
Prior art keywords
node
local
remote
connection
operable
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020060049352A
Other languages
English (en)
Other versions
KR20060126374A (ko
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 KR20060126374A publication Critical patent/KR20060126374A/ko
Application granted granted Critical
Publication of KR101365838B1 publication Critical patent/KR101365838B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

컴퓨터 시스템의 네트워크에 걸친 개선된 분산형 운영 시스템이 개시된다. 기존의 분산형 운영 시스템은 (1) 일시적인 통신 장애 및 신속한 노드 리부트를 신뢰할 수 있게 다루지 못하며, (2) 링크 신뢰성에 적합한 전송 프로토콜을 제공하지 못하며, (3) 임의 조합의 매체에 걸쳐 전송이 이루어지도록 할 수 없으므로 인해, 전송 성능이 제한되는 단점을 갖고 있다. 본 명세서에 개시된 시스템 및 방법은, 고성능 메시지 전송 및 멀티-인터페이스 관리 및 지원을 제공하는 신뢰성 있는 노드-노드 세션 프로토콜을 제공함으로써 상기 문제를 해결한다. 이는, 노드 사이에서 복수의 인터페이스를 동적으로 활용할 수 있는 단일 연결을 통해 상기 운영 시스템의 두 노드 사이에서 모든 데이터를 전송함으로써 이루어진다.

Description

개선된 분산형 커널 운영 시스템{IMPROVED DISTRIBUTED KERNEL OPERATING SYSTEM}
도 1은 분산형 운영 시스템을 구현하기 위한 예시적인 물리적 레이아웃을 보여주는 도면이다.
도 2는 분산형 운영 시스템을 위한 예시적인 메시지 블로킹 방식을 보여주는 도면이다.
도 3은 분산형 운영 시스템에서 노드-대-노드 통신을 관리하는 방법의 예시를 보여주는 도면이다.
도 4는 분산형 운영 시스템에서 노드-대-노드 통신을 위해 이용되는 네트워크 매니저의 예시적인 논리 아키텍처를 보여주는 도면이다.
도 5는 분산형 운영 시스템의 노드 간의 노드-대-노드 커넥션을 설정하는 방법의 예시를 보여준다.
도 6은 분산형 운영 시스템에서 다중 네트워크 인터페이스를 통한 전송을 관리하는 방법의 예를 보여주는 도면이다.
도 7은 분산형 운영 시스템에서 로컬 노드로부터 데이터를 전송하기 위한 예시적인 방법을 보여준다.
도 8은 분산형 운영 시스템에서 원격 노드에서 데이터를 수신하기 위한 예시 적인 방법을 보여준다.
본 발명은 일반적으로 컴퓨터 시스템의 네트워크에 관한 것이며, 보다 구체적으로는 컴퓨터 시스템의 네트워크에 걸친 분산형 운영 시스템에 관한 것이다.
운영 시스템(OS)은 컴퓨터 리소스의 제어 및 관리를 담당하는 시스템 소프트웨어이다. 통상적인 OS는 애플리케이션 소프트웨어와 컴퓨터의 하드웨어 사이의 통신을 가능하게 한다. OS는 디스크 액세스, 메모리 관리, 작업 스케쥴링 및 사용자 인터페이싱과 같이, 애플리케이션이 컴퓨터의 하드웨어 및 기본 시스템 작업을 액세스하도록 해준다. 또한, OS는 네트워크 연결을 담당한다.
컴퓨터 네트워킹은 몇몇의 상호 연결된 컴퓨터들 사이에 파일 및 주변 장치를 공유하기 위한 메커니즘을 제공한다. 이상적으로는, 컴퓨터 네트워크는 모든 컴퓨터와 애플리케이션이 네트워크의 모든 리소스에 액세스할 수 있도록 하여, 그 총체적 리소스를 최적화할 수 있어야 한다. 이러한 결과를 얻기 위하여, 분산형 운영 시스템(distributed operating system)이 개발되었다. 그러나, 통상적인 분산형 OS는 여러 가지 한계를 갖고 있다. 첫째, 분산형 OS는 로컬 환경을 위한 계층 및 네트워크 환경을 위한 별도 계층의 다계층 시스템일 수 있다. 이 결과 개발자와 사용자가 익혀야 하는 두 가지의 상이한 운영 시스템이 야기된다. 또한, 로컬 계층 및 네트워크 계층과의 인터페이스가 현저히 상이하기 때문에, 애플리케이 션 프로그램은 한 계층 또는 다른 계층에서 동작하도록 기록될 수 있으나, 두 계층 모두에서 작동하도록 기록될 수는 없다. 즉, 애플리케이션 프로그램의 네트워크 버전은 개별 컴퓨터에서는 실행되지 않을 수도 있으며, 자립형(stand-alone) 버전은 네트워크에서 실행되지 않을 수도 있다.
또한, 네트워크 소프트웨어는 클라이언트 컴퓨터와 서버를 상이한 장치로서 다룬다. 만일 사용자가 중앙 컴퓨터가 수 많은 원격 컴퓨터에 파일을 제공하도록 하기 원하면, 중앙 컴퓨터는 서버로서, 그리고 원격 컴퓨터는 클라이언트로서 지정되어야 한다. 이것은 네트워크의 융통성을 제한할 수 있는데, 왜냐하면 서버 컴퓨터와 클라이언트 컴퓨터가 운영 시스템에 의해 상이한 능력을 부여받기 때문이다. 예를 들어, 한 컴퓨터가 서버로 지정되고 다른 컴퓨터가 클라이언트로 지정되어야 하기 때문에, 두 컴퓨터가 서로 파일을 공유하는 것이 불가능할 수도 있다. 일반적으로, 서버는 클라이언트에 저장된 파일을 액세스할 수 없다.
컴퓨터 네트워크 시스템은 특정 세트의 리소스와 컨피규레이션을 다루도록 설계되고 최적화되었다. 예를 들어, 메인 프레임 컴퓨터 시스템은 대용량 메모리 저장 영역 및 프린터 세트를 갖춘 메인 프레임 컴퓨터를 포함할 수도 있다. 보다 작은 단말기 또는 컴퓨터는 상기 메인 프레임 컴퓨터를 네트워크 및 소프트웨어에 특정한 방식으로 클라이언트로서 액세스할 수 있다. 이러한 컴퓨터 시스템은 인터넷과 같은 통신 발전 산물을 이용할 융통성을 갖고 있지 않을 수 있다.
이러한 문제점들을 극복하기 위해 메시지 전달 분산형 운영 시스템이 개발되었다. 예시적인 메시지 전달 운영 시스템이 van der Veen 등에게 허여된 미국 특 허 번호 제6,697,876호("van der Veen 등")에 개시되어 있으며, 그 개시 내용은 참고로 본 명세서에 합체된다. van der Veen 등은 인터넷 통신 링크를 포함하는 융통성 있는 네트워크 환경 및 자립형 컴퓨터에 적용될 수 있는 단일 레벨 아키텍처를 갖는 분산형 운영 시스템을 개시하고 있다. 이것은 메시지 전달 운영 시스템을 사용함으로써, 그리고 오프-노드(off-node) 메시지를 보내고 받을 수 있는 네트워크 매니저에게 오프-노드 메시지를 보냄으로써 이루어진다.
또한, 이들 시스템에서 프로세스간 제어(IPC)는 신뢰성이 있어야 한다. 불행히도, 일부 종래의 분산형 운영 시스템은 (1) 일시적인 통신 장애 및 신속한 노드 리부트를 신뢰할 수 있게 다루지 못하며, (2) 링크 신뢰성에 적합한 전송 프로토콜을 제공하지 못하며, (3) 임의 조합의 매체에 걸쳐 전송이 이루어지도록 할 수 없으므로 인해, 전송 성능이 제한되는 단점을 갖고 있다. 노드는 종종 인터넷과 같은 제3의 통신 네트워크를 통해 연결될 수 있으므로, 노드 사이의 물리적 통신 라인의 일체성을 보장하지 못할 수 있다. 일시적인 통신 장애는 클라이언트 프로세스를 중단시켜 리소스를 낭비하고 시스템의 전체 성능을 방해할 수 있다.
따라서, 일시적인 통신 장애 및 신속한 노드 리부트 중에 프로세싱의 신뢰성을 개선할 수 있고, 링크 융통성에 적합하며 및/또는 매체 선택을 추출하여 임의 조합의 통신 링크를 통해 다양한 정책이 구현되도록 할 수 있는 적응 프로토콜을 통한 데이터 전송 성능을 개선할 수 있는, 분산형 메시지 전달 운영 시스템의 노드 사이의 통신을 관리하기 위한 신뢰성 있는 방법이 요구된다.
(1) 일시적인 통신 장애 및 신속한 노드 리부트를 신뢰할 수 있게 다루지 못하며, (2) 링크 신뢰성에 적합한 전송 프로토콜을 제공하지 못하며, (3) 임의 조합의 매체를 통해 전송이 이루어지도록 할 수 없으므로 인한 전송 성능 제한을 극복하기 위하여 분산형 운영 시스템에서 통신을 관리하는 방법이 개시된다. 본 명세서에서 개시된 시스템과 방법은 고성능 메시지 전달 및 멀티-인터페이스 관리 및 지원을 제공하는 신뢰성 있는 노드-대-노드 세션 프로토콜을 제공한다. 이것은 노드 사이의 다수의 인터페이스를 동적으로 이용할 수 있는 단일 커넥션을 통해 운영 시스템의 두 노드 사이에서 모든 데이터를 전송함으로써 이루어진다. 다양한 매체 선택 정책 또한 사용자가 특정 데이터 전송을 위한 인터페이스를 특정할 수 있도록 구현될 수 있다.
본 발명의 다른 시스템, 방법, 특징 및 효과는 이하의 도면 및 상세한 설명의 검토를 통해 당업자에게 명백하거나 명백해질 것이다. 이러한 모든 추가의 시스템, 방법, 특징 및 효과는 본 설명 내에 포함되고, 본 발명의 범위 내이며, 후술하는 특허청구범위에 의해 보호되도록 하기 위한 것이다.
본 발명은 이하의 도면 및 설명을 참고하여 더 잘 이해될 수 있다. 도면의 요소는 반드시 비례하여 나타낸 것은 아니며, 대신 본 발명의 원리를 설명할 때 강조하여 표시하였다. 또한, 도면에서, 동일한 도면 부호는 상이한 도면 전체에 걸쳐 대응 부분을 나타낸다.
바람직한 구체예의 상세한 설명
분산형 운영 시스템을 구현하기 위한 예시적인 물리적 레이아웃이 도 1에 도시되어 있다. 상기 레이아웃은 통신 네트워크(140)를 매개로 상호 연결된 로컬 컴퓨터 시스템(110) 및 원격 컴퓨터 시스템(112)을 포함한다. 로컬 컴퓨터 시스템(110) 및 원격 컴퓨터 시스템(112)은 일정 품질을 갖는 것으로 설명하지만, 시스템의 물리적 구조 및 전자 구성 요소는 본 발명을 설명하기 위한 예로서만 제시된다. 유사하게, 두 컴퓨터 시스템(110, 112) 사이에서 메시지 전달을 가능하게 하는 통신 네트워크(140) 역시 많은 물리적 형태 및 다양한 통신 프로토콜을 취할 수 있다. 두 컴퓨터 시스템 (110, 112) 사이에서 전달되는 데이터가 메시지이므로, 이것은 통신하기 위해 이용되는 매체와 독립적이다. 따라서, 통신 네트워크의 종류는 본 발명과 거의 관계가 없다.
도 1의 로컬 컴퓨터 시스템(110)은 애플리케이션 프로그램을 실행할 수 있는 로컬 클라이언트 프로세서(160)를 포함한다. 로컬 클라이언트 프로세서(160)는 로컬 영역 네트워크를 매개로 그 로컬 영역 내의 다른 장치와 통신할 수 있으며, 이는 공지의 방식으로 구현될 수 있다. 이들 로컬 장치는 로컬 메시지 전달 운영 시스템(118), 하나 이상의 로컬 서버(120, 122) 및 로컬 네트워크 매니저(124)를 포함할 수 있다.
로컬 메시지 전달 운영 시스템(118) 및 로컬 네트워크 매니저(124)는 RAM(random access memory), ROM(read only memory), 광학 디스크(CD-ROM) 또는 자기 저장 매체(하드 드라이브 또는 휴대용 디스켓)와 같은 컴퓨터 판독 가능한 매체 상에서 실행 가능한 형태로 저장되는 소프트웨어 프로그램일 수 있다. 로컬 운영 시스템(118) 및 로컬 네트워크 매니저(124)는 또한 하드웨어 또는 공지의 다른 수단에 의해 실행될 수도 있다.
로컬 메시지 전달 운영 시스템(118)은 로컬 프로세서(160, 120, 122) 각각에 액세스할 수 있다. 프로세스간 제어의 수단으로서 메시지 전달 외에, 운영 시스템은 일반적으로 데이터 입출력 및 타이밍 서비스와 같은 기능을 제공하며, 이는 유사한 메모리 매체에 저장된 외부 서브루틴을 통해 제공될 수도 있다. 메시지 전달 운영 시스템은 통신 채널 및 그들 사이의 커넥션을 셋업함으로써 프로세서(160, 120, 122) 각각과 로컬 네트워크 매니저(124) 사이의 통신을 조종한다.
원격 컴퓨터 시스템(112)은 메시지 전달 운영 시스템 커널(126), 원격 서버(128) 및 원격 네트워크 매니저(130)를 비롯하여, 유사한 구조를 갖고 있다. 이러한 구조에서, 메시지 전달 운영 시스템 커널(126)은 원격 서버(128)와 원격 네트워크 매니저(130) 사이의 통신을 다루고, 원격 네트워크 매니저(130)는 통신 네트워크(140)를 통해 로컬 네트워크 매니저(124)와 통신할 수 있다. 이 원격 네트워크(112)의 구성 요소들은 로컬 네트워크(110) 내의 대응 구성 요소와 유사한 특징을 갖고 있다.
로컬 네트워크(110)와 유사하게, 원격 네트워크(112)의 구조는 본 발명을 설명하기 위한 예시일 뿐이다. 명백하게, 당업자에게 공지된 수 없이 많은 구조가 형성될 수 있다. 스펙트럼의 한 끝에서, 네트워크는 서로 통신할 수 있도록 상호 연결된, 하나의 서킷 보드 상에 두 프로세서를 포함할 수 있다. 또는, 네트워크는 다양한 종류의 통신 링크를 통해 상호 연결된, 전세계에 걸쳐 위치한 수천 개의 프로세서를 포함할 수도 있다. "원격"이라는 용어는 떨어져 있다는 것을 의미하기 위해 사용되며, 임의의 공간적 또는 거리 정보를 주기 위한 것이 아니다.
분산형 운영 시스템은 로컬 클라이언트 프로세서(160)로부터 원격 서버(130)로의 메시지 전달을 두 단계로 다룬다. 클라이언트측(110)은 본질적으로 로컬 네트워크 매니저(124)를 로컬 클라이언트 프로세서(160)에의 인공 서버로서 취급한다. 유사하게, 원격 네트워크 매니저(130)는 원격 서버(128)에 전달되는 가상 메시지를 생성하며, 원격 네트워크 매니저(130)는 원격 서버(128)에 대해 클라이언트처럼 행동한다.
로컬 및 원격 운영 시스템(118, 126)은 당업계에서 메시지 전달 운영 시스템으로 알려져 있다. 예를 들어, 메시지 전달은 전체 시스템에 걸쳐 프로세스간 제어(IPC)를 제공할 수도 있다. 일반적으로, 메시지는 메시지의 내용에 첨부된 특별한 의미 없이 한 프로세스로부터 다른 프로세스로 전달되는 바이트의 패킷이다. 메시지 내의 데이터는 메시지의 송신자 및 그 수신자만을 위해 의미를 갖고 있다.
메시지 전달은 프로세스가 데이터를 서로에게 전달하도록 할 뿐만 아니라, 몇몇 프로세스의 실행을 동기화하는 수단을 제공한다. 프로세스가 메시지를 보내고, 받고, 응답함에 따라, 프로세스는 그들이 언제 그리고 얼마 동안 동작할지에 영향을 주는 다양한 "상태의 변화"를 겪는다. 그들의 상태와 우선 순위를 알면, 운영 시스템(118, 26)은 이용 가능한 프로세서 리소스를 최적화하기 위하여 가능한 효율적으로 모든 프로세스를 스케쥴할 수 있다.
클라이언트측인 컴퓨터 시스템(110)에서, 로컬 클라이언트(160)에서 구동되는 애플리케이션은 원격 서버(128)의 오프-노드 어드레스를 알고 있다. 로컬 커널 운영 시스템(118)은 메시지가 노드 식별을 위한 대응 로컬 매핑을 갖고 있지 않을 때 임의의 메시지를 오프-노드 메시지로서 인식할 수 있다. 운영 시스템(118)은 미인식 메시지를 오프-노드인 것으로 간주할 수도 있으며, 그러한 메시지를 당업계에 공지된 스레드(thread) 및 프로세스를 포함하여 동작하는 로컬 네트워크 매니저(124)에의 로컬 클라이언트(160)의 커넥션에 보낼 수도 있다. 스레드는 그룹으로서 스케쥴되고 실행되는 프로그래밍 단계들의 임의 크기의 집합이다. 한편, 프로세스는 스레드를 위한 "컨테이너"로 생각될 수 있으며, 스레드가 실행될 어드레스 공간을 규정한다. 프로세스는 적어도 하나의 스레드를 담고 있다.
메시지 전달은 스레드에서 스레드로 직접 타겟화되기 보다는, 채널(164)과 커넥션을 향해 보내진다. 메시지를 받고자 하는 스레드는 먼저 채널(164)을 생성하고, 그 스레드에 메시지를 보내고자 하는 다른 스레드는 먼저 상기 채널에 "부착"함으로써 상기 채널(164)에의 커넥션을 만들어야 한다. 로컬 클라이언트 프로세서(160)와 로컬 네트워크 매니저(124) 사이에서 메시지 전송을 구현하기 위한 다양한 수단이 당업자에게 공지되어 있으며, 본 발명은 본 명세서에 개시된 채널 및 커넥션을 통한 전송에 제한되지 않는다.
채널(164)은 메시지 커널 호출에 의해 구현되며 메시지를 받기 위해 서버에 의해 이용된다. 클라이언트 스레드에 의해 생성된 커넥션은 서버에 의해 이용가능해진 채널에 "연결"된다. 일단 커넥션이 설정되면, 클라이언트는 그 커넥션을 통 해 메시지를 보낼 수 있다. 만일 프로세스 내의 많은 스레드가 동일한 채널(164)에 부착하면, 하나의 커넥션이 스레드 사이에 공유될 수 있다. 채널(164) 및 커넥션은 작은 정수 식별자에 의해 프로세스 내에서 명명될 수 있다. 클라이언트 커넥션은 직접 파일 디스크립터(file descriptor) 내로 매핑될 수 있다.
채널(164)은 이와 관련된 세 개의 대기열(queue), 즉 메시지를 기다리는 스레드를 위한 대기열, 아직 수신되지 않은 메시지를 보낸 스레드를 위한 대기열 및 수신되었으나 아직 응답되지 않은 메시지를 보낸 스레드를 위한 대기열을 가질 수 있다. 이들 대기열 중 어느 것에 있는 동안, 상기 대기 스레드는 블로킹된다. 다른 용례에서, 채널(164)은 다른 방식으로 배열될 수 있다.
이 메시지 블로킹(blocking)은 일반적으로 도 2의 상태도를 따른다. 도 2에서, 진하게 표시한 함수(function) 또는 메시지는 첫번째 스레드에서 생겨나며 이탤릭체의 함수 또는 메시지는 타겟 스레드에서 생겨난다. 또한, 프로세스는 만일 프로세스가 메시지 프로토콜의 일부분이 종료되기를 기다려야 하기 때문에 계속 실행되는 것이 허용되지 않는다면 블로킹된다고 말한다. UNIX용 특정 휴대용 운영 시스템 인터페이스(POSIX) 함수 호출을 참조하지만, 이것은 어떤 방식으로든 특허청구범위를 제한하지 않는다. 스레드는 MsgSendv() 함수를 호출함으로써, 그리고 타겟 스레드가 MsgReceive() 함수를 이용하여 메시지를 역 전송할 때까지 준비 상태(Ready State)(250)로부터 송신 차단 상태(Send Blocked State)(252)로 이동함으로써 타겟 스레드에 메시지를 전송할 수 있다. 이는 발신 스레드를 응답 차단 상태(Reply Blocked State)(254)에 둔다. 타겟 스레드가 메시지를 처리하였으면, 타 겟 스레드는 MsgReplyv() 함수를 이용하여 응답 메시지를 발신 스레드로 전송하며, 준비 상태(250)로 복귀한다. 스레드가 이전에 보낸 펜딩 중의 메시지 없이 MsgReceivev() 함수 호출을 실행하면, 타겟 스레드가 MsgSendv() 함수를 호출하여 메시지를 발신 스레드로 전송할 때까지, 그 스레드는 수신 차단 상태(256)가 될 것이다. 이러한 블로킹은 스레드의 동기화된 실행을 유지한다.
이 블로킹 방식이 프로세싱 동기화를 보장하기는 하지만, 원격 네트워크 매니저(130)가 로컬 네트워크 매니저(124)에게 응답을 전송하려고 시도하는 동안 통신 네트워크(140)에서 일시적 장애가 있다면 문제가 발생할 수도 있다. 만일 사고 상태(outage)가 충분한 기간 동안 지속되면, 전송 계층(transport layer)은 결국에는 그러한 응답 전송 시도를 중단할 것이다. 원격 네트워크 매니저(130)는 응답이 전달되지 못했다는 것을 로컬 네트워크 매니저(124)에 통신할 수 없으므로, 로컬 클라이언트(160)는 계속 응답-차단 상태로 남아 있을 것이다. 응답-블로킹 문제는 원인이 되는 통신 에러에 관계없이 발생할 수 있다는 점에 유의하여야 한다. 예를 들어, 통신 사고 상태는 서버 노드의 신속한 리부트, 버퍼 오버런(overrun), 네트워크와의 물리적 연결 해제 등에 의해 야기될 수도 있다.
도 3의 흐름도는 이러한 문제를 해결하는 방법을 개시한다. 단계(310)에서, 로컬 노드에서의 프로세서가 원격 노드 수신지를 갖고 있는 메시지를 생성할 수도 있으며, 이 메시지는 로컬 네트워크 매니저(124)로 포워딩될 수 있다. 이에 응답하여, 로컬 네트워크 매니저(124)는 단계(320)에서, 원격 노드에 대하여 노드-대-노드 커넥션이 존재하는지 여부를 결정할 수 있다. 커넥션이 존재하지 않으면, 로 컬 네트워크 매니저(124)는 단계(330)에서 원격 노드에의 커넥션을 생성할 수 있다. 로컬 노드와 원격 노드 사이에 커넥션이 존재하면, 로컬 네트워크 매니저(124)는 단계(340)에서 커넥션이 유효한지 여부를 결정할 수 있다. 만일 커넥션이 더 이상 유효하지 않으면, 로컬 네트워크 매니저(124)는 단계(350)에서 무효한 커넥션을 파괴하고, 단계(330)에서 새로운 커넥션을 생성할 수도 있다. 일단 유효 커넥션이 로컬 노드와 원격 노드 사이에 존재하는 것으로 결정되면, 또는 새로운 커넥션이 생성되면, 로컬 네트워크 매니저(124)는 단계(360)에서 하나 이상의 인터페이스를 통해 원격 네트워크 매니저(130)로 메시지를 전송할 수 있다.
"전송"이라는 용어는 한 장치에서 다른 장치로의 메시지의 이전을 설명하기 위해 사용되었다. 이 용어는 일반적으로 그리고 메시지 타입 "송신" 및 "수신" 과의 혼동을 막기 위해 이용된다. 또한, 전술한 바와 같이, 로컬 및 원격 네트워크 매니저(124, 130) 사이의 통신 네트워크(140)는 단지 메시지 만이 통신되어야 하므로, 공지의 많은 형태를 취할 수 있다. 예를 들어, 360에서의 전송은 TCP/IP 프로토콜 네트워크를 이용하여 구현될 수 있다.
도 3에 윤곽을 그린 방법을 구현하기 위하여, 로컬 네트워크 매니저(124)는 도 4에 나타난 대로 로컬 커널 인터페이스 계층(410), 로컬 매체 선택 계층(420), 및 로컬 전송 계층(430)을 포함할 수 있다. 로컬 커널 인터페이스 계층(410)은 메시지 전달 운영 시스템(118) 커널과의 상호작용을 담당할 수도 있다. 로컬 전송 계층(430)은 로컬 컴퓨터 시스템(110)을 위한 각 네트워크 인터페이스에 대하여 인스턴스(432)와 인스턴스(434)를 포함할 수도 있다. 각 인스턴스는 그 관련된 인터 페이스를 통하여 데이터를 전송하는 것을 담당할 수도 있다. 로컬 매체 선택 계층(420)은 노드-대-노드 커넥션을 관리하고 전송 계층 인스턴스(432, 434)를 통한 메시지 전송을 관리하는 것을 담당할 수도 있다.
원격 네트워크 매니저(130)는 원격 커널 인터페이스 계층(440), 원격 매체 선택 계층(450), 및 각 네트워크 인터페이스를 위한 인스턴스(462)와 인스턴스(464)를 포함할 수 있는 원격 전송 계층(460)을 포함하는 유사한 구조를 가질 수 있다. 이들 원격 계층(440, 450, 460)은 로컬 컴퓨터 시스템(110)의 대응 로컬 계층(410, 420, 430)처럼 원격 컴퓨터 시스템(112)에서 대응 기능을 수행할 수 있다. 본 명세서에서 설명한 기능성(functionality)은 로컬 네트워크 매니저(124)와 원격 네트워크 매니저(130)의 특정 계층에 대응하는 것으로 설명하였지만, 이들 기능성은 공지의 기술을 이용하여 거의 무한한 수로 제공될 수도 있다.
전술한 바와 같이, 처음에는 로컬 노드는 원격 노드로의 전송 요구를 생성할 수 있다. 이 전송 요구는 임의 길이의 바이트들의 어레이로서 처리될 수 있으며, 상기 원격 노드에 대응하는 노드 디스크립터를 포함할 수도 있다. 전송 요구는 로컬 네트워크 매니저(124)에 의해, 예를 들어, 로컬 커널 인터페이스 계층(410)에 의해 수신될 수 있다. 다음에, 로컬 커널 인터페이스 계층(410)은 상기 요구를 로컬 매체 선택 계층(420)에 전달할 수 있으며 이 선택 계층은 노드-대-노드 커넥션이 원격 노드에 대해 존재하는지를 결정하고 아무것도 존재하지 않으면 새로운 노드-대-노드 커넥션을 생성할 수 있다. 로컬 매체 선택 계층(420)은 시스템의 각 원격 노드에 대한 전송 커넥션 구조를 유지할 수 있다. 상기 전송 커넥션 구조는 로컬 노드와 원격 노드 사이의 커넥션에 대한 상태 정보 등을 제어하는 데에 사용될 수 있으며, 로컬 매체 선택 계층(420) 내부에 저장될 수도 있다. 상기 전송 커넥션 구조는, 로컬 매체 선택 계층(420)이 전송 커넥션 구조가 상기 요구에서 참고된 원격 노드에 대해 존재하는지 여부를 신속히 결정할 수 있도록 노드 디스크립터에 의해 색인되는 링크 리스트에 유지될 수 있다. 다르게는, 해시되고 링크된 리스트(hashed linked list) 등과 같은 다른 데이터 구조를 이용하여 상기 전송 커넥션 구조를 유지할 수도 있다.
전송 커넥션 구조는 커넥션 상태, 한 쌍의 노드 디스크립터, 한 쌍의 커넥션 식별자, 헤드 포인터 및 테일 포인터에 대응하는 구성 요소를 포함할 수 있다. 다른 구성 요소가 추가 또는 대체될 수도 있다. 커넥션 상태 구성 요소는 커넥션의 상태를 규정하는 데이터 구조를 포함할 수 있다. 예를 들어, 커넥션은 이하에서 보다 상세히 설명하는, 노드-대-노드 커넥션을 설정하기 위해 이용되는 패킷에 대응하는 복수의 상태 중 하나를 가질 수도 있다. 상기 한 쌍의 노드 디스크립터는 로컬 노드 및 원격 노드에 대한 노드 디스크립터에 대응할 수 있다. 예를 들어, 이 한 쌍의 노드 디스크립터는 원격 노드에 대한 로컬 노드의 노드 디스크립터 및 로컬 노드에 대한 원격 노드의 노드 디스크립터를 포함할 수도 있다. 전송 커넥션 구조의 예시적인 데이터 필드를 표 1에 나타내었다.
예시적인 전송 커넥션 구조 데이터 필드
struct tx_conn *next 링크된 리스트 내의 다음 구조에 대한 포인터
struct tx_status status_ 원격 노드와의 커넥션 설정 프로세스의 상태
unsigned short my_nd_4_rem 원격 노드에 대한 로컬 노드 디스크립터
unsigned short rem_nd_4_me 로컬 노드에 대한 원격 노드 디스크립터
unsigned long my_conn_id 국소 생성된 커넥션 식별자
unsigned long remote_conn_id 원격 생성된 커넥션 식별자
unsigned long seq_num 특정 전송을 위한 국소 생성된 전송 시퀀스 번호
int txinprog 전송이 현재 진행중임을 나타내기 위해 이용되는 플래그(노드마다의 순차적 전송을 확실히 하기 위해 이용될 수도 있다)
struct tx_q *head 첫번째 전송 요구에 대한 포인터
struct tx_q *tail 마지막 전송 요구에 대한 포인터
상기 한 쌍의 커넥션 식별자는 이하에서 설명하는 바와 같이 커넥션 관리를 위해 이용되는 식별자일 수도 있다. 상기 한 쌍의 커넥션 식별자는 점진적으로 증가하는 카운터일 수 있는데, 이들 카운터는, 각 커넥션이 고유한(unique) 노드 디스크립터 및 커넥션 식별자 쌍을 가질 수 있도록 두 노드 사이의 커넥션을 고유하게 확인하기 위하여 매체 선택 계층(420, 450)에 의해 생성된다. 커넥션 식별자는 로컬 매체 선택 계층(420)이 전송 커넥션 구조를 생성할 때 생성될 수 있다. 다르게는, 커넥션 식별자는 임의의 공지 방식으로 생성될 수도 있다. 예를 들어, 커넥션 식별자는 각각 로컬 및 원격 컴퓨터 시스템(110, 112)의 부트 날짜 및/또는 시간에 기초할 수도 있다.
상기 헤드 포인터 및 테일 포인터는 각 노드에 대한 전송 요구의 순차적인 전송을 보장하기 위하여 커넥션에 대한 전송 요구의 링크된 리스트를 규정할 수 있다. 다르게는, 각 노드에 대한 전송 요구의 순차적 전송을 구현하기 위해 다른 공지 기법을 이용할 수도 있다. 새로운 전송 커넥션 구조를 생성할 때, 상기 헤드 포인터 및 테일 포인터는 초기 전송 요구를 지시하여, 커넥션이 설정되기 전에도 상기 요구를 대기열 처리함으로써, 상기 초기 전송 요구가 먼저 서비스되는 것을 보장할 수 있다. 예시적인 전송 요구는 표 2에 나타내었다.
일단 전송 커넥션 구조가 확인되거나 생성되면, 커넥션 관리 패킷이 로컬 노드와 원격 노드 사이에서 전송되어 노드-대-노드 커넥션을 설정한다. 커넥션 관리 패킷 타입은 커넥션의 상태에 대응할 수 있으며, 커넥션을 고유하게 확인하기 위해 이용되는 상기 한 쌍의 노드 디스크립터 및 한 쌍의 커넥션 식별자를 포함할 수 있다. 예시적인 커넥션 관리 패킷은 커넥션을 개시하기 위해 로컬 노드에 의해 보내진 TCS_INIT 패킷, 커넥션이 설정되었음을 나타내기 위하여 원격 노드에 의해 보내진 TCS_REM_UP 패킷, 액티브 커넥션을 폴링(polling)하기 위해 로컬 노드에 의해 보내진 TCS_UP 패킷, 및 기존의 커넥션을 파괴하기 위하여 각각 로컬 노드 및 원격 노드에 의해 보내진 TCS_DOWN 패킷 및 TCS_REM_DOWN 패킷을 포함할 수 있다. 커넥션 관리 패킷은 로컬 노드 또는 원격 노드에 의해 전송될 수도 있으나, 커넥션은 로컬 또는 개시자 노드가 커넥션을 통해 데이터 패킷을 전송할 수 있도록만 해주는 일방향 커넥션일 수 있다. 따라서, 커넥션은 단지 TCS_INIT 또는 TCS_UP의 상태를 가질 수도 있다.
전형적인 커넥션 관리 패킷 플로우를 설명하는 예시적인 흐름도가 도 5에 도시되어 있다. 커넥션은 로컬 노드와 원격 노드 사이에 커넥션이 설정되고 있음을 나타내는 TCS_INIT 상태에서 시작할 수 있다. 커넥션이 TCS_INIT 상태에 있는 동안, TCS_INIT 패킷은 단계(502)에서 로컬 노드로부터 원격 노드로 전송될 수 있다. TCS_INIT 패킷은 로컬 노드의 커넥션 식별자뿐만 아니라 원격 노드에 대한 로컬 노드의 노드 디스크립터를 포함할 수 있다. 예시적인 TCS_INIT 패킷은 4의 값을 갖는 로컬 커넥션 식별자를 포함할 수도 있다.
TCS_INIT 패킷을 수신하면, 원격 노드는 단계(504)에서, TCS_INIT 패킷에서 참조된 커넥션 및 로컬 노드에 대해 전송 수신 구조가 존재하는지 여부를 결정할 수 있다. 전송 수신 구조는 TCS_INIT 패킷에 포함된 노드 디스크립터에 의해 색인될 수도 있다는 것을 제외하고는, 전송 커넥션 구조와 유사한 요소를 포함할 수 있다. 정상적인 경우에 그러한 것처럼, 로컬 노드에 대하여 전송 수신 구조가 존재하지 않으면, 원격 노드는 단계(506)에서, 전송 수신 구조를 생성하고 TCS_REM_UP 패킷을 로컬 노드로 전송할 수 있다. TCS_REM_UP 패킷은 로컬 노드에 대한 원격 노드의 노드 디스크립터 및 원격 노드의 커넥션 식별자뿐만 아니라 TCS_INIT 패킷으로부터의 노드 디스크립터 및 커넥션 식별자를 포함할 수도 있다. 따라서, TCS_REM_UP 패킷은 노드 디스크립터와 커넥션 식별자의 완전한 쌍을 포함한다. 예시적인 TCS_REM_UP 패킷은 4와 3의 값을 갖는 커넥션 식별자 쌍을 포함할 수도 있다.
TCS_REM_UP 패킷에 응답하여, 로컬 노드는 단계(512)에서, 노드 디스크립터 및 커넥션 식별자 쌍에 대응하는 전송 커넥션 구조가 존재하는 지를 결정할 수 있다. 만일 참조된 구조가 존재하면, 로컬 노드는 단계(516)에서, 기존 구조의 원격 커넥션 식별자 필드가 비어있는지를 결정할 수 있다. 만일 값이 비어있으면, 로컬 노드는 단계(520)에서, 상기 참조된 전송 커넥션 구조를 새로운 노드 디스크립터와 커넥션 식별자를 이용하여 업데이트할 수 있다. 예를 들어, 전송 커넥션 구조는 커넥션 식별자 4 및 3을 포함하도록 업데이트될 수 있다. 이 시점에서, 커넥션은 설정된 것으로 간주될 수 있으며 그 커넥션은 TCS_UP의 상태를 갖는다. 로컬 노드는 단계(522)에서 상기 커넥션을 통해 데이터 패킷을 전송할 수 있다. 유사하게, 원격 노드는 상기 커넥션을 통해 데이터 패킷을 수신할 수 있다. 이어서 어느 한 노드는 TCS_DOWN 또는 TCS_REM_DOWN 패킷을 전송함으로써 임의의 시점에서 상기 커넥션을 파괴할 수 있다.
어떤 상황에서, 커넥션 관리 프로세스에서 에러가 발생할 수도 있다. 예를 들어, 전송 수신 구조는 TCS_INIT 패킷에서 참조된 노드 디스크립터에 대하여 이미 존재할 수도 있다. 만일 원격 노드가 이미 기존의 전송 수신 구조를 갖고 있다면, 두 경우가 가능하다. 먼저, 기존의 전송 수신 구조는 TCS_INIT 패킷과 동일한 커넥션 식별자를 가질 수 있다. 원격 노드는 몇몇 이유로, 매칭되는 커넥션 식별자를 포함하는 기존의 전송 수신 구조를 가질 수도 있다. 예를 들어, 중복 TCS_INIT가 로컬 노드에 의해 또는 통신 네트워크(140) 상의 그 외 어딘가에서 생성될 수도 있다. 다르게는, 로컬 노드는 리부트되거나 기존의 노드-대-노드 커넥션에 대한 지식(즉, 상태 정보)를 갖고 있지 않을 수도 있으나 그럼에도 불구하고 이전 커넥션과 동일한 커넥션 식별자를 재생했을 수도 있다. 다르게는, 기존 구조는 커넥션이 동기화 상태에서 벗어난 것을 다시 나타내는 비매칭(non-matching) 커넥션 식별자를 포함할 수 있다.
기존 전송 수신 구조가 존재하면, 원격 노드는 단계(508)에서 TCS_REM_DOWN 패킷을 전송함으로써, 상기 문제의 원인에 관계없이 기존의 커넥션을 파괴할 수 있다. TCS_REM_DOWN 패킷은 단일 노드 디스크립터 및 커넥션 식별자를 포함할 수 있으며, 상기 로컬 노드에 의해 상기 참조된 커넥션을 파괴하는 명령으로서 처리된다. 상기 로컬 노드는 단계(510)에서, 예를 들어, 커넥션을 위한 그 전송 커넥션 구조를 삭제하고 커넥션과 연관된 임의의 다른 상태 정보를 정리함으로써 커넥션을 파괴할 수도 있다. 이어서 로컬 노드는 커넥션의 재설정을 시도할 수 있다. 다르게는, 커넥션 식별자는 상기 문제의 원인을 결정하는 데에 이용될 수도 있다. 문제의 원인이 무해하다면, 예를 들어, TCS_INIT 패킷이 중복 패킷이면, 기존 커넥션은 데이터 전송에 이용될 수도 있다.
TCS_REM_UP 패킷이 로컬 노드에 의해 수신될 때 유사한 에러가 또한 발생할 수 있다. 전술한 바와 같이, TCS_REM_UP 패킷은 노드 디스크립터와 커넥션 식별자의 완전한 쌍, 즉 로컬 노드의 쌍 및 원격 노드의 쌍을 포함한다. 만일 로컬 노드가 참조된 로컬 노드 디스크립터 및 커넥션 식별자 쌍에 대응하는 전송 커넥션 구조를 갖고 있지 않다면, 노드들은 동기 상태에서 벗어나며, TCS_DOWN 패킷이 단계(514)에서 원격 노드에 전송되어 커넥션을 폐쇄할 수 있다. TCS_DOWN 패킷에 응답하여, 원격 노드는 단계(524)에서, 참조된 전송 수신 구조를 파괴하고, 임의의 잔여 상태 정보 등을 정리할 수 있다. 다르게는, 로컬 노드는 원격 노드에 대한 기존의 전송 커넥션 구조를 가질 수도 있다. 전술한 정상의 경우에 있어서, 로컬 노드의 전송 커넥션 구조는 원격 노드 디스크립터 및 커넥션 식별자를 포함하지 않을 수도 있으며, 또는 이들 요소는 0과 같은 디폴트 값으로 설정될 수도 있다. 그러나, 중복 패킷 또는 리부트로 인해, 전송 커넥션 구조는 원격 노드 디스크립터 및 커넥션 식별자 쌍에 대한 값을 포함할 수 있다. 이러한 경우에, 로컬 노드는 단계(518)에서 기존의 전송 커넥션 구조를 파괴할 수 있으며, 단계(514)에서 TCS_DOWN 패킷을 전송하여 상기 커넥션을 파괴할 수도 있다. 다르게는, 만일 에러의 원인이 무해한 것으로 결정되면, 상기 기존의 커넥션은 업데이트되어 데이터 전송에 이용될 수 있다.
커넥션이 설정된 후, 전송 요구는 로컬 네트워크 매니저(130)에 의해, 예를 들어, 전술한 바와 같이, 사용자 레벨 커넥션을 설정하고 그 사용자-레벨 커넥션을 통해 데이터를 전송함으로써 서비스될 수 있다. 특정 노드에 대한 전송 요구는 로컬 네트워크 매니저에 의해 순서대로 서비스될 수 있다. 이것은 예를 들어, 전술한 헤드 포인터 및 테일 포인터를 이용하여 특정 커넥션에 대한 전송 요구를 대기열 처리함으로써 이루어질 수도 있다. 전송 요구를 대기열 처리하기 위한 예시적인 구조를 표 2에 나타내었다. 또한, 점진적으로 증가하는 카운터와 같이, 노드에 고유한 전송 요구 식별자가 생성될 수도 있다. 다르게는, 전송 요구 식별자는 임의의 공지 방식을 이용하여 생성될 수도 있다. 전송 요구 식별자는 예를 들어, 로컬 매체 선택 계층(420)에 의해 생성될 수도 있다. 상기한 바와 같이, 전송 요구는 임의 길이의 바이트들의 어레이로서 처리될 수 있다. 전송 요구 식별자의 구현은 모든 사용자 데이터가 전송 요구 식별자 및 오프셋에 의해 색인되는 바이트들의 2차원 어레이로서 처리될 수 있도록 해준다.
예시적인 전송 요구 대기열 데이터 필드
struct tx_q *next 단독으로 링크된 리스트 내의 다음 전송에 대한 포인터
int qos_pkt 패킷이 매체 선택 계층 패킷 또는 다르게는 사용자 데이터임을 나타내기 위해 이용되는 플래그
14_bits tried_14 이미 시도되었던 전송 계층 인스턴스의 리스트
void *tx_conn 매체 선택 계층의 커넥션 구조에 대한 포인터
struct qos_info qos_info 매체 선택 정보
struct sockaddr raddr 원격 노드 전송 계층에 대한 수신지 물리적 어드레스
struct14_request 14_req 전송 요구의 구체적 사항을 나타내기 위해 이용되는 구조
(표 3 참고)
예시적인 전송 요구 데이터 필드
unsigned layer 메시지를 적절하게 다루기 위하여 수신 노드상에서 호출되는 계층을 나타내기 위하여 이용됨
unsigned nd 노드 디스크립터
void *data 전송 계층 헤더 정보
unsigned data_len 전송 계층 헤더 정보의 길이
int rcvid 송신될 데이터의 위치의 식별자
unsigned offset 송신될 데이터의 위치를 나타내기 위하여 이용되는 오프셋
unsigned rcvid_len 송신될 데이터의 길이
void(*rcvid_done)
(int handle, int status)
송신될 모든 데이터가 획득된 후 이용되는 함수 호출
int handle 사용될 핸들러 함수를 나타냄
int status 전송의 상태
void **sequence 복수의 시퀀스 요구에 대하여 전송 계층을 알려주기 위하여 이용됨
노드-대-노드 커넥션을 갖고 있는 두 노드 사이의 관계는 3가지 방식으로 특징지울 수 있다. 첫째, 상기 노드들은 활발히 통신하는 사용자-레벨 프로세스를 갖고 있을 수 있다. 둘째, 상기 노드들은 액티브 사용자-레벨 커넥션을 갖고 있을 수 있지만, 현재 데이터를 전송하고 있지는 않다. 셋째, 상기 노드들 상의 프로세스 사이에는 어떠한 사용자-레벨 커넥션도 존재하지 않을 수 있다. 첫번째 두 경우 중 어느 하나에 있어서, 매체 선택 계층(420)은 상기 노드-대-노드 커넥션을 유지할 수 있다. 그러나, 세번째 경우에 있어서, 매체 선택 계층(420)은, 예를 들어 미리 정한 시간 동안 통신이 중단된다면, 상기 노드-대-노드 커넥션을 파괴할 수도 있다. 다르게는, 또는 추가적으로, 상기 커넥션을 타임 아웃하기 위한 다른 공지의 방법들이 이용될 수도 있다.
로컬 노드와 원격 노드 사이에 2개 이상의 인터페이스가 존재하는 경우에, 로컬 매체 선택 계층(420)은, 예컨대 인터페이스, 네트워크 등의 풀(pool)을 유지함으로써, 그 복수의 인터페이스를 통한 데이터 패킷의 전송의 관리를 담당할 수 있다. 상기 풀은 동작 가능하거나 이용 가능한 인터페이스 또는 네트워크만을 포함할 수 있으며, 또는 상기 풀은 임의의 인터페이스 또는 네트워크를 포함할 수 있다. 복수의 네트워크 인터페이스를 통한 전송을 관리하는 한 가지 예시적인 방법이 도 6의 흐름도에 도시되어 있다. 처음에, 매체 선택 계층(420)은 단계(602)에서, 매체 선택 선호(preference)를 결정할 수 있다. 상기 매체 선택 선호는 매체 선택 계층(420)이 상기 커넥션을 통해 데이터를 어떻게 전송하는 지에 대한 정책을 나타낸다. 상기 매체 선택 선호는 어떤 장치의 경로명의 일부로서 특정될 수 있다. 예컨대, 경로명 "/net/lab2~exclusive:en0/dev/ser1"은, "exclusive"의 매체 선택 정책으로 "lab2"라고 명명된 노드 상에 직렬 장치를 액세스하는 데 사용된다. 선택적으로, 여러 가지 매체 선택 수식 경로명에 심벌 링크(symbolic link)가 생성될 수도 있다. 다르게는 또는 추가적으로, 매체 선택 정책은 경로명과는 별개의 명령을 통해 규정될 수도 있다.
도 6에 도시되어 있는 바와 같이, 데이터는 3개의 상이한 정책, 즉 (1) "부하균형(loadbalance)" 정책(603), (2) "선호된(preferred)" 정책(611) 및 (3) "배타적(exclusive)" 정책(619)에 따라 전송될 수 있다. 당업자는 여러 가지 추가의 매체 선택 정책이 실행될 수 있다는 것을 이해할 것이다. 예를 들면, 사용자가 데이터 패킷을 복수의 인터페이스를 통해 동시에 전송할 수 있도록 해주는 "redundant" 매체 선택 정책이 제공될 수 있다.
상기 "부하균형" 정책(603)은, 로컬 매체 선택 계층(420)이 어느 네트워크 인터페이스 또는 전송 계층 인스턴스(432, 434)가 각 패킷에 대하여 데이터를 전송할 것인지를 결정할 수 있도록 해준다. 각 패킷은 그 패킷을 원격 노드에 가장 빠르게 전달할 수 있는 링크 상에서 대기열 처리될 수 있다. 이는 복수의 링크가 이용할 수 없게 됨에 따라 서비스의 원만한 저하뿐만 아니라, 상기 복수의 링크가 이용 가능할 때 노드 사이에 보다 더 큰 대역폭을 효과적으로 제공한다(상기 대역폭은 이용 가능한 링크의 대역폭의 합이다). 따라서, 로컬 매체 선택 계층(420)은 단계(604)에서, 가장 빠른 인터페이스(432, 434)를 결정할 수 있다. 이어서, 상기 패킷은 단계(606)에서, 상기 결정된 인터페이스(432, 434)를 통해 전송될 수 있다. 만약 에러가 발생한다면, 상기 로컬 매체 선택 계층은 그 다음으로 가장 빠른 인터페이스를 통해 상기 패킷을 다시 보낼려고 시도할 수 있다. 추가적으로, 로컬 매체 선택 계층(420)은 상기 실패한 인터페이스를 통해 차후 패킷을 보낼려고 시도하지 않을 수 있다. 로컬 매체 선택 계층(420)은, 상기 데이터가 전송 완료될 때까지, 단계(610)에서 임의의 추가 패킷에 대하여 상기 프로세스를 계속할 수 있다.
상기 "선호된" 매체 선택 정책(611)은, 이용 가능하다면 이용되어야 하는 특정 네트워크 인터페이스를 사용자가 특정할 수 있도록 해준다. 따라서, 로컬 매체 선택 계층(420)은 단계(612)에서, 상기 특정된 인터페이스를 통한 데이터 전송을 시도하여, 단계(618)에서 추가의 패킷을 반복하여 전송할 수 있다. 단계(614)에서, 상기 인터페이스가 상기 전송 중에 이용할 수 없게 되면(즉, 전송시에 에러가 발생하면), 매체 선택 계층(420)은 데이터를 전송하기 위해 다른 인터페이스(432, 434)를 선택할 수 있다. 예를 들면, 로컬 매체 선택 계층(420)은 디폴트 매체 선택 정책으로 복귀할 수 있다. 다르게는, 로컬 매체 선택 계층(420)은 상기 선호된 링크와 가장 유사한 인터페이스를 선택할 수도 있다. 매체 선택 계층(420)이, 이용 가능하다면 상기 제1 인터페이스를 통해, 이어서 제2 인터페이스 등을 통해 패킷을 전송하려고 시도할 수 있도록, 복수의 선호 인터페이스가 특정될 수도 있다. 복수의 선호가, 예컨대 링크의 상대적인 성능값을 설정함으로써 설정될 수있다. 상기 상대적인 성능값은 네트워크의 최대 대역폭, 평균 대역폭, 이용도 등과 같은 네트워크의 성능 특성에 기초할 수 있다. 도 6에 도시한 바와 같이, 로컬 매체 선택 계층(420)은 단계(616)에서, 추가의 선호된 인터페이스가 특정되었는지 여부를 결정하려고 할 수 있다. 추가의 인터페이스가 특정되었다면, 그 추가의 인터페이스를 통해 전송이 시도될 수 있다. 추가의 인터페이스가 특정되지 않았다면, 로컬 매체 선택 계층(420)은 디폴트 매체 선택 정책, 예컨대 '부하균형' 정책(603)에 따라 상기 전송을 시도할 수 있다. 다르게는 또는 추가적으로, 매체 선택 계층(420)이 복수의 "선호된"(611) 링크를 통해 전송을 효율적으로 "부하균형"(603) 시킬 수 있도록 복수의 정책이 조합될 수 있다.
마지막으로, 상기 "배타적" 매체 선택 선호(619)는 사용자가 특정 링크에의 전송을 로킹할 수 있도록 해준다. 상기 "배타적" 링크가 이용할 수 없게 되는 경우에, 로컬 네트워크 매니저(124)는 다른 임의의 인터페이스를 통해 데이터를 전송하려고 시도하지 않을 수 있다. 다르게는, 매체 선택 계층(420)이 특정된 인터페이스를 통해서만 정보를 전송할 수 있도록 복수의 "배타적"(619) 인터페이스가 특정될 수 있다. 상기 "배타적" 매체 선택 정책은, 예컨대 대량의 데이터를 이동시키는 애플리케이션이 큰 대역폭의 인터페이스를 필요로 하는 경우에 이용될 수 있다. 상기 "배타적" 매체 선택 정책을 이용함으로써, 사용자는 애플리케이션 요구 조건을 충족시키는 인터페이스로만으로 전송을 제한할 수 있고, 장애 상태 하에서 낮은 대역폭의 인터페이스에 과부하가 걸리는 것을 피할 수 있다. 다시, 매체 선택 계층(420)이 몇몇 "배타적"(619) 인터페이스를 통해 전송을 "부하균형"(603) 시킬 수 있도록 상기 정책들은 조합될 수 있다. 다시 도 6을 참조하면, 로컬 매체 선택 계층(420)은 단계(620)에서, 상기 배타적 인터페이스를 통해 데이터 패킷을 전송할 수 있다. 상기 특정된 인터페이스가 실패하면, 임의의 추가 인터페이스를 통한 데이터 전송은 시도되지 않는다.
상기 예시적인 매체 선택 방법을 실행하기 위하여, 로컬 매체 선택 계층(430)은 이용 가능한 인터페이스 또는 네트워크의 풀을 유지할 수 있다. 예를 들면, 각 전송 계층 인스턴스(432, 434)는 매체 선택 계층에 그 관련된 인터페이스가 다운되어 있다는 것을 통보해 줄 수 있다. 이어서, 매체 선택 계층(430)은 상기 인터페이스를 주기적으로 폴링하여, 그 인터페이스가 다시 적절하게 기능하고 있는 지 여부를 결정할 수 있다. 예컨대, 상기 노드 디스크립터 및 커넥션 식별자 쌍을 포함하고 있는 TCS_UP 패킷이 상기 이용할 수 없는 인터페이스를 통해 주기적으로 전송될 수 있다. 응답하여, 상기 원격 매체 선택 계층(450)은 TCS_REM_UP 패킷을 전송하여, 상기 링크가 일단 다시 이용 가능하다는 것을 확인한다.
로컬 매체 선택 계층(420)은 또한 상기 로컬 전송 계층(430)으로부터 성능 정보를 획득할 수 있다. 이어서, 상기 성능 정보는 상기 특정된 매체 선택 선호에 따라 인터페이스를 선택하는 데에 사용될 수 있다. 예컨대, 각 전송 계층 인스턴스(432, 434)는 정적 및 동적 성능 정보를 포함할 수 있다. 각 인스턴스는 하드웨어 능력 등과 같은 정적 성능 정보를 유지할 수 있다. 예시적인 동적 성능 정보는 바이트 카운트, 현재 대기열 처리된 전송 요구들의 카운트, 이들 요구의 크기 등을 포함할 수 있다.
상기 적절한 인터페이스가 매체 선택 계층(420)에 의해 선택된 후, 데이터 패킷은 로컬 전송 계층(430)에 의해 원격 전송 계층(460)으로 전송될 수 있다. 로컬 전송 계층(430)에 의한 예시적인 데이터 전송을 나타내는 흐름도가 도 7에 도시되어 있다. 단계(702)에서 전송 요구를 수신한 후에, 로컬 전송 계층(430)은 단계(704)에서 그 전송의 길이를 검증할 수 있다. 추가의 패킷이 전송될 것이라면, 상기 로컬 전송 계층은 그 패킷을 단계(706)에서, 상기 원격 노드로 전송할 수 있다. 로컬 전송 계층(430)은, 예컨대 버퍼를 할당하고, 그것을 상기 요구로부터의 데이터와 패킹하고, 적절한 호출을 인터페이스 드라이버에 만듦으로써, 상기 패킷을 전송할 수 있다. 로컬 전송 계층(430)은 또한, 상기 노드 디스크립터 및 세션층, 또는 노드-대-노드 커넥션 식별자 쌍을 각각의 데이터 패킷에 첨부할 수 있다. 예시적인 패킷 데이터 필드를 표 4에 나타내었고, 패킷에 포함될 예시적인 매체 선택 계층 정보를 표 5에 나타내었다. 다음에, 로컬 전송 계층(430)은 나머지 데이터를 계속 전송할 수 있다. 어떠한 추가 정보도 전송되지 않는 경우에, 로컬 전송 계층(430)은 단계(708)에서, 예컨대 패킷 헤더 내에 설정된 플래그에 의해 전송의 마지막 패킷을 표시하여, 전송이 완료되었다는 것을 상기 원격 노드에 통보할 수 있다. 모든 데이터가 전송된 후에, 로컬 전송 계층(430)은 단계(710)에서, 수신 노드로부터의 응답을 대기할 수 있다.
예시적인 패킷 데이터 필드
unsigned char version 전송 계층 버전 정보
unsigned char type 페이로드 타입
unsigned char flags 전송의 시작과 종료를 나타내기 위해 사용되는 플래그
unsigned char layer 수신 노드 상에서 호출되어 메시지를 적절히 취급하는
계층을 나타내기 위해 사용됨(표 5 참조)
struct qos_info qos_info 매체 선택 계층 헤더 정보
unsigned long offset 전체 바이트 스트림 시퀀스로의 각 패킷의 옵셋
unsigned long length 바이트수
unsigned long crc 32-비트 헤더 및 페이로드
unsigned char data[] 페이로드
예시적인 매체 선택 계층 정보
unsigned short src_nd_4_dst 원격 노드에 대한 로컬 노드 디스크립터
unsigned short dst_nd_4_src 로컬 노드에 대한 원격 노드 디스크립터
unsigned long src_conn_id 국소 생성된 커넥션 식별자
unsigned long dst_conn_id 원격 생성된 커넥션 식별자
unsigned long src_seq_num 현재 패킷이 속해 있는 전송 요구를 나타내는
시퀀스 번호
unsigned long qos_type 원격 노드 상에 매체 선택을 재구성하기 위해
사용되는 매체 선택 계층 정보
원격 전송 계층(460)에 의한 예시적인 데이터 수신을 나타내는 흐름도가 도 8에 도시되어 있다. 처음에, 단계(802)에서, 패킷이 원격 노드 상의 장치 드라이버에 의해 수신되고, 원격 네트워크 매니저(430)의 원격 전송 계층(460)으로 전달된다. 상기 수신된 패킷은, 전송에서 다음 패킷에 대한 포인터, 패킷 길이, 헤더 및 데이터 버퍼, 물리적 어드레스 등을 규정하는 요소들을 포함할 수 있다. 수신된 패킷에 대한 예시적인 데이터 필드를 표 6에 나타내었다. 선택적으로, 상기 패킷을 확인하기 위하여, 단계(804)에서, 당업계에 공지된 것과 같은 에러 체킹을 수행할 수 있다. 다른 요소들이 대체 또는 추가될 수 있다.
예시적인 수신된 패킷 데이터 필드
struct rx_pkt *next 시퀀스 내의 다음 수신된 패킷에 대한 포인터
int total_length 헤더 및 데이터의 길이
struct 14_pkt *hdr 할당딘 전송 계층 패킷 헤더 버퍼
char *data 할당된 사용자 데이터 버퍼
struct sockaddr raddr 로컬 노드의 물리적 어드레스
원격 전송 계층(460)은, 전체 전송이 수신 완료될 때까지, 계속 패킷을 수신할 수 있다. 다음에, 상기 전체 전송은 단계(808)에서, 원격 매체 선택 계층(450)으로 전달될 수 있는데, 상기 선택 계층은 경우에 따라, 매체 커넥션 서비스를 수행하거나 또는 사용자 데이터를 적절한 수신지로 포워딩한다. 따라서, 원격 전송 계층(460)은 단계(806)에서, 상기 전송이 단일 패킷 전송인지 여부를 결정할 수 있다. 커넥션 관리 패킷 및 작은 사용자 데이터 전송과 같은 단일 패킷 전송은 단계(808)에서, 추가의 처리를 위해 원격 매체 선택 계층(450)에 직접 전달될 수 있다. 전송은, 패킷의 헤더 내에 시작 플래그 및 종료 플래그를 설정함으로써 단일 패킷 전송으로 지정될 수 있다. 일반적으로, 전송은, 예컨대 그 전송을 수신된 전송의 대기열에 추가함으로써, 원격 매체 선택 계층(450)에 전달될 수 있다. 상기 대기열은, 예컨대 원격 노드 디스크립터의 바닥 X 비트에 의해 색인되는 수신된 시퀀스 구조의 링크된 리스트에 대한 포인터들의 어레이로서 구현될 수 있다. 수신된 패킷 대기열 구조의 예시적인 데이터 필드를 표 7에 나타내었다.
예시적인 수신된 전송 대기열 데이터 필드
int 14_index 패킷을 수신한 전송 계층 인스턴스를 나타낸다
int qos_pkt 패킷이 매체 선택 계층 패킷 또는 전송 계층 패킷임을 나타내는 플래그
int layer 패킷을 수신하기 위해 호출하는 함수
struct sockaddr raddr 원격 노드의 전송 계층에 대한 로컬 물리적 어드레스
strcut qos_info qos_info 이하의 iov 필드에 대한 매체 선택 계층 정보
Int niov 다음 어레이 내의 iov의 총수
iov_t iov[] 프래그먼트의 어레이
상기 전송이 복수의 패킷을 포함하고 있다면, 원격 전송 계층은 단계(810)에서, 그 전송을 재구성할 수 있다. 예를 들면, 상기 전송은 수신된 시퀀스 데이터 구조로 재구성될 수 있다. 예시적인 수신된 시퀀스 구조는 주어진 노드 디스크립터/커넥션 식별자 조합에 대하여 수신된 패킷들의 링크된 리스트로서 구현될 수 있다. 상기 수신된 시퀀스 구조는 또한, 커넥션에 대하여 고유한 노드 디스크립터 및 커넥션 식별자, 물리적 어드레스 등을 규정하는 요소들을 포함할 수 있다. 원격 전송 계층(460)은 상기 커넥션 식별자를 이용할 수 있고, 단계(812)에서, 상기 수신된 패킷의 시퀀스 번호는 기존의 수신된 시퀀스 구조를 찾아내는 데 이용될 수 있다. 필요하다면, 단계(814)에서, 새로운 수신된 시퀀스 구조가 할당되고 포인터 어레이에 추가되며, 이어서 그 수신된 패킷은 단계(816)에서, 상기 수신된 시퀀스 구조 내로 삽입된다. 원격 전송 계층(460)은 수신된 시퀀스 구조를 스캔하여 상기 패킷을 잇달아, 즉 옵셋의 순서로 삽입할 수 있다. 다르게는 또는 추가적으로, 상기 패킷은 임의의 위치에서 상기 구조 내로 삽입될 수도 있다.
단계(818)에서, 로컬 네트워크 매니저(124)에 의해 송신된 전송의 마지막 패킷을 수신하면, 원격 전송 계층(460)은 단계(820)에서, 상기 수신된 시퀀스 구조를 스캔하여, 전송이 완료되었다는 것을 확인한다. 전송의 마지막 패킷은 패킷의 헤더 내의 플래그를 매개로 지정될 수 있다. 상기 전송이 완료되면, 원격 전송 계층(460)은 단계(824)에서, 성공적인 이전을 나타내는 ACK 패킷을 전송할 수 있다. 다르게는, 원격 전송 계층(460)은 단계(826)에서, 전송의 하나 이상의 패킷이 손실되었다는 것을 나타내는 NACK 패킷을 전송할 수 있다. 상기 NACK 패킷은 그 잃어버린 패킷을 나타내는 홀 리스트(hole list)를 포함할 수 있다. 예시적인 홀 리스트는, 예를 들면, 전송 시퀀스의 옵셋 및 길이에 의해 상기 홀을 기술함으로써, 상기 리스트 중에 각각의 홀을 규정하는 데이터 구조 및 상기 전송의 홀의 총수를 포함하도록 구현될 수 있다.
다시 도 7을 참조하면, 로컬 전송 계층(430)은 단계(710)에서, 전송의 마지막 패킷을 전송한 후 원격 전송 계층(460)으로부터의 응답을 대기한다. 로컬 전송 계층(430)은 단계(712)에서, 성공적인 전송을 나타내는 ACK 패킷을 수신할 수 있다. 이러한 경우에, 로컬 전송 계층(430)은 매체 선택 계층(420)에 성공을 나타낼 수 있다. 다르게는, 로컬 전송 계층(430)은 단계(714)에서, 잃어버린 패킷을 나타내는 NACK 패킷을 수신할 수 있다. 이러한 경우에, 그 참조된 패킷은 단계(716)에서, 재생성되고 재전송될 수 있다. 단계(718)에서, 주어진 시간동안 아무런 응답이 수신되지 않는다면, 상기 로컬 전송 계층은 단계(720)에서, 시퀀스의 마지막 패킷을 재생성 및 재전송할 수 있고, 단계(722)에서 다시 응답을 대기할 수 있다. 상기 마지막 패킷은 원격 노드를 트리거시켜 그 수신된 시퀀스를 재스캔하도록 하고 또 ACK 또는 NACK 패킷을 보내도록 할 수 있다. 이는, 로컬 노드가, 마지막 패킷 또는 응답 패킷이 손실되는 것을 방지한 통신 사고 상태가 일어난 불완전한 전송을 모면할 수 있도록 해준다. 단계(724)에서, 반복된 타임 아웃이 일어나면, 로컬 전송 계층(430)은 이용 가능한 인터페이스의 풀로부터 인터페이스를 제거하고 폴링 패킷으로 그 인터페이스를 주기적으로 폴링하여 향후의 이용 가능성을 결정할 수 있다. 예시적인 폴링 패킷은 전술한 TCS_UP 패킷을 포함할 수 있다.
본 발명의 여러 가지 실시 형태를 설명하였지만, 당업자에게는 본 발명의 범위 내에서 보다 많은 실시 형태 및 구현 형태가 가능하다라는 것이 명백할 것이다. 따라서, 본 발명은 이하의 특허청구범위 및 그 등가물을 제외하고, 제한되지 않는다.
본 발명의 방법 및 시스템에 따르면, 고성능 메시지 전송 및 멀티-인터페이스 관리 및 지원을 제공하는 신뢰성 있는 노드-노드 세션 프로토콜을 제공함으로써 전송 성능이 제한된 종래 기술의 문제점을 해결할 수 있다.

Claims (34)

  1. 분산형 운영 시스템의 노드들 간에 커넥션을 설정(establishing)하기 위한 방법에 있어서,
    원격 노드에 대하여 로컬 노드에 의해 전송 요구(transmission request)를 생성하는 단계;
    상기 원격 노드를 나타내는 로컬 노드 디스크립터와 로컬 커넥션 식별자를 포함하는 초기 패킷을 상기 로컬 노드에 의해 상기 원격 노드로 전송하는 단계;
    상기 원격 노드에 의해 상기 초기 패킷을 수신하는 단계;
    상기 로컬 노드 디스크립터와 관련된 수신 커넥션 구조를 상기 원격 노드에 의해 생성하는 단계;
    상기 초기 패킷의 수신에 응답하여, 상기 로컬 노드 디스크립터(descripter)와, 상기 로컬 커넥션 식별자와, 상기 로컬 노드를 나타내는 원격 노드 디스크립터와, 원격 커넥션 식별자를 포함하는 확인(confirmation) 패킷을 상기 로컬 노드에 전송하여 전송 커넥션을 설정하는 단계; 및
    상기 로컬 노드에 의해 상기 확인 패킷을 수신하는 단계
    를 포함하는 커넥션 설정 방법.
  2. 제1항에 있어서, 상기 로컬 커넥션 식별자 및 상기 원격 커넥션 식별자는 점진적으로 증가하는 카운터를 포함하는 것인 커넥션 설정 방법.
  3. 제1항에 있어서,
    상기 로컬 노드가 상기 원격 노드에 대하여 복수의 전송 요구를 생성하는 것을 수행하는 단계와;
    상기 로컬 노드가 상기 복수의 전송 요구를 순서대로 서비스하는 것을 수행하는 단계를 더 포함하는 커넥션 설정 방법.
  4. 제3항에 있어서, 상기 로컬 노드가 상기 로컬 노드 디스크립터와 상기 로컬 커넥션 식별자를 저장할 수 있는 전송 커넥션 구조를 생성하는 것을 수행하는 단계를 더 포함하는 커넥션 설정 방법.
  5. 제4항에 있어서,
    상기 로컬 노드에 의해 상기 복수의 전송 요구의 대기열(queue)을 생성하는 단계; 및
    상기 전송 요구의 대기열을 상기 전송 커넥션 구조에 저장하는 단계
    를 더 포함하는 커넥션 설정 방법.
  6. 제1항에 있어서, 상기 원격 노드를 주기적으로 폴링(polling)하는 단계를 더 포함하는 커넥션 설정 방법.
  7. 제6항에 있어서, 상기 폴링에 대해 아무런 응답도 수신되지 않으면 상기 전송 커넥션을 파괴하는 단계를 더 포함하는 커넥션 설정 방법.
  8. 제1항에 있어서, 상기 수신 커넥션 구조는 상기 로컬 노드 디스크립터와, 상기 로컬 커넥션 식별자와, 상기 원격 노드 디스크립터와, 상기 원격 커넥션 식별자를 저장할 수 있는 것인 커넥션 설정 방법.
  9. 컴퓨터 판독 가능한 매체 상에 구현되는 분산형 운영 시스템에 있어서,
    로컬 프로세서 상에서 동작하는 로컬 스레드(thread)를 포함하고, 메시지를 전달하고 수신하도록 동작 가능한 로컬 노드와,
    복수의 네트워크를 통해 상기 로컬 노드와 통신하고, 원격 프로세서 상에서 동작하는 원격 스레드를 포함하며, 메시지를 전달하고 수신하도록 동작 가능한 원격 노드
    를 포함하고,
    상기 로컬 노드는 또한,
    상기 로컬 스레드로부터의 전송 요구를 수신하는 것에 응답하여, 상기 로컬 노드와 연관된 로컬 커넥션 식별자 및 상기 원격 노드와 연관된 원격 커넥션 식별자와 관련된, 상기 원격 노드와의 노드-대-노드 커넥션을 설정(establishing)하도록 동작 가능하고,
    복수의 네트워크 인터페이스를 통해 상기 로컬 노드로부터 상기 원격 노드로의 메시지 전달을 관리하도록 동작 가능하며,
    상기 원격 노드로부터 메시지를 수신하고 그 메시지를 상기 로컬 스레드에 포워딩하도록 동작 가능하며,
    상기 원격 노드는 또한,
    상기 로컬 노드와의 상기 노드-대-노드 커넥션을 설정(establishing)하도록 동작 가능하고,
    상기 로컬 노드로부터 메시지를 수신하고 그 메시지를 상기 원격 스레드에 포워딩하도록 동작 가능한 것인 운영 시스템.
  10. 제9항에 있어서, 상기 로컬 커넥션 식별자 및 상기 원격 커넥션 식별자는 점진적으로 증가하는 카운터를 포함하는 것인 운영 시스템.
  11. 제9항에 있어서, 상기 로컬 노드는 또한,
    상기 원격 노드에 대하여 복수의 전송 요구를 생성하도록 동작 가능하고,
    상기 복수의 전송 요구를 순서대로 서비스하도록 동작 가능한 것인 운영 시스템.
  12. 제11항에 있어서, 상기 로컬 노드는 또한 상기 로컬 커넥션 식별자를 저장할 수 있는 전송 커넥션 구조를 생성하도록 동작 가능한 것인 운영 시스템.
  13. 제12항에 있어서, 상기 로컬 노드는 또한,
    상기 복수의 전송 요구의 대기열을 생성하도록 동작 가능하고,
    상기 전송 요구의 대키열을 상기 전송 커넥션 구조에 저장하도록 동작 가능한 것인 운영 시스템.
  14. 제9항에 있어서, 상기 로컬 노드는 또한 상기 원격 노드를 주기적으로 폴링하도록 동작 가능한 것인 운영 시스템.
  15. 제14항에 있어서, 상기 로컬 노드는 또한 상기 폴링에 대해 아무런 응답도 수신되지 않으면 상기 노드-대-노드 커넥션을 파괴하도록 동작 가능한 것인 운영 시스템.
  16. 제9항에 있어서, 상기 원격 노드는 또한 상기 로컬 커넥션 식별자 및 상기 원격 커넥션 식별자를 저장할 수 있는 수신 커넥션 구조를 생성하도록 동작 가능한 것인 운영 시스템.
  17. 제9항에 있어서, 상기 노드-대-노드 커넥션은 상기 로컬 커넥션 식별자를 포함하는 초기 패킷을 상기 로컬 노드로부터 상기 원격 노드로 전송함으로써 설정되는 것인 운영 시스템.
  18. 제17항에 있어서, 상기 노드-대-노드 커넥션은, 상기 초기 패킷에 응답하여, 상기 원격 커넥션 식별자를 포함하는 확인 패킷을 상기 원격 노드로부터 상기 로컬 노드로 전송함으로써 설정되는 것인 운영 시스템.
  19. 컴퓨터 판독 가능한 매체 상에 구현되는 분산형 운영 시스템에 있어서,
    로컬 프로세서 상에서 동작하는 로컬 스레드를 포함하고, 로컬 노드로부터 메시지를 전달하고 로컬 노드에서 메시지를 수신하도록 동작 가능한 로컬 노드와,
    복수의 네트워크 인터페이스를 통해 상기 로컬 노드와 통신하며, 원격 프로세서 상에서 동작하는 원격 스레드를 포함하고, 원격 노드로부터 메시지를 전달하고 원격 노드에서 메시지를 수신하도록 동작 가능한 원격 노드
    를 포함하고,
    상기 로컬 노드는 또한,
    상기 로컬 스레드로부터 전송 요구를 수신하는 것에 응답하여, 상기 원격 노드와의 노드-대-노드 커넥션을 설정하도록 동작 가능하고,
    상기 복수의 네트워크 인터페이스를 통해 상기 로컬 노드로부터 상기 원격 노드로의 메시지 전달을 관리하도록 동작 가능하며,
    상기 원격 노드로부터 메시지를 수신하고 그 메시지를 상기 로컬 스레드에 포워딩하도록 동작 가능하며,
    상기 원격 노드는 또한,
    상기 로컬 노드와의 상기 노드-대-노드 커넥션을 설정하도록 동작 가능하고,
    상기 로컬 노드로부터 메시지를 수신하고 그 메시지를 상기 원격 스레드에 포워딩하도록 동작 가능하며,
    상기 노드-대-노드 커넥션은,
    원격 노드에 대한 전송 요구를 로컬 노드에 의해 생성하고, 상기 원격 노드를 나타내는 로컬 노드 디스크립터 및 로컬 커넥션 식별자를 포함하는 초기 패킷을 상기 로컬 노드에 의해 상기 원격 노드로 전송하고,
    상기 초기 패킷을 원격 노드에 의해 수신하고,
    상기 로컬 노드 디스크립터와 연관된 수신 커넥션 구조를 상기 원격 노드에 의해 생성하고,
    상기 원격 노드에 의해 그리고 상기 초기 패킷의 수신에 응답하여, 상기 로컬 노드 디스크립터와 상기 로컬 커넥션 식별자와 상기 로컬 노드를 나타내는 원격 노드 디스크립터와 원격 커넥션 식별자를 포함하는 확인 패킷을 상기 로컬 노드에 전송하여 전송 커넥션을 설정하며,
    상기 로컬 노드에 의해 상기 확인 패킷을 수신함으로써,
    설정되는 것인, 운영 시스템.
  20. 제19항에 있어서, 상기 로컬 커넥션 식별자 및 상기 원격 커넥션 식별자는 점진적으로 증가하는 카운터를 포함하는 것인 운영 시스템.
  21. 제19항에 있어서, 상기 로컬 노드는 또한,
    상기 원격 노드에 대하여 복수의 전송 요구를 생성하도록 동작 가능하고,
    상기 복수의 전송 요구를 순서대로 서비스하도록 동작 가능한 것인 운영 시스템.
  22. 제21항에 있어서, 상기 로컬 노드는 또한 상기 로컬 노드 디스크립터 및 상기 로컬 커넥션 식별자를 저장할 수 있는 전송 커넥션 구조를 생성하도록 동작 가능한 것인 운영 시스템.
  23. 제22항에 있어서, 상기 로컬 노드는 또한,
    상기 로컬 노드에 의해 상기 복수의 전송 요구의 대기열을 생성하도록 동작 가능하고,
    상기 전송 요구의 대기열을 상기 전송 커넥션 구조에 저장하도록 동작 가능한 것인 운영 시스템.
  24. 제19항에 있어서, 상기 로컬 노드는 또한 상기 원격 노드를 주기적으로 폴링하도록 동작 가능한 것인 운영 시스템.
  25. 제24항에 있어서, 상기 로컬 노드는 또한 상기 폴링에 대해 아무런 응답도 수신되지 않으면 상기 전송 커넥션을 파괴하도록 동작 가능한 것인 운영 시스템.
  26. 제19항에 있어서, 상기 수신 커넥션 구조는 상기 로컬 노드 디스크립터와, 상기 로컬 커넥션 식별자와, 상기 원격 노드 디스크립터와, 상기 원격 커넥션 식별자를 저장할 수 있는 것인 운영 시스템.
  27. 분산형 메시지 전달 운영 시스템의 노드들 간의 통신을 관리하는 방법에 있어서,
    로컬 노드에서, 데이터를 원격 노드에 전송하도록 요구하는 전송 요구를 생성하는 단계로서, 상기 로컬 노드와 상기 원격 노드는 제1 인터페이스 및 제2 인터페이스를 통해 통신할 수 있는 것인, 상기 전송 요구를 생성하는 단계;
    상기 로컬 노드와 연관된 로컬 커넥션 식별자 및 상기 원격 노드와 연관된 원격 커넥션 식별자와 연관되어 있는 커넥션을 상기 로컬 노드와 원격 노드 사이에 설정하는 단계;
    상기 커넥션을 통해 데이터를 전송하는 단계;
    상기 데이터를 전송한 후 상기 로컬 노드에 의해, 상기 로컬 커넥션 식별자 및 상기 원격 커넥션 식별자를 포함하는 폴 패킷을 상기 제1 및 제2 인터페이스를 통해 상기 원격 노드에 전송하는 단계; 및
    수신된 상기 폴 패킷에 대한 응답에 기초하여, 상기 제1 및 제2 인터페이스가 동작 가능한지 여부를 결정하는 단계
    를 포함하는 통신 관리 방법.
  28. 제27항에 있어서, 상기 로컬 커넥션 식별자 및 상기 원격 커넥션 식별자는 점진적으로 증가하는 카운터를 포함하는 것인 통신 관리 방법.
  29. 제27항에 있어서,
    상기 로컬 노드가 상기 원격 노드에 대하여 복수의 전송 요구를 생성하는 것을 수행하는 단계; 및
    상기 로컬 노드가 상기 복수의 전송 요구를 순서대로 서비스하는 것을 수행하는 단계를 더 포함하는 통신 관리 방법.
  30. 제29항에 있어서, 상기 로컬 노드가 상기 로컬 노드 디스크립터와 상기 로컬 커넥션 식별자를 저장할 수 있는 전송 커넥션 구조를 생성하는 것을 수행하는 단계를 더 포함하는 통신 관리 방법.
  31. 제30항에 있어서, 상기 로컬 노드에 의해 상기 복수의 전송 요구의 대기열을 생성하는 단계; 및
    상기 전송 요구의 대기열을 상기 전송 커넥션 구조에 저장하는 단계를 더 포함하는 통신 관리 방법.
  32. 제27항에 있어서, 상기 원격 노드를 주기적으로 폴링하는 단계를 더 포함하는 통신 관리 방법.
  33. 제32항에 있어서, 상기 폴링에 대해 아무런 응답도 수신되지 않으면 상기 전송 커넥션을 파괴하는 단계를 더 포함하는 통신 관리 방법.
  34. 제27항에 있어서, 상기 수신 커넥션 구조는 상기 로컬 노드 디스크립터와, 상기 로컬 커넥션 식별자와, 상기 원격 노드 디스크립터와, 상기 원격 커넥션 식별자를 저장할 수 있는 것인 통신 관리 방법.
KR1020060049352A 2005-06-03 2006-06-01 개선된 분산형 커널 운영 시스템 Expired - Fee Related KR101365838B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/145,293 2005-06-03
US11/145,293 US7840682B2 (en) 2005-06-03 2005-06-03 Distributed kernel operating system

Publications (2)

Publication Number Publication Date
KR20060126374A KR20060126374A (ko) 2006-12-07
KR101365838B1 true KR101365838B1 (ko) 2014-02-21

Family

ID=36981169

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060049352A Expired - Fee Related KR101365838B1 (ko) 2005-06-03 2006-06-01 개선된 분산형 커널 운영 시스템

Country Status (6)

Country Link
US (3) US7840682B2 (ko)
EP (1) EP1729481A3 (ko)
JP (1) JP2006338666A (ko)
KR (1) KR101365838B1 (ko)
CN (1) CN1881945B (ko)
CA (1) CA2547880C (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7549151B2 (en) * 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US8667184B2 (en) 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7840682B2 (en) * 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
EP1917631A1 (en) * 2005-08-25 2008-05-07 International Business Machines Corporation Method and system for displaying performance constraints in a flow design tool
US7680096B2 (en) * 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network
US8176525B2 (en) * 2006-09-29 2012-05-08 Rockstar Bidco, L.P. Method and system for trusted contextual communications
US8509081B2 (en) * 2008-05-01 2013-08-13 Saudi Arabian Oil Company Adaptive hybrid wireless and wired process control system and method
CN101621405B (zh) * 2009-07-07 2012-02-29 中兴通讯股份有限公司 分布式管理监控系统及其监控方法、创建方法
US8881256B1 (en) * 2011-12-21 2014-11-04 Amazon Technologies, Inc. Portable access to auditing information
GB2502277B (en) * 2012-05-21 2015-07-08 Rosberg System As Data communication network
US10073987B2 (en) 2013-04-02 2018-09-11 Western Digital Technologies, Inc. Methods and systems for privileged execution support for file system commands on a storage device
US9716716B2 (en) * 2014-09-17 2017-07-25 Microsoft Technology Licensing, Llc Establishing trust between two devices
JP6545802B2 (ja) * 2014-12-22 2019-07-17 インテル コーポレイション ネットワークデバイスにおける受信パケットの処理と関連する電力管理のための技術
US10819759B2 (en) * 2015-04-30 2020-10-27 At&T Intellectual Property I, L.P. Apparatus and method for managing events in a computer supported collaborative work environment
US11006160B2 (en) * 2015-08-24 2021-05-11 Microsoft Technology Licensing, Llc Event prediction enhancements
CN107733945B (zh) * 2016-08-11 2019-03-12 北京百度网讯科技有限公司 用于机器人操作系统的信息传输方法及装置
US11316744B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Organizing execution of distributed operating systems for network devices
US11316775B2 (en) * 2016-12-21 2022-04-26 Juniper Networks, Inc. Maintaining coherency in distributed operating systems for network devices
US10887173B2 (en) 2016-12-21 2021-01-05 Juniper Networks, Inc. Communicating state information in distributed operating systems
US10742359B2 (en) * 2018-08-30 2020-08-11 Dell Products, L.P. Apparatus and method for improving messaging system reliability
US11095742B2 (en) 2019-03-27 2021-08-17 Juniper Networks, Inc. Query proxy for delivery of dynamic system state
US10785346B1 (en) * 2019-04-08 2020-09-22 2236008 Ontario Inc. Unblocking processes in interprocess messaging passing
US11632326B1 (en) * 2021-06-15 2023-04-18 Amazon Technologies, Inc. Selection of network paths for reliable communications based on network reliability metrics

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697876B1 (en) * 1998-08-26 2004-02-24 Qnx Software Systems Ltd. Distributed kernel operating system

Family Cites Families (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4887204A (en) 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US4897781A (en) 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US5253342A (en) 1989-01-18 1993-10-12 International Business Machines Corporation Intermachine communication services
DE69129443T2 (de) 1990-12-14 1999-01-14 Sun Microsystems Inc Verfahren zum Betrieb zeitkritischer Prozesse in einer Fenstersystemumgebung
US5442785A (en) 1991-10-08 1995-08-15 Unisys Corporation Method and apparatus for passing messages between application programs on host processors coupled to a record lock processor
US5428803A (en) 1992-07-10 1995-06-27 Cray Research, Inc. Method and apparatus for a unified parallel processing architecture
US5410709A (en) 1992-12-17 1995-04-25 Bull Hn Information System Inc. Mechanism for rerouting and dispatching interrupts in a hybrid system environment
DE69327448T2 (de) 1992-12-21 2004-03-04 Sun Microsystems, Inc., Mountain View Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
US6157961A (en) 1992-12-21 2000-12-05 Sun Microsystems, Inc. Client-side stub interpreter
US5566302A (en) 1992-12-21 1996-10-15 Sun Microsystems, Inc. Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
US5452447A (en) 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
DE69429686T2 (de) 1993-02-25 2003-04-30 Sun Microsystems, Inc. Transaktionsverwaltung in objektorientiertem System
EP0622731A3 (en) 1993-04-26 1995-02-15 Ibm Boot architecture for micro-core based systems.
US5652885A (en) 1993-05-25 1997-07-29 Storage Technology Corporation Interprocess communications system and method utilizing shared memory for message transfer and datagram sockets for message control
GB9323241D0 (en) 1993-11-11 1994-01-05 Int Computers Ltd Message handler
US5581705A (en) 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
AU1747395A (en) 1994-03-30 1995-10-23 Apple Computer, Inc. Object oriented message passing system and method
JPH08180001A (ja) 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
US5734903A (en) 1994-05-13 1998-03-31 Apple Computer, Inc. System and method for object oriented message filtering
US5566337A (en) 1994-05-13 1996-10-15 Apple Computer, Inc. Method and apparatus for distributing events in an operating system
US5574903A (en) 1994-05-13 1996-11-12 Apple Computer, Inc. Method and apparatus for handling request regarding information stored in a file system
JP2507235B2 (ja) * 1994-06-24 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション クライアント・サ―バ・コンピュ―タ・システム、及びそのクライアント・コンピュ―タ、サ―バ・コンピュ―タ、並びにオブジェクト更新方法
DE69530731D1 (de) * 1994-07-22 2003-06-18 Sun Microsystems Inc Verfahren und Gerät für Speicherplatzeffiziente Kommunikation zwischen Prozessen
CA2118201C (en) 1994-10-14 2003-02-04 Patrick M. Hayden Photon windowing kernel
US5617568A (en) * 1994-12-14 1997-04-01 International Business Machines Corporation System and method for supporting file attributes on a distributed file system without native support therefor
US5644719A (en) 1994-12-16 1997-07-01 Unisys Corporation Interprocess communication apparatus interposed between application processes and the operating systems of hosting computers in a system of networked computers
US5634068A (en) 1995-03-31 1997-05-27 Sun Microsystems, Inc. Packet switched cache coherent multiprocessor system
US5768511A (en) * 1995-09-18 1998-06-16 International Business Machines Corporation Method and system for managing objects in networked computer system with action performed in the server and object updated in the client
US6047323A (en) 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US5802288A (en) 1995-10-26 1998-09-01 International Business Machines Corporation Integrated communications for pipelined computers
KR0170500B1 (ko) 1995-11-18 1999-03-30 양승택 멀티프로세서 시스템
US6064671A (en) 1995-12-08 2000-05-16 Killian; Michael G. Multi-homed end system for increasing computers network bandwidth
US5694600A (en) 1996-02-09 1997-12-02 Iomega Corporation Methods and apparatus for booting a computer having a removable media disk drive
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6049838A (en) 1996-07-01 2000-04-11 Sun Microsystems, Inc. Persistent distributed capabilities
US5918019A (en) * 1996-07-29 1999-06-29 Cisco Technology, Inc. Virtual dial-up protocol for network communication
US6061740A (en) * 1996-12-09 2000-05-09 Novell, Inc. Method and apparatus for heterogeneous network management
US6434459B2 (en) 1996-12-16 2002-08-13 Microsoft Corporation Automobile information system
US6226689B1 (en) * 1997-01-29 2001-05-01 Microsoft Corporation Method and mechanism for interprocess communication using client and server listening threads
US5978912A (en) 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
US6006283A (en) * 1998-02-10 1999-12-21 Lsi Logic Corporation System and method for managing information exchanges in a disk interface chip
JPH11249918A (ja) 1998-03-04 1999-09-17 Sony Corp データ処理方法、記録媒体及びデータ処理装置
JPH11249898A (ja) 1998-03-04 1999-09-17 Sony Corp データ処理方法、記録媒体及びデータ処理装置
US6167430A (en) 1998-05-12 2000-12-26 Unisys Corporation Multicomputer with distributed directory and operating system
US6647423B2 (en) 1998-06-16 2003-11-11 Intel Corporation Direct message transfer between distributed processes
KR20000008628A (ko) 1998-07-15 2000-02-07 구자홍 컴퓨터 시스템의 부팅음악 출력방법
US6385659B1 (en) 1998-08-19 2002-05-07 International Business Machines Corporation Handling of asynchronous message packet in a multi-node threaded computing environment
US6412018B1 (en) 1998-08-19 2002-06-25 International Business Machines Corporation System for handling asynchronous message packet in a multi-node threaded computing environment
US6415332B1 (en) 1998-08-19 2002-07-02 International Business Machines Corporation Method for handling of asynchronous message packet in a multi-node threaded computing environment
US6321279B1 (en) 1998-09-14 2001-11-20 Compaq Computer Corporation System for implementing intelligent I/O processing in a multi-processor system by redirecting I/O messages to a target central processor selected from the multi-processor system
US6466996B1 (en) 1998-09-14 2002-10-15 Compaq Information Technologies Group, L.P. Method and system for implementing intelligent distributed input-output processing as a software process in a host operating system environment
US6757745B1 (en) 1998-10-19 2004-06-29 Siemens Aktiengesellschaft Distributed operating system for controlling network element in a data or telecomunication network
US6519594B1 (en) 1998-11-14 2003-02-11 Sony Electronics, Inc. Computer-implemented sharing of java classes for increased memory efficiency and communication method
US7430171B2 (en) * 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US6389462B1 (en) 1998-12-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for transparently directing requests for web objects to proxy caches
US6272629B1 (en) 1998-12-29 2001-08-07 Intel Corporation Method and apparatus for establishing network connection for a processor without an operating system boot
US6353885B1 (en) 1999-01-26 2002-03-05 Dell Usa, L.P. System and method for providing bios-level user configuration of a computer system
US6748452B1 (en) 1999-03-26 2004-06-08 International Business Machines Corporation Flexible interprocess communication via redirection
US6757903B1 (en) 1999-04-05 2004-06-29 Gateway, Inc. Object driven software architecture method and apparatus
US6487455B1 (en) 1999-09-30 2002-11-26 Rockwell Automation Technologies, Inc. Distributed real time operating system
US6259264B1 (en) * 1999-08-30 2001-07-10 Agere Systems Optoelectronics Guardian Corp. Apparatus and method for testing semiconductor laser chips
US6731601B1 (en) * 1999-09-09 2004-05-04 Advanced Micro Devices, Inc. Apparatus and method for resetting a retry counter in a network switch port in response to exerting backpressure
EP1188294B1 (en) 1999-10-14 2008-03-26 Bluearc UK Limited Apparatus and method for hardware implementation or acceleration of operating system functions
US20020161848A1 (en) 2000-03-03 2002-10-31 Willman Charles A. Systems and methods for facilitating memory access in information management environments
US6757904B1 (en) 2000-03-10 2004-06-29 Microsoft Corporation Flexible interface for communicating between operating systems
US6757242B1 (en) * 2000-03-30 2004-06-29 Intel Corporation System and multi-thread method to manage a fault tolerant computer switching cluster using a spanning tree
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates in a distributed computing environment
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US6807564B1 (en) * 2000-06-02 2004-10-19 Bellsouth Intellectual Property Corporation Panic button IP device
US6785892B1 (en) 2000-06-23 2004-08-31 Unisys Communications between partitioned host processors and management processor
US6981055B1 (en) 2000-08-22 2005-12-27 Internap Network Services Corporation Method and system for optimizing routing through multiple available internet route providers
US6728722B1 (en) 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces
US6981244B1 (en) 2000-09-08 2005-12-27 Cisco Technology, Inc. System and method for inheriting memory management policies in a data processing systems
US7133929B1 (en) 2000-10-24 2006-11-07 Intel Corporation System and method for providing detailed path information to clients
KR100471055B1 (ko) 2000-11-17 2005-03-07 삼성전자주식회사 컴퓨터 및 그 제어방법
US7058955B2 (en) 2000-12-06 2006-06-06 Microsoft Corporation Method and system for passing messages between threads
US7051326B2 (en) 2000-12-13 2006-05-23 International Business Machines Corporation Code image distribution in a multi-node network of processors
US6801994B2 (en) 2000-12-20 2004-10-05 Microsoft Corporation Software management systems and methods for automotive computing devices
US6775235B2 (en) 2000-12-29 2004-08-10 Ragula Systems Tools and techniques for directing packets over disparate networks
US6988140B2 (en) 2001-02-23 2006-01-17 Sun Microsystems, Inc. Mechanism for servicing connections by disassociating processing resources from idle connections and monitoring the idle connections for activity
US20020129172A1 (en) 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a shared I/O driver
US6985951B2 (en) 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US6886031B2 (en) 2001-03-29 2005-04-26 Sun Microsystems, Inc. Efficient connection and memory management for message passing on a single SMP or a cluster of SMPs
US7243160B2 (en) 2001-05-10 2007-07-10 Intel Corporation Method for determining multiple paths between ports in a switched fabric
US6947417B2 (en) * 2001-06-29 2005-09-20 Ip Unity Method and system for providing media services
US7161939B2 (en) * 2001-06-29 2007-01-09 Ip Unity Method and system for switching among independent packetized audio streams
WO2003017601A1 (en) * 2001-08-18 2003-02-27 Smallbig Technology Inc. An apparatus connected multi ip broadband line and packet routing method thereof
GB2379039B (en) 2001-08-22 2005-03-23 Ibm Transaction processing in a distributed data processing system
US7016348B2 (en) * 2001-08-28 2006-03-21 Ip Unity Method and system for direct access to web content via a telephone
US6978018B2 (en) 2001-09-28 2005-12-20 Intel Corporation Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment
US20030115366A1 (en) 2001-12-18 2003-06-19 Robinson Brian R. Asynchronous message delivery system and method
US6993746B2 (en) 2002-04-19 2006-01-31 Wind River Systems, Inc. Configuration tool for building a user application for multiple operating systems
US20030236813A1 (en) * 2002-06-24 2003-12-25 Abjanic John B. Method and apparatus for off-load processing of a message stream
US7058717B2 (en) 2002-07-25 2006-06-06 International Business Machines Corporation Method and system for providing highly available services based on a load balancing policy and a reusable connection context object
US7219149B2 (en) 2003-06-12 2007-05-15 Dw Holdings, Inc. Versatile terminal adapter and network for transaction processing
US20040133668A1 (en) 2002-09-12 2004-07-08 Broadcom Corporation Seamlessly networked end user device
US7103745B2 (en) 2002-10-17 2006-09-05 Wind River Systems, Inc. Two-level operating system architecture
US7124211B2 (en) 2002-10-23 2006-10-17 Src Computers, Inc. System and method for explicit communication of messages between processes running on different nodes in a clustered multiprocessor system
TW588284B (en) 2002-11-12 2004-05-21 Mitac Technology Corp Computer real-time power-on system and method
US7036040B2 (en) 2002-11-26 2006-04-25 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
US20040143696A1 (en) 2003-01-21 2004-07-22 Francis Hsieh Data storage system for fast booting of computer
JP3861828B2 (ja) 2003-02-26 2006-12-27 カシオ計算機株式会社 カメラ装置、及びカメラ装置の起動方法、プログラム
US8788591B2 (en) 2003-03-05 2014-07-22 Jianguo Jiang Asynchronous mechanism and message pool
US20040216135A1 (en) 2003-04-23 2004-10-28 Heimbeck Reid D. Selective user input notification for multiple applications
US7724671B2 (en) * 2003-05-13 2010-05-25 Intel-Tel, Inc. Architecture for resource management in a telecommunications network
US7475233B2 (en) 2003-05-20 2009-01-06 Intel Corporation Method and apparatus for displaying a language specific text string in a pre-boot environment
JP3906825B2 (ja) 2003-06-17 2007-04-18 日本電気株式会社 計算機システム、計算機システム起動方法およびプログラム
US6959264B2 (en) 2003-09-30 2005-10-25 International Business Machines Corporation Autonomous computing probe agent
US7174447B2 (en) 2003-11-14 2007-02-06 Intel Corporation Providing a pre-boot driver for use during operating system runtime of a computer system
US8065280B2 (en) 2003-12-17 2011-11-22 International Business Machines Corporation Method, system and computer program product for real-time data integrity verification
US7266727B2 (en) 2004-03-18 2007-09-04 International Business Machines Corporation Computer boot operation utilizing targeted boot diagnostics
US20050268300A1 (en) 2004-05-14 2005-12-01 Microsoft Corporation Distributed task scheduler for computing environments
KR100654433B1 (ko) 2004-05-18 2006-12-06 삼성전자주식회사 무선 네트워크의 정보 처리 장치 및 방법
US7240137B2 (en) 2004-08-26 2007-07-03 International Business Machines Corporation System and method for message delivery across a plurality of processors
US20060095724A1 (en) 2004-10-28 2006-05-04 Microsoft Corporation Message-passing processor
US7343454B2 (en) 2004-11-16 2008-03-11 International Business Machines Corporation Methods to maintain triangle ordering of coherence messages
US7512957B2 (en) 2004-12-03 2009-03-31 Microsoft Corporation Interface infrastructure for creating and interacting with web services
US7549151B2 (en) 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US7590839B2 (en) 2005-03-22 2009-09-15 Qnx Software Systems Gmbh & Co. Kg System employing fast booting of application programs
US20060227703A1 (en) 2005-04-08 2006-10-12 Wen-Chi Hung Operating method for dynamic physical network layer monitoring
US7356628B2 (en) 2005-05-13 2008-04-08 Freescale Semiconductor, Inc. Packet switch with multiple addressable components
US7461247B2 (en) 2005-06-03 2008-12-02 Qnx Software Systems Gmbh & Co. Kg Method for transitioning control of a peripheral device from a first device driver to a second device driver during operating system initialization
US8667184B2 (en) 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7840682B2 (en) * 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US7680096B2 (en) 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697876B1 (en) * 1998-08-26 2004-02-24 Qnx Software Systems Ltd. Distributed kernel operating system

Also Published As

Publication number Publication date
US20110035502A1 (en) 2011-02-10
US8078716B2 (en) 2011-12-13
CN1881945A (zh) 2006-12-20
US8386586B2 (en) 2013-02-26
KR20060126374A (ko) 2006-12-07
EP1729481A3 (en) 2007-09-19
US7840682B2 (en) 2010-11-23
US20120179777A1 (en) 2012-07-12
CN1881945B (zh) 2012-07-04
EP1729481A2 (en) 2006-12-06
CA2547880C (en) 2016-10-25
JP2006338666A (ja) 2006-12-14
US20060277285A1 (en) 2006-12-07
CA2547880A1 (en) 2006-12-03

Similar Documents

Publication Publication Date Title
KR101365838B1 (ko) 개선된 분산형 커널 운영 시스템
KR101363167B1 (ko) 개선된 분산형 커널 운영 시스템
US7627627B2 (en) Controlling command message flow in a network
US7693952B2 (en) Availability and scalability in a messaging system in a manner transparent to the application
US7676580B2 (en) Message delivery with configurable assurances and features between two endpoints
US9210073B2 (en) System and method for message routing in a network
US7466699B2 (en) System for communicating between network end-points using a payload offset and buffer pool handle

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20060601

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20110531

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20060601

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20121022

Patent event code: PE09021S01D

N231 Notification of change of applicant
PN2301 Change of applicant

Patent event date: 20130408

Comment text: Notification of Change of Applicant

Patent event code: PN23011R01D

N231 Notification of change of applicant
PN2301 Change of applicant

Patent event date: 20130424

Comment text: Notification of Change of Applicant

Patent event code: PN23011R01D

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20130531

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20131230

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20140214

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20140214

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20170203

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20170203

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20180131

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20180131

Start annual number: 5

End annual number: 5

FPAY Annual fee payment

Payment date: 20200131

Year of fee payment: 7

PR1001 Payment of annual fee

Payment date: 20200131

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20220128

Start annual number: 9

End annual number: 9

PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20241125