1 |
1
쓰레드 환경의 서버 시스템에서, 쓰레드 풀(110)과 논-블록킹 입출력(non blocking i/o)을 사용하는 통신에이전트(120)를 통해 인터넷(300)을 통한 클라이언트(200)의 요청을 처리하는 서버(100);스택구조로 된 쓰레드 저장소(111)에 미리 준비된 쓰레드(112, 113, 114)를 담고 있으며, 쓰레드 관리자(115)를 통해 불필요한 쓰레드를 제거하는 쓰레드 풀(110);논-블록킹 입출력(non blocking i/o)을 사용하는 접속부(122)와 연결처리부(121)를 포함하고 상기 접속부(122)는 클라이언트의 첫 접속을 받아들이는 역할을 하고, 상기 연결처리부(121)는 클라이언트 접속시 클라이언트 정보를 생성하거나 클라이언트가 보낸 데이터를 받아 쓰레드 풀(110)로 클라이언트의 요청을 전달하는 역할을 가지는 통신에이전트(120);접속부(122)와 연결 처리부(121) 간의 클라이언트 연결 전달을 수행하는 연결저장소(123);등록된 서버와 클라이언트의 네트워크 연결에서 발생하는 I/O Event(connect, accept, read, write)를 감지하여 즉각 처리 가능한 I/O Event가 발생한 서버와 클라이언트의 네트워크 연결을 알려주는 것으로, 클라이언트(300)의 작업요청에 해당되는 쓰레드(112, 113, 114)를 선택하는 셀렉터(130);로 구성됨을 특징으로 하는 논 블록킹 입출력을 이용한 서버의 쓰레드 관리 시스템
|
2 |
2
쓰레드 환경의 서버 시스템에서,클라이언트(200)가 서버(100)에 접속하면 상기 서버(100)는 접속을 인증하고, 인증된 접속의 연결을 쓰레드 저장소(111)에 저장하고,상기 쓰레드 저장소(111)에 저장된 접속 연결을 셀렉터(130)에 등록시키고 접속 완료임을 클라이언트(200)에 전달하고, 상기 서버(100)는 클라이언트의 작업 요청에 따라 클라이언트가 보낸 데이터를 읽을 수 있는 연결이 있을 때까지 기다리다가 데이터를 읽어 들일 수 있는 연결을 가져와 클라이언트가 보낸 데이터를 로딩하고,상기 데이터를 모두 로딩하면 쓰레드 풀(110)에서 쓰레드(112, 113, 114)를 가져오되, 상기 쓰레드 풀(110)에서 로딩할 수 있는 쓰레드가 없으면 가능한 범위 내에서 새로운 쓰레드를 생성하고,상기 로딩된 쓰레드에 클라이언트가 요청한 작업을 수행하고,상기 쓰레드가 요청한 작업을 모두 수행하면 작업의 결과를 클라이언트로 보내고 쓰레드는 대기상태(wait)가 되어 다시 쓰레드 풀(110)에 저장됨을 특징으로 하는 논 블록킹 입출력을 이용한 서버의 쓰레드 관리 방법
|
3 |
3
클라이언트가 서버에 접속하면 서버는 접속을 인증하고, 인증된 접속의 연결을 연결 저장소에 저장하는 쓰레드 환경의 서버시스템에 있어서,상기 서버의 쓰레드 풀(110)에서 클라이언트의 작업수행 요청을 수신하는 단계(S_300);상기 작업수행 요청에 대해 사용할 수 있는 쓰레드가 존재하는지 확인하는 단계(S_310);사용할 수 있는 쓰레드가 존재하지 않으면, 현재 쓰레드의 수와 허용된 쓰레드 수와 비교하는 단계(S_320);상기의 현재 쓰레드의 수와 허용된 쓰레드의 수를 비교(S_320)하여 쓰레드를 더 만들 수 있으면, 허용된 쓰레드 수를 넘지 않는 일정 개수만큼 쓰레드를 새로 생성하는 단계(S_321);상기 생성된 쓰레드를 동작상태로 실행하는 단계(S_325);상기 실행된 쓰레드를 대기상태로 전환하여 쓰레드 풀의 쓰레드 저장소(111)에 저장하는 단계(S_326);상기의 현재 쓰레드 수와 허용된 쓰레드 수를 비교(S_320)하여 쓰레드를 더 만들 수 없으면, 클라이언트의 요청을 처리할 수 없다는 메시지를 생성(S_330) 클라이언트로 처리 불가 메시지를 전송하는 단계(S_331);상기 사용할 수 있는 쓰레드가 존재하는지 확인하는 단계(S_310)에서 사용할 수 있는 쓰레드가 있으면, 쓰레드 저장소(111)에 쓰레드를 요청하는 단계(S_340);상기 요청에 의해 로딩된 쓰레드에 처리할 작업을 전달하는 단계(S_350);상기 쓰레드에 wake-up 메시지를 전달하는 단계(S_360);상기 쓰레드가 상기 클라이언트가 요청한 작업을 수행하는 단계(S_370);상기 쓰레드가 작업을 수행한 결과를 클라이언트에 전송하는 단계(S_380);상기의 S_370 단계에서 작업을 수행한 쓰레드를 쓰레드 풀의 쓰레드 저장소(111)에 저장하는 단계(S_390);를 포함하는 것을 특징으로 하는 논 블록킹 입출력을 이용한 서버의 쓰레드 관리 방법
|
4 |
4
청구항 제 3항에 있어서,상기의 쓰레드를 생성하는 단계(S_322)는,일정 개수만큼 쓰레드를 생성가능 한지 확인하는 단계(S_322);일정 개수만큼 쓰레드를 생성할 수 없으면 생성할 수 있는 최대 쓰레드의 개수로 수정하는 단계(S_323);상기의 S_322 단계에서 일정 개수만큼 쓰레드를 생성할 수 있으면 상기 일정 수만큼의 쓰레드를 생성하고, 일정 개수만큼 쓰레드를 생성할 수 없으면 수정된 개수만큼의 쓰레드를 생성하는 단계(S_324);를 더 포함하는 것을 특징으로 하는 논 블록킹 입출력을 이용한 서버의 쓰레드 관리 방법
|
5 |
5
청구항 제 3항에 있어서,상기 쓰레드가 클라이언트의 작업요청에 따라 작업을 수행하는 단계(S_370)는,클라이언트의 작업요청을 처리하도록 한 쓰레드는 wake-up 메시지를 확인하는 단계(S_371);wake-up 메시지를 받으면 클라이언트의 작업요청에 따른 작업을 수행하는 단계(S_372);상기의 쓰레드에 사용된 시간을 저장하고 상기 쓰레드를 대기상태로 전환하는 단계(S_373);를 더 포함하는 것을 특징으로 하는 논 블록킹 입출력을 이용한 서버의 쓰레드 관리 방법
|
6 |
5
청구항 제 3항에 있어서,상기 쓰레드가 클라이언트의 작업요청에 따라 작업을 수행하는 단계(S_370)는,클라이언트의 작업요청을 처리하도록 한 쓰레드는 wake-up 메시지를 확인하는 단계(S_371);wake-up 메시지를 받으면 클라이언트의 작업요청에 따른 작업을 수행하는 단계(S_372);상기의 쓰레드에 사용된 시간을 저장하고 상기 쓰레드를 대기상태로 전환하는 단계(S_373);를 더 포함하는 것을 특징으로 하는 논 블록킹 입출력을 이용한 서버의 쓰레드 관리 방법
|