KR100501212B1 - 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법 - Google Patents

스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법 Download PDF

Info

Publication number
KR100501212B1
KR100501212B1 KR10-2003-0085222A KR20030085222A KR100501212B1 KR 100501212 B1 KR100501212 B1 KR 100501212B1 KR 20030085222 A KR20030085222 A KR 20030085222A KR 100501212 B1 KR100501212 B1 KR 100501212B1
Authority
KR
South Korea
Prior art keywords
memory
block
native
unique
field indicating
Prior art date
Application number
KR10-2003-0085222A
Other languages
English (en)
Other versions
KR20050051434A (ko
Inventor
이상민
백승훈
김성운
김명준
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR10-2003-0085222A priority Critical patent/KR100501212B1/ko
Publication of KR20050051434A publication Critical patent/KR20050051434A/ko
Application granted granted Critical
Publication of KR100501212B1 publication Critical patent/KR100501212B1/ko

Links

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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

Abstract

본 발명은 고품질 스트리밍 서비스할 때 고속 스토리지에서 초고속 네트워크로 직접 전송하기 위해서 이들 사이에 고유 메모리를 두어 직접 사용자 프로세스가 이 메모리를 접근함으로써 불필요한 복사를 방지하여 중앙처리유닛의 점유율을 줄일 수 있는 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법에 관한 것이다. 본 발명에 따르면, 저장 장치와 네트워크 카드 사이에 고유 메모리가 구비되며, 사용자 프로세스는 운영체제의 복사없이 제로-카피(zero-copy) 메커니즘을 통해서 상기 고유 메모리에 접근할 수 있다. 또한, 사용자 프로세스에게 고유 메모리 카드에 대한 정보와 운영체제를 거치지 않고 접근할 수 있는 기능을 제공할 수 있다.

Description

스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법{METHOD FOR ACCESSING AND MANAGING SPECIAL PURPOSE MEMORY FOR STREAMING SERVICE}
본 발명은 고성능 스트리밍(streaming) 서비스를 위한 고유 메모리의 접근 및 관리 방법에 관한 것으로서, 더욱 상세하게는 고속 스토리지와 네트워크 카드 사이에 특정 목적의 고유 메모리(special purpose memory)를 두어서, 이를 접근 및 관리하는 시스템 소프트웨어를 통해서 많은 CPU 부하를 발생시키는 커널 복사를 최대한 줄일 수 있고 고품질 스트리밍 서비스를 가능하게 하는 고유 메모리의 접근 및 관리 방법에 관한 것이다.
스트리밍 서비스를 구현하기 위하여, 종래에는 고가의 특별히 설계된 고속 저장장치와 수십 개의 고성능 중앙처리유닛(CPU : central processing unit)으로써 클러스터 형태의 미들웨어 소프트웨어가 이용되었다.
스트리밍 서비스를 구현하기 위한 또 다른 방법으로서, 대한민국 특허출원 제2000-53969호(출원일 : 2000년 3월 21일)에는 "오디오/비디오 스트리밍 가속 장치의 구성 방법 및 그 시스템"이 출원되어 있다. 상기 선행 특허출원의 방법에 따르면, 멀티미디어 데이터를 저장하는 스토리지 장치가 네트워크 상에 분산된 구조를 가지도록 구성되어 있고, 스트리밍 서비스를 구현하기 위해서 특별히 고안된 고가의 하드웨어 장치(예를 들어, 스트리밍 가속 장치)로써 일반 서버의 부하를 줄이면서 직접 스토리지 장치로부터 고객에게 데이터가 전송될 수 있다. 상기 방법은 부하 분산 효과를 얻기 위하여 고가의 장비인 스트리밍 가속 장치를 이용하여야 하는 문제점이 있다.
스트리밍 서비스를 처리하기 위한 소프트웨어적인 접근 방법으로서, 대한민국 특허출원 제1999-8380호(출원일 : 1999년 3월 12일)에는 "인터넷 스트리밍 서비스를 위한 스트림 파일 제작 방법"이 출원되어 있다. 상기 특허출원에 따르면, 인터넷 스트리밍 서비스에서 사용되는 멀티미디어 데이터를 혼합, 저장 및 전송하는데 적합하도록 스트리밍 파일이 제작된다. 그러나, 이 방법은 비교적 저가의 비용으로 낮은 품질의 스트리밍 서비스만이 가능하며, 특정한 전송매체에 대해 최적화된 저장 구조를 가지므로 여러 개의 전송매체를 지원할 수 없어서 범용성이 많이 떨어진다는 문제점이 있다.
본 발명은 상기 설명한 종래의 기술적 문제점을 해결하기 위한 것으로서, 고성능 스트리밍 서비스를 효율적으로 제공하도록 구비된 고유 메모리를 체계적으로 관리할 수 있고, 사용자 프로세스에게 고유 메모리의 제로-카피(zero-copy) 형태의 접근을 제공할 수 있는 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법을 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위한 본 발명은 입출력 버스를 통해 접근 가능한 전용 버스에 연결된 저장 장치, 고유 메모리 및 네트워크 카드를 구비하며 상호 간에 데이터가 전송되도록 구성된 시스템에서 스트리밍 서비스를 수행하기 위한 고유 메모리 접근 및 관리 방법에 관한 것으로서,
(a) 사용자 프로세스에 의해 고유 메모리의 하나의 메모리 블록이 요청되면, 고유 메모리의 블록 리스트에서 가용 메모리 블록을 찾는 단계;
(b) 상기 단계(a)에서 가용 메모리 블록이 있을 경우, 상기 가용 메모리 블록을 할당 고유 메모리 블록 리스트에 넣고, 상기 가용 메모리 블록의 시작 물리 주소를 사용자 공간의 주소로 맵핑하여 사용자 공간 시작 주소로서 사용자 프로세스에 전달하는 단계;
(c) 사용자 프로세스에 의해 상기 저장 장치의 데이터를 고유 메모리로 옮기라는 명령이 내려지면, 직접 메모리 접근 방식을 통해 상기 저장 장치에서 상기 고유 메모리 블록의 공간으로 데이터를 전송하는 단계;
(d) 사용자 프로세스에 의해 상기 고유 메모리 블록에 저장된 데이터를 상기 네트워크 카드로 옮기라는 명령이 내려지면, 직접 메모리 접근 방식을 통해 상기 고유 메모리 블록으로부터 상기 네트워크 카드로 데이터를 전송하는 단계;
(e) 전송할 데이터가 더 있는 경우에는 상기 단계(c)로 점프하여 그 이후의 동작을 반복하며, 전송할 데이터가 더 이상 없는 경우에는 할당 받은 고유 메모리 블록 및 사용자 프로세스에 의해 메모리 공간에 맵핑된 영역을 해제하고, 상기 고유 메모리 블록을 사용가능한 고유 메모리 블록 리스트에 넣는 단계를 포함하는 것을 특징으로 한다.
이하, 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 1에는 본 발명의 실시예에 따른 고유 메모리 접근 및 관리 방법이 적용되는 하드웨어 환경이 개략적으로 도시되어 있다.
상기 도 1을 참조하면, 시스템 버스(13), 입출력 버스(16) 및 전용 버스(18)가 구비되어 있다. 복수의 프로세서(11, 12)가 상기 시스템 버스(13)에 연결되어 있고, 메모리(14)는 메모리 제어기 허브(15)를 통해 상기 시스템 버스(13)와 입출력 버스(16)에 연결된다. 상기 입출력 버스(16)와 전용 버스(18) 사이에는 브릿지(17)가 구비되어 있으며, 상기 전용 버스(18)에는 저장 장치(19), 고유 메모리(20) 및 네트워크 카드(21)가 직접 메모리 접근(DMA : direct memory access) 방식으로 연결되어 있다. 상기 도 6에 도시된 하드웨어 환경에서 스트리밍 서비스가 처리될 경우에는, 데이터가 상기 저장 장치(19)로부터 상기 고유 메모리(20)를 통해서 네트워크 카드(21)로 직접 전송되며, 프로세서(11, 12)와 시스템 버스(13) 및 입출력 버스(16)를 거치지 않는다. 보다 구체적으로, 스트리밍 서비스가 처리될 때, 먼저 저장 장치(19)의 데이터가 직접 메모리 접근 방식에 의해 고유 메모리(20)로 옮겨진다. 이와 같이 고유 메모리(20)에 전송된 데이터는 직접 메모리 접근 방식에 의해 네트워크 카드(21)로 보내지며, 상기 네트워크 카드(21)를 통해 사용자에게 스트리밍 서비스가 이루어진다.
다음으로, 도 2를 참조하여 본 발명의 실시예에 따른 고유 메모리 접근 및 관리 방법에 대해 설명한다.
도 2의 순서도는 본 발명의 실시예에 따른 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법의 처리 흐름을 나타낸 것이다.
동작이 시작되면, 상기 도 2에 도시되어 있듯이, 사용자 프로세스는 고유 메모리의 하나의 블록을 고유 메모리 관리자로부터 얻는다(S10). 다음으로, 사용가능한 가용 고유 메모리 블록 리스트에서 블록을 찾는 단계(S11)가 수행되며, 가용 블록이 있는지 판단된다(S12).
상기 단계(S12)에서 가용 메모리 블록이 있을 경우, 선택된 가용 메모리 블록을 가용 리스트에서 추출하여 할당 고유 메모리 블록 리스트에 넣는다(S13). 다음으로, 가용 메모리 블록의 시작 물리 주소를 사용자 공간의 주소로 맵핑(mapping)하여 사용자 공간 시작 주소로 사용자 프로세스에게 넘긴다(S14). 이에 대하여, 사용자 프로세스는 저장 장치에 저장되어 있는 데이터를 고유 메모리 블록으로 옮기라는 명령을 내린다(S15). 다음으로, 직접 메모리 접근(DMA) 방식을 통해 저장 장치에서 고유 메모리 블록의 공간으로 데이터를 전송한다(S16). 그 다음, 전송될 데이터가 저장된 고유 메모리 블록을 네트워크 카드와 같은 네트워크 장치로 보내라고 명령을 내린다(S17). 상기 단계(S17)의 사용자 프로세스측 명령에 따라 직접 메모리 접근(DMA) 방식을 통해 고유 메모리 블록에서 네트워크 장치로 데이터가 전송된다(S18). 사용자 프로세스에서는 보내야 할 데이터가 더 있는지 판단하며(S19), 보내야 할 데이터가 더 있으면 상기 단계(S15)로 점프하여 그 이후의 과정을 반복적으로 수행한다. 만약, 상기 단계(S19)에서 보내야 할 데이터가 더 없는 경우에는, 할당 받은 고유 메모리 블록을 해제(S20)하여 사용자 프로세스를 종료시키며, 사용자 프로세스의 메모리 공간에 맵핑된 영역을 해제하고(S21), 고유 메모리 공간을 가용 고유 메모리 블록 리스트로 넣는다(S22).
상기 설명된 바와 같은 본 발명의 실시예에 따른 고유 메모리 접근 및 관리 방법을 지원하기 위해서는, 고유 메모리의 구조가 아래의 도 3 내지 도 6에 도시된 바와 구조를 충족하여야 한다.
도 3에는 본 발명의 실시예에 적용되는 고유 메모리의 메모리 정보 구조(pmem_info_t)가 도시되어 있다. 상기 도 3에 도시된 바와 같이, 고유 메모리는 전용 버스에 연결되어 있는 메모리 카드의 수만큼 구비되어 있고, 각 메모리 카드에 장착된 고유 메모리는 메모리 정보 구조(pmem_info_t)를 가진다. 상기 메모리 정보 구조(pmem_info_t)는 5개의 필드(field)를 가지며, 그 각각은 입출력 버스 구조체에 대한 포인터(bus_dev), 메모리의 물리적 시작 주소(addr), 메모리의 물리적 크기(len), 버스 환경 변수의 시작 주소(memmapped_ioaddr) 및 메모리 블록 관리 구조에 대한 포인터(p_pmem_block_management)로 이루어진다.
상기 도 3에 도시된 고유 메모리의 메모리 정보 구조는 고유 메모리의 하드웨어 정보를 바탕으로 한 관리를 가능하게 하기 위한 것이다. 즉, 상기 메모리 정보 구조는 고유 메모리의 초기화에서 고유 메모리를 사용하기 위해서 어떤 입출력 버스의 어느 위치에 있는지 찾는 것을 가능하게 한다.
한편, 도 2에 도시된 본 발명의 방법이 실행되는 도중에, 사용자 프로세스는 저장 장치에서 어느 고유 메모리로 읽어 오라는 명령을 내릴 경우가 있다. 만약, 하나 이상의 사용자 프로세스들이 같은 혹은 중첩된 고유 메모리 부분으로 읽어오면 읽어 들인 고유 메모리 영역이 틀리게 된다. 이러한 상황을 막기 위해서 고유 메모리 영역을 소정 크기의 블록 단위(고유 메모리를 나누는 관리 단위)로 나눈다. 여기서, 블록 크기는 스트리밍 서비스를 통해 전송할 컨텐츠인 멀티미디어 매체의 크기를 감안하여 2M, 1M, 512k, 256k 등의 바이트(byte) 크기로 결정될 수 있다. 상기 도 3의 메모리 블록 관리 구조는 이러한 정보를 포함한다.
도 4에는 고유 메모리의 블록 크기를 나타내는 필드(block_size), 고유 메모리의 블록 개수를 나타내는 필드(block_num), 할당된 블록 개수를 나타내는 필드(use_count), 미할당 리스트에 대한 포인터를 나타내는 필드(free_list) 및, 블록 개수만큼 연속으로 할당된 메모리 엔트리 구조(pmem_entry_t)에 대한 시작 주소를 나타내는 필드(p_pmem_entry_pool)를 포함한다.
상기 도 4에 도시된 메모리 엔트리 구조(pmem_entry_t)는 블록 단위로 나뉘어진 고유 메모리의 각 블록이 어느 사용자 프로세스에게 미할당되었는지 혹은 할당되었는지를 나타내기 위한 구조이다. 또한, 상기 메모리 엔트리 구조(pmem_entry_t)는 고유 메모리 블록이 할당된 경우에 어떤 사용자 프로세스에 의해 할당되었는지 나타낸다. 이러한 정보를 유지하기 위해서, 각각의 메모리 블록 관리 구조(pmem_block_management)의 미할당 리스트 필드(free_list)에는 아직 할당되지 않은 메모리 엔트리 구조(pmem_entry_t)가 연결되어 있다. 상기 메모리 엔트리 구조(pmem_entry_t)는 이중 나선 구조(doubly linked list) 구성을 위한 구성체를 나타내는 필드(list)와 블록이 소유하는 프로세스의 식별자를 나타내는 필드(pid)를 포함한다. 사용자 프로세스가 하나의 블록을 요청할 때, 그 블록에 대한 메모리 엔트리 구조(pmem_entry_t)는 미할당 리스트(free_list)에서 제거되어 메모리 할당 테이블(pmem_allocation_table)에 넣어진다.
고유 메모리 블록의 관리에 있어서, 어떤 사용자 프로세스가 자신이 할당한 모든 블록을 할당하거나, 실용 도중에 예기치 못한 실행으로 인해 종료될 때, 운영체제가 이 사용자 프로세스가 가진 모든 메모리 블록을 해제하여야 한다. 이러한 기능을 빠른 속도로 처리하기 위해서 할당된 고유 메모리 블록을 관리 및 유지하기 위한 메모리 할당 테이블(pmem_allocation_table)이 구비되어 있다. 상기 메모리 할당 테이블(pmem_allocation_table)은 프로세스의 식별자를 주소로 하는 해쉬 테이블 형태로 메모리 블록을 관리한다. 상기 메모리 할당 테이블(pmem_allocation_table)의 크기와 해쉬 주소 변환 함수는 PMEM_PID_HASH_SZ(4096>>2)와,PMEM_PID_HASH_FN(x)((((x)>>8)^(x))&(PMEM_PID_HASH_SZ-1))이다. 그러나, 어떤 해쉬 함수도 일대일 대응을 보장하지 못한다.
도 6에는 메모리 할당 테이블의 전체 해제를 위한 해쉬 테이블의 동작 예가 도시되어 있다. 도 6에서와 같이, 프로세스 식별자가 pid 100 및 pid 200인 두 개의 메모리 엔트리 구조(pmem_entry_t)가 해쉬 함수를 통하게 되어 동일한 주소로 매핑되면, 이를 충돌(collision)이라 부른다. PCI 메모리 블록 할당 관리를 위한 이러한 해쉬 충돌은 연결(chaining)을 통해 해결되었다. 즉, 도 6의 pid 200 할당 후 구성 예에 도시된 바와 같이, 동일한 주소에 두 개의 이상의 개체가 맵핑되면, 그 주소에 연속해서 리스트 형태로 메모리 엔트리 구조(pmem_entry_t)가 연결된다.
도 7에는 본 발명의 실시예에 따른 고유 메모리(20)를 통해 저장 장치(19)로부터 네트워크 카드(21)로 데이터가 전송되는 과정이 도시되어 있다. 사용자 프로세스가 고유 메모리 관리를 수행하면서 하나의 블록을 할당 받으면, 이 블록은 운영체제를 거치지 않고 사용자 프로세스의 메모리 공간으로 디바이스 드라이버의 'mmap' 형태로 맵핑된다. 따라서, 사용자 프로세스는 운영체제에서 복사 기능을 수행하지 않고도 고유 메모리에 접근할 수 있다. 사용자 프로세스는 저장 장치(19)에서 할당 받은 고유 메모리(20)에 중앙처리유닛의 간섭없이 직접 메모리 접근 방식으로 데이터를 저장한다. 전송하고자 하는 고유 메모리(20)의 데이터를 직접 메모리 접근 방식으로 네트워크를 통해 전송한다. 따라서, 최소한의 중앙처리유닛 점유율로도 사용자 프로세스가 고속의 스트리밍 서비스를 할 수 있다.
상기 설명된 바와 같이, 본 발명은 중앙처리유닛의 개입없이 저장 장치에서 직접 네트워크 카드로 데이터를 전송하기 위하여, 사용자 프로세스가 고유 메모리를 접근 및 관리하는 방법에 관한 것으로, 고성능 스트리밍 서비스를 위해서 종래에 고가의 저장장치와 수십 개의 중앙처리유닛으로 구현하였던 것보다 낮은 비용으로 더 효율적으로 처리할 수 있다. 또한, 확장의 측면에 있어서도, 사용자의 접속수가 증가하면 단지 저장 장치, 네트워크 카드, 고유 메모리를 추가하면 된다. 정해진 메모리 블록으로 인한 유연성에서도 다중 블록을 지원함으로써 다양한 매체에 대응할 수 있다. 사용자 프로세스의 고유 메모리 블록의 할당, 해제 그리고 사용자 프로세스가 가진 모든 블록의 해제에서도 순차적 접근 방식이 아닌, 직접 접근에 가까운 처리를 통해 사용자 요구에 보다 빠르게 대체할 수 있다.
이상으로 설명한 것은 본 발명에 따른 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법을 실시하기 위한 하나의 실시예에 불과한 것으로서, 본 발명은 상기한 실시예에 한정되지 않고, 이하의 특허청구의 범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 정신이 미친다고 할 것이다.
도 1은 본 발명의 실시예에 따른 고유 메모리 접근 및 관리 방법이 적용되는 하드웨어 환경을 개략적으로 나타낸 도면.
도 2는 본 발명의 실시예에 따른 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법의 처리 흐름을 나타낸 순서도.
도 3은 본 발명의 실시예에 적용되는 고유 메모리의 메모리 정보 구조(pmem_info_t)를 나타낸 도면.
도 4는 상기 도 3에 도시된 메모리 정보 구조에서 메모리 블록 관리 구조(pmem_block_management_t)를 상세하게 나타낸 도면.
도 5는 메모리 블록 관리 구조에서 미할당 리스트(free_list)와 메모리 엔트리(pmem_entry_t) 구조 간의 관계 및 메모리 할당 테이블(pmem_allocation_table)을 나타낸 도면.
도 6은 메모리 할당 테이블의 전체 해제를 위한 해쉬 테이블의 동작 예를 나타낸 도면.
도 7은 본 발명의 실시예에 따른 고유 메모리를 통해 저장장치로부터 네트워크 카드로 데이터가 전송되는 과정을 나타낸 도면.
<도면의 주요부분에 대한 부호의 설명>
11, 12 : 프로세서 13 : 시스템 버스
14 : 메모리 15 : 메모리 제어기 허브
16 : 입출력 버스 17 : 브릿지
18 : 전용 버스 19 : 저장 장치
20 : 고유 메모리 21 : 네트워크 카드

Claims (7)

  1. 입출력 버스를 통해 접근 가능한 전용 버스에 연결된 저장 장치, 고유 메모리 및 네트워크 카드를 구비하며 상호 간에 데이터가 전송되도록 구성된 시스템에서 스트리밍 서비스를 수행하기 위한 고유 메모리 접근 및 관리 방법에 있어서,
    (a) 사용자 프로세스에 의해 고유 메모리의 하나의 메모리 블록이 요청되면, 고유 메모리의 블록 리스트에서 가용 메모리 블록을 찾는 단계;
    (b) 상기 단계(a)에서 가용 메모리 블록이 있을 경우, 상기 가용 메모리 블록을 할당 고유 메모리 블록 리스트에 넣고, 상기 가용 메모리 블록의 시작 물리 주소를 사용자 공간의 주소로 맵핑하여 사용자 공간 시작 주소로서 사용자 프로세스에 전달하는 단계;
    (c) 사용자 프로세스에 의해 상기 저장 장치의 데이터를 고유 메모리로 옮기라는 명령이 내려지면, 직접 메모리 접근 방식을 통해 상기 저장 장치에서 상기 고유 메모리 블록의 공간으로 데이터를 전송하는 단계;
    (d) 사용자 프로세스에 의해 상기 고유 메모리 블록에 저장된 데이터를 상기 네트워크 카드로 옮기라는 명령이 내려지면, 직접 메모리 접근 방식을 통해 상기 고유 메모리 블록으로부터 상기 네트워크 카드로 데이터를 전송하는 단계;
    (e) 전송할 데이터가 더 있는 경우에는 상기 단계(c)로 점프하여 그 이후의 동작을 반복하며, 전송할 데이터가 더 이상 없는 경우에는 할당 받은 고유 메모리 블록 및 사용자 프로세스에 의해 메모리 공간에 맵핑된 영역을 해제하고, 상기 고유 메모리 블록을 사용가능한 고유 메모리 블록 리스트에 넣는 단계를 포함하는 것을 특징으로 하는
    스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법.
  2. 제1항에 있어서,
    상기 고유 메모리는 스트리밍 서비스를 통해 전송할 멀티미디어 매체의 크기를 감안한 소정 크기의 블록 단위로 나누어져 있는 것을 특징으로 하는
    스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 고유 메모리는 입출력 버스 구조체에 대한 포인터를 나타내는 필드, 메모리의 물리적 시작 주소를 나타내는 필드, 메모리의 물리적 크기를 나타내는 필드, 버스 환경 변수의 시작 주소를 나타내는 필드 및, 메모리 블록 관리 구조에 대한 포인터를 나타내는 필드를 포함하는 메모리 정보 구조를 갖는 것을 특징으로 하는
    스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법.
  4. 제3항에 있어서,
    상기 고유 메모리의 메모리 블록 관리 구조는 고유 메모리의 블록 크기를 나타내는 필드, 고유 메모리의 블록 개수를 나타내는 필드, 할당된 블록 개수를 나타내는 필드, 미할당 리스트에 대한 포인터를 나타내는 필드 및, 블록 개수만큼 연속으로 할당된 메모리 엔트리 구조에 대한 시작 주소를 나타내는 필드를 포함하는 것을 특징으로 하는
    스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법.
  5. 제4항에 있어서,
    상기 고유 메모리의 메모리 엔트리 구조는 이중 나선 구조의 구성을 위한 구성체를 나타내는 필드와 블록이 소유하는 프로세스의 식별자를 나타내는 필드를 포함하는 것을 특징으로 하는
    스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법.
  6. 제4항에 있어서,
    상기 고유 메모리의 메모리 블록 관리 구조의 미할당 리스트에 대한 포인터를 나타내는 필드에는 아직 할당되지 않은 메모리 엔트리 구조가 연결되는 것을 특징으로 하는
    스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법.
  7. 제1항 또는 제2항에 있어서,
    상기 고유 메모리에는 할당된 고유 메모리 블록을 관리 및 유지하기 위하여 프로세스의 식별자를 주소로 하는 해쉬 테이블 형태로 메모리 블록을 관리하는 메모리 할당 테이블이 구비되어 있는 것을 특징으로 하는
    스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법.
KR10-2003-0085222A 2003-11-27 2003-11-27 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법 KR100501212B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2003-0085222A KR100501212B1 (ko) 2003-11-27 2003-11-27 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0085222A KR100501212B1 (ko) 2003-11-27 2003-11-27 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법

Publications (2)

Publication Number Publication Date
KR20050051434A KR20050051434A (ko) 2005-06-01
KR100501212B1 true KR100501212B1 (ko) 2005-07-18

Family

ID=38666659

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0085222A KR100501212B1 (ko) 2003-11-27 2003-11-27 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법

Country Status (1)

Country Link
KR (1) KR100501212B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100847066B1 (ko) * 2006-09-29 2008-07-17 에스케이건설 주식회사 홈 멀티미디어 센터를 이용한 웹 스토리지 서비스 시스템및 서비스 방법

Also Published As

Publication number Publication date
KR20050051434A (ko) 2005-06-01

Similar Documents

Publication Publication Date Title
US7003586B1 (en) Arrangement for implementing kernel bypass for access by user mode consumer processes to a channel adapter based on virtual address mapping
EP1247168B1 (en) Memory shared between processing threads
US7478390B2 (en) Task queue management of virtual devices using a plurality of processors
EP1787207B1 (en) Dynamic resource allocation
US20070101033A1 (en) Priority control in resource allocation for low request rate, latency-sensitive units
US20050033874A1 (en) Direct memory access using memory descriptor list
US7496917B2 (en) Virtual devices using a pluarlity of processors
CN113051195A (zh) 存储器、gpu及电子设备
KR100543731B1 (ko) 다중 프로세서 시스템에서 마이크로프로세서 통신을 위한방법, 프로세싱 장치 및 데이터 프로세싱 시스템
US7472232B2 (en) Method and related apparatus for internal data accessing of computer system
KR20050076702A (ko) 멀티프로세서 시스템에서의 데이터 전송 방법과, 그방법을 수행하는 멀티프로세서 및 프로세서
KR100501212B1 (ko) 스트리밍 서비스를 위한 고유 메모리 접근 및 관리 방법
KR102063281B1 (ko) 파일에 접근하기 위한 방법과 장치, 및 저장 시스템
WO2000028418A1 (en) Scheduling resource requests in a computer system
JP2000339220A (ja) キャッシュブロック予約方法およびキャッシュブロック予約機能付きコンピュータシステム
US11675510B2 (en) Systems and methods for scalable shared memory among networked devices comprising IP addressable memory blocks
CN110096355B (zh) 一种共享资源分配方法、装置和设备
KR20170127666A (ko) 원격 메모리 제공 시스템 및 이의 페이지 폴트 처리 방법
CN114253704A (zh) 一种分配资源的方法及装置
US11281612B2 (en) Switch-based inter-device notational data movement system
JP2664827B2 (ja) 実時間情報転送制御方法
CN117873921A (zh) 一种基于远程直接内存访问的队列页表管理方法及装置
TW202340931A (zh) 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取
KR20000065846A (ko) 오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법
CN116418848A (zh) 网络节点的配置和访问请求的处理方法、装置

Legal Events

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

Payment date: 20130624

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150629

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee