KR20090064366A - 데이터 버퍼링 및 통지 시스템 및 그 방법들 - Google Patents

데이터 버퍼링 및 통지 시스템 및 그 방법들 Download PDF

Info

Publication number
KR20090064366A
KR20090064366A KR1020097003187A KR20097003187A KR20090064366A KR 20090064366 A KR20090064366 A KR 20090064366A KR 1020097003187 A KR1020097003187 A KR 1020097003187A KR 20097003187 A KR20097003187 A KR 20097003187A KR 20090064366 A KR20090064366 A KR 20090064366A
Authority
KR
South Korea
Prior art keywords
program
message
network
temporary buffer
host device
Prior art date
Application number
KR1020097003187A
Other languages
English (en)
Inventor
할랜 티. 비벌리
찰스 에이. 머스타
Original Assignee
빅풋 네트웍스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 빅풋 네트웍스, 인크. filed Critical 빅풋 네트웍스, 인크.
Publication of KR20090064366A publication Critical patent/KR20090064366A/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)

Abstract

컴퓨터 디바이스에서의 인터셉터 프로그램은 피어 프로그램을 대상으로 한 어떤 외부에서 개시된 통신들을 이러한 통신들이 네트워크 스택 상에 위치되기 전에 인터셉트한다. 또한, 인터셉터 프로그램은 커널 공간보다 애플리케이션 공간 내의 버퍼에 수신된 통신들을 저장한다. 그 후, 인터셉터 프로그램은 피어 프로그램에 대한 데이터가 네트워크 스택에 위치되는지를 질문하는 폴링 요청들을 피어 프로그램으로부터 인터셉트하고, 응답으로 피어 프로그램에 버퍼링된 통신들을 제공할 수 있다. 통신들이 커널 공간보다 애플리케이션 공간에 저장되기 때문에, 데이터가 피어 프로그램에 고속으로 제공될 수 있어서, 프로그램이 클라이언트 통신들에 응답할 수 있는 속도를 개선한다.
컴퓨터 디바이스, 인터셉터 프로그램, 네트워크 스택, 애플리케이션 공간, 피어 프로그램.

Description

