인터럽트

고장난 고양이·2022년 7월 20일
0

운영체제

목록 보기
13/21

인터럽트(Interrupt)란?

마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.

동기적 인터럽트 & 비동기적 인터럽트

  • 프로세스가 실행중인 명령어로 인해 발생하는 동기적 인터럽트

    • 프로그램상의 문제로 인해
    • 작업자가 의도적으로
    • 입출력장치 같은 주변장치의 조작에 의한
    • 산술연산중 발생
  • 실행중인 명령어와 무관하게 발생하는 비동기적 인터럽트

    • 하드디스크 읽기 오류
    • 메모리 불량과 같은 하드웨어적인 오류
    • 사용자가 직접 작동하는 키보드 인터럽트, 마우스 인터럽트

인터럽트 처리 과정

  1. 인터럽트가 발생하면 현재 실행 중인 프로세스는 일시 정지 상태가 된다.
    재시작을 위해 현재 프로세스 관련 정보를 임시로 저장
  2. 인터럽트 컨트롤러가 실행되어 인터럽트의 처리순서를 결정
    -> 여러개의 인터럽트가 동시에 발생했다면 인터럽트의 우선순위를 고려하여 중요한 인터럽트부터 처리하도록 순서를 결정
  3. 먼저 처리할 인터럽트가 결정되면 인터럽트 벡터에 등록된 '인터럽트 핸들러'가 실행
  4. 인터럽트 벡터에 연결된 핸들러가 인터럽트 처리를 마치면 일시 정지된 프로세스가 다시 실행되거나 종료된다.
    -> 입출력 완료같은 경우이면일시정지된 프로세스가 다시 실행
    -> 다른 프로세스가 메모리 영역 침범이나 오류 같은 경우이면 종료

[인터럽트 핸들러]

○ 실제 인터럽트를 처리하기 위한 루틴

○ 인터럽트 접수에 의해 발생되는 인터럽트에 대응하여 특정 기능을 처리하는 기계어 코드 루틴.

인터럽트 서비스 루틴이라고도 한다.(인터럽트 때의 해야할 일)

○ 인터럽트가 발생하면 이를 핸들링하기 위한 함수를 인터럽트 핸들러라고 한다.

인터럽트는 종류별로(키보드, 스피커, 입출력 등등) 핸들러가 있는데 모두 함수 형태로 존재한다.

커널 내의 인트럽트 함수에서 호출한다.

○ 각 핸들러에서는 장치에서 입력한 데이터 정보를 참고해 유저 공간에 알린다.

○ 모든 서비스 루틴의 주소를 저장하고 있는 자료구조를 인터럽트 벡터라고 한다.

참고
https://dongkyung.tistory.com/entry/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-%ED%95%B8%EB%93%A4%EB%9F%AC

profile
개발새발X발일지

0개의 댓글