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 |