가장 많이 본 글

2014년 10월 6일 월요일

리눅스 커널 심층 분석 - 7장 인터럽트와 인터럽트 핸들러

함수들
  • 등록 - request_irq() 
  • 해제 - free_irq() 
  • 핸들러 예제 - drivers/char/rtc.c 참고 
  • 인터럽트 컨텍트스 / 프로세스 컨텍스트 
  • 인터럽트 핸들러 구현
  • interrupt 관련 변수는 volatile 변수 선언에 반드시 필요함 
  • interrupt 확인방법: 
$ cat /proc/interrupts 

Exception interrupt 
  • exception:  
  • 동기적인 event, java exception 처리라고 생각하면 . 언제 발생할지 아는 . 
  • 예를 들어 Null pointer reference 하면 CPU abort signal 보냄. 것은 엄밀하게 얘기하면 interrrupt라고 없음. 
  • 비동기적인 event, 쉽게 말하면 io 같은 언제 발생할지 모르는 . 
  • interrupt 끝나고 처리하는 .. Bottom half. interrupt 실행할 처리하는 .. Top half
후반부 처리(Bottom half) 
  • softirq > tasklet > workqueue. softirq 가장 빠르고 workqueue 가장 느림. 
  • softirq 휴면할 없음 
  • spinlock 없음 
  • 동적으로는 사용할 없다. insmod 사용 없고 부팅할 초기화해야 . 이미지에 넣어야 . 
  • 거의 kernel release 들어있고 개인적으로 수정할 일은 거의 없다. 
  • tasklet 동기화 처리가 개선됨 
  • softirq 기법을 이용해서 구현됨. softirq TASKLET_SOFTIRQ 
  • spinlock 같은거 못씀. 
  • insmod 있다.
  • workqueue  Thread돌기때문에 scheduling되어 휴면이 가능함. 

댓글 없음: