KR100438861B1 - Transmitting server having apparatus for managing memory and method thereof - Google Patents
Transmitting server having apparatus for managing memory and method thereof Download PDFInfo
- Publication number
- KR100438861B1 KR100438861B1 KR10-2001-0054618A KR20010054618A KR100438861B1 KR 100438861 B1 KR100438861 B1 KR 100438861B1 KR 20010054618 A KR20010054618 A KR 20010054618A KR 100438861 B1 KR100438861 B1 KR 100438861B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory
- stream
- transmission
- index
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/613—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling 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/62—Establishing 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
본 발명은 메모리 관리장치를 구비한 전송서버 및 그 방법에 관한 것이다.The present invention relates to a transmission server having a memory management apparatus and a method thereof.
본 발명에 의한 메모리 관리장치를 구비한 전송서버는 읽기 인덱스와 쓰기 인덱스의 버퍼상의 위치에 따라 오버플로우 영역을 차용하여 데이터를 기록하며, 기록된 데이터를 복사하여 원형버퍼링함으로써 단절없이 멀티미디어데이터의 스트림전송이 가능하도록 하는 다수의 풀버퍼; 풀버퍼를 관리하여 스트림데이터를 전송하고, 스트림파일의 전송을 처리하는 스레드의 수에 따라 분할된 다수의 일정 저장공간을 제공하고, 저장공간의 분할 및 전송에 관련한 커널정보를 저장하는 다수의 메모리풀; 스레드의 연산 요청을 처리하는 인터럽트처리기를 구비하고, 클라이언트의 전송요청을 취합하여 커널 세션을 설정하여 관리하는 제어수단; 멀티미디어데이터를 전송받고, 메모리풀과 DB서버간의 각 스트림데이터의 등시성을 유지하면서 전송율을 조정하는 스트림관리수단; 패킷프로토콜과 통신프로토콜을 분석하는 프로토콜처리수단; 및 메모리내의 운영체계 주소공간을 관리하여 다수의 스레드에 할당하고, 다수의 스레드 처리에 관련된 자료구조 및 알고리즘을 제공하여 메모리풀 및 풀버퍼를 제어하는 메모리관리수단을 포함한다.A transmission server having a memory management apparatus according to the present invention records data by using an overflow area according to positions of buffers of a read index and a write index, and copies the recorded data and circularly buffers the stream of multimedia data without disconnection. A plurality of full buffers to enable transmission; A plurality of memories that manage the full buffer to transmit stream data, provide a plurality of fixed storage spaces divided according to the number of threads that handle the transmission of the stream file, and store kernel information related to the division and transmission of the storage space pool; A control means for processing a thread's operation request, and comprising: a control means for setting up and managing a kernel session by collecting a transfer request from a client; Stream management means for receiving multimedia data 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 and a communication protocol; 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.
본 발명에 의하면, 전송 버퍼를 제어함에 있어서 규정된 저장 영역 외에 오버플로우 영역을 차용하여 쓰기 인덱스 및 읽기 인덱스를 선형으로 진행시킴으로써 패킷단위의 스트림데이터가 단절없이 기록될 수 있도록 하며, 따라서 오퍼레이션의 제어 절차를 간소화할 수 있게 되고, 공유 메모리를 통하여 커널 정보, 파일의 플레이백 상태정보, 플레이파일, 전송 정보, 파일정보 및 멀티미디어데이터를 효율적으로 저장하고 관리함으로써 클라이언트의 요청에 신속하게 대응하고 고속으로 실시간 스트림전송할 수 있게된다.According to the present invention, in controlling the transmission buffer, stream data in a packet unit can be recorded without disconnection by linearly advancing the write index and the read index by borrowing an overflow area in addition to the prescribed storage area, thereby controlling operation. The process can be simplified, and the shared memory can efficiently store and manage kernel information, file playback status information, play file, transfer information, file information, and multimedia data to respond quickly and quickly to client requests. Real time stream transmission is possible.
Description
본 발명은 메모리 관리장치를 구비한 전송서버 및 그 방법에 관한 것으로, 보다 상세하게는 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서버와 유선네트워크를 통하여 연결되어 있으며, 통신채널을 설정하고, 프로세스간 데이터교환을 처리하는 인터페이스를 지원하는 접속수단; 스트림패킷 단위 이상의 오버플로우영역을 구비하고, 읽기 인덱스와 쓰기 인덱스의 버퍼상의 위치에 따라 오버플로우 영역을 차용하여 데이터를 기록하며, 기록된 데이터를 복사하여 원형버퍼링함으로써 1회의 쓰기 오퍼레이션으로 멀티미디어데이터 스트림을 전송받는 하나 이상의 풀버퍼; 일정 개수의 풀버퍼를 관리하여 스트림데이터를 전송하고, 스트림파일의 전송을 처리하는 스레드의 수에 따라 분할된 다수의 일정 저장공간을 제공하고, 저장공간의 분할 및 전송에 관련한 커널정보를 저장하는 하나 이상의 메모리풀; 스레드의 연산 요청을 처리하는 인터럽트처리기를 구비하고, 클라이언트의 전송요청을 취합하여 커널 세션을 설정하며, 동적 스케쥴링을 통하여 세션을 관리하는 제어수단; 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; A multimedia data stream is provided in one write operation by including an overflow area of a stream packet unit or more, borrowing the overflow area according to the positions on the buffers of the read index and the write index, copying the recorded data and circular buffering. Receive one or more full buffer; 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 communicating with the DB server to receive the multimedia data and adjusting the 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)
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 KR20030026373A (en) | 2003-04-03 |
KR100438861B1 true 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 (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101545670B1 (en) | 2013-07-25 | 2015-08-19 | 서울시립대학교 산학협력단 | Methods and system for providing data operations |
Families Citing this family (4)
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 |
KR102503272B1 (en) * | 2021-02-24 | 2023-02-24 | 주식회사 윈스 | Method, apparauts and computer program for processing packet in network equipment |
CN112965805B (en) * | 2021-03-25 | 2023-12-05 | 兴业数字金融服务(上海)股份有限公司 | Cross-process asynchronous task processing method and system based on memory mapping file |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0183194B1 (en) * | 1995-11-27 | 1999-05-01 | 정장호 | Compressed image data transmitter |
-
2001
- 2001-09-06 KR KR10-2001-0054618A patent/KR100438861B1/en not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0183194B1 (en) * | 1995-11-27 | 1999-05-01 | 정장호 | Compressed image data transmitter |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101545670B1 (en) | 2013-07-25 | 2015-08-19 | 서울시립대학교 산학협력단 | Methods and system for providing data operations |
Also Published As
Publication number | Publication date |
---|---|
KR20030026373A (en) | 2003-04-03 |
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 | |
CN100430915C (en) | Interactive broadband server system | |
JP3217002B2 (en) | Digital studio apparatus and control method thereof | |
CN106878315B (en) | Variable rate media delivery system | |
CA2142380C (en) | Buffer management policy for an on-demand video server | |
JP3190813B2 (en) | Delivery system | |
US20050086386A1 (en) | Shared running-buffer-based caching system | |
US7996875B2 (en) | Adaptive timeshift service | |
WO2011010688A1 (en) | Content delivery system, content delivery method and content delivery programme | |
US20030154246A1 (en) | Server for storing files | |
CN112995753A (en) | Media stream distribution method, CDN node server, CDN system and readable storage medium | |
WO2009006016A2 (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 | |
JPH0981491A (en) | Network video server, client device and multimedia information providing method | |
JP2011191856A (en) | Management method for file cache, file cache device, and program | |
US9547612B2 (en) | Method and architecture for data channel virtualization in an embedded system | |
US20080187281A1 (en) | Editing apparatus and editing method | |
CN114390053B (en) | Service content scheduling method, device, equipment and storage medium | |
KR100823731B1 (en) | Apparatus and method of content installation in the high-performance streaming server system | |
KR20030012653A (en) | Distributed server system for transmitting multimedia data and method thereof | |
KR100594951B1 (en) | A Transmission Method of Contents Using NS Card | |
CN111813338A (en) | Network storage 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 |