KR0146567B1 - 메모리 버퍼 관리 방법 및 시스템 - Google Patents

메모리 버퍼 관리 방법 및 시스템

Info

Publication number
KR0146567B1
KR0146567B1 KR1019950003882A KR19950003882A KR0146567B1 KR 0146567 B1 KR0146567 B1 KR 0146567B1 KR 1019950003882 A KR1019950003882 A KR 1019950003882A KR 19950003882 A KR19950003882 A KR 19950003882A KR 0146567 B1 KR0146567 B1 KR 0146567B1
Authority
KR
South Korea
Prior art keywords
buffer
request
stream
customer
block
Prior art date
Application number
KR1019950003882A
Other languages
English (en)
Other versions
KR950027576A (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 KR950027576A publication Critical patent/KR950027576A/ko
Application granted granted Critical
Publication of KR0146567B1 publication Critical patent/KR0146567B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Television Signal Processing For Recording (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 하나의 스트림에 의해 이미 입력된 블럭을 다른 스트림이 재이용(re-use)할 수 있도록 선택적으로 보유함으로써 멀티미디어 서버(multimedia server)에 의해 요구되는 디스크 대역폭용량(disk bandwidth capacity)을 감소시키는 방법에 관한 것이다. 스트림 종속 블럭 버퍼링(stream-dependent block buffering)에 기법에 의하여, 저장 요구(storage requirement)는 전체 영화를 버퍼링(whole-movie buffering)하는 경우보다 작으며, 또한 이 방안(policy)은 동적(dynamic)이기 때문에 액세스 패턴(access patterns)의 변화에 신속히 적응한다.

Description

메모리 버퍼 관리 방법 및 시스템
제1도는 본 발명의 실시예에 따른 주문형 비디오 시스템의 블럭도
제2도는 제1도의 버퍼 관리기에 의해 유지되는 데이타 구조를 도시한 도면
제3a도는 내지 3c도는 제1도의 버퍼 관리기에 의한 시작 혹은 재개 요청을 처리하는 흐름도
제4도는 중단 요청 수신시 제1도의 버퍼 관리기에 의해 수행되는 동작의 흐름도
제5도는 중지 요청 수신시 제1도의 버퍼 관리기에 의해 수행되는 동작의 흐름도
제6도는 새로운 버퍼가 사용가능하게 되었을 때 버퍼된 스트림을 찾기 위해 제1도의 버퍼 관리기에 의해 수행되는 단계의 흐름도
제7a 및 7b도는 각각 디스크 I/O 프로세스 및 통신 프로세스와 제1도의 버퍼 관리기 사이의 상호 작용을 도시한 도면
*도면의 주요부분에 대한 부호의 설명
10:고객 20:통신 네트워크
30:비디오 서버 40:버퍼 풀
45:작은 버퍼 50:디스크 I/O 프로세스
60:통신 프로세스 70:자유 풀
80:버퍼 관리기
본 발명은 중앙 비디오 서버(central video server)로 부터 전송(deliver)된 비디오 스트림(video streams)에 의해 다수의 고객이 원하는 비디오 서비스를 제공받을 수 있는 주문형 비디오 시스템(movie(video) on demoned system)에 관한 것이다.
디지탈 비디오 기술(digital video technology)의 출현으로, 지역적으로 분산된 네트워크(geographically distributed network)를 통해 다수의 고객에게 주문형 비디오 서비스를 제공하는 것이 가능하게 되었다. 이 비디오 서비스에는, 엄격한 실시간 응답시간제한(hard real-time constraints on response time)이 가하여 지므로, 서버측에 충분한 자원(resource)이 확보(reserve)되어 고객에게 연속적으로 비디오 스트림을 전송할 수 있어야 한다. 다수의 사용자가 이 시스템을 이용하게 되면, 필요한 디스크 대역폭은 매우 높아질 수도 있다. 메모리 가격이 점차 하락하고 있기 때문에, 비디오 데이타를 효율적으로 버퍼링하여 디스크 대역폭 요건(disk dandwidth requirement)을 감소시키는 것이 가격면에서 유리할 수도 있다.
각종 소프트웨어 시스템에 의해 사용된 종래의 버퍼 관리 방안은 전체 어드레스 공간보다 훨씬 작은 크기의 핫 셋 데이타(a hot set of data) 개념에 기초한다. 그러나, 이러한 개념을 주문형 비디오 서비스 환경에 적용하는 것은 적절하지 않다. 왜냐하면, 각각의 멀티미디어 객체(multimedia object)(예를 들면 영화)는 매우 방대한 양의 저장 용량을 요구하기 때문이다. 몇몇 비디오(video object)가 다른 비디오보다 더 인기있을 수도 있겠으나, 이러한 적은 수의 인기 비디오들을 버퍼링하는데도 매우 큰 메모리 공간이 필요하다. 블럭 레벨(block level)(예를 들면, 단일 페이지)로 동작하는 버퍼링 방안은 다음과 같은 이유로 의미가 없다. 첫째, LRU와 같은 알고리즘하에서의 버퍼 적중(buffer hits)은 그 속성상 예측할 수 없으므로 서버가 멀티미디어 응용에서 스트림의 연속적인 제공을 보장하기가 어렵게 된다. 또한, 전체 화일을 버퍼링하게 되면, 매우 큰 용량의 버퍼를 사용하지 않는 한 버퍼 적중 확률은 매우 낮아질 것이다.
전술한 사항에 비추어, 본 발명자는 전술한 두가지 제약 사항 모두를 해결할 수 있는 버퍼 관리 방안을 발견하였다. 이 방안은 다음과 같은 원리에 근거한다. 즉, 동일한 영화에 대해 두개의 연속적인 요청(two consecutive requests)이 있는 경우, 나중의 스트림은 앞선 스트림에 의해 버퍼로 이송된(brought in) 데이타를 (이 데이타가 나중의 스트림에 의해 판독될 때까지 버퍼에 존재하는 경우) 판독할 수 있다. 만약 스트림 S2가 스트림 S1에 의해 이제 막 판독된 블럭을 그 다음으로 판독하는 스트림이면, 이들 두 스트림 S1, S2는 연속적(consecutive)이라고 정의된다. 이러한 한쌍의 연속적인 스트림은 각기 선행 및 후속 스트림(the preceding and the following streams)으로 지칭된다. 이러한 종속성(dependencies)을 이용하면, 적은 용량의 버퍼를 사용하고도 후속 스트림이 연속적으로 전송되도록 보장할 수 있다. 본 발명에 따르면, 동일한 영화를 판독하는 다수의 동시적인 스트림의 경우에 있어서는, 본 발명에 따르면, 비디오 서버가 버퍼에 보유(retain)될 스트림을 선택하여 버퍼로 부터 판독되는 스트림의 수가 최소가 되도록 할 수 있다. 도착 사이 시간(inter-arrival time)은 통계적인 요동(statistical fluctuations) 때문에 일정하지 않다는 사실에 유의해야 한다. 큰 샘플 세트(a large set of samples)로 부터 작은 도착 사이 시간 세트(a small set of inter-arrival times)를 선택하는 것이 가능하며, 이에 따라 본 발명은 도착 사이 시간에서의 요동을 이용(exploit)할 수 있다.
또한, 다수의 고객이 공통 검색 스트림(common retrival)을 공유하고(멀티캐스팅 (multicasting)으로도 지칭됨) 하나의 고객이 서버에게 중지 요청(pause request)을 전송하는 경우, 공급이 중지된 고객을 위하여 소량의 버퍼가 할당되어 이 소량의 버퍼가 공통 검색스트림(common retrival stream)에 의해 이송된(brought in) 블럭을 보유하도록 한다. 따라서, 만약 고객이 잠시후에 비디오 공급이 재개(resume)되길 원한다면(즉, 중지 요청을 취소한다면), 그 고객은 이 소량의 버퍼로부터 서비스를 제공받을 수 있게 된다. 이러한 동작은 새로운 연속적인 스트림 쌍을 생성하며, 이 스트림중 선행하는 스트림은 공통 검색 스트림이고, 후속 스트림은 재개된 고객을 위해(상기 소량의 버퍼로 부터 제공되는) 새롭게 생성된 스트림이다. 따라서, 고객이 잠시후에 재개하지 않는다면, 연속적인 쌍에 대한 버퍼 관리가 전술한 바와 같이 속행될 것이다. 만약 고객이 할당된 버퍼를 채우는 데 소요되는 시간내에 재개하지 않는다면, 버퍼 내용은 폐기(discard)되고 버퍼는 다른 용도를 위해 해방(free)될 것이다.
이하, 본 발명의 바람직한 실시에를 첨부도면을 참조하여 상세히 설명할 것이다.
후속 스트림이 선행 스트림으로 부터 데이타를 판독할 수 있도록 하기 위해 필요한 버퍼 요구(량)(buffer requirements)은 두 스트림 사이의 시간 간격(time interval) 및 사용된 압축 방법(compression method)의 함수이다. 이러한 평가(estimate)는 새로운 스트림이 생성될 때 구하여질 수 있다. 본 발명의 방안은 모든 영화 요청을 이들의 버퍼 요구가 증가하는 순서로 순서화한다. 이어서 버퍼를 가능한 한 다수의 스트림에 할당한다. 연속적인 스트림의 순서화 및 버퍼 할당은 새로운 스트림의 도착, 혹은 스트림의 중지 내지 중단에 기인한 기존 연속 관계(existing consecutive relation ship)의 변경시에만 발생한다. 새롭게 시작된 스트림의 버퍼 요구가 이미 버퍼가 할당된 스트림의 버퍼 요구보다 작다면, 이 버퍼는 이전에 버퍼된 스트림으로 부터 인도(take away)되어 새롭게 시작된 스트림에 할당될 수 있다.
제1도는 본 발명의 실시예에 따른 주문형 비디오 시스템의 블럭도이다. 고객(10)은 통신 네트워크(20)를 통해 비디오 서버(30)에게 비디오 요청을 전송한다고 가정한다. 고객은 시작, 중단, 중지 및 재개 요청(start, stop, pause and resume requests)을 전송할 수 있다. 비디오 서버(30)는 다수의 구성 요소(components)를 포함한다. 버퍼 장치(buffer storage)는 두개의 풀(pool)로 나뉘어진다. 즉, 데이타의 저장에 사용될 수 있는 자유 블럭(free blocks)을 포함하는 자유 풀(free pool)(700) 및 사용자에게 전송할 준비가 된 데이타를 보유한 블럭을 포함하는 버퍼 풀(buffer pool)(40)로 나뉘어 진다. 버퍼 풀(40)은 작은 버퍼(예를 들어, 각각 30초 정도의 비디오를 저장할 수 있는 버퍼)의 집합으로 구성된 서브-버퍼 풀(작은 버퍼 풀)(45)을 포함한다. 디스크 I/O 프로세스(50)는 자유 풀(70)로 부터 획득한 빈 버퍼에 비디오 데이타를 읽어들여, 이들 버퍼를 버퍼 풀(40)로 삽입한다. 통신 프로세스(60)는 비디오 데이타를 고객에게 전송한다. 하나의 고객을 위해 버퍼로 판독된 비디오 데이타는 다른 고객에 대해 재전송(re-transmission)될 수 있도록 유지(retain)될 수 있다. 재전송된 블럭은 디스크로 부터 재판독될 필요가 없으므로 서버 자원(server resources)이 절약된다. 그러므로, 버퍼 관리기(buffer manager)(80)는, 차후에 다른 고객에 대해 재전송될 수 있도록, 그들의 블럭이 버퍼내에 보존될 고객 세트를 선정한다. 재전송된 블럭을 수신하는 고객은 버퍼된 고객으로 지칭될 것이며, 재전송될 블럭을 버퍼된 고객에게 서비스하는 스트림은 버퍼된 스트림으로 지칭될 것이다.
제2도에 도시된 바와 같이, 다수의 데이타 구조가 버퍼 관리기에 의해 유지 관리된다. 스트림 테이블(110)은 현재 활성인(currently active) 각각의 영화 스트림에 대해 하나의 스트림엔트리(115)를 포함한다. 스트림 엔트리는 스트림 식별자(stream ID)(120), 영화 식별자(영화 번호)(125), 현재 디스플레이되는 블럭(현재 블럭)(130), 스트림의 판독 상태(판독 상태)(135), 버퍼(140)로 부터 스트림을 서비스하는데 필요한 버퍼의 양(버퍼 REQD), 크기 리스트 포인터(크기 리스트 PTRS)(145) 및 영화 리스트 포인터(영화 리스트 PTR)(150)를 포함한다. 판독 상태(135)는 5가지의 값을 가질 수 있다. 즉, 스트림이 디스크로 부터 판독되면 DISK, 스트림이 버퍼된 스트림이면 BUFFER, 스트림이 디스크에서 버퍼로 스위칭되는 과정에 있으면 DISK_TO_BUFFER, 스트림이 버퍼에서 디스크로 스위칭되는 과정에 있으면 BUFFER_TO_DISK 그리고, 스트림이 작은 버퍼로 부터 판독되면 SMALL_BUFFER의 값을 갖는다. 버퍼 REQD(140)는 현재의 스트림과 바로 이전의 스트림 사이의 모든 블럭을 저장하는 데 필요한 버퍼의 양(즉, 이전 스트림의 현재 블럭 번호와 현재 스트림의 현재 블럭 번호(130) 사이의 차)이다.
크기 리스트(160)는 모든 활성 스트림이 버퍼 REQD 필드의 오름차순(ascending order)으로 이중 연결된(doubly linked) 리스트이다. 본 실시예에서, 크기 리스트(160)는 스트림 테이블내의 모든 엔트리의 크기 리스트 포인터(145)를 체인연결(chaining)함으로써 형성된다. 이와 달리, 크기 리스트는 버퍼 REQD(140) 크기에 따라 오름차순으로 순서화된 스트림 식별자(120)를 수록한 분리 테이블(separate table)형태로 제공될 수도 있다. 각 스트림 엔트리의 크기 리스트 포인터(145)는 크기 리스트내의 이전 및 다음 엔트리를 가리킨다. 또한 크기 리스트내의 가장 큰 요소(element) 및 가장 작은 요소에 대한 글로벌 포인터(165, 170) 및 가장 큰 버퍼된 스트림에 대한 포인터(171)와 가장 작은 버퍼 REQD(140)를 갖는 디스크 스트림에 대한 포인터(172)도 존재한다.
각각의 활성 영화(active movie)에 대해, 하나의 영화 리스트(180)가 존재하며, 이 리스트는 이 활성 영화를 수록(carry)한 스트림 테이블(stream table)내의 모든 엔트리의 영화 리스트 포인터(150)를 체인 연결함으로써 형성된다. 각 영화에 대한 영화 리스트의 처음 및 마지막 엔트리에 대한 포인터(182, 183)가 영화 테이블(175)내에 저장된다. 영화 리스트는 현재 블럭의 오름차순으로 그 영화에 대한 모든 스트림 엔트리를 수록한 리스트이다. 각 엔트리의 영화 리스트 포인터(150)는 영화 리스트내의 다음 엔트리를 가리킨다.
두개의 카운터(counters) 즉, 공칭 자유 공간(nominal free space) 카운터(185) 및 실제 자유 공간(actual free space) 카운터(190)는 사용가능한 버퍼 공간의 양을 추적하는 데 사용된다. 실제 자유 공간 카운터는 사용가능한 전체 버퍼의 양으로 초기화된다. 실제 자유 공간 카운터는 사용가능한 버퍼의 실제 양을 추적하는데 사용된다. 공칭 자유 공간 카운터는 사용가능한 전체 버퍼 공간의 높은 비율(예를 들어 90%)로 초기화된다. 공칭 자유 공간 카운터는 버퍼 관리기가 공간을 할당하고 할당해제할 때 사용된다. 즉, 버퍼 공간을 할당할 때, 버퍼 관리기는 단지 공칭 자유 공간 카운터에 의해 지정된 공간의 양만큼만 할당할 것이다. 그 이유는 압축 비율(compression ratios)에서의 요동(fluctuation)으로 인해 스트림에 의해 요구되는 실제 버퍼량이 변할 수도 있으며; 이로 인해, 때때로, 스트림은 버퍼 관리기에 의해 이 스트림에 할당된 것에 비해 많거나 혹은 적은 버퍼 공간을 요구할 수도 있기 때문이다. 공칭 및 실제 자유 공간 카운터의 초기값사이의 차이(이 예에서는 10%)는 이러한 요동을 수용(accomodate)하는데 사용되는 안전 버퍼(safety buffer)이다.
버퍼 관리기에 의한 시작 혹은 재개 요청을 처리하는 흐름도가 제3a-3c 도에 도시되어 있다. 요청된 스트림에 대한 엔트리가 이미 존재하지 않는다면, 새로운 스트림 엔트리가 이 요청에 대해 생성된다. 단계(214)에서 새로운 스트림 엔트리(115)가 이 요청에 대해 생성되고, 스트림 테이블(110)로 삽입된다. 새로운 스트림 엔트리의 판독 상태는 DISK로 설정된다. 현재 블럭(130)은 요청된 블럭으로 설정되고, 스트림 엔트리는 영화 리스트(180)내로 삽입되되 현재의 블럭을 이용하여 그 위치가 결정된다.
단계(215)에서 버퍼 관리기는 판독 상태를 점검하여 영화가 작은 버퍼 풀(45)로 부터 서비스될 수 있는지를 결정한다. 판독 상태가 SMALL_BUFFER이면, 버퍼 관리기는 작은 버퍼 풀로 부터 그 영화를 서비스하기 시작하고 단계(217)에서 종료(exit)한다. 재개된 스트림은 작은 버퍼로 부터 저장된 스트림 데이타를 판독함으로써 연속적으로(in a continuous fashion) 멀티캐스트 스트림으로 부터의 데이타를 사용한다. 만약 영화가 작은 버퍼풀로 부터 서비스될 수 없다면, 단계(218)에서 버퍼 관리기는 이 요청에 대한 스트림 엔트리의 위치를 사용하여 이 요청이, 후속 요청이 버퍼로 부터 서비스되고 있는 두개의 요청 사이에 속(fall)하는지(즉, 버퍼된 스트림인지)를 판정한다. 만약 이 요청이 후속 요청이 버퍼로 부터 서비스되고 있는 두개의 요청 사이에 속한다면, 현재의 스트림 역시 그 버퍼로 부터 서비스될 수 있다. 단계(219)에서 버퍼 관리기는 현재 요청의 버퍼 REQD(140) 뿐만 아니라 후속 요청의 버퍼 REQD 필드(140)도 재계산하고, 크기 리스트내에서 후속 요청의 위치를(크기 리스트 포인터를 조정하므로써) 조정(adjust)하고, 현재 요청의 판독 상태를 BUFFER로 설정한다. 버퍼 관리기는 또한 크기 리스트 및 영화 리스트내에서 현재 요청의 스트림 엔트리의 포인터를 조정하고 단계(220)에서 종료한다.
스트림이 버퍼된 쌍안에 존재하지 않는다면, 단계(222)에서 영화 리스트를 사용하여 그 영화에 대해 가장 근접한 이전 스트림(즉, 이 영화를 판독하는 모든 스트림중에서 현재의 블럭이 이 요청의 현재의 블럭에 가장 근접하는 스트림)을 판정한다. 이러한 블럭이 존재하지 않는다면, 버퍼 관리기는 단계(225)에서 종료한다. 만약 이러한 요청이 존재한다면, 단계(230)에서 스트림 엔트리내의 버퍼 REQD(140)는 바로 이전의 스트림과 현재의 요청 사이의 모든 블럭을 버퍼하는데 필요한 저장량으로 설정된다. 스트림 엔트리는 그후 크기 리스트(160)내로 삽입되되, 버퍼 REQD 필드를 이용하여 그 위치가 결정된다.
다음, 단계(235)에서 버퍼 관리기는 공칭 자유 공간 카운터(185)를 검사하여 이 요청을 수용할 수 있는 충분한 자유버퍼공간이 존재하는 지의 여부를 결정한다. 충분한 자유 버퍼 공간이 존재한다면, 버퍼 관리기는 이 요청을 버퍼링(buffering)하는데 필요한 단계(270-280)를 개시한다. 만약 충분한 자유 공간을 사용할 수 없다면, 버퍼 관리기는 단계(240-260)로 구성된 버퍼 스캔(buffer scan)을 수행하여 다른 스트림을 제거함으로써 스트림을 버퍼하여야 하는지의 여부를 판정한다. 먼저, 스캔 포인터는 단계(240)에서 가장 큰 버퍼된 스트림(171)으로 초기화된다. 버퍼 관리기는 그후 단계(245)에서 스캔된 스트림에 의한 버퍼 REQD가 현재의 요청에 의해 요구된 버퍼 보다 큰지를 점검한다. 크지 않다면, 버퍼 관리기는 단계(250)에서 종료한다. 만약 크다면, 단계(250)에서 버퍼 관리기는 스캔된 스트림이 디스크로 이동될 수 있는지 점검한다. 스캔된 스트림이 이동될 수 없다면, 단계(260)에서 버퍼 관리기는 크기 리스트를 검사하고, 스캔 포인터를 다음의 가장 작은 버퍼 REQD를 갖는 버퍼된 스트림으로 전진시킨다.
스캔된 스트림이 이동될 수 있다면, 단계(265)에서 이 스트림의 판독 상태는 DISK로 설정되고 공칭 자유 버퍼 공간 카운터는 스캔된 스트림의 버퍼 REQD 필드 만큼 증가(increment)된다. 이러한 동작은 스캔된 스트림에 의해 점유된 버퍼를 효과적으로 해방시킨다. 단계(270)에서, 버퍼 관리기는 이 요청의 판독 상태를 DISK_TO_BUFFER로 변경하고, 단계(275)에서 공칭 자유 카운터를 버퍼 REQD 만큼 감소시킨다. 단계(280)에서 버퍼 관리기는 종료한다.
중단(stop) 요청이 수신되었을 때의 동작이 제4도에 도시되어 있다. 단계(320)에서, 이 스트림에 대한 스트림 엔트리가 스트림 테이블(110), 크기 리스트(160) 및 영화 리스트(175)에서 제거된다. 단계(330)에서, 버퍼 관리기는 이 스트림의 판독 상태(BUFFER 혹은 DISK_TO_BUFFER)(135)를 검사함으로써 스트림에 버퍼가 할당되었는지의 여부를 결정한다. 스트림에 버퍼가 할당되지 않았다면, 버퍼 관리기는 단계(340)에서 종료한다. 만약 스트림에 버퍼가 할당되었다면, 단계(350)에서 버퍼 관리기는 공칭 자유 공간 카운터(185)를 버퍼 REQD(140)만큼 증가시킴으로써 버퍼를 해방시킨다. 버퍼 관리기는 그후 제6도에 도시된 새롭게 버퍼된 스트림 탐색(Look for new buffered stream) 단계를 수행한다.
제5도는 중지(pause) 요구가 수신되었을 때의 동작을 도시한다. 먼저 단계511)에서 버퍼 관리기는 스트림이 멀티캐스트 스트림인지의 여부를 판정한다. 스트림이 멀티캐스트 스트림이면, 단계(512)에서 작은 버퍼 풀내에 사용가능한 작은 버퍼가 존재하는지를 점검한다. 만약 어떠한 작은 버퍼도 사용가능하지 않다면, 버퍼 관리기는 단계(515)에서 정상적인 처리(normal processing)를 계속 수행한다. 사용가능한 작은 버퍼가 존재한다면, 단계(513)에서 이 버퍼가 스트림에 할당되고, 버퍼 관리기는 단계(514)에서 종료한다. 스트림이 멀티캐스트 스트림이 아니면, 단계(515)에서 이 스트림에 대한 스트림 엔트리가 스트림 테이블(110)로 부터 제거되고, 나머지 엔트리에 대한 크기 리스트 및 영화리스트 포인터(145, 150)가 이에 따라 조정된다.
만약, 현재 스트림에 버퍼가 할당되었다면(판독 상태가 BUFFER 혹은 DISK_TO_BUFFER), 공칭 자유 공간 카운터(185)는 현재 스트림의 버퍼 REQD 필드 만큼 증가된다. 버퍼 관리기는 그후 단계(520)에서 바로 다음의 스트림의 버퍼 REQD(140)를 재계산한다. 크기 리스트(160)에서 후속 스트림의 위치는 (버퍼 REQD 필드의 새로운 값에 근거하여) 조정되어 오름차순의 순서를 유지하게 된다.
단계(525)에서, 버퍼 관리기는 현재 스트림이 BUFFER 혹은 SMALL_BUFFER의 판독 상태(135)를 가졌었는지의 여부를 점검한다. 만약, 스트림이 이러한 판독 상태를 가졌다면, 단계(530)에서 버퍼 관리기는 후속 스트림이 버퍼된 스트림(판독 상태가 BUFFER, DISK_TO_BUFFER 혹은 SMALL_BUFFER)이었는지의 여부를 점검한다. 만약, 후속 스트림이 또한 버퍼되었다면, 버퍼 관리기는 단계(535)에서 공칭 자유 공간 카운터를 현재 스트림의 버퍼 REQD 필드만큼 감소시킴으로써 이 스트림에 부가적인 버퍼를 할당하며, 단계(540)에서 종료한다. 만약 후속 스트림이 버퍼되지 않았었다면, 버퍼 관리기는 단계(560)에서 현재 스트림에 의해 점유된 버퍼를 해방시키는데 필요한 동작을 개시한다.
현재 스트림이 단계(525)에서 BUFFER 혹은 SMALL_BUFFER의 판독 상태를 갖지 않았다면 버퍼 관리기는 단계(545)에서 후속 스트림이 버퍼로 부터 판독하고 있는지의 여부를 점검한다(판독 상태가 BUFFER, DISK_TO_BUFFER 혹은 SMALL_BUFFER). 만약, 후속 스트림이 버퍼로 부터 판독하고 있지 않다면, 버퍼 관리기는 단계(530)에서 종료한다. 후속 스트림이 버퍼로 부터 판독하고 있다면, 버퍼 관리기는 단계(555)에서 판독 상태를 DISK로 설정함으로써 후속 스트림을 디스크로 이동시킨다. 버퍼 관리기는 그후 공칭 자유 공간 카운터(185)를 후속 스트림의 버퍼 REQD 필드(140)만큼 증가시킴으로써 후속 스트림에 의해 점유된 버퍼를 해방시킨다. 버퍼 관리기는 이후 제6도에 도시된 새롭게 버퍼된 스트림 탐색 단계를 수행한다. 버퍼 관리기는 작은 버퍼를 지속적으로 감시하여 이들이 언제 고갈되는 지를 판정한다. 만약, 중지된 고객에게 할당된 버퍼가 고갈되면(즉, 버퍼를 채우는데 소요되는 시간내에 고객이 재개하지 않았으면), 단계(565)에서 버퍼 관리기는 작은 버퍼를 해방시키고 단계(515)에서 시작하는 중지 처리를 실행한다.
제6도는 새로운 버퍼가 사용가능하게 되었을 때, 버퍼된 스트림을 찾기위해 버퍼 관리기에 의해 수행되는 단계를 도시한다. 단계(620)에서, 버퍼 관리기는 가장 작은 디스크 스트림(172)이 버퍼될 수 있는지를 (이 스트림의 버퍼 REQD 필드(140)와 공칭 자유 공간 카운터(185)를 비교함으로써) 점검한다. 만약, 공칭 자유 공간 카운터가 더 작다면, 충분한 버퍼 공간이 존재하지 않으며, 버퍼 관리기는 단계(630)에서 종료한다. 충분한 공간이 존재한다면, 버퍼 관리기는 스트림의 판독 상태를 DISK_TO_BUFFER로 변경하며, 공칭 자유 공간 카운터를 버퍼 REQD 필드만큼 감소시키고, 가장 작은 디스크 스트림 포인터를 갱신하며, 단계(620)로 복귀(loop back)한다.
제7a 및 제7b 도는 디스크 I/O 프로세스(50) 및 통신 프로세스(60)와 버퍼 관리기의 상호 작용(interaction)을 각각 도시한다. 요청된 블럭을 판독하기 위한 I/O를 개시하기 전에, 디스크 I/O 프로세스는 요청된 블럭이 판독되었는지를 알아보기 위해 단계(720)에서 버퍼 풀을 점검한다. 판독되었다면, 디스크 I/O 프로세스는 단계(725)에서 스트림의 판독 상태를 점검하여 판독 상태가 DISK_TO_BUFFER인지를 판단한다. 판독 상태가 DISK_TO_BUFFER가 아니면, 단계(730)에서 프로세스는 종료한다. 판독 상태가 DISK_TO_BUFFER이면, 디스크 I/O 프로세스는 단계(726)에서 판독 상태를 BUFFER로 변경하고 단계(730)에서 종료한다. 요청된 블럭이 판독되지 않았다면, 단계(740)에서 디스크 I/O 프로세스는 자유 풀로 부터 자유 버퍼를 얻고, 실제 자유 공간 카운터를 감소시키고, I/O를 시작하며, 단계(750)에서 종료한다.
블럭을 전송한 후에, 통신 프로세스는 단계(760)에서 후속 스트림의 판독 상태를 점검한다. 판독 상태가 BUFFER 혹은 DISK_TO_BUFFER이면, 통신 프로세스는 단계(770)에서 종료한다. 판독 상태가 BUFFER 혹은 DISK_TO_BUFFER가 아니라면, 프로세스는 실제 자유 공간 카운터(190)를 증가시키고 블럭을 자유플(70)로 복귀시킨다.
이상 본 발명을 바람직한 실시예에 따라 구체적으로 설명했지만, 본 발명은 상기 실시예에 한정되는 것은 아니며, 그 요지를 벗어나지 않는 범위에서 여러가지로 변경 가능함은 물론이다.

Claims (14)

  1. 다수의 고객(a plurality of clients)이 디스크(disks)로 부터 제공된 비디오 스트림(video streams)으로 부터 서비스되는(served) 비디오 서버(a video server)에서 메모리 버퍼(memory buffer)를 관리(manage)하는 방법에 있어서, 상기 다수의 비디오 스트림의 버퍼 요구(buffer requirements)를 판정하는 단계로서 상기 버퍼 요구는 각각의 비디오 스트림을 동일한 비디오를 운반(carrying) 바로 이전의 비디오 스트림(an immediately previous video stream)으로 부터 분리하는 프레임의 갯수인 상기 버퍼 요구 판정 단계와; 상기 버퍼 요구에 의해 순서화된 스트림의 리스트(a list of streams)를 생성하는 단계와; 가장 작은 버퍼 요구를 갖는 스트림으로 부터 시작하여 더 큰 버퍼 요구를 갖는 스트림으로 진행해나가며, 스트림의 버퍼 요구가 충족될 수 없을 때까지 상기 버퍼를 할당(allocate)하는 단계와; 상기 바로 이전 스트림의 블럭(blocks of the immediately proceding stream)을 그의 후속 스트림에 할당된 버퍼내에 유지하고, 상기 블럭이 상기 후속 스트림을 시청하는 고객에 의해 판독될 때 상기 블럭을 상기 버퍼에서 제거(discard)하는 단계와; 비디오의 시작, 중단, 중지 혹은 재개(starting, stopping, pausing and resuming)중 어느 하나라도 발생하였을 때 상기 리스트를 갱신하는 단계와; 상기 갱신에 응답하여, 가장 작은 버퍼 요구를 갖는 스트림으로 부터 시작하여 더 큰 버퍼 요구를 갖는 스트림으로 진행해나가며, 스트림의 버퍼 요구가 충족될 수 없을 때까지 상기 버퍼를 재할당(reallocate)하는 단계를 포함하는 메모리 버퍼 관리 방법.
  2. 제1항에 있어서, 다수의 고객이 상기 비디오 스트림중 공통 비디오 스트림(a common one of the video streams)을 공유하며, 또한 상기 공통 비디오 스트림을 공유하는 고객중 하나의 고객이 중지 요청을 전송한 때를 판정하는 단계와; 상기 중지 요청을 전송한 고객을 위하여(on behalf of the clent who had paused) 상기 버퍼의 일 부분(a portion of the buffer)을 할당하여 상기 공통 비디오 스트림의 블럭을 보유하는 단계와; 상기 버퍼의 일 부분이 풀(full) 상태인 때를 판정하는 단계와; 상기 중지 요청을 전송한 고객으로 부터 재개 요청(a resume request)이 수신된 때를 판정하는 단계와; 상기 버퍼가 풀 상태이고, 상기 버퍼가 풀 상태로 되기전에 상기 버퍼를 할당 받았던 상기 중지 요청을 전송한 고객으로 부터 재개 요구가 수신되지 않았을 때, 상기 버퍼를 할당 해제(deallocate)하는 단계와; 상기 버퍼의 일 부분이 풀 상태로 되기 전에 재개 요청이 수신되었을 때, 상기 버퍼로 부터 상기 고객을 서비스하고, 상기 버퍼의 블럭이 고객에 의해 소모(consume)되었을 때, 상기 버퍼의 블럭을 제거하는 단계를 더 포함하는 메로리 버퍼 관리 방법.
  3. 다수의 고객이 디스크로 부터 제공된 비디오 스트림으로 부터 서비스되는 비디오 서버에서 메모리 버퍼를 관리하는 방법에 있어서, 상기 다수의 비디오 스트림의 버퍼 요구를 판정하는 단계로서, 상기 버퍼 요구는 각각의 비디오 스트림을 동일한 비디오를 운반하는 바로 이전의 비디오 스트림으로 부터 분리하는 프레임의 갯수인 상기 버퍼 요구 판정 단계와; 상기 버퍼 요구를 검사(examine)하고, 상기 버퍼 요구의 함수(a function)로써, 상기 버퍼로 부터 제공될 수 있는 스트림의 갯수가 최대로 되도록 상기 버퍼를 할당하는 단계와; 상기 바로 이전 스트림의 블럭을 그의 후속 스트림에 할당된 버퍼내에 유지하고, 상기 블럭이 상기 후속 스트림을 시청하는 고객에 의해 판독될 때 상기 블럭을 상기 버퍼에서 제거하는 단계를 포함하는 메모리 버퍼 관리 방법.
  4. 제3항에 있어서, 상기 고객중 하나의 고객이 중지 요청을 전송한 때를 판정하는 단계와; 상기 중지 요청을 전송한 고객을 위하여 상기 버퍼의 일부분을 할당하여 상기 비디오 스트림의 블럭을 보유하는 단계와; 상기 하나의 고객으로 부터 재개 요청을 수신하였을 때, 상기 버퍼로 부터 상기 하나의 고객을 서비스하는 단계를 더 포함하는 메모리 버퍼 관리 방법.
  5. 제3항에 있어서, 다수의 고객이 상기 비디오 스트림중 공통 비디오 스트림을 공유하며, 또한 상기 공통 비디오 스트림을 공유하는 고객중 하나의 고객이 중지 요청을 전송한 때를 판정하는 단계와; 상기 중지 요청을 전송한 고객을 위하여 상기 버퍼의 일부분을 할당하여 상기 공통 비디오 스트림의 블럭을 보유하는 단계와; 상기 버퍼의 일 부분이 풀 상태인 때를 판정하는 단계와; 상기 중지 요청을 전송한 고객으로부터 재개 요청이 수신된 때를 판정하는 단계와; 상기 버퍼가 풀 상태이고, 상기 버퍼가 풀 상태로 되기 전에 상기 버퍼를 할당 받았던 상기 중지 요청을 전송한 고객으로부터 재개 요구가 수신되지 않았을 때, 상기 버퍼를 할당 해제하는 단계와; 상기 버퍼의 일 부분이 풀 상태로 되기 전에 재개 요청이 수신되었을 때, 상기 버퍼로 부터 상기 고객을 서비스하고, 상기 버퍼의 블럭이 고객에 의해 소모되었을 때, 상기 버퍼의 블럭을 제거하는 단계를 더 포함하는 메모리 버퍼 관리 방법.
  6. 다수의 고객이 디스크로 부터 제공된 비디오 스트림으로 부터 서비스되는 비디오 서버에서 메모리 버퍼를 관리하는 시스템에 있어서, 상기 비디오 스트림중 하나의 비디오 스트림을 공유하는 상기 고객중 하나의 고객이 중지 요청을 전송한 때를 판정하는 단계와; 상기 하나의 고객을 위하여 상기 버퍼의 일부분을 할당하여 상기 하나의 비디오 스트림의 블럭을 보유하는 단계와; 상기 버퍼의 일 부분이 풀 상태인 때를 판정하는 단계와; 상기 버퍼가 풀 상태이고, 상기 버퍼가 풀 상태로 되기 전에 상기 버퍼를 할당 받았던 상기 하나의 고객으로 부터 재개 요구가 수신되지 않았을 때, 상기 버퍼를 할당 해제하는 단계와; 상기 버퍼의 일부분이 풀 상태로 되기 전에 재개 요청이 수신되었을 때; 상기 버퍼로 부터 상기 하나의 고객을 서비스하고, 상기 버퍼의 블럭이 상기 하나의 고객에 의해 소모되었을 때, 상기 버퍼의 블럭을 제거하는 단계를 더 포함하는 메모리 버퍼 관리 방법.
  7. 다수의 고객이 디스크로 부터 제공된 비디오 스트림으로 부터 서비스되는 비디오 서버에서 메모리 버퍼를 관리한 방법에 있어서, 상기 다수의 비디오 스트림의 버퍼 요구를 판정하는 수단으로서, 상기 버퍼 요구는 각각의 비디오 스트림을 동일한 비디오를 운반하는 바로 이전의 비디오 스트림으로 부터 분리하는 프레임의 갯수인 상기 버퍼 요구 판정 수단과; 상기 버퍼 요구에 의해 순서화된 스트림의 리스트를 생성하는 수단과; 가장 작은 버퍼 요구를 갖는 스트림으로 부터 시작하여 더 큰 버퍼 요구를 갖는 스트림으로 진행해나가며, 스트림의 버퍼 요구가 충족될 수 없을 때까지 상기 버퍼를 할당하는 수단과; 상기 바로 이전 스트림의 블럭을 그의 후속 스트림에 할당된 버퍼내에 유지하고, 상기 블럭이 상기 후속 스트림을 시청하는 고객에 의해 판독될 때 상기 블럭을 상기 버퍼에서 제거하는 수단과; 비디오의 시작, 중단, 중지 혹은 재개중 어느 하나라도 발생하였을 때 상기 리스트를 갱신하는 수단과; 상기 갱신에 응답하여, 가장 작은 버퍼 요구를 갖는 스트림으로 부터 시작하여 더 큰 버퍼 요구를 갖는 스트림으로 진행해나가며, 스트림의 버퍼 요구가 충족될 수 없을 때까지 상기 버퍼를 재할당하는 수단을 포함하는 메모리 버퍼 관리 시스템.
  8. 제7항에 있어서, 다수의 고객이 상기 비디오 스트림중 공통 비디오 스트림을 공유하며, 또한 상기 공통 비디오 스트림을 공유하는 고객중 하나의 고객이 중지 요청을 전송한 때를 판정하는 수단과; 상기 중지 요청을 전송한 고객을 위하여 상기 버퍼의 일부분을 할당하여 상기 단일 공통 비디오 스트림의 블럭을 보유하는수단과; 상기 버퍼의 일 부분이 풀 상태인 때를 판정하는 제1수단과; 상기 중지 요청을 전송한 고객으로 부터 재개 요청이 수신된 때를 판정하는 제2수단과; 상기 제1 및 제2수단에 결합되어, 상기 버퍼가 풀 상태이고, 상기 버퍼가 풀 상태로 되기 전에 상기 버퍼를 할당 받았던 상기 중지 요청을 전송한 고객으로 부터 재개 요구가 수신되지 않았을 때, 상기 버퍼를 할당 해제하고, 상기 버퍼의 일부분이 풀 상태로 되기 전에 재개 요청이 수신되었을 때, 상기 버퍼로 부터 상기 고객을 서비스하고, 상기 버퍼의 블럭이 고객에 의해 소모되었을 때, 상기 버퍼의 블럭을 제거하는 수단을 더 포함하는 메모리 버퍼 관리 시스템.
  9. 다수의 고객이 디스크로 부터 제공된 비디오 스트림으로 부터 서비스되는 비디오 서버에서 메모리 버퍼를 관리하는 시스템에 있어서, 상기 다수의 비디오 스트림의 버퍼 요구를 판정하는 수단으로서, 상기 버퍼 요구는 각각의 비디오 스트림을 동일한 비디오를 운반하는 바로 이전의 비디오 스트림으로 부터 분리하는 프레임의 갯수인 상기 버퍼 요구 판정 수단과; 상기 버퍼 요구를 검사하고, 상기 버퍼 요구의 함수로써, 상기 버퍼로 부터 제공될 수 있는 스트림의 갯수가 최대로 되도록 상기 버퍼를 할당하는 수단과; 상기 바로 이전 스트림의 블럭을 그의 후속 스트림에 할당된 버퍼내에 유지하고, 상기 블럭이 상기 후속 스트림을 시청하는 고객에 의해 판독될 때 상기 버퍼에서 제거하는 수단을 포함하는 메모리 버퍼 관리 시스템.
  10. 제9항에 있어서, 상기 고객중 하나의 고객이 중지 요청을 전송한 때를 판정하는 수단과; 상기 중지 요청을 전송한 고객을 위하여 상기 버퍼의 일부분을 할당하여 비디오 스트림의 블럭을 보유하는 수단과; 상기 하나의 고객으로 부터 재개 요청을 수신하였을 때, 상기 버퍼로 부터 상기 하나의 고객을 서비스하는 수단을 더 포함하는 메모리 버퍼 관리 시스템.
  11. 제9항에 있어서, 상기 고객중 하나의 고객이 중지 요청을 전송한 때를 판정하는 수단과; 상기 하나의 고객의 사이트(a site)에 배치(dispose)된 지역메모리 버퍼(a local memory buffer)와; 상기 중지 요청을 전송한 고객을 위하여 상기 메모리 버퍼가 상기 비디오 스트림의 블럭을 보유토록 하는 수단과; 상기 하나의 고객으로 부터 재개 요청이 수신된 때를 판정하고, 이에 응답하여 상기 버퍼로 부터 상기 하나의 고객을 서비스하는 수단을 더 포함하는 메모리 버퍼 관리 시스템.
  12. 다수의 고객이 디스크로 부터 제공된 비디오 스트림으로 부터 서비스되는 비디오 서버에서 메모리 버퍼를 관리하는 시스템에 있어서, 상기 비디오 스트림중 하나의 비디오 스트림을 공유하는 고객중 하나의 고객이 중지 요청을 전송한 때를 판정하는 수단과; 상기 하나의 고객을 위하여 상기 버퍼의 일부분을 할당하여 상기 하나의 비디오 스트림의 블럭을 보유하는 수단과; 상기 버퍼의 일부분이 풀 상태인 때를 판정하는 수단과;
    상기 하나의 고객으로 부터 재개 요청이 수신된 때를 판정하는 수단과;
    상기 버퍼가 풀 상태이고, 상기 버퍼가 풀 상태로 되기 전에 상기 버퍼를 할당 받았던 상기 하나의 고객으로 부터 재개 요구가 수신되지 않았을 때, 상기 버퍼를 할당 해제하고, 상기 버퍼의 일부분이 풀 상태로 되기 전에 재개 요청이 수신되었을 때, 상기 버퍼로 부터 상기 하나의 고객을 서비스하고, 상기 버퍼의 블럭이 상기 하나의 고객에 의해 소모되었을 때, 상기 버퍼의 블럭을 제거하는 수단을 포함하는 메모리 버퍼 관리 시스템.
  13. 제12항에 있어서, 적어도 소정의 상기 메모리 버퍼가 상기 하나의 고객의 사이트에 지역적으로 배치되고, 상기 버퍼의 일 부분이 풀 상태로 되기 전에 상기 하나의 고객으로 부터 재개 요청이 수신되었을 때, 상기 하나의 고객은 상기 지역적으로 배치된 메모리 버퍼로 부터 서비스되는 메모리 버퍼 관리 시스템.
  14. 제12항에 있어서, 상기 버퍼 요구를 검사하고, 상기 버퍼 요구의 함수로써, 상기 버퍼로 부터 제공될 수 있는 스트림의 갯수가 최대로 되도록 상 버퍼를 할당하는 수단을 더 포함하는 메모리 버퍼 관리 시스템.
KR1019950003882A 1994-03-01 1995-02-27 메모리 버퍼 관리 방법 및 시스템 KR0146567B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/204,038 1994-03-01
US08/204,038 US5572645A (en) 1994-03-01 1994-03-01 Buffer management policy for an on-demand video server
US08/204,038 1994-03-01

Publications (2)

Publication Number Publication Date
KR950027576A KR950027576A (ko) 1995-10-18
KR0146567B1 true KR0146567B1 (ko) 1998-09-15

Family

ID=22756361

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950003882A KR0146567B1 (ko) 1994-03-01 1995-02-27 메모리 버퍼 관리 방법 및 시스템

Country Status (6)

Country Link
US (1) US5572645A (ko)
EP (1) EP0670542B1 (ko)
JP (1) JP2642072B2 (ko)
KR (1) KR0146567B1 (ko)
CA (1) CA2142380C (ko)
DE (1) DE69516441T2 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2130395C (en) * 1993-12-09 1999-01-19 David G. Greenwood Multimedia distribution over wide area networks
US5544327A (en) * 1994-03-01 1996-08-06 International Business Machines Corporation Load balancing in video-on-demand servers by allocating buffer to streams with successively larger buffer requirements until the buffer requirements of a stream can not be satisfied
US5754773A (en) * 1994-06-16 1998-05-19 Lucent Technologies, Inc. Multimedia on-demand server having different transfer rates
US5978843A (en) * 1995-12-06 1999-11-02 Industrial Technology Research Institute Scalable architecture for media-on-demand servers
US5954794A (en) * 1995-12-20 1999-09-21 Tandem Computers Incorporated Computer system data I/O by reference among I/O devices and multiple memory units
US5941959A (en) * 1995-12-20 1999-08-24 Tandem Computers Incorporated System for transferring a data stream to a requestor without copying data segments to each one of multiple data source/sinks during data stream building
US5852719A (en) * 1995-12-20 1998-12-22 Tandem Computers Incorporated System for transferring data over a network in which a data source sends only a descriptor which a data sink uses to retrieve data
US5790807A (en) * 1995-12-20 1998-08-04 Tandem Computers Incorporated Computer sysem data I/O by reference among CPUS and I/O devices
US5931903A (en) * 1995-12-20 1999-08-03 Tandem Computers Incorporated Computer system data I/O by reference among multiple CPUS
US5907717A (en) * 1996-02-23 1999-05-25 Lsi Logic Corporation Cross-connected memory system for allocating pool buffers in each frame buffer and providing addresses thereof
US5870551A (en) * 1996-04-08 1999-02-09 Lucent Technologies Inc. Lookahead buffer replacement method using ratio of clients access order offsets and buffer data block offsets
JP3972381B2 (ja) * 1996-04-12 2007-09-05 ソニー株式会社 情報転送装置及び情報転送方法
GB2313529B (en) * 1996-05-23 2000-11-15 Sony Uk Ltd Video data system
US5916303A (en) * 1997-05-21 1999-06-29 International Business Machines Corporation Optimal movie distribution on video servers in an n-level interactive TV system
US6502137B1 (en) 1997-10-09 2002-12-31 International Business Machines Corporation System and method for transferring information over a computer network
US6016507A (en) * 1997-11-21 2000-01-18 International Business Machines Corporation Method and apparatus for deleting a portion of a video or audio file from data storage prior to completion of broadcast or presentation
US6938268B1 (en) * 1998-01-08 2005-08-30 Winston W. Hodge Video stream sharing
US6889257B1 (en) * 1999-12-03 2005-05-03 Realnetworks, Inc. System and method of transmitting data packets
US6725272B1 (en) * 2000-02-18 2004-04-20 Netscaler, Inc. Apparatus, method and computer program product for guaranteed content delivery incorporating putting a client on-hold based on response time
US6854018B1 (en) * 2000-03-20 2005-02-08 Nec Corporation System and method for intelligent web content fetch and delivery of any whole and partial undelivered objects in ascending order of object size
KR20010093875A (ko) * 2000-04-01 2001-10-31 이승룡 멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된푸시/풀 버퍼 관리 방법
US6678794B1 (en) * 2000-06-14 2004-01-13 International Business Machines Corporation Smoothing bursts of disk load in a file system
CN101257609B (zh) * 2001-02-21 2014-03-19 联合视频制品公司 具有个人视频记录特征的交互式节目导视器的系统和方法
US7051112B2 (en) * 2001-10-02 2006-05-23 Tropic Networks Inc. System and method for distribution of software
KR20030032414A (ko) * 2001-10-18 2003-04-26 주식회사 엠씨글로벌 멀티미디어 데이터의 버퍼링 방법
FI116167B (fi) * 2001-12-18 2005-09-30 Valtion Teknillinen Arkistoiva tiedostopalvelin
US7155373B2 (en) * 2002-02-22 2006-12-26 3M Innovative Properties Company Selection of orthodontic brackets
MXPA05002538A (es) * 2002-09-05 2005-05-27 Thomson Licensing Sa Un metodo y sistema para funciones pvr de memoria en un ambiente de amplia difusion.
KR100490410B1 (ko) * 2002-09-12 2005-05-17 삼성전자주식회사 데이터 구조체 기반의 멀티미디어 문서 버퍼링 장치 및 방법
EP1644803A4 (en) * 2003-07-02 2011-11-09 Rovi Solutions Corp NETWORK DIGITAL MAGNETOSCOPE SYSTEM
US8244939B2 (en) * 2010-06-11 2012-08-14 Dot Hill Systems Corporation Method and apparatus for dynamically allocating queue depth by initiator
US8874845B2 (en) 2012-04-10 2014-10-28 Cisco Technology, Inc. Cache storage optimization in a cache network
US9286328B2 (en) * 2013-07-19 2016-03-15 International Business Machines Corporation Producing an image copy of a database object based on information within database buffer pools
CN103618911B (zh) * 2013-10-12 2017-02-01 北京视博云科技有限公司 一种基于视频属性信息的视频流提供方法及装置
US20150271072A1 (en) * 2014-03-24 2015-09-24 Cisco Technology, Inc. Method and apparatus for rate controlled content streaming from cache
US10169621B2 (en) * 2014-03-26 2019-01-01 Tivo Solutions Inc. Multimedia pipeline architecture
KR102387935B1 (ko) 2017-10-23 2022-04-15 삼성전자주식회사 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5150472A (en) * 1989-10-20 1992-09-22 International Business Machines Corp. Cache management method and apparatus for shared, sequentially-accessed, data
US5341474A (en) * 1992-05-15 1994-08-23 Bell Communications Research, Inc. Communications architecture and buffer for distributing information services
US5442390A (en) * 1993-07-07 1995-08-15 Digital Equipment Corporation Video on demand with memory accessing and or like functions
EP0653884A1 (en) * 1993-11-17 1995-05-17 BELL TELEPHONE MANUFACTURING COMPANY Naamloze Vennootschap Interactive video on demand network

Also Published As

Publication number Publication date
US5572645A (en) 1996-11-05
DE69516441T2 (de) 2000-10-19
KR950027576A (ko) 1995-10-18
EP0670542A1 (en) 1995-09-06
DE69516441D1 (de) 2000-05-31
EP0670542B1 (en) 2000-04-26
CA2142380C (en) 2001-04-24
JPH07248972A (ja) 1995-09-26
CA2142380A1 (en) 1995-09-02
JP2642072B2 (ja) 1997-08-20

Similar Documents

Publication Publication Date Title
KR0146567B1 (ko) 메모리 버퍼 관리 방법 및 시스템
US5809239A (en) Load balancing in servers by allocating buffer to streams with successively larger buffer requirements until the buffer requirements of a stream can not be satisfied
KR0152485B1 (ko) 중지-재개 지원 방법
US5854887A (en) System for the management of multiple time-critical data streams
CA2142795C (en) Look-ahead scheduling to support video-on-demand applications
EP0660605B1 (en) Video storage and delivery apparatus and method
JP3338451B2 (ja) ビデオ・オン・デマンドのためのスタッガード・ストリームサポート
US6134596A (en) Continuous media file server system and method for scheduling network resources to play multiple files having different data transmission rates
Dan et al. Multimedia caching strategies for heterogeneous application and server environments
US6912585B2 (en) Method of data management for efficiently storing and retrieving data to respond to user access requests
US5768681A (en) Channel conservation for anticipated load surge in video servers
EP0682833B1 (en) Flow control by evaluating network load
EP1457895A2 (en) File System
KR20030025386A (ko) 비디오 시스템에서의 비디오 재생 일시 정지/해제 방법
Lau et al. A novel video-on-demand storage architecture for supporting constant frame rate with variable bit rate retrieval
Ali et al. Synchronized delivery of multimedia information over ATM networks
JPH0970018A (ja) ファイルサーバ
To et al. Performance Issues in Interactive VOD Service
Muntean et al. Some Software Issues of a Real-Time Multimedia Networking System
Harizopoulos et al. PASTENSE: a Fast Start-up Algorithm for Scalable Video Libraries (CMU-CS-01-105)
Harizopoulos et al. PASTENSE: a Fast Start-up Algorithm for Scalable Video Libraries

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130425

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20140425

Year of fee payment: 17

EXPY Expiration of term