2024.10.14 IOCP

장재영·2024년 10월 14일
0

IOCP

I/O 란?

  • 입출력 시스템을 말함(Input/Output)
  • 데이터를 읽고쓰는일
  • 데이터를 주고 받는일
  • 마우스, 기보드, 프린터 등 주변장치를 사용

비동기 I/O 처리

  • 동기작업은 이전작업의 완료를 기다린다면 비동기는 이전 작업의 완료를 기다리지 않음

  • 입출력 작업이 완료되면 완료 상태를 알려줌

  • 즉 I/O 작업을 완료할 때까지 대기하지 않음으로서 수많은 클라이언트 연결과 데이터를 처리할 때 병목 현상을 줄이고, 리소스를 효율적으로 사용할 수 있도록 함

스레드 풀

  • 필요한 만큼의 스레드를 미리 준비해두고, 작업이 있을 때 이를 할당하여 처리한 뒤 다시 반환하는 방식
  • 작업이 필요할 때마다 새로운 스레드를 생성하지 않고, 미리 생성해둔 스레드를 재사용
  • 작업을 대기열(큐)에 넣어두고 미리 준비된 스레드가 여유가 있을 때 하나씩 맡아서 처리
  • 스레드 작업 완료 알림이 도착하면, 후속 조치가 필요할 경우 대기중이던 후속 조치 기능의 스레드가 받아서 수행
  • 스레드 풀의 크기는 고정될 수 있고 동적으로 관리될 수 있다.
  • IOCP는 비동기작업과 스레드 풀을 이용해 비동기 처리의 처리용량을 조절하여 효율적으로 관리

    스레드: 병렬 처리되는 작업의 기본단위로 프로그램이 실행하는 작업(기능)마다 스레드가 사용됨.
    ex) 파일 처리 프로그램에서 파일을 읽는 작업과 파일을 처리하는 작업을 동시에 처리하려면, 두 개의 스레드가 필요

결론

  • IOCP는 Windows 운영체제에서 스레드 풀관리를 통해 비동기 I/O 작업을 효율적으로 처리하기 위한 ‘비동기’ I/O 모델
  • 설명한 기능들을 통해 많은 클라이언트 요청을 처리해야 하는 대규모 서버 애플리케이션에서 높은 성능을 유지
  • 그 외 윈도우를 제외한 운영체제에서 사용되는 비슷한 방식으로 Linux: epoll, macOS: kqueue 등.. 이 있음
profile
개발 하고 싶은 비버

0개의 댓글