KR20100100163A - 데이터 전달 시스템, 장치 및 방법 - Google Patents

데이터 전달 시스템, 장치 및 방법 Download PDF

Info

Publication number
KR20100100163A
KR20100100163A KR1020090018887A KR20090018887A KR20100100163A KR 20100100163 A KR20100100163 A KR 20100100163A KR 1020090018887 A KR1020090018887 A KR 1020090018887A KR 20090018887 A KR20090018887 A KR 20090018887A KR 20100100163 A KR20100100163 A KR 20100100163A
Authority
KR
South Korea
Prior art keywords
input
output
data
user process
kernel
Prior art date
Application number
KR1020090018887A
Other languages
English (en)
Other versions
KR101203157B1 (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 KR1020090018887A priority Critical patent/KR101203157B1/ko
Priority to US12/509,372 priority patent/US8244919B2/en
Publication of KR20100100163A publication Critical patent/KR20100100163A/ko
Application granted granted Critical
Publication of KR101203157B1 publication Critical patent/KR101203157B1/ko

Links

Images

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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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
    • 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/22Microcontrol or microprogram arrangements
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 데이터 전달 시스템, 장치 및 방법에 대하여 개시한다. 본 발명의 일면에 따른 데이터 전달 시스템은, 사용자 프로세스들이 실행되는 사용자 프로세스 영역; 커널 쓰레드를 포함하는 커널 영역; 및 상기 각 사용자 프로세스의 입출력 요청에 따라 입출력을 수행하는 하드웨어 영역을 포함하되, 상기 하드웨어 영역에 입력 요청에 따른 입력 데이터가 수신되면, 상기 입력 요청한 사용자 프로세스가 실행 상태인지를 검사하여 실행 상태일 때, 상기 커널 쓰레드가 상기 커널 영역으로부터 상기 사용자 프로세스 영역으로 상기 입력 데이터를 복사하도록 하는 것을 특징으로 한다.
Figure P1020090018887
사용자 프로세스, 데이터 전달, 커널, 프로세스 스케줄러, 비동기 입출력

Description

데이터 전달 시스템, 장치 및 방법{Data Transfer System, Apparatus and Method}
본 발명은 사용자 프로세스와 커널 간의 데이터 전달 방법에 관한 것으로서, 구체적으로는 타 사용자 프로세스의 실행을 방해하지 않으면서 일 사용자 프로세스의 입출력 데이터를 복사할 수 있는 데이터 전달 시스템, 장치 및 방법에 관한 것이다.
본 발명은 지식경제부 및 정보통신연구진흥원의 IT원천기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2008-F-026-01, 과제명: 공개 SW 플랫폼 고도화를 위한 리눅스 커널 기술개발].
일반적으로, 컴퓨터의 운영체제에서 입출력되는 데이터는 커널 영역(Kernel Space)과 사용자 프로세스 영역(User Process Space)의 경계선을 넘어 전달된다.
이러한 데이터 전달 방법으로 커널과 사용자 프로세스가 함께 접근할 수 있는 공유 메모리 영역을 사용하여 전달할 데이터를 공유 메모리 영역에 저장시켜 전달하는 공유 메모리 방법이 있으며, 사용자 프로세스 영역으로부터 커널 영역으로 또는 커널 영역으로부터 사용자 프로세스 영역으로 데이터를 직접 전달하는 메모리 복사 방법이 있다.
그런데, 종래의 공유 메모리 방법은 사용될 수 있는 용도가 제한적이라는 문제가 있다.
또한, 종래의 메모리 복사 방법의 커널이 임의의 순간에 사용자 프로세스의 주소 공간에 접속하여 데이터를 복사하므로, 사용자 프로세스의 효율적인 동작을 방해하였다. 상세하게는, 종래의 메모리 복사 방법의 CPU는 사용자 프로세스 #1이 수행되고 있을때 사용자 프로세스 #2가 요청한 데이터의 입력이 완료되면, 사용자 프로세스 #1의 수행을 중단시키고 사용자 프로세스 #2의 주소 공간을 활성화시켜 입력된 데이터를 복사하기 때문에, 사용자 프로세스 #1의 TLB(Translation Lookaside Buffer)가 초기화 되고, CPU 캐쉬에 불필요한 내용이 채워져 사용자 프로세스의 효율을 저하하였다.
전술한 문제점을 해결하기 위하여, 본 발명의 목적은 적절한 시점에 일 사용자 프로세스와 커널 간의 데이터 전달을 수행함으로써, 데이터 전달시에 타 사용자 프로세스의 실행을 방해하지 않을 수 있는 데이터 전달 시스템, 장치 및 방법을 제공함에 있다.
본 발명의 다른 목적은 사용자 프로세스의 실행 상태를 확인함으로써 타 사용자 프로세스의 실행으로 인하여 일 사용자 프로세스의 비동기 입출력이 방해를 받지 않을 수 있는 데이터 전달 시스템, 장치 및 방법을 제공함에 있다.
본 발명의 일면에 따른 데이터 전달 시스템은, 사용자 프로세스들이 실행되는 사용자 프로세스 영역; 커널 쓰레드를 포함하는 커널 영역; 및 상기 각 사용자 프로세스의 입출력 요청에 따라 입출력을 수행하는 하드웨어 영역을 포함하되, 상기 하드웨어 영역에 입력 요청에 따른 입력 데이터가 수신되면, 상기 입력 요청한 사용자 프로세스가 실행 상태인지를 검사하여 실행 상태일 때, 상기 커널 쓰레드가 상기 커널 영역으로부터 상기 사용자 프로세스 영역으로 상기 입력 데이터를 복사하도록 하는 것을 특징으로 한다.
본 발명의 다른 면에 따른 데이터 전달 장치는, 사용자 프로세스의 입출력 요청에 따른 요청 정보를 기록하는 프로세스 제어기; 상기 요청 정보에 따른 입력 장치로부터 입력 데이터를 수신하여 상기 요청 정보에 따른 커널 영역의 메모리에 저장하는 입출력기; 상기 입출력기의 저장이 완료되면, 상기 입력 요청한 사용자 프로세스가 실행 상태인지를 확인하는 완료 처리기; 및 상기 확인결과 실행 상태이면, 상기 커널 영역의 메모리로부터 상기 사용자 프로세스의 메모리로 데이터를 복사하는 커널 쓰레드를 포함하는 것을 특징으로 한다.
본 발명의 또 다른 면에 따른 데이터 전달 방법은, 입력 요청에 따라 입력 장치로부터 입력 데이터를 수신하여 커널 영역의 메모리에 저장하는 단계; 상기 입력 요청한 사용자 프로세스가 실행 상태인지를 확인하는 단계; 및 상기 확인결과 실행 상태일 때 상기 커널 영역의 메모리로부터 상기 사용자 프로세스의 메모리로 데이터를 복사하는 단계를 포함하는 것을 특징으로 한다.
본 발명의 또 다른 면에 따른 데이터 전달 방법은, 사용자 프로세스의 출력 요청에 따른 요청 정보를 기록하는 단계; 상기 요청 정보에 따른 상기 사용자 프로세스의 메모리로부터 커널 영역의 메모리로 상기 요청 정보에 따른 출력 데이터를 복사하는 단계; 상기 복사된 출력 데이터를 상기 요청 정보에 따른 출력 장치로 출력하는 단계; 및 상기 출력 요청한 사용자 프로세스가 실행 상태일 때, 상기 출력 결과를 상기 출력 요청한 사용자 프로세스에게 통보하는 단계를 포함하는 것을 특징으로 한다.
본 발명에 따르면, 타 사용자 프로세스의 실행을 방해하지 않으면서 일 사용자 프로세스에 대한 비동기 입출력을 수행할 수 있는 효과가 있다.
또한, 본 발명은 불필요한 문맥의 교환으로 인하여 발생할 수 있는 TLB 초기 화와 CPU 캐쉬의 무효화를 줄임으로써 비동기 입출력을 사용하는 시스템의 성능을 향상시킬 수 있으며, 사용자 프로세스에 대한 소스 코드를 수정하지 않고도 사용자 프로세스의 실행 성능을 높일 수 있다.
도 1은 본 발명의 실시예에 따른 데이터 전달 시스템(10)을 도시한 구성도이다.
도 1에 도시된 바와 같이, 본 발명의 실시예에 따른 데이터 전달 시스템(10)은 사용자 프로세스 영역(User Process Space)(100), 커널 영역(Kernel Space)(200) 및 하드웨어 영역(300)을 포함한다.
사용자 프로세스 영역(100)은 CPU에 의해 사용자 프로세스들이 실행되는 영역이며, 각 사용자 프로세스(110)는 입출력되는 데이터를 저장하는 프로세스 메모리(111)를 갖는다.
커널 영역(200)은 커널이 동작하는 영역이며, 커널 쓰레드(240) 및 커널 메모리(241)를 포함한다.
커널 쓰레드(240)는 커널이 사용자 프로세스(110)로부터 입력 요청 또는 출력 요청을 수신하였을 때, 사용자 프로세스 영역(100)과 커널 영역(200) 간의 데이터 복사를 수행한다.
상세하게는, 커널 쓰레드(240)는 사용자 프로세스(110)의 입력 요청에 따라 입출력 장치(310)로부터 입력 데이터가 입력되어 커널 메모리(241)에 저장되면, 다수의 사용자 프로세스 중에서 입력을 요청한 사용자 프로세스(110)가 실행 상태일 때, 입력 요청한 사용자 프로세스(110)의 프로세스 메모리(111)로 입력 데이터를 복사한다. 이때, 입력 요청한 사용자 프로세스(110)의 실행 상태는 커널 쓰레드(240) 또는, 커널 영역(200)의 다른 구성요소에 의해 확인될 수 있다. 또는, 커널 쓰레드(240)는 사용자 프로세스(110)의 출력 요청에 따라 입출력 장치(310)로 출력될 사용자 프로세스(110)의 프로세스 메모리(111)에 저장된 출력 데이터를 커널 메모리(241)로 복사한다. 그리고, 커널 쓰레드(220)는 출력을 요청한 사용자 프로세스(110)가 실행 상태일 때, 출력을 요청한 사용자 프로세스(110)에게 출력 데이터의 출력을 완료하였음을 통보한다. 이때, 출력 요청한 사용자 프로세스(110)의 실행 상태는 커널 쓰레드(240) 또는, 커널 영역(200)의 다른 구성요소에 의해 확인될 수 있다.
커널 메모리(241)는 사용자 프로세스(110)의 입력 요청에 따라 입출력 장치(310)로부터 입력된 입력 데이터를 저장하거나, 사용자 프로세스(110)의 출력 요청에 따라 커널 쓰레드(240)가 사용자 프로세스 영역(100)의 프로세스 메모리(111)로부터 복사한 출력 데이터를 저장한다.
하드웨어 영역(300)은 키보드, 마우스, 스피커, 헤드셋 등의 다양한 입출력 장치(310)를 포함한다.
상세하게는, 하드웨어 영역(300)은 사용자 프로세스(110) 및 다른 사용자 프로세스들의 출력 요청에 따라 커널 영역(200)의 커널 메모리(241)에 저장된 출력 데이터를 출력한다. 이때, 하드웨어 영역(300)에 의해 출력 데이터의 출력이 완료되면, 출력 요청한 사용자 프로세스가 실행 상태일 때, 출력 요청한 사용자 프로세 스에게 출력 완료가 통보된다.
또는, 하드웨어 영역(300)은 사용자 프로세스(110)의 다른 사용자 프로세스들의 입력 요청에 따라 입력 데이터를 입력받아 커널 메모리(241)에 저장한다. 여기서, 하드웨어 영역(300)에 의해 입력 데이터가 커널 메모리(241)에 저장되면, 입력 요청한 사용자 프로세스가 실행 상태일 때, 입력 요청한 사용자 프로세스에게 저장된 입력 데이터가 전달된다.
한편, 커널 영역(200) 또는 사용자 프로세스 영역(100)은 프로세스 제어기(미도시)를 더 포함할 수 있으며, 프로세스 제어기(미도시)는 입출력 가능한 데이터의 최대 크기, 요청의 진행 상태, 사용자 프로세스의 주소 및 커널 영역의 주소 중 적어도 하나를 포함하는 요청의 정보를 기록할 수 있다. 예컨대, 입출력 가능한 데이터의 최대 크기는 각 영역의 메모리 크기(Size)일 수 있으며, 사용자 프로세스의 주소는 입출력을 요청한 사용자 프로세스의 주소 또는 프로세스 메모리(111)의 주소일 수 있으며, 커널 영역의 주소는 커널의 시작 주소 또는 커널 메모리(241)의 주소일 수 있다.
한편, 본 발명의 실시예에 따른 데이터 전달 시스템(10)에서, CPU는 다수의 사용자 프로세스를 한번에 하나씩 수행하는데, 비동기 입출력시에는 사용자 프로세스 #1에 대한 입출력의 완료를 기다리지 않고, 사용자 프로세스 #2 내지 #n(n>2)을 실행시킨다. 본 발명에서는 사용자 프로세스 #2 내지 #n이 실행 상태일 때 사용자 프로세스 #1에 대한 입출력이 완료될 경우, 사용자 프로세스 #1이 실행 상태가 될 때까지 대기하였다가 입력된 입력 데이터를 복사하거나, 출력 데이터의 출력 완 료를 통보함으로써, 사용자 프로세스 #1 내지 #n이 효율적으로 실행될 수 있도록 한다.
이하, 도 2를 참조하여 본 발명의 실시예에 따른 데이터 전달 장치에 대하여 설명한다. 도 2는 본 발명의 실시예에 따른 데이터 전달 장치를 도시한 구성도이다.
도 2에 도시된 바와 같이, 본 발명의 실시예에 따른 데이터 전달 장치(20)는 프로세스 제어기(210), 입출력기(220), 완료 처리기(230) 및 커널 쓰레드(240)를 포함한다.
본 발명의 실시예에 따른 데이터 전달 장치(20)는 사용자 프로세스(110)의 입력 요청에 따라 커널 메모리(241)에 저장된 입력 데이터를 프로세스 메모리(111)로 복사하거나, 사용자 프로세스(110)의 출력 요청에 따라 프로세스 메모리(111)에 저장된 출력 데이터를 커널 메모리(241)로 복사하는 등을 처리하는데, 먼저, 사용자 프로세스(110)의 입력 요청에 따른 데이터 전달 장치(20)의 처리 과정에 대하여 살펴본다.
프로세스 제어기(210)는 사용자 프로세스(110)의 입력 요청에 따른 입출력 요청 정보를 기록한다. 여기서, 입출력 요청 정보는 입출력 장치의 정보, 입출력 가능한 데이터의 최대 크기, 입출력 요청의 진행 상태, 사용자 프로세스의 주소 및 커널 영역의 주소 중 적어도 하나를 포함한다. 이때, 프로세스 제어기(210)는 사용자 프로세스 영역(100) 또는 커널 영역(200)에 위치할 수 있으며, 사용자 프로세스 또는 커널의 제어에 따라 입출력 요청 정보를 기록할 수 있다
여기서, 프로세스 제어기(210)는 하나 이상의 사용자 프로세스의 그룹에 대하여 각각 구비될 수 있으며, 각 사용자 프로세스에 대하여 각각 구비될 수 있다.
입출력기(220)는 입력 요청에 따라 입출력 요청 정보에 따른 입출력 장치(310)로부터 입력 데이터를 수신하고, 입력 데이터를 입출력 요청 정보에 따른 커널 메모리(241)에 저장한다.
완료 처리기(230)는 입출력기(220)에 의해 입력 데이터가 저장되면, 입력을 요청한 사용자 프로세스(110)가 실행 상태인지를 확인한다. 이때, 완료 처리기(230)는 입력 요청에 따른 입출력 요청 정보가 기록된 프로세스 제어기(210)를 검색하고, 프로세스 제어기(210)에 기록된 사용자 프로세스의 주소로부터 해당 사용자 프로세스(110)를 검색하고, 해당 사용자 프로세스(110)의 실행 상태를 확인할 수 있다.
커널 쓰레드(240)는 확인결과 실행 상태일 때, 스케줄링 우선 순위에 따라 커널 메모리(241)에 저장된 입력 데이터를 프로세스 메모리(111)로 복사한다.
반면, 커널 쓰레드(240)는 확인결과 실행 상태가 아니면, 사용자 프로세스(110)가 실행 상태가 될 때까지 깨어나지 않고 대기하였다가, 실행 상태가 될 때 깨어나 커널 메모리(241)에 저장된 입력 데이터를 복사한다.
이때, 커널 쓰레드(240)는 사용자 프로세스(110)의 실행 상태를 확인하여 스스로 깨어날 수 있으며, 완료 처리기(230)의 제어에 따라 깨어나 스케줄링 우선 순위에 따라 입력 데이터 복사를 수행할 수 있다.
다음으로, 사용자 프로세스(110)의 출력 요청에 따른 데이터 전달 장치(20) 의 처리 과정에 대하여 살펴본다.
프로세스 제어기(210)는 사용자 프로세스(110)의 출력 요청에 따라 입출력 요청 정보를 기록한다. 여기서, 프로세스 제어기(210)는 커널이 사용자 프로세스(110)의 출력 요청을 수신할 때, 입출력 요청 정보를 기록할 수 있으며, 입출력 요청 정보는 출력 장치의 정보를 더 포함할 수 있다.
커널은 사용자 프로세스의 출력 요청을 수신하면, 커널 쓰레드(240)가 프로세스 메모리(111)로부터 입출력 요청 정보에 따른 커널 메모리(241)로 출력 데이터를 복사하도록 한다.
입출력기(220)는 커널 쓰레드(240)에 의해 커널 메모리(241)에 복사된 출력 데이터를 입출력 요청 정보에 따른 입출력 장치(310)를 통해 출력한다.
완료 처리기(230)는 사용자 프로세스(110)의 실행 상태일 때 입출력기(220)를 통한 출력 데이터의 출력 완료를 통보한다. 이때, 완료 처리기(230)는 사용자 프로세스(110)가 실행 상태가 아니면, 사용자 프로세스(110)가 실행 상태가 될 때까지 대기하였다가 출력 데이터의 출력 완료를 통보할 수 있다.
이같이, 본 발명의 실시예에 따른 데이터 전달 장치(20)는 적절한 시점(즉, 입출력을 요청한 사용자 프로세스가 실행 상태일 때)에 커널 영역(200)과 사용자 프로세스 영역(100) 간의 데이터 복사를 수행함으로써, 타 사용자 프로세스의 실행을 방해하지 않고 데이터 복사를 수행할 수 있다. 또한, 본 발명에서는 타 사용자 프로세스의 실행을 방해함에 따라 발생할 수 있는 TLB 초기화와 CPU 캐쉬 무효화를 줄임으로써, 시스템 성능을 향상시킬 수 있다.
뿐만 아니라, 본 발명은 프로세스 제어기(210) 및 완료 처리기(230)를 추가로 적용함으로써 구현될 수 있어, 사용자 프로세스에 대한 소스 코드를 수정하지 않고도 사용자 프로세스의 실행 성능을 높일 수 있다.
이하, 도 3 및 도 4를 참조하여 본 발명의 실시예에 따른 데이터 전달 장치의 데이터 전달 방법에 대하여 설명한다.
도 3은 사용자 프로세스가 입력을 요청할 때, 본 발명의 실시예에 따른 데이터 전달 장치의 데이터 전달 방법을 도시한 흐름도이다.
먼저, 데이터 전달 장치(20)는 사용자 프로세스(110)의 요청에 따른 입출력 요청 정보를 기록한다(S320). 상세하게는, 커널은 사용자 프로세스(110)의 입력 요청을 수신하면(S310), 프로세스 제어기(210)에 입출력 요청 정보를 기록한다(S320). 여기서, 입출력 요청 정보는 입출력 가능한 데이터의 최대 크기, 요청의 진행 상태, 사용자 프로세스의 주소 및 커널 영역의 주소 중 적어도 하나를 포함한다.
이어서, 데이터 전달 장치(20)는 입출력 요청 정보에 따른 입출력 장치(310)로부터 입력 데이터를 수신하여 커널 메모리(241)에 저장한다(S340). 상세하게는, 커널은 사용자 프로세스(110)의 입력 요청을 입출력 요청 정보에 따른 입력 장치로 전달하며(S330), 입력 장치는 입력 데이터를 입출력 요청 정보에 따른 커널 메모리(241)에 저장하고(S340), 입력의 완료를 완료 처리기(230)로 통보한다(S350).
그 다음으로, 데이터 전달 장치(20)는 입력 요청한 사용자 프로세스(110)가 실행 상태인지를 확인한다(S370). 상세하게는, 완료 처리기(230)는 입출력 요청 정 보에 따른 프로세스 제어기(210)를 검색하고(S360), 검색된 프로세스 제어기(210)에 기록된 사용자 프로세스 주소가 가리키는 사용자 프로세스(110)를 확인하여 해당 사용자 프로세스(110)가 실행 상태인지를 확인한다(S370).
그리고, 데이터 전달 장치(20)는 확인결과 해당 사용자 프로세스(110)가 실행 상태이면(S380), 커널 메모리(241)로부터 해당 프로세스 메모리(111)로 입력 데이터를 복사한다(S390).
상세하게는, 완료 처리기(230)는 해당 사용자 프로세스(110)가 실행 상태이면, 커널 쓰레드(240)를 즉시 깨워서(S380), 커널 쓰레드(240)가 커널 메모리(241)에 저장된 입력 데이터를 해당 사용자 프로세스(110)의 프로세스 메모리(111)로 복사(S390)하도록 한다. 이때, 완료 처리기(230)가 커널 쓰레드(240)를 깨웠을 때 입력 데이터의 복사가 즉시 수행되어야 하므로, 커널 쓰레드(240)의 스케줄링 우선 순위를 최대로 높일 수 있다. 여기서, 스케줄링 우선 순위는 커널에 의해 조절될 수 있으며, 또는 사용자 프로세스나 CPU 등에 의해 조절될 수도 있다.
반면, 완료 처리기(230)는 입출력을 요청한 해당 사용자 프로세스(110)가 실행 상태가 아니면(S380), 프로세스 제어기(210)에 기록된 요청의 진행상태를 입력완료로 업데이트하여 기록한다(S391).
그러면, 사용자 프로세스 영역(100)의 프로세스 스케줄러에 의해 해당 사용자 프로세스(110)가 선정되어 실행될 때, 커널이 커널 메모리(241)로부터 프로세스 메모리(111)로 입력 데이터를 복사한다(S392).
이같이, 본 발명은 입력을 요청한 해당 사용자 프로세스(110)가 실행 상태인 것을 확인하여 실행 상태일 때에 커널 쓰레드(240)에 의한 입력 데이터 복사를 수행함으로써, 타 사용자 프로세스의 실행을 방해하지 않을 수 있다.
한편, 본 발명의 실시예에 따른 데이터 전달 장치(20)는 도 3의 흐름도와 같은 입력 요청에 따른 입력 데이터 복사를 수행하고, 이하 도 4와 같은 출력 요청에 따른 출력 데이터 복사를 수행할 수 있다.
도 4는 사용자 프로세스가 출력을 요청할 때, 본 발명의 실시예에 따른 데이터 전달 장치(20)의 데이터 전달 방법을 도시한 흐름도이다.
먼저, 데이터 전달 장치(20)는 사용자 프로세스(110)의 요청에 따른 입출력 요청 정보를 기록한다(S420). 상세하게는, 커널은 사용자 프로세스(110)의 출력을 요청받으면(S410), 프로세스 제어기(210)에 입출력 요청 정보를 기록한다(S420). 여기서, 입출력 요청 정보는 입출력 가능한 데이터의 최대 크기, 요청의 진행 상태, 각 메모리(111, 241)의 주소 중 적어도 하나를 포함한다.
이어서, 데이터 전달 장치(20)는 입출력 요청 정보에 따른 프로세스 메모리(111)로부터 커널 메모리(241)로 요청 정보에 따른 출력 데이터를 복사한다(S430). 상세하게는, 커널은 사용자 프로세스로부터 출력 요청을 수신하면 사용자 프로세스 영역으로부터 커널 영역으로 출력 데이터를 복사한다.
그 다음으로, 데이터 전달 장치(20)는 입출력 요청 정보에 따른 출력 장치로 복사된 출력 데이터를 출력한다(S450). 상세하게는, 커널은 완료 처리기(230)로 출력 요청을 전달하고(S440), 완료 처리기(230)는 커널 메모리(241)에 저장된 출력 데이터를 출력 장치로 출력한다(S450).
그리고, 데이터 전달 장치(20)는 출력을 요청한 사용자 프로세스(110)가 실행 상태일 때, 출력 결과를 통보한다(S490).
상세하게는, 완료 처리기(230)는 입출력 장치로 출력 데이터가 출력된 것을 확인하면(S460), 해당 사용자 프로세스(110) 및 프로세스 제어기(210)를 검색하고(S470), 프로세스 제어기(210)에 기록된 요청의 수행 상태를 출력 완료로 업데이트하여 기록한다(S480). 그리고, 완료 처리기(230)는 사용자 프로세스(110)가 실행 상태인지를 확인하여 실행 상태일 때 출력 결과를 통보한다(S490).
반면, 완료 처리기(230)는 해당 사용자 프로세스(110)가 실행 상태가 아니면, 실행 상태가 될 때까지 대기하였다가 출력 결과를 통보할 수 있다.
이같이, 본 발명은 출력을 요청한 해당 사용자 프로세스가 실행 상태인 것을 확인하여 실행 상태일 때에 커널 쓰레드(240)에 의한 출력 데이터의 복사를 수행함으로써, 타 사용자 프로세스의 실행을 방해하지 않을 수 있다.
이때, 본 발명의 실시예에 따른 데이터 전달 장치(20)는 도 4와 같이 출력 요청에 따른 출력 데이터의 복사를 수행한 다음, 도 3와 같이 입력 요청에 따른 입력 데이터의 복사를 수행할 수 있음은 물론이다.
이상, 본 발명의 구성에 대하여 첨부 도면을 참조하여 상세히 설명하였으나, 이는 예시에 불과한 것으로서, 본 발명이 속하는 기술분야에 통상의 지식을 가진자라면 본 발명의 기술적 사상의 범위 내에서 다양한 변형과 변경이 가능함은 물론이다. 따라서 본 발명의 보호 범위는 전술한 실시예에 국한되어서는 아니되며 이하의 특허 청구범위의 기재에 의하여 정하여져야 할 것이다.
도 1은 본 발명의 실시예에 따른 데이터 전달 시스템을 도시한 구성도.
도 2는 본 발명의 실시예에 따른 데이터 전달 장치를 도시한 구성도.
도 3은 사용자 프로세스가 입력을 요청할 때, 본 발명의 실시예에 따른 데이터 전달 장치의 데이터 전달 방법을 도시한 흐름도.
도 4는 사용자 프로세스가 출력을 요청할 때, 본 발명의 실시예에 따른 데이터 전달 장치의 데이터 전달 방법을 도시한 흐름도.

