목록2025/01 (5)
나만의 작은 도서관

주의사항: 해당 글은 개인적인 이해를 위해 작성된 글이며, 잘못된 정보가 포함되어 있을 수도 있습니다.목차블로킹(Blocking) 방식과 논블로킹(Non-Blocking) 방식블로킹(Blocking) 방식과 논블로킹(Non-Blocking) 방식블로킹/논블로킹 동작 방식블로킹/논블로킹 방식의 문제동기(Synchronous) 방식과 비동기(Asynchronous) 방식동기(Synchronous) 방식과 비동기(Asynchronous) 방식동기/비동기 동작 방식비동기 방식의 사용이 멀티쓰레드 환경임을 의미하지는 않는다.두 방식의 조합동기-블로킹 방식동기-논블로킹 방식비동기-블로킹 방식비동기-논블로킹 방식참고 자료블로킹(Blocking) 방식과 논블로킹(Non-Blocking) 방식 블로킹(Blocking) ..

목차Overlapped 모델의 아쉬운 성능IOCP 모델의 특징IOCP 모델의 작동 과정IOCP 모델을 이용한 서버 만들기깃헙 코드참고 자료Overlapped 모델의 아쉬운 성능Overlapped 모델도 나름 성능이 준수하지만, 이전 글에서 알아봤듯, 이벤트 기반 / 콜백 기반 둘 다 성능을 떨어뜨리는 요인을 가지고 있었다. 물론, 그럼에도 Overlapped 모델은 준수한 성능을 보여주지만 게임서버에서 '준수한 성능' 정도로는 용납되지 않는다. 서버의 성능이 중요한 게임서버는 더 좋은 성능을 가진 모델이 있다면 그 모델을 써야할 것이다. 따라서, 오늘은 게임 회사에서 자주 사용할 정도로 성능이 좋은 IOCP 모델에 대해 알아보도록 하겠다.IOCP 모델의 특징IOCP 모델이란?IOCP는 I/O Comple..

목차Overlapped 입출력 방식의 사용Overlapped 모델의 두 가지 방식: 이벤트 기반, 콜백 기반Overlapped 모델을 이용한 서버 만들기Overlapped 모델의 문제점깃헙 코드참고 자료Overlapped 입출력 방식의 사용이전까지 Select 계열의 두 모델(Select 모델, WSAEventSelect 모델)을 정리했었다. 이번에는 윈도우에서 사용할 수 있는 Overlapped 입출력 방식을 활용한 소켓 모델을 정리해 보도록 하겠다. Overlapped 모델Overlapped 입출력 방식은 윈도우 운영체제에서 제공하는 고성능 파일 입출력 방식으로, 파일 입출력을 위해 제공되었다. 이를 소켓 입출력에도 사용할 수 있도록 만든 것이 Overlapped 모델이다. Overlapped?..

목차Select 모델의 문제점WSAEventSelect 모델의 특징WSAEventSelect 모델을 이용한 echo 서버 만들기WSAEventSelect 모델의 문제점깃헙 코드Select 모델의 문제점Select 모델은 기존의 블로킹/논블로킹 방식에서 소켓 작업이 진행될 수 없는 상황에서도 진행하려는 문제를 해결하기 위해 사용하였다. 하지만 1) 매 루프마다 fd_set에 소켓을 등록하고 select() 함수가 지우는 과정을 반복한다는 점, 2) select() 함수는 동기 방식을 따른다는 점과 같은 문제점이 있었다. Select모델의 장점을 가져가면서 위와 같은 문제점을 개선한 모델이 바로 WSAEventSelect 모델이다.WSAEventSelect 모델의 특징WSAEventSelect() 함수가 ..

목차이전 블로킹/논블로킹 방식의 문제점Select 모델의 특징Select 모델 동작 과정Select 모델을 이용한 echo 서버 만들기Select 모델의 문제점깃헙 코드이전 블로킹/논블로킹 방식의 문제점이전 블로킹/논블로킹 방식에는 서로 다른 이유로 서버의 성능을 저하시키는 구조적 문제가 있었다. (블로킹 방식에 대한 정리 글은 여기, 논블로킹 방식에 대한 정리 글은 여기를 참고하면 된다.) 각 방식의 구조적 문제는 다음과 같다.블로킹 방식: 소켓 함수(recv(), send() 등)를 호출하면, 해당 작업이 완료될 때까지 호출한 스레드는 무한정 기다려야 한다.논블로킹 방식: 소켓 함수(recv(), send() 등)를 호출하면, 해당 작업이 완료되었는지 반복적으로 확인해야 한다.결국 블로킹 방식을 사..