Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

8179
1390
307630


[리눅스커널][인터럽트] 인터럽트 벡터 분석하기 5. 인터럽트

커널 모드에서 인터럽트가 발생하면 ARMv7 프로세서는 인터럽트 벡터에 위치한 vector_irq 레이블을 통해 __irq_svc 레이블로 브랜치합니다. 이번에는 __irq_svc 레이블 코드를 분석해 세부 처리 방식을 알아보겠습니다. 

* 아래 강의 동영상에서 관련 내용을 확인할 수 있습니다.



 


"이 포스팅이 유익하다고 생각되시면 댓글로 응원해주시면 감사하겠습니다.  
"혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!" 

Thanks,
Austin Kim(austindh.kim@gmail.com)

# Reference (인터럽트 처리)

인터럽트 소개  
   * 리눅스 커널에서의 인터럽트 처리 흐름    
인터럽트 컨텍스트  
인터럽트 핸들러는 언제 호출될까?  
인터럽트 핸들러는 어떻게 등록할까?  
인터럽트 디스크립터  
인터럽트 디버깅  


    핑백

    덧글

    • 커널 뉴비 2020/07/24 14:23 # 삭제 답글

      안녕하세요. 독자입니다.

      인터럽트 관련하여 궁금한것이 있는데요. `_irq_svc 를 인터럽트 백터이다` 라고 생각해도 되는것인가요?
      일반적으로 인터럽트 백터라고하면 인터럽트 table을 상상하게되는데요. 인터럽트 테이블과 __irq_svc와의 관계는 없는것인가요?
      용어가 비슷하여 헷갈려서 질문드립니다.. 인터럽트 table과 관련하여 구체적으로 보아야할 키워드도 추천해주시면 감사하겠습니다.

      감사합니다.
    • AustinKim 2020/07/24 18:10 #

      인터럽트 벡터에서 벡터라는 용어 때문에 테이블과 같이 생각할 수 있을 것 같은데요.
      이 부분에 대해서 조금 더 설명을 드리겠습니다.

      ARM 프로세서에는 권한이 없는 메모리 공간에 접근을 하거나 ARM에 정의돼 있지 않는 명령어를 실행할 때도 익셉션이 발생하는데요.
      인터럽트가 발생해도 익셉션이 발생합니다.

      즉, '메모리 공간에 접근'하거나 'ARM에 정의돼 있지 않는 명령어를 실행' 그리고 '인터럽트가 발생' 하면 각각 설정한 주소로 ARM 프로세서는
      프로그램 카운터를 이동시킵니다. 여기서 각각 설정한 주소를 익셉션 벡터라고 부르구요, 익셉션의 한 종류인 인터럽트가 발생했을 때 ARM 프로세서에 의해 이동되는
      프로그램 카운터의 주소를 인터럽트 벡터라고 합니다.

      말씀하신 단어를 사용해 설명을 드리면, 익셉션 벡터 테이블은 각 익셉션 별로 지정된 주소의 리스트라고 보시면 되구요.
      익셉션 벡터 테이블 목록 중 하나가 인터럽트 벡터라고 이해하시면 됩니다.

      감사합니다.
    • 2020/07/24 18:09 # 답글 비공개

      비공개 덧글입니다.
    • 커널 뉴비 2020/07/27 11:29 # 삭제 답글

      고맙습니다. 덧글을 읽어보니 완전히 이해가되네요!
      커널 차근차근 공부하고있는데요.
      내용이 알차고 왜 라는 질문에 설명 잘 되어있어 너무 만족스럽습니다.
      답글 또한 너무 감사드립니다. 멋진 개발자가 되겠습니다.

      감사합니다.
    • AustinKim 2020/07/27 13:29 #

      답글을 보고 이해가 잘 가셨다니 다행이네요.
      책을 읽다가 또 궁금한 점이 생기면 댓글로 질문 주시고, 즐거운 한 주 되세요.
    • 2020/07/27 13:29 # 답글 비공개

      비공개 덧글입니다.
    댓글 입력 영역