completion port 기반의 채팅프로그램

16
Completion Port 기기기 기기기기기기 20021688 기기기

Upload: derex

Post on 09-Jan-2016

159 views

Category:

Documents


8 download

DESCRIPTION

Completion Port 기반의 채팅프로그램. 20021688 김창수. IOCP 란 ?. ‘ Input Output Completion Port ’ 의 약자 . Win32 에서 제공하는 커널 오브젝트 중 하나 . 윈도우 NT 계열 컴퓨터에서 가장 빠른 네트워크 성능을 내는 I/O 모델 . 기술적으로 Overlapped I/O 와 I/O 를 처리하는 ‘ 스레드 풀 (Tread Pool) ’ 사용으로 성능 극대화. P443~449 참조. Overlapped I/O 의 장점. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Completion Port 기반의 채팅프로그램

Completion Port 기반의채팅프로그램

20021688 김창수

Page 2: Completion Port 기반의 채팅프로그램

IOCP 란 ?

‘Input Output Completion Port’ 의 약자 .Win32 에서 제공하는 커널 오브젝트 중 하나 .윈도우 NT 계열 컴퓨터에서 가장 빠른 네트워크 성능을 내는 I/O 모델 .기술적으로 Overlapped I/O 와 I/O 를 처리하는 ‘스레드 풀 (Tread Pool)’ 사용으로 성능 극대화 .

P443~449 참조

Page 3: Completion Port 기반의 채팅프로그램

Overlapped I/O 의 장점

여러 입출력이 중첩되어 병렬적으로 처리 .

비동기 방식인 SCAN 스케줄 방식으로 효율적인 스케줄링

Page 4: Completion Port 기반의 채팅프로그램

IOCP 의 필요성

IOCP 를 사용하지 않을 경우 – 단점윈도우 운영체제는 스레드마다 약 20ms 의 시간과 1MB 의 메모리를 할당한다 .멀티 스레드로 클라이언트를 처리할 경우 스레드 전환 (Context switching) 에 많은 시간을 소비하고 클라이언트 수에 비례해서 많은 메모리 자원을 소비하게 된다 .

IOCP 를 사용할 경우 - 장점IOCP 를 이용하면 작업 스레드 (2~3 개 ) 가 작업이 주어질 경우에만 작동하므로 스레드 전환 시간이 거의 없다 .멀티스레드 보다 사용하는 스레드의 개수가 적기 때문에 메모리 자원을 절약할 수 있다 .많은 수의 클라이언트 접속시 메모리 풀을 이용하여 메모리 할당과 해제를 하기 때문에 메모리 단편화가 발생하지 않는다 .

Page 5: Completion Port 기반의 채팅프로그램

Overlapped I/O 의 장점

여러 입출력이 중첩되어 병렬적으로 처리 .

비동기 방식인 SCAN 스케줄 방식으로 효율적인 스케줄링

Page 6: Completion Port 기반의 채팅프로그램

Overlapped I/O 의 장점

디바이스로부터 읽어온 데이터를 중간 버퍼에 복사하는 과정없이 직접 사용자 버퍼로 데이터로 데이터를 들어오게 함으로써 버퍼링 오버헤드가 준다 .

Page 7: Completion Port 기반의 채팅프로그램

Thread Pool

작업을 처리함에 있어 매번 스레드를 생성하는 것이 아니라 여러 스레드를 미리 생성한 후 필요할 때 가져다가 사용하고 반환 .CPU 의 개수에 따라 실행되는 스레드를 조절하며 스레드 컨텍스트 스위칭 오버헤드를 줄일 수 있다 .

Page 8: Completion Port 기반의 채팅프로그램

Overlapped I/O

Overlapped I/O 방식

서버서버

소켓 1소켓 1

소켓 2소켓 2

소켓 3소켓 3

스레드 1스레드 1

스레드 2스레드 2

스레드 3스레드 3

Page 9: Completion Port 기반의 채팅프로그램

Overlapped I/O 와 Thread Pool

혼합 방식

서버서버

소켓 1소켓 1

소켓 2소켓 2

소켓 3소켓 3

스레드 1

스레드 2

스레드풀

Page 10: Completion Port 기반의 채팅프로그램

구조도 및 관계 1

3 4

1 2

클라이언트를 100 개까지 생성할 수 있게 설계 .

Page 11: Completion Port 기반의 채팅프로그램

실행 순서

서버가 준비되어지고 START 버튼을 누르면 bind, listen 이 실행되어진다 .클라이언트가 IP, PORT 번호를 입력하고 서버에 연결된다 .클라이언트가 메시지를 입력하고 전송되어지면 모든 클라이언트에게 전송되어진다 .서버는 연결된 클라이언트 수 , 해지 클라이언트 , 메시지 전송 성공 또는 실패 정보를 실시간으로 출력한다 .

# 추가적으로 파일 전송 기능도 구현

Page 12: Completion Port 기반의 채팅프로그램

서버 GUI

SEND : 모든 클라이언트에게 일괄적으로 텍스트를 보냄START : 내부적으로 BIND(), LISENT() 함수를 실행시킴

Page 13: Completion Port 기반의 채팅프로그램

클라이언트 GUI

CONNECT : IP, PORT 입력 팝업 창이 실행SEND : 다른 클라이언트에게 텍스트 전송

Page 14: Completion Port 기반의 채팅프로그램

기대효과

모든 소켓 입출력 모델 중 가장 뛰어난 성능을 제공함으로써 채팅 및 파일 전송에서 신뢰성 있는 서버를 제공하며 보다 더 많은 클라이언트들을 동시에 연결할 수 있다 .

다른 포트 방식을 사용하는 서버에 비해서 보다 더 빠른 파일 전송을 제공하며 효율적인 스레드 사용으로 클라이언트와 서버의 부하를 줄일 수 있다 .

Page 15: Completion Port 기반의 채팅프로그램

일정

1 주차 2 주차 3 주차 4 주차

자료수집

분석 및 설계

구현

Page 16: Completion Port 기반의 채팅프로그램

참고 문헌

“TCP/IP 프로토콜” , 이재광 , 미래컴 “ 윈도우 네트워크 프로그래밍” , 김선우