멀티플렉싱 : 하나의 통신채널을 통해 둘 이상의 데이터를 전송하는데 사용되는 기술
select로 구현하는 방법
한 곳에 여러 파일 디스크립터를 모아두고 동시에 이들을 관찰할 수 있다
- 수신한 데이터를 지니고 있는 소켓이 존재하는가?
- 블로킹 되지 않고 데이터의 전송이 가능한 소켓은 무엇인가?
- 예외상황이 발생한 소켓은 무엇인가?
이 각각의 관찰항목을 이벤트라고 한다. 그리고 해당 상황이 발생하면 이벤트가 발생했다고 한다.
먼저 관찰하고자하는 파일 디스크립터를 모아야한다.
모을때도 세 묶음으로 모아야한다 (수신, 전송, 예외)
fd_set이라고 불리는 배열이 있다 0,1로만 이루어지는 비트단위 배열이다

1이면 관찰의 대상임을 뜻함
FD_ZERO 인자로 전달된 주소의 모든 비트를 0으로 초기화
FD_SET 특정 주소의 변수에 파일 디스크립터 정보 등록
FD_CLR 특정 주소의 변수에 파일 디스크립터 정보 삭제
FD_ISSET 전달된 파일 디스크립터 정보 있으면 양수 반환
ISSET이 select의 호출 결과를 확인하는 용도다
이벤트가 발생하면 커널이 프로세스를 깨워준다.
'운영체제 > IO' 카테고리의 다른 글
| I/O 멀티플렉싱 - 엣지 트리거, 레벨 트리거 (0) | 2026.05.05 |
|---|---|
| I/O 멀티플렉싱 - epoll (0) | 2026.05.05 |