이전 포스팅 때, 두 개념을 언급했다.
Level-Trigger와 Edge Trigger의 차이를 그냥 Epoll 함수 공부를 할 때에는 잘 몰랐는데, 아래와 같은 상황에서 다시 생각해보게 되었다.
select 로 넘어온 디스크립터 변화의 갯수만큼 처리를 하지 않고 그냥 넘어가면 어떻게 될까?
라는 의문에서 부터 시작 되었다.
Level Trigger 란?
아래부터는 윤성우, 『열혈 tcp/ip 소켓 프로그래밍』, 오렌지미디어(2009), p376-p377. 이렇게 인용이 됩니다
윤성우 선생님/교수님의 책에 잘 정리가 되어 있어서, 비유 예시를 인용합니다. 내용을 좀 바꾸려다가 인용하는거 그냥 쓸께유 ㅋㅋ
아들 : 엄마 세뱃돈으로 5,000원 받았어요.
엄마 : 훌륭하구나
아들 : 엄마 옆집 숙희가 떡볶이 사달래서 사줫더니 2,000원 남았어요.
엄마 : 장하다 우리 아들 ~
아들 : 엄마 변신가면 샀더니 500원 남았어요.
엄마 : 그래 용돈 다 쓰면 굶으면 된다!
아들 : 엄마 여전히 500원 갖고 있어요. 굶을 수 없잖아요
엄마 : 그래 매우 현명하구나!
아들 : 엄마 여전히 500원 갖고 있어요. 끝까지 지켜야지요.
엄마 : 그래 힘내거라!
레벨 트리거의 핵심은 굵을 글씨이다.
5,000원이 들어온 이후에는 더 이상 돈이 발생하거나 더해지지 않았다.
>> 5,000원 어치의 이벤트 변화가 발생했다라고 생각하면 된다.
500원에서 계속 변화가 없음에도 불구하고 500원이 있다고 알란다.
>> 파일 디스크립터의 변화가 없더라도 처음에 들어온 것에 비해 남아있기만 한다면 계속해서 이벤트가 등록된다.
이러한 동작 방식이 레벨 트리거 방식이다.
select 로 넘어온 디스크립터 변화의 갯수만큼 처리를 하지 않고 그냥 넘어가면 어떻게 될까?
그러므로 위와 같은 의문은 잘 해결된다. 등록된 이벤트만큼 처리하지 않더라도 이벤트가 다시 알려지기 때문에 당장 바로 처리하지 않아도 해당 이벤트가 무시되는 것이 아니라, 시간이 흘러감에 따라 처리할 수 있다는 뜻이다.
그렇다면 엣지 트리거 방식은 무엇일까?
Edge Trigger 란?
아래부터는 윤성우, 『열혈 tcp/ip 소켓 프로그래밍』, 오렌지미디어(2009), p376-p377. 이렇게 인용이 됩니다
아들 : 엄마 세뱃돈으로 5,000원 받았어요.
엄마 : 음 다음엔 더 노력하거라.(근데 과연 무슨 노력을 해야하는 것일까...? ㅋㅋㅋㅋ)
아들 : ..........................................
엄마 : 말 좀 해라! 그 돈 어쨌냐? 계속 말 안 할거냐?
딱 한 번 5,000원이 들어왔을 때, 이벤트가 등록되고, 그 이후에는 아무리 계속 남아있다고 해도 이벤트가 추가로 등록되지 않는다.
이런 차이가 있다.
다음 번에는 Select 모델의 한계에 대해서 포스팅 할 예정이다.
'프로그래밍응용 > Socket' 카테고리의 다른 글
C기반 I/O Multiplexing - 6. Select와 Epoll의 차이점과 Epoll 컨셉 (0) | 2021.01.18 |
---|---|
C기반 I/O Multiplexing - 5. Select 모델의 단점 (0) | 2021.01.18 |
C기반 I/O Multiplexing - 3. Select 함수 활용 코드 (0) | 2021.01.17 |
C기반 I/O Multiplexing - 2. Select 함수 사용하기 전에 컨셉을 보자 (0) | 2021.01.17 |
C기반 I/O Multiplexing - 1. Multiprocessing과 Multiplexing 비유 (0) | 2021.01.15 |