리눅스데브코스 [8주차 - 1(3)]<인터럽트>

심우열·2023년 5월 25일
0

1. 인터럽트 방식을 알아야 하는 이유

1. 디바이스 드라이버에서 많이 사용

2. 인터럽트 후반부 기법의 이해

  • threaded IRQ
  • 워크 큐
  • soft IRQ

1. threaded IRQ 처리 흐름

3. Preemption 동작과 연관

  • Preemption되는 시점 중 하나는 인터럽트 핸들러 실행을 마무리한 다음

4. 시그널 동작과 연관

  • 프로세스가 시그널을 받는 포인트

5. 동기화 기법과 연관

  • 로컬 인터럽트 비활성화

6. 시스템 전반에 대한 이해 증진

  • 익셉션
  • GIC
  • 비동기적인 실행 흐름
  • 디버깅에 도움

2. 인터럽트 소개

1. 인터럽트란?

  • 하드웨어의 변화를 감지해서 외부 입력으로 전달되는 전기 신호
  • 보통 하드웨어 개발자들은 오실로스코프라는 장비로 인터럽트 신호가 제대로 올라오는지 측정
  • 휴대폰 화면을 만지면 터치 인터럽트가 올라옴

2. 소프트웨어가 인터럽트를 처리하는 방식

  • 인터럽트가 발생하면 프로세스는 하던 일을 멈추고 '이미 정해진 코드'를 실행해서 하드웨어의 변화를 처리
  • 이미 정해진 코드: 인터럽트 벡터에 위치한 인터럽트 핸들러
  • 인터럽트가 발생하면 소프트웨어적으로 처리하는 과정은 인터럽트 서비스 루틴 이라고 부름

3. CPU 아키텍처 관점에서 인터럽트를 처리하는 방식

  • 인터럽트는 CPU 아키텍처별로 다르게 처리
  • X86,ArmV7, ArmV8 아키텍쳐별로 인터럽트를 처리하는 방식이 다름
  • 라즈베리 파이는 ArmV8, ArmV& 기반 아키텍처
  • ArmV8 기준으로 인터럽트를 처리하는 과정을 파악

3. Armv8 아키텍처 관점으로 인터럽트 처리 방식

  • 인터럽트는 익셉션의 한 종류로 처리
  • 외부 하드웨어 입력이나 오류 이벤트가 발생하면 익셉션 모드로 진입
  • 익셉션이 발생했다고 감지하면 익셉션 종류별로 이미 정해놓은 주소로 브랜치
  • 이미 정해진 주소를 익셉션 벡터(Exception Vector)라 함
  • 익셉션 벡터에는 익셉션을 핸들링하는 코드가 있음

4. Armv8 아키텍처의 익셉션 벡터 테이블 분석

1. EL1(커널 드라이버)에서 동작 중 IRQ 인터럽트 유발

  • PSTATAE.EL = EL1;
  • PC = VBAR_EL1 + 0x280;

2. EL0(유저 애플리케이션)에서 동작 중 IRQ 인터럽트 유발

  • PSTATAE.EL = EL1;
  • PC = VBAR_EL1 + 0x480;
profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글