본문 바로가기
운영체제/IO

I/O 멀티플렉싱 - select

by 정재익 2026. 5. 5.

멀티플렉싱 : 하나의 통신채널을 통해 둘 이상의 데이터를 전송하는데 사용되는 기술

 

 

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