해결된 질문
작성
·
393
답변 1
3
소켓의 본질은 File입니다. 그리고 모든 File I/O는 Buffered I/O와 Non-buffered I/O로 나눌 수 있습니다. Buffered I/O는 말 그대로 버퍼를 활용하므로 읽기/쓰기 정보가 버퍼에 담긴 후 처리됩니다. 이렇게 할 경우 입/출력 지연이나 외부 요인에 따른 변화에 좀더 유연하게 대응할 수 있습니다. 반면에 '버퍼복사'로 인한 지연도 일부 발생합니다. 이 버퍼의 크기는 운영체제의 구현형태나 설정에 따라 달라질 수 있습니다. 소켓도 마찬가지 입니다. 따라서 '자원을 어떻게 할당 하는 가'라는 질문은 모호한 측면이 있습니다. 어떻게 보면 설정의 문제일 수 있기 때문입니다. 인터넷에서 IOCP에 대해서 검색해보면 좋은 자료를 많이 찾을 수 있습니다. IOCP가 어떻게 성능을 높이는지 생각해보면 원하는 답을 찾을 수 있을 것으로 생각합니다.
그리고 File은 말 그대로 File 입니다. 제가 버퍼를 함께 언급하는 이유는 앞서 말한 Buffered I/O 때문입니다. 그리고 Stream이라는 표현은 논리적으로 파일에 저장되는 데이터가 직렬로 연속된 1차원적 비트 스트림 형태이기 때문입니다. 참고하시기 바랍니다. 감사합니다.