Claims (20)

  1. 사용자 프로세스들이 실행되는 사용자 프로세스 영역;
    커널 쓰레드를 포함하는 커널 영역; 및
    상기 각 사용자 프로세스의 입출력 요청에 따라 입출력을 수행하는 하드웨어 영역을 포함하되,
    상기 하드웨어 영역에 입력 요청에 따른 입력 데이터가 수신되면, 상기 입력 요청한 사용자 프로세스가 실행 상태인지를 검사하여 실행 상태일 때, 상기 커널 쓰레드가 상기 커널 영역으로부터 상기 사용자 프로세스 영역으로 상기 입력 데이터를 복사하도록 하는 것인 데이터 전달 시스템.
  2. 제1항에 있어서, 상기 커널 쓰레드는,
    상기 사용자 프로세스가 실행 상태가 아니면, 상기 사용자 프로세스가 실행 상태가 될 때까지 상기 입력 데이터의 복사를 지연하는 것인 데이터 전달 시스템.
  3. 제1항에 있어서,
    상기 커널 쓰레드는, 상기 사용자 프로세스의 출력 요청에 따라 상기 사용자 프로세스 영역으로부터 상기 커널 영역으로 출력 데이터를 복사하며,
    상기 복사된 출력 데이터는, 상기 출력 요청에 따른 하드웨어 영역으로 출력되는 것인 데이터 전달 시스템.
  4. 제1항에 있어서, 상기 커널 영역은 프로세스 제어기를 더 포함하며,
    상기 프로세스 제어기는 상기 입출력 가능한 데이터의 최대 크기, 상기 요청의 진행 상태, 상기 사용자 프로세스 영역의 주소 및 상기 커널 영역의 주소 중 적어도 하나를 포함하는 상기 요청의 정보를 기록하는 것인 데이터 전달 시스템.
  5. 사용자 프로세스의 입출력 요청에 따른 요청 정보를 기록하는 프로세스 제어기;
    상기 요청 정보에 따른 입력 장치로부터 입력 데이터를 수신하여 상기 요청 정보에 따른 커널 영역의 메모리에 저장하는 입출력기;
    상기 입출력기의 저장이 완료되면, 상기 입력 요청한 사용자 프로세스가 실행 상태인지를 확인하는 완료 처리기; 및
    상기 확인결과 실행 상태이면, 상기 커널 영역의 메모리로부터 상기 사용자 프로세스의 메모리로 데이터를 복사하는 커널 쓰레드
    를 포함하는 데이터 전달 장치.
  6. 제5항에 있어서, 상기 요청 정보는,
    상기 입력 장치의 정보, 상기 입출력 가능한 데이터의 최대 크기, 상기 요청의 진행 상태, 상기 사용자 프로세스의 주소 및 상기 커널 영역의 주소 중 적어도 하나를 포함하는 것인 데이터 전달 장치.
  7. 제5항에 있어서, 상기 커널 쓰레드는,
    상기 확인결과 실행 상태가 아니면, 상기 사용자 프로세스가 실행 상태일때까지 대기하였다가 실행 상태가 되면, 상기 데이터를 복사하는 것인 데이터 전달 장치.
  8. 제7항에 있어서, 상기 커널 쓰레드는,
    상기 확인결과 실행 상태이면, 상기 완료 처리기의 명령에 따라 상기 데이터를 복사하는 것인 데이터 전달 장치.
  9. 제5항에 있어서,
    상기 커널 쓰레드는 출력 요청에 따라 상기 사용자 프로세스의 메모리로부터 상기 요청 정보에 따른 커널 영역의 메모리로 데이터를 복사하고,
    상기 입출력기는 상기 커널 영역의 메모리에 복사된 데이터를 상기 요청 정보에 따른 출력 장치를 통해 출력하며,
    상기 완료 처리기는 상기 출력 요청한 사용자 프로세스가 실행 상태일 때 상기 출력의 완료를 상기 출력 요청한 사용자 프로세스에게 통보하는 것인 데이터 전달 장치.
  10. 제5항에 있어서, 상기 프로세스 제어기는,
    상기 커널 영역에 위치하는 것인 데이터 전달 장치.
  11. 입력 요청에 따라 입력 장치로부터 입력 데이터를 수신하여 커널 영역의 메모리에 저장하는 단계;
    상기 입력 요청한 사용자 프로세스가 실행 상태인지를 확인하는 단계; 및
    상기 확인결과 실행 상태일 때 상기 커널 영역의 메모리로부터 상기 사용자 프로세스의 메모리로 데이터를 복사하는 단계
    를 포함하는 데이터 전달 방법.
  12. 제11항에 있어서,
    상기 입력 요청에 따른 요청 정보를 기록하는 단계; 및
    상기 기록된 요청 정보를 이용하여 상기 입력 요청한 사용자 프로세스를 검색하는 단계
    를 더 포함하는 데이터 전달 방법.
  13. 제12항에 있어서, 상기 요청 정보는,
    상기 입출력 가능한 데이터의 최대 크기, 상기 요청의 진행 상태, 상기 사용자 프로세스의 주소 및 상기 커널 영역의 주소 중 적어도 하나를 포함하는 것인 데이터 전달 방법.
  14. 제11항에 있어서,
    상기 사용자 프로세스의 메모리로부터 상기 커널 영역의 메모리로 출력 요청에 따라 출력 장치에 출력 데이터를 복사하는 단계; 및
    상기 복사된 출력 데이터를 상기 출력 장치로 출력하는 단계
    를 더 포함하는 데이터 전달 방법.
  15. 사용자 프로세스의 출력 요청에 따른 요청 정보를 기록하는 단계;
    상기 요청 정보에 따른 상기 사용자 프로세스의 메모리로부터 커널 영역의 메모리로 상기 요청 정보에 따른 출력 데이터를 복사하는 단계;
    상기 복사된 출력 데이터를 상기 요청 정보에 따른 출력 장치로 출력하는 단계; 및
    상기 출력 요청한 사용자 프로세스가 실행 상태일 때, 상기 출력 결과를 상기 출력 요청한 사용자 프로세스에게 통보하는 단계
    를 포함하는 데이터 전달 방법.
  16. 제15항에 있어서, 상기 요청 정보는,
    상기 입출력 가능한 데이터의 최대 크기, 상기 요청의 진행 상태, 상기 사용자 프로세스의 주소 및 상기 커널 영역의 주소 중 적어도 하나를 포함하는 것인 데이터 전달 방법.
  17. 제15항에 있어서, 상기 통보하는 단계는,
    상기 출력 요청한 사용자 프로세스가 실행 상태인지를 확인하는 단계; 및
    상기 확인결과 실행 상태이면, 상기 출력 결과를 통보하는 단계
    를 포함하는 것인 데이터 전달 방법.
  18. 제17항에 있어서, 상기 통보하는 단계는,
    상기 확인결과 실행 상태가 아니면, 상기 출력 요청한 사용자 프로세스의 실행 상태까지 대기하는 단계
    를 더 포함하는 것인 데이터 전달 방법.
  19. 제15항에 있어서,
    입력 요청에 따른 입력 장치로부터 입력 데이터를 입력받는 단계;
    상기 입력 데이터를 상기 커널 영역의 메모리에 저장하는 단계; 및
    상기 입력 요청한 사용자 프로세스가 실행 상태인 경우에, 상기 입력 데이터를 상기 사용자 프로세스의 메모리로 복사하는 단계
    를 더 포함하는 데이터 전달 방법.
  20. 제19항에 있어서,
    상기 입력 요청한 사용자 프로세스가 실행 상태가 아닌 경우, 실행 상태가 될 때까지 상기 입력 데이터의 복사를 지연하는 단계
    를 더 포함하는 데이터 전달 방법.
