KR101014028B1 - 고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치 - Google Patents

고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치 Download PDF

Info

Publication number
KR101014028B1
KR101014028B1 KR1020080118331A KR20080118331A KR101014028B1 KR 101014028 B1 KR101014028 B1 KR 101014028B1 KR 1020080118331 A KR1020080118331 A KR 1020080118331A KR 20080118331 A KR20080118331 A KR 20080118331A KR 101014028 B1 KR101014028 B1 KR 101014028B1
Authority
KR
South Korea
Prior art keywords
input
output
context
efficiency
time
Prior art date
Application number
KR1020080118331A
Other languages
English (en)
Other versions
KR20100059530A (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 KR1020080118331A priority Critical patent/KR101014028B1/ko
Priority to PCT/KR2009/006992 priority patent/WO2010062112A2/en
Publication of KR20100059530A publication Critical patent/KR20100059530A/ko
Application granted granted Critical
Publication of KR101014028B1 publication Critical patent/KR101014028B1/ko
Priority to US13/112,671 priority patent/US8826295B2/en
Priority to US14/447,471 priority patent/US9841995B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • 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

Abstract

고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치가 개시된다. 고속 블록 입출력을 위한 적응성 문맥전환 방법은, 프로세스가 입출력 장치에 대하여 데이터의 입출력을 요청하는 단계, 문맥전환(context switching)의 수행 여부에 따른 연산장치 효율을 비교하는 단계 및 상기 연산장치 효율의 비교 결과에 대응하여 상기 입출력 장치의 드라이버 컨텍스트로 문맥전환을 수행 또는 상기 프로세스가 직접 상기 입출력을 수행하는 단계를 포함한다.
문맥전환, 연산장치 효율, 응답 대기시간, DMA, 블록 입출력 장치

Description

고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치{DEVICE AND METHOD FOR ADAPTIVE CONTEXT SWITCH SCHEDULING SCHEME FOR FAST BLOCK INPUT AND OUTPUT}
본 발명은 고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치에 관한 것으로 특히, 문맥전환을 통한 입출력 처리의 수행 또는 프로세스의 직접 입출력 처리 여부를 선택하여 하드웨어의 변화에 따른 적절한 문맥전환 방법 및 장치에 관한 것이다.
종래에는 프로세스가 입출력을 실행 할 때, 블록 입출력 장치의 성능이 연산장치나 메모리에 비해 매우 느리므로 입출력 스케쥴러는 블록 입출력 장치의 병목현상을 줄이기 위해 다른 프로세스에게 연산장치를 할당하고, 디바이스 드라이버에 의해 블록 연산이 끝난 후에 입출력을 요청한 프로세스를 실행시켰다. 여기서, 문맥전환은 전체 시스템 성능을 향상시키는 데 반드시 필요한 기능이었으나 문맥전환시 과부하가 발생하였다.
메모리 산업이 발달함에 따라서 메모리 기반 블록 입출력 장치는 입출력 속도가 하드 디스크에 비해 매우 빠르며 앞으로 더욱 빨라질 전망이다. 이것은 특정 상황에서는 문맥전환을 수행하지 않는 것이 입출력 응답속도 측면과 시스템 성능 측면에서도 이득이 될 수 있음을 의미한다.
따라서, 시스템 성능 향상을 위해 문맥전환의 수행여부를 결정하여 필요에 따라 문맥전환을 선택적으로 수행하는 문맥전환 방법 및 장치가 절실히 요구된다.
본 발명은 프로세스가 입출력을 실행할 때 기설정된 조건을 만족하면 문맥전환을 수행하지 않도록 함으로써, 입출력을 요청한 프로세스의 입장에서 빠른 응답이 가능한 적응성 문맥전환 방법 및 장치를 제공한다.
본 발명은 프로세스가 입출력을 실행할 때 연산장치의 효율에 따라 문맥전환의 수행여부를 결정함으로써, 연산장치 사용의 효율성을 높이는 적응성 문맥전환 방법 및 장치를 제공한다.
본 발명의 일실시예에 따른 고속 블록 입출력을 위한 적응성 문맥전환 방법은, 프로세스가 입출력 장치에 대하여 데이터의 입출력을 요청하는 단계, 문맥전환(context switching)의 수행 여부에 따른 연산장치 효율을 비교하는 단계 및 상기 연산장치 효율의 비교 결과에 대응하여 상기 입출력 장치의 드라이버 컨텍스트로 문맥전환을 수행 또는 상기 프로세스가 직접 상기 입출력을 수행하는 단계를 포함한다
본 발명의 일측면에 따르면, 입출력 장치가 고속 블록 장치인지 여부를 판단하는 단계를 더 포함하고, 상기 입출력 장치가 고속 블록 장치인 경우, 상기 확인하는 단계 내지 상기 입출력을 수행하는 단계를 수행할 수 있다.
본 발명의 일측면에 따르면, 상기 연산장치 효율을 비교하는 단계는, 입출력 요청 프로세스에서 입출력을 직접 수행하는 제1 입출력 동작의 연산장치 효율 및 디바이스 드라이버 컨텍스트(device driver context)로 문맥전환(context switching)을 통해 입출력을 수행하는 제2 입출력 동작의 연산장치 효율을 비교할 수 있다.
본 발명의 일측면에 따르면, 상기 입출력을 수행하는 단계는, 상기 제1 입출력 동작의 연산장치 효율이 상기 제2 입출력 동작의 연산장치 효율보다 큰 경우, 상기 제1 입출력 동작을 수행하고, 상기 제2 입출력 동작의 연산장치 효율이 상기 제1 입출력 동작의 연산장치 효율보다 큰 경우, 상기 제2 입출력 동작을 수행할 수 있다.
본 발명의 일측면에 따르면, 입출력에 소요되는 시간 및 상기 연산장치가 프로세스에 할당되어 연산을 처리한 시간에 기초하여 연산장치의 효율을 산출하고 비교할 수 있다.
본 발명의 일측면에 따르면, 입출력 장치가 DMA(Direct Memory Access)를 사용하는지 여부를 확인하는 단계를 더 포함할 수 있다.
본 발명의 일측면에 따르면, 상기 입출력을 수행하는 단계는, 상기 입출력 장치의 큐(queue)에 응답 대기중인 요청이 있는지 여부를 판단하는 단계 및 상기 대기중인 요청이 있는 경우, 디바이스 드라이버 컨텍스트(device driver context)로 문맥전환(context switching)을 통해 입출력을 수행할 수 있다.
본 발명의 일실시예에 따른 고속 블록 입출력을 위한 적응성 문맥전환 장치는, 프로세스가 입출력 장치에 대하여 입출력을 요청하는 입출력 요청부, 문맥전환(context switching)의 수행 여부에 따른 연산장치 효율을 비교하는 연산장치 효 율 비교부 및 상기 연산장치 효율의 비교 결과에 대응하여 상기 입출력 장치의 드라이버 컨텍스트로 문맥전환을 수행 또는 상기 프로세스가 직접 입출력을 수행하는 입출력 수행부를 포함한다.
본 발명의 일측면에 따르면, 입출력 장치가 DMA(Direct Memory Access)를 사용하는지 여부를 확인하는 DMA 사용 확인부를 더 포함하고, 상기 연산장치 효율 비교부는 입출력 요청 프로세스에서 입출력을 직접 수행하는 제1 입출력 동작 및 디바이스 드라이버 컨텍스트(device driver context)로 문맥전환(context switching)을 통해 입출력을 수행하는 제2 입출력 동작 각각의 연산장치 효율을 산출하는 연산장치 효율 산출부 및 상기 각 동작의 연산장치 효율을 비교하는 효율 비교부를 포함할 수 있다.
본 발명의 일측면에 따르면, 상기 연산장치 효율 산출부는, 상기 입출력 장치가 DMA를 사용하지 않는 경우 상기 각 동작에 따른 연산장치의 효율을 산출하는 제1 연산장치 효율 산출부 및 상기 입출력 장치가 DMA를 사용하는 경우 상기 각 동작에 따른 연산장치의 효율을 산출하는 제2 연산장치 효율 산출부를 포함할 수 있다.
본 발명의 일실시예에 따르면, 프로세스가 입출력을 실행할 때 기설정된 조건을 만족하면 문맥전환을 수행하지 않도록 함으로써, 입출력을 요청한 프로세스의 입장에서 빠른 응답이 가능한 적응성 문맥전환 방법 및 장치가 제공된다.
본 발명의 일실시예에 따르면, 프로세스가 입출력을 실행할 때 연산장치의 효율에 따라 문맥전환의 수행여부를 결정함으로써, 연산장치 사용의 효율성을 높이는 적응성 문맥전환 방법 및 장치가 제공된다.
이하, 첨부된 도면들에 기재된 내용들을 참조하여 본 발명에 따른 실시예를 상세하게 설명한다. 다만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 있어서, 고속 블록 입출력을 위한 적응성 문맥전환 방법을 도시한 흐름도이다.
도 1을 참고하면, 단계(S110)에서는 프로세스가 입출력 장치에 대하여 데이터의 입출력을 요청할 수 있다. 즉, 입출력 요청 프로세스가 입출력 장치에 데이터를 입력 또는 출력하고자 하는 경우, 데이터의 입출력을 요청할 수 있다. 여기서, 데이터 입출력 동작의 일례인 데이터 읽기 동작을 중심으로 이하에서 설명하도록 한다.
고속 블록 입출력을 위한 적응성 문맥전환 방법은, 입출력 장치가 DMA(Direct Memory Access)를 사용하는지 여부를 확인하는 단계를 더 포함할 수 있다. 여기서, DMA(Direct Memory Access)는 블록 입출력시 주 연산장치의 도움 없이 메모리에서 입출력 자료를 직접 주고 받도록 허용하는 하드웨어 메커니즘이다. 문맥전환의 수행여부를 결정하기 위해서는 응답시간 및 연산장치의 효율 중 적어도 하나를 고려할 수 있다. 이때, DMA를 사용하는 경우와 사용하지 않는 경우는 연산장치의 효율이 각각 다르게 산출될 수 있으므로, 우선적으로 DMA 사용여부를 확인 할 수 있다.
단계(S120)에서는 문맥전환(context switching)의 수행 여부에 따른 연산장치 효율을 비교할 수 있다. 즉, 문맥전환의 수행 여부에 따라, 입출력 요청 프로세스에서 입출력을 직접 수행하는 제1 입출력 동작의 연산장치 효율 및 디바이스 드라이버 컨텍스트(device driver context)로 문맥전환(context switching)을 통해 입출력을 수행하는 제2 입출력 동작의 연산장치 효율을 비교할 수 있다.
여기서, 입출력 응답시간 및 연산장치의 효율을 산출하는 일실시예를 아래 도 3 및 도 4를 참고하여 더욱 상세하게 설명한다.
도 3은 본 발명의 일실시예에 있어서, 문맥전환을 수행할 경우에 요구되는 시간의 흐름을 도시한 도면이다.
도 3을 참고하면, 문맥전환을 통해 입출력을 수행하는 경우, 입출력 요청 프로세스(310), 제3 프로세스(320), 및 입출력 장치(330)별로 소요되는 시간이 도시되어 있다. Tc는 문맥전환에 소요되는 시간을 의미하고, Tw는 장치 디바이스로부터 인터럽트를 받을 때까지의 응답대기시간을 의미한다. Tw는 To와 Td로 구성되는데 To는 입출력 명령 해석 시간(Command process time), 탐색시간(seek time), 및 회전지연시간(Rotational delay) 중 적어도 하나로 구성될 수 있다. Td는 물리적 디스크로부터 데이터를 읽어 장치 버퍼 캐쉬에 데이터를 전송하는데 걸리는 시간을 의미한다. Tb는 디스크의 버퍼 캐쉬에서 버스를 통하여 메모리로 전송하는 데 걸리는 시간을 의미한다. 이때, Td와 To 두 시간 사이에 시간적으로 중복되는 구간이 발생하는데 이를 Tv라고 정의할 수 있다. 즉, Tv는 디스크로부터 버퍼캐쉬 로 데이터를 전송할 때 데이터 전송이 완료되지 않은 상태에서 디스크는 인터럽트를 발생시키고 버스를 통해 메모리로 데이터를 전송하는 과정에서 발생하는 중복되는 구간일 수 있다. 모든 데이터가 전송이 완료 될 때까지 읽기를 요청한 프로세스는 휴면상태(sleep state)에 있기 되는데 데이터 전송이 완료되면 스케쥴러는 휴면상태의 프로세스를 다시 깨우고 동작이 진행될 수 있다. 읽기 요청을 한 프로세스가 휴면상태로 들어가서 다시 일어나기 까지 걸리는 시간을 입출력 응답시간이라고 하고 문맥전환을 할 경우의 입출력 응답시간의 일례를 아래 [수학식 1]과 같이 표현될 수 있다..
[수학식 1]
Figure 112008081669013-pat00001
도 4는 본 발명의 일실시예에 있어서, 문맥전환을 수행하지 않고 입출력 요청 프로세스(410)가 직접 입출력을 수행하는 경우에 요구되는 시간의 흐름을 도시한 도면이다. 일단 문맥전환을 하지 않고 바로 Tw-Tv만큼 디스크로부터 데이터 전송준비 인터럽트가 오기까지 직접 대기하고, Td만큼의 시간을 데이터를 연산장치를 이용하여 데이터를 전송할 수 있다. 따라서, 일실시예에 있어서, 직접 입출력을 할 경우의 입출력 응답시간을 아래 [수학식 2]와 같이 표현될 수 있다..
[수학식 2]
Figure 112008081669013-pat00002
[수학식 1]과 [수학식 2]의 비교를 통해 직접 입출력을 할 경우, 반드시 2*Tc 만큼의 시간을 절약할 수 있다는 것을 알 수 있다. 그러나 직접 입출력을 할 경우는 연산장치가 Tw-Tv만큼의 시간을 다른 프로세스에게 할당할 수 없으므로, 연산장치 효율성(CPU Effectiveness)을 추가적으로 검토할 수 있다. 따라서, 일실시예에 있어서, 연산장치 효율성(E)은 아래 [수학식 3]과 같이 표현될 수 있다..
[수학식 3]
Figure 112008081669013-pat00003
Tio는 입출력이 완료되기까지 걸린 시간(입출력 응답시간)을 의미하고, Tr은 실제 연산장치가 의미 있는 동작, 즉 프로세스에게 할당되어 연산을 처리한 시간을 의미한다. 문맥전환을 할 경우의 연산장치의 효율성(Ecs)은 응답시간에 대해서 Tw시간 동안 다른 프로세스에게 연산장치가 할당되어 연산동작을 진행하고, Tb동안 디바이스 드라이버 문맥에서 읽기 요청을 처리할 수 있다. 따라서, DMA를 사용하지 않으며, 문맥전환을 할 경우의 연산장치 효율성(Ecs)은 일례로 아래 [수학식 4]와 같이 표현될 수 있다.
[수학식 4]
Figure 112008081669013-pat00004
직접 입출력을 할 경우에는 Tw의 시간 동안 연산장치는 장치 디바이스로부터 인터럽트가 올 때까지 대기해야 하므로 Tr에 포함 될 수 없다. 따라서 입출력을 실행한 Tb의 시간만이 Tr에 포함되게 되어 직접 입출력에 대한 연산장치의 효율 성은 일례로 아래 [수학식 5]와 같이 표현될 수 있다..
[수학식 5]
Figure 112008081669013-pat00005
여기서, DMA가 없을 경우의 직접 읽기 여부의 기준이 되는 것은, 응답시간 관점에서 볼 때 뛰어난 성능을 보이고, 연산장치 효율성 측면에서는 일례로 아래 [수학식 6]에 부합될 경우에 직접 읽기를 수행하도록 할 수 있다.
[수학식 6]
Figure 112008081669013-pat00006
여기서, DMA를 사용하는 경우에 있어서, 연산장치의 효율은 상기 DMA를 사용하지 않는 경우와 다르게 산출될 수 있다. DMA를 사용하는 경우는 프로세스 문맥(Process context)에서 직접 연산장치가 읽기를 하는가, 디바이스 컨텍스트로 문맥전환을 한 후에 DMA를 사용하는가로 구분할 수 있다. 이때, 응답시간의 측면에서는 문맥전환 없이 읽기를 진행하는 것이 문맥전환에 소요되는 시간이 요구되지 않으므로 유리할 수 있다. 그러나 연산장치 효율성 측면에서는 문맥전환을 하면 Tw시간 과 Tb시간을 모두 DMA 에서 처리해주며, 그 시간 동안 스케쥴러는 다른 프로세스에게 연산장치를 할당할 수 있기 때문에 Tw+Tb의 시간에 대해서 두 배의 활용이 가능할 수 있다. 따라서 DMA를 활용하여 문맥전환을 하는 경우에는 연산장치의 효율성은 일례로 아래 [수학식 7]과 같이 표현될 수 있다..
[수학식 7]
Figure 112008081669013-pat00007
문맥전환을 시도 하지 않고 읽기요청 프로세스에서 진행할 경우는 상기 [수학식 5]와 변화가 없으므로 DMA를 사용하고 프로세스에서 직접 읽기를 수행하는 경우의 연산장치 효율성은 일례로 아래 [수학식 8]과 같이 표현될 수 있다.
[수학식 8]
Figure 112008081669013-pat00008
따라서 DMA 장치가 있을 경우에 직접 읽기를 할 경우는 일례로 아래 [수학식 9]와 같이 표현될 수 있다.
[수학식 9]
Figure 112008081669013-pat00009
이상에서 살펴본 입출력 응답시간 및 연산장치 효율성을 산출하는 방법은 하나의 실시예를 든 것이며, 다른 수학식 또는 다른 방법을 통해 산출될 수 있다.
상기와 같이, 적응성의 문맥전환은 DMA가 존재 하는가를 구분하여 [수학식 6] 또는 [수학식 9]를 만족하는 경우 직접 입출력을 시도할 수 있다.
여기서, 입출력 요청 프로세스가 직접 입출력을 수행하는 것은 장치 큐에 응답 대기 중인 요청이 없을 경우로 한정할 수 있다. 즉, 대기중인 요청이 있을 경우에는 반드시 문맥전환을 진행할 수 있다
다시 도 1을 참고하면, 단계(S130)에서는 상기 비교 결과에 대응하여 입출력을 수행할 수 있다. 즉, 상기 제1 입출력 동작의 연산장치 효율이 상기 제2 입출력 동작의 연산장치 효율보다 큰 경우, 상기 제1 입출력 동작을 수행하고, 상기 제2 입출력 동작의 연산장치 효율이 상기 제1 입출력 동작의 연산장치 효율보다 큰 경우, 상기 제2 입출력 동작을 수행하도록 할 수 있다.
또한, 단계(S130)는 상기 입출력 장치의 큐(queue)에 응답 대기중인 요청이 있는지 여부를 판단하는 단계 및 상기 대기중인 요청이 있는 경우, 디바이스 드라이버 컨텍스트(device driver context)로 문맥전환(context switching)을 통해 입출력을 수행하는 단계를 더 포함할 수 있다. 즉, 상기 입출력 장치의 큐(queue)에 응답 대기중인 요청이 없는 경우에만 적응성 문맥전환 방법이 수행되도록 하고, 응답 대기중인 요청이 있는 경우에는 반드시 문맥전환을 통해 입출력을 수행하도록 할 수 있다.
또한, 고속 블록 입출력을 위한 적응성 문맥전환 방법은 입출력 장치가 고속 블록 장치인지 여부를 판단하는 단계(미도시)를 더 포함하고, 상기 입출력 장치가 고속 블록 장치인 경우, 단계(S110) 내지 단계(S130)를 수행하도록 할 수 있다.
상기와 같이, 프로세스가 입출력을 실행할 때 연산장치의 효율에 따라 문맥전환의 수행여부를 결정함으로써, 연산장치 사용의 효율성을 높이고 빠른 응답시간을 확보할 수 있다.
도 2는 본 발명의 일실시예에 있어서, 문맥전환 여부에 따라 입출력 처리가 수행되는 과정을 도시한 흐름도이다.
도 2를 참고하면, 단계(S210)에서 입출력 요청 프로세스는 데이터 입출력을 요청할 수 있다.
단계(S220)에서는 커널 모드에서 블록입출력 구조체에 입출력을 등록할 수 있다.
단계(S230)에서는 현재 디바이스에 대기중인 입출력과 함께 디스크 드라이브의 해드의 움직임을 줄이기 위해 입출력을 합치거나(merge) 순서를 바꿀 수 있다. 이와 같이 입출력을 핸들해주는 것은 엘리베이터 알고리즘에 의해 이루어질 수 있으며, 시스템측면에서 보는 LBA(Logical Block Address)에 의해서 이루어질 수 있다.
단계(S240)에서 상기 입출력 요청 프로세스가 입출력을 직접 진행할 것인지 또는 문맥전환을 통해 수행할 것인지 여부를 선택할 수 있다. 여기서, 입출력의 직접 진행 또는 문맥전환을 통한 수행 여부를 결정하기 위해 입출력 응답시간 및 연산장치의 효율성 중 적어도 하나를 고려할 수 있다.
단계(S250)에서는 상기 입출력 요청 프로세스가 입출력을 직접 진행하는 것으로 결정된 경우, 프로세스가 입출력을 직접 처리할 수 있다.
단계(S260)에서는 입출력 요청 프로세스가 직접 입출력을 처리하지 않고 문맥전환을 통해 입출력을 수행하고자 하는 경우, 입출력을 요청한 프로세스는 언플러그 및 휴면 상태(sleep state)로 전환하고, 단계(S270)에서 입출력 스케쥴러를 호출할 수 있다. 이때 프로세스 컨텍스트에서 디바이스 드라이버 컨텍스트로 문맥 전환이 발생할 수 있다.
단계(S280)에서는 디바이스 드라이버가 입출력을 하나씩 처리하게 되며, 모든 입출력 요청이 완료될 때까지 진행될 수 있다. 입출력 요청이 완료되면 다시 문맥전환이 발생하고 입출력 스케쥴러는 휴면상태의 입출력 요청 프로세스를 다시 깨울 수 있다.
즉, 입출력 응답시간 및 연산장치의 효율에 따라 문맥전환 여부를 적절히 선택하여 처리함으로써, 시스템의 성능을 향상시킬 수 있다.
도 5는 본 발명의 일실시예에 있어서, 고속 블록 입출력을 위한 적응성 문맥전환 장치를 도시한 도면이다.
도 5를 참고하면, 고속 블록 입출력을 위한 적응성 문맥전환 장치는 입출력 요청부(510), 연산장치 효율 비교부(520), 및 입출력 수행부(530)를 포함한다. 또한, 고속 블록 입출력을 위한 적응성 문맥전환 장치는 DMA 사용 확인부(미도시)를 더 포함할 수 있다.
입출력 요청부(510)를 통해 프로세스는 입출력 장치에 대하여 입출력을 요청할 수 있다.
DMA 사용 확인부(미도시)는 입출력 장치가 DMA(Direct Memory Access)를 사용하는지 여부를 확인할 수 있다.
연산장치 효율 비교부(520)는 문맥전환(context switching)의 수행 여부에 따른 연산장치 효율을 비교할 수 있다. 여기서, 연산장치 효율 비교부(520)의 세부구성의 일실시예를 도 6을 참고하여 이하에서 더욱 상세하게 설명한다.
도 6을 참고하면, 연산장치 효율 비교부(520)는 연산장치 효율 산출부(610) 및 효율 비교부(620)을 포함할 수 있다.
여기서, 연산장치 효율 산출부(610)는 다시 제1 연산장치 효율 산출부(610), 제2 연산장치 효율 산출부(620)를 포함할 수 있다.
제1 연산장치 효율 산출부(610)는 상기 입출력 장치가 DMA를 사용하지 않는 경우 상기 각 동작에 따른 연산장치의 효율을 산출할 수 있으며, 제2 연산장치 효율 산출부(620)는 상기 입출력 장치가 DMA를 사용하는 경우 상기 각 동작에 따른 연산장치의 효율을 산출할 수 있다.
효율 비교부(620)는 상기 각 동작의 연산장치 효율을 비교할 수 있다. 즉, DMA 사용여부에 따라 산출된 프로세스의 직접 입출력 수행동작시 연산장치의 효율 및 문맥전환을 통한 입출력 수행동작시의 연산장치 효율을 각각 비교할 수 있다.
다시 도 5를 참고하면, 입출력 수행부(530)는 상기 비교 결과에 대응하여 입출력을 수행할 수 있다. 즉, 상기 연산장치 효율의 비교 결과를 기초로 입출력 요청 프로세스가 입출력 처리를 직접수행 또는 문맥전환을 통해 입출력 처리를 수행할 수 있다.
상기와 같이, 하드웨어의 변화에 따라 더욱 효율적으로 주 연산장치를 사용하기 위해 데이터 입출력시 문맥전환을 적절히 수행하도록 함으로써, 하드웨어의 변화에 능동적으로 대처하고 시스템 성능을 향상시킬 수 있다.
또한, 컴퓨팅 기반의 내장형 시스템들(TV, PMP, UMPC, Net-Book 등)에 있어서도, 읽기 요청이 들어올 때마다 문맥전환을 하는 것은 적은 데이터의 적재하는 데 있어서 과부하가 되고 부팅시간을 늘이는 주원인이 될 수 있으므로, 문맥전환을 선택적으로 수행하게 함으로써, 컴퓨팅 기반 시스템에서 부팅시간을 단축할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
도 1은 본 발명의 일실시예에 있어서, 고속 블록 입출력을 위한 적응성 문맥전환 방법을 도시한 흐름도이다.
도 2는 본 발명의 일실시예에 있어서, 문맥전환 여부에 따라 입출력 처리가 수행되는 과정을 도시한 흐름도이다.
도 3은 본 발명의 일실시예에 있어서, 문맥전환을 수행할 경우에 요구되는 시간의 흐름을 도시한 도면이다.
도 4는 본 발명의 일실시예에 있어서, 문맥전환을 수행하지 않고 직접 입출력을 수행하는 경우에 요구되는 시간의 흐름을 도시한 도면이다.
도 5는 본 발명의 일실시예에 있어서, 고속 블록 입출력을 위한 적응성 문맥전환 장치를 도시한 도면이다.
도 6은 도 5에 도시한 고속 블록 입출력을 위한 적응성 문맥전환 장치에 있어서, 연산장치 효율 비교부의 세부 구성을 도시한 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
510 : 입출력 요청부
520 : 연산장치 효율 비교부
530 : 입출력 수행부
610 : 연산장치 효율 산출부
611 : 제1 연산장치 효율 산출부
612 : 제2 연산장치 효율 산출부
620: 효율 비교부

Claims (21)

  1. 프로세스가 입출력 장치에 대하여 데이터의 입출력을 요청하는 단계;
    문맥전환(context switching)의 수행 여부를 결정하는 단계; 및
    상기 문맥전환의 수행 여부의 결정 결과에 대응하여 상기 입출력 장치의 드라이버 컨텍스트로 문맥전환을 수행 또는 상기 프로세스가 직접 상기 입출력을 수행하는 단계
    를 포함하는 것을 특징으로 하는 적응성 문맥전환 방법.
  2. 제1항에 있어서,
    상기 입출력 장치가 고속 블록 장치인지 여부를 판단하는 단계를 더 포함하고,
    상기 입출력 장치가 고속 블록 장치인 경우,
    상기 결정하는 단계 내지 상기 입출력을 수행하는 단계를 수행하는 것을 특징으로 하는 적응성 문맥전환 방법.
  3. 제1항에 있어서,
    상기 문맥전환의 수행 여부를 결정하는 단계는,
    입출력을 요청한 상기 프로세스에서 입출력을 직접 수행하는 제1 입출력 동작의 연산장치 효율 및 상기 입출력 장치의 드라이버 컨텍스트(device driver context)로 문맥전환(context switching)을 통해 입출력을 수행하는 제2 입출력 동작의 연산장치 효율 - 상기 연산장치 효율은 상기 프로세스의 입출력 응답시간에 대한 연산 처리시간의 비율임 - 을 비교하는 것을 특징으로 하는 적응성 문맥전환 방법.
  4. 제3항에 있어서,
    상기 입출력을 수행하는 단계는,
    상기 제1 입출력 동작의 연산장치 효율이 상기 제2 입출력 동작의 연산장치 효율보다 큰 경우, 상기 제1 입출력 동작을 수행하고,
    상기 제2 입출력 동작의 연산장치 효율이 상기 제1 입출력 동작의 연산장치 효율보다 큰 경우, 상기 제2 입출력 동작을 수행하는 것을 특징으로 하는 적응성 문맥전환 방법.
  5. 제3항에 있어서,
    상기 제1 입출력 동작은,
    입출력 완료시까지 입출력을 요청한 상기 프로세스가 입출력 동작을 직접 수행하는 것을 특징으로 하는 적응성 문맥 전환 방법.
  6. 제1항에 있어서,
    상기 문맥전환의 수행 여부를 결정하는 단계는,
    입출력에 소요되는 시간 및 연산장치가 프로세스에 할당되어 연산을 처리한 시간에 기초하여 상기 프로세스의 입출력 응답시간에 대한 연산 처리시간의 비율인 연산장치의 효율을 산출하고 비교하는 것을 특징으로 하는 적응성 문맥전환 방법.
  7. 제1항에 있어서,
    입출력 장치가 DMA(Direct Memory Access)를 사용하는지 여부를 확인하는 단계
    를 더 포함하는 것을 특징으로 하는 적응성 문맥전환 방법.
  8. 제7항에 있어서,
    상기 문맥전환의 수행 여부를 결정하는 단계는,
    상기 입출력 장치가 DMA를 사용하지 않고 문맥전환을 수행하는 경우,
    상기 입출력 장치로부터 인터럽트를 받을 때까지의 응답대기시간 및 디바이스 드라이버 문맥에 할당된 시간의 합을 이용하여 연산장치가 프로세스에 할당되어 연산을 처리한 시간을 산출하는 것을 특징으로 하는 적응성 문맥전환 방법.
  9. 제7항에 있어서,
    상기 문맥전환의 수행 여부를 결정하는 단계는,
    상기 입출력 장치가 DMA를 사용하지 않고 문맥전환을 수행하지 않는 경우,
    디바이스 드라이버 문맥에 할당된 시간을 이용하여 연산장치가 프로세스에 할당되어 연산을 처리한 시간을 산출하는 것을 특징으로 하는 적응성 문맥전환 방법.
  10. 제7항에 있어서,
    상기 문맥전환의 수행 여부를 결정하는 단계는,
    상기 입출력 장치가 DMA를 사용하고 문맥전환을 수행하는 경우,
    상기 입출력 장치로부터 인터럽트를 받을 때까지의 응답대기시간 및 디바이스 드라이버 문맥에 할당된 시간의 두 배를 이용하여 연산장치가 프로세스에 할당되어 연산을 처리한 시간을 산출하는 것을 특징으로 하는 적응성 문맥전환 방법.
  11. 제7항에 있어서,
    상기 문맥전환의 수행 여부를 결정하는 단계는,
    상기 입출력 장치가 DMA를 사용하고 문맥전환을 수행하지 않는 경우,
    디바이스 드라이버 문맥에 할당된 시간을 이용하여 연산장치가 프로세스에 할당되어 연산을 처리한 시간을 산출하는 것을 특징으로 하는 적응성 문맥전환 방법.
  12. 제8항 내지 제11항 중 어느 하나의 항에 있어서,
    상기 디바이스 드라이버 문맥에 할당된 시간은,
    디스크의 버퍼 캐쉬에서 버스를 통해 메모리로 데이터를 전송하는데 소요되 는 시간을 이용하여 산출하는 것을 특징으로 하는 적응성 문맥전환 방법.
  13. 제1항에 있어서,
    상기 입출력 요청이 있는 경우, 상기 입출력을 수행하기에 앞서 상기 입출력 장치의 큐(queue)에 응답 대기중인 요청이 있는지 여부를 판단하는 단계
    를 더 포함하고,
    상기 입출력을 수행하는 단계는,
    상기 입출력 장치의 큐(queue)에 응답 대기중인 요청이 있는 경우, 상기 입출력 장치의 드라이버 컨텍스트(device driver context)로 문맥전환(context switching)을 수행하여 상기 입출력을 수행하는 것을 특징으로 하는 적응성 문맥전환 방법.
  14. 프로세스가 입출력 장치에 대하여 입출력을 요청하는 입출력 요청부;
    문맥전환(context switching)의 수행 여부를 결정하는 연산장치 효율 비교부; 및
    상기 문맥전환의 수행 여부의 결정 결과에 대응하여 상기 입출력 장치의 드라이버 컨텍스트로 문맥전환을 수행 또는 상기 프로세스가 직접 입출력을 수행하는 입출력 수행부
    를 포함하는 적응성 문맥전환 장치.
  15. 제14항에 있어서,
    입출력 장치가 DMA(Direct Memory Access)를 사용하는지 여부를 확인하는 DMA 사용 확인부
    를 더 포함하고,
    상기 연산장치 효율 비교부는
    입출력 요청 프로세스에서 입출력을 직접 수행하는 제1 입출력 동작 및 디바이스 드라이버 컨텍스트(device driver context)로 문맥전환(context switching)을 통해 입출력을 수행하는 제2 입출력 동작 각각의 연산장치 효율 - 상기 연산장치 효율은 상기 프로세스의 입출력 응답시간에 대한 연산 처리시간의 비율임 - 을 산출하는 연산장치 효율 산출부; 및
    상기 각 동작의 연산장치 효율을 비교하는 효율 비교부
    를 포함하는 것을 특징으로 하는 적응성 문맥전환 장치.
  16. 제15항에 있어서,
    상기 연산장치 효율 산출부는,
    상기 입출력 장치가 DMA를 사용하지 않는 경우 상기 제1 입출력 동작 및 상기 제2 입출력 동작에 따른 연산장치의 효율을 산출하는 제1 연산장치 효율 산출부; 및
    상기 입출력 장치가 DMA를 사용하는 경우 상기 제1 입출력 동작 및 상기 제2 입출력 동작에 따른 연산장치의 효율을 산출하는 제2 연산장치 효율 산출부
    를 포함하는 것을 특징으로 하는 적응성 문맥전환 장치.
  17. 제16항에 있어서,
    상기 제1 연산장치 효율 산출부 및 상기 제2 연산장치 효율 산출부는,
    입출력에 소요되는 시간 및 상기 연산장치가 프로세스에 할당되어 연산을 처리한 시간에 기초하여 연산장치의 효율을 산출하는 것을 특징으로 하는 적응성 문맥전환 장치.
  18. 제17항에 있어서,
    상기 제1 연산장치 효율 산출부는,
    문맥전환을 수행하는 경우,
    상기 입출력 장치로부터 인터럽트를 받을 때까지의 응답대기시간 및 디바이스 드라이버 문맥에 할당된 시간의 합을 이용하여 상기 연산장치가 프로세스에 할당되어 연산을 처리한 시간을 산출하고,
    문맥전환을 수행하지 않는 경우,
    디바이스 드라이버 문맥에 할당된 시간을 이용하여 상기 연산장치가 프로세스에 할당되어 연산을 처리한 시간을 산출하는 것을 특징으로 하는 적응성 문맥전환 장치.
  19. 제17항에 있어서,
    상기 제2 연산장치 효율 산출부는,
    문맥전환을 수행하는 경우,
    상기 입출력 장치로부터 인터럽트를 받을 때까지의 응답대기시간 및 디바이 스 드라이버 문맥에 할당된 시간의 두 배를 이용하여 상기 연산장치가 프로세스에 할당되어 연산을 처리한 시간을 산출하고,
    문맥전환을 수행하지 않는 경우,
    디바이스 드라이버 문맥에 할당된 시간을 이용하여 상기 연산장치가 프로세스에 할당되어 연산을 처리한 시간을 산출하는 것을 특징으로 하는 적응성 문맥전환 장치.
  20. 제14항에 있어서,
    상기 입출력 장치가 고속 블록 장치인지 여부를 판단하는 고속 블록 장치 판단부
    를 더 포함하는 것을 특징으로 하는 적응성 문맥전환 장치.
  21. 제14항에 있어서,
    상기 입출력 요청이 있는 경우, 상기 입출력을 수행하기에 앞서 상기 입출력 장치의 큐(queue)에 응답 대기중인 요청이 있는지 여부를 판단하는 응답 대기 판단부
    를 더 포함하고,
    상기 입출력 수행부는,
    상기 입출력 장치의 큐(queue)에 응답 대기중인 요청이 있는 경우, 상기 입출력 장치의 드라이버 컨텍스트(device driver context)로 문맥전환(context switching)을 수행하여 상기 입출력을 수행하는 것을 특징으로 하는 적응성 문맥전환 장치.
KR1020080118331A 2008-11-26 2008-11-26 고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치 KR101014028B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020080118331A KR101014028B1 (ko) 2008-11-26 2008-11-26 고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치
PCT/KR2009/006992 WO2010062112A2 (en) 2008-11-26 2009-11-25 Apparatus and method for adaptive context switching scheduling scheme for fast block input and output
US13/112,671 US8826295B2 (en) 2008-11-26 2011-05-20 Apparatus and method for adaptive context switching scheduling scheme for fast block input and output
US14/447,471 US9841995B2 (en) 2008-11-26 2014-07-30 Apparatus and method for adaptive context switching scheduling scheme for fast block input and output

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080118331A KR101014028B1 (ko) 2008-11-26 2008-11-26 고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20100059530A KR20100059530A (ko) 2010-06-04
KR101014028B1 true KR101014028B1 (ko) 2011-02-14

Family

ID=42226255

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080118331A KR101014028B1 (ko) 2008-11-26 2008-11-26 고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치

Country Status (3)

Country Link
US (2) US8826295B2 (ko)
KR (1) KR101014028B1 (ko)
WO (1) WO2010062112A2 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101014028B1 (ko) * 2008-11-26 2011-02-14 한양대학교 산학협력단 고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치
US9996390B2 (en) 2014-06-10 2018-06-12 Samsung Electronics Co., Ltd. Method and system for performing adaptive context switching

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000207227A (ja) 1999-01-14 2000-07-28 Sony Corp 演算装置
KR20010070469A (ko) * 2000-01-07 2001-07-25 비센트 비.인그라시아, 알크 엠 아헨 고속의 낮은 오버헤드 콘텍스트 스위치를 실행하는디바이스 및 방법
KR20040074628A (ko) * 2004-02-18 2004-08-25 마이크로소프트 코포레이션 코프로세서의 성능을 개선하기 위한 시스템 및 방법
KR20060063643A (ko) * 2004-12-03 2006-06-12 마이크로소프트 코포레이션 운영 체제의 성능을 향상시키는 방법 및 시스템

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659749A (en) * 1995-05-08 1997-08-19 National Instruments Corporation System and method for performing efficient hardware context switching in an instrumentation system
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US7320065B2 (en) * 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
WO2004006105A2 (en) * 2002-07-08 2004-01-15 Globespanvirata Incorporated Dma scheduling mechanism
US7080374B2 (en) * 2002-12-18 2006-07-18 Bea Systems, Inc. System and method for using native code interpretation to move threads to a safe state in a run-time environment
US6976100B2 (en) * 2003-04-25 2005-12-13 International Business Machines Corporation Autonomic I/O adapter response performance optimization using polling
US6922740B2 (en) * 2003-05-21 2005-07-26 Intel Corporation Apparatus and method of memory access control for bus masters
US7149832B2 (en) * 2004-11-10 2006-12-12 Microsoft Corporation System and method for interrupt handling
DE102004061339A1 (de) * 2004-12-20 2006-06-29 Infineon Technologies Ag Scheduling-Verfahren, insbesondere Kontex-Scheduling-Verfahren, und Einrichtung zur Verwendung bei einem Scheduling-Verfahren
JP2006279466A (ja) * 2005-03-29 2006-10-12 Fujitsu Ltd 監視システム、監視プログラム及び監視方法
US8010740B2 (en) * 2006-06-08 2011-08-30 Bitmicro Networks, Inc. Optimizing memory operations in an electronic storage device
US20080165800A1 (en) * 2007-01-09 2008-07-10 Chen Wen-Tzer T Method and apparatus to provide dynamic cost of context switch to application for performance optimization
US20080281852A1 (en) * 2007-05-11 2008-11-13 Nokia Corporation Method, apparatus and computer program product for providing an adaptive framework for a metadata-context switch
US7802071B2 (en) * 2007-07-16 2010-09-21 Voltaire Ltd. Device, system, and method of publishing information to multiple subscribers
KR101014028B1 (ko) * 2008-11-26 2011-02-14 한양대학교 산학협력단 고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000207227A (ja) 1999-01-14 2000-07-28 Sony Corp 演算装置
KR20010070469A (ko) * 2000-01-07 2001-07-25 비센트 비.인그라시아, 알크 엠 아헨 고속의 낮은 오버헤드 콘텍스트 스위치를 실행하는디바이스 및 방법
KR20040074628A (ko) * 2004-02-18 2004-08-25 마이크로소프트 코포레이션 코프로세서의 성능을 개선하기 위한 시스템 및 방법
KR20060063643A (ko) * 2004-12-03 2006-06-12 마이크로소프트 코포레이션 운영 체제의 성능을 향상시키는 방법 및 시스템

Also Published As

Publication number Publication date
WO2010062112A2 (en) 2010-06-03
US8826295B2 (en) 2014-09-02
WO2010062112A3 (en) 2010-08-12
US20110239225A1 (en) 2011-09-29
KR20100059530A (ko) 2010-06-04
US9841995B2 (en) 2017-12-12
US20140337858A1 (en) 2014-11-13

Similar Documents

Publication Publication Date Title
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
KR100977662B1 (ko) 2-레벨 인터럽트 서비스 루틴을 제공하기 위한 방법 및 프로세서
US9299121B2 (en) Preemptive context switching
JP5498505B2 (ja) データバースト間の競合の解決
JP2011526390A (ja) 仮想化環境における割り込みメッセージ終了のレイジー処理
US7366814B2 (en) Heterogeneous multiprocessor system and OS configuration method thereof
US8402172B2 (en) Processing an input/output request on a multiprocessor system
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
US20120200579A1 (en) Process Device Context Switching
US10545890B2 (en) Information processing device, information processing method, and program
US20170212852A1 (en) Method and accelerator unit for interrupt handling
US20150268985A1 (en) Low Latency Data Delivery
US20130125131A1 (en) Multi-core processor system, thread control method, and computer product
US8141077B2 (en) System, method and medium for providing asynchronous input and output with less system calls to and from an operating system
KR101014028B1 (ko) 고속 블록 입출력을 위한 적응성 문맥전환 방법 및 장치
US9286129B2 (en) Termination of requests in a distributed coprocessor system
CN112114967B (zh) 一种基于服务优先级的gpu资源预留方法
JP2005092780A (ja) リアルタイムプロセッサシステム及び制御方法
CN113515388A (zh) 一种进程调度方法、装置、计算设备及可读存储介质
JP2004326782A (ja) 暗黙の通知を伴うデータ転送
JP4631442B2 (ja) プロセッサ
CN113439260A (zh) 针对低时延存储设备的i/o完成轮询
JP2015197802A (ja) 情報処理装置、情報処理方法及びプログラム
JP7157542B2 (ja) プリフェッチコントローラ
US20240134710A1 (en) Process allocation control device, process allocation control method, and recording medium storing process allocation control program

Legal Events

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

Payment date: 20131230

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141203

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160104

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180102

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 10