인터럽트

꿀떡냠·2024년 5월 27일
post-thumbnail

인터럽트

프로세스 실행을 중단하고, 다른 동작을 수행하도록 요구하는 것을 말한다.

인터럽트 동작 순서

  1. 인터럽트가 발생하면 현재 실행중인 프로세스는 일시 정지 상태가 되며, 재시작하기 위해 프로세스 관련 정보를 임시로 저장한다.
  2. 인터럽트 컨트롤러가 실행되어 인터럽트의 처리 순서를 결정한다. 이 때 여러 개의 인터럽트가 동시에 발생했다면 우선순위를 고려하여 중요한 인터럽트부터 처리하도록 순서를 결정한다.
  3. 먼저 처리할 인터럽트가 결정되면 인터럽트 벡터에 등록된 인터럽트 핸들러가 실행된다.
    • 인터럽트 핸들러 : 인터럽트 처리를 위해 미리 정의된 함수
    • 인터럽트 벡터 : 인터럽트와 인터럽트 핸들러를 일대일로 연결한 자료구조
  4. 인터럽트 벡터에 연결된 핸들러가 인터럽트 처리를 마치면 일시 정지된 프로세스가 다시 실행되거나 종료된다.
    - 입출력 완료 인터럽트 : 일시 정지된 프로세스가 다시 실행
    - 메모리 영역 및 침법 인터럽트 : 프로세스 종료

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

  • 동기적 인터럽트(사용자 인터럽트) : 프로세스가 실행중인 명령어로 인해 발생

    • 프로그램 문제 때문에 발생하는 인터럽트
      • 다른 사용자의 메모리 영역에 접근하는 경우 오버플로나 언더플로에 의해 발생
    • 컴퓨터 작업자가 의도적으로 프로세스를 중단하기 위해 발생시킨 인터럽트
      • ctrl + c
        - 입출력 장치 같은 주변장치의 조작에 의한 인터럽트
    • 산술 연산 중 발생하는 인터럽트
      • 어떤 수를 0으로 나눔
  • 비동기적 인터럽트
    - 하드디스크 읽기 오류, 메모리 불량과 같은 하드웨어 오류
    - 사용자가 직접 작동하는 키보드 인터럽트, 마우스 인터럽트

    보통 동기적인 인터럽트를 예외(Exception), 비동기적인 인터럽트를 인터럽트라고 한다.

profile
백엔드 개발자로 살아남기

0개의 댓글