데이터 버퍼링 및 통지 시스템 및 그 방법들{DATA BUFFERING AND NOTIFICATION SYSTEM AND METHODS THEREOF}
본 발명은 일반적으로 데이터 통신들에 관한 것이며, 더 명확하게는, 컴퓨터 디바이스에서 수신된 데이터를 관리하는 시스템 및 방법에 관한 것이다.
최근, 통신 네트워크의 2개 이상의 요소들 사이의 적시의, 그리고 효율적인 상호작용들에 의존하는 여러 애플리케이션들이 개발되었다. 예를 들어, 온라인 게이밍(online gaming) 분야에서, 사용자 머신(user machine)들 상에서 실행되는 수백 또는 수천 개의 게이밍 클라이언트(gaming client)들은 네트워킹된 컴퓨터 상에서 실행되는 중앙 서버와 상호작용하고 있을 수 있다. 이와 같은 아키텍처(architecture)에 의하여, 게임 서버 프로그램은 종종 클라이언트들에 콘텐트를 제공하고, 클라이언트 요청들을 수신하고, 이러한 요청들을 프로세싱하고, 이러한 요청들에 응답하고, 이러한 요청들을 다른 클라이언트들의 요청들과 동기화하는 태스크를 한다. 클라이언트 요청들에 적시에 응답하는 서버 프로그램 능력에 영향을 줄 수 있는 하나의 요인은 서버 프로그램이 자신이 클라이언트로부터 데이터를 수신하였다고 통지받을 수 있는 속도, 및 데이터가 상기 서버 프로그램에 제공될 수 있는 속도이다. 하나의 종래의 방법은 서버 프로그램이 데이터가 수신되었는지를 결정하기 위하여 서버 운영 시스템의 네트워크 스택(network stack)에 정기적으로 폴링(polling)하는 것이다. 그러나, 이 방법은 바람직하지 않은 량의 시간을 필요로 하여, 클라이언트 요청들에 응답하는 서버 프로그램에서 바람직하지 않은 지연을 발생시킨다. 더구나, 클라이언트 프로그램이 자신이 서버로부터 데이터를 수신하였다고 통지받을 수 있는 속도, 및 데이터가 서버 프로그램에 제공될 수 있는 속도가 또한 바람직하지 않은 지연을 초래할 수 있다. 유사한 문제들이 피어-투-피어 네트워크(peer-to-peer network)들에서 발생하여, 피어-투-피어 네트워크 내의 컴퓨터 디바이스들에서 프로그램들 사이의 통신들에서 바람직하지 않은 지연들을 발생시킬 수 있다.
게이밍 상황에서, 이것은 게임 정지(game freeze)들, 스터터링(stuttering), 워핑(warping), 등과 같은 당황스러운 이벤트(event)들을 발생시킬 수 있다. 이와 같이, 수신된 데이터를 관리하는 개선된 프로세싱 시스템 및 방법이 필요하다.
설명의 간소화 및 명확화를 위하여, 도면들에 도시된 요소들은 반드시 크기대로 도시되어 있지는 않다는 점이 인식될 것이다. 예를 들어, 요소들 중 일부의 치수들은 다른 요소들에 비하여 과장된다. 본 명세서의 내용들을 포함하는 실시예들이 본원에 제공된 도면들과 관련하여 도시 및 설명된다.
이하에 논의된 실시예들은 부분적으로 네트워크 요소들 사이의 통신 상호작용의 일부 또는 모두를 관리하는 분산형 컴퓨팅 솔루션(distributed computing solution)들을 설명한다. 이 상황에서, 통신 상호작용은 정보를 송신하고자 하는 것, 정보를 송신하는 것, 정보를 요청하는 것, 정보를 수신하는 것, 또는 정보에 대한 요청을 수신하는 것 중 하나 이상일 수 있다. 이와 같이, 통신 상호작용은 단-방향성, 양-방향성, 또는 다-방향성일 수 있다. 일부 상황들에서, 통신 상호작용은 비교적 복잡할 수 있고, 2개 이상의 네트워크 요소들을 포함할 수 있다. 예를 들어, 통신 상호작용은 피어-투-피어 네트워크- 각각의 네트워크 요소가 서로 정보를 송신하고 수신하는 -에서 서버 또는 컴퓨터 디바이스들과 클라이언트 사이의 "대화(conversation)" 또는 일련의 관련된 통신들일 수 있다. 통신 상호작용이 어떤 형태를 취하든 간에, 관련된 네트워크 요소들이 임의의 특정 형태를 취할 필요가 없다는 점이 주의되어야 한다. 네트워크 요소는 노드(node), 하드웨어 제품, 소프트웨어, 펌웨어(firmware), 미들웨어(middleware), 컴퓨팅 시스템의 어떤 다른 구성요소, 및/또는 이의 어떤 조합일 수 있다.
다음의 논의의 대부분이 온라인 게이밍과 연관된 특정 문제들에 초점이 맞춰질지라도, 본원에 개시된 내용들은 더 넓은 적용 가능성(applicability)을 가질 수 있다. 이와 같이, 래그(lag), 게임 정지들, 스터터링, 워핑, 등과 같은 게이밍 문제점에 관한 논의들은 본 명세서의 범위를 제한하고자 하는 것이 아니다. 게다가, 도 1과 관련하여 설명된 특정 실시예가 MMOG(Massively Multiplayer Online Game)을 포함할지라도, 주문형 비디오(Vedio On Demand), 엔터테인먼트 분배(entertainment distribution), 정보 분배, 등과 같은 다른 대화식 애플리케이션들이 또한 본원에 개시된 내용들을 통합하는 방식으로 구현될 수 있다.
고레벨로부터, 본 명세서의 내용들을 통합한 시스템은 사용자 머신에 상주하는 클라이언트 프로그램 및 사용자로부터 떨어진 컴퓨팅 디바이스에 상주하는 서버 프로그램, 또는 네트워크 내의 또 다른 디바이스에서 프로그램과 통신하는 피어-투-피어 네트워크 내의 하나의 디바이스에서의 프로그램과 같은, 네트워크 내의 상이한 컴퓨터 디바이스들에서 컴퓨터 프로그램들 사이의 통신들을 모니터링(monitoring)하는 프로세서 모듈(processor module)을 포함할 수 있다. 서버/클라이언트 아키텍처의 경우에, 서버 프로그램은 허브(hub) 및 스포크(spoke) 또는 중앙집중화된 서버 구성 내에 배치되는 2-층 아키텍처의 부분일 수 있다. 서버 프로그램은 또한 덜 중앙집중화된 모델에서 사용될 수 있다. 예를 들어, 서버 프로그램은 서버와 같은 기능을 수행하는 2개 이상의 클라이언트 프로그램들 중 하나로서 구현될 수 있다. 본원의 논의를 위하여, 네트워크 내의 또 다른 프로그램과 통신하는 프로그램은 본원에서 피어 프로그램(peer program)이라 칭해지며, 피어 프로그램을 실행하는 디바이스는 피어라 칭해진다.
그러나, 피어 프로그램이 구현되고, 피어 프로세서 모듈에서 인터셉터 프로그램(interceptor program)이 피어 프로그램을 대상으로 한 어떤 외부에서 개시된 통신들을 이러한 통신들이 네트워크 스택 상에 위치되기 전에 인터셉트하는데 사용될 수 있다. 또한, 인터셉터 프로그램은 수신된 통신들을 커널 공간(kernel space)보다는 오히려, 애플리케이션 공간 내의 버퍼에 저장하도록 구성될 수 있다. 그 후, 인터셉터 프로그램은 피어 프로그램에 대한 데이터가 네트워크 스택에 위치되는지를 질문하는 폴링 요청들을 피어 프로그램으로부터 인터셉트하고, 응답으로 피어 프로그램에 버퍼링된 통신들을 제공할 수 있다. 통신들이 커널 공간보다는 오히려, 애플리케이션 공간에 저장되기 때문에, 데이터가 피어 프로그램에 고속으로 제공될 수 있어서, 프로그램이 클라이언트 통신들에 응답할 수 있는 속도를 개선한다.
대안적으로, 네트워크 내의 또는 피어에서 디바이스는 네트워크 내의 또 다른 프로그램으로부터의 통신들을 모니터링하고, 피어 프로그램을 타겟으로 한 통신이 언제 수신되었는지 결정할 수 있다. 응답으로, 디바이스는 피어에서 인터럽트(interrupt)를 개시할 수 있다. 인터럽트를 위한 인터럽트 핸들러(interrupt handler)는 피어 프로그램에 대한 통신이 수신되었다는 것을 피어 프로그램에 통지하는 인터셉터 프로그램에 액세스하고, 피어 프로그램 또는 피어 프로그램이 데이터에 대해 아직 준비가 되지 않은 경우에 인터셉터 프로그램에 데이터를 제공한다. 상술된 바와 같이, 인터셉터 프로그램이 상기 데이터를 유지하는데 이용되는 경우, 상기 인터셉터 프로그램은 피어 프로그램이 준비가 될 때 커널 공간보다는 오히려 사용자 공간 내의 데이터로 응답할 수 있다. 방법들 둘 모두는 수신된 클라이언트 통신을 피어 프로그램에 제공하는데 있어서 레이턴시를 감소시킨다.
상술된 바와 같이, 본 출원은 2006년 7월 17일자로 출원된 미국 임시특허 출원 번호 제60/807,530호에 대한 우선권을 주장한다. 상기 임시출원은 부분적으로 본원에 개시된 내용들의 특정 구현예들을 설명하며, 이하에 첨부된 청구항들의 범위를 제한하지 않게 된다. 상기 임시출원 전체가 본원에 참조되어 있다.
도 1은 본 명세서의 내용들을 통합하는 네트워크 배열의 특정 실시예의 블록 도.
도 2는 본 명세서의 내용들을 통합하는 컴퓨팅 디바이스의 특정 실시예의 블록도.
도 3은 본 명세서의 내용들을 통합하는 컴퓨팅 디바이스 및 네트워크 디바이스의 대안적인 실시예의 블록도.
도 4는 본 명세서의 내용들을 통합하는 네트워크 디바이스 및 컴퓨팅 디바이스의 대안적인 실시예의 블록도.
도 5는 본 명세서의 내용들을 통합하는 네트워크 디바이스의 특정 실시예의 블록도.
도 1을 참조하면, 호스트 컴퓨팅 디바이스(102)에서 실행되는 호스트 프로그램(103), 네트워크 디바이스(104)를 포함하는 네트워크(106), 및 컴퓨팅 디바이스(108)에서 실행되는 피어 프로그램(107)을 포함하는 네트워크 배열의 특정 실시예의 블록도가 도시되어 있다. 네트워크 디바이스(104)의 실제 위치는 다른 배치들에서 변경될 수 있다. 예를 들어, 네트워크 디바이스는 네트워크 카드, 프로세서 동글(processor dongle), "랜-온 마더보드(Lan-on Motherboard)" 프로세서, 등으로서 호스트 컴퓨팅 디바이스(102)에서 구현될 수 있다. 도 1의 실시예에서, 네트워크(106)는 인터넷과 같은 광역 네트워크, 근거리 네트워크, 또는 어떤 다른 적절한 네트워크 또는 버스일 수 있다. 배열(100) 내에서, 컴퓨팅 디바이스들(102 및 108)은 유사하거나 상이할 수 있다. 예를 들어, 컴퓨팅 디바이스(108)는 로컬 사용자 컴퓨터(local user computer), 랩톱(laptop), 셀룰러 전화, 게이밍 콘솔(gaming console), 워크스테이션(workstation), 또는 어떤 다른 적절한 디바이스일 수 있고, 호스트 컴퓨팅 디바이스(102)는 피어 컴퓨터(peer computer), 워크스테이션, 컴퓨팅 디바이스(108)의 피어, 또는 어떤 다른 적절한 디바이스일 수 있다.
동작 시에, 피어 프로그램(107) 및 호스트 프로그램(103)은 네트워크(106)를 통하여, 그리고 특히 네트워크 디바이스(104)를 통하여 서로 통신할 수 있다. 일 실시예에서, 피어 프로그램(107) 및 호스트 프로그램(103)은 컴퓨팅 디바이스(108)의 사용자에게 온라인 경험을 제공하도록 함께 동작할 수 있다. 동작 시에, 피어 프로그램(107)은 컴퓨터 디바이스(102)로부터 콘텐트를 수신할 수 있고, 제공되는 콘텐트에 영향을 주거나 호스트 프로그램(103)에서 데이터를 변경시키기 위한 노력으로 호스트 프로그램(103)에 요청들을 때때로 송신할 수 있다. 도시된 바와 같이, 도 1은 피어 프로그램을 실행하는 단지 하나의 디바이스를 포함한다. 그러나, 실제로, 호스트 프로그램(103) 및 컴퓨팅 디바이스(102)는 동시에 또는 거의 동시에 많은 피어들에 콘텐트를 제공하고 있을 수 있다.
동작 시에, 피어 프로그램(107)은 정보를 업데이트하는 것, 태스크들이 수행되도록 요청하는 것, 등의 통신들 또는 메시지들을 호스트 프로그램(103)에 송신할 수 있다. 예를 들어, 호스트 프로그램(107)은 온라인 뱅킹 애플리케이션(on line banking application)일 수 있고, 피어 프로그램(107)은 웹 브라우저(web browser)일 수 있다. 피어 프로그램(107)은 계정 정보를 뷰잉하는 것, 거래들을 행하는 것, 등의 요청들을 호스트 프로그램(103)에 송신할 수 있다. 응답으로, 호스트 프로그 램(103)은 필요한 태스크들이 인증받았는지를 결정할 수 있고, 인증받은 경우에, 그 태스크들을 실행할 수 있다. 또 다른 실시예에서, 호스트 프로그램(103)은 서버 게임 프로그램이고, 피어 프로그램(107)은 사용자에게 온라인-게이밍 경험을 제공하는 피어-측 게임 프로그램이다. 또 다른 실시예에서, 호스트 프로그램(103) 및 피어 프로그램(107)은 각각의 컴퓨터 디바이스(102 및 106)에서 둘 이상의 플레이어들에게 게임 시뮬레이션 경험(game simulation experience)을 제공하도록 함께 동작한다.
호스트 프로그램(103)과 통신하기 위하여, 피어 프로그램(107)은 네트워크(106)를 통하여, 그리고 특히 네트워크 디바이스(104)로 메시지들을 송신한다. 각각의 메시지는 컴퓨터 디바이스(102)의 위치를 나타내는 어드레스 정보와 같은 정보를 포함한다. 각각의 메시지는 또한 메시지가 연관되는 컴퓨터 디바이스의 타겟 포트(target port)를 나타내는 포트 정보를 포함한다.
네트워크 디바이스(104)는 메시지들을 네트워크로부터 컴퓨터 디바이스(102)에 전달한다. 특정 실시예에서, 컴퓨터 디바이스(102)는 또한 상기 네트워크 디바이스(104)로부터의 메시지를 모니터링하는 인터셉터 프로그램(105)을 포함한다. 메시지가 호스트 프로그램(103)을 타겟으로 하지 않는 경우에, 인터셉터 프로그램(105)은 컴퓨터 디바이스(102)에서의 네트워크 스택 또는 데이터가 타겟으로 하는 어떤 다른 프로그램에 메시지를 제공한다. 그 후, 네트워크 스택이 메시지를 검색하기 위하여 컴퓨터 디바이스(102)에서 실행되는 다른 프로그램들(도시되지 않음)에 의해 액세스될 수 있거나, 또는 데이터가 상이한 프로그램(도시되지 않음)에 전달된다. 메시지가 호스트 프로그램(103)을 타겟으로 하는 경우에(예를 들어, 메시지에 의해 타겟이 되는 포트가 호스트 프로그램(103)과 연관되는 경우에), 인터셉터 프로그램(105)은 상기 메시지를 인터셉트하여 이를 호스트 프로그램(103)용 버퍼에 저장한다. 상기 버퍼는 상기 호스트 프로그램(103)에 "논리적으로 가까워서" 상기 버퍼는 고속으로 액세스될 수 있다. 따라서, 호스트 프로그램(103)이 메시지가 피어 프로그램(107)으로부터 송신되었는지를 (예컨대 폴링 요청을 통하여) 질문할 때, 인터셉터 프로그램(105)은 상기 질문을 수신하고, 상기 메시지가 네트워크 스택으로부터 검색될 수 있는 것보다 더 빨리 응답을 제공한다. 이 후에, 또는 폴링 요청과 동시에, 상기 데이터가 상기 호스트 프로그램(103)에 의해 요청되면, 상기 데이터는 메시지가 네트워크 스택으로부터 검색될 수 있는 것보다 더 빨리 호스트 프로그램(103)에 전달된다. 따라서, 인터셉터 프로그램(105)은 피어 프로그램(107)과 호스트 프로그램(103) 사이의 통신 효율을 개선한다. 이것은 레이턴시 문제들의 가능성을 감소시키고, 개선된 사용자 경험을 제공한다. 또한, 인터셉터 프로그램(105)이 피어 프로그램(107)과 호스트 프로그램(103) 사이에 위치되기 때문에, 상기 인터셉터 프로그램은 호스트 프로그램(103) 또는 피어 프로그램(107)의 재설계 없이 구현될 수 있다. 따라서, 인터셉터 프로그램(105)의 배치는 간소화된다. 부가적으로, 일 실시예에서, 호스트 프로그램(103)은 피어 프로그램(107)이 호스트 프로그램(103)을 대상으로 한 데이터를 송신하였는지를 검사하기 위하여 네트워크 스택에 빈번하게 폴링하도록 설계된다. 이러한 폴링 요청들은 부가적인 프로세싱 전력이 소모되도록 하여, 전체 동작을 저속화시킬 수 있다. 인터셉터 프로 그램(105)이 호스트 프로그램(103)에 논리적으로 가까운 데이터 준비 정보 및 버퍼들을 유지할 수 있고 폴링 응답을 더 빨리 제공할 수 있기 때문에, 컴퓨터 디바이스(102)에서의 프로세싱 전력이 절약된다.
대안적인 실시예에서, 인터셉터 프로그램(105) 중 일부 또는 모두는 네트워크 디바이스(104) 내에 상주한다. 이 경우에, 인터셉터 프로그램(105)은 컴퓨터 디바이스(102)에서 필요로 되는 버퍼 공간의 양을 절약하기 위하여 네트워크 디바이스(104) 내에 상주하는 버퍼들을 사용할 수 있다. 이용 가능한 데이터가 존재하는지 또는 아닌지의 정보를 갖는 상술된 인터셉터 프로그램(105)의 부분이 여전히 사용자 공간 내에 상주하므로, 폴링에서 유사한 개선들을 제공한다. 버퍼링된 데이터는 네트워크 디바이스(104) 내에 존재하고, 상기 데이터가 호스트 프로그램(103)에 의해 요청될 때 호스트 프로그램(103)에 직접 전달될 수 있다. 이 방법은 컴퓨터 디바이스(102)에서 메모리 사용량을 절약하고, 호스트 프로그램(103)이 데이터가 이용 가능한지 또는 아닌지의 정보에 대해 폴링하고 있을 때 프로세싱 전력을 또한 절약한다.
대안적인 실시예에서, 상기 인터셉터 프로그램(105)의 일부 또는 모두는 상기 네트워크 디바이스(104)에 상주할 수 있다. 이 경우 상기 인터셉터 프로그램(105)은 상기 컴퓨터 디바이스(102)에 필요한 버퍼 공간의 양을 절약하기 위해 상기 네트워크 디바이스(104)에 상주하는 버퍼들을 이용할 수 있다. 이용가능한 데이터의 유무를 아는 상기된 인터셉터 프로그램(105)의 일부는 여전히 사용자 공간에 상주할 수 있고, 이에 따라 폴링에 유사한 개선을 제공한다. 버퍼링된 데이터는 네트워크 디바이스(104)에 상주할 수 있고, 상기 데이터가 상기 호스트 프로그램(103)에 의해 요청될 때 상기 호스트 프로그램(103)에 바로 전송된다. 이러한 방법은 상기 컴퓨터 디바이스(102)에서 메모리 이용을 절약하고 또한 상기 호스트 프로그램(103)이 데이터가 이용가능한지에 대한 정보를 폴링할 때 프로세싱 전력을 절약한다.
또 다른 대안적인 실시예에서, 상기 네트워크 디바이스(104)는 호스트 프로그램(103)을 타겟으로 하는 메시지가 수신될 때 상기 컴퓨터 디바이스(102)에 인터럽트를 제공한다. 상기 인터럽트에 응답하여, 상기 컴퓨터 디바이스(102)는 상기 네트워크 디바이스(104)로부터 메시지를 수신하는 상기 인터셉터 프로그램(105)을 실행시킨다. 상기 호스트 프로그램(103)은 미결의 수신 명령들을 가질 수 있어서, 메시지가 수신되었다는 것을 즉시 통지받을 것이다.
대안적으로, 상기 호스트 프로그램은 나중에 폴링하거나 포스팅(posting)할 수 있고, 이 시점에, 데이터가 상술된 바와 같이 전달될 것이다. 응답으로, 호스트 프로그램(103)은 인터셉터 프로그램(105)으로부터 메시지를 검색한다.
도 2를 참조하면, 도 1의 상기 컴퓨터 디바이스(102)에 대응하는 컴퓨터 디바이스(202)의 특정 실시예의 블록도가 도시되어 있다. 상기 컴퓨터 디바이스(202)는 애플리케이션 공간(220) 및 커널 공간(230)을 포함한다. 본원에 이용된 바와 같이, 용어 커널 공간은 전형적으로 상기 컴퓨터 디바이스(202)에서 운영 시스템의 커널에 의해서만 액세스 가능한 메모리 어드레스 공간을 칭한다. 상기 컴퓨터 디바이스(202)에서 실행되는 애플리케이션들은 전형적으로 커널 공간에 직접적으로 액 세스할 수 있는 것이 아니라, 그 대신에 상기 운영 시스템 커널로부터 상기 커널 공간에 저장된 정보를 요청해야 한다. 애플리케이션 공간은 상기 컴퓨터 디바이스(202)에서 애플리케이션들에 의해 액세스 가능한 메모리 어드레스 공간을 칭한다. 애플리케이션들은 전형적으로 상기 커널 공간(230)에 저장된 정보보다 더 빨리 상기 애플리케이션 공간(220)에 저장된 정보에 액세스할 수 있는데, 그 이유는 상기 애플리케이션 공간(220)으로의 액세스가 전형적으로 상기 커널을 통해 수행되지 않기 때문이다. 상기 커널 공간(230) 및 상기 애플리케이션 공간(220) 둘 모두가 가상 메모리 어드레스 공간들일 수 있다는 점에 주의하라.
도시된 바와 같이, 상기 애플리케이션 공간(220)은 호스트 프로그램(203), 프로그램(207), 및 임시 버퍼(temporary buffer)를 포함한다. 상기 커널 공간(230)은 네트워크 스택(235)을 포함한다. 상기 컴퓨터 디바이스(202)는 또한 도시된 바와 같이, 커널 공간(230) 및 애플리케이션 공간(220) 둘 모두에 상주하는 인터셉터 프로그램(205)을 포함한다.
동작 시에, 상기 네트워크 스택(235)은 상기 네트워크(106)로부터 수신된 메시지들 및 다른 정보를 저장하도록 구성된다. 상기 네트워크 스택(235)은 상기 컴퓨터 디바이스(202)에서 실행되는 애플리케이션들로부터의 요청들에 응답하여 상기 커널에 의해 액세스된다. 상기 커널은 상기 네트워크 스택이 요청하는 애플리케이션에 대한 데이터를 저장하는지를 결정하고, 저장하는 경우에, 상기 데이터를 제공할 수 있다. 상기 커널이 전형적으로 상기 네트워크 스택(235)에 액세스하는 것 이외에 다수의 태스크들을 실행하기 때문에, 상기 네트워크 스택에 액세스하는 것은 전형적으로 상기 애플리케이션 공간(220)에 저장된 데이터로의 액세스보다 더 많은 시간이 걸린다.
상기 인터셉터 프로그램(205)은 상기 네트워크(106)로부터 수신된 메시지들을 모니터링한다. 메시지가 상기 호스트 프로그램(203)을 타겟으로 하지 않은 경우, 상기 인터셉터 프로그램(205)은 상기 네트워크 스택(235) 또는 자신이 지향되는 프로그램에 메시지를 제공하여, 상기 프로그램(207)과 같은 상기 컴퓨터 디바이스(202)에서 다른 프로그램에 의한 액세스에 이용 가능하게 된다. 상기 수신된 메시지가 상기 호스트 프로그램(203)을 타겟으로 하는 경우, 상기 인터셉터 프로그램은 상기 임시 버퍼(225)에 상기 메시지를 저장하거나, 또는 데이터가 준비되었다는 표시를 상기 임시 버퍼(225)에 저장한다. 대안적인 구현예에서, 임시 데이터 버퍼는 커널 공간(230)에 저장되고, 데이터가 준비되었다는 표시만이 상기 임시 버퍼(225)에 저장된다. 또 다른 구현예에서, 데이터가 준비되었다는 상기 표시가 상기 임시 버퍼(225)에 저장되지만, 상기 데이터 자신은 상기 네트워크 스택(235)에 제공된다.
상기 인터셉터 프로그램(205)은 또한 상기 호스트 프로그램(203)이 상기 네트워크 스택(235)에 액세스하는 것을 시도하고 있는지를 결정하기 위하여 상기 호스트 프로그램(203)과 상기 커널 사이의 통신들을 모니터링한다. 예를 들어, 상기 호스트 프로그램(203)은 상기 프로그램을 타겟으로 한 메시지가 상기 네트워크(106)로부터 수신되었는지를 결정하기 위하여 상기 네트워크 스택(235)에 정기적으로 폴링할 수 있다. 상기 네트워크 스택(235)을 검사하기 위한 상기 폴링 요청은 폴링 요청, 블로킹 선택 요청(blocking select request), 논-블로킹 선택 요청(non-blocking select request), 블로킹 수신 요청, 논-블로킹 수신 요청, 또는 비동기 수신 요청, 또는 데이터가 이용 가능한지를 결정하는데 이용되는 바와 같은 임의의 다른 이와 같은 요청일 수 있다. 상기 인터셉터 프로그램(205)이 상기 호스트 프로그램(203)으로부터의 폴링 요청을 검출하는 경우에, 상기 인터셉터 프로그램은 상기 요청을 인터셉트하고, 상기 호스트 프로그램(203)에 대한 메시지가 임시 버퍼(225)에 저장되는지 또는 상기 임시 버퍼가 데이터를 수신될 준비가 되었다고 표시하는지를 결정한다. 상기 임시 버퍼(225)에 저장된 메시지가 없거나 데이터가 수신될 준비가 되었다는 표시가 존재하지 않는 경우에, 상기 인터셉터 프로그램(205)은 상기 호스트 프로그램(203)에 통지한다. 메시지가 상기 임시 버퍼(225)에 저장되는 경우, 상기 인터셉터 프로그램(205)은 상기 호스트 프로그램에 통지하거나, 요청받을 때, 상기 호스트 프로그램에 상기 데이터를 제공한다. 상기 임시 버퍼(225)가 애플리케이션 공간(220)에 위치되기 때문에, 상기 인터셉터 프로그램(205)은 상기 네트워크 스택(235)으로부터 표시할 수 있는 것보다 더 빨리 상기 호스트 프로그램에 대해 준비가 된 데이터가 존재하는지의 여부를 표시할 수 있다. 상기 임시 버퍼(225)가 또한 상기 데이터를 유지하고 애플리케이션 공간(220)에 위치될 때, 상기 인터셉터 프로그램(205)은 상기 네트워크 스택(235)으로부터 상기 커널에 의해 제공되는 것보다 더 빨리 상기 저장된 메시지를 제공할 수 있다.
도 3을 참조하면, 도 1의 컴퓨터 디바이스(102) 및 네트워크 디바이스(104)에 각각 대응하는 컴퓨터 디바이스(302) 및 네트워크 디바이스(304)의 특정 실시예 의 블록도가 도시되어 있다. 상기 네트워크 디바이스(304)는 인터셉터 프로그램(350)을 포함한다. 상기 컴퓨터 디바이스(302)는 애플리케이션 공간(320), 커널 공간(330), 인터셉터 프로그램(305), 및 인터럽트 핸들러(340)를 포함한다. 상기 애플리케이션 공간(320)은 호스트 프로그램(303) 및 임시 버퍼(325)를 포함한다. 상기 커널 공간(330)은 네트워크 스택(335)을 포함한다.
동작 시에, 상기 네트워크 디바이스(304)는 상기 네트워크(106)를 통하여 상기 피어 프로그램(107)으로부터 메시지들을 수신한다. 상기 인터셉터 프로그램(350)은 상기 네트워크(106)로부터 수신된 메시지들을 모니터링하고, 이러한 메시지들 중 어느 것이 상기 호스트 프로그램(303)을 타겟으로 하는지를 결정한다. 상기 인터셉터 프로그램(350)은 상기 호스트 프로그램(303)을 타겟으로 하지 않는 메시지들을 상기 컴퓨터 디바이스(302)의 상기 네트워크 스택(335) 또는 상이한 프로그램(도시되지 않음)에 제공한다. 메시지가 상기 호스트 프로그램(303)을 타겟으로 하는 경우, 상기 네트워크 디바이스(304)는 상기 컴퓨터 디바이스(302)에 인터럽트 표시자를 송신할 수 있다. 상기 인터럽트 표시자에 응답하여, 상기 컴퓨터 디바이스(302)는 상기 메시지가 임시 버퍼(325)에서 수신되었다는 표시를 저장하는 상기 인터럽트 핸들러(340)를 실시(invoking)한다. 상기 메시지 자체는 상기 임시 버퍼(325), 애플리케이션 공간(320) 내의 또 다른 버퍼(도시되지 않음), 커널 공간(330), 또는 상기 네트워크 스택(335)에 저장될 수 있다. 대안적인 실시예에서, 상기 임시 버퍼는 상기 네트워크 디바이스(304)에 위치될 수 있다.
특정 실시예에서, 상기 인터셉터 프로그램(305)은 상기 호스트 프로그 램(303)과 연관된 메시지가 수신되었는지를 결정하기 위하여 상기 임시 버퍼(325)에 액세스하고, 상기 메시지가 이용 가능하다는 것을 상기 호스트 프로그램(303)에 통지한다. 또한, 상기 인터셉터 프로그램은 상기 메시지를 검색하고 이를 상기 호스트 프로그램(303)에 제공할 수 있다. 상기 메시지가 수신되었다는 표시가 상기 네트워크 스택(335) 상에 위치되지 않기 때문에, 상기 수신된 메시지의 통지가 상기 호스트 프로그램(303)에 더 빨리 제공됨으로써, 상기 피어 프로그램(107)과 상기 호스트 프로그램(103) 사이의 통신 효율을 개선할 수 있다.
대안적인 실시예에서, 상기 인터셉터 프로그램(305)은 상기 네트워크 스택을 타겟으로 하는 상기 호스트 프로그램(303)으로부터의 폴링 요청들을 인터셉트한다. 상기 폴링 요청을 인터셉트하는 것에 응답하여, 상기 인터셉터 프로그램(305)은 상기 임시 버퍼(325)의 콘텐트에 기초하여, 상기 호스트 프로그램(303)을 타겟으로 하는 메시지가 수신되었는지를 결정한다. 메시지가 수신되지 않은 경우, 상기 인터셉터 프로그램(305)은 이용 가능한 메시지가 없다는 것을 표시하도록 상기 폴링 요청에 응답한다. 메시지가 수신된 경우, 상기 인터셉터 프로그램(305)은 (임시 버퍼(325), 애플리케이션 공간 내의 또 다른 버퍼, 커널 공간(330) 내의 버퍼, 또는 상기 네트워크 스택(335)으로부터) 메시지를 검색하고, 상기 메시지를 상기 호스트 프로그램(303)에 제공한다. 상기 인터셉터 프로그램(305)이 메시지가 이용 가능한지의 여부를 결정하기 위해 상기 커널 공간(330)에 액세스하지 않기 때문에, 상기 인터셉터 프로그램은 상기 요청들이 상기 네트워크 스택(335)에 직접적으로 진행되는 경우보다 더 빨리 상기 호스트 프로그램(303)으로부터의 폴 요청들에 응답할 수 있다.
도 4를 참조하면, 컴퓨터 디바이스(402) 및 네트워크 디바이스(404)의 특정 실시예의 블록도가 도시되어 있다. 상기 네트워크 디바이스(404)는 인터셉터 프로그램(450)을 포함한다. 상기 컴퓨터 디바이스(402)는 애플리케이션 공간(420) 및 커널 공간(430)을 포함한다. 상기 애플리케이션 공간(420)은 호스트 프로그램(403), 인터셉터 프로그램(405), 및 임시 버퍼(425)를 포함한다. 상기 커널 공간(430)은 네트워크 스택(435)을 포함한다. 상기 인터셉터 프로그램(450)은 상기 임시 버퍼(425) 및 상기 네트워크 스택(435)에 액세스하도록 구성된다. 상기 인터셉터 프로그램(405)은 상기 호스트 프로그램(403), 상기 네트워크 스택(435), 및 상기 임시 버퍼(425)와 인터페이싱하도록 구성된다.
동작 시에, 상기 네트워크 디바이스(404)는 상기 네트워크(106)를 통하여 상기 피어 프로그램(107)으로부터 메시지들을 수신한다. 상기 인터셉터 프로그램(450)은 상기 네트워크(106)로부터 수신된 메시지들을 모니터링하고, 이러한 메시지들 중 어느 것이 상기 호스트 프로그램(403)을 타겟으로 하는지를 결정한다. 상기 인터셉터 프로그램(450)은 상기 호스트 프로그램(403)을 타겟으로 하지 않는 메시지들을 상기 컴퓨터 디바이스(402)의 상기 네트워크 스택(435) 또는 상이한 프로그램(도시되지 않음)에 제공한다. 메시지가 상기 호스트 프로그램(403)을 타겟으로 하는 경우에, 상기 인터셉터 프로그램(405)은 상기 임시 버퍼(425) 내에 이용 가능한 새로운 메시지가 존재한다는 표시 또는 상기 메시지를 저장할 수 있다.
상기 인터셉터 프로그램(405)은 상기 호스트 프로그램(403)이 상기 네트워크 스택(435)에 액세스하고자 하고 있는지를 결정하기 위하여 상기 호스트 프로그램(403)과 상기 커널 사이의 통신들을 모니터링한다. 예를 들어, 상기 호스트 프로그램(403)은 상기 프로그램을 타겟으로 하는 메시지가 상기 네트워크(106)로부터 수신되었는지를 결정하기 위하여 상기 네트워크 스택(435)에 정기적으로 폴링할 수 있다. 상기 인터셉터 프로그램(405)이 상기 호스트 프로그램(403)으로부터의 폴링 요청을 검출하는 경우, 상기 인터셉터 프로그램은 상기 요청을 인터셉트하고, 상기 호스트 프로그램(403)에 대한 메시지가 상기 임시 버퍼(425)에 저장되는지 또는 상기 임시 버퍼가 데이터가 수신될 준비가 되었다는 것을 표시하는지를 결정한다. 메시지가 임시 버퍼에 저장되지 않거나 데이터가 수신될 준비가 되었다는 표시가 존재하지 않는 경우에, 상기 인터셉터 프로그램(405)은 상기 호스트 프로그램(403)에 통지한다. 메시지가 상기 임시 버퍼(425)에 저장되는 경우에, 상기 인터셉터 프로그램(405)은 상기 호스트 프로그램에 통지하거나, 또는 요청될 때, 상기 데이터를 상기 호스트 프로그램(403)에 제공한다. 상기 인터셉터 프로그램(405)이 메시지가 네트워크 스택에 액세스하지 않고 상기 호스트 프로그램(403)에 이용 가능한지의 여부를 결정할 수 있기 때문에, 상기 인터셉터 프로그램은 폴링 요청들에 고속으로 응답함으로써, 상기 호스트 프로그램(403)의 성능을 개선할 수 있다.
도 5를 참조하면, 네트워크 디바이스(504)에 대응하는 상기 네트워크 디바이스(504)의 특정 실시예의 블록도가 도시되어 있다. 상기 네트워크 디바이스(504)는 프로세서(570) 및 메모리(560)를 포함한다. 상기 메모리(560)는 상기 프로세서(570)에 액세스 가능하다. 상기 프로세서(570)는 마이크로프로세서, 마이크로제 어기, 등일 수 있다. 상기 메모리(560)는 랜덤 액세스 메모리(random access memory: RAM)과 같은 휘발성 메모리, 또는 하드 디스크(hard disk) 또는 플래시 메모리(flash memory)와 같은 비휘발성 메모리일 수 있는 컴퓨터 판독 가능한 매체이다.
상기 메모리(560)는 인터셉터 프로그램(550) 및 운영 시스템(507)을 저장한다. 상기 인터셉터 프로그램(550) 및 상기 운영 시스템(507)은 본원에 설명된 방법들 중 하나 이상을 구현하도록 상기 프로세서(570)를 조종하는 명령들을 포함한다. 애플리케이션들과 같은 다른 프로그램들이 또한 설명된 방법들을 구현하도록 프로세서를 조종하기 위하여 상기 메모리(560)에 저장될 수 있다. 상기 컴퓨터 디바이스(102)가 본원에 설명된 방법들 중 하나 이상을 구현하도록 프로세서를 조종하기 위하여 하나 이상의 프로그램들을 저장하는 메모리를 포함하는 상기 네트워크 디바이스(504)와 유사하게 구성될 수 있다는 점이 인식될 것이다.
상술된 주제는 제한적인 것이 아니라, 설명적인 것으로 간주되어야 하며, 첨부된 청구항들은 본 발명의 정신과 범위 내에 존재하는 모든 이와 같은 변경들, 강화점들, 및 다른 실시예들을 커버하도록 의도된다. 따라서, 법에 의해 허용된 최대 범위까지, 본 발명의 범위는 다음의 청구항들 및 이들의 등가물들의 가장 광범위한 허용 가능한 해석에 의해 결정되어야 하고, 상기의 상세한 설명에 의해 제한 또는 국한되지 않을 것이다.

