I/O Multiplexing

2019. 7. 1. 19:07임베디드/리눅스시스템프로그래밍

하나의 Application에서 여러 fd에 대해서 read를 하는 방법은 3개가 있다

일반적으로 non-blocking 모드로 read가 동작하면 다른 fd는 동작할 수 없는 비효율이 발생한다

 

1. polling with non-blocking mode

 - 모든 fd들을 모두 non-blocking으로 만든다

2. multi-thread

 - 하나의 thread마다 하나의 fd를 대응시킨다

 - blocking mode로도 동작시킬 수 있다. 항상 효율적이진 않다

3. I/O Multiplexing

 - select/poll/epoll 3가지 방법(API)을 사용

 - 여러 소켓에 대해 병행적으로 I/O 처리를 할 수 있다. 대기를 했다가 이벤트가 발생하면 처리

 - 다수의 프로세스 혹은 스레드를 만들 필요가 없기 때문에 메모리면에서 성능 개선이 발생한다

 

'임베디드 > 리눅스시스템프로그래밍' 카테고리의 다른 글

read API  (0) 2019.07.22
select  (0) 2019.07.01
pthread_func의 반환값  (0) 2019.06.13
스레드와 프로세스 fd  (0) 2019.06.11
pthread와 clone 쓰레드의 메모리 반환 시기의 차이  (0) 2019.06.11