운영체제/IO3 I/O 멀티플렉싱 - 엣지 트리거, 레벨 트리거 레벨 트리거와 엣지 트리거가 있다.레벨 트리거는 입력버퍼에 데이터가 있으면 계속 알려준다.1000 -> 500 -> 100 -> 100500이 될때도 알려주고100이 될때도 알려주고 100이 유지될때도 알려준다 반면 엣지 트리거는 입력버퍼로 데이터가 수신된 상황에서 딱 한번만 이벤트가 등록된다. 데이터가 남아있다고 추가로 이벤트가 등록되지는 않는다. select 모델은 레벨 트리거로 동작한다. 엣지 트리거는 반드시 논블로킹으로 동작해야한다.엣지 트리거의 특성상 블로킹 방식으로 동작하는 리드앤 라이트 함수의 호출을 서버를 오랜시간 멈추게 할 수 있다.왜냐하면 소켓 입력버퍼에 데이터가 없으면 계속 블로킹이 되기 때문이다.따라서 사전에 오류 확인 과정도 필요하다. 입력버퍼가 비어있는지 미리 확인해야한다. re.. 2026. 5. 5. I/O 멀티플렉싱 - epoll SELECT는1. 애플리케이션은 요청이 들어오면 시스템 콜을 통해 OS에 소켓을 만듬 커널은 FD 반환2. 애플리케이션은 FD배열 비트맵을 가지고 있음3. select()를 통해 커널에게 이 배열을 감시해달라고 부탁4. 이벤트가 발생하고 커널은 select()의 응답을 반환5. 애플리케이션은 다시 FD배열 비트맵으로 select()를 실행 select 방식의 단점 : select를 호출할 때마다 관찰대상에 대한 정보를 매번 운영체제에게 전달해야한다. epoll은1. 상태 변화 확인을 위한 전체 파일 디스크립터 대상 반복문이 없다.2. select에 대응하는 epoll_wait 함수 호출 시, 관찰 대상의 정보를 매번 전달할 필요가 없다. select에서는 애플리케이션이 FD배열 비트맵을 만들었지만 epo.. 2026. 5. 5. I/O 멀티플렉싱 - select 멀티플렉싱 : 하나의 통신채널을 통해 둘 이상의 데이터를 전송하는데 사용되는 기술 select로 구현하는 방법 한 곳에 여러 파일 디스크립터를 모아두고 동시에 이들을 관찰할 수 있다수신한 데이터를 지니고 있는 소켓이 존재하는가?블로킹 되지 않고 데이터의 전송이 가능한 소켓은 무엇인가?예외상황이 발생한 소켓은 무엇인가?이 각각의 관찰항목을 이벤트라고 한다. 그리고 해당 상황이 발생하면 이벤트가 발생했다고 한다. 먼저 관찰하고자하는 파일 디스크립터를 모아야한다.모을때도 세 묶음으로 모아야한다 (수신, 전송, 예외) fd_set이라고 불리는 배열이 있다 0,1로만 이루어지는 비트단위 배열이다1이면 관찰의 대상임을 뜻함 FD_ZERO 인자로 전달된 주소의 모든 비트를 0으로 초기화FD_SET 특정 주소의 변수.. 2026. 5. 5. 이전 1 다음