TIL

Block I/O, Non-Block I/O

I/O란

Block I/O

img.png

  1. 스레드가 read라는 시스템 콜을 호출
  2. 스레드는 블락 되고 커널 모드로 전환
  3. 커널이 응답하면 스레드가 다시 데이터를 읽어 코드를 실행

Socket

Socket에서 block I/O란?

Non-Block I/O

  1. read 시스템 콜을 하게 되면 커널이 read I/O를 실행하는데 바로 리턴한다.
  2. 스레드가 블락되지 않고 동작을 수행한다.
  3. 커널에서 데이터를 준비했다는 응답을 한다.
  4. 스레드는 다시 한 번 read 시스템 콜을 호출하여 완료 여부를 확인 후 완료 되었다면 데이터를 받아온다.
  5. 스레드가 작업을 마저 처리한다.

Socket에서 non-block I/O란?

Non-Block I/O 결과 처리 방식

완료 되었는지 반복적으로 확인

I/O multiplexing


https://youtu.be/mb-QHxVfmcs