KR100259332B1 - 멀티미디어 시스템에서 데이터를 효율적으로 전송하기 위한방법 및 시스템 - Google Patents

멀티미디어 시스템에서 데이터를 효율적으로 전송하기 위한방법 및 시스템 Download PDF

Info

Publication number
KR100259332B1
KR100259332B1 KR1019970039913A KR19970039913A KR100259332B1 KR 100259332 B1 KR100259332 B1 KR 100259332B1 KR 1019970039913 A KR1019970039913 A KR 1019970039913A KR 19970039913 A KR19970039913 A KR 19970039913A KR 100259332 B1 KR100259332 B1 KR 100259332B1
Authority
KR
South Korea
Prior art keywords
file
buffer
data
module
datastream
Prior art date
Application number
KR1019970039913A
Other languages
English (en)
Other versions
KR19980063413A (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 KR19980063413A publication Critical patent/KR19980063413A/ko
Application granted granted Critical
Publication of KR100259332B1 publication Critical patent/KR100259332B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17336Handling of requests in head-ends
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Communication Control (AREA)

Abstract

데이터 카피 및 콘텍스트 스위칭을 없애므로써 데이터스트림 처리 능력을 개선하기 위해 멀티미디어 서버의 파일 시스템에 범용 인터페이스가 제공된다. 이 파일 시스템은 규정된 셋트의 제로 카피 인터페이스의 파일 시스템 구현에 대한 기능 포인터(function pointers)를 제공하는 엑스포트 등록 서비스(export registration service)를 포함한다. 이들 인터페이스는 필요한 데이터 구조를 셋업하고, 제로 카피 연산이 진행중인 동안 제거되는 것을 방지하기 위해 객체에 대한 사용 카운트(use counts)를 배치하기 위한 초기화(initialization) 서비스를 포함한다. 또한, 제로 카피 인터페이스내의 종료(termination) 서비스는 데이터 구조를 클린 업(clean up)하고 사용 카운트를 제거한다. 또한, 추가적인 서비스는 특정 파일이 제로 카피 연산에 사용되기에 적합한지 확인(validate)하고, 후에 인터럽트 레벨에서 버퍼를 획득하기 위해 필요로되는 파일 속성(attributes)을 검색하고 레코드한다. 데이터 구조는 후속 호출을 위해 이들 속성을 보유하도록 정의된다. 다른 서비스는 인터럽트 레벨에서 버퍼를 로크하고, 현재의 데이터의 양을 복귀시키고, 다른 어드레스 공간 콘텍스트(context)에서의 버퍼에 대한 어드레스가능성을 제공한다. 데이터 구조는 후속 호출을 위해 이들 버퍼 속성을 보유한다. 또한, 인터럽트 레벨에서 버퍼를 로크해제(unlock)하기 위한 서비스가 제공된다. 마지막으로, 한 서비스는 VCR 기능을 지원하기 위해 필요로되는 바와 같이 파일의 억세스 패턴에 대한 변경에 관한 정보를 제공한다. 자동적으로 갱신되는 단일 연결 리스트(singly linked list)를 이용하는 해쉬 체인은 인터럽트 레벨에서 안전한 버퍼 조사(lookup)를 허용한다. 비교-교체 로킹은 이러한 연산을 용이하게 한다. 인터럽트 레벨에서 유용한 메일박스 인터페이스는 프리펫치 및 릴리스(release) 정보를 데몬(daemon)에 제공한다. 로크 충돌이나 또는 버퍼가 이용가능하지 않은 경우에는, 버퍼가 프로세스 콘텍스트에서 획득된다.

Description

멀티미디어 시스템에서 데이터를 효율적으로 전송하기 위한 방법 및 시스템
본 발명은 컴퓨터화된 멀티미디어 서버에 관한 것으로서, 특히, 디스크 기억 서브시스템으로부터 네트워크나 비디오 디코더 카드로 전송하는 것과 같이 장치사이의 그런 시스템내에서 데이터스트림을 효과적으로 전송하기 위한 기술에 관한 것이다.
멀티미디어 시스템은 통상적으로, 시스템을 통해 극히 효율적으로 전송되어야 하는 고밀도 멀티미디어 데이터를 나타내는 다수의 데이터스트림을 수반한다. 대표적인 예로서 "주문형 비디오(video-on-demand)" 서버 시스템이 있다. 이들 시스템을 통해 데이터를 효율적으로 이동시키기 위한 시도를 하는 여러 가지 방법이 고안되었다. 이들 시스템중 다수는 그 운영체제로서, 멀티미디어 내용 배달 시스템(multimedia content delivery system)을 구현하는 것과 같은 클라이언트-서버 환경에서 통상적으로 볼 수 있는 잘 알려진 유닉스(Unix) 운영체제나 또는 거기서 파생된 운영체제를 이용한다. 이와 같은 유닉스-기반 시스템의 고유의 심각한 결점은 데이터 이동을 위해 사용되는 메카니즘이 매우 복잡한 멀티미디어 데이터스트림을 수반하는 시스템에서 필요한 만큼 효율면에서 최적화되어 있지 않다는 것이다.
이후 상세하게 설명되게 되는 본 발명의 비디오 결합 시스템(Video Coupling System)(VCS)은 이와 같은 유닉스 또는 유닉스-파생 커널(kernel) 환경내에서 극히 효과적인 방식으로 생산자 장치와 소비자 장치 사이에서 데이터를 전달하기 위한 생산자/소비자 프레임워크(producer/consumer framework)를 제공한다. 전통적인 방법은 커널로부터 사용자 공간으로, 그리고 다시 커널로 데이터를 카피하는 방식을 이용해 왔다. 또한, 이와 같은 시스템은 콘텍스트 스위치(context switches)와 관련된 상당한 양의 CPU 오버헤드를 수반한다. 멀티미디어 데이터가 (데이터의 카피를 없애고 CPU 오버헤드를 줄이기 때문에 효율을 위해 사용되는) 제로 카피 프레임워크(zero copy framework)내에서 생산자로서 작용하도록 존재하는 멀티미디어 파일 시스템(MMFS)에 있어서, 이와 같은 MMFS는 한 인터럽트 레벨에서 인트럽트 콘텍스트(interrupt context)내에서 전송될 데이터의 버퍼를 제공해야 한다. 그러나, 이것은 (유닉스-기반 시스템과 관련된 것과 같은) 파일 시스템 연산이 통상적으로 인터럽트 콘텍스트 보다는 오히려 프로세스 콘텍스트(process context)에서 실행되기 때문에 심각한 문제를 제공한다.
멀티미디어 데이터스트림 정보의 효율적인 전송은 실현하기 위해 종래의 서브시스템에 의해 제공되는 추가적인 문제점이 본 발명에서의 혁신의 계기를 제공했는데, 본 발명은, 인터럽트 레벨에서 버퍼를 탐색하여 로크하고, 인터럽트 레벨에서 필요로 되기 전에 파일 데이터의 버퍼를 프리펫치하기 위해 이용되는 프리펫치 정보를 데몬(daemon) 프로세스로 통신하고, 파일에의 동시 기록을 이용하여 순차화(serialization)를 처리하고, 보다 일반적으로는 VCS 프레임워크에서 제로 카피(zero copy)를 지원하기 위한 범용 파일 시스템을 고안하는 것을 포함한다.
본 발명의 기여도 및 의미를 보다 완전하게 이해하기 위해서는, 먼저 도1에 도시된 바와 같은 멀티미디어 시스템의 기본 구성요소 및 모듈에 대한 일반적인 설명을 제공하는 것이 유익할 것이다.
본 발명에 따르면, 커널로부터 사용자 공간으로 데이터를 카피하지 않고 파일 시스템(122)과 네트워크 또는 비디오 디코더 카드 사이에서 데이터를 이동시키기 위해 "제로 카피" 또는 비디오 결합 서브시스템 "VCS"(148)이 제공된다. 비록 이 VCS가 도1의 종래의 시스템에서 명백하게 알수 있도록 그것이 이와 같은 시스템에 적합한 것으로 도시되어 있지만, 이것은 실제적으로 본 발명의 새로운 기여도의 한 관점이다. 따라서, 이것은 본 발명의 상세한 설명에서 보다 상세하게 설명되게 된다. 이와 같이, 파일 시스템, 데이터 엑스포터(exporter), VCS 및 NAR을 포함하는 다양한 서브시스템의 조합은 이후에 보다 일반적으로 데이터 펌프 시스템(115)으로 언급되게 된다.
전술한 문제점을 해결하기 위한 노력으로, 대용량 기억장치(Mass Storage)로부터 데이터를 소비자 장치로 전송하는 버퍼를 관리하기 위해 독립적인 서브시스템을 개발하므로써 제로 카피 메카니즘을 실현하기 위한 시도가 알려져 있다. 그러나, 이와 같은 접근방식은 극단적인 문제가 있으며, 예를 들어, 데이터 카피 및 관련 CPU 오버 헤드 없이 데이터를 전달하기 위한 효율적인 메카니즘을 제공하기 위한 목적으로 데이터의 적시 관리를 실현하기 위해, 왜 첫 번째로 데이터가 공유 메모리로 인출되어야 하는가라는 이유에 관련되어 있다.
이들 시스템에 있어서는, 데이터의 정확한 공유를 실현하는 문제를 자체적으로 해결해야 하는 독립적인 주문-설계된 새로운 모듈에 이러한 기능(공유 데이터의 관리)을 효과적으로 엑스포트하는 것이 통상적인 것이었다. 따라서, 원래의 파일 시스템에 필요한 제어 및 버퍼링 지식이 남아있을 수 있는 메카니즘이 대단히 요구되고 있다. 이러한 방식으로 기존의(pre-existing) 파일 시스템에 이미 구현된 데이터 제어 및 버퍼링과 관련된 어더한 현재의 수단도 유익하게 유지될 수 있다.
데이터스트림 처리 능력을 개선하기 위해 멀티미디어 서버의 파일 시스템에 범용 인터페이스가 제공된다. 이 파일 시스템은 그 파일 시스템의 규정된 셋트의 제로 카피 인터페이스 구현에 대한 기능 포인터(function pointers)를 제공하는 엑스포트 등록 서비스(export registration service)를 포함한다. 이들 인터페이스는 필요한 데이터 구조를 셋업하고, 제로 카피 연산이 진행중인 동안 제거되는 것을 방지하기 위해 객체에 대한 사용 카운트(use counts)를 배치하기 위한 초기화(initialization) 서비스를 포함한다. 또한, 데이터 구조를 클린 업(clean up)하고 사용 카운트를 제거하기 위해 제로 카피 인터페이스에 종료(termination) 서비스가 제공된다. 또한, 특정 파일이 제로 카피 연산에 사용되기에 적합한지 확인(validate)하기 위한 서비스도 제공된다. 또한, 후에 인터럽트 레벨에서 버퍼를 획득하기 위해 필요로되는 파일 속성(attributes)을 검색하고 레코드하기 위한 서비스도 제공된다. 데이터 구조는 후속 호출을 위해 이들 속성을 보유하도록 정의된다. 인터럽트 레벨에서 버퍼를 로크하고, 현재의 데이터의 양을 복귀시키고, 다른 어드레스 공간 콘텍스트(context)에서의 버퍼에 대한 어드레스가능성을 제공하기 위한 서비스가 제공된다. 데이터 구조는 후속 호출을 위해 이들 버퍼 속성을 보유하도록 정의된다. 또한, 인터럽트 레벨에서 버퍼를 로크해제(unlock)하기 위한 서비스가 제공된다. 마지막으로 VCR 기능을 지원하기 위해 필요로되는 바와 같이 파일의 억세스 패턴에 대한 변경에 관한 정보를 제공하기 위한 서비스가 제공된다.
버퍼에 대한 조사(lookup) 연산이 인터럽트 레벨에서 안전하게 수행될 수 있도록 하기 위해 자동적으로 갱신되는 단일 연결 리스트(singly linked list)를 이용하는 해쉬 체인이 사용된다. 이러한 연산이 인터럽트 레벨에서 수행될 수 있도록 하기 위해 버퍼에서 비교-교체 형태(compare-and-swap form)의 로킹이 이용된다. 데몬(daemon)에 프리펫치 및 릴리스(release) 정보를 제공하기 위해 인터럽트 레벨에서 사용하기 적합한 메일박스 인터페이스가 구현된다. 이 인터페이스는 인터럽트 레벨로부터 이용될 수 없는, 메시지 큐와 같은 표준 IPC 방법을 대체한다. 테이프 또는 소정의 다른 외부 장치로부터 파일이 임포트(imported) 되고 동시에 출력 장치로 배달되는 "로드-플레이(load-and-play)" 연산을 처리하기 위해 파일 및 버퍼 모두에서 수행되지 않고 단지 버퍼에서만 로킹이 수행된다. 리더(reader)가 라이터(writer)를 추적하는 경우를 검출하기 위해 버퍼에 제공된 다수의 바이트가 파일 종료(End of File :EOF)의 표시로서 사용된다.
전술한 기술을 사용하면, 통상적인 경우에 데이터 카피 및 콘텍스트 스위칭(context switching) 없이 출력 장치에 버퍼가 제공될 수 있다. 그러나, 로크 충돌(lock collision)이나 버퍼가 이용가능하지 않은(예, 소실된) 경우에, 본 발명의 시스템 및 방법은 프로세스 콘텍스트에서의 버퍼 획득을 제공한다. 비디오 결합 서브시스템(VCS) 프레임워크에 있어서는, 인터럽트 레벨에서 실행되는 동안 실패하는 경우에 연산을 재시도하기 위해 Kproc 절차가 제공된다. 몇몇 연산은 복수의 단계를 필요로하고, 이들 단계중 몇몇 단계는 실패로 되기 이전에 완료되었을 수도 있기 때문에, 재시도는 단지 완료될 잔여 작업만을 수행하도록 추가적인 상태 정보가 레코드된다.
도1은 종래의 멀티미디어 데이터스트림 시스템의 기능 블록도.
도2는 도1의 구성요소중 일부의 보다 상세한 예시 및 본 발명을 구성하는 추가적인 구성요소를 포함하는, 본 발명의 멀티미디어 데이터스트림 서버 시스템의 블록도.
도3은 본 발명을 구현하기 위해 도2의 시스템상에서 실행되는 프로그램 코드로 구현될 수도 있는 흐름도.
*도면의 주요 부분에 대한 부호의 설명
210:대용량 기억장치 212:공유 메모리
214:소비자 장치 216:MMFS 커널 확장부
218:멀티미디어 파일 시스템 데몬
220:소비자 장치 드라이버
222:MMFS 생산자 모듈 224:비디오 결합 시스템
226:소비자 모듈
도1을 참조하면, 제로 카피 또는 VCS 서브시스템(148)은 이러한 기능이 보다 통상적인 시스템의 여러 가지 구성요소와 어떻게 적합하게 되는지 나타내기 위해 포함되었다는 것을 알 수 있을 것이다. 전술한 엑스포터(118)는 기본적으로 디스크 드라이브(126) 및 파일 시스템(122)과, ADEC(140)과 같은 비디오 디코더 카드 사이의 결합을 설정하게 된다. 보다 일반적으로 말하면, 엑스포터(118)는 효율적인 데이터스트림 전송을 위해 파이프라인 방식으로 생산자 장치와 소비자 장치를 상호접속하는 한 경로를 제공한다. 일단 접속이 설정되면, 데이터 엑스포터(118)는 VCS를 통해 파일 시스템(122)과 통신 장치(138) 사이의 데이터 흐름을 직접 제어하기 위한 접속을 제어라인(150)에 의해 VCS(148)에 제공한다.
이제 도2를 참조하면, 비디오 결합 서브시스템 (224)(도1에서 VCS(148)로서 도시됨)의 일반적인 기능은 멀티미디어 파일 시스템(MMFS) 생산자 모듈(222)과 소비자 모듈(226) 사이의 데이터 흐름을 최적의 방식으로 제어하는 것이다. 소비자 모듈의 한 예는 기본적으로 파이프의 출력이 되는, 예를 들어 ADEC NAR(130) 및 대응하는 ADEC 어댑터 카드(140)(도1)로 구성된 비디오 디코더가 될 수 있다. 도1을 참조하면 생산자 모듈(222)의 한 예로서, 예를들어 다수의 통상적인 디스크 드라이브 또는 RAID 어레이에 부분적으로 내장될 수 도 있는 디스크 드라이브 시스템(126) 및 파일 시스템(122)과 같은 기억 서브시스템이 있다. 생산자 모듈(222)은 파일 시스템(122)(도1)과 같이 기존의 통상적인 설계로 이루어질 수도 있는 다른 파일 시스템과 VCS(224) 사이의 중재자(intermediary)로서 작용한다. VCS는 그 자체적으로 데이터의 흐름을 관리하기 위한 일련의 인터페이스를 제공하고, 생산자 모듈(222)은 기본적으로, VCS(224)로부터 요구를 받고 그 요구된 데이터를 얻기 위해 파일 시스템(122)으로 적절한 호출을 수행하는 중재자로서 작용한다. 도2에서, 대용량 기억장치(210)는 도1에 도시된 디스크 드라이브 서브시스템(126)과 대응한다. MMFS 커널 확장부(kernel extension)(216)와 MMFS 데몬(daemon)(218)은 도1의 파일 시스템(122)에서 구체화된다.
여전히 도2를 참조하면, 커널 확장부(216)는 명백하게 도1의 시스템상에서 실행되는 운영 체제의 커널내에 있으며, 반면에 데몬(218)은 응용프로그램 공간에서 실행된다. 이것은 제어 흐름이 VCS(224)로부터 생산자 모듈(222), 커널 확장부(216), 및 데몬(218)으로 이어지는 이유를 설명하는 것이며, VCS, 생산자 모듈, 및 커널 확장부는 커널내에 있으며, 응용프로그램 공간내의 데몬(218)에 의해 대표되는 사용자 레벨로 통신한다.
본 발명의 기본적인 관점은 데이터를 카피해야 하는 오버헤드를 초래하지 않고 멀티미디어 데이터의 필요한 전송을 실현하는 것이다. 데이터를 메모리로 가져오지 않고 장치 사이에서 데이터를 전송할 수 있다는 것은 알려져 있다. 관련 기술의 한 예로서 "제로-카피" 기술이 있다. 이러한 방식에 있어서는 시스템의 프로세서를 수반하거나 데이터를 메모리로 가져올 필요없이 장치사이의 실제적인 데이터 전송을 용이하게 하기 위해 버스상에서 사용되는 장치 사이에서 프로토콜이 이용될 수 있다.
비디오 서버 환경에서, 데이터를 메모리로 가져오는 것은 중요한 사항인데, 그 이유는 예를 들어, 만일 두 사용자가 동일한 타이틀을 플레이하길 원하는 경우에, 이들 복수의 요구가 메모리에서의 한 번의 카피로부터 충족될 수도 있기 때문이다(반면에, 이 동일한 데이터가 단순히 장치사이에서 이동된다면, 데이터는 물리적으로 2번 이동되어야 한다). 따라서, 두 사용자가 동일한 데이터를 억세스하길 원할 수도 있는 비디오 서비 환경에서 메모리의 버퍼링 특성을 이용할 수 있다는 것은 중요한 사항이다. 본 발명의 모델은 데이터를 메모리로 가져오게 되고 그 데이터의 한번의 카피가 요구되고, 따라서, 기본적으로 파일 시스템(122)으로 하여금 그 한 번의 카피를 제공하도록 한다는 가정에 근거하고 있다.
파일 시스템은 통상적으로 프로세스 콘텍스트에서 실행된다. 이런 콘텍스트에서, 파일 시스템내의 데이터를 이동시키기 위한 통상적인 방법은 디스크로 부터 커널 버퍼로 판독된 파일로부터 특정 범위의 데이터를 얻고, 그것을 사용자 버퍼로 카피하기 위해 사용자 레벨 프로그램으로부터 커널로 "판독(read)" 시스템 호출을 하는 것이다. 다른 한편으로는 네트워크로 데이터를 기록할 것이 요구된 경우에, "기록(write)" 시스템 호출이 발생되게 되고, 데이터는 사용자 메모리로부터 커널로, 다시 커널 버퍼로 부터 네트워크 장치로 전송되게 된다.
본 발명에 의해 해결되는 한가지 문제는 비디오 결합 서브시스템(148)이 지원할 수도 있는 모델과 관련이 있다. 특히, CPU 오버헤드 및 데이터 카피와 관련된 오버헤드를 제한할 수 있는 방식으로 유닉스(Unix) 또는 (IBM사의 AIX(TM) 운용체제와 같은)유닉스-파생 환경내에서 운용될 수 있는 시스템이 필요했었다. 생산자 모듈(222)과 소비자 모듈(226) 사이에서 VCS에 의해 수행되는 제어 흐름의 대부분은 인터럽트 콘텍스트내에서 발생한다. 그러나, 유닉스 및 유닉스-파생 운용 체제 환경에서는 파일 시스템이 통상적으로 실행되는 프로세스 환경과 반대로 인터럽트 환경에서 수행될 수 있는 연산에 대한 중대한 제한조건이 있다. 본 발명의 VCS(224)는 기본적으로 통상적인 기록 모델을 커널내에서 데이터 전송을 전부 수행하는 모델로 대체한다.
이러한 관점에서, 본 발명에 따라 제로-카피 방법으로 데이터가 어떻게 전송되게 되는가를 예시하기 위한 한 예가 제공될 수 있다. 일단 VCS(224)가 생산자 모듈과 소지바 모듈(226) 사이의 파이프라인을 설정하고 데이터 흐름이 시작되면, VCS는 생산자 모듈(222)에게 데이터의 버퍼를 얻을 것을 명령하는 요구를 하게 된다. 생산자 모듈(222)은 데이터의 버퍼를 로케이트(locate)하기 위해 조사(lookup)를 수행하고, 소비자 모듈(226)을 통해 커널 콘텍스트 내에서의 그 버퍼에 대한 어드레스 가능성을 제공하기 위해 파일 시스템(122)을 억세스하게 된다. 그러므로, 데이터를 실제적으로 카피하는 대신에 데이터에 대한 레퍼런스(reference)가 제공된다. 소비자 모듈(226)은 데이터를 도1의 비디오 디코더 카드(140)와 같은 출력 장치로 전달할 필요가 있을 때, 파일 시스템(122)이 이미 갖고 있는 데이터의 카피를 실제적으로 참조하게 된다.
계속해서 도2를 참조하면, 대용량 기억장치(210), 공유 메모리(212), 및 소비자 장치(214)는, 예를들어, 파일 시스템이 포함되는 경우에, 데이터가 대용량 기억장치(210)(또는 도1의 디스크 드라이브 서브시스템 126)로부터 공유 메모리(212)로 전송되고, 공유 메모리(212)는 그 파일 시스템(218)에 의해 관리된다는 것을 보여주기 위해 도2의 상부에 분리되어 있는 것으로 도시되어 있다. 비디오 결합 서브시스템(224)은 공유 메모리(212)내의 데이터에 대한 레퍼런스를 소비자 장치(214)에 제공한다. 따라서, 공유 메모리(212)에서의 한번의 카피는 종결되고, 데이터는 대용량 기억장치(210)로부터 소비자 장치(214)로 전달된다. 소비자 장치(214)는 예를들어, 네트워크 또는 비디오 디코더와 같은, 서버상의 국부 장치로 사상(maps)되고, 이 장치는 다음에, 디지털 데이터를 소비자로 배달하거나 아날로그 데이터를 케이블 길이를 거쳐 고 대역폭 ATM 스위치 등을 통해 배달하게 된다.
이제 도3을 참조하면, 본 발명을 구현하기 위해 도2의 시스템상에서 실행되는 프로그램 코드로 구현되게 되는 흐름도가 도시되어 있다. 특히, 코드는 우선적으로 생산자 모듈(222)에서 실행된다. 도3의 설명을 위한 프레임워크를 셋트하기 위해, VCS(224) 및 그 관련 구성요소는 동적으로 로드되는 도2의 시스템에 대한 운영체제의 커널 확장부가 된다. 따라서, 도3의 초기 단계는 생산자 모듈(222)이 운영체제의 커널로 로드되는 시점에서 발생하며, 이것은 다음에는 비디오 서브시스템이 시작될 때 발생한다. 생산자 모듈(222)은 로드될 때, 기본적으로 등록 서비스가 되는, 커널 확장부(216)에 의해 제공되는 엑스포트된 서비스로 호출한다. 이 생산자 모듈(222)은 제로 카피 기능성을 제공하기 위해 확장부가 제공하는 기능의 어드레스를 표시하기 위해 커널 확장부(216)의 서비스 요구를 한다. 단계(336)에서, 프로세스가 시작되고 생산자 모듈(222)이 로드된 후, 블록(338)에서는, 예를들어, 커널 확장부에 의해 지원되는 파일 시스템 제로 카피 지원 인터페이스가 등록된다.
이러한 제로-카피 기능의 지원을 위해 범용 인터페이스가 제공되었다는 것이 본 발명의 중요한 특징이라는 것을 주목할 필요가 있다. 대안으로, 또한 보다 덜 바람직하게는, 특정의 기존의 멀티미디어 파일 시스템에 특별히 제한적으로 특수목적 인터페이스가 제공되었을 수도 있다. 그러나, 본 발명에 따르면, 보다 일반화된 일련의 커널 서비스를 제공하는 경우에, 이들 서비스는 제로-카피 프레임워크내에서 다양한 상이한 파일 시스템에 의해 사용될 수도 있다. 이들 파일 시스템은 생산자 모듈(222)에 의해 등록된다. 특히, 모듈(222)로부터의 이 호출에 응답하여, 커널 확장부(216)는 생산자 모듈이 후에 커널 확장부(216)로 기능 호출(function calls)을 할 수 있도록 일련의 기능 디스크립터(function descriptors)를 생산자 모듈(222)에 제공한다. 전술한 단계는 생산자 모듈(222)의 구성의 일부로서 발생한다.
계속해서 도3을 참조하면, 비디오 결합 서브시스템의 연산의 다음 단계는 생산자 모듈(222)이 소정의 초기화를 위해 VCS(224)에 의해 실제적으로 호출될 때 발생하며, VCS가 데이터를 얻기를 원하는 파라미터(예, 기존의 멀티미디어 파일 시스템내의 파일)를 제공한다. 따라서, 생산자 모듈(222)은 그 데이터 구조의 소정의 초기화를 수행하게 되며, 또한 그 파일이 실제적으로 저널 파일 시스템(journaled file system)(JFS)과 같은 소정의 다른 파일 시스템으로 부터의 파일이 아니고 멀티미디어 파일 시스템으로 부터의 멀티미디어 파일이라는 것을 보증하기 위해 그곳으로 전달된 파일에 대한 파라미터 검사를 수행하게 된다. 도3의 이러한 초기화 및 검사 단계(340)는 또한, 생산자 모듈(222)이 그 생산자 모듈(222)로 전달된 파일이 제로-카피 연산에 참여할 수 있도록 허용하기 위해 요구되는 어떤 다른 기준을 충족시킨다는 것을 보증하기 위한 다른 검사를 수행했다는 것을 나타낸다. 제로-카피 연산을 수행하기 위해 통과된 파라미터의 일부는 카피를 시작하길 원하는 파일에서의 오프셋과, 원하는 데이터 길이 등을 포함한다. 따라서, 단계(340)에서의 파라미터 검사는 그 파일이 데이터를 얻기를 원하는 개시 오프셋 및 종료 오프셋 등에 일치한다는 것을 확인하기 위한 것이다.
계속해서 도3을 참조하면, 데이터 전송이 실제적으로 시작되기 전에, 생산자 모듈(222)은, 그 파일로 부터의 데이터가 나중에 이 인터럽트 콘텍스트 내에서 검색될 수 있도록 허용하게 되는 그 파일과 관련된 정보를 추출하기 위해 기존의 멀티미디어 파일 시스템(특히, MMFS 커널 확장부 216)으로 호출하게 된다.
전술한 바와 같이, 통상적으로 유닉스 또는 유닉스-파생 환경에서, 예를 들어, 파일 시스템에 대한 데이터의 판독 및 기록과 같은 대부분의 파일 시스템 연산은 프로세스 콘텍스트내에 포함되게 된다. 파일 시스템에서의 데이터 전송을 허용하기 위해 이루어져야 하는 것은 예를들어, 그 파일에 관한 정보와, 인터럽트 콘텍스트로부터 데이터의 전송을 지원하기 위한 버퍼 등 전송을 실현하기 위해 필요한 모든 정보를 획득할 수 있도록 하는 것이다. 아이노드(inodes) 및 간접 블록(indirect blocks)과 같은 관련 데이터 구조는 일반적으로 또한 전통적으로 인터럽트 콘텍스트가 아닌 프로세스 콘텍스트에서 억세스 가능하다. 도3을 참조하면, 단계(342)는 부분적으로, 데이터 전송을 실행하기 위해 필요한 파일에 관한 속성이 이 단계에서 레코드 되고, 예를들어, 시스템이 실제적으로 데이터를 전송할 때 이와 같은 데이터가 인터럽트 콘텍스트로부터 로케이트될 수 있도록 허용하게 되는 속성이 저장되는 것과 같이, 파일 핸들(file handle)이나 또는 다른 적절한 지정된 데이터 구조에 저장되는 것을 나타내기 위해 의도된 것이다.
단계(342)에서는 프리펫치 개시로서 언급되는 또 다른 추가적인 기능이 수행된다. 생산자 모듈(222)로부터 커널 확장부(216)로의 통신은 전송될 파일에 대한 데이터를 준비할 필요가 있다는 것을 파일 시스템에 지시하게 된다. 멀티미디어 데이터의 연속적인 배달을 지원하는 멀티미디어 파일 시스템에 이미 존재하는 특징 및 설계 요점은 유익하게도 인터럽트 환경에서 제로-카피 메카니즘을 제공하는데 있어 본 발명의 특징을 지원하기 위해 사용될 수도 있다. 특히, 이와 같은 파일 시스템은, 대용량 기억장치(210)로부터 데이터를 검색하고, 그 데이터가 소비자 장치(214)에 의해 실제적으로 필요로 되기 이전에 공유 메모리(212)로 그 데이터를 배달하기 위한 능력을 갖는 것이 바람직하다.
전술에 있어서, 단계(342)의 "프리펫치 개시" 부분의 의미가 이제 보다 잘 이해될 수 있을 것이다. 이러한 초기 프리펫칭은 기본적으로 소비자 장치(214)로의 데이터 흐름의 실제적인 개시 이전에 그 파일의 데이터의 초기 부분을 공유 메모리(212)에 미리 알려준다(primes). 이러한 프리펫치에 관한 제어 흐름은 생산자 모듈(222)로부터 커널 확장부(216)로, 다시 데몬(218)으로 이어진다. 이것은 프리펫치된 데이터가 공유 메모리(212)에 배치되는 결과를 초래하는, 대용량 기억장치로 부터의 입출력(I/O) 요구를 발생하게 되는 데몬이다. 나중에, 데이터의 실제적인 전송 개시가 시작될 때, 이것은 이와 같은 프리펫치된 데이터가 공유 메모리(212)에서 이미 이용가능한 시점으로부터 시작되게 된다.
계속해서 도3을 참조하면, 단계(344)에서는 파일 시스템의 그 다음 버퍼가 획득된다. 후속 단계에서 프로세스는 본질적으로, 전송되고 있는 파일과 관련된 데이터의 모든 버퍼에 대해, 요구된 데이터의 원하는 양이 전송완료 될 때까지 이와 같은 연속되는 버퍼가 생산자로부터 소비자로 전송되게 될 수 있도록 하는 루프로 들어간다.
따라서, 시스템이 입출력(I/O)을 할 준비가 되어 있다는 것을 비디오 결합 서브시스템(224)이 표시할 때(예를 들어, 생산자로부터 소비자로 데이터 전달이 이루어질 때), VCS(224)는 생산자 모듈(222)에 기능 호출을 발생하게 되고, 이 모듈은 다음에, 공유 메모리(212)에서 그 파일 시스템에 대응하는 데이터의 버퍼가 로케이트되는지 판단하기 위해 특정 파일 오프셋에 대해 커널 확장부(216)로 호출한다. 예를 들어, AIX 운영체제와 같이, 본 명세서에서 설명되는 양호한 실시예에서 이용되는 특정의 유닉스-파생 운영체제에서는, 코드의 상이한 부분이 예를 들어, 프로세스나 또는 인터럽트 콘텍스트와 같이 상이한 콘텍스트에 존재할 가능성이 있는 메모리의 동일한 부분에 대한 어드레스 가능성을 얻을 수 있도록 허용하는 "크로스 메모리 디스크립터(cross memory descriptor)"가 제공된다. 파일 설명 및 파일 오프셋의 설명이 있었지만, 커널 확장부(216)는 여전히, 공유 메모리(212)내의 어떤 버퍼가 실제적으로 그 특정 파일 및 파일 오프셋에 대응하는지 판단하기 위해 멀티미디어 파일 시스템 데이터 구조를 검사해야 한다. 일단 커널 확장부가 이러한 내용을 검사하면, 이 커널 확장부는 전술한 크로스 메모리 디스크립터(예, 올바른 버퍼에 대한 레퍼런스)를 제공하게 되고, 이 디스크립터는 생산자 모듈(222) 및 다시 VCS(224)로 복귀되고, 결국 소비자 모듈(226)로 전달되게 된다.
그러므로, 이 시점에서 소비자 모듈(226)은 공유 메모리(212)내의 올바른 버퍼에 대한 레퍼런스를 갖게 되며, 이것은 이제 블록(220)으로 도시된, 네트워크 또는 비디오 디코더와 관련된 장치 드라이버이든 아니든 간에 표준 장치 드라이버로 전달될 수 있게 된다. 소비자 모듈(226)로부터 장치 드라이버(220)로 전달된 적절한 버퍼 또는 메모리(212)의 일부를 참조하면 이 드라이버는 이제, 공유 메모리(212)로부터 소비자 장치(214)로 이동되는 데이터를 얻기 위해 AIX DMA와 같은 표준 연산이나 또는 이 기술에 잘 알려진 다른 연산을 실행할 수 있게 된다.
계속해서 도3를 참조하면, 파일 시스템의 그 다음 버퍼가 획득되는 블록(344)에서, 생산자 모듈(222)은 커널 확장부(216)로 호출되며, 커널 확장부가 수행하는 연산은 주의깊게 실행되어야 한다. 이제, 이것을 실행하기 위해 본 발명의 특정 구현에 대해 보다 상세하게 설명한다. 버퍼에 대한 조사 연산이 인터럽트 레벨에서 안전하게 수행될 수 있도록 하기 위해 자동적으로 갱신되는 단일 연결 리스트를 사용하는 해쉬 체인이 이용된다. 공유 메모리에 의해 데이터의 버퍼가 획득되면, 그 버퍼는 발생할 수도 있는 다른 파일 시스템 연산과 순차화시키기 위해 비교-교체 형태의 로킹을 이용하여 로크된다. 인터럽트 콘텍스트에서는, 사용되는 로킹의 특정 형태에 관해 주의해야 한다. 본 구현에서 선택된 비교-교체 형태의 로킹은, 이 기술에 잘 알려진 이러한 형태의 로킹이 커널 확장부(216)가 동작하는 인터럽트내에서 작용하게 된다는 점에서 중요하다.
이제, 여기서 설명되는 구현의 다른 중요한 관점에 대해 더 설명될 필요가 있다. 파일 공간은 그 자체적으로 커널 확장부(216)와 사용자 공간 데몬부(218)사이에서 분할되어 있기 때문에, 인터럽트 콘텍스트내에서 동작하는 통신 방법이 이들 구성요소(216,218) 사이에서 요구된다. 시스템 5 공유 메모리와 같은 통상적인 인터프로세스 통신(IPC) 방법이나, 또는 메시지 큐와 같은 다른 표준 IPC 메카니즘은 오직 프로세스 콘텍스트 또는 레벨내에서 동작한다. 따라서, 본 발명은 구성요소(216,218) 사이에 메일박스 인터페이스 형태의 통신을 제공하는데, 이것은 데몬(218)에 대해 전술한 프리펫치 및 릴리스 정보를 제공하기 위해 제로-카피를 지원하기 위한 인터럽트 환경에서 커널 확장부와 데몬사이의 구내통신(intercommunication)을 허용하기 위해 인터럽트 레벨에서 이용될 수 있다.
일단 블록(344)에서 버퍼가 획득되면, 프로세스는 파일 데이터의 버퍼를 획득하기 위해 진행하지만, 버퍼가 존재하지 않을 수도 있는 바람직하지 못한 상황이 인터럽트 콘텍스트내에 존재하는데, 그 몇 가지 이유중 하나는 버퍼상에서 충돌하는 로크가 존재할 수도 있다는 것이며, 또는 버퍼 획득 연산이 인터럽트 콘텍스트내에서 성공하지 못하게 되는 것에 관해 다른 일련의 이유가 존재할 수도 있기 때문이다. 이러한 경우에 프로세스는 프로세스 콘텍스트내의 보다 통상적인 버퍼 획득과정으로 후퇴하게 된다. 그러므로, 블록(346)에서 수행되는 (파일 시스템의 그 다음 버퍼를 획득하기 위한 블록(344)에서의 시도가 실패했다는 것을 나타낼 수도 있는)검사는 블록(348)으로의 흐름을 초래하게 된다. 블록(348)에서의 단계는, 버퍼가 포함되어 있는지 판단하고, 그 버퍼에 대한 어드레스 가능성을 얻는 등 정상적인 프로세스 콘텍스트와 관련된 단계를 이용하여, (파일 시스템의 그 다음 버퍼를 획득하기 위한) 동일한 연산이 발생하게 된다는 것을 나타낸다. 그러므로, VCS(224)내에서, 인터럽트 콘텍스트에서는 어떤 이유에 의해서든지 수행될 수 없는 연산을 처리하기 위해 사용될 독립된 커널 프로세스가 제공된다.
일단 (블록(344)에서의 인터럽트 콘텍스트에서나, 또는 블록(348)에서의 통상적인 프로세스 콘텍스트를 이용하여) 그 다음 버퍼가 성공적으로 얻어지면, 흐름은 블록(350)으로 계속된다. 이 시점에서, 버퍼가 획득되고, 또한 파일 시스템으로부터 공유 메모리(212)에서의 그 버퍼에 어드레스 할 수 있게 된다. 블록(350)은 일단 이러한 일이 발생되면, 이 특정 데이터 버퍼가 소비자 장치(214)로 제공된다는 것을 나타낸다. 이것은 실제적으로 소비자 모듈(226)을 통해 VCS(224)로 제어를 통과시키는 부분단계를 수반한다. 소비자 모듈(226)은 메모리(212)로부터 전송될 데이터의 레퍼런스나 또는 크로스 메모리 디스크립터를 갖고 있다는 것을 상기하자. 메모리(212)로부터 소비자 장치(214)로의 데이터 전송을 유발하기 위해 표준 AIX 장치 드라이버가 이용될 수 있으며, 또는 다른 유닉스 시스템의 경우에는 다른 표준 장치 드라이버가 이용될 수 있다.
일단 소비자 장치(214)가 현재의 버퍼내의 모든 데이터를 그 장치(214)로 전송을 완료하였다면, 이 소비자 장치(214)는 (인터럽트 또는 다른 적합한 메카니즘에 의해) 그 장치(214)로 현재의 버퍼를 전송하는 이 연산이 완료되었다는 것을 장치 드라이버(220)로 통지하게 된다. 다음에, 이 장치 드라이버(220)는 이 데이터 이동이 완료되었다는 것을 소비자 모듈(226)로 다시 통신하게 된다. 이에 응답하여 소비자 모듈(226)은 제어를 VCS(224)로 통과시키게 된다. 다음에 VCS(224)는 입출력(I/O)(예를 들어, 메모리(212)로부터 소비자 장치(214)로의 현재 버퍼에서의 데이터의 전송)이 완료되었고, 시스템이 추가적인 버퍼를 전송할 준비가 되어 있다는 것을 생산자 모듈(222)에 통지한다.
그러므로, 도3의 단계(352)에서, 이 단계는 소비자 장치(214)가 공유 메모리(212)내의 현재 버퍼의 전송을 실제적으로 완료했다는 것을 나타낸다. 일단 이러한 전송 통지가 이루어지면, 예를 들어, 블록이 릴리스되게 되는 등과 같이, 어떤 로크 또는 버퍼가 사용중이라는 것을 나타내는 다른 정보가 갱신될 필요가 있다. 그러나, 또한, 소비자 장치(214)가, (방금 릴리스된 버퍼내의 직전에 전송된 데이터에 논리적으로 인접하여 전송되는 파일에서의 위치에) 존재하기에 앞서, 다음 버퍼의 펫치를 실행하기 위해 생산자 모듈(222)로부터 커널 확장부(216)의 경로를 통해 데몬(218)으로 다른 프리펫치 메시지가 전송된다. 이러한 방식으로 시스템은 소비자 장치(214)가 그 데이터를 필요로 하게 될 때까지 공유 메모리(212)에서 그 데이터가 항상 이용 가능한 상태를 유지한다. 이러한 프리펫칭은 서비스 품질의 요구에 기여하고, 따라서, 예를 들어 프레임이 드롭되는 것을 피할 수 있게 된다.
계속해서 도3을 참조하면, 블록(354)에서는, 전송될 파일과 관련된 데이터의 더 이상의 버퍼가 남아 있는지 판단하기 위한 검사가 이루어진다. 만일 실제적으로 데이터의 종료점에 도달되지 않았다면, 프로세스는 블록(346-354)를 참조하여 전술한 단계를 반복하기 위해 블록(344)로 되돌아 간다. 블록(354)에서, 이와 같은 모든 데이터가 전송된 것으로 검사되면, 프로세스는 단계(356)에서 종료되고, 데이터 전송이 완료되었다는 것을 나타내는 복귀가 발생한다.
비록 본 발명이 특정 실시예를 참조하여 도시 및 설명되었지만, 이 기술에 숙련된 사람은 본 발명이 사상 및 범위를 벗어나지 않고 그 형태 및 상세내용에서 상기 및 다른 변경이 이루어질 수도 있다는 것을 알 수 있을 것이다.
전술한 바와 같은 본 발명에 따르면, 멀티미디어 서버의 파일 시스템에 범용 인터페이스를 제공하므로써, 데이터 카피 및 콘텍스트 스위칭 없이 데이터스트림 처리 능력이 개선된 멀티미디어 시스템이 제공될 수 있는 효과가 있다.

Claims (44)

  1. 일련의 제로 카피 기능 인터페이스를 각각 지원하는 다수의 상이한 기존의 파일 시스템중 한 시스템, 생산자 모듈과 소비자 모듈를 상호 접속하는 VCS, 공유 메모리에 상호접속된 대용량 기억장치, 소비자 장치, 멀티미디어 파일 시스템 데몬, 및 상기 소비자 장치와 상기 소비자 모듈사이에 배치된 장치 드라이버를 구비한 멀티미디어 데이터스트리밍 시스템에 사용하기 위해, 상기 기존의 파일 시스템을 이용하여 데이터스트림 파일의 상기 제로 카피 기능을 지원하기 위한 방법에 있어서,
    상기 다수의 상이한 기존의 파일 시스템으로 범용 파일 시스템 인터페이스를 설정하는 단계; 및
    상기 생산자 모듈로부터 상기 소비자 모듈로의 상기 데이터스트림의 제로 카피 전송을 실행하기 위해 상기 범용 파일 시스템 인터페이스를 호출하는 단계를 포함해서 이루어진 방법.
  2. 제1항에 있어서,
    상기 인터페이스 설정 단계는,
    상기 생산자 모듈에 의해 등록되고 호출가능한 상기 기존의 파일 시스템을 이용하여 엑스포트 등록 서비스를 설정하는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    상기 엑스포트 등록 서비스는 멀티미디어 파일 서비스의 커널 서비스 확장부인 방법.
  4. 제3항에 있어서,
    상기 엑스포트 등록 서비스는, 상기 엑스포트 등록 서비스, 상기 기존의 파일 시스템, 및 상기 제로 카피 기능 인터페이스로 기능 디스크립터를 발생하도록 되어 있는 방법.
  5. 제4항에 있어서,
    상기 커널 확장부를 호출하기 위해 상기 생산자 모듈에 의해 호출가능한 상기 기능 디스크립터를 얻기 위해 상기 생산자 모듈로부터 상기 엑스포트 등록 서비스로 기능 호출을 발생하는 단계를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 생산자 모듈로 하여금 상기 데이터스트림 파일에 상기 제로 카피 기능이 작용했는지 검증하도록 하기 위해 상기 VCS를 이용하여 상기 생산자 모듈을 호출하는 단계를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 검증 단계는, 데이터 구조를 초기화하는 단계와, 상기 데이터스트림 파일과 관련된 파라미터를 검사하는 단계를 포함하는 방법.
  8. 제7항에 있어서,
    상기 검증 단계는,
    상기 데이터스트림 파일이 멀티미디어 파일이라는 것을 보증하는 단계를 포함하는 방법.
  9. 제8항에 있어서,
    상기 파라미터는 상기 데이터스트림 파일의 개시 및 종료 오프셋과 길이를 포함하는 방법.
  10. 제9항에 있어서,
    상기 데이터스트림 파일이 상기 대용량 기억장치에 로케이트되고 인터럽트 콘텍스트내에서 검색가능하게 될 수 있도록 인터럽트 콘텍스트로부터 데이터 전송을 지원하는 버퍼의 신분을 얻기 위해 상기 생산자 모듈로부터 상기 커널 서비스 확장부를 호출하는 단계를 더 포함하는 방법.
  11. 제10항에 있어서,
    상기 생산자 모듈로부터 상기 커널 서비스 확장부의 상기 호출에 응답하여 상기 데이터스트림 파일의 파일 속성을 레코드하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    상기 시스템이 상기 대용량 기억장치로부터 상기 공유 메모리내의 버퍼로 전송될 상기 데이터스트림 파일과 관련된 데이터를 준비시킬 대비가 되어 있다는 것을 나타내는 인디케이터를 상기 생산자 모듈로부터 상기 커널 서비스 확장부로 전송하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 데이터스트림 파일과 관련된 데이터의 초기 프리펫치를 개시하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 초기 프리펫치는 상기 데몬으로부터 발생되는 입출력(I/O) 명령어에 응답하여 이루어지고, 인터럽트 콘텍스트에서 상기 대용량 기억장치로부터 상기 공유 메모리내의 버퍼로 이루어 지도록 되어 있는 방법.
  15. 제14항에 있어서,
    상기 시스템이 상기 공유 메모리내의 상기 버퍼로부터 상기 소비자 장치로의 입출력(I/O)을 위한 준비가 되어 있다는 것을 나타내는 기능 호출을 상기 VCS로부터 상기 생산자 모듈로 발생하는 단계를 더 포함하는 방법.
  16. 제15항에 있어서,
    상기 대용량 기억장치내의 상기 데이터의 그 다음 버퍼에 대한 파일 디스크립터 및 오프셋에 대해 상기 생산자 모듈로부터 상기 커널 서비스 확장부로 기능 호출을 발생하는 단계를 더 포함하는 방법.
  17. 제16항에 있어서,
    상기 입출력 호출에 응답하여 상기 소비자 장치로 출력될 상기 공유 메모리내의 올바른 버퍼를 판단하기 위해 상기 커널 서비스 확장부에 의해 상기 멀티미디어 파일 시스템을 검사하는 단계를 더 포함하는 방법.
  18. 제17항에 있어서,
    상기 커널 서비스 확장부를 이용하여 상기 올바른 버퍼에 대응하는 크로스 메모리 디스크립터를 발생하는 단계를 더 포함하는 방법.
  19. 제18항에 있어서,
    상기 커널 서비스 확장부로 부터 순차적으로 상기 생산자 모듈, 상기 VCS, 및 상기 소비자 모듈로 상기 크로스 메모리 디스크립터를 배달하는 단계를 더 포함하는 방법.
  20. 제19항에 있어서,
    상기 드라이버에 의해 상기 크로스 메모리 디스크립터를 수신하는 단계; 및
    상기 수신된 크로스 메모리 디스크립터에 응답하여 상기 드라이버에 의해 상기 공유 메모리내의 상기 올바른 버퍼내의 상기 데이터를 상기 소비자 장치로 전송하는 단계를 더 포함하는 방법.
  21. 제20항에 있어서,
    상기 데이터스트림 파일이 인터럽트 콘텍스트에서의 전송에 적합하지 않은지 판단하기 위해 검사하는 단계; 및
    상기 검사에 응답하여 프로세스 콘텍스트에서 상기 파일로부터 데이터의 버퍼를 획득하는 단계를 더 포함하는 방법.
  22. 제21항에 있어서,
    인터럽트 콘텍스트에서 상기 커널 확장부와 상기 데몬 사이에 메일박스 인터페이스를 설정하는 단계를 더 포함하는 방법.
  23. 일련의 제로 카피 기능 인터페이스를 각각 지원하는 다수의 상이한 기존의 파일 시스템중 한 시스템, 생산자 모듈과 소비자 모듈를 상호 접속하는 VCS, 공유 메모리에 상호접속된 대용량 기억장치, 소비자 장치, 멀티미디어 파일 시스템 데몬, 및 상기 소비자 장치와 상기 소비자 모듈사이에 배치된 장치 드라이버를 구비한 멀티미디어 데이터스트리밍 시스템에 사용하기 위해, 상기 기존의 파일 시스템을 이용하여 데이터스트림 파일의 상기 제로 카피 기능을 지원하기 위한 장치에 있어서,
    상기 다수의 상이한 기존의 파일 시스템으로 범용 파일 시스템 인터페이스를 설정하기 위한 수단; 및
    상기 생산자 모듈로부터 상기 소비자 모듈로의 상기 데이터스트림의 제로 카피 전송을 실행하기 위해 상기 범용 파일 시스템 인터페이스를 호출하기 위한 수단을 포함해서 이루어진 장치.
  24. 제23항에 있어서,
    상기 인터페이스 설정 수단은,
    상기 생산자 모듈에 의해 등록되고 호출가능한 상기 기존의 파일 시스템을 이용하여 엑스포트 등록 서비스를 설정하기 위한 수단을 포함하는 장치.
  25. 제24항에 있어서,
    상기 엑스포트 등록 서비스는 멀티미디어 파일 서비스의 커널 서비스 확장부인 장치.
  26. 제25항에 있어서,
    상기 엑스포트 등록 서비스는, 상기 엑스포트 등록 서비스, 상기 기존의 파일 시스템, 및 상기 제로 카피 기능 인터페이스로 기능 디스크립터를 발생하도록 되어 있는 장치.
  27. 제26항에 있어서,
    상기 커널 확장부를 호출하기 위해 상기 생산자 모듈에 의해 호출가능한 상기 기능 디스크립터를 얻기 위해 상기 생산자 모듈로부터 상기 엑스포트 등록 서비스로 기능 호출을 발생하기 위한 수단을 더 포함하는 장치.
  28. 제27항에 있어서,
    상기 생산자 모듈로 하여금 상기 데이터스트림 파일에 상기 제로 카피 기능이 작용했는지 검증하도록 하기 위해 상기 VCS를 이용하여 상기 생산자 모듈을 호출하기 위한 수단을 더 포함하는 장치.
  29. 제28항에 있어서,
    상기 검증 수단은, 데이터 구조를 초기화하기 위한 수단과, 상기 데이터스트림 파일과 관련된 파라미터를 검사하기 위한 수단을 포함하는 장치.
  30. 제29항에 있어서,
    상기 검증 수단은,
    상기 데이터스트림 파일이 멀티미디어 파일이라는 것을 보증하기 위한 수단을 포함하는 장치.
  31. 제30항에 있어서,
    상기 파라미터는 상기 데이터스트림 파일의 개시 및 종료 오프셋과 길이를 포함하는 장치.
  32. 제31항에 있어서,
    상기 데이터스트림 파일이 상기 대용량 기억장치에 로케이트되고 인터럽트 콘텍스트내에서 검색가능하게 될 수 있도록 인터럽트 콘텍스트로부터 데이터 전송을 지원하는 버퍼의 신분을 얻기 위해 상기 생산자 모듈로부터 상기 커널 서비스 확장부를 호출하기 위한 수단을 더 포함하는 장치.
  33. 제32항에 있어서,
    상기 생산자 모듈로부터 상기 커널 서비스 확장부의 상기 호출에 응답하여 상기 데이터스트림 파일의 파일 속성을 레코드하기 위한 수단을 더 포함하는 장치.
  34. 제33항에 있어서,
    상기 시스템이 상기 대용량 기억장치로부터 상기 공유 메모리내의 버퍼로 전송될 상기 데이터스트림 파일과 관련된 데이터를 준비시킬 대비가 되어 있다는 것을 나타내는 인디케이터를 상기 생산자 모듈로부터 상기 커널 서비스 확장부로 전송하는 단계를 더 포함하는 장치.
  35. 제34항에 있어서,
    상기 데이터스트림 파일과 관련된 데이터의 초기 프리펫치를 개시하기 위한 수단을 더 포함하는 장치.
  36. 제35항에 있어서,
    상기 초기 프리펫치는 상기 데몬으로부터 발생되는 입출력(I/O) 명령어에 응답하여 이루어지고, 인터럽트 콘텍스트에서 상기 대용량 기억장치로부터 상기 공유 메모리내의 버퍼로 이루어 지도록 되어 있는 장치.
  37. 제36항에 있어서,
    상기 시스템이 상기 공유 메모리내의 상기 버퍼로부터 상기 소비자 장치로의 입출력(I/O)을 위한 준비가 되어 있다는 것을 나타내는 기능 호출을 상기 VCS로부터 상기 생산자 모듈로 발생하기 위한 수단을 더 포함하는 장치.
  38. 제37항에 있어서,
    상기 대용량 기억장치내의 상기 데이터의 그 다음 버퍼에 대한 파일 디스크립터 및 오프셋에 대해 상기 생산자 모듈로부터 상기 커널 서비스 확장부로 기능 호출을 발생하기 위한 수단을 더 포함하는 장치.
  39. 제38항에 있어서,
    상기 입출력 호출에 응답하여 상기 소비자 장치로 출력될 상기 공유 메모리내의 올바른 버퍼를 판단하기 위해 상기 커널 서비스 확장부에 의해 상기 멀티미디어 파일 시스템을 검사하기 위한 수단을 더 포함하는 장치.
  40. 제39항에 있어서,
    상기 커널 서비스 확장부를 이용하여 상기 올바른 버퍼에 대응하는 크로스 메모리 디스크립터를 발생하기 위한 수단을 더 포함하는 장치.
  41. 제40항에 있어서,
    상기 커널 서비스 확장부로 부터 순차적으로 상기 생산자 모듈, 상기 VCS, 및 상기 소비자 모듈로 상기 크로스 메모리 디스크립터를 배달하기 위한 수단을 더 포함하는 장치.
  42. 제41항에 있어서,
    상기 드라이버에 의해 상기 크로스 메모리 디스크립터를 수신하기 위한 수단; 및
    상기 수신된 크로스 메모리 디스크립터에 응답하여 상기 드라이버에 의해 상기 공유 메모리내의 상기 올바른 버퍼내의 상기 데이터를 상기 소비자 장치로 전송하기 위한 수단을 더 포함하는 장치.
  43. 제42항에 있어서,
    상기 데이터스트림 파일이 인터럽트 콘텍스트에서의 전송에 적합하지 않은지 판단하기 위해 검사하기 위한 수단; 및
    상기 검사에 응답하여 프로세스 콘텍스트에서 상기 파일로부터 데이터의 버퍼를 획득하기 위한 수단을 더 포함하는 장치.
  44. 제43항에 있어서,
    인터럽트 콘텍스트에서 상기 커널 확장부와 상기 데몬 사이에 메일박스 인터페이스를 설정하기 위한 수단을 더 포함하는 장치.
KR1019970039913A 1996-12-02 1997-08-21 멀티미디어 시스템에서 데이터를 효율적으로 전송하기 위한방법 및 시스템 KR100259332B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/755,866 1996-12-02
US08/755,866 US5931925A (en) 1996-12-02 1996-12-02 System and method for efficiently transferring datastreams in a multimedia system

Publications (2)

Publication Number Publication Date
KR19980063413A KR19980063413A (ko) 1998-10-07
KR100259332B1 true KR100259332B1 (ko) 2000-06-15

Family

ID=25040992

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970039913A KR100259332B1 (ko) 1996-12-02 1997-08-21 멀티미디어 시스템에서 데이터를 효율적으로 전송하기 위한방법 및 시스템

Country Status (9)

Country Link
US (1) US5931925A (ko)
EP (1) EP0853412B1 (ko)
JP (1) JP3037924B2 (ko)
KR (1) KR100259332B1 (ko)
CN (1) CN1093660C (ko)
AT (1) ATE296011T1 (ko)
CA (1) CA2222347C (ko)
DE (1) DE69733305T2 (ko)
TW (1) TW387074B (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141693A (en) * 1996-06-03 2000-10-31 Webtv Networks, Inc. Method and apparatus for extracting digital data from a video stream and using the digital data to configure the video stream for display on a television set
KR100231707B1 (ko) * 1997-08-04 2000-01-15 정선종 통신 장비의 디엠에이 처리 방법 및 그 장치
US6519686B2 (en) * 1998-01-05 2003-02-11 Intel Corporation Information streaming in a multi-process system using shared memory
KR20000065846A (ko) * 1999-04-09 2000-11-15 구자홍 오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법
KR20010003383A (ko) * 1999-06-23 2001-01-15 정선종 멀티미디어 파일 시스템 및 이를 이용한 멀티미디어 데이터 처리 방법
US6747784B2 (en) 2000-03-20 2004-06-08 Np Photonics, Inc. Compliant mechanism and method of forming same
US6735620B1 (en) * 2000-07-18 2004-05-11 International Business Machines Corporation Efficient protocol for retransmit logic in reliable zero copy message transport
TW559702B (en) * 2000-08-31 2003-11-01 Nippon Telegraph & Telephone File transfer system, apparatus, method and computer readable medium storing file transfer program
US7424201B2 (en) * 2001-03-30 2008-09-09 Sandisk 3D Llc Method for field-programming a solid-state memory device with a digital media file
US20020169926A1 (en) * 2001-04-19 2002-11-14 Thomas Pinckney Systems and methods for efficient cache management in streaming applications
US8682939B2 (en) * 2002-05-22 2014-03-25 Teac Aerospace Technologies, Inc. Video and audio recording using file segmentation to preserve the integrity of critical data
US6938054B2 (en) * 2002-11-25 2005-08-30 International Business Machines Corporation Systems, methods, and computer program products to optimize serialization when porting code to IBM S/390 UNIX system services from a UNIX system
JP4227931B2 (ja) 2004-04-15 2009-02-18 株式会社日立製作所 情報記憶装置、情報格納方法及び情報記憶処理プログラム
US7249208B2 (en) * 2004-05-27 2007-07-24 International Business Machines Corporation System and method for extending the cross-memory descriptor to describe another partition's memory
KR100553348B1 (ko) * 2004-05-31 2006-02-20 한국전자통신연구원 피엠이엠 제어기를 이용한 고속 스트리밍 데이터 전송장치 및 방법
US7617256B2 (en) * 2004-07-19 2009-11-10 Microsoft Corporation Remote file updates through remote protocol
GB2420639A (en) * 2004-11-24 2006-05-31 Hewlett Packard Development Co Monitoring Copy on write (COW) faults to control zero-copy data transfer
CN101379464B (zh) * 2005-12-21 2015-05-06 数字标记公司 规则驱动型个域网id元数据路由系统和网络
CN100464304C (zh) * 2006-08-29 2009-02-25 飞塔信息科技(北京)有限公司 一种基于Linux操作系统实现零拷贝的装置和方法
CN100502572C (zh) 2006-11-30 2009-06-17 华为技术有限公司 增大多媒体消息业务系统容量的方法及系统
KR100938470B1 (ko) * 2007-12-17 2010-01-25 한국전자통신연구원 스트리밍 데이터 공유를 위한 fc 기반의 네트워크스토리지 스트리밍 가속 장치 및 방법
CN102375789B (zh) * 2010-08-09 2014-05-28 中标软件有限公司 一种通用网卡非缓存的零拷贝方法及零拷贝系统
US9092426B1 (en) * 2011-01-03 2015-07-28 Applied Micro Circuts Corporation Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
CN104918058A (zh) * 2015-05-26 2015-09-16 江苏高科物流科技股份有限公司 一种高效传送数据流的方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341479A (en) * 1989-01-31 1994-08-23 Storage Technology Corporation Address mark triggered read/write head buffer
US5291608A (en) * 1990-02-13 1994-03-01 International Business Machines Corporation Display adapter event handler with rendering context manager
US5517652A (en) * 1990-05-30 1996-05-14 Hitachi, Ltd. Multi-media server for treating multi-media information and communication system empolying the multi-media server
US5161226A (en) * 1991-05-10 1992-11-03 Jmi Software Consultants Inc. Microprocessor inverse processor state usage
US5241669A (en) * 1992-04-20 1993-08-31 International Business Machines Corporation Method and system for sidefile status polling in a time zero backup copy process
US5404536A (en) * 1992-09-15 1995-04-04 Digital Equipment Corp. Scheduling mechanism for network adapter to minimize latency and guarantee background processing time
US5481719A (en) * 1994-09-09 1996-01-02 International Business Machines Corporation Exception handling method and apparatus for a microkernel data processing system
EP0707266B1 (en) * 1994-10-11 2002-01-09 Sun Microsystems, Inc. Methods and apparatus for a data transfer mechanism in the field of computer systems
US5802288A (en) * 1995-10-26 1998-09-01 International Business Machines Corporation Integrated communications for pipelined computers

Also Published As

Publication number Publication date
CN1184285A (zh) 1998-06-10
CA2222347C (en) 2002-07-02
JP3037924B2 (ja) 2000-05-08
CA2222347A1 (en) 1998-06-02
JPH10224767A (ja) 1998-08-21
EP0853412B1 (en) 2005-05-18
TW387074B (en) 2000-04-11
DE69733305T2 (de) 2006-01-19
DE69733305D1 (de) 2005-06-23
KR19980063413A (ko) 1998-10-07
US5931925A (en) 1999-08-03
EP0853412A3 (en) 2004-01-07
EP0853412A2 (en) 1998-07-15
ATE296011T1 (de) 2005-06-15
CN1093660C (zh) 2002-10-30

Similar Documents

Publication Publication Date Title
KR100259332B1 (ko) 멀티미디어 시스템에서 데이터를 효율적으로 전송하기 위한방법 및 시스템
US5852747A (en) System for awarding token to client for accessing first data block specified in client request without interference due to contention from other client
US6298386B1 (en) Network file server having a message collector queue for connection and connectionless oriented protocols
US5163131A (en) Parallel i/o network file server architecture
US7620991B2 (en) Optimized network cache for virus scanning by examining the magic bytes of a file
US5544353A (en) Distributed processing object shared resource control apparatus and method
US6647473B1 (en) Kernel-based crash-consistency coordinator
TWI317482B (en) Wide-port context cache apparatus, systems and methods, and machine-accessible medium having associated information
KR100330576B1 (ko) 컴퓨터네트워크로부터월드와이드웹상의페이지위치을파악하고문서위치를파악하는시스템및방법
US6553464B1 (en) Obtaining data from a remote storage device
US7349943B2 (en) Protocol-independent client-side caching system and method
EP0780778A2 (en) System and method for automounting and accessing remote file systems in microsoft windows in a networking environment
DeBergalis et al. The Direct Access File System.
KR19990029323A (ko) 애플리케이션 프로그램 인터페이스와 이를 구현하는 방법 및 컴퓨터 프로그램 제품
US20060168091A1 (en) RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY INITIATOR
US7343527B2 (en) Recovery from iSCSI corruption with RDMA ATP mechanism
JPH04233653A (ja) 速度差が大きい協同プロセッサ間のメッセージ・キュー処理
US10592446B2 (en) Synchronous input/output command
US6944863B1 (en) Queue bank repository and method for sharing limited queue banks in memory
US20110099289A1 (en) System, method and computer program product for accessing data from a source by a variety of methods to improve performance and ensure data integrity
US6874035B1 (en) System and methods for transforming data from a source to target platform using snapshot
KR20070072682A (ko) 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드
US7827194B2 (en) Access to shared disk device on storage area network
Cisco NP O/S Command Reference
JP2002149463A (ja) データ・サーバ・システム内のデータの連続更新方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee