인터럽트

김민영·2023년 1월 27일
0

CS 스터디

목록 보기
16/32

정의

  • CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외 상황으로 인해 현재 진행 중인 프로그램을 중단하고 발생한 일을 처리한 후, 다시 실행 중인 작업으로 돌아오는 것.

종류

외부 인터럽트 (하드웨어 인터럽트, 비동기 인터럽트)

전원 이상 인터럽트

  • 정전 또는 파워에 이상 발생 시 동작

기계 착오 인터럽트

  • CPU 문제 발생시 동작

외부 신호 인터럽트

  • 타이머에 의한 인터럽트 : 여러 프로세스가 하나의 CPU의 공유하므로 CPU는 순차적으로 프로세스를 진행해야 한다. 이 때 시간을 기준으로 프로세스을 나누는 경우, 할당된 시간이 끝난 경우 프로세스 중단.
  • 키보드로 인터럽트 키를 누른 경우
  • 외부장치로부터 인터럽트 요청이 있는 경우

입출력 인터럽트

  • 입출력장치가 데이터 전송을 요구하거나, 전송이 끝나 다음 동작이 수행되어야 할 경우
  • 입출력 데이터에 이상이 있는 경우

동기 인터럽트 (예외)

  • 폴트 : 예외 처리 직후 예외 발생한 명령어부터 실행 재개
  • 트랩 : 예외 처리 직후 예외 발생한 명령어 다음부터 실행 재개 (디버깅)
  • 중단 : 프로그램 강제 중지할 정도로 심각한 오류 발생 시
  • 소프트웨어 인터럽트 : 시스템 호출 시 발생

트랩

  • 잘못된 명령이나 잘못된 데이터를 사용할 때 발생.
  • ex. Division by zero, Overflow/Underflow, 프로그램 Exception

동작 과정

  • 프로그램 실행 중단. 현재 실행 중인 명령어까지 수행
  • 현재 프로그램 상태 보존. Program Counter 값을 스택에 저장. Context 저장
    • Context : 프로세스의 상태에 관한 레지스터의 집합
  • 인터럽트 처리 루틴 실행. 인터럽트 요청 장치 식별
  • 인터럽트 서비스 루틴 실행. ISR. 인터럽트 원인 파악, 우선 순위 높은 인터럽트 발생 시 재귀적으로 위 단계 실행
  • 상태 복구. Program Counter 값 복구
  • 중단된 프로그램 실행 재개.
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글