KR1020090018887A 2009-03-05 2009-03-05 데이터 전달 시스템, 장치 및 방법 KR101203157B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090018887A KR101203157B1 (ko) 2009-03-05 2009-03-05 데이터 전달 시스템, 장치 및 방법
US12/509,372 US8244919B2 (en) 2009-03-05 2009-07-24 Data transfer apparatus, system and method using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090018887A KR101203157B1 (ko) 2009-03-05 2009-03-05 데이터 전달 시스템, 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20100100163A true KR20100100163A (ko) 2010-09-15
KR101203157B1 KR101203157B1 (ko) 2012-11-20

Family

ID=42679225

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090018887A KR101203157B1 (ko) 2009-03-05 2009-03-05 데이터 전달 시스템, 장치 및 방법

Country Status (2)

Country Link
US (1) US8244919B2 (ko)
KR (1) KR101203157B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101640767B1 (ko) * 2010-02-09 2016-07-29 삼성전자주식회사 이종 수행 환경을 위한 네트워크 기반의 실시간 가상 현실 입출력 시스템 및 가상 현실 입출력 방법
US9436395B2 (en) * 2014-03-14 2016-09-06 Advanced Micro Devices, Inc. Mechanisms to save user/kernel copy for cross device communications
CN109753368B (zh) * 2018-12-20 2020-12-04 清华大学 一种实时数据发送方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754736B1 (en) * 1999-06-23 2004-06-22 Fujitsu Limited Information processing apparatus, data inputting/outputting method, and program storage medium therefor
KR100576721B1 (ko) 2003-12-24 2006-05-03 한국전자통신연구원 제로카피(zero-copy) 전송 기능을 구비한네트워크 카드와 서버 및 그 전송 방법
KR100594430B1 (ko) 2004-12-14 2006-06-30 한국전자통신연구원 네트워크 환경에서의 비동기적 입출력 처리 방법
US7873964B2 (en) * 2006-10-30 2011-01-18 Liquid Computing Corporation Kernel functions for inter-processor communications in high performance multi-processor systems
GB2446172B (en) * 2007-01-30 2009-01-21 Hewlett Packard Development Co Control of data transfer