Claims (28)

  1. 네트워크로부터 제 1 메시지를 수신하는 단계;
    상기 제 1 메시지가 호스트 디바이스에서의 제 1 프로그램을 타겟으로 하는지를 결정하는 단계;
    상기 제 1 메시지가 상기 제 1 프로그램을 타겟으로 한다고 결정하는 것에 응답하여 상기 제 1 메시지가 수신되었다는 표시를 임시 버퍼에 저장하는 단계를 포함하며, 상기 임시 버퍼는 상기 호스트 디바이스에서 네트워크 스택으로부터 분리된, 방법.
  2. 제 1 항에 있어서,
    상기 네트워크로부터 제 2 메시지를 수신하는 단계;
    상기 제 2 메시지가 상기 호스트 디바이스에서의 제 2 프로그램을 타겟으로 하는지를 결정하는 단계;
    상기 호스트 디바이스에서 상기 네트워크 스택에 상기 제 2 메시지를 저장하는 단계를 더 포함하는, 방법.
  3. 제 2 항에 있어서,
    상기 임시 버퍼는 애플리케이션 공간에 위치되는, 방법.
  4. 제 3 항에 있어서,
    상기 네트워크 스택은 커널 공간에 위치되는, 방법.
  5. 제 1 항에 있어서,
    상기 임시 버퍼는 상기 호스트 디바이스로부터 떨어진 네트워크 디바이스에 위치되는, 방법.
  6. 제 1 항에 있어서,
    상기 제 1 프로그램으로부터 제 1 네트워크 스택 요청을 인터셉트하는 단계;
    상기 제 1 네트워크 스택 요청을 인터셉트하는 것에 응답하여 상기 제 1 메시지가 이용 가능하다는 표시를 상기 제 1 프로그램에 제공하는 단계를 더 포함하는, 방법.
  7. 제 6 항에 있어서,
    상기 임시 버퍼에 저장된 데이터에 기초하여 상기 제 1 메시지가 이용 가능하다고 결정하는 단계를 더 포함하는, 방법.
  8. 제 6 항에 있어서,
    상기 제 1 네트워크 스택 요청은 논-블로킹 선택 요청, 블로킹 선택 요청, 및 비동기 선택 요청으로 이루어진 그룹으로부터 선택되는, 방법.
  9. 제 6 항에 있어서,
    상기 제 1 메시지가 비동기적으로 이용 가능하다는 표시에 응답하여 상기 제 1 프로그램에 상기 제 1 메시지를 제공하는 단계를 더 포함하는, 방법.
  10. 제 1 항에 있어서,
    표시를 상기 임시 버퍼에 저장하는 단계는 상기 제 1 메시지를 상기 임시 버퍼에 저장하는 단계를 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 제 1 프로그램으로부터 제 1 네트워크 스택 요청을 인터셉트하는 단계;
    상기 제 1 네트워크 스택 요청을 인터셉트하는 것에 응답하여 상기 제 1 프로그램에 상기 제 1 메시지를 제공하는 단계를 포함하는, 방법.
  12. 제 11 항에 있어서,
    상기 제 1 네트워크 스택 요청은 논-블로킹 수신 요청, 블로킹 수신 요청, 및 비동기 수신 요청으로 이루어진 그룹으로부터 선택되는, 방법.
  13. 제 1 항에 있어서,
    상기 네트워크 스택에서 상기 제 1 메시지를 저장하는 단계를 더 포함하는, 방법.
  14. 제 1 항에 있어서,
    상기 임시 버퍼는 애플리케이션 공간에 위치되고, 커널 공간에 상기 제 1 메시지를 저장하는 단계를 더 포함하는, 방법.
  15. 제 1 항에 있어서,
    상기 제 1 프로그램으로부터 제 1 네트워크 스택 요청을 인터셉트하는 단계;
    상기 임시 버퍼에 저장된 데이터에 기초하여 데이터가 상기 제 1 프로그램에 이용 가능하지 않다는 표시를 제공하는 단계를 더 포함하는, 방법.
  16. 제 15 항에 있어서,
    상기 임시 버퍼는 애플리케이션 공간에 위치되는, 방법.
  17. 제 1 메시지가 수신되었다는 것을 표시하는 인터럽트 요청을 네트워크 디바이스로부터 수신하는 단계;
    상기 인터럽트 요청에 응답하여 상기 제 1 메시지가 수신되었다는 것을 호스트 디바이스에서 제 1 프로그램에 통지하는 단계;
    상기 네트워크 디바이스로부터 제 2 메시지를 수신하는 단계; 및
    네트워크 스택에 상기 제 2 메시지를 저장하는 단계를 포함하는, 방법.
  18. 제 17 항에 있어서,
    상기 인터럽트 요청을 수신하는 것에 응답하여 상기 제 1 메시지가 상기 호스트 디바이스에서 임시 버퍼 내에 수신되었다는 표시를 저장하는 단계를 더 포함하는, 방법.
  19. 제 18 항에 있어서,
    상기 임시 버퍼는 애플리케이션 공간에 위치되는, 방법.
  20. 제 14 항에 있어서,
    상기 인터럽트 요청에 응답하여 제 1 애플리케이션에 상기 제 1 메시지를 제공하는 단계를 더 포함하는, 방법.
  21. 프로세서를 조종하는 명령들을 저장하도록 구성되는 컴퓨터 판독 가능한 매체에 있어서:
    상기 명령들은:
    네트워크로부터 제 1 메시지를 수신하도록 하는 명령들;
    상기 제 1 메시지가 호스트 디바이스에서 제 1 프로그램을 타겟으로 한다고 네트워크 디바이스에서 결정하도록 하는 명령들;
    상기 제 1 메시지가 상기 제 1 프로그램을 타겟으로 한다는 결정에 응답하여 상기 제 1 메시지가 수신되었다는 표시를 상기 호스트 디바이스에서 임시 버퍼에 저장하도록 하는 명령들;
    상기 네트워크로부터 제 2 메시지를 수신하도록 하는 명령들;
    상기 제 2 메시지가 상기 호스트 디바이스에서의 제 2 프로그램을 타겟으로 한다고 결정하도록 하는 명령들;
    상기 호스트 디바이스에서 네트워크 스택에 상기 제 2 메시지를 저장하도록 하는 명령들을 포함하며, 상기 네트워크 스택은 상기 임시 버퍼로부터 분리된, 컴퓨터 판독 가능한 매체.
  22. 제 21 항에 있어서,
    상기 임시 버퍼는 애플리케이션 공간에 위치되는, 컴퓨터 판독 가능한 매체.
  23. 제 22 항에 있어서,
    상기 네트워크 스택은 커널 공간에 위치되는, 컴퓨터 판독 가능한 매체.
  24. 제 21 항에 있어서,
    상기 제 1 메시지가 상기 호스트 디바이스에서 상기 제 1 프로그램을 타겟으로 한다는 결정에 응답하여 상기 호스트 디바이스에 인터럽트 표시를 제공하도록 하는 명령들을 더 포함하는, 컴퓨터 판독 가능한 매체.
  25. 네트워크 디바이스에 있어서:
    네트워크로부터 제 1 메시지를 수신하도록 구성되는 입력;
    상기 제 1 메시지가 호스트 디바이스에서 제 1 프로그램을 타겟으로 한다고 결정하도록 구성되는 프로세서;
    상기 제 1 메시지가 상기 제 1 프로그램을 타겟으로 한다고 상기 프로세서가 결정하는 것에 응답하여 상기 호스트 디바이스에서 임시 버퍼에 표시를 저장하도록 구성되는 출력을 포함하며, 상기 임시 버퍼는 상기 호스트 디바이스에서 애플리케이션 공간에 위치되는, 네트워크 디바이스.
  26. 제 25 항에 있어서,
    상기 출력은 상기 제 1 메시지가 상기 호스트 디바이스에서의 제 2 프로그램을 타겟으로 한다고 상기 프로세서가 결정하는 것에 응답하여 상기 호스트 디바이스에서 네트워크 스택에 상기 제 1 메시지를 제공하도록 더 구성되는, 네트워크 디바이스.
  27. 제 25 항에 있어서,
    상기 출력은 상기 제 1 메시지가 상기 제 1 프로그램을 타겟으로 한다고 상기 프로세서가 결정하는 것에 응답하여 상기 호스트 디바이스에 인터럽트를 제공하도록 구성되는, 네트워크 디바이스.
  28. 제 25 항에 있어서,
    상기 출력은 상기 임시 버퍼에 상기 제 1 메시지를 저장하도록 구성되는, 네트워크 디바이스.
