[CS스터디]인터럽트

지영·2023년 5월 18일
0

CS

목록 보기
7/77
post-custom-banner

1. 인터럽트란?

  • CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외 상황이 발생하여 처리가 필요한 경우에 마이크로프로세서에게 알려서 처리할 수 있도록 하는 것!
  • 종류 : 소프트웨어 인터럽트 / 외부,내부 인터럽트

1) 소프트웨어 인터럽트

  • 프로그램 처리 중 명령의 요청명령어의 수행에 의해 발생. ex)시스템 콜

    +) 🎯 시스템 콜이란?
    : 운영체제에서 정의된 함수를 호출하는 것.
    ex) printf()함수는 사용 시 궁극적으로 운영체제 내에서 정의된 write()라는 시스템 콜로 실행됩니다.

2) 외부 인터럽트

  • 입출력 장치, 타이밍 장치, 전원 등의 외부적인 요인으로 발생. ex) 마우스, 키보드 등

3) 내부 인터럽트

  • Trap이라 부름, 잘못된 명령이나 데이터 사용 시 발생. ex) 0으로 나누기, 오버플로우

2. 인터럽트 발생시 처리 과정


1) 현재 수행 중인 프로그램을 멈추기

2) 프로세스 제어 블록, 즉 상태 레지스터와 PC등을 스택에 잠시 저장 (원래 하던 작업으로 돌아와야 하기 때문에)

3) 다시 인터럽트 서비스 루틴으로 와서 커널 코드를 수행

4) 이 때 이루어지는 함수 호출은 원래 수행 중이던 프로세스의 커널 스택을 사용

5) 인터럽트 처리가 끝난 후 프로세스 제어 블록에 저장된 주소로 돌아가 중지된 작업의 나머지 부분을 마저 수행

📢 만약 인터럽트가 없었더라면?
: 컨트롤러가 특정한 어떤 일을 할 시기를 알기 위해서 계속 체크를 해야 함 -> 이를 폴링이라고 한다. 이렇게 폴링을 할 때는 원래 하던 작업에 더이상 집중할 수 없어 기능이 떨어진다.

3. 컨트롤러가 일의 우선순위를 판별하는 방법

1) 폴링 방식

  • 정해진 시간 또는 순번에 상태를 확인해서 상태 변화가 있는지 체크하는 방식 (계속해서 확인하는 방식)
  • 인터럽트 요청 플래그를 차례로 비교해서 우선순위가 가장 높은 인터럽트 자원을 찾아 알맞는 인터럽트 서비스 루틴을 수행

2) 인터럽트 방식

  • 인터럽트 핀에 신호가 들어오면 MCU가 즉각적으로 하던 동작을 멈추고 인터럽트 서비스 루틴을 실행하는 방식
  • 어떨 때 유리한 방식인지?
    * 발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방식
profile
꾸준함의 힘을 아는 개발자📍
post-custom-banner

0개의 댓글