I/O, N/I/O 의 차이를 설명해 주세요.
I/O와N/I/O는 네트워크 프로그래밍을 할 때 데이터를 입출력하는 방식의 차이이다.I/O는 블로킹 방식으로 데이터 처리가 완료될 때까지 프로세스가 대기하는 방식이다.N/I/O는 논블로킹 방식으로 데이터가 처리가 완료될 때까지 프로세스가 대기하지 않고 다른 작업을 수행할 수 있는 방식이다.
I / O
N / I / O
입출력 방식
스트림
채널
버퍼 방식
논버퍼(Non-Buffer)
버퍼(Buffer)
비동기 방식
지원 안 함
지원
블로킹 / 논블로킹 방식
블로킹 방식만 지원
블로킹 / 논블로킹 모두 지원
꼬리 질문 - 블로킹/논블로킹에 대해 설명해 주세요.
블로킹과 논블로킹은 네트워크 프로그래밍에서
I/O동작 방식을 구분하는 개념이다.블로킹 I/O는 작업이 완료될 때까지 호출한 쓰레드를 대기 상태로 만든다.
간단한 방식으로 구현할 수 있지만, 대규모의 작업을 처리하는 경우 쓰레드 자원을 많이 소모하여 성능에 영향을 미칠 수 있다.
논블로킹 I/O는 작업이 완료되지 않아도 쓰레드를 대기 상태로 만들지 않는다.
쓰레드는 작업의 진행 상태를 계속 모니터링하고, 작업이 완료되면 알림을 받는다.
병렬 처리에 적합하고, 대규모의 작업을 처리할 때 쓰레드 자원을 효율적으로 관리할 수 있어 성능 향상에 기여할 수 있다.
참고
Last updated