[서버] IOCP란?

GDORI·2024년 10월 13일
0

server

목록 보기
1/1

IOCP란 무엇인가?

IOCP는 I/O Completion Port의 약자로 Windows 운영체제에서 제공하는 비동기 I/O 처리 메커니즘이다. 고성능 네트워크 서버나 파일 처리 애플리케이션을 개발할 때 사용된다.

IOCP의 개념

IOCP는 여러 개의 비동기 I/O 작업을 동시에 처리할 수 있도록 설계된 이벤트 기반 큐 시스템이다. 이를 통해 서버는 소수의 스레드로도 다수의 클라이언트 요청을 효과적으로 처리할 수 있으며 스레드 풀을 활용하여 CPU와 메모리 자원을 효율적으로 사용할 수 있다.

IOCP 동작과정

  1. I/O 요청 등록
  2. I/O 작업 대기
  3. 완료 시 큐에 추가
  4. 스레드 풀 처리

비동기 작업을 등록하면 요청이 진행되며 운영체제는 요청된 I/O 작업을 완료할 때까지 기다렸다가 완료되면 IOCP는 완료되었다는 내용을 큐에 추가하고 이를 처리할 스레드가 활성화된다. IOCP는 작업을 처리할 스레드 풀을 운용하며 가용 스레드를 최적화하여 처리한다. 작업 수에 따라 스레드의 수를 동적으로 조절한다.

IOCP의 장점

  • 고성능 처리
    비동기 작업과 스레드 풀을 통하여 다수의 연결을 효율적으로 관리한다.
  • CPU 활용 최적화
    스레드가 필요할 때만 생성되므로 사용량이 적고 병목현상이 줄어든다.
  • 확장성
    스레드 수를 동적으로 조절하여 다중 CPU 코어 환경에서 성능이 확장된다.

사용 사례

  1. 고성능 네트워크 서버
    대용량의 트래픽을 처리하는 HTTP 서버나 채팅 서버에 사용
  2. 파일 입출력 처리
    대규모 로그 파일을 병렬로 처리하는 애플리케이션
  3. 게임 서버
    다수의 클라이언트를 동시에 처리해야 하는 MMO 게임 서버에서 유용

한계 및 고려사항

비동기 I/O와 스레드 풀을 다루는 코드가 복잡하고 작동간에 발생하는 버그는 디버깅에 까다롭다. IOCP의 경우 윈도우에만 적용되므로 타 플랫폼에 적합하지 않다.

profile
하루 최소 1시간이라도 공부하자..

0개의 댓글