Also Published As

Publication number Publication date
KR101203157B1 (ko) 2012-11-20
US20100228895A1 (en) 2010-09-09
US8244919B2 (en) 2012-08-14

Similar Documents

Publication Publication Date Title
JP4520790B2 (ja) 情報処理装置およびソフトウェアプリフェッチ制御方法
US20170075818A1 (en) Memory management method and device
JP5065298B2 (ja) 効率的なメモリ階層管理
US20110202918A1 (en) Virtualization apparatus for providing a transactional input/output interface
JP2005234854A (ja) マルチプロセッサシステム
US20220179792A1 (en) Memory management device
JP2006252358A (ja) ディスクアレイ装置及びその共有メモリ装置、ディスクアレイ装置の制御プログラム及び制御方法
US11921650B2 (en) Dedicated cache-related block transfer in a memory system
WO2016015583A1 (zh) 一种内存管理方法、装置以及内存控制器
JP5499987B2 (ja) 共有キャッシュメモリ装置
KR101203157B1 (ko) 데이터 전달 시스템, 장치 및 방법
US7913059B2 (en) Information processing device, data transfer method, and information storage medium
US7451274B2 (en) Memory control device, move-in buffer control method
US9075795B2 (en) Interprocess communication
US9507724B2 (en) Memory access processing method and information processing device
JP5254710B2 (ja) データ転送装置、データ転送方法およびプロセッサ
US9779044B2 (en) Access extent monitoring for data transfer reduction
JP2015197802A (ja) 情報処理装置、情報処理方法及びプログラム
JP2010211506A (ja) 不均一メモリアクセス機構を備えるコンピュータ、コントローラ、及びデータ移動方法
US9934149B2 (en) Prefetch mechanism for servicing demand miss
JP2007286990A (ja) キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム
JP5231496B2 (ja) 情報処理装置及びそのサスペンド/リジューム方法
JP2017068806A (ja) 情報処理装置および情報処理方法
JPWO2007088581A1 (ja) 共有メモリ型マルチプロセッサにおける手続き呼び出し方法、手続き呼び出しプログラムおよび記録媒体
JP2006039821A (ja) マルチプロセッサ搭載システムlsiの制御方法

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