커널공부를 시작했는데.. 간단하게 사용자 인터럽트를
어떻게 짜볼수 없을까요? 예를 들어 키보드를 누르면
'click!'이 출력된다던가 하는 그런 인터럽트 루틴을
간단히 구현해보고 싶습니다.
그리고 인터럽트 등록이니 해제니 그런걸 보니까 개념이
잘 서지 않던데.. 등록이라는게 뭘 말하는거죠?
등록이란, 드라이버가 자신이 알고 있고 제어할수 있다고 생각되는 하드웨어에서 인터럽트가 발생했을때 자신의 인터럽트 핸들러도 호출해줄것을 커널에 요청하는겁니다. 커널은 각 인터럽트 번호에 핸들러 큐를 가지고 있어서 인터럽트가 발생하면 모든 핸들러를 차례로 호출해주고요.
보통 PCI 드라이버에서 초기화할때 PCI 버스를 스캔해서 펑션번호등을 보고 자신이 제어할수 있는 하드웨어인지를 확인한 다음에 메모리/IO 영역도 확보해주고, IRQ 번호도 할당해주고 하는 등의 작업을 해주죠. 그후로는 그 인터럽트는 그 드라이버의 관리하에 놓인다고 볼수 있구요.
등록이란, 드라이버가 자신이 알고 있고 제어할수 있다고 생각되는 하드웨어
등록이란, 드라이버가 자신이 알고 있고 제어할수 있다고 생각되는 하드웨어에서 인터럽트가 발생했을때 자신의 인터럽트 핸들러도 호출해줄것을 커널에 요청하는겁니다. 커널은 각 인터럽트 번호에 핸들러 큐를 가지고 있어서 인터럽트가 발생하면 모든 핸들러를 차례로 호출해주고요.
보통 PCI 드라이버에서 초기화할때 PCI 버스를 스캔해서 펑션번호등을 보고 자신이 제어할수 있는 하드웨어인지를 확인한 다음에 메모리/IO 영역도 확보해주고, IRQ 번호도 할당해주고 하는 등의 작업을 해주죠. 그후로는 그 인터럽트는 그 드라이버의 관리하에 놓인다고 볼수 있구요.
댓글 달기