KR1020097003187A 2006-07-17 2007-07-16 데이터 버퍼링 및 통지 시스템 및 그 방법들 KR20090064366A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US80753006P 2006-07-17 2006-07-17
US60/807,530 2006-07-17

Publications (1)

Publication Number Publication Date
KR20090064366A true KR20090064366A (ko) 2009-06-18

Family

ID=40993096

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097003187A KR20090064366A (ko) 2006-07-17 2007-07-16 데이터 버퍼링 및 통지 시스템 및 그 방법들

Country Status (1)

Country Link
KR (1) KR20090064366A (ko)

Similar Documents

Publication Publication Date Title
US8874780B2 (en) Data buffering and notification system and methods thereof
US11647081B2 (en) Method and system for reducing connections to a database
John et al. A survey of distributed message broker queues
US9740761B2 (en) Management of application state data
US8612413B2 (en) Distributed data cache for on-demand application acceleration
Wu et al. PVFS over InfiniBand: Design and performance evaluation
US9635088B2 (en) Method and system for managing user state for applications deployed on platform as a service (PaaS) clouds
CN108744504B (zh) 游戏数据的处理方法及装置、游戏服务器、游戏系统
US9495718B2 (en) System and method for providing low latency to applications using heterogeneous processors
US20100113158A1 (en) Method and apparatus for hosting a distributed virtual world system
US8205214B2 (en) Browser elements for communicating with other browser elements and with external applications
US20140365427A1 (en) Smart polling frequency
JP2005521945A (ja) 共通作業キュー環境における最適格サーバ
US10592374B2 (en) Remote service failure monitoring and protection using throttling
US20200336559A1 (en) Decentralized method and system for accurately determining a level of activity of a client device
CN114928615B (zh) 负载均衡方法、装置、设备及可读存储介质
KR20090064366A (ko) 데이터 버퍼링 및 통지 시스템 및 그 방법들
EP2115619B1 (en) Communication socket state monitoring device and methods thereof
CN107277088B (zh) 高并发业务请求处理系统及方法
CN112764837B (zh) 数据上报方法、装置、存储介质及终端
WO2009011695A1 (en) Data buffering and notification system and methods thereof
US20240143523A1 (en) Controlling threads across processors
CN114422575B (zh) 处理网络请求的方法和装置
US10764403B1 (en) Method and apparatus for client configuration and utilization-aware adaptive server-side rendering
JP5458615B2 (ja) 並行処理システム、オンライン処理装置、バッチ処理装置、並行処理方法、および並行処理プログラム

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E601 Decision to refuse application