작업의 결과를 기다리고 끝나면 바로 처리합니다.
User space에 있는 프로세스가 Kernel에게 IO 요청하는 System Call
이후 Block
처리가 완료되어 Kernel이 응답한 데이터가 User space의 버퍼에 반환
이후 Block 해제, 반환 데이터 처리.
작업의 결과를 기다리지 않지만, 끝나면 바로 처리합니다. 요청 순서가 보장됩니다.
socket 생성 시 O_NONBLOCK 옵션을 줌
해당 socket으로 IO System Call을 하면 Block되지 않고 즉시 결과를 반환받음.
아직 읽을 데이터가 없다면 바로 -1(errno)을 반환.
적절한 polling 주기가 필요함.
너무 길 때는 IO는 이미 완료되었는데 User 프로세스의 처리가 늦어지고,
너무 짧으면 Kernel이 return해주느라 IO 작업이 늦어질 수 있음.
동기는 직관적이지만 2개 이상 파일을 동시 처리 시 멀티 프로세스나 멀티 스레드로 동작해야 함. 동시성 문제가 발생함. 그러므로 Multiplexing이 각광 받게 됨.
작업의 결과를 기다리지만, 끝나면 바로 처리하지 않아도 됩니다.
Multiplexing: 하나를 여러 개처럼 보이게 함.
한 프로세스가 여러 파일을 관리.
파일은 프로세스가 Kernel에 진입하게 해주는 인터페이스.
c-s환경이라면 한 server가 여러 socket을 관리해 여러 client가 접속할 수 있게 하는 것. socket은 IP/Port를 가진 파일이므로.
작업의 결과를 기다리지 않고 끝나도 바로 처리하지 않아도 됩니다.