[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20030026373A - Transmitting server having apparatus for managing memory and method thereof - Google Patents

Transmitting server having apparatus for managing memory and method thereof Download PDF

Info

Publication number
KR20030026373A
KR20030026373A KR1020010054618A KR20010054618A KR20030026373A KR 20030026373 A KR20030026373 A KR 20030026373A KR 1020010054618 A KR1020010054618 A KR 1020010054618A KR 20010054618 A KR20010054618 A KR 20010054618A KR 20030026373 A KR20030026373 A KR 20030026373A
Authority
KR
South Korea
Prior art keywords
data
memory
stream
index
transmission
Prior art date
Application number
KR1020010054618A
Other languages
Korean (ko)
Other versions
KR100438861B1 (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 오정석
Priority to KR10-2001-0054618A priority Critical patent/KR100438861B1/en
Publication of KR20030026373A publication Critical patent/KR20030026373A/en
Application granted granted Critical
Publication of KR100438861B1 publication Critical patent/KR100438861B1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

PURPOSE: A data transmission server and its transmission method are provided to record packet stream data without a disconnection by borrowing an overflow area besides a regulated storage area and making a write/read index linear so that it can simplify a transmission control process and implement a speedy real time streaming transmission of multimedia data. CONSTITUTION: The server comprises a connector(210), a controller(220), a stream manager(230), a protocol processor(240), a memory manager(250), a memory pool(260), a pool buffer(270), a transceiver(280), a DMA(Direct Memory Access) device. The connector(210) connects to a client and a database server via a network, sets a communication channel, and supports an interface for processing a data exchange between processes. The pool buffer(270) includes an overflow area with a size larger than a unit stream packet, and records the data on the overflow area according to a position of a read index and write index on a buffer. The pool buffer(270) can make the read and write index linear without buffering the index and returning the index to an initial address in a case that the packet size of the data to be transmitted is larger than a regulated memory area. The pool buffer(270) copies the data recorded at the overflow area, and stores the copied data at the initial address of a memory by maintaining linearly the write index so that it enables a stream transmission of the multimedia data without a discontinuation. The memory pool(260) manages several pool buffers(270), specially selects one pool buffer(270) directly related to a data transmission and offers the multimedia data to the selected pool buffer(270). In order to manage plural pool buffers, the memory pool(260) offers plural divided storage spaces according to the number of threads for processing a transmission of the stream file, and stores kernel data relevant to a division of the storage space and a data transmission.

Description

메모리 관리장치를 구비한 전송서버 및 그 방법{Transmitting server having apparatus for managing memory and method thereof}Transmitting server having apparatus for managing memory and method

본 발명은 메모리 관리장치를 구비한 전송서버 및 그 방법에 관한 것으로, 보다 상세하게는 DB서버로부터 멀티미디어데이터를 제공받아 메모리풀 및 풀버퍼를 통하여 저장/관리하고 클라이언트로 실시간 스트림전송하는 메모리 관리장치를 구비한 전송서버 및 그 방법에 관한 것이다.The present invention relates to a transmission server having a memory management apparatus and a method thereof, and more particularly, a memory management apparatus that receives multimedia data from a DB server, stores / manages through a memory pool and a full buffer, and transmits a stream in real time to a client. It relates to a transmission server having a and a method thereof.

최근, 공중파 방송이나 케이블TV와 같이 TV와 라디오를 매체로 시청자에게전달되던 정보(대개 음성, 영상 정보이며 근래에는 문자정보도 전달)를 인터넷을 매체로 하여 음성, 영상, 문자, 이미지 등의 멀티미디어 정보로 제공하는 인터넷방송(웹캐스팅)서비스가 각광을 받고 있다.In recent years, multimedia such as voice, video, text, images, etc., has been transmitted to the Internet through information (usually voice and video information, and also text information) that has been delivered to viewers through TV and radio, such as over-the-air broadcasting or cable TV. Internet broadcasting (webcasting) service providing information is in the spotlight.

멀티미디어 웹사이트는 고속화, 대용량화한 네트워크 환경과 VOD(Video On Demand)와 AOD(Audio On Demand)서비스 및 음성, 영상 등을 실시간으로 전송해 줄 수 있는 소프트웨어(스트리밍 솔루션 - 리얼시스템, 윈도 미디어, 스트림웍스 등)가 제공됨으로써 초기에 텍스트와 정지 이미지가 서비스의 주류였던 WWW(World Wide Web)를 통하여 음성, 영상, 애니매이션 등의 멀티미디어 데이터를 전송할 수 있다.Multimedia website is a high-speed, high-capacity network environment, VOD (Video On Demand) and AOD (Audio On Demand) service, and software that can transmit voice and video in real time (Streaming Solution-Real System, Windows Media, Stream) Works provides multimedia data such as voice, video, and animation through the World Wide Web (WWW), where text and still images were initially the mainstream of services.

이러한 인터넷방송은 초시간성, 탈공간성, 양방향성, 저비용의 시스템 구축 및 다양한 컨텐츠에 따른 전문화 등의 특성으로 인하여 많이 이용되고 있으며, 앞으로 기술적인 발전이 이루어짐에 따라(예를 들어, 네트워크환경의 개선에 따른 방송용 전용채널보다 우수한 전송화질, 인터넷과 이동통신망을 연계한 이동통신단말기용 무선 인터넷 방송 등을 들 수 있다) 획기적인 방송 시스템으로 자리잡을 것으로 예상되고 있다.Such Internet broadcasting is widely used due to characteristics such as ultra-time, despatiality, bidirectionality, low-cost system construction and specialization according to various contents, and according to technological developments (for example, improvement of network environment). It is expected to become a groundbreaking broadcasting system, which has better transmission quality than a dedicated channel for broadcasting, and wireless internet broadcasting for mobile communication terminal connecting the internet and mobile communication network.

웹캐스팅에 사용되는 기술로는 푸시 기술, 스트리밍 기술, 분산 서버 기술, 압축기술, 버퍼링 기술, 멀티캐스팅기술, 화상회의 기술, 채팅 기술 등이 있는데, 이들 기술요소 중에서 핵심적인 부분으로 스트리밍 기술과 버퍼링 기술을 들 수 있다. 스트리밍 기술이 실시간 전송되는 멀티미디어데이터를 수신과 동시에 연속적으로 처리하는 기술인 반면, 버퍼링 기술은 멀티미디어데이터를 클라이언트로 실시간전송하기 위한 서버측의 메모리 관리 기술을 의미한다.The technologies used for webcasting include push technology, streaming technology, distributed server technology, compression technology, buffering technology, multicasting technology, video conferencing technology, and chat technology. Technology. While streaming technology is a technology for continuously processing multimedia data transmitted in real time at the same time, buffering technology refers to a server-side memory management technology for real-time transmission of multimedia data to a client.

따라서, 웹캐스팅을 제공하는 서버의 메모리 공간의 치밀한 활용 및 효율적인 메모리 관리에 따라 서비스의 질이 크게 달라지게 된다.Therefore, the quality of service is greatly changed according to the close utilization of the memory space of the server providing the webcasting and the efficient memory management.

현재, 전송 알고리즘에서 임시로 사용되는 저장 공간은 대부분 컴파일러(가령, 리눅스에서 사용되는 c-컴파일러)가 가지고 있는 malloc함수(메모리 할당), calloc함수(메모리 초기화), realloc함수(메모리 크기 조정), lock함수(메모리 고정), unlock함수(메모리 해제) 등을 통하여 관리되는데, 예를 들어 메모리를 할당하고 해제하는 과정이 지속적으로 반복되다 보면 함수들간에 상호 기능을 간섭하게 되는 경우가 빈번히 발생하여 함수들은 명확한 동작을 방해받게 되고 메모리의 오버라이트(overwrite), 데이터 손실 및 손상, 사용된 메모리의 미회수 등의 문제점이 일어난다. 그리고, 이러한 효율적이지 못한 메모리를 관리하기 위하여 시스템이 과도한 연산을 부담하게 되면, 결국 시스템이 다운되는 현상을 초래하게 된다.Currently, most of the temporary storage space used in the transfer algorithm is the malloc function (memory allocation), calloc function (memory initialization), realloc function (memory resizing), which are mostly used by compilers (e.g. c-compilers used in Linux). It is managed through the lock function (memory lock) and unlock function (memory release). For example, if the process of allocating and releasing memory is repeated repeatedly, the functions frequently interfere with each other. They can interfere with clear operation and cause problems such as memory overwrite, data loss and corruption, and unrecovered memory usage. In addition, if the system is subjected to excessive operation to manage this inefficient memory, the system will eventually crash.

이에, 메모리 관리에 사용되는 제어정보와 멀티미디어데이터를 분할된 다수의 메모리에서 처리하도록 하는 공유 메모리 기술 및 전송메모리를 제어함에 있어 오퍼레이션을 단순화할 수 있는 제어 알고리즘의 개발이 요구되고 있다.Accordingly, there is a demand for developing a shared memory technology for processing control information and multimedia data used for memory management in a plurality of divided memories and a control algorithm that can simplify operations in controlling a transmission memory.

본 발명은 상기한 바와 같은 요구에 부응하기 위하여 안출된 것으로서, 스트림파일명을 저장하여 관리하는 플레이파일리스트, 플레이파일리스트에 따른 스레드의 수에 의하여 다수의 일정 저장공간을 할당하여 일련의 스트림파일들을 저장하고 저장공간의 분할에 관련한 커널정보를 제공하는 믹서큐풀 및 믹서큐풀에 저장된 일련의 스트림파일들을 일정 개수의 해당 풀버퍼로 전송하기 위한 제어정보를 제공하는 전송큐풀로 구성되는 메모리풀과, 스트림패킷 단위 이상의 오버플로우영역을 구비하고 읽기 인덱스와 쓰기 인덱스의 버퍼상의 위치에 따라 오버플로우 영역을 차용하여 데이터를 기록하며 기록된 데이터를 복사하여 원형버퍼링함으로써 단절없이 멀티미디어데이터의 스트림전송이 가능하도록 하는 풀버퍼를 관리하는 장치를 구비한 전송서버 및 메모리 관리 방법을 제공하는 것을 그 목적으로 한다.The present invention has been devised to meet the above-described demands. The present invention provides a series of stream files by allocating a plurality of predetermined storage spaces according to the number of threads according to the play file list and play file list for storing and managing stream file names. Memory pool and stream consisting of a mixer queue pool that stores and provides kernel information related to partitioning of storage space, and a transmission queue pool that provides control information for transferring a series of stream files stored in the mixer queue pool to a predetermined number of corresponding full buffers. It has an overflow area of more than a packet unit and borrows the overflow area according to the positions of the buffers of the read index and the write index, records the data, and copies the recorded data into a circular buffer so that the multimedia data stream can be transmitted without disconnection. With a device to manage the full buffer To provide a server and a memory management method for that purpose.

도 1은 본 발명에 의한 메모리 관리장치를 구비한 전송서버가 외부 시스템과 연결되는 형태를 개략적으로 도시한 블럭도이다.1 is a block diagram schematically illustrating a form in which a transmission server having a memory management apparatus according to the present invention is connected to an external system.

도 2는 본 발명에 의한 메모리 관리장치를 구비한 전송서버의 일실시예의 내부 구성을 도시한 블럭도이다.Figure 2 is a block diagram showing the internal configuration of one embodiment of a transmission server having a memory management apparatus according to the present invention.

도 3은 본 발명에 의한 메모리 관리장치의 메모리풀의 구성요소를 도시한 블럭도이다.3 is a block diagram showing components of a memory pool of the memory management apparatus according to the present invention.

도 4a 내지 도 4c는 본 발명에 의한 전송서버의 메모리 관리 방법을 도시한 흐름도이다.4A to 4C are flowcharts illustrating a memory management method of a transmission server according to the present invention.

도 5a는 쓰기 인덱스가 읽기 인덱스보다 선행한 경우의 풀버퍼상의 기록영역을 구분하여 예시한 것이다.Fig. 5A illustrates the recording areas on the full buffer when the write index precedes the read index.

도 5b는 쓰기 인덱스와 읽기 인덱스가 같은 위치에 있는 경우의 풀버퍼상의 기록영역을 구분하여 예시한 것이다.FIG. 5B illustrates the recording areas on the full buffer when the write index and the read index are at the same position.

도 5c는 쓰기 인덱스보다 읽기 인덱스가 선행한 경우의 풀버퍼상의 기록영역을 구분하여 예시한 것이다.FIG. 5C illustrates the recording areas on the full buffer when the read index is preceded by the write index.

도 6a는 읽기 인덱스가 쓰기 인덱스보다 선행한 경우의 풀버퍼상의 읽기 영역을 구분하여 예시한 것이다.6A illustrates the read areas on the full buffer when the read index precedes the write index.

도 6b는 쓰기 인덱스와 읽기 인덱스가 같은 위치에 있는 경우의 풀버퍼상의 읽기 영역을 구분하여 예시한 것이다.FIG. 6B illustrates the read areas on the full buffer when the write index and the read index are located at the same position.

도 6c는 읽기 인덱스보다 쓰기 인덱스가 선행한 경우의 풀버퍼상의 읽기 영역을 구분하여 예시한 것이다.FIG. 6C illustrates the read areas on the full buffer when the write index precedes the read index. FIG.

〈도면의 주요 부분에 대한 부호의 설명〉<Explanation of symbols for main parts of drawing>

200: 메모리 관리장치를 구비한 전송서버200: transmission server with a memory management device

210: 접속수단220: 제어수단210: connection means 220: control means

230: 스트림관리수단240: 프로토콜처리수단230: stream management means 240: protocol processing means

250: 메모리관리수단260: 메모리풀250: memory management means 260: memory pool

270: 풀버퍼280: 송수신수단270: full buffer 280: transmission and reception means

290: DMA수단290: DMA means

상기의 목적을 달성하기 위하여, 본 발명에 의한 메모리 관리장치를 구비한 전송서버는 클라이언트 및 DB서버와 유선네트워크를 통하여 연결되어 있으며, 통신채널을 설정하고, 프로세스간 데이터교환을 처리하는 인터페이스를 지원하는 접속수단; 스트림패킷 단위 이상의 오버플로우영역을 구비하고, 읽기 인덱스와 쓰기 인덱스의 버퍼상의 위치에 따라 오버플로우 영역을 차용하여 데이터를 기록하며, 기록된 데이터를 복사하여 원형버퍼링함으로써 단절없이 멀티미디어데이터의 스트림전송이 가능하도록 하는 하나 이상의 풀버퍼; 일정 개수의 풀버퍼를 관리하여 스트림데이터를 전송하고, 스트림파일의 전송을 처리하는 스레드의 수에 따라 분할된 다수의 일정 저장공간을 제공하고, 저장공간의 분할 및 전송에 관련한 커널정보를 저장하는 하나 이상의 메모리풀; 스레드의 연산 요청을 처리하는 인터럽트처리기를 구비하고, 클라이언트의 전송요청을 취합하여 커널 세션을 설정하며, 동적 스케쥴링을 통하여 세션을 관리하는 제어수단; DB서버와 통신하여 멀티미디어데이터를 전송받고, 메모리풀과 DB서버간의 각 스트림데이터의 등시성을 유지하면서 전송율을조정하는 스트림관리수단; 서버패킷, 클라이언트패킷 및 제어패킷을 처리하는 패킷프로토콜과 DB서버 및 클라이언트간의 통신, 데이터 흐름제어와 로드균형을 처리하는 통신프로토콜을 분석하는 프로토콜처리수단; 및 메모리내의 운영체계 주소공간을 관리하여 다수의 스레드에 할당하고, 다수의 스레드 처리에 관련된 자료구조 및 알고리즘을 제공하여 메모리풀 및 풀버퍼를 제어하는 메모리관리수단을 포함한다.In order to achieve the above object, a transmission server having a memory management apparatus according to the present invention is connected to a client and a DB server through a wired network, and supports an interface for establishing a communication channel and processing data exchange between processes. Connecting means for making; An overflow area of more than a stream packet unit is provided, and data is written using the overflow area according to the positions of the buffers of the read index and the write index, and the recorded data is copied and circular buffered, thereby enabling stream transmission of multimedia data without interruption. One or more full buffers to enable; It manages a certain number of full buffers to transfer stream data, provides a plurality of fixed storage spaces divided according to the number of threads that handle the transmission of stream files, and stores kernel information related to the partitioning and transmission of storage spaces. One or more memory pools; A control means including an interrupt handler for processing a thread's operation request, collecting a transfer request from a client, establishing a kernel session, and managing a session through dynamic scheduling; Stream management means for receiving multimedia data in communication with a DB server and adjusting a transmission rate while maintaining isochronity of each stream data between the memory pool and the DB server; Protocol processing means for analyzing a packet protocol for processing a server packet, a client packet, and a control packet and a communication protocol for handling communication, data flow control, and load balancing between a DB server and a client; And memory management means for managing an operating system address space in memory, allocating to a plurality of threads, and providing data structures and algorithms related to processing a plurality of threads to control memory pools and full buffers.

상기의 다른 목적을 달성하기 위하여, 본 발명에 의한 전송서버의 메모리 관리 방법은 (a) 클라이언트로부터 멀티미디어데이터의 전송요청을 취합하여 세션을 설정하고 관리하는 단계; (b) DB서버로부터 해당 멀티미디어데이터를 요청하여 전송받고, 전송패킷 단위로 파일페이지를 형성하여 플레이파일리스트를 생성하며, 믹서큐풀은 할당된 메모리에 메모리 크기를 조정하여 스트림데이터로 저장하는 단계; (c) 전송큐풀은 할당된 메모리를 고정하여 설정된 다수의 풀버퍼로 스트림데이터를 전송하는 단계; (d) 풀버퍼는 오버플로우 영역을 차용하여 원형버퍼링함으로써 스트림데이터를 클라이언트로 실시간 전송하는 단계; 및 (e) 전송에 관련한 데이터를 메모리풀에 기록하여 메모리를 관리하는 단계를 포함한다.In order to achieve the above another object, the memory management method of the transmission server according to the present invention comprises the steps of: (a) collecting the transmission request of the multimedia data from the client to establish and manage a session; (b) requesting and receiving the corresponding multimedia data from a DB server, generating a file page in units of transmission packets, and generating a play file list, wherein the mixer queue pool adjusts the memory size in the allocated memory and stores it as stream data; (c) the transmission queue pool transmitting stream data to a plurality of full buffers configured by fixing allocated memory; (d) the full buffer borrowing the overflow area and circularly buffering the stream to send the stream data to the client in real time; And (e) managing data by recording data related to the transfer in a memory pool.

이하에서 첨부된 도면을 참조하여 본 발명에 의한 메모리 관리장치를 구비한 전송서버 및 그 방법을 상세히 설명한다.Hereinafter, a transmission server having a memory management apparatus according to the present invention and a method thereof will be described in detail with reference to the accompanying drawings.

도 1은 본 발명에 의한 메모리 관리장치를 구비한 전송서버(200)가 외부 시스템과 연결되는 형태를 개략적으로 도시한 블록도이다.1 is a block diagram schematically illustrating a form in which a transmission server 200 having a memory management apparatus according to the present invention is connected to an external system.

도 1에 의하면, 메모리 관리장치를 구비한 전송서버(200)는 DB서버(100)와 연결되어 있고, 유선네트워크(300)를 통하여 클라이언트(400)와 연결되어 있다.According to FIG. 1, a transmission server 200 having a memory management device is connected to a DB server 100 and is connected to a client 400 through a wired network 300.

데이터베이스 시스템은 본 발명에 의한 전송서버(200)에 포함될 수 있는 것이나, 본 발명에 의한 전송서버(200)는 메모리 관리장치를 효율적으로 관리하여 스트림전송하는 것을 그 특징으로 하고 있고, 서버의 부하를 감소시키기 위하여 전송서버(200)가 분산처리되는 것과 마찬가지로 DB서버(100)도 별개로 구성되는 것이 바람직할 것이다.The database system may be included in the transmission server 200 according to the present invention, but the transmission server 200 according to the present invention is characterized in that the stream management is managed by efficiently managing the memory management apparatus. It is preferable that the DB server 100 be configured separately as the transmission server 200 is distributed in order to reduce.

전술한 유선네트워크(300)로는 인터넷, 전용선 및 가상 사설망 등이 이용될 수 있을 것이다.As the wired network 300 described above, the Internet, a dedicated line, and a virtual private network may be used.

본 발명에 의한 전송서버(200)는 다수 개로 분산되어 데이터 전송 기능을 수행할 수 있으며, 또한 다수 개의 클라이언트(400)로 멀티미디어데이터를 스트림할 수 있다.The transmission server 200 according to the present invention may be distributed in plural numbers to perform a data transmission function, and may also stream multimedia data to a plurality of clients 400.

클라이언트(400)는 본 발명에 의한 전송서버(200)로부터 멀티미디어스트림 데이터를 실시간 전송받아 재생처리할 수 있는 컴퓨터로서 스트리밍 솔루션(가령, 리얼시스템, 윈도 미디어, 스트림웍스 등)을 구비하고 있다. 또한, 클라이언트(400)는 이동통신사업자일 수 있으며, 이동통신사업자는 전송서버(200)로부터 멀티미디어스트림 데이터를 전송받아 개인 이동통신단말기용 응용 소프트웨어에 적합한 데이터 포맷으로 처리한 후 무선 네트워크를 통하여 이동통신단말기로 제공할 수 있을 것이다.The client 400 is a computer capable of receiving and processing multimedia stream data in real time from the transmission server 200 according to the present invention and includes a streaming solution (eg, a real system, Windows media, StreamWorks, etc.). In addition, the client 400 may be a mobile communication service provider. The mobile service provider receives the multimedia stream data from the transmission server 200 and processes the multimedia stream data in a data format suitable for application software for a personal mobile communication terminal, and then moves the data through a wireless network. It may be provided as a communication terminal.

도 2는 본 발명에 의한 메모리 관리장치를 구비한 전송서버(200)의 일실시예의 내부 구성을 도시한 블럭도이다.2 is a block diagram showing an internal configuration of an embodiment of a transmission server 200 having a memory management apparatus according to the present invention.

도 2에 의하면, 본 발명에 의한 메모리 관리장치를 구비한 전송서버(200)의일실시예는 접속수단(210), 제어수단(220), 스트림관리수단(230), 프로토콜처리수단(240), 메모리관리수단(250), 메모리풀(260), 풀버퍼(270), 송수신수단(280) 및 DMA(Direct Memory Access)수단을 포함하여 구성된다.According to Figure 2, one embodiment of the transmission server 200 having a memory management apparatus according to the present invention is a connection means 210, control means 220, stream management means 230, protocol processing means 240, It comprises a memory management means 250, a memory pool 260, a full buffer 270, transmission and reception means 280 and DMA (Direct Memory Access) means.

접속서버는 클라이언트(400) 및 DB서버(100)와 유선네트워크(300)를 통하여 연결되어 있으며, 통신채널을 설정하고, 프로세스간 데이터교환을 처리하는 인터페이스를 지원한다.The access server is connected to the client 400 and the DB server 100 through a wired network 300, and supports an interface for establishing a communication channel and processing data exchange between processes.

풀버퍼(270)는 스트림패킷 단위 이상의 오버플로우 영역을 구비하고, 읽기 인덱스와 쓰기 인덱스의 버퍼상의 위치에 따라 오버플로우 영역을 차용하여 데이터를 기록한다. 이는 전송할 하나의 데이터 패킷의 크기가 규정된 메모리 영역을 넘어가는 경우, 읽기 인덱스 혹은 쓰기 인덱스를 원형 버퍼링하여 메모리의 처음번지로 되돌리는 과정없이 선형으로 진행시키기 위함이다.The full buffer 270 includes an overflow area equal to or greater than a stream packet unit, and records data by borrowing the overflow area according to positions on the buffers of the read index and the write index. This is to proceed linearly without the process of returning to the first address of the memory by circularly buffering the read index or the write index when the size of one data packet to be transmitted exceeds the prescribed memory area.

풀버퍼(270)는 쓰기 인덱스를 선형으로 유지하여 오버플로우 영역에 기록된 데이터를 복사하고, 복사된 데이터를 메모리의 초기 번지에 저장함으로써(원형버퍼링함으로써) 단절없이 멀티미디어데이터의 스트림전송이 가능하도록 한다.The full buffer 270 maintains the write index in a linear manner to copy the data recorded in the overflow area, and store the copied data at the initial address of the memory (by circular buffering) so that the multimedia data stream can be transmitted without interruption. do.

종래의 메모리 관리 시스템은 데이터베이스로부터 데이터를 획득하고, 획득된 데이터를 사용자에게 전송하는 작업을 수행하는데 있어서 지속적으로 메모리 할당 및 메모리 해제작업을 반복수행한다. 그러나 이 과정에서 데이터가 오버라이트(overwrite)되어 삭제되거나 프로그램의 종료시 메모리 반환이 되지 않는 등의 문제점이 발생한다. 예를 들어, 리눅스에서 사용되고 있는 C컴파일러의 메모리 할당 및 해제함수는 프로그램 자체의 결함으로 인하여 작업이 지속되는 경우전술한 문제점을 드러내곤 한다.The conventional memory management system continuously performs memory allocation and memory releasing operations in acquiring data from a database and transmitting the acquired data to a user. However, in this process, data may be overwritten and deleted, or the memory may not be returned at the end of the program. For example, the C compiler's memory allocation and deallocation functions used in Linux often reveal the above-mentioned problems when work continues because of a defect in the program itself.

이러한 문제점을 해결하기 위하여 메모리풀(260)은 일정 개수의 풀버퍼(270)를 관리하여 스트림데이터를 전송한다. 즉, 직접 전송에 관여하는 풀버퍼(270)를 선택하고, 멀티미디어데이터를 제공한다. 이를 위하여 메모리풀(260)은 스트림파일의 전송을 처리하는 스레드의 수에 따라 분할된 다수의 일정 저장공간을 제공하고, 저장공간의 분할 및 전송에 관련한 커널정보를 저장한다.In order to solve this problem, the memory pool 260 manages a certain number of full buffers 270 to transmit stream data. That is, the full buffer 270 involved in the direct transmission is selected and multimedia data is provided. To this end, the memory pool 260 provides a plurality of predetermined storage spaces divided according to the number of threads that process the transmission of the stream file, and stores kernel information related to the division and transmission of the storage space.

메모리풀(260)을 첨부한 도면을 참조하여 상세히 설명하면 다음과 같다.Hereinafter, the memory pool 260 will be described in detail with reference to the accompanying drawings.

도 3은 본 발명에 의한 메모리 관리장치의 메모리풀(260)의 구성요소를 도시한 블럭도이다.3 is a block diagram showing components of the memory pool 260 of the memory management apparatus according to the present invention.

도 3을 참조하면, 메모리풀(260)은 플레이파일리스트(262), 믹서큐풀(264) 및 전송큐풀(266)로 구성되고, 다수 개의 풀버퍼(270)와 연결되어 이를 관리한다.Referring to FIG. 3, the memory pool 260 is composed of a play file list 262, a mixer queue pool 264, and a transmission queue pool 266. The memory pool 260 is connected to and manages a plurality of full buffers 270.

플레이파일리스트(262)는 스트림파일명을 저장하여 관리한다.The play file list 262 stores and manages stream file names.

믹서큐풀(264)은 플레이파일리스트(262)에 따른 스레드의 수에 의하여 다수의 일정 저장공간을 할당하여 일련의 스트림파일들을 저장하고 저장공간의 분할에 관련한 커널정보를 제공한다.The mixer queue pool 264 allocates a plurality of constant storage spaces according to the number of threads according to the playfile list 262 to store a series of stream files and provides kernel information related to partitioning of the storage space.

전송큐풀(266)은 믹서큐풀(264)에 저장된 일련의 스트림파일들을 일정 개수의 해당 풀버퍼(270)로 전송하기 위한 제어정보를 제공한다.The transmission queue pool 266 provides control information for transmitting a series of stream files stored in the mixer queue pool 264 to a predetermined number of corresponding full buffers 270.

전술한 메모리풀(260)도 풀버퍼(270)와 같이 다수개로 구성되는 것이 많은 멀티미디어데이터를 처리함에 있어 유리할 것이다.The memory pool 260 described above may also be advantageous in processing a large amount of multimedia data, such as a plurality of full buffers 270.

본 발명에 의한 전송서버(200)의 제어수단(220)은 스레드의 연산 요청을 처리하는 인터럽트처리기를 구비하고, 클라이언트(400)의 전송요청을 취합하여 커널 세션을 설정하며, 동적 스케쥴링을 통하여 세션을 관리한다. 스레드는 다수 클라이언트(400)의 전송요청에 대하여 이를 CPU가 동시에 처리할 수 있도록 응용 프로그램이 가지고 있는 제어정보를 의미하며, 하드웨어 측면에서 보면 개개의 요청을 처리하기 위하여 연산하는 CPU의 동작 자체를 의미할 수도 있다. 스레드 개념에 의하여 메모리는 보다 유연하게 관리될 수 있다.The control means 220 of the transmission server 200 according to the present invention includes an interrupt handler for processing a thread's operation request, collects the transmission request of the client 400, establishes a kernel session, and establishes a session through dynamic scheduling. Manage it. A thread refers to control information that an application program has so that the CPU can simultaneously process transmission requests of a plurality of clients 400. In terms of hardware, a thread refers to an operation of a CPU that operates to process individual requests. You may. By the thread concept, memory can be managed more flexibly.

스레드 정보는 메모리풀(260)에 의하여 관리될 수 있으며, 메모리 주소는 레지스터에 저장됨으로써 유지될 수 있다. 운영체계는 어떤 이유(가령, 풀 버퍼 오퍼레이션상의 지연 문제 등)에 의하여 프로그램이 중단되었을 때 레지스터의 내용을 저장하고, 후에 제어권이 회귀하면 그 내용을 복구하여 데이터를 처리하도록 한다.Thread information may be managed by the memory pool 260 and memory addresses may be maintained by being stored in registers. The operating system saves the contents of the register when the program is interrupted for some reason (for example, a delay in the full buffer operation, etc.), and later restores the contents to process the data when control returns.

스트림관리수단(230)은 DB서버(100)와 통신하여 멀티미디어데이터를 전송받고, 메모리풀(260)과 DB서버(100)간의 각 스트림데이터의 등시성을 유지하면서 전송율을 조정한다.The stream management means 230 communicates with the DB server 100 to receive multimedia data, and adjusts the transmission rate while maintaining isochronity of each stream data between the memory pool 260 and the DB server 100.

스트림관리수단(230)은 통신채널정보, 전송율 연산정보, 파일의 플레이백 상태정보, 스트림 상태정보 및 파일정보를 관리하며, 관리자 패널을 구비하여 전술한 세션정보를 관리자에게 제공할 수 있다.The stream management means 230 manages communication channel information, rate calculation information, playback status information of a file, stream status information, and file information, and may include an administrator panel to provide the administrator with the session information described above.

프로토콜처리수단(240)은 서버패킷, 클라이언트패킷 및 제어패킷을 처리하는 패킷프로토콜과 DB서버(100) 및 클라이언트(400)간의 통신, 데이터 흐름제어와 로드균형을 처리하는 통신프로토콜을 분석한다. 클라이언트 패킷은 데이터 형, 데이터 크기, 클라이언트 코드, 분산서버 코드(메모리 코드로 사용될 수 있다),DB서버(100) 코드 및 전송요청에 관련된 데이터로 구성된다.The protocol processing means 240 analyzes the packet protocol for processing the server packet, the client packet and the control packet and the communication protocol for communication, data flow control and load balancing between the DB server 100 and the client 400. The client packet is composed of data type, data size, client code, distributed server code (which can be used as a memory code), DB server 100 code, and data related to a transmission request.

서버 패킷은 데이터형, 데이터 크기 및 멀티미디어데이터로 구성되고 제어 패킷은 데이터 형, 데이터 크기 및 제어코드로 구성되는데, 서버측에서 관리하는 패킷을 두 가지로 나누어 패킷의 크기를 줄임으로써 혼합된 다양한 멀티미디어데이터를 효율적으로 전송할 수 있다. 제어코드는 서버패킷정보를 포함한다.Server packet consists of data type, data size and multimedia data, and control packet consists of data type, data size and control code. Various multimedia mixed by reducing packet size by dividing the packet managed by server into two Data can be transmitted efficiently. The control code contains server packet information.

메모리관리수단(250)은 메모리내의 운영체계 주소공간을 관리하여 다수의 스레드에 할당하고, 다수의 스레드 처리에 관련된 자료구조 및 알고리즘을 제공하여 메모리풀(260) 및 풀버퍼(270)를 제어한다.The memory management unit 250 manages the operating system address space in the memory, allocates the threads to a plurality of threads, and provides data structures and algorithms related to the processing of the plurality of threads to control the memory pool 260 and the full buffer 270. .

전술한 구성요소외에 전송서버(200)는 유선네트워크(300)를 통하여 클라이언트(400)와 데이터를 송수신하며, 상기 풀버퍼(270)로부터 스트림데이터를 전달받아 클라이언트(400)로 전송하는 송수신수단(280)을 구비하고 있는데, 송수신수단(280)은 접속수단(210)보다 통신 프로토콜상의 하위계층을 담당하는 있다(가령, OSI(Open Systems interconnection) 7계층 중에서 1,2 계층을 담당).In addition to the above-described components, the transmission server 200 transmits and receives data to and from the client 400 through the wired network 300, and transmits and receives the stream data from the full buffer 270 to the client 400 ( 280, the transmission and reception means 280 is responsible for the lower layer of the communication protocol than the connection means 210 (for example, the first and second layers of the seven layers of Open Systems interconnection (OSI)).

풀버퍼(270)로부터 스트림데이터를 수신함에 있어 송수신수단(280)이 제어수단(220)과 분리되어 메모리 버스를 직접 관리하도록 하는 DMA수단(290)을 구비함으로써 전송서버(200)는 제어수단(220)의 CPU 부하를 감소시킬 수 있다.In receiving stream data from the full buffer 270, the transmitting and receiving means 280 is separated from the control means 220 and provided with the DMA means 290 to directly manage the memory bus, so that the transmission server 200 controls the control means ( The CPU load of 220 can be reduced.

제어수단(220)은 주소버스와 데이터버스를 이용하여 DMA수단(290)과 통신하며, DMA수단(290)은 자신의 주소를 받아 직접 메모리 접근 및 레지스터 입력을 활성화한다. 송수신수단(280)이 DMA요구를 보내면 DMA수단(290)은 제어수단으로 하여금 버스를 포기하도록 하고 현재 주소 레지스터 값을 주소버스에 출력한다.The control means 220 communicates with the DMA means 290 using the address bus and the data bus, and the DMA means 290 receives its own address to activate direct memory access and register input. When the transmission / reception means 280 sends a DMA request, the DMA means 290 causes the control means to give up the bus and outputs the current address register value to the address bus.

송수신수단(280)이 DMA승낙을 받으면, 데이터 버스를 통하여 메모리와의 데이터 전송이 가능해진다. 따라서 제어수단(220)이 순간적으로 동작하지 않는 경우에도 DMA수단(290)의 제어에 의하여 풀버퍼(270)와 송수신수단(280) 사이의 통신이 이루어질 수 있다.When the transmitting / receiving means 280 receives the DMA approval, it is possible to transmit data to the memory via the data bus. Therefore, even when the control means 220 does not operate instantaneously, communication between the full buffer 270 and the transmission / reception means 280 may be performed by the control of the DMA means 290.

전술한 바와 같이, 전송서버(200)가 분산처리되든지 혹은 메모리 관리부분(즉, 메모리풀(260), 풀버퍼(270) 및 메모리관리수단(250))을 분산처리하였을 경우에는 전송서버(200)는 특정의 통신채널을 통하여(즉, 공유된 회선이 아닌 분할된 회선을 통하여) DB서버(100)로부터 멀티미디어데이터를 전송받고 클라이언트(400)로 스트림데이터를 전송함으로써 분산에 따른 부가적인 프로토콜 처리 부담을 줄일 수 있다.As described above, when the transmission server 200 is distributed or the memory management portion (ie, the memory pool 260, the full buffer 270, and the memory management means 250) is distributed. ) Receives additional multimedia data from DB server 100 and transmits stream data to client 400 through a specific communication channel (that is, through a divided line rather than a shared line). Reduce the burden

또한, 분산처리된 경우의 프로토콜처리부는 분산 네트워크상에서의 통신, 데이터 흐름제어와 로드균형을 처리하는 최소한의 통신프로토콜을 분석해야한다. 이는 분산된 메모리를 관리하기 위함이다.In addition, the protocol processor in the case of distributed processing should analyze the minimum communication protocol that handles communication, data flow control and load balancing on the distributed network. This is to manage distributed memory.

이하에서 첨부된 도면을 참조하여 본 발명에 의한 전송서버(200)의 메모리 관리 방법을 상세히 설명한다.Hereinafter, a memory management method of a transmission server 200 according to the present invention will be described in detail with reference to the accompanying drawings.

도 4a 내지 도 4c는 본 발명에 의한 전송서버의 메모리 관리 방법을 도시한 흐름도이다.4A to 4C are flowcharts illustrating a memory management method of a transmission server according to the present invention.

우선, 접속수단(210)은 클라이언트(400)와 통신채널을 설정하고, 제어수단(220)은 클라이언트(400)로부터 멀티미디어데이터의 전송요청을 취합하여 세션을 설정하고 관리한다(S100).First, the connection means 210 establishes a communication channel with the client 400, and the control means 220 collects the multimedia data transmission request from the client 400 to establish and manage a session (S100).

이 때, 클라이언트(400)로부터 전송된 클라이언트 패킷은 전송받고자 하는 멀티미디어데이터에 대한 정보를 가지고 있으며 이에 의하여 스트림관리수단(230)은 DB서버(100)로부터 해당 멀티미디어데이터를 요청하여 전송받는다(S200).At this time, the client packet transmitted from the client 400 has information on the multimedia data to be transmitted, whereby the stream management means 230 is requested to receive the corresponding multimedia data from the DB server 100 (S200). .

메모리관리수단(250)의 제어하에 메모리풀(260)은 전송패킷 단위로 파일페이지를 형성하여 플레이파일리스트(262)를 생성하며(S300), 믹서큐풀(264)은 할당된 메모리에 메모리 크기를 조정하여 스트림데이터로 저장한다(S400).Under the control of the memory management means 250, the memory pool 260 forms a file page in units of transmission packets to generate the play file list 262 (S300), and the mixer queue pool 264 sets the memory size in the allocated memory. Adjust and store as stream data (S400).

이어서, 전송큐풀(266)은 할당된 메모리를 고정하여 설정된 다수의 풀버퍼(270)로 스트림데이터를 전송한다(S500). 풀버퍼(270)는 오버플로우 영역을 차용하여 원형버퍼링함으로써 전송된 스트림데이터를 저장하고 클라이언트(400)로 실시간 전송하는데(S600), 이 과정을 보다 상세히 설명하면 다음과 같다.Subsequently, the transmission queue pool 266 transmits the stream data to the plurality of full buffers 270 set by fixing the allocated memory (S500). The full buffer 270 stores the stream data transmitted by circular buffering by borrowing the overflow area and transmits the stream data in real time to the client 400 (S600).

도 5a는 쓰기 인덱스가 읽기 인덱스보다 선행한 경우의 풀버퍼(270)상의 기록영역을 구분하여 예시한 것이다.5A illustrates the recording areas on the full buffer 270 when the write index is preceded by the read index.

쓰기 동작상(S602)의 풀버퍼(270)상의 쓰기 인덱스가 읽기 인덱스보다 선행한 경우(S604), 풀버퍼(270)의 쓰기 안된 영역에 실시간 입력되는 스트림데이터를 기록한다(S606). 여기서, 쓰기 안된 영역은 쓰기 가능한 영역으로서 도 5a의 A, C 및 D영역이 이에 해당한다. A영역은 쓰기가 되었으나 읽기 인덱스가 경유한 부분이므로 덮어쓰기가 가능한 상태이다.If the write index on the full buffer 270 in the write operation (S602) precedes the read index (S604), stream data input in real time is recorded in the unwritten area of the full buffer 270 (S606). Here, the unwritten area is a writable area, which corresponds to areas A, C, and D of FIG. 5A. Area A has been written but can be overwritten because the read index is part of it.

만약, C영역이 기록되어야할 멀티미디어패킷(E)보다 크다면 문제가 발생하지 않으나 그렇지 않은 경우에는 C영역에 멀티미디어데이터의 일부를 기록하고, 쓰기 인덱스를 버퍼의 초기 번지로 되돌려 A영역에 나머지 데이터를 기록해야한다. 즉,쓰기 오퍼레이션을 두 번 진행하게 되며, 이 때의 쓰기 오퍼레이션은 풀버퍼(270) 객체 밖에서 제어해야 하므로, 제어가 복잡해지고 비효율적이 된다. 방대한 멀티미디어데이터를 처리해야하는 메모리 관리 장치에 있어서 이러한 전송상의 문제가 무수히 반복되다 보면 시스템상의 심각한 문제를 초래하기도 한다.If the area C is larger than the multimedia packet E to be recorded, the problem does not occur. Otherwise, a part of the multimedia data is recorded in the area C and the write index is returned to the initial address of the buffer. Should be recorded. That is, the write operation is performed twice, and the write operation at this time needs to be controlled outside the full buffer 270 object, thereby making the control complicated and inefficient. In a memory management device that needs to process a large amount of multimedia data, this transmission problem can be seriously repeated.

따라서, 본 발명에 의한 메모리 관리 방법에서는 첫 째, 스트림데이터의 패킷(E)과 쓰기 안된 영역(C)을 비교하여 스트림데이터의 패킷(E)이 쓰기 안된 영역(C)의 데이터 용량을 초과하는 경우(S608), 오버플로우 영역(D)에 쓰기 인덱스를 선형 진행하여 나머지 스트림데이터(F1)를 기록한다(S612). 반면, 스트림데이터의 패킷(E)이 쓰기 안된 영역(C)의 데이터 용량보다 작은 경우(S608), 풀버퍼의 쓰기 안된 영역(C)에 스트림데이터의 쓰기를 유지하여 클라이언트로 전송한다(S610).Therefore, in the memory management method according to the present invention, first, the packet E of the stream data is compared with the unwritten area C, and the packet E of the stream data exceeds the data capacity of the unwritten area C. In the case (S608), the write index is linearly advanced in the overflow area D to record the remaining stream data F1 (S612). On the other hand, if the packet E of the stream data is smaller than the data capacity of the unwritten area C (S608), the stream data is kept in the unwritten area C of the full buffer and transmitted to the client (S610). .

둘 째, 오버플로우 영역에 기록된 스트림데이터의 패킷(F1)과 풀버퍼(270)의 읽기된 영역(A)을 비교하여(S614) 읽기 안된 영역(A)의 데이터 용량이 큰 경우, 오버플로우 영역에 기록된 스트림데이터(F1)를 복사하여 읽기된 영역에 기록하고(S616) 쓰기 인덱스는 복사된 데이터(F2)의 끝단(G)을 지시하도록 이동시켜 원형버퍼링한다(S618).Second, if the data capacity of the unread area A is large by comparing the packet F1 of the stream data recorded in the overflow area with the read area A of the full buffer 270 (S614), overflow The stream data F1 recorded in the area is copied and recorded in the read area (S616), and the write index is circularly buffered by moving to indicate the end G of the copied data F2 (S618).

셋 째, 전송서버(200)는 전송에 관련한 데이터(가령, 회수 페이지, 폐기 페이지를 표기한 'dirty'마크 및 'clean'마크)를 메모리풀(260)에 기록하여 메모리를 관리한다(S700).Third, the transmission server 200 manages the memory by recording data related to the transmission (for example, a 'dirty' mark and a 'clean' mark indicating a retrieval page, a discard page) in the memory pool 260 (S700). .

도 5b는 쓰기 인덱스와 읽기 인덱스가 같은 위치에 있는 경우의 풀버퍼(270)상의 기록영역을 구분하여 예시한 것이다.FIG. 5B illustrates the recording areas on the full buffer 270 when the write index and the read index are at the same position.

도 5b에 의하면, 풀버퍼(270)상의 쓰기 인덱스와 읽기 인덱스가 같은 위치에 있는 경우(S620), 원형 버퍼링함에 있어서 메모리 초기화 후 최초의 인덱스 진행이면(즉, 쓰기 인덱스를 읽기 인덱스가 따라 잡아서 A, B 및 C영역에 멀티미디어데이터가 기록 가능한 상태이면)(S622), 전술한 도 5a에 의하여 설명한 방법으로 버퍼링한다.Referring to FIG. 5B, when the write index and the read index on the full buffer 270 are at the same position (S620), if the first index progresses after the memory initialization in circular buffering (that is, the read index is caught up by the read index A). If the multimedia data can be recorded in the areas B and C) (S622), buffering is performed by the method described with reference to FIG. 5A.

그러나, 원형 버퍼링함에 있어서 기존의 스트림데이터가 저장되어 있으면(즉, 읽기 인덱스가 정지한 채 쓰기 인덱스가 원형 버퍼링하여 버퍼 처음부터 다시 읽기 인덱스를 따라잡아서 더 이상 데이터 기록 공간이 없으면)(S622), 스트림데이터의 기록을 유보해야 한다(S624).However, in the case of circular buffering, if the existing stream data is stored (that is, if the write index is circularly buffered while the read index is stopped and the catch index is caught up again from the beginning of the buffer and there is no more data recording space) (S622), The record of the stream data should be reserved (S624).

도 5c는 쓰기 인덱스보다 읽기 인덱스가 선행한 경우의 풀버퍼(270)상의 기록영역을 구분하여 예시한 것이다.FIG. 5C illustrates the recording area on the full buffer 270 when the read index is preceded by the write index.

풀버퍼(270)상의 쓰기 인덱스보다 읽기 인덱스가 선행한 경우에는(S626), A 및 C영역에는 이미 데이터가 기록되어 있는 상태이고, 오버플로우 영역(D)에는 선형 진행하는 인덱스가 접근할 수 없다. 따라서, 읽기 인덱스와 쓰기 인덱스가 위치한 메모리 주소 사이의 공간(B)에 스트림데이터를 실시간으로 기록할 수 밖에 없다(S628).If the read index precedes the write index on the full buffer 270 (S626), data is already recorded in the A and C areas, and the linearly progressing index cannot be accessed in the overflow area D. . Therefore, the stream data can only be recorded in real time in the space B between the memory address where the read index and the write index are located (S628).

이러한 버퍼를 제어하는 함수로 'PB_EndWrite_e()'함수가 있는데, 이 함수는 '쓰기'를 요청한 데이터양 이하의 바이트수 만큼 '쓰기'했다고 풀버퍼(270)에 기록하는 함수이다. 만일 도 8a에서 오버플로우가 발생하였을 경우 우선 쓰기 인덱스를 '쓰기'한 만큼 증가시키고, 오버플로우된 영역을 풀버퍼(270)의 앞쪽으로옮긴다('memmove()'함수 이용). 다음, 모듈로(%) 연산자를 이용하여 쓰기 인덱스를 풀버퍼(270)의 시작점으로부터의 오프셋으로 계산하여 기록한다(write_index=write_index % buffer_size;). 그리고, 버퍼 내부의 데이터 용량을 지시하는 변수의 값을 증가시킨다.A function to control such a buffer is 'PB_EndWrite_e ()', which is a function that writes to the full buffer 270 that 'write' is performed by the number of bytes less than the requested data amount. If an overflow occurs in FIG. 8A, the write index is first increased by 'write', and the overflowed area is moved to the front of the full buffer 270 (using 'memmove ()' function). Next, the write index is calculated and recorded as an offset from the start point of the full buffer 270 using the modulo (%) operator (write_index = write_index% buffer_size;). Then, the value of the variable indicating the data capacity in the buffer is increased.

또한, 풀버퍼(270)에 읽기를 요청하는 함수인 'PB_BeginRead_e()'함수는 풀버퍼(270) 내부의 읽을 수 있는 데이터양이 요청한 양보다 적을 경우 풀버퍼(270)에 있는 데이터 크기만을 리턴한다. 이 경우 리턴값이 여러개가 존재하는데, 풀버퍼(270)에 데이터를 입력하는 쓰레드가 'End of Stream'을 감지하고 풀버퍼(270)에 데이터 입력이 끝났다고 알려주는 'ERROR_EOS'의 경우와 데이터 입력이 느려져서 발생하는 'ERROR_NODATA'의 경우 및 관리자의 의도에 의해 인터럽트가 걸린 'ERROR_INTERRUPT'의 경우가 그 예이다.In addition, the function 'PB_BeginRead_e ()', which is a function that requests reading from the full buffer 270, returns only the size of the data in the full buffer 270 when the amount of readable data in the full buffer 270 is less than the requested amount. do. In this case, there are several return values, and the thread inputting data to the full buffer 270 detects the 'End of Stream' and informs the full buffer 270 that the data input is complete. This is the case of 'ERROR_NODATA' caused by slowing down and 'ERROR_INTERRUPT' interrupted by the administrator's intention.

도 6a는 읽기 인덱스가 쓰기 인덱스보다 선행한 경우의 풀버퍼(270)상의 읽기 영역을 구분하여 예시한 것이다.6A illustrates the read areas on the full buffer 270 when the read indexes precede the write indexes.

우선, 풀버퍼(270)상의 읽기 인덱스가 쓰기 인덱스보다 선행한 경우(S630), 풀버퍼(270)는 읽기 안된 영역(C1)의 스트림데이터를 실시간으로 읽어서(S632) 원형버퍼링되어 기록된 스트림데이터의 패킷 부분의 데이터용량(C2)보다 오버플로우 영역(D)이 크면(S634), 원형버퍼링되어 기록된 스트림데이터의 패킷 부분(C2)을 풀버퍼(270)의 오버플로우 영역(D)에 복사(C3)하고 읽기 인덱스를 선형 진행하여 스트림데이터 패킷을 읽는다(S636).First, if the read index on the full buffer 270 precedes the write index (S630), the full buffer 270 reads the stream data of the unread area C1 in real time (S632) and circularly buffers the recorded stream data. If the overflow area D is larger than the data capacity C2 of the packet portion of the packet portion (S634), the packet portion C2 of the stream buffered and recorded stream data is copied to the overflow area D of the full buffer 270. In step C3, the read index is linearly read to read the stream data packet (S636).

다음으로, 읽기 인덱스를 원형버퍼링되어 기록된 스트림데이터의 패킷(C2)의끝단(E)을 지시하도록 이동시켜 원형버퍼링한다(S638).Next, the read index is moved circularly buffered to indicate the end E of the packet C2 of the stream data recorded and circularly buffered (S638).

전술한 과정 역시 쓰기 오퍼레이션의 경우와 마찬가지로 두 번에 걸쳐 진행되는 오퍼레이션에 의하여 시스템에 걸리는 부하를 감소시키기 위한 읽기 상의 메모리 관리 방법에 관한 것이다.The above-described process also relates to a memory management method for reading to reduce the load on the system by two operations as in the case of the write operation.

도 6b는 쓰기 인덱스와 읽기 인덱스가 같은 위치에 있는 경우의 풀버퍼(270)상의 읽기 영역을 구분하여 예시한 것이다.FIG. 6B illustrates a separate read area on the full buffer 270 when the write index and the read index are located at the same position.

풀버퍼(270)상의 쓰기 인덱스와 읽기 인덱스가 같은 위치에 있는 경우(S640), 첫 째, 선형 버퍼링함에 있어서 메모리 초기화 후 최초의 인덱스 진행이면(즉, 쓰기 인덱스를 읽기 인덱스가 따라 잡아서 A, B 및 C영역에 읽어야 할 멀티미디어데이터가 존재하지 않는 상태이면)(S642), 스트림데이터의 읽기를 유보한다(S644).When the write index and the read index on the full buffer 270 are in the same position (S640), first, if the first index progresses after the memory initialization in the linear buffering (i.e., the write index catches up with the read index, A and B And if there is no multimedia data to be read in the C area (S642), the reading of the stream data is suspended (S644).

둘 째, 선형 버퍼링함에 있어서 기존의 스트림데이터가 저장되어 있으면(즉, 읽기 인덱스가 정지한 채 쓰기 인덱스가 원형 버퍼링하여 버퍼 처음부터 다시 읽기 인덱스를 따라잡아서 A, B 및 C영역에 읽을 데이터가 존재하면)(S642), 전술한 도 6a에 의하여 설명한 방법으로 버퍼링 한다.Second, in case of linear buffering, if the existing stream data is stored (that is, the write index is circularly buffered while the read index is stopped, the data is read in the A, B, and C areas by catching the read index again from the beginning of the buffer. (S642), and the buffering method described above with reference to FIG. 6A.

도 6c는 읽기 인덱스보다 쓰기 인덱스가 선행한 경우의 풀버퍼(270)상의 읽기 영역을 구분하여 예시한 것이다.FIG. 6C illustrates the read areas on the full buffer 270 when the write index precedes the read index.

도 6c에 의하면, 풀버퍼(270)상의 읽기 인덱스보다 쓰기 인덱스가 선행한 경우에는(S646), A 및 C영역의 데이터는 이미 읽혀진 상태이고, 오버플로우 영역(D)에는 선형 진행하는 인덱스가 접근할 수 없다. 따라서, 읽기 인덱스와 쓰기 인덱스가 위치한 메모리 주소 사이의 공간(B)의 스트림데이터를 실시간으로 읽을 수 밖에 없다(S648).According to FIG. 6C, when the write index is preceded by the read index on the full buffer 270 (S646), the data of the A and C regions are already read, and the linearly advancing index approaches the overflow region D. Can not. Therefore, it is necessary to read in real time the stream data of the space B between the memory address where the read index and the write index are located (S648).

마지막으로, 전송서버(200)는 전송에 관련한 데이터를 메모리풀(260)에 기록하여 메모리를 관리한다(S700).Finally, the transmission server 200 records the data related to the transmission in the memory pool 260 to manage the memory (S700).

이러한 읽기 함수로는 'PB_EndRead_e()'를 들 수 있으며, 읽기로 요청한 만큼 혹은 그것보다 적은 바이트 수만큼 읽었다고 풀버퍼(270)에 기록하는 함수이다.Such a read function is 'PB_EndRead_e ()', and it is a function that writes to the full buffer 270 that it has read as many bytes as requested or less than that.

읽기 인덱스와 읽은 용량을 더한 다음 모듈로 연산자(%)를 이용하여 읽기 인덱스를 재조정한다. 즉, 버퍼안의 데이터 용량을 지시하는 변수의 값을 감소시킨다.After adding the read index and the read capacity, readjust the read index using the modulo operator (%). That is, the value of the variable indicating the data capacity in the buffer is decreased.

이상에서 본 발명에 대하여 그 바람직한 실시예를 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 발명의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 본 발명의 실시예에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.The present invention has been described above with reference to the preferred embodiments, which are merely examples and are not intended to limit the present invention, and those skilled in the art to which the present invention pertains do not depart from the essential characteristics of the present invention. It will be appreciated that various modifications and applications are not possible that are not illustrated above. For example, each component specifically shown in the embodiment of the present invention can be modified. And differences relating to such modifications and applications will have to be construed as being included in the scope of the invention defined in the appended claims.

본 발명에 의하면, 전송 버퍼를 제어함에 있어서 규정된 저장 영역 외에 오버플로우 영역을 차용하여 쓰기 인덱스 및 읽기 인덱스를 선형으로 진행시킴으로써 패킷단위의 스트림데이터가 단절없이 기록될 수 있도록 하며, 따라서 오퍼레이션의제어 절차를 간소화할 수 있게 된다.According to the present invention, in controlling the transmission buffer, stream data in packet units can be written without disconnection by linearly advancing the write index and the read index by borrowing an overflow area in addition to the prescribed storage area, thus controlling operation. The procedure can be simplified.

또한, 공유메모리를 통하여 커널 정보, 파일의 플레이백 상태정보, 플레이파일(언더라잉 파일: Underlying File), 전송 정보, 파일정보 및 멀티미디어데이터를 효율적으로 저장하고 관리함으로써 클라이언트의 요청에 신속하게 대응하고 고속으로 실시간 스트림전송할 수 있게된다.In addition, it efficiently responds to client requests by efficiently storing and managing kernel information, file playback status information, play file (underlying file), transfer information, file information, and multimedia data through shared memory. Real-time stream transmission can be performed at high speed.

Claims (12)

전송서버에 있어서,In the transmission server, 클라이언트 및 DB서버와 유선네트워크를 통하여 연결되어 있으며, 통신채널을 설정하고, 프로세스간 데이터교환을 처리하는 인터페이스를 지원하는 접속수단;Connection means connected to a client and a DB server via a wired network, for establishing an communication channel and supporting an interface for processing data exchange between processes; 스트림패킷 단위 이상의 오버플로우영역을 구비하고, 읽기 인덱스와 쓰기 인덱스의 버퍼상의 위치에 따라 상기 오버플로우 영역을 차용하여 데이터를 기록하며, 기록된 데이터를 복사하여 원형버퍼링함으로써 단절없이 멀티미디어데이터의 스트림전송이 가능하도록 하는 하나 이상의 풀버퍼;An overflow area of at least a stream packet unit is provided, and the data is recorded by borrowing the overflow area according to the positions of the buffers of the read index and the write index, and the recorded data is copied and circular buffered to transfer the stream of multimedia data without disconnection. One or more full buffers to enable this; 일정 개수의 상기 풀버퍼를 관리하여 스트림데이터를 전송하고, 스트림파일의 전송을 처리하는 스레드의 수에 따라 분할된 다수의 일정 저장공간을 제공하고, 저장공간의 분할 및 전송에 관련한 커널정보를 저장하는 하나 이상의 메모리풀;It manages a certain number of full buffers to transmit stream data, provides a plurality of predetermined storage spaces divided according to the number of threads that process the transmission of the stream file, and stores kernel information related to the division and transmission of the storage space. One or more memory pools; 상기 스레드의 연산 요청을 처리하는 인터럽트처리기를 구비하고, 클라이언트의 전송요청을 취합하여 커널 세션을 설정하며, 동적 스케쥴링을 통하여 상기 세션을 관리하는 제어수단;Control means including an interrupt handler for processing an operation request of the thread, collecting a transfer request of a client, establishing a kernel session, and managing the session through dynamic scheduling; 상기 DB서버와 통신하여 멀티미디어데이터를 전송받고, 상기 메모리풀과 상기 DB서버간의 각 스트림데이터의 등시성을 유지하면서 전송율을 조정하는 스트림관리수단;Stream management means for receiving multimedia data in communication with the DB server and adjusting a transmission rate while maintaining isochronity of each stream data between the memory pool and the DB server; 서버패킷, 클라이언트패킷 및 제어패킷을 처리하는 패킷프로토콜과 상기 DB서버 및 클라이언트간의 통신, 데이터 흐름제어와 로드균형을 처리하는 통신프로토콜을 분석하는 프로토콜처리수단; 및Protocol processing means for analyzing a packet protocol for processing a server packet, a client packet and a control packet and a communication protocol for processing communication, data flow control and load balancing between the DB server and the client; And 메모리내의 운영체계 주소공간을 관리하여 상기 다수의 스레드에 할당하고, 다수의 스레드 처리에 관련된 자료구조 및 알고리즘을 제공하여 상기 메모리풀 및 풀버퍼를 제어하는 메모리관리수단을 포함하는 것을 특징으로 하는 메모리 관리장치를 구비한 전송서버.And memory management means for managing an operating system address space in a memory, allocating the plurality of threads, and providing data structures and algorithms related to the processing of the plurality of threads to control the memory pool and the full buffer. Transmission server equipped with a management device. 제1항에 있어서, 상기 메모리풀은The method of claim 1, wherein the memory pool 하나 이상으로 구성되며, 스트림파일명을 저장하여 관리하는 플레이파일리스트, 상기 플레이파일리스트에 따른 스레드의 수에 의하여 다수의 일정 저장공간을 할당하여 일련의 스트림파일들을 저장하고 저장공간의 분할에 관련한 커널정보를 제공하는 믹서큐풀 및 상기 믹서큐풀에 저장된 일련의 스트림파일들을 상기 일정 개수의 해당 풀버퍼로 전송하기 위한 제어정보를 제공하는 전송큐풀을 구비하는 것을 특징으로 하는 메모리 관리장치를 구비한 전송서버.One or more play file lists for storing and managing stream file names, and a plurality of predetermined storage spaces are allocated according to the number of threads according to the play file list to store a series of stream files and a kernel related to partitioning of storage spaces. A transmission server having a memory management apparatus, comprising: a mixer queue providing information and a transmission queue for providing control information for transmitting a series of stream files stored in the mixer queue to the corresponding number of full buffers. . 제1항에 있어서, 상기 스트림관리수단은The method of claim 1, wherein the stream management means 통신채널정보, 전송율 연산정보, 파일의 플레이백 상태정보, 스트림 상태정보 및 파일정보를 관리하는 것을 특징으로 하는 메모리 관리장치를 구비한 전송서버.A transmission server having a memory management device, characterized by managing communication channel information, rate calculation information, file playback status information, stream status information, and file information. 제1항에 있어서,The method of claim 1, 유선네트워크를 통하여 상기 클라이언트와 데이터를 송수신하며, 상기 풀버퍼로부터 스트림데이터를 전달받아 클라이언트로 전송하는 송수신수단; 및Transmission and reception means for transmitting and receiving data to and from the client through a wired network and receiving stream data from the full buffer and transmitting the stream data to the client; And 상기 풀버퍼로부터 스트림데이터를 수신함에 있어 상기 송수신수단이 상기 제어수단과 분리되어 메모리 버스를 직접 관리하도록 하는 DMA수단을 구비하는 것을 특징으로 하는 메모리 관리장치를 구비한 전송서버.And a DMA means for directly managing a memory bus separate from the control means in receiving stream data from the full buffer. 제1항에 있어서,The method of claim 1, 전송서버는 다수개로 분산되어 특정의 통신채널로 상기 DB서버로부터 멀티미디어데이터를 전송받고 상기 클라이언트로 스트림데이터를 전송하며, 상기 프로토콜처리부는 분산 네트워크상에서의 통신, 데이터 흐름제어와 로드균형을 처리하는 통신프로토콜을 분석하는 것을 특징으로 하는 메모리 관리장치를 구비한 전송서버.The transmission server is distributed in plural numbers and receives multimedia data from the DB server through a specific communication channel and transmits stream data to the client, and the protocol processing unit performs communication, data flow control and load balancing in a distributed network. A transmission server having a memory management device, characterized in that for analyzing the protocol. 메모리 관리 방법에 있어서,In the memory management method, (a) 클라이언트로부터 멀티미디어데이터의 전송요청을 취합하여 세션을 설정하고 관리하는 단계;(a) collecting and transmitting a multimedia data request from a client to establish and manage a session; (b) DB서버로부터 해당 멀티미디어데이터를 요청하여 전송받고, 전송패킷 단위로 파일페이지를 형성하여 플레이파일리스트를 생성하며, 믹서큐풀은 할당된 메모리에 메모리 크기를 조정하여 스트림데이터로 저장하는 단계;(b) requesting and receiving the corresponding multimedia data from a DB server, generating a file page in units of transmission packets, and generating a play file list, wherein the mixer queue pool adjusts the memory size in the allocated memory and stores it as stream data; (c) 전송큐풀은 상기 할당된 메모리를 고정하여 설정된 다수의 풀버퍼로 스트림데이터를 전송하는 단계;(c) the transmission queue pool transmitting stream data to a plurality of full buffers configured by fixing the allocated memory; (d) 상기 풀버퍼는 오버플로우 영역을 차용하여 원형버퍼링함으로써 스트림데이터를 클라이언트로 실시간 전송하는 단계; 및(d) the full buffer borrowing an overflow area and circularly buffering the stream data to transmit stream data to the client in real time; And (e) 전송에 관련한 데이터를 상기 메모리풀에 기록하여 메모리를 관리하는 단계를 포함하는 것을 특징으로 하는 전송서버의 메모리 관리 방법.(e) managing the memory by recording data related to the transmission in the memory pool. 제6항에 있어서, 상기 (d) 단계는The method of claim 6, wherein step (d) 풀버퍼상의 쓰기 인덱스가 읽기 인덱스보다 선행한 경우,If the write index on the full buffer precedes the read index, (d1) 풀버퍼의 쓰기 안된 영역에 실시간 입력되는 스트림데이터를 기록하는 단계;(d1) recording stream data input in real time in an unwritten area of the full buffer; (d2) 스트림데이터의 패킷과 상기 쓰기 안된 영역을 비교하여 스트림데이터의 패킷이 쓰기 안된 영역의 데이터 용량을 초과하는 경우, 오버플로우 영역에 쓰기 인덱스를 선형 진행하여 나머지 스트림데이터를 기록하는 단계; 및(d2) comparing the packet of the stream data with the unwritten area and if the packet of the stream data exceeds the data capacity of the unwritten area, linearly performing a write index in the overflow area to record the remaining stream data; And (d3) 상기 오버플로우 영역에 기록된 스트림데이터의 패킷과 상기 풀버퍼의 읽기된 영역을 비교하여 상기 읽기된 영역의 데이터 용량이 큰 경우, 오버플로우 영역에 기록된 스트림데이터를 복사하여 읽기된 영역에 기록하고 쓰기 인덱스는 복사된 데이터의 끝단을 지시하도록 이동시켜 원형버퍼링하는 단계임을 특징으로 하는 전송서버의 메모리 관리 방법.(d3) If the data capacity of the read area is large by comparing the packet of the stream data recorded in the overflow area with the read area of the full buffer, copy the stream data recorded in the overflow area and read the area. And write index is circularly buffered by moving to indicate the end of the copied data. 제7항에 있어서,The method of claim 7, wherein 풀버퍼상의 쓰기 인덱스와 읽기 인덱스가 같은 위치에 있는 경우,If the write and read indexes on the full buffer are in the same location, 원형 버퍼링함에 있어서 메모리 초기화 후 최초의 인덱스 진행이면, 상기 (d1) 단계 내지 (d3) 단계를 실행하고,In the case of circular buffering, if the first index progresses after memory initialization, steps (d1) to (d3) are executed. 원형 버퍼링함에 있어서 기존의 스트림데이터가 저장되어 있으면, 스트림데이터의 기록을 유보하는 단계임을 특징으로 하는 전송서버의 메모리 관리 방법.If the existing stream data is stored in the circular buffer, the step of maintaining the recording of the stream data, the memory management method of the transmission server. 제6항에 있어서, 상기 (d) 단계는The method of claim 6, wherein step (d) 풀버퍼상의 쓰기 인덱스보다 읽기 인덱스가 선행한 경우,If the read index precedes the write index on the full buffer, 읽기 인덱스와 쓰기 인덱스가 위치한 메모리 주소 사이의 공간에 스트림데이터를 실시간으로 기록하는 단계임을 특징으로 하는 전송서버의 메모리 관리 방법.And recording stream data in real time in a space between a memory address where a read index and a write index are located. 제6항에 있어서, 상기 (d) 단계는The method of claim 6, wherein step (d) 풀버퍼상의 읽기 인덱스가 쓰기 인덱스보다 선행한 경우,If the read index on the full buffer precedes the write index, (d1) 풀버퍼의 읽기 안된 영역의 스트림데이터를 실시간으로 읽는 단계;(d1) reading stream data of an unread region of the full buffer in real time; (d2) 원형버퍼링되어 기록된 스트림데이터의 패킷 부분의 데이터용량보다 오버플로우 영역이 크면, 원형버퍼링되어 기록된 스트림데이터의 패킷 부분을 상기 풀버퍼의 오버플로우 영역에 복사하고 읽기 인덱스를 선형 진행하여 스트림데이터 패킷을 읽는 단계; 및(d2) If the overflow area is larger than the data capacity of the packet portion of the circular buffered stream data, copy the packet portion of the circular buffered stream data to the overflow area of the full buffer and linearly read the index. Reading a stream data packet; And (d3) 상기 읽기 인덱스를 상기 원형버퍼링되어 기록된 스트림데이터의 패킷 부분의 끝단을 지시하도록 이동시켜 원형버퍼링하는 단계임을 특징으로 하는 전송서버의 메모리 관리 방법.and (d3) circularly buffering the read index by moving the read index to indicate an end of a packet portion of the circularly buffered and recorded stream data. 제10항에 있어서,The method of claim 10, 풀버퍼상의 쓰기 인덱스와 읽기 인덱스가 같은 위치에 있는 경우,If the write and read indexes on the full buffer are in the same location, 선형 버퍼링함에 있어서 메모리 초기화 후 최초의 인덱스 진행이면, 스트림데이터의 읽기를 유보하고,In the case of linear buffering, if the first index progresses after memory initialization, the read of stream data is suspended. 선형 버퍼링함에 있어서 기존의 스트림데이터가 저장되어 있으면, 상기 (d1) 단계 내지 (d3) 단계를 실행하는 단계임을 특징으로 하는 전송서버의 메모리 관리 방법.If the existing stream data is stored in the linear buffering, the step (d1) to (d3) to perform the step of the memory management method of the transmission server. 제6항에 있어서, 상기 (d) 단계는The method of claim 6, wherein step (d) 풀버퍼상의 읽기 인덱스보다 쓰기 인덱스가 선행한 경우,If the write index precedes the read index on the full buffer, 읽기 인덱스와 쓰기 인덱스가 위치한 메모리 주소 사이의 공간에 기록된 스트림데이터를 실시간으로 읽는 단계임을 특징으로 하는 전송서버의 메모리 관리 방법.A method of managing a memory of a transmitting server, characterized in that a step of reading stream data recorded in a space between a memory address where a read index and a write index is located in real time.
KR10-2001-0054618A 2001-09-06 2001-09-06 Transmitting server having apparatus for managing memory and method thereof KR100438861B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0054618A KR100438861B1 (en) 2001-09-06 2001-09-06 Transmitting server having apparatus for managing memory and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0054618A KR100438861B1 (en) 2001-09-06 2001-09-06 Transmitting server having apparatus for managing memory and method thereof

Publications (2)

Publication Number Publication Date
KR20030026373A true KR20030026373A (en) 2003-04-03
KR100438861B1 KR100438861B1 (en) 2004-07-05

Family

ID=29561887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0054618A KR100438861B1 (en) 2001-09-06 2001-09-06 Transmitting server having apparatus for managing memory and method thereof

Country Status (1)

Country Link
KR (1) KR100438861B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100426270B1 (en) * 2002-05-21 2004-04-08 이승룡 A multimedia streaming server and an Interconnection Method of multimedia streaming system and multimedia database
KR100725066B1 (en) * 2005-08-02 2007-06-08 한미아이티 주식회사 A system server for data communication with multiple clients and a data processing method
CN112965805A (en) * 2021-03-25 2021-06-15 兴业数字金融服务(上海)股份有限公司 Cross-process asynchronous task processing method and system based on memory mapping file
KR20220120939A (en) * 2021-02-24 2022-08-31 주식회사 윈스 Method, apparauts and computer program for processing packet in network equipment

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101545670B1 (en) 2013-07-25 2015-08-19 서울시립대학교 산학협력단 Methods and system for providing data operations

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0183194B1 (en) * 1995-11-27 1999-05-01 정장호 Compressed image data transmitter

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100426270B1 (en) * 2002-05-21 2004-04-08 이승룡 A multimedia streaming server and an Interconnection Method of multimedia streaming system and multimedia database
KR100725066B1 (en) * 2005-08-02 2007-06-08 한미아이티 주식회사 A system server for data communication with multiple clients and a data processing method
KR20220120939A (en) * 2021-02-24 2022-08-31 주식회사 윈스 Method, apparauts and computer program for processing packet in network equipment
CN112965805A (en) * 2021-03-25 2021-06-15 兴业数字金融服务(上海)股份有限公司 Cross-process asynchronous task processing method and system based on memory mapping file
CN112965805B (en) * 2021-03-25 2023-12-05 兴业数字金融服务(上海)股份有限公司 Cross-process asynchronous task processing method and system based on memory mapping file

Also Published As

Publication number Publication date
KR100438861B1 (en) 2004-07-05

Similar Documents

Publication Publication Date Title
JP3338451B2 (en) Staggered stream support for video on demand
US9615125B2 (en) Method of data management for efficiently storing and retrieving data to respond to user access requests
JP3217002B2 (en) Digital studio apparatus and control method thereof
CA2142380C (en) Buffer management policy for an on-demand video server
JP5408257B2 (en) Content distribution system, content distribution method, and content distribution program
US20050086386A1 (en) Shared running-buffer-based caching system
EP1498809B1 (en) Storage system and data transfer method for the system
US8578431B2 (en) Adaptive timeshift service
US20110317763A1 (en) Information processing apparatus and information processing method
US20030154246A1 (en) Server for storing files
JPH09224044A (en) Distribution system
CN112995753A (en) Media stream distribution method, CDN node server, CDN system and readable storage medium
EP2160685A2 (en) Digital data management using shared memory pool
KR100438861B1 (en) Transmitting server having apparatus for managing memory and method thereof
KR20020057837A (en) Streaming service method and system
KR100733247B1 (en) Systems and methods for selecting a provider
JP3652670B2 (en) Multicast video distribution system and request reception processing program in the same system
JPH0981491A (en) Network video server, client device and multimedia information providing method
US9547612B2 (en) Method and architecture for data channel virtualization in an embedded system
KR100431137B1 (en) Distributed server system for transmitting multimedia data and method thereof
CN114390053B (en) Service content scheduling method, device, equipment and storage medium
CN111813338A (en) Network storage device
KR100594951B1 (en) A Transmission Method of Contents Using NS Card
CN118075284A (en) Streaming media resource downloading method, system, device, equipment and storage medium
CN118796114A (en) NAS device operation method and electronic device

Legal Events

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