KR101271211B1 - 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 - Google Patents
다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 Download PDFInfo
- Publication number
- KR101271211B1 KR101271211B1 KR1020090076168A KR20090076168A KR101271211B1 KR 101271211 B1 KR101271211 B1 KR 101271211B1 KR 1020090076168 A KR1020090076168 A KR 1020090076168A KR 20090076168 A KR20090076168 A KR 20090076168A KR 101271211 B1 KR101271211 B1 KR 101271211B1
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- input
- output
- event
- execution
- Prior art date
Links
Images
Classifications
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/504—Resource capping
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
본 발명은 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법에 관한 것으로, 입출력 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하고, 쓰레드로부터의 입출력 이벤트 요청 시 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하여 그 결과에 따라 입출력 이벤트의 처리 작업을 관리한다. 본 발명에 따르면, 본 발명에 따른 다중 쓰레드의 비동기 입출력 장치는 비동기 입출력 시스템상에서 동시에 처리되는 쓰레드의 수를 실행 쓰레드 한도만큼으로 제한함으로써, 쓰레드의 콘텍스트 스위칭 오버헤드에 따른 성능 저하를 방지하고, 효율적인 쓰레드 관리가 가능하게 된다.
Description
본 발명은 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법에 관한 것으로, 컴퓨터 운영체제에서 다중 쓰레드가 비동기 입출력을 수행할 때 성능을 최적화하여 효율적인 쓰레드 관리를 위한 장치 및 방법에 관한 것이다.
본 발명은 지식경제부 및 정보통신연구진흥원의 IT원천기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2008-F-026-01, 과제명: 공개 SW 플랫폼 고도화를 위한 리눅스 커널 기술개발].
일반적으로, 리눅스 운영체제에서의 비동기 입출력 시스템의 구조는 비동기 입출력 시스템에서 입출력 콘텍스트와 다수의 입출력 제어블록을 이용하여 수행된다.
사용자로부터의 요청에 따라 쓰레드가 비동기 입출력 작업을 요청하면, 사용자의 요청에 따라 입출력 제어블록이 생성되어 입출력 콘텍스트에 연결된다. 이때, 생성된 입출력 제어블록은 입출력 콘텍스트에 입출력 작업을 요청하고, 입출력 콘텍스트는 입출력 제어블록의 요청에 따라 실질적인 입출력 작업을 수행한다. 여기 서, 입출력 제어블록은 입출력 시스템에 의해 입출력 작업이 완료되면, 삭제된다.
한편, 입출력 시스템은 입출력 작업 결과인 입출력 이벤트를 링 버퍼에 저장한다. 이때, 링 버퍼는 입출력 콘텍스트 마다 하나씩 대응되도록 존재하게 되며, 입출력 시스템은 해당 입출력 콘텍스트에 대응하는 링 버퍼에 입출력 이벤트를 저장한다.
이후, 쓰레드는 링 버퍼로부터 입출력 이벤트를 가져가서 입출력 작업을 수행하고, 그 결과를 처리한다.
그러나, 이러한 쓰레드 처리 방식의 경우, 다중 쓰레드가 비동기 입출력을 수행하는 경우의 쓰레드 제어에 관한 고려가 되어 있지 않다. 예를 들어, 100개의 쓰레드가 입출력 이벤트를 요청했을 때, 링 버퍼에 충분한 개수의 이벤트가 존재하면, 100개의 쓰레드가 입출력 이벤트를 모두 가져가서 동시에 처리하게 된다. 이렇게 되면, 너무 많은 쓰레드가 동시에 실행되기 때문에, 쓰레드의 컨텍스트 스위칭 오버헤드가 커져서 성능이 떨어지게 된다.
이와 같이, 다중 쓰레드를 이용할 때 적절한 쓰레드의 수를 정하고 쓰레드의 실행을 제어하는 것이 중요하며, 비동기 입출력 시스템에서 다중 쓰레드가 효율적으로 비동기 입출력을 처리할 수 있게 하는 기법이 필요하다.
상기한 문제점을 해결하기 위하여 본 발명은 다중 쓰레드가 동시에 비동기 입출력을 처리할 때 쓰레드를 효율적으로 제어하여 시스템의 성능을 높이도록 하는 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법을 제공함에 목적이 있다.
상기한 목적을 달성하기 위한 본 발명에 다른 다중 쓰레드의 비동기 입출력 처리 장치는, 쓰레드로부터 입출력 작업 요청이 있는 경우, 각 쓰레드에 의해 요청된 입출력 작업을 수행하는 입출력 처리부, 상기 입출력 처리부의 입출력 작업 처리 결과에 따른 입출력 이벤트를 저장하는 링 버퍼, 해당 입출력 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하고, 상기 쓰레드로부터의 입출력 이벤트 요청 시 상기 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하여 그 결과에 따라 상기 링 버퍼에 저장된 입출력 이벤트의 처리 작업을 관리하는 메인 제어부를 포함한다.
상기 메인 제어부는 해당 입출력 시스템 내에 설치된 프로세서 수 만큼으로 상기 실행 쓰레드 한도를 설정하는 것을 특징으로 한다.
상기 메인 제어부는 해당 입출력 시스템 내에서 실행 중인 쓰레드의 수를 카운트하는 것을 특징으로 한다.
상기 메인 제어부는 상기 쓰레드에 입출력 이벤트 할당 시 상기 실행 쓰레드 수를 증가시키고, 상기 쓰레드에 할당된 입출력 이벤트의 처리 완료 시 상기 실행 쓰레드 수를 감소시키는 것을 특징으로 한다.
상기 메인 제어부는 상기 실행 쓰레드 수가 상기 실행 쓰레드 한도 이상이면, 상기 쓰레드를 비활성화시키고, 해당 쓰레드 정보를 대기목록에 추가하는 것을 특징으로 한다.
상기 메인 제어부는 현재 실행 중인 쓰레드의 수가 상기 실행 쓰레드 한도 미만이 되면, 상기 대기목록상에 등록된 쓰레드를 활성화시켜, 해당 쓰레드에 입출력 이벤트를 할당하는 것을 특징으로 한다.
상기 메인 제어부는 상기 쓰레드로부터 입출력 이벤트 요청 시 상기 링 버퍼에 입출력 이벤트가 존재하는지 확인하여, 상기 링 버퍼에 입출력 이벤트가 존재하지 않으면, 해당 쓰레드에 의해 요청된 작업을 대기 목록에 추가하는 것을 특징으로 한다. 이때, 상기 메인 제어부는 상기 링 버퍼에 하나 이상의 입출력 이벤트가 등록되면, 대기목록상의 쓰레드를 활성화시켜 해당 쓰레드에 입출력 이벤트를 할당하는 것을 특징으로 한다.
한편, 상기 실행 쓰레드 한도, 상기 실행 쓰레드 수, 및 대기목록상의 쓰레드 정보 중 적어도 하나를 포함하는 입출력 콘텍스트 저장부를 더 포함한다.
또한, 상기 쓰레드로부터 입출력 작업 요청이 있는 경우, 각 쓰레드의 입출력 작업 요청에 대응하여 생성되며, 상기 입출력 처리부에 의해 입출력 작업이 수행되는 동안, 해당 입출력 작업에 대한 처리 정보가 저장되는 입출력 제어부를 더 포함하고, 상기 입출력 제어부는 상기 입출력 처리부에 의해 대응하는 입출력 작업이 완료되면, 제거되는 것을 특징으로 한다.
한편, 상기와 같은 목적을 달성하기 위한 본 발명에 따른 다중 쓰레드의 비동기 입출력 처리 방법은, 비동기 입출력 처리 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하는 단계, 적어도 하나의 쓰레드로부터의 요청에 따라 입출력 작업을 수행하고, 작업 수행 결과에 따른 입출력 이벤트를 링 버퍼에 저장하는 단계, 상기 쓰레드로부터 입출력 이벤트 요청 시, 상기 설정하는 단계에서 설정된 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하는 단계, 및 상기 비교하는 단계의 비교 결과에 따라, 상기 링 버퍼로부터 입출력 이벤트를 추출하여 해당 쓰레드에 할당하는 단계를 포함한다.
상기 설정하는 단계에서, 상기 실행 쓰레드 한도는 해당 입출력 시스템 내에 설치된 프로세서 수 만큼으로 설정하는 것을 특징으로 한다.
해당 입출력 시스템 내에서 실행 중인 쓰레드의 수를 카운트하는 단계를 더 포함한다.
상기 쓰레드에 입출력 이벤트 할당 시, 상기 실행 쓰레드 수를 증가시키고, 상기 쓰레드에 할당된 입출력 이벤트 처리 완료 시, 상기 실행 쓰레드 수를 감소시키는 것을 특징으로 한다.
상기 비교하는 단계의 비교 결과, 현재 실행 중인 쓰레드의 수가 상기 실행 쓰레드 한도 이상이면 상기 쓰레드를 비활성화시키고, 해당 쓰레드 정보를 대기목록에 추가하는 단계를 더 포함한다.
현재 실행 중인 쓰레드의 수가 상기 실행 쓰레드 한도 미만이 되면, 상기 대기목록상에 등록된 쓰레드를 활성화시켜, 해당 쓰레드에 입출력 이벤트를 할당하는 것을 특징으로 한다.
상기 할당하는 단계 이전에, 상기 링 버퍼에 입출력 이벤트가 존재하는지 확인하는 단계를 더 포함한다.
상기 확인하는 단계의 확인 결과, 상기 링 버퍼에 입출력 이벤트가 존재하지 않는 경우, 상기 입출력 이벤트를 요청한 쓰레드를 비활성화시키고, 해당 쓰레드 정보를 대기목록에 추가하는 단계를 더 포함한다.
상기 대기목록에 추가하는 단계 이후에, 상기 링 버퍼에 입출력 이벤트가 등록하게 되면, 대기목록상의 쓰레드를 활성화시켜 해당 쓰레드에 입출력 이벤트를 할당하는 것을 특징으로 한다.
본 발명에 따르면, 비동기 입출력 시스템에서 다중 쓰레드가 비동기 입출력을 효율적으로 수행할 수 있도록 하여 성능을 향상시키는 효과가 있다.
또한, 본 발명은 다중 쓰레드가 비동기 입출력을 이용하는 소프트웨어를 개발할 때, 사용자가 성능 향상을 위해서 별도의 쓰레드 관리와 제어를 하지 않아도 편리하게 성능이 최적화된 프로그램을 제공할 수 있는 이점이 있다.
또한, 본 발명에 따른 다중 쓰레드의 비동기 입출력 장치는 비동기 입출력 시스템상에서 동시에 처리되는 쓰레드의 수를 실행 쓰레드 한도만큼으로 제한함으로써, 쓰레드의 컨텍스트 스위칭 오버헤드에 따른 성능 저하를 방지하는 효과가 있다.
또한, 비동기 입출력 시스템상에 설치된 프로세서를 모두 활용함으로써 입출 력 작업 효율을 최대화할 수 있는 이점이 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
도 1 및 도 2는 본 발명에 따른 다중 쓰레드의 비동기 입출력 처리 장치의 구성을 설명하는데 참조되는 도이다.
본 발명에 따른 다중 쓰레드의 비동기 입출력 처리 장치는 비동기 입출력 시스템상에서 실행 쓰레드 한도를 설정하여, 해당 입출력 시스템에서 동시에 처리 가능한 쓰레드의 수를 제한한다. 이때, 실행 쓰레드 한도는 해당 입출력 시스템에 설치된 프로세서를 최대로 활용하고자, 해당 입출력 시스템에 설치된 프로세서의 수 만큼으로 설정한다.
먼저, 도 1은 비동기 입출력 시스템상에서 실행중인 쓰레드의 수가 실행 쓰레드 한도 미만인 경우의 동작을 설명하는데 참조되는 도면이다. 이때, 도 1에서는 쓰레드1(T1)이 이미 실행 중인 상태에서 쓰레드2(T2)에 의해 입출력 이벤트 요청이 있는 경우의 실시예를 나타낸 것이다.
도 1을 참조하면, 본 발명에 따른 다중 쓰레드의 비동기 입출력 처리 장치는 메인 제어부(10), 입출력 제어부(20), 입출력 처리부(30), 링 버퍼(40), 및 입출력 콘텍스트 저장부(50)를 포함한다.
메인 제어부(10)는 해당 입출력 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정한다. 이때, 실행 쓰레드 한도는 해당 시스템 내에 설치된 프로세서 의 수 만큼으로 설정한다. 메인 제어부(10)에 의해 설정된 실행 쓰레드 한도는 입출력 콘텍스트에 삽입된다. 이후, 메인 제어부(10)는 해당 입출력 시스템 내에서 쓰레드에 의해 입출력 이벤트가 처리되는 동안, 실행 중인 쓰레드의 수를 카운트한다. 마찬가지로, 메인 제어부(10)에 의해 카운트 되는 실행 쓰레드 수는 입출력 콘텍스트에 삽입된다.
메인 제어부(10)는 (a)와 같이 쓰레드2(T2)로부터 메인 제어부(10)로 입출력 작업이 요청되면, 쓰레드2(T2)로부터 요청된 입출력 작업에 대응하여 입출력 제어부(20)를 생성한다. 여기서, 입출력 제어부(20)는 복수의 쓰레드로부터 입출력 작업 요청이 있는 경우 쓰레드로부터 요청된 입출력 작업에 대응하여 각각 생성된다.
이때, 메인 제어부(10)는 (b1) 내지 (b3)과 같이 입출력 제어부(20)로 입출력 작업 요청 신호를 전달하고, 각 입출력 제어부(20)는 (c1) 내지 (c3)과 같이 입출력 처리부(30)로 입출력 작업을 요청하는 신호를 출력한다.
또한, 입출력 제어부(20)에는 해당 입출력 작업에 대한 정보가 저장된다. 예를 들어, 입출력 제어부(20)에는 사용자 버퍼 주소, 파일 기술자, 입출력 작업 종류 등이 저장된다. 따라서, 입출력 제어부(20)는 저장된 입출력 작업에 대한 처리 정보에 근거하여, 해당 입출력 작업이 완료되기까지 입출력 처리부(30)로 입출력 작업을 요청한다.
한편, 입출력 제어부(20)는 입출력 처리부(30)에 의해 해당 입출력 작업이 완료되면, 메인 제어부(10)에 의해 제거된다.
입출력 처리부(30)는 각 입출력 제어부(20)로부터의 입출력 작업 요청에 따 라 입출력 작업을 수행한다. 입출력 처리부(30)는 입출력 작업 완료 후, (d)와 같이 입출력 작업 결과에 따른 입출력 이벤트를 링 버퍼(40)에 저장한다.
한편, 메인 제어부(10)는 쓰레드2(T2)로부터 요청된 입출력 작업에 대응하는 입출력 이벤트를 링 버퍼(40)에 저장한다. 이후, 쓰레드2(T2)로부터 입출력 이벤트 요청이 있으면, 메인 제어부(10)는 링 버퍼(40)로부터 입출력 이벤트를 추출하여 쓰레드2(T2)에 할당한다. 링 버퍼(40)는 앞선 순위의 입출력 이벤트부터 차례로 할당한다.
이때, 메인 제어부(10)는 해당 입출력 이벤트를 쓰레드2(T2)에 할당하기 전에, 현재 실행 중인 쓰레드 수와 실행 쓰레드 한도를 비교하여 실행 쓰레드 수가 실행 쓰레드 한도 미만인지를 확인한다. 메인 제어부(10)는 도 1과 같이, 실행 쓰레드 수가 실행 쓰레드 한도 미만인 경우에만, 링 버퍼(40)로부터 입출력 이벤트를 추출하여 쓰레드2(T2)에 할당한다.
한편, 메인 제어부(10)는 쓰레드2(T2)로부터 입출력 이벤트 요청 시, 링 버퍼(40)에 입출력 이벤트가 존재하는지 확인한다. 만일, 링 버퍼(40)에 입출력 이벤트가 존재하면, 메인 제어부(10)는 (g),(h)와 같이 링 버퍼(40)에 등록된 입출력 이벤트를 호출하여 쓰레드2(T2)에 입출력 이벤트를 할당한다. 따라서, 쓰레드2(T2)는 링 버퍼(40)로부터 추출된 입출력 이벤트를 처리한다.
반면, 쓰레드2(T2)로부터 입출력 이벤트 요청 시, 링 버퍼(40)에 입출력 이벤트가 존재하지 않으면, 메인 제어부(10)는 쓰레드2(T2)를 슬립모드로 전환하여 비활성화시킨 후 대기목록에 추가한다. 대기목록은 입출력 콘텍스트 저장부(50)의 입출력 콘텍스트상에 등록된다. 추후, 입출력 처리부(30)에 의해 해당 입출력 이벤트가 링 버퍼(40)에 등록된 경우, 메인 제어부(10)는 대기목록상의 쓰레드2(T2)를 다시 활성화시킨 후, 링 버퍼(40)에 등록된 입출력 이벤트를 쓰레드2(T2)에 할당한다. 따라서, 쓰레드2(T2)는 링 버퍼(40)로부터 추출된 입출력 이벤트를 처리한다.
((도 2->)도 1은 실행 쓰레드 수가 한도 이하인 경우의
실시예를
도시한 것으로, 실행 쓰레드 수가 한도 이하인 경우에도 링 버퍼에 입출력 이벤트가 없으면 비활성화되어 대기 목록에 추가하는 동작을
일예로서
설명한 것입니다.
한편, (
도3
->)도 2는 실행 쓰레드 수가 한도를 초과한 경우의
실시예를
도시한 것으로, 실행 쓰레드 수가 한도를 초과한 경우와, 링 버퍼에 입출력 이벤트가 없는 경우 모두 비활성화되어 대기목록에 추가되는 동작을
일예로서
설명하고 있습니다.)
링 버퍼(40)로부터 호출된 입출력 이벤트를 할당받은 쓰레드는, 메인 제어부(10)로 소정의 신호를 전송한다. 메인 제어부(10)는 쓰레드로부터 전송된 신호에 근거하여 현재실행중인 쓰레드의 수를 증가시킨다. 예를 들어, 현재 쓰레드1(T1)이 이미 실행 중인 경우라면, 이때 쓰레드2(T2)로부터 전송된 신호에 근거하여 실행 쓰레드 수는 '2'가 된다. 물론, 실행 중인 쓰레드(T1, T2)는 입출력 이벤트 처리 완료 시, 메인 제어부(10)로 입출력 작업의 종료를 알리는 소정의 신호를 전송한다. 이때, 메인 제어부(10)는 쓰레드(T1, T2)로부터 전송된 신호에 기초하여 실행 중인 쓰레드의 수를 감소시킨다.
따라서, 메인 제어부(10)는 다수의 쓰레드가 실행될 때마다 실행 쓰레드 수를 카운트하며 실행 쓰레드 한도와 비교함으로써, 실행 쓰레드의 수가 기 설정된 실행 쓰레드 한도를 초과하지 않도록 한다.
한편, 도 2는 본 발명의 실시예에 따른 비동기 입출력 시스템상에서 실행중인 쓰레드의 수가 실행 쓰레드 한도를 초과한 경우의 동작을 설명하는데 참조되는 도면이다. 이때, 도 2에서는 실행 쓰레드 한도가 n인 경우의 실시예를 나타낸 것이다.
다시 말해, 실행 쓰레드 한도는 해당 비동기 입출력 시스템상에 설치된 프로세서의 수로 결정한다. 따라서, 시스템상에 설치된 프로세서의 수가 n개이므로, 실행 쓰레드 한도는 n으로 설정된다.
도 2를 참조하면, n개의 쓰레드가 이미 실행중인 상태에서 (a)와 같이 쓰레드n+1(Tn +1)로부터 메인 제어부(10)로 입출력 작업 요청이 입력되면, 메인 제어부(10)는 쓰레드n+1(Tn +1)의 요청에 대응하여 입출력 제어부(20)를 생성한다. 이때, 메인 제어부(10)는 해당 입출력 제어부(20)로 입출력 요청 신호를 전달하고, 각 입출력 제어부(20)는 입출력 처리부(30)로 입출력 작업을 요청하는 신호를 출력한다.
입출력 처리부(30)는 입출력 제어부(20)로부터의 입출력 작업 요청에 따라 입출력 작업을 수행한다. 이때, 입출력 제어부(20)는 입출력 처리부(30)에 의해 요청된 입출력 작업이 완료되면 삭제된다. 입출력 처리부(30)는 입출력 작업 완료 후, 입출력 작업 결과에 따른 입출력 이벤트를 링 버퍼(40)에 저장한다.
한편, 입출력 처리부(30)는 링 버퍼(40)에 입출력 이벤트를 저장한 후, 메인 제어부(10)로 소정의 신호를 출력한다. 이때, 메인 제어부(10)는 입출력 처리부(30)로부터의 신호로부터 대기목록상에 등록된 쓰레드가 존재하는지 확인한다. 만일, 대기목록상에 등록된 쓰레드가 존재하는 경우, 메인 제어부(10)는 대기목록상의 쓰레드 중 우선순위의 쓰레드를 활성화 시킨 후, 링 버퍼(40)에 등록된 입출력 이벤트를 할당한다. 이는 물론, 현재 실행 중인 쓰레드 수가 실행 쓰레드 한도 미만인 경우에만 해당된다.
한편, 메인 제어부(10)는 쓰레드로부터 입출력 이벤트 요청이 있는 경우, 현재 실행 중인 쓰레드 수와 실행 쓰레드 한도를 비교한다. 실행 쓰레드 수가 실행 쓰레드 한도에 이미 도달한 경우, 메인 제어부(10)는 입출력 이벤트를 요청한 쓰레드를 비활성화시키고, 해당 쓰레드에 대한 정보를 대기목록에 추가한다.
도 2에서, 실행 쓰레드 수는 이미 실행 쓰레드 한도에 도달했으므로, 메인 제어부(10)는 입출력 이벤트를 요청한 쓰레드n+1(Tn +1)을 슬립모드로 전환하여 비활성화시키고, 쓰레드n+1(Tn +1)에 대한 정보를 대기목록에 추가한다.
이때, 메인 제어부(10)는 현재 실행 중인 쓰레드 수와 실행 쓰레드 한도를 실시간으로 비교하며, 실행 쓰레드 수가 실행 쓰레드 한도 미만이 되는지를 확인한다. 만일, 실행 쓰레드 수가 실행 쓰레드 한도 미만이 되면, 메인 제어부(10)는 대 기목록상에 비활성화된 쓰레드를 활성화시키고, 링 버퍼(40)로부터 해당 입출력 이벤트를 추출하여 활성화된 쓰레드에 할당한다.
여기서, 대기목록상의 쓰레드를 활성화시킬 때, 메인 제어부(10)는 대기목록상의 쓰레드 중 우선순위를 갖는 쓰레드 먼저 활성화시킨다.
도 2의 (g)에서와 같이 실행 중인 쓰레드 중 쓰레드1(T1)의 작업이 종료되면, 쓰레드1(T1)은 메인 제어부(10)로 입출력 이벤트의 처리가 완료되었음을 알리는 소정의 신호를 출력한다. 메인 제어부(10)는 쓰레드1(T1)로부터의 신호에 근거하여 실행 쓰레드 수를 1 감소시킨다. 이때, 메인 제어부(10)는 실행 쓰레드 수가 실행 쓰레드 한도 미만이 되므로, 대기목록상의 쓰레드 중 우선순위의 쓰레드를 활성화시킨다. 도 2의 실시예에서는 쓰레드n+1(Tn +1)가 활성화되는 예를 도시하였다.
여기서, 메인 제어부(10)는 대기목록상의 쓰레드를 활성화 시키기 이전에( 또는 그 이후가 될 수도 있다), 링 버퍼(40)에 입출력 이벤트가 존재하는지 확인한다. 만일, 링 버퍼(40)에 입출력 이벤트가 존재하지 않으면, 메인 제어부(10)는 링 버퍼(40)에 입출력 이벤트가 존재할 때까지 쓰레드를 대기목록상에 유지하도록 한다.
한편, 링 버퍼(40)에 입출력 이벤트가 존재하면, 메인 제어부(40)는 쓰레드n+1(Tn+1)를 활성화시킨 후, 링 버퍼(40)에서 입출력 이벤트를 추출하여 쓰레드n+1(Tn+1)에 할당한다. 따라서, 쓰레드n+1(Tn +1)은 할당된 입출력 이벤트를 처리한다.
마찬가지로, 쓰레드n+1(Tn +1)은 입출력 이벤트가 할당되면, 메인 제어부(10)로 소정의 신호를 출력함으로써, 실행 쓰레드 수가 1 증가되도록 한다.
도 3은 본 발명에 따른 쓰레드 및 입출력 콘텍스트의 구조를 나타낸 것이다. 특히, 다중 쓰레드의 비동기 입출력 처리장치에서 입출력 이벤트 처리 시 쓰레드와 입출력 콘텍스트 사이에 이루어지는 동작을 나타낸 것이다.
도 3을 참조하면, 쓰레드는 커널에서 쓰레드와 프로세스를 나타내는 자료구조인 타스크(task) 구조체에 입출력 콘텍스트를 가리키는 입출력 콘텍스트 포인터가 존재한다. 한편, 입출력 콘텍스트에는 사용자 프로세스별로 유지해야 하는 각종 메타정보들이 저장되어 있다.
만일, 쓰레드에 링 버퍼(40)로부터의 입출력 이벤트가 할당되면, 해당 입출력 이벤트 처리 시, 해당 쓰레드는 입출력 콘텍스트로 소정의 신호를 전송함으로써 타스크 구조체의 입출력 콘텍스트 포인터가 입출력 콘텍스트에 연결된다.
입출력 콘텍스트는 해당 입출력 시스템 내에서의 실행 쓰레드 한도(Z)를 관리한다. 또한, 입출력 콘텍스트는 입출력 콘텍스트 포인터를 통해 실행 쓰레드의 개수(N)를 관리하게 된다.
예를 들어, 실행 쓰레드의 입출력 콘텍스트 포인터가 입출력 콘텍스트에 연결되면, 입출력 콘텍스트는 실행 쓰레드의 수를 증가시킨다. 한편, 실행 쓰레드의 작업이 완료되면, 해당 쓰레드의 입출력 콘텍스트 포인터와 입출력 콘텍스트의 연 결이 해제된다. 따라서, 입출력 콘텍스트는 실행 쓰레드의 수를 감소시킨다.
이때, 입출력 콘텍스트는 실행 쓰레드 한도(Z)와 실행 쓰레드의 개수(N)를 비교하며, 동시에 실행되는 실행 쓰레드의 수가 실행 쓰레드 한도(Z)를 초과하지 않도록 관리한다.
상기와 같이 구성되는 본 발명에 따른 다중 쓰레드의 비동기 입출력 처리 방법에 대한 동작을 살펴보면 다음과 같다.
도 4 내지 도 6은 본 발명에 따른 다중 쓰레드의 비동기 입출력 처리 방법에 대한 동작 흐름을 도시한 순서도이다.
먼저, 도 4는 입출력 시스템에서 입출력 작업을 수행하는 절차를 나타낸 것이다. 도 4를 참조하면, 쓰레드로부터 입출력 작업 요청이 있으면(S500), 메인 제어부(10)는 쓰레드로부터의 입출력 작업 요청에 대응하는 입출력 제어부(20)를 생성한다(S510).
입출력 제어부(20)는 쓰레드로부터의 요청에 따라 입출력 처리부(30)로 입출력 작업 요청 신호를 전송하고(S520), 입출력 처리부(30)는 입출력 제어부(20)로부터의 제어신호에 따라 입출력 작업을 수행한다(S530). 이때, 입출력 제어부(20)는 입출력 처리부(30)에 의해 입출력 작업이 완료되면 삭제된다.
한편, 입출력 처리부(30)는 입출력 작업이 완료되면, 입출력 작업 수행 결과로서의 입출력 이벤트를 링 버퍼(40)에 저장한다(S540).
도 4의 'S500' 내지 'S550' 과정은 다수의 쓰레드로부터 입출력 요청이 있을 때마다 반복하여 수행된다. 이후, 메인 제어부(10)는 도 5의 'A' 과정으로 돌아가, 다음 절차를 수행하도록 한다.
한편, 도 5 및 도 6은 쓰레드가 입출력 이벤트를 처리하는 절차를 나타낸 것이다. 도 5를 참조하면, 쓰레드로부터 입출력 이벤트 요청이 있으면(S600), 메인 제어부(10)는 링 버퍼(40)에 등록된 입출력 이벤트가 존재하는지 확인한다(S610).
만일, 링 버퍼(40)에 입출력 이벤트가 존재하지 않으면, 메인 제어부(10)는 해당 쓰레드를 슬립모드로 전환하여 비활성화시키고(S650), 대기목록에 추가하도록 한다(S660).
반면, 쓰레드로부터 입출력 이벤트 요청 시, 링 버퍼(40)에 입출력 이벤트가 존재하면, 메인 제어부(10)는 현재 실행 중인 쓰레드의 수가 설정된 실행 쓰레드 한도 미만인지를 확인한다(S620). 이때, 현재 실행 중인 쓰레드의 수가 설정된 실행 쓰레드 한도 미만인 경우, 메인 제어부(10)는 링 버퍼(40)에 등록된 입출력 이벤트를 추출하여 해당 쓰레드에 할당한다(S630). 한편, 현재 실행 중인 쓰레드의 수가 설정된 실행 쓰레드 한도 이상인 경우, 메인 제어부(10)는 해당 쓰레드를 슬립모드로 전환하여 비활성화시키고(S650), 대기목록에 추가하도록 한다(S660).
이후, 실행 중인 쓰레드의 수가 설정된 실행 쓰레드 한도 미만이 되면, 메인 제어부(10)는 대기목록상의 쓰레드를 활성화시키고, 링 버퍼(40)에 등록된 입출력 이벤트를 추출하여 해당 쓰레드에 할당한다(S630).
따라서, 쓰레드는 메인 제어부(10)에 의해 할당된 입출력 이벤트를 처리하도 록 한다(S640).
도 5의 실시예에는 도시되지 않았으나, 쓰레드는 입출력 이벤트를 처리한 후 메인 제어부(10)에 이를 보고한다. 이때, 메인 제어부(10)는 입출력 이벤트를 처리 완료한 쓰레드의 수 만큼 실행 쓰레드 수를 감소시킨다.
쓰레드에 의한 입출력 이벤트 처리 동작이 완료되면, 메인 제어부(10)는 도 6의 'b' 이후 동작을 수행하도록 한다.
도 6을 참조하면, 메인 제어부(10)는 입출력 처리부(30)에 의해 입출력 작업이 완료되어 입출력 이벤트가 링 버퍼(40)에 저장되거나, 혹은 해당 쓰레드로부터의 입출력 이벤트 처리 동작이 완료되면, 현재 실행중인 쓰레드의 수와 기 등록된 실행 쓰레드 한도를 비교한다(S700).
이때, 현재 실행중인 쓰레드 수가 설정된 실행 쓰레드 한도 미만인 경우, 메인 제어부(10)는 대기목록상에 등록된 쓰레드가 존재하는지 확인한다(S710).
만일, 대기목록상에 등록된 쓰레드가 존재하는 경우, 메인 제어부(10)는 대기목록에서 우선순위의 쓰레드를 활성화시키고(S720), 해당 쓰레드를 대기목록에서 삭제한다(S730). 여기서, 도 6에는 도시되지 않았으나, 메인 제어부(10)는 대기목록상의 쓰레드를 활성화시킨 후, 활성화된 쓰레드의 수만큼 실행중인 쓰레드 수를 증가시키도록 한다.
또한, 메인 제어부(10)는 링 버퍼(40)에 저장된 입출력 이벤트를 호출하여 활성화된 쓰레드에 할당하고(S740), 해당 쓰레드는 메인 제어부(10)에 의해 할당된 입출력 이벤트를 처리한다(S750). 물론, 앞서 설명한 바와 같이, 쓰레드에 의해 입출력 이벤트 처리가 완료되면, 메인 제어부(10)는 실행중인 쓰레드 수를 감소시키도록 한다.
이와 같이, 메인 제어부(10)는 실행 쓰레드의 수를 실시간으로 확인하며 시스템 내에서의 쓰레드를 관리하도록 한다.
반면, 'S700' 과정에서 실행중인 쓰레드 수가 설정된 실행 쓰레드 한도 이상인 경우에는 별도의 이벤트 요청이 없는 한, 실행 쓰레드 수가 실행 쓰레드 한도 미만이 될 때까지 작업을 종료하고 대기하도록 한다. 이후, 실행 쓰레드 수가 실행 쓰레드 한도 미만이 되면, 'S700' 이후 과정을 수행하도록 한다.
실행 쓰레드 수가 실행 쓰레드 한도 미만인 경우, 'S710' 과정에서 대기목록에 등록된 쓰레드가 존재하지 않으면, 다른 쓰레드로부터 입출력 이벤트 요청이 있을 때까지 대기하도록 한다(S760). 이후, 다른 쓰레드로부터 입출력 이벤트 요청이 있으면, 도 5의 'A' 이후 과정을 수행하도록 한다.
이상에서와 같이 본 발명에 따른 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
도 1 은 일반적인 비동기 입출력 시스템의 구성을 도시한 도이다.
도 1 은 본 발명에 따른 비동기 입출력 시스템의 구성을 도시한 도이다.
도 2 는 본 발명의 실시예에 따른 비동기 입출력 시스템의 구성을 도시한 도이다.
도 3 은 본 발명의 실시예에 따른 비동기 입출력 시스템의 동작 설명에 참조되는 예시도이다.
도 4 내지 도 6 은 본 발명에 따른 비동기 입출력 시스템의 입출력 처리 방법에 대한 동작 흐름을 도시한 순서도이다.
Claims (20)
- 삭제
- 다중 쓰레드의 비동기 입출력 처리 장치로서,쓰레드로부터 입출력 작업 요청이 있는 경우, 각 쓰레드에 의해 요청된 입출력 작업을 수행하는 입출력 처리부;상기 입출력 처리부의 입출력 작업 처리 결과에 따른 입출력 이벤트를 저장하는 링 버퍼;해당 입출력 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하고, 상기 쓰레드로부터의 입출력 이벤트 요청 시 상기 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하여 그 결과에 따라 상기 링 버퍼에 저장된 입출력 이벤트의 처리 작업을 관리하는 메인 제어부;를 포함하고,상기 메인 제어부는,해당 입출력 시스템 내에 설치된 프로세서 수 만큼으로 상기 실행 쓰레드 한도를 설정하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 장치.
- 다중 쓰레드의 비동기 입출력 처리 장치로서,쓰레드로부터 입출력 작업 요청이 있는 경우, 각 쓰레드에 의해 요청된 입출력 작업을 수행하는 입출력 처리부;상기 입출력 처리부의 입출력 작업 처리 결과에 따른 입출력 이벤트를 저장하는 링 버퍼;해당 입출력 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하고, 상기 쓰레드로부터의 입출력 이벤트 요청 시 상기 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하여 그 결과에 따라 상기 링 버퍼에 저장된 입출력 이벤트의 처리 작업을 관리하는 메인 제어부;를 포함하고,상기 메인 제어부는,해당 입출력 시스템 내에서 실행 중인 쓰레드의 수를 카운트하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 장치.
- 청구항 3에 있어서,상기 메인 제어부는,상기 쓰레드에 입출력 이벤트 할당 시 상기 실행 쓰레드 수를 증가시키고, 상기 쓰레드에 할당된 입출력 이벤트의 처리 완료 시 상기 실행 쓰레드 수를 감소시키는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 장치.
- 다중 쓰레드의 비동기 입출력 처리 장치로서,쓰레드로부터 입출력 작업 요청이 있는 경우, 각 쓰레드에 의해 요청된 입출력 작업을 수행하는 입출력 처리부;상기 입출력 처리부의 입출력 작업 처리 결과에 따른 입출력 이벤트를 저장하는 링 버퍼;해당 입출력 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하고, 상기 쓰레드로부터의 입출력 이벤트 요청 시 상기 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하여 그 결과에 따라 상기 링 버퍼에 저장된 입출력 이벤트의 처리 작업을 관리하는 메인 제어부;를 포함하고,상기 메인 제어부는,상기 실행 쓰레드 수가 상기 실행 쓰레드 한도 이상이면, 상기 쓰레드를 비활성화시키고, 해당 쓰레드 정보를 대기목록에 추가하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 장치.
- 청구항 5에 있어서,상기 메인 제어부는,현재 실행 중인 쓰레드의 수가 상기 실행 쓰레드 한도 미만이 되면, 상기 대기목록상에 등록된 쓰레드를 활성화시켜, 해당 쓰레드에 입출력 이벤트를 할당하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 장치.
- 다중 쓰레드의 비동기 입출력 처리 장치로서,쓰레드로부터 입출력 작업 요청이 있는 경우, 각 쓰레드에 의해 요청된 입출력 작업을 수행하는 입출력 처리부;상기 입출력 처리부의 입출력 작업 처리 결과에 따른 입출력 이벤트를 저장하는 링 버퍼;해당 입출력 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하고, 상기 쓰레드로부터의 입출력 이벤트 요청 시 상기 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하여 그 결과에 따라 상기 링 버퍼에 저장된 입출력 이벤트의 처리 작업을 관리하는 메인 제어부;를 포함하고,상기 메인 제어부는,상기 쓰레드로부터 입출력 이벤트 요청 시 상기 링 버퍼에 입출력 이벤트가 존재하는지 확인하여, 상기 링 버퍼에 입출력 이벤트가 존재하지 않으면, 해당 쓰레드에 의해 요청된 작업을 대기 목록에 추가하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 장치.
- 청구항 7에 있어서,상기 메인 제어부는,상기 쓰레드로부터 입출력 이벤트 요청 시 상기 링 버퍼에 하나 이상의 입출력 이벤트가 등록되면, 대기목록상의 쓰레드를 활성화시켜 해당 쓰레드에 입출력 이벤트를 할당하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 장치.
- 다중 쓰레드의 비동기 입출력 처리 장치로서,쓰레드로부터 입출력 작업 요청이 있는 경우, 각 쓰레드에 의해 요청된 입출력 작업을 수행하는 입출력 처리부;상기 입출력 처리부의 입출력 작업 처리 결과에 따른 입출력 이벤트를 저장하는 링 버퍼;해당 입출력 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하고, 상기 쓰레드로부터의 입출력 이벤트 요청 시 상기 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하여 그 결과에 따라 상기 링 버퍼에 저장된 입출력 이벤트의 처리 작업을 관리하는 메인 제어부; 및상기 실행 쓰레드 한도, 상기 실행 쓰레드 수, 및 대기목록상의 쓰레드 정보 중 적어도 하나를 포함하는 입출력 콘텍스트 저장부;를 포함하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 장치.
- 다중 쓰레드의 비동기 입출력 처리 장치로서,쓰레드로부터 입출력 작업 요청이 있는 경우, 각 쓰레드에 의해 요청된 입출력 작업을 수행하는 입출력 처리부;상기 입출력 처리부의 입출력 작업 처리 결과에 따른 입출력 이벤트를 저장하는 링 버퍼;해당 입출력 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하고, 상기 쓰레드로부터의 입출력 이벤트 요청 시 상기 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하여 그 결과에 따라 상기 링 버퍼에 저장된 입출력 이벤트의 처리 작업을 관리하는 메인 제어부; 및상기 쓰레드로부터 입출력 작업 요청이 있는 경우, 각 쓰레드의 입출력 작업 요청에 대응하여 생성되며, 상기 입출력 처리부에 의해 입출력 작업이 수행되는 동안, 해당 입출력 작업에 대한 처리 정보가 기록되는 입출력 제어부;를 포함하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 장치.
- 청구항 10에 있어서,상기 입출력 제어부는,상기 입출력 처리부에 의해 대응하는 입출력 작업이 완료되면, 제거되는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 장치.
- 삭제
- 다중 쓰레드의 비동기 입출력 처리 방법으로서,비동기 입출력 처리 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하는 단계;적어도 하나의 쓰레드로부터의 요청에 따라 입출력 작업을 수행하고, 작업 수행 결과에 따른 입출력 이벤트를 링 버퍼에 저장하는 단계;상기 쓰레드로부터 입출력 이벤트 요청 시, 상기 설정하는 단계에서 설정된 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하는 단계;상기 비교하는 단계의 비교 결과에 따라, 상기 링 버퍼로부터 입출력 이벤트를 추출하여 해당 쓰레드에 할당하는 단계; 및상기 비교하는 단계의 비교 결과, 현재 실행 중인 쓰레드의 수가 상기 실행 쓰레드 한도 이상이면 상기 쓰레드를 비활성화시키고, 해당 쓰레드 정보를 대기목록에 추가하는 단계;를 포함하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 방법.
- 청구항 13에 있어서,현재 실행 중인 쓰레드의 수가 상기 실행 쓰레드 한도 미만이 되면, 상기 대기목록상에 등록된 쓰레드를 활성화시켜, 해당 쓰레드에 입출력 이벤트를 할당하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 방법.
- 다중 쓰레드의 비동기 입출력 처리 방법으로서,비동기 입출력 처리 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하는 단계;적어도 하나의 쓰레드로부터의 요청에 따라 입출력 작업을 수행하고, 작업 수행 결과에 따른 입출력 이벤트를 링 버퍼에 저장하는 단계;상기 쓰레드로부터 입출력 이벤트 요청 시, 상기 설정하는 단계에서 설정된 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하는 단계; 및상기 비교하는 단계의 비교 결과에 따라, 상기 링 버퍼로부터 입출력 이벤트를 추출하여 해당 쓰레드에 할당하는 단계;를 포함하고,상기 설정하는 단계에서,상기 실행 쓰레드 한도는 해당 입출력 시스템 내에 설치된 프로세서 수 만큼으로 설정하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 방법.
- 다중 쓰레드의 비동기 입출력 처리 방법으로서,비동기 입출력 처리 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하는 단계;적어도 하나의 쓰레드로부터의 요청에 따라 입출력 작업을 수행하고, 작업 수행 결과에 따른 입출력 이벤트를 링 버퍼에 저장하는 단계;상기 쓰레드로부터 입출력 이벤트 요청 시, 상기 설정하는 단계에서 설정된 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하는 단계;상기 비교하는 단계의 비교 결과에 따라, 상기 링 버퍼로부터 입출력 이벤트를 추출하여 해당 쓰레드에 할당하는 단계; 및해당 입출력 시스템 내에서 실행 중인 쓰레드의 수를 카운트하는 단계;를 포함하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 방법.
- 청구항 16에 있어서,상기 카운트하는 단계는,상기 쓰레드에 입출력 이벤트 할당 시, 상기 실행 쓰레드 수를 증가시키고, 상기 쓰레드에 할당된 입출력 이벤트 처리 완료 시, 상기 실행 쓰레드 수를 감소시키는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 방법.
- 다중 쓰레드의 비동기 입출력 처리 방법으로서,비동기 입출력 처리 시스템상에서 동시에 처리 가능한 실행 쓰레드 한도를 설정하는 단계;적어도 하나의 쓰레드로부터의 요청에 따라 입출력 작업을 수행하고, 작업 수행 결과에 따른 입출력 이벤트를 링 버퍼에 저장하는 단계;상기 쓰레드로부터 입출력 이벤트 요청 시, 상기 설정하는 단계에서 설정된 실행 쓰레드 한도와 현재 실행 중인 쓰레드의 수를 비교하는 단계;상기 링 버퍼에 입출력 이벤트가 존재하는지 확인하는 단계; 및상기 비교하는 단계의 비교 결과에 따라, 상기 링 버퍼로부터 입출력 이벤트를 추출하여 해당 쓰레드에 할당하는 단계;를 포함하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 방법.
- 청구항 18에 있어서,상기 확인하는 단계의 확인 결과,상기 링 버퍼에 입출력 이벤트가 존재하지 않는 경우, 상기 입출력 이벤트를 요청한 쓰레드를 비활성화시키고, 해당 쓰레드 정보를 대기목록에 추가하는 단계;를 더 포함하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 방법.
- 청구항 19에 있어서,상기 링 버퍼에 입출력 이벤트가 등록되면, 대기목록상의 쓰레드를 활성화시 켜 해당 쓰레드에 입출력 이벤트를 할당하는 것을 특징으로 하는 다중 쓰레드의 비동기 입출력 처리 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090076168A KR101271211B1 (ko) | 2009-08-18 | 2009-08-18 | 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 |
US12/816,298 US20110047553A1 (en) | 2009-08-18 | 2010-06-15 | Apparatus and method for input/output processing of multi-thread |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090076168A KR101271211B1 (ko) | 2009-08-18 | 2009-08-18 | 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110018618A KR20110018618A (ko) | 2011-02-24 |
KR101271211B1 true KR101271211B1 (ko) | 2013-06-07 |
Family
ID=43606329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090076168A KR101271211B1 (ko) | 2009-08-18 | 2009-08-18 | 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20110047553A1 (ko) |
KR (1) | KR101271211B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10416897B2 (en) | 2017-03-27 | 2019-09-17 | SK Hynix Inc. | Memory system with latency distribution optimization and an operating method thereof |
CN107172037B (zh) * | 2017-05-11 | 2020-01-07 | 华东师范大学 | 一种多路多通道高速数据流的实时分包解析方法 |
CN109117260B (zh) * | 2018-08-30 | 2021-01-01 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、设备和介质 |
CN110287023B (zh) * | 2019-06-11 | 2021-12-10 | 广州海格通信集团股份有限公司 | 消息处理方法、装置、计算机设备和可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19980050963A (ko) * | 1996-12-21 | 1998-09-15 | 양승택 | 분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법 |
KR100481604B1 (ko) * | 2002-12-23 | 2005-04-08 | 한국전자통신연구원 | 다중 쓰레드 소켓 폴링 서버 시스템 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758184A (en) * | 1995-04-24 | 1998-05-26 | Microsoft Corporation | System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads |
-
2009
- 2009-08-18 KR KR1020090076168A patent/KR101271211B1/ko active IP Right Grant
-
2010
- 2010-06-15 US US12/816,298 patent/US20110047553A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19980050963A (ko) * | 1996-12-21 | 1998-09-15 | 양승택 | 분산 트랜잭션 시스템에서 다중 쓰레드를 이용한 2단계 승인통신방법 |
KR100481604B1 (ko) * | 2002-12-23 | 2005-04-08 | 한국전자통신연구원 | 다중 쓰레드 소켓 폴링 서버 시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR20110018618A (ko) | 2011-02-24 |
US20110047553A1 (en) | 2011-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11294714B2 (en) | Method and apparatus for scheduling task, device and medium | |
US9448864B2 (en) | Method and apparatus for processing message between processors | |
JP5650952B2 (ja) | マルチコア/スレッドのワークグループ計算スケジューラ | |
JP5516744B2 (ja) | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 | |
KR101622168B1 (ko) | 실시간 스케쥴링 방법 및 이를 이용한 중앙처리장치 | |
US9852008B2 (en) | Computer-readable recording medium storing execution information notification program, information processing apparatus, and information processing system | |
JP2009541848A (ja) | コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 | |
CN110187958B (zh) | 一种任务处理方法、装置、系统、设备及存储介质 | |
CN104598426A (zh) | 用于异构多核处理器系统的任务调度方法 | |
US20110107344A1 (en) | Multi-core apparatus and load balancing method thereof | |
JP5408330B2 (ja) | マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム | |
JP2005338985A (ja) | 記憶領域管理方法及びシステム | |
KR101271211B1 (ko) | 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 | |
US10523746B2 (en) | Coexistence of a synchronous architecture and an asynchronous architecture in a server | |
JP5708450B2 (ja) | マルチコアプロセッサシステム、レジスタ利用方法、およびレジスタ利用プログラム | |
CN113031857B (zh) | 数据写入方法、装置、服务器及存储介质 | |
WO2011039887A1 (ja) | 計算機装置 | |
US20140053162A1 (en) | Thread processing method and thread processing system | |
JPWO2003040948A1 (ja) | コンピュータ及び制御方法 | |
JP5776813B2 (ja) | マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム | |
JP4112511B2 (ja) | タスク管理プログラムおよびタスク管理装置 | |
JP2009541852A (ja) | コンピュータマイクロジョブ | |
JP2008225641A (ja) | コンピュータシステム、割り込み制御方法及びプログラム | |
CN106484536B (zh) | 一种io调度方法、装置和设备 | |
US8566829B1 (en) | Cooperative multi-level scheduler for virtual engines |
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 | ||
FPAY | Annual fee payment |
Payment date: 20160527 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170529 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180518 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20190527 Year of fee payment: 7 |