KR100758272B1 - 데이터 무 복사 파일 이동 방법 - Google Patents

데이터 무 복사 파일 이동 방법 Download PDF

Info

Publication number
KR100758272B1
KR100758272B1 KR1020060037836A KR20060037836A KR100758272B1 KR 100758272 B1 KR100758272 B1 KR 100758272B1 KR 1020060037836 A KR1020060037836 A KR 1020060037836A KR 20060037836 A KR20060037836 A KR 20060037836A KR 100758272 B1 KR100758272 B1 KR 100758272B1
Authority
KR
South Korea
Prior art keywords
data
page
buffer
file
buffer page
Prior art date
Application number
KR1020060037836A
Other languages
English (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 KR1020060037836A priority Critical patent/KR100758272B1/ko
Priority to CNB2006101309821A priority patent/CN100520749C/zh
Application granted granted Critical
Publication of KR100758272B1 publication Critical patent/KR100758272B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
본 발명은 데이터 무 복사 파일 이동 방법에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은 중앙처리장치(CPU)에 의해 수행되는 사용자 영역과 커널 영역 간의 데이터 복사를 방지하기 위하여 커널 영역 내에 존재하는 버퍼 페이지를 공유하여 소스/목적 디바이스(예 : 디스크, 네트워크 카드) 간의 파일 이동을 수행함으로써, 사용자 영역 내로 데이터를 복사함에 따른 중앙처리장치의 부하 및 그로 인한 비용을 줄여 전체 성능을 향상시키기 위한, 데이터 무 복사 파일 이동 방법을 제공하는데 그 목적이 있음.
3. 발명의 해결방법의 요지
본 발명은, 데이터 무 복사 파일 이동 방법에 있어서, 사용자 영역의 응용 프로그램으로부터 파일 이동을 요청받는 요청 접수 단계; 소스 디바이스를 위한 버퍼 페이지를 커널 영역에 할당하는 할당 단계; 상기 소스 디바이스에 저장되어 있는 이동 대상 파일의 데이터를 직접 메모리 접근 방식에 따라 상기 버퍼 페이지로 복사하는 1차 복사 단계; 상기 버퍼 페이지가 목적 디바이스를 위해 할당되도록 하기 위하여, 상기 버퍼 페이지를 페이지 캐쉬로부터 제거하고 페이지 관리 정보에 대한 변경 과정을 수행하는 설정 변경 단계; 및 직접 메모리 접근 방식에 따라 상기 버퍼 페이지의 데이터를 상기 목적 디바이스로 복사하는 2차 복사 단계를 포함 함.
4. 발명의 중요한 용도
본 발명은 입/출력 시스템 등에 이용됨.
데이터 무 복사, 공유 버퍼 페이지, 직접 메모리 접근 방식, 중앙처리장치에 의한 복사 제거

Description

데이터 무 복사 파일 이동 방법{File movement method supporting data zero-copy technique}
도 1 은 종래 기술에 따른 사용자 영역과 커널 영역 간의 데이터 복사를 이용한 파일 이동 방식에 대한 일실시예 설명도,
도 2 는 본 발명에 따른 데이터 무 복사 파일 이동 방식에 대한 일실시예 설명도,
도 3 은 본 발명에 따른 데이터 무 복사 파일 이동 방식이 지원하는 가용한 이동 경로를 나타낸 일실시예 설명도,
도 4 는 본 발명에 따른 데이터 무 복사 파일 이동 방법에 대한 일실시예 흐름도이다.
* 도면의 주요 부분에 대한 부호의 설명 *
101, 201 : 소스 디바이스 100, 200 : 목적 디바이스
102, 202 : 커널 영역 103, 203 : 응용 프로그램
104 : 사용자 버퍼 105, 106 : 페이지
107, 108, 205, 206 : 소켓 버퍼 204 : 버퍼 페이지
본 발명은 데이터 무 복사 파일 이동 방법에 관한 것으로, 더욱 상세하게는 중앙처리장치(CPU)에 의해 수행되는 사용자 영역과 커널 영역 간의 데이터 복사를 방지하기 위하여 커널 영역 내에 존재하는 버퍼 페이지를 공유하여 소스/목적 디바이스(예 : 디스크, 네트워크 카드) 간의 파일 이동을 수행함으로써, 사용자 영역 내로 데이터를 복사함에 따른 중앙처리장치의 부하 및 그로 인한 비용을 줄여 전체 성능을 향상시키기 위한, 데이터 무 복사 파일 이동 방법에 관한 것이다.
멀티미디어 스트리밍(streaming) 서버와 같이 대용량의 파일 이동을 요청받는 시스템에서는 파일의 크기가 커짐에 따라 증가하는 데이터 처리 비용이 문제가 되고 있으며, 그로 인한 중앙처리장치(CPU)의 가용성이 중요 이슈로 등장하고 있다.
즉, 파일 이동으로 인한 데이터 처리량이 많아짐에 따라 사용자 영역과 커널 영역 간의 데이터 복사 및 시스템 콜 호출에 소요되는 비용이 증가하여 단위 연산 당 중앙처리장치의 사용률이 감소하는 문제가 발생하는데, 이를 해결하기 위한 여러 방안이 현재 제시되어 있는 상황이다.
보다 구체적으로 살펴보면, 일반적으로 파일을 이동하기 위해서는 반복적으로 시스템 콜을 호출하여야 하는데 매 호출시마다 2차례의 중앙처리장치에 의한 사용자/커널 영역 간 데이터 복사와 프로세스의 콘테스트 스위칭(context switching) 이 발생한다. 이는 중앙처리장치 자원의 비용을 증가시키는 연산이면서 다수의 대용량 데이터의 이동 요청을 처리하는 시스템 입장에서는 부하를 가중시키는 상황이다.
이를 해결하기 위해, 데이터 무 복사 방식에 의한 파일 이동 기술이 하드웨어적인 방식과 소프트웨어적인 방식으로 나뉘어 개발되어 왔다. 하드웨어적인 방식은 주로 네트워크 카드 분야에서 많은 연구가 이루어졌는데, 네트워크 카드에 존재하는 메모리를 사용자 영역에 존재하는 일정 영역의 주소 공간과 연결함으로써, 네트워크로 전송되는 데이터가 커널 영역 내에 복사되지 않고 사용자 영역으로부터 네트워크 디바이스로 바로 복사되어 전송되도록 하는 방식이다. 이때, 상기 데이터 복사는 중앙처리장치가 아닌, 직접 메모리 접근(DMA) 방식으로 복사된다.
또한, 소프트웨어적인 방식은 주로 사용자 영역의 일정 주소 공간과 커널 영역에 할당된 일정 메모리 영역을 서로 연결함으로써, 지정된 메모리 영역 내의 데이터를 사용자 영역 또는 커널 영역에서 복사하지 않고 바로 접근 가능하도록 하는 방식이다.
상기의 방식들은 모두 지정된 메모리 영역 사이의 재 매핑(re-mapping)을 통해 수행되는 방식들로서, 이러한 방식들을 사용하기 위해서는 지정된 메모리 영역에 대한 생성 과정, 요청을 처리하기 위한 메모리 할당 및 해제와 같은 메모리 영역에서의 추가적인 관리가 요구되는 문제점이 있었다.
한편, 종래 기술에 따른 사용자 영역과 커널 영역 간의 파일 이동을 위한 수행 방법에 대하여 살펴보면 다음과 같다.
도 1 은 종래 기술에 따른 사용자 영역과 커널 영역 간의 데이터 복사를 이용한 파일 이동 방식에 대한 일실시예 설명도이다.
커널이 일반적인 파일 이동 연산을 수행하는 경우, 사용자 영역에 위치한 응용 프로그램(103)이 파일 읽기를 요청하고 소스 디바이스(101)에 저장된 데이터를 읽기 위한 페이지(105)를 커널로부터 할당받는다. 이때, 소스 디바이스(101)가 네트워크 카드인 경우에는 소켓 버퍼(107)가 할당된다. 그리고 직접 메모리 접근(DMA) 방식에 의해 소스 디바이스(101)로부터 상기 할당된 페이지(105) 혹은 소켓 버퍼(107)로 데이터가 1차 복사된 후, 중앙처리장치(CPU)에 의해 상기 페이지(105) 혹은 소켓 버퍼(107) 내의 데이터가 사용자 버퍼(104)로 2차 복사된다(110, 114).
이후, 사용자 영역에서 상기 사용자 버퍼(104)에 저장된 데이터에 대하여 목적 디바이스(100)로의 이동을 요청하고, 이를 위한 페이지(106) 혹은 소켓 버퍼(108)를 커널로부터 할당받는다. 그리고 중앙처리장치에 의해 사용자 버퍼(104)에 저장된 데이터가 상기 할당받은 페이지(106) 혹은 소켓 버퍼(108)로 1차 복사된 후, 직접 메모리 접근 방식에 의해 목적 디바이스(100)로 2차 복사된다(112, 116).
상기 복사 과정에서 이동 대상 파일에 포함된 모든 데이터는 사용자 영역에서 할당된 메모리 영역 크기로 반복 이동되는데, 커널 영역으로부터 사용자 영역으로 혹은 그 반대의 경우로 파일이 이동될 때마다 해당 프로세스의 콘테스트 스위칭(context switching)이 발생한다. 그리고 상기 사용자 영역에서의 요청이란 시스템 콜 호출을 의미하는 것으로, 일정 단위의 파일 내 데이터가 디바이스(디스크, 네트워크 카드 등) 간에 이동되기 위해서는 두 번의 중앙처리장치에 의한 복사와, 두 번의 시스템 콜 호출이 요구된다.
이번에는, 파일 이동과 관련한 선행 기술들에 대하여 구체적인 예를 들어 설명하기로 한다.
제1 선행기술로서 대한민국 특허 "오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법(공개번호 10-2000-0065846, 2000.11.15 공개)"에 대하여 살펴보면, 특히 솔라리스 운영 체제에서 커널 영역과 사용자 영역 간의 데이터 블록 전송시 사용자 영역에 있는 버퍼를 복사하는 것이 아니라 커널에서 가상의 메모리를 이용하므로, 데이터 블록 전송시 시간적인 면에서의 오버헤드와 메모리의 낭비를 줄일 수 있도록 하는 기술을 개시하고 있다. 즉, 상기 제1 선행기술은 사용자 영역과 커널 영역에 공유 기억 영역을 초기화하고 메모리 매핑에 의한 공유를 수행하여(이때, 영역 할당 및 해제 등의 관리를 추가 수행해야 함) 데이터 블록 전송시의 시간, 메모리 자원을 절약할 수 있도록 하는 효과가 있다.
그런데, 상기 제1 선행기술은 일반적인 데이터 블록 전송시의 비용 감소 및 성능 향상의 효과를 제공하나, 파일 이동에 특화된 기술은 아니다.
또한, 제2 선행기술로서 대한민국 특허 "제로-카피 전송 기능을 구현한 네트워크 카드와 서버 및 그 전송 방법(공개번호 10-2005-0065133, 2005.06.29 공개)"에 대하여 살펴보면, 메모리 간 복사 없이 PCI(Peripheral Component Interconnect) 메모리 및 기존의 범용 BSD(Berkeley Software Distribution) 소켓 API(Application Programmable Interface)를 이용하여 제로-카피 전송을 지원하는 기술로서 먼저 디스크에 저장된 데이터를 네트워크로 전송하기 위하여 사용자 프로그램이 PCI 메모리의 일정 영역을 사용자 메모리 영역으로 매핑하여 해당 PCI 메모리 영역에 대한 가상 주소를 얻는다. 이후, 사용자 프로그램이 PCI 메모리 영역으로 디스크의 블록 읽기를 요청하면, 디스크 컨트롤러가 해당 디스크 블록을 읽어 직접 메모리 접근 방식으로 해당 PCI 메모리 영역에 데이터를 저장한다. 사용자 프로그램은 읽기가 완료되면 해당 PCI 메모리 영역에 대해 네트워크로 전송을 요청하고, 네트워크 처리 담당 커널 내 전송제어프로토콜/인터넷프로토콜(TCP/IP) 스택에서는 사용자 프로그램이 전달한 주소가 PCI 메모리 영역임을 확인함에 따라 헤더만 작성하고 해당 PCI 메모리 영역에 대한 주소를 TOE(TCP/IP Offload Engine) 네트워크 컨트롤러로 전달한다. 상기 TOE 네트워크 컨트롤러는 헤더를 로컬 메모리 영역으로부터, 페이로드(payload)를 해당 PCI 메모리 영역으로부터 각각 직접 메모리 접근 방식으로 읽어와 체크섬(checksum)을 수행한 후 네트워크로 전송한다.
그런데, 상기 제2 선행기술은 데이터를 중간 복사 과정 없이 제로-카피로 네트워크로 전송함으로써 호스트 시스템의 성능 저하를 방지하면서 데이터 전송 속도를 향상시킬 수 있는 효과가 있는 반면에, 네트워크가 아닌 일반적인 시스템 내 디스크 간의 적용에는 용이하지 않은 문제점이 있었다.
또한, 제3 선행기술로서 대한민국 특허 "제로-카피 메시지 패싱 방법(공개번호 10-2000-0038076, 2000.07.05 공개)"에 대하여 살펴보면, 호스트 간의 메시지 패싱시 발생하는 메모리 복사 오버헤드를 제거하기 위해 메시지 패싱을 위한 프로세스, 데몬 및 네트워크 카드가 메시지 패싱을 위해 이용되는 메모리를 모두 공유 하여 네트워크를 통해 연결된 병렬 컴퓨팅 환경에서 메모리 복사로 인한 성능 저하를 최소화하는 방법을 개시하고 있다.
그런데, 상기 제3 선행기술은 리모트 프로세스와 메시지 교환시 발생하는 메모리 복사 오버헤드를 제거하여 기존 메시지 패싱 시스템의 성능을 향상시킬 수 있도록 하나, 시스템 내의 사용자 영역과 커널 영역 간의 데이터 복사 과정을 제거할 수는 없는 문제점이 있었다.
본 발명은 상기와 같은 문제점을 해결하기 위하여 제안된 것으로, 중앙처리장치(CPU)에 의해 수행되는 사용자 영역과 커널 영역 간의 데이터 복사를 방지하기 위하여 커널 영역 내에 존재하는 버퍼 페이지를 공유하여 소스/목적 디바이스(예 : 디스크, 네트워크 카드) 간의 파일 이동을 수행함으로써, 사용자 영역 내로 데이터를 복사함에 따른 중앙처리장치의 부하 및 그로 인한 비용을 줄여 전체 성능을 향상시키기 위한, 데이터 무 복사 파일 이동 방법을 제공하는데 그 목적이 있다.
본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 본 발명의 실시예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
상기 목적을 달성하기 위한 본 발명의 방법은, 데이터 무 복사 파일 이동 방법에 있어서, 사용자 영역의 응용 프로그램으로부터 파일 이동을 요청받는 요청 접수 단계; 소스 디바이스를 위한 버퍼 페이지를 커널 영역에 할당하는 할당 단계; 상기 소스 디바이스에 저장되어 있는 이동 대상 파일의 데이터를 직접 메모리 접근 방식에 따라 상기 버퍼 페이지로 복사하는 1차 복사 단계; 상기 버퍼 페이지가 목적 디바이스를 위해 할당되도록 하기 위하여, 상기 버퍼 페이지를 페이지 캐쉬로부터 제거하고 페이지 관리 정보에 대한 변경 과정을 수행하는 설정 변경 단계; 및 직접 메모리 접근 방식에 따라 상기 버퍼 페이지의 데이터를 상기 목적 디바이스로 복사하는 2차 복사 단계를 포함한다.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명하기로 한다.
본 발명은, 사용자 영역과 커널 영역 간의 중앙처리장치에 의한 데이터 복사 과정을 제거하고 시스템 콜 호출 횟수를 줄임으로써, 중앙처리장치의 가용성을 높이고 전체 성능을 향상시킬 수 있도록 한다. 이때, 직접 메모리 접근(DMA) 방식에 의한 복사 과정은 제거 대상에서 제외된다.
그리고 본 발명에 따른 데이터 무 복사 파일 이동 방법은 커널 내의 구성요소로서 구현되어 사용자 영역에 대해서는 인터페이스를 제공할 수 있다.
도 2 는 본 발명에 따른 데이터 무 복사 파일 이동 방식에 대한 일실시예 설명도이다.
도 2에 도시된 바와 같이, 사용자 영역에 위치한 응용 프로그램이 디바이스(디스크, 네트워크 카드 등) 간의 파일 이동을 요청한다. 그에 따라, 소스 디바이스(201)인 디스크 혹은 네트워크 카드로부터 데이터를 읽어오기 위하여 커널이 소스 디바이스용의 버퍼 페이지(204)를 커널 영역 내에 할당한다. 이때, 상기 할당된 버퍼 페이지(204)는 커널의 페이지 캐쉬에 추가된다. 그리고 소스 디바이스(201)로부터 페이지 크기의 데이터가 직접 메모리 접근 방식에 의해 상기 할당된 버퍼 페이지(204)로 복사된다. 여기서, 소스 디바이스(201)가 네트워크 카드인 경우에는 소켓 버퍼(205)로 직접 메모리 접근 방식에 의한 복사 과정이 먼저 수행된 후(207), 소켓 버퍼(205)로부터 상기 할당된 버퍼 페이지(204)로 중앙처리장치에 의한 복사 과정이 한 번 수행된다.
상기 할당된 버퍼 페이지(204)는 목적 디바이스(200)로 데이터를 보내기 위한 용도로 사용되기 위하여(즉, 상기 소스 디바이스를 위하여 할당된 페이지를 목적 디바이스를 위한 데이터 이동 용도로 재사용하기 위하여), 상기 페이지 캐쉬로부터 제거되고 그에 따른 페이지 관리 정보에 대한 변경 과정이 수행된 후 목적 디바이스용 버퍼 페이지(204)로서 페이지 캐쉬에 추가된다. 상기 설정 변경 과정은 커널이 수행한다. 그리고 상기 버퍼 페이지(204)의 데이터가 직접 메모리 접근 방 식에 의해 목적 디바이스(200)로 복사된다. 이때, 목적 디바이스(200)가 네트워크 카드인 경우에는 상기 버퍼 페이지(204)로부터 소켓 버퍼(206)로 중앙처리장치에 의한 복사 과정이 한 번 수행된 후, 소켓 버퍼(206)로부터 목적 디바이스(200)로 직접 메모리 접근 방식에 의한 복사 과정이 수행된다.
상기의 과정은 이동 대상 파일 내의 모든 데이터가 이동될 때까지 반복 수행된다. 여기서, 상기 소스 디바이스용 버퍼 페이지와 목적 디바이스용 버퍼 페이지는 동일한 버퍼 페이지로서, 소스/목적 디바이스에 의해 데이터 입/출력시 공유된다.
상기와 같은 구성요소 내에서의 동작 흐름에 관해서는 도 4를 참조하여 후술하기로 한다.
도 3 은 본 발명에 따른 데이터 무 복사 파일 이동 방식이 지원하는 가용한 이동 경로를 나타낸 일실시예 설명도이다.
여기서는, 본 발명에 따른 데이터 무 복사(zero-copy) 파일 이동 방법이 적용될 수 있는 파일 이동의 경로(310, 311, 312, 313)를 살펴보기로 한다.
데이터 무 복사 파일 이동이 적용될 수 있는 경우는 이동 대상 파일이 로컬 시스템의 디스크(303)에 저장되어 있는 경우와 네트워크상의 다른 시스템(304)에 위치한 경우를 포함한다. 이동 대상 파일이 로컬 시스템의 디스크(303)에 저장되어 있는 경우, 동일한 디스크 혹은 다른 디스크로 이동(310)시키거나 혹은 네트워크상의 다른 시스템으로 전송(311)하기 위하여 네트워크 카드로 이동시킬 수 있다.
또한, 이동 대상 파일이 네트워크상의 다른 시스템(304)에 위치한 경우 네트 워크 카드를 통해 수신되는 파일을 시스템 내의 디스크로 이동(312)시키거나 네트워크상의 다른 시스템으로 재송신(313)하는 경로가 가능하다.
즉, 본 발명은 시스템 내에 존재하는 디스크와 네트워크 카드 간의 자유로운 파일 이동을 제공할 수 있다. 여기서, 소스 디바이스(303, 304)와 목적 디바이스(301, 302)가 서로 동일할 수도 있다.
상기와 같이 데이터가 사용자 영역으로 복사되지 않고도 네트워크와 디스크 간의 자유로운 파일 이동이 가능하도록 하기 위해서는, 디스크로부터 데이터를 읽어오기 위한 읽기 모듈(306)과 디스크로 데이터를 쓰기 위한 쓰기 모듈(308) 그리고 네트워크로부터 데이터를 수신하기 위한 수신 모듈(307)과 네트워크로 데이터를 송신하기 위한 송신 모듈(309) 각각의 데이터 처리 과정이 수반되어야 한다.
이때, 상기 네 가지 구성요소(306 내지 309) 간의 기능 연결을 위해서, 상호 간에 디바이스를 식별할 수 있도록 하는 기술자(descriptor)를 이용하고 소스 디바이스로부터 목적 디바이스로 데이터를 가져오기 위해 할당된 버퍼 페이지를 공유한다.
즉, 소스 디바이스용으로 할당된 버퍼 페이지는 소스 디바이스로부터 파일의 일부 데이터를 전달받은 후, 중앙처리장치에 의한 복사 과정 없이(커널 영역으로부터 사용자 영역으로의 복사 과정 없이) 원하는 목적 디바이스로 상기 전달받은 데이터를 넘겨주기 위해 해당 출력 처리 모듈로 전달한다. 이때, 사용자 영역과 커널 영역 간의 중앙처리장치에 의한 데이터 복사 과정이 존재하지 않으므로, 사용자 영역에서의 시스템 콜 호출 과정 역시 불필요하다.
여기서, 버퍼 페이지(204)를 공유하기 위한 설정 변경 과정(커널에 의해 수행됨)을 상세히 살펴보면 다음과 같다.
버퍼 페이지(204)의 공유를 위한 설정 변경 과정은 커널 영역의 페이지 캐쉬(page cache)에 해당 페이지를 추가하고 삭제하는 과정과, 페이지가 가지는 각 이동 대상 파일에 대한 정보를 변경하는 과정을 포함한다.
디스크/네트워크로부터 데이터를 읽어오기 위한 읽기 모듈(306)과 수신 모듈(307)은 페이지 할당시, 기존 페이지와 동일한 방식으로 페이지 캐쉬에 새로운 페이지를 할당(추가)한다. 이때, 수신 모듈(307)의 경우에는 네트워크로 데이터를 전송하기 위한 송신 모듈(309)을 호출하여 공유된 버퍼 페이지(204)의 데이터를 전송한 후에 상기 페이지 캐쉬에 추가된 페이지를 해제하는 과정을 함께 수행한다. 이는, 네트워크를 통한 데이터 송/수신 과정에서는 페이지 캐싱이 불필요하기 때문이다.
한편, 디스크로 데이터를 쓰기 위한 쓰기 모듈(308)은 읽기 모듈(306) 또는 수신 모듈(307)로부터 넘겨받은 페이지를 사용하기 이전에 기존 페이지 캐쉬에 추가된 해당 페이지(버퍼 페이지임)를 해제한다. 이는, 동일한 페이지가 서로 다른 디바이스에 의해 페이지 캐쉬로서 사용됨에 따라 발생할 수 있는 시스템상의 문제를 방지하기 위함이다. 그러므로 페이지 캐쉬에 추가된 기존의 페이지를 해제한 후, 목적 디바이스를 위한 파일 정보로 해당 페이지의 데이터를 변경하는 과정을 포함한다. 따라서 소스 디바이스와 목적 디바이스가 모두 디스크인 경우에는 목적 디바이스를 위한 페이지만이 페이지 캐쉬에 존재하게 된다.
도 4 는 본 발명에 따른 데이터 무 복사 파일 이동 방법에 대한 일실시예 흐름도이다.
먼저, 응용 프로그램으로부터 디바이스 간의 파일 이동을 요청받음에 따라 커널이 커널 영역 내에 소스 디바이스용의 버퍼 페이지를 할당한다(401). 이때, 상기 할당된 버퍼 페이지(204)는 커널 영역의 페이지 캐쉬에 추가된다.
그리고 커널이 상기 할당된 버퍼 페이지에 소스 디바이스에 저장된 데이터를 직접 메모리 접근 방식에 따라 복사한다(402). 이때, 상기 소스 디바이스가 네트워크 카드인 경우에는 이동 대상 파일의 데이터가 소켓 버퍼로 직접 메모리 접근 방식에 의해 1차 복사된 후에, 중앙처리장치에 의해 상기 소켓 버퍼로부터 상기 버퍼 페이지로 2차 복사된다.
이후, 커널이 상기 버퍼 페이지에 사용 가능한 공간이 없거나 혹은 이동 대상 파일의 모든 데이터가 상기 버퍼 페이지로 복사되었는지의 여부를 판단한다(403). 상기 판단 결과(403), 상기 버퍼 페이지에 사용 가능한 공간이 없거나 혹은 모든 데이터가 복사되었을 경우 다음 과정으로 진행한다. 반면에, 상기 판단 결과(403), 상기 버퍼 페이지에 사용 가능한 공간이 남았거나 데이터 복사가 완료되지 않았을 경우 상기 버퍼 페이지의 오프셋을 조절한 후(404), 상기 소스 디바이스로부터 데이터를 복사하는 과정(402)으로 진행한다.
이후, 커널이 상기 버퍼 페이지를 상기 커널 영역의 페이지 캐쉬로부터 제거하고, 페이지 관리 정보에 대한 변경 과정을 수행한다(405). 이는, 상기 버퍼 페이지를 공유함에 따른 시스템상의 문제 발생을 방지하기 위한 것이다. 상기 설정 변 경 과정 수행 결과로 상기 버퍼 페이지는 변경된 정보를 유지하면서 목적 디바이스용 버퍼 페이지로서 상기 페이지 캐쉬에 추가된다.
이후, 커널이 상기 버퍼 페이지의 데이터를 목적 디바이스로 직접 메모리 접근 방식에 따라 복사한다(406). 이때, 목적 디바이스가 네트워크 카드인 경우에는 상기 데이터가 중앙처리장치에 의해 소켓 버퍼로 1차 복사된 후, 직접 메모리 접근 방식에 의해 상기 소켓 버퍼로부터 목적 디바이스로 2차 복사된다.
이후, 커널이 이동 대상 파일의 모든 데이터가 소스 디바이스로부터 목적 디바이스로 복사되었는지의 여부를 판단하여(407) 복사가 완료된 경우에는 종료하고(사용자 영역으로 결과 회신), 복사가 완료되지 못하였을 경우에는 총 처리대상 데이터의 사이즈를 변경한 후(408) 소스 디바이스용 버퍼 페이지를 할당하는 과정(401)으로 진행한다.
상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다. 이러한 과정은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있으므로 더 이상 상세히 설명하지 않기로 한다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
상기와 같은 본 발명은, 사용자 영역과 커널 영역 사이의 데이터 복사 과정을 제거하고 시스템 콜 호출 및 그로 인한 프로세스의 콘테스트 스위칭의 횟수를 감소시킴으로써, 중앙처리장치(CPU)의 가용성을 높이고 전체 성능을 향상시킬 수 있는 효과가 있다.
또한, 본 발명은 별도의 지정된 공유 메모리 영역을 생성, 관리, 사용하는 것이 아니라, 커널 영역 내에 공유 버퍼 페이지를 할당하여 사용함으로써, 추가적인 비용 부담이 적은 효과가 있다.

Claims (5)

  1. 데이터 무 복사 파일 이동 방법에 있어서,
    사용자 영역의 응용 프로그램으로부터 파일 이동을 요청받는 요청 접수 단계;
    소스 디바이스를 위한 버퍼 페이지를 커널 영역에 할당하는 할당 단계;
    상기 소스 디바이스에 저장되어 있는 이동 대상 파일의 데이터를 직접 메모리 접근 방식에 따라 상기 버퍼 페이지로 복사하는 1차 복사 단계;
    상기 버퍼 페이지가 목적 디바이스를 위해 할당되도록 하기 위하여, 상기 버퍼 페이지를 페이지 캐쉬로부터 제거하고 페이지 관리 정보에 대한 변경 과정을 수행하는 설정 변경 단계; 및
    직접 메모리 접근 방식에 따라 상기 버퍼 페이지의 데이터를 상기 목적 디바이스로 복사하는 2차 복사 단계
    를 포함하는 데이터 무 복사 파일 이동 방법.
  2. 제 1 항에 있어서,
    상기 설정 변경 단계는,
    커널의 상기 페이지 캐쉬로부터 상기 버퍼 페이지를 삭제한 후 새로운 버퍼 페이지를 추가하고, 상기 목적 디바이스를 위한 파일정보로 상기 추가한 버퍼 페이 지의 데이터를 변경하는 것을 특징으로 하는 데이터 무 복사 파일 이동 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 소스 디바이스 및 상기 목적 디바이스는,
    로컬 시스템의 디스크 또는 네트워크 카드 중 어느 하나인 것을 특징으로 하는 데이터 무 복사 파일 이동 방법.
  4. 제 3 항에 있어서,
    상기 1차 복사 단계는,
    상기 소스 디바이스가 상기 네트워크 카드임에 따라, 직접 메모리 접근 방식에 의해 상기 네트워크 카드에 저장되어 있는 이동 대상 파일의 데이터를 소켓 버퍼로 복사한 후, 중앙처리장치에 의해 상기 소켓 버퍼에 저장되어 있는 데이터를 상기 버퍼 페이지로 복사하는 것을 특징으로 하는 데이터 무 복사 파일 이동 방법.
  5. 제 3 항에 있어서,
    상기 2차 복사 단계는,
    상기 목적 디바이스가 상기 네트워크 카드임에 따라, 중앙처리장치에 의해 상기 버퍼 페이지에 저장되어 있는 이동 대상 파일의 데이터를 소켓 버퍼로 복사한 후, 직접 메모리 접근 방식에 의해 상기 소켓 버퍼에 저장되어 있는 데이터를 상기 네트워크 카드로 복사하는 것을 특징으로 하는 데이터 무 복사 파일 이동 방법.
KR1020060037836A 2006-04-26 2006-04-26 데이터 무 복사 파일 이동 방법 KR100758272B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020060037836A KR100758272B1 (ko) 2006-04-26 2006-04-26 데이터 무 복사 파일 이동 방법
CNB2006101309821A CN100520749C (zh) 2006-04-26 2006-12-28 数据零拷贝文件的移动方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060037836A KR100758272B1 (ko) 2006-04-26 2006-04-26 데이터 무 복사 파일 이동 방법

Publications (1)

Publication Number Publication Date
KR100758272B1 true KR100758272B1 (ko) 2007-09-12

Family

ID=38737631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060037836A KR100758272B1 (ko) 2006-04-26 2006-04-26 데이터 무 복사 파일 이동 방법

Country Status (2)

Country Link
KR (1) KR100758272B1 (ko)
CN (1) CN100520749C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112749112A (zh) * 2020-12-31 2021-05-04 无锡众星微***技术有限公司 一种硬件流水结构

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101150488B (zh) * 2007-11-15 2012-01-25 曙光信息产业(北京)有限公司 一种零拷贝网络报文接收方法
CN101304373B (zh) * 2008-06-25 2011-03-02 中兴通讯股份有限公司 一种实现局域网内高效传输大块数据的方法及***
US20110258337A1 (en) * 2008-08-04 2011-10-20 Zte Corporation Method and system for enabling zero-copy transmission of streaming media data
CN103136115B (zh) * 2011-11-23 2015-08-19 英业达集团(天津)电子技术有限公司 请求访问零拷贝高速缓存的方法及***
CN103257936B (zh) * 2012-02-17 2016-03-02 联想(北京)有限公司 内存映射方法和内存映射模块
CN103412950B (zh) * 2013-08-28 2016-06-22 浙江大学 加速空间大数据文件读写速度的方法
CN106598752B (zh) * 2016-11-15 2020-05-12 北京大学深圳研究生院 远程零拷贝方法
CN112114748B (zh) * 2020-09-02 2022-10-25 厦门安胜网络科技有限公司 一种用于冷热数据的分离方法和***
CN113746897A (zh) * 2021-07-28 2021-12-03 浪潮电子信息产业股份有限公司 一种文件传输方法、装置、设备及存储介质
CN114610660A (zh) * 2022-03-01 2022-06-10 Oppo广东移动通信有限公司 控制接口数据的方法、装置及***
CN115934323B (zh) * 2022-12-02 2024-01-19 北京首都在线科技股份有限公司 云端计算资源的调用方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000038076A (ko) 1998-12-03 2000-07-05 정선종 제로-카피 메시지 패싱 방법
KR20000065846A (ko) 1999-04-09 2000-11-15 구자홍 오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법
KR20050065133A (ko) 2003-12-24 2005-06-29 한국전자통신연구원 제로카피(zero-copy) 전송 기능을 구비한네트워크 카드와 서버 및 그 전송 방법
KR20070031529A (ko) 2005-09-15 2007-03-20 삼성전자주식회사 커널레벨 함수를 이용한 대용량 데이터 전송방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000038076A (ko) 1998-12-03 2000-07-05 정선종 제로-카피 메시지 패싱 방법
KR20000065846A (ko) 1999-04-09 2000-11-15 구자홍 오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법
KR20050065133A (ko) 2003-12-24 2005-06-29 한국전자통신연구원 제로카피(zero-copy) 전송 기능을 구비한네트워크 카드와 서버 및 그 전송 방법
KR20070031529A (ko) 2005-09-15 2007-03-20 삼성전자주식회사 커널레벨 함수를 이용한 대용량 데이터 전송방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112749112A (zh) * 2020-12-31 2021-05-04 无锡众星微***技术有限公司 一种硬件流水结构
CN112749112B (zh) * 2020-12-31 2021-12-24 无锡众星微***技术有限公司 一种硬件流水结构

Also Published As

Publication number Publication date
CN100520749C (zh) 2009-07-29
CN101063963A (zh) 2007-10-31

Similar Documents

Publication Publication Date Title
KR100758272B1 (ko) 데이터 무 복사 파일 이동 방법
US10120586B1 (en) Memory transaction with reduced latency
CN111221758B (zh) 处理远程直接内存访问请求的方法和计算机设备
US7707337B2 (en) Object-based storage device with low process load and control method thereof
Tezuka et al. Pin-down cache: A virtual memory management technique for zero-copy communication
EP0889623B1 (en) System and method for efficient remote disk I/O
US7275123B2 (en) Method and apparatus for providing peer-to-peer data transfer within a computing environment
CN112422615A (zh) 一种通信的方法及装置
US8788726B2 (en) Data transmission system, storage medium and data transmission program
EP1528478A1 (en) Generalized addressing scheme for remote direct memory access enabled devices
US9015380B2 (en) Exchanging message data in a distributed computer system
US20160352831A1 (en) Methods for sharing nvm ssd across a cluster group and devices thereof
CN114756388A (zh) 一种基于rdma的集群***节点间按需共享内存的方法
EP3465450B1 (en) Improving throughput in openfabrics environments
JP2017501492A (ja) インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法
WO2024082944A1 (zh) 一种多处理器数据交互方法、装置、设备及存储介质
CN102291298A (zh) 一种高效的面向长消息的计算机网络通信方法
KR100936918B1 (ko) 정적 파일 전송 시스템콜 처리 toe 장치 및 방법
CN113296691A (zh) 数据处理***、方法、装置以及电子设备
KR100653178B1 (ko) 전송제어프로토콜 오프로드 엔진 기반의 전송제어프로토콜전송정보 생성 및 관리 장치 및 그 방법
KR100449806B1 (ko) 네트워크를 통해 스트리밍 데이터를 고속으로 송수신하기위한 네트워크-스토리지 연결 장치
KR100576721B1 (ko) 제로카피(zero-copy) 전송 기능을 구비한네트워크 카드와 서버 및 그 전송 방법
US10289550B1 (en) Method and system for dynamic write-back cache sizing in solid state memory storage
KR20150048028A (ko) 데이터 전송 관리 방법
KR20000065846A (ko) 오퍼레이팅 시스템에서 커널과 사용자 사이의 제로-카피 방법

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: 20120831

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130829

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140827

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150827

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160826

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee