panda.jpg


안녕하세요 판다 이우영입니다.


오랜만에 디바이스 드라이버 공부를 하겠습니다.


1. 복습!!!




먼저 저번시간 복습!!


그럼 다시 한번 확인해 볼까요?


블록킹 I/O를 사용하기위해서는 다음 해더 파일을 추가 해야 합니다.


 #include <linux/wait.h>


사용하는 법을 다시 보도록 하겠습니다.


▪ DECLARE_WAIT_QUEUE_HEAD( WaitQueue );


위와 같이 매크로를 사용해서 “wait_queue_head_t” 구조체를 선언하고 초기화를 해야합나다. 


사용할때는 다음 함수를 통해서 응용프로그램을 재우고 깨워 줍니다.


▪ interrupible_sleep_on(&WaitQueue);

▪ wake_up_interruptible(&WaitQueue);


 시간 있으신 분들은 저번시간 작성한 소스 코드도 확인 해보세요~


자 그럼 다음으로 넘어 가겠습니다.


2. POLL !!!




응용 프로그램이 효율적으로 동작하기 위해서 블로킹 I/O를 사용하게 되었습니다.


하지만 여기에도 문제는 있었습니다.


바로 여러 디바이스를 제어할 경우 입니다.


저번시간에는 하나의 디바이스 응답만 반은해서 잠들었다 깨어났었죠?


이런 여러 디바이스에 대응하기 위해서 입출력 다중화 기법을 사용하게 되었습니다.


대표적으로 SELECTPOLL 이 있습니다.


이중 많이 사용하게 될 POLL에 대해서 알아 보도록 하겠습니다.


오늘은 간단하게 개념만 이해하고 다음 시간부터 자세하게 알아 보도록 하겠습니다.


자 여러 디바이스를 관리하기 위해서는 어떤 디바이스를 사용한다는 정보를 가지고 있어야 겠죠?


그래서 구조체를 통해서 POLL에 등록을 합니다.


그러면 등록한 디바이스들 중 읽기나 쓰기가 가능해지면 이에 따라 깨어나 디바이스 드라이버에 맞는 수행을 하게 됩니다.


문론 이를 위해서는 디바이스 드라이버에 POLL 함수를 등록 해 두어야 합니다.


다시 정리 해보겠습니다.


응용프로그램

 - 사용하는 디바이스 정보를 구조체를 통해 등록

 - 디바이스에 따른 poll 처리


디바이스 드라이버

 - poll 함수를 등록하여 기존의 read, write 등의 함수를 수행



이해가 부족하신 분들은 다음시간을 기다려 주세요~


그럼 다음시간에 